summaryrefslogtreecommitdiff
path: root/libavformat/matroskadec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-09-20 21:46:35 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-09-20 21:46:35 +0200
commit5864ce13d188260998bbf49a2a774fa9bd445c10 (patch)
tree149cc5b73142b5a876068d33ec1c127c65e6f37f /libavformat/matroskadec.c
parent8c51ea54897c2d8671b38efecc1422ad4ad344f9 (diff)
parent50d1f4437be88a4b7e412e90d71153cae68017cc (diff)
Merge remote-tracking branch 'qatar/master'
* qatar/master: mp3dec: read Xing frame TOC index mp3dec: use named constants for Xing header flags libx264: add support for nal-hrd, required for Blu-ray streams. mov: support random access point grouping matroskadec: properly support BlockDuration Conflicts: libavcodec/libx264.c libavformat/isom.h libavformat/matroskadec.c libavformat/mov.c libavformat/mp3dec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/matroskadec.c')
-rw-r--r--libavformat/matroskadec.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index eb34ef4ee9..f4d7071352 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -2146,7 +2146,7 @@ static int matroska_parse_frame(MatroskaDemuxContext *matroska,
static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data,
int size, int64_t pos, uint64_t cluster_time,
- uint64_t duration, int is_keyframe,
+ uint64_t block_duration, int is_keyframe,
int64_t cluster_pos)
{
uint64_t timecode = AV_NOPTS_VALUE;
@@ -2175,7 +2175,7 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data,
st = track->stream;
if (st->discard >= AVDISCARD_ALL)
return res;
- av_assert1(duration != AV_NOPTS_VALUE);
+ av_assert1(block_duration != AV_NOPTS_VALUE);
block_time = AV_RB16(data);
data += 2;
@@ -2211,14 +2211,15 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data,
if (res)
goto end;
- if (!duration)
- duration = track->default_duration * laces / matroska->time_scale;
+ if (!block_duration)
+ block_duration = track->default_duration * laces / matroska->time_scale;
if (cluster_time != (uint64_t)-1 && (block_time >= 0 || cluster_time >= -block_time))
- track->end_timecode = FFMAX(track->end_timecode, timecode+duration);
+ track->end_timecode =
+ FFMAX(track->end_timecode, timecode + block_duration);
for (n = 0; n < laces; n++) {
- int64_t lace_duration = duration*(n+1) / laces - duration*n / laces;
+ int64_t lace_duration = block_duration*(n+1) / laces - block_duration*n / laces;
if (lace_size[n] > size) {
av_log(matroska->ctx, AV_LOG_ERROR, "Invalid packet size\n");
@@ -2232,7 +2233,7 @@ static int matroska_parse_block(MatroskaDemuxContext *matroska, uint8_t *data,
st->codec->block_align && track->audio.sub_packet_size) {
res = matroska_parse_rm_audio(matroska, track, st, data, size,
- timecode, duration, pos);
+ timecode, lace_duration, pos);
if (res)
goto end;