diff options
author | Tomas Härdin <tomas.hardin@codemill.se> | 2011-12-08 11:39:59 +0100 |
---|---|---|
committer | Tomas Härdin <tomas.hardin@codemill.se> | 2011-12-08 18:19:48 +0100 |
commit | 7560c264958877e790935aba77b50163157162ab (patch) | |
tree | d5e694acd621184658e5f8b44b9a5cf44f656eb3 /libavformat/mxfdec.c | |
parent | 623128d7824d51965ffd37453a600ec51c0e653c (diff) | |
download | ffmpeg-7560c264958877e790935aba77b50163157162ab.tar.gz |
mxfdec: Parse TemporalOffsets
Diffstat (limited to 'libavformat/mxfdec.c')
-rw-r--r-- | libavformat/mxfdec.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 2057f3b33b..4343c4e627 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -150,6 +150,7 @@ typedef struct { int *slice; int *element_delta; int nb_delta_entries; + int8_t *temporal_offset_entries; int *flag_entries; uint64_t *stream_offset_entries; uint32_t **slice_offset_entries; @@ -701,7 +702,8 @@ static int mxf_read_index_entry_array(AVIOContext *pb, MXFIndexTableSegment *seg segment->nb_index_entries = avio_rb32(pb); length = avio_rb32(pb); - if (!(segment->flag_entries = av_calloc(segment->nb_index_entries, sizeof(*segment->flag_entries))) || + if (!(segment->temporal_offset_entries=av_calloc(segment->nb_index_entries, sizeof(*segment->temporal_offset_entries))) || + !(segment->flag_entries = av_calloc(segment->nb_index_entries, sizeof(*segment->flag_entries))) || !(segment->stream_offset_entries = av_calloc(segment->nb_index_entries, sizeof(*segment->stream_offset_entries)))) return AVERROR(ENOMEM); @@ -710,7 +712,8 @@ static int mxf_read_index_entry_array(AVIOContext *pb, MXFIndexTableSegment *seg return AVERROR(ENOMEM); for (i = 0; i < segment->nb_index_entries; i++) { - avio_rb16(pb); /* TemporalOffset and KeyFrameOffset */ + segment->temporal_offset_entries[i] = avio_r8(pb); + avio_r8(pb); /* KeyFrameOffset */ segment->flag_entries[i] = avio_r8(pb); segment->stream_offset_entries[i] = avio_rb64(pb); if (segment->slice_count) { @@ -1582,6 +1585,7 @@ static int mxf_read_close(AVFormatContext *s) av_freep(&seg->slice_offset_entries[j]); av_freep(&seg->slice); av_freep(&seg->element_delta); + av_freep(&seg->temporal_offset_entries); av_freep(&seg->flag_entries); av_freep(&seg->stream_offset_entries); av_freep(&seg->slice_offset_entries); |