Merge commit 'eb89e1b98d3676aac1287d97c633b527c1ff4ea4' into release/1.1
* commit 'eb89e1b98d3676aac1287d97c633b527c1ff4ea4': oggdec: add support for Opus in Ogg demuxing Conflicts: libavformat/oggparseopus.c libavformat/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -48,6 +48,7 @@ static int opus_header(AVFormatContext *avf, int idx)
|
||||
if (!priv)
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
if (os->flags & OGG_FLAG_BOS) {
|
||||
if (os->psize < OPUS_HEAD_SIZE || (AV_RL8(packet + 8) & 0xF0) != 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
@@ -62,6 +63,7 @@ static int opus_header(AVFormatContext *avf, int idx)
|
||||
extradata = av_malloc(os->psize + FF_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (!extradata)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
memcpy(extradata, packet, os->psize);
|
||||
st->codec->extradata = extradata;
|
||||
st->codec->extradata_size = os->psize;
|
||||
@@ -79,6 +81,7 @@ static int opus_header(AVFormatContext *avf, int idx)
|
||||
priv->need_comments--;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -93,6 +96,7 @@ static int opus_packet(AVFormatContext *avf, int idx)
|
||||
|
||||
if (!os->psize)
|
||||
return AVERROR_INVALIDDATA;
|
||||
|
||||
toc = *packet;
|
||||
toc_config = toc >> 3;
|
||||
toc_count = toc & 3;
|
||||
@@ -106,12 +110,14 @@ static int opus_packet(AVFormatContext *avf, int idx)
|
||||
} else if (toc_count) {
|
||||
nb_frames = 2;
|
||||
}
|
||||
|
||||
os->pduration = frame_size * nb_frames;
|
||||
if (os->lastpts != AV_NOPTS_VALUE) {
|
||||
if (st->start_time == AV_NOPTS_VALUE)
|
||||
st->start_time = os->lastpts;
|
||||
priv->cur_dts = os->lastdts = os->lastpts -= priv->pre_skip;
|
||||
}
|
||||
|
||||
priv->cur_dts += os->pduration;
|
||||
if ((os->flags & OGG_FLAG_EOS)) {
|
||||
int64_t skip = priv->cur_dts - os->granule + priv->pre_skip;
|
||||
@@ -123,6 +129,7 @@ static int opus_packet(AVFormatContext *avf, int idx)
|
||||
os->pduration);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user