Commit 0101d290 authored by erankor's avatar erankor Committed by Michael Niedermayer

mov: fix decryption with edit list

Retain the ranges of frame indexes when applying edit list in
mov_fix_index. The index ranges are then used to keep track of the frame
index of the current sample. In case of a discontinuity in frame indexes
due to edit, update the auxiliary info position accordingly.
Reviewed-by: 's avatarSasi Inguva <isasi@google.com>
Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
parent 0983e139
......@@ -121,6 +121,11 @@ typedef struct MOVFragmentIndex {
MOVFragmentIndexItem *items;
} MOVFragmentIndex;
typedef struct MOVIndexRange {
int64_t start;
int64_t end;
} MOVIndexRange;
typedef struct MOVStreamContext {
AVIOContext *pb;
int pb_is_copied;
......@@ -152,6 +157,9 @@ typedef struct MOVStreamContext {
int time_scale;
int64_t time_offset; ///< time offset of the edit list entries
int current_sample;
int64_t current_index;
MOVIndexRange* index_ranges;
MOVIndexRange* current_index_range;
unsigned int bytes_per_frame;
unsigned int samples_per_frame;
int dv_audio_container;
......@@ -198,6 +206,7 @@ typedef struct MOVStreamContext {
uint8_t auxiliary_info_default_size;
uint8_t* auxiliary_info_sizes;
size_t auxiliary_info_sizes_count;
int64_t auxiliary_info_index;
struct AVAESCTR* aes_ctr;
} cenc;
} MOVStreamContext;
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment