@ -428,7 +428,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
}
}
if ( ctx - > delete_filler ) {
if ( ctx - > delete_filler ) {
for ( i = 0 ; i < au - > nb_units ; i + + ) {
for ( i = au - > nb_units - 1 ; i > = 0 ; i - - ) {
if ( au - > units [ i ] . type = = H264_NAL_FILLER_DATA ) {
if ( au - > units [ i ] . type = = H264_NAL_FILLER_DATA ) {
// Filler NAL units.
// Filler NAL units.
err = ff_cbs_delete_unit ( ctx - > cbc , au , i ) ;
err = ff_cbs_delete_unit ( ctx - > cbc , au , i ) ;
@ -437,7 +437,6 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
" filler NAL. \n " ) ;
" filler NAL. \n " ) ;
goto fail ;
goto fail ;
}
}
- - i ;
continue ;
continue ;
}
}
@ -445,7 +444,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
// Filler SEI messages.
// Filler SEI messages.
H264RawSEI * sei = au - > units [ i ] . content ;
H264RawSEI * sei = au - > units [ i ] . content ;
for ( j = 0 ; j < sei - > payload_count ; j + + ) {
for ( j = sei - > payload_count - 1 ; j > = 0 ; j - - ) {
if ( sei - > payload [ j ] . payload_type = =
if ( sei - > payload [ j ] . payload_type = =
H264_SEI_TYPE_FILLER_PAYLOAD ) {
H264_SEI_TYPE_FILLER_PAYLOAD ) {
err = ff_cbs_h264_delete_sei_message ( ctx - > cbc , au ,
err = ff_cbs_h264_delete_sei_message ( ctx - > cbc , au ,
@ -455,10 +454,6 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
" filler SEI message. \n " ) ;
" filler SEI message. \n " ) ;
goto fail ;
goto fail ;
}
}
// Renumbering might have happened, start again at
// the same NAL unit position.
- - i ;
break ;
}
}
}
}
}
}
@ -466,13 +461,13 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
}
}
if ( ctx - > display_orientation ! = PASS ) {
if ( ctx - > display_orientation ! = PASS ) {
for ( i = 0 ; i < au - > nb_units ; i + + ) {
for ( i = au - > nb_units - 1 ; i > = 0 ; i - - ) {
H264RawSEI * sei ;
H264RawSEI * sei ;
if ( au - > units [ i ] . type ! = H264_NAL_SEI )
if ( au - > units [ i ] . type ! = H264_NAL_SEI )
continue ;
continue ;
sei = au - > units [ i ] . content ;
sei = au - > units [ i ] . content ;
for ( j = 0 ; j < sei - > payload_count ; j + + ) {
for ( j = sei - > payload_count - 1 ; j > = 0 ; j - - ) {
H264RawSEIDisplayOrientation * disp ;
H264RawSEIDisplayOrientation * disp ;
int32_t * matrix ;
int32_t * matrix ;
@ -490,8 +485,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
" display orientation SEI message. \n " ) ;
" display orientation SEI message. \n " ) ;
goto fail ;
goto fail ;
}
}
- - i ;
continue ;
break ;
}
}
matrix = av_mallocz ( 9 * sizeof ( int32_t ) ) ;
matrix = av_mallocz ( 9 * sizeof ( int32_t ) ) ;
@ -506,7 +500,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
av_display_matrix_flip ( matrix , disp - > hor_flip , disp - > ver_flip ) ;
av_display_matrix_flip ( matrix , disp - > hor_flip , disp - > ver_flip ) ;
// If there are multiple display orientation messages in an
// If there are multiple display orientation messages in an
// access unit then ignore all but the la st one.
// access unit then ignore all but the fir st one.
av_freep ( & displaymatrix_side_data ) ;
av_freep ( & displaymatrix_side_data ) ;
displaymatrix_side_data = ( uint8_t * ) matrix ;
displaymatrix_side_data = ( uint8_t * ) matrix ;