Commit 947754b8 authored by conrad's avatar conrad

oggdec: Move PTS/DTS calculation to a function

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@22461 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 4ca34125
......@@ -493,6 +493,36 @@ ogg_read_header (AVFormatContext * s, AVFormatParameters * ap)
return 0;
}
static int64_t ogg_calc_pts(AVFormatContext *s, int idx, int64_t *dts)
{
struct ogg *ogg = s->priv_data;
struct ogg_stream *os = ogg->streams + idx;
int64_t pts = AV_NOPTS_VALUE;
if (dts)
*dts = AV_NOPTS_VALUE;
if (os->lastpts != AV_NOPTS_VALUE) {
pts = os->lastpts;
os->lastpts = AV_NOPTS_VALUE;
}
if (os->lastdts != AV_NOPTS_VALUE) {
if (dts)
*dts = os->lastdts;
os->lastdts = AV_NOPTS_VALUE;
}
if (os->page_end) {
if (os->granule != -1LL) {
if (os->codec && os->codec->granule_is_start)
pts = ogg_gptopts(s, idx, os->granule, dts);
else
os->lastpts = ogg_gptopts(s, idx, os->granule, &os->lastdts);
os->granule = -1LL;
} else
av_log(s, AV_LOG_WARNING, "Packet is missing granule\n");
}
return pts;
}
static int
ogg_read_packet (AVFormatContext * s, AVPacket * pkt)
......@@ -518,25 +548,7 @@ ogg_read_packet (AVFormatContext * s, AVPacket * pkt)
pkt->stream_index = idx;
memcpy (pkt->data, os->buf + pstart, psize);
if (os->lastpts != AV_NOPTS_VALUE) {
pkt->pts = os->lastpts;
os->lastpts = AV_NOPTS_VALUE;
}
if (os->lastdts != AV_NOPTS_VALUE) {
pkt->dts = os->lastdts;
os->lastdts = AV_NOPTS_VALUE;
}
if (os->page_end) {
if (os->granule != -1LL) {
if (os->codec && os->codec->granule_is_start)
pkt->pts = ogg_gptopts(s, idx, os->granule, &pkt->dts);
else
os->lastpts = ogg_gptopts(s, idx, os->granule, &os->lastdts);
os->granule = -1LL;
} else
av_log(s, AV_LOG_WARNING, "Packet is missing granule\n");
}
pkt->pts = ogg_calc_pts(s, idx, &pkt->dts);
pkt->flags = os->pflags;
pkt->duration = os->pduration;
pkt->pos = fpos;
......
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