@ -7580,14 +7580,13 @@ static int mov_read_header(AVFormatContext *s)
avio_seek ( pb , 0 , SEEK_SET ) ;
avio_seek ( pb , 0 , SEEK_SET ) ;
if ( ( err = mov_read_default ( mov , pb , atom ) ) < 0 ) {
if ( ( err = mov_read_default ( mov , pb , atom ) ) < 0 ) {
av_log ( s , AV_LOG_ERROR , " error reading header \n " ) ;
av_log ( s , AV_LOG_ERROR , " error reading header \n " ) ;
mov_read_close ( s ) ;
goto fail ;
return err ;
}
}
} while ( ( pb - > seekable & AVIO_SEEKABLE_NORMAL ) & & ! mov - > found_moov & & ! mov - > moov_retry + + ) ;
} while ( ( pb - > seekable & AVIO_SEEKABLE_NORMAL ) & & ! mov - > found_moov & & ! mov - > moov_retry + + ) ;
if ( ! mov - > found_moov ) {
if ( ! mov - > found_moov ) {
av_log ( s , AV_LOG_ERROR , " moov atom not found \n " ) ;
av_log ( s , AV_LOG_ERROR , " moov atom not found \n " ) ;
mov_read_close ( s ) ;
err = AVERROR_INVALIDDATA ;
return AVERROR_INVALIDDATA ;
goto fail ;
}
}
av_log ( mov - > fc , AV_LOG_TRACE , " on_parse_exit_offset=% " PRId64 " \n " , avio_tell ( pb ) ) ;
av_log ( mov - > fc , AV_LOG_TRACE , " on_parse_exit_offset=% " PRId64 " \n " , avio_tell ( pb ) ) ;
@ -7640,7 +7639,7 @@ static int mov_read_header(AVFormatContext *s)
}
}
if ( st - > codecpar - > codec_id = = AV_CODEC_ID_DVD_SUBTITLE ) {
if ( st - > codecpar - > codec_id = = AV_CODEC_ID_DVD_SUBTITLE ) {
if ( ( err = mov_rewrite_dvd_sub_extradata ( st ) ) < 0 )
if ( ( err = mov_rewrite_dvd_sub_extradata ( st ) ) < 0 )
return err ;
goto fail ;
}
}
}
}
if ( mov - > handbrake_version & &
if ( mov - > handbrake_version & &
@ -7660,8 +7659,8 @@ static int mov_read_header(AVFormatContext *s)
if ( sc - > data_size > INT64_MAX / sc - > time_scale / 8 ) {
if ( sc - > data_size > INT64_MAX / sc - > time_scale / 8 ) {
av_log ( s , AV_LOG_ERROR , " Overflow during bit rate calculation % " PRId64 " * 8 * %d \n " ,
av_log ( s , AV_LOG_ERROR , " Overflow during bit rate calculation % " PRId64 " * 8 * %d \n " ,
sc - > data_size , sc - > time_scale ) ;
sc - > data_size , sc - > time_scale ) ;
mov_read_close ( s ) ;
err = AVERROR_INVALIDDATA ;
return AVERROR_INVALIDDATA ;
goto fail ;
}
}
st - > codecpar - > bit_rate = sc - > data_size * 8 * sc - > time_scale / st - > duration ;
st - > codecpar - > bit_rate = sc - > data_size * 8 * sc - > time_scale / st - > duration ;
}
}
@ -7676,8 +7675,8 @@ static int mov_read_header(AVFormatContext *s)
if ( sc - > data_size > INT64_MAX / sc - > time_scale / 8 ) {
if ( sc - > data_size > INT64_MAX / sc - > time_scale / 8 ) {
av_log ( s , AV_LOG_ERROR , " Overflow during bit rate calculation % " PRId64 " * 8 * %d \n " ,
av_log ( s , AV_LOG_ERROR , " Overflow during bit rate calculation % " PRId64 " * 8 * %d \n " ,
sc - > data_size , sc - > time_scale ) ;
sc - > data_size , sc - > time_scale ) ;
mov_read_close ( s ) ;
err = AVERROR_INVALIDDATA ;
return AVERROR_INVALIDDATA ;
goto fail ;
}
}
st - > codecpar - > bit_rate = sc - > data_size * 8 * sc - > time_scale /
st - > codecpar - > bit_rate = sc - > data_size * 8 * sc - > time_scale /
sc - > duration_for_fps ;
sc - > duration_for_fps ;
@ -7701,8 +7700,7 @@ static int mov_read_header(AVFormatContext *s)
case AVMEDIA_TYPE_AUDIO :
case AVMEDIA_TYPE_AUDIO :
err = ff_replaygain_export ( st , s - > metadata ) ;
err = ff_replaygain_export ( st , s - > metadata ) ;
if ( err < 0 ) {
if ( err < 0 ) {
mov_read_close ( s ) ;
goto fail ;
return err ;
}
}
break ;
break ;
case AVMEDIA_TYPE_VIDEO :
case AVMEDIA_TYPE_VIDEO :
@ -7710,7 +7708,7 @@ static int mov_read_header(AVFormatContext *s)
err = av_stream_add_side_data ( st , AV_PKT_DATA_DISPLAYMATRIX , ( uint8_t * ) sc - > display_matrix ,
err = av_stream_add_side_data ( st , AV_PKT_DATA_DISPLAYMATRIX , ( uint8_t * ) sc - > display_matrix ,
sizeof ( int32_t ) * 9 ) ;
sizeof ( int32_t ) * 9 ) ;
if ( err < 0 )
if ( err < 0 )
return err ;
goto fail ;
sc - > display_matrix = NULL ;
sc - > display_matrix = NULL ;
}
}
@ -7719,7 +7717,7 @@ static int mov_read_header(AVFormatContext *s)
( uint8_t * ) sc - > stereo3d ,
( uint8_t * ) sc - > stereo3d ,
sizeof ( * sc - > stereo3d ) ) ;
sizeof ( * sc - > stereo3d ) ) ;
if ( err < 0 )
if ( err < 0 )
return err ;
goto fail ;
sc - > stereo3d = NULL ;
sc - > stereo3d = NULL ;
}
}
@ -7728,7 +7726,7 @@ static int mov_read_header(AVFormatContext *s)
( uint8_t * ) sc - > spherical ,
( uint8_t * ) sc - > spherical ,
sc - > spherical_size ) ;
sc - > spherical_size ) ;
if ( err < 0 )
if ( err < 0 )
return err ;
goto fail ;
sc - > spherical = NULL ;
sc - > spherical = NULL ;
}
}
@ -7737,7 +7735,7 @@ static int mov_read_header(AVFormatContext *s)
( uint8_t * ) sc - > mastering ,
( uint8_t * ) sc - > mastering ,
sizeof ( * sc - > mastering ) ) ;
sizeof ( * sc - > mastering ) ) ;
if ( err < 0 )
if ( err < 0 )
return err ;
goto fail ;
sc - > mastering = NULL ;
sc - > mastering = NULL ;
}
}
@ -7746,7 +7744,7 @@ static int mov_read_header(AVFormatContext *s)
( uint8_t * ) sc - > coll ,
( uint8_t * ) sc - > coll ,
sc - > coll_size ) ;
sc - > coll_size ) ;
if ( err < 0 )
if ( err < 0 )
return err ;
goto fail ;
sc - > coll = NULL ;
sc - > coll = NULL ;
}
}
@ -7760,6 +7758,9 @@ static int mov_read_header(AVFormatContext *s)
mov - > frag_index . item [ i ] . headers_read = 1 ;
mov - > frag_index . item [ i ] . headers_read = 1 ;
return 0 ;
return 0 ;
fail :
mov_read_close ( s ) ;
return err ;
}
}
static AVIndexEntry * mov_find_next_sample ( AVFormatContext * s , AVStream * * st )
static AVIndexEntry * mov_find_next_sample ( AVFormatContext * s , AVStream * * st )