@ -227,7 +227,6 @@ typedef struct {
struct AVAES * aesc ;
uint8_t * local_tags ;
int local_tags_count ;
uint64_t last_partition ;
uint64_t footer_partition ;
KLVPacket current_klv_data ;
int current_klv_index ;
@ -2141,30 +2140,27 @@ static int mxf_parse_handle_essence(MXFContext *mxf)
if ( mxf - > parsing_backward ) {
return mxf_seek_to_previous_partition ( mxf ) ;
} else {
uint64_t offset = mxf - > footer_partition ? mxf - > footer_partition
: mxf - > last_partition ;
if ( ! offset ) {
av_dlog ( mxf - > fc , " no last partition \n " ) ;
if ( ! mxf - > footer_partition ) {
av_dlog ( mxf - > fc , " no FooterPartition \n " ) ;
return 0 ;
}
av_dlog ( mxf - > fc , " seeking to last p artition \n " ) ;
av_dlog ( mxf - > fc , " seeking to FooterP artition \n " ) ;
/* remember where we were so we don't end up seeking further back than this */
mxf - > last_forward_tell = avio_tell ( pb ) ;
if ( ! pb - > seekable ) {
av_log ( mxf - > fc , AV_LOG_INFO , " file is not seekable - not parsing last p artition \n " ) ;
av_log ( mxf - > fc , AV_LOG_INFO , " file is not seekable - not parsing FooterP artition \n " ) ;
return - 1 ;
}
/* seek to last p artition and parse backward */
if ( ( ret = avio_seek ( pb , mxf - > run_in + offset , SEEK_SET ) ) < 0 ) {
/* seek to FooterP artition and parse backward */
if ( ( ret = avio_seek ( pb , mxf - > run_in + mxf - > footer_partition , SEEK_SET ) ) < 0 ) {
av_log ( mxf - > fc , AV_LOG_ERROR ,
" failed to seek to last p artition @ 0x% " PRIx64
" failed to seek to FooterP artition @ 0x% " PRIx64
" (% " PRId64 " ) - partial file? \n " ,
mxf - > run_in + offset , ret ) ;
mxf - > run_in + mxf - > footer_partition , ret ) ;
return ret ;
}
@ -2202,7 +2198,7 @@ static void mxf_compute_essence_containers(MXFContext *mxf)
continue ; /* BodySID == 0 -> no essence */
if ( x > = mxf - > partitions_count - 1 )
break ; /* last p artition - can't compute length (and we don't need to) */
break ; /* FooterP artition - can't compute length (and we don't need to) */
/* essence container spans to the next partition */
p - > essence_length = mxf - > partitions [ x + 1 ] . this_partition - p - > essence_offset ;
@ -2283,7 +2279,7 @@ static void mxf_read_random_index_pack(AVFormatContext *s)
goto end ;
avio_skip ( s - > pb , klv . length - 12 ) ;
mxf - > last _partition = avio_rb64 ( s - > pb ) ;
mxf - > footer _partition = avio_rb64 ( s - > pb ) ;
end :
avio_seek ( s - > pb , mxf - > run_in , SEEK_SET ) ;