mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-11 01:49:40 +00:00
avformat/mxfdec: take into account run-in in find_partition_by_offset
Also rename the function to find_partition_by_absolute_offset to make it clear offset is absolute. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
5b6960f955
commit
fc15e8306f
@ -429,19 +429,19 @@ static int mxf_get_stream_index(AVFormatContext *s, KLVPacket *klv, int body_sid
|
||||
return s->nb_streams == 1 && s->streams[0]->priv_data ? 0 : -1;
|
||||
}
|
||||
|
||||
static int find_body_sid_by_offset(MXFContext *mxf, int64_t offset)
|
||||
static int find_body_sid_by_absolute_offset(MXFContext *mxf, int64_t offset)
|
||||
{
|
||||
// we look for partition where the offset is placed
|
||||
int a, b, m;
|
||||
int64_t this_partition;
|
||||
int64_t pack_ofs;
|
||||
|
||||
a = -1;
|
||||
b = mxf->partitions_count;
|
||||
|
||||
while (b - a > 1) {
|
||||
m = (a + b) >> 1;
|
||||
this_partition = mxf->partitions[m].this_partition;
|
||||
if (this_partition <= offset)
|
||||
m = (a + b) >> 1;
|
||||
pack_ofs = mxf->partitions[m].pack_ofs;
|
||||
if (pack_ofs <= offset)
|
||||
a = m;
|
||||
else
|
||||
b = m;
|
||||
@ -590,7 +590,7 @@ static int mxf_decrypt_triplet(AVFormatContext *s, AVPacket *pkt, KLVPacket *klv
|
||||
if (!IS_KLV_KEY(klv, mxf_essence_element_key))
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
body_sid = find_body_sid_by_offset(mxf, klv->offset);
|
||||
body_sid = find_body_sid_by_absolute_offset(mxf, klv->offset);
|
||||
index = mxf_get_stream_index(s, klv, body_sid);
|
||||
if (index < 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
@ -3471,7 +3471,7 @@ static int mxf_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
if (IS_KLV_KEY(klv.key, mxf_essence_element_key) ||
|
||||
IS_KLV_KEY(klv.key, mxf_canopus_essence_element_key) ||
|
||||
IS_KLV_KEY(klv.key, mxf_avid_essence_element_key)) {
|
||||
int body_sid = find_body_sid_by_offset(mxf, klv.offset);
|
||||
int body_sid = find_body_sid_by_absolute_offset(mxf, klv.offset);
|
||||
int index = mxf_get_stream_index(s, &klv, body_sid);
|
||||
int64_t next_ofs;
|
||||
AVStream *st;
|
||||
|
Loading…
Reference in New Issue
Block a user