summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Conrad <lessen42@gmail.com>2007-03-21 11:05:35 +0000
committerDiego Biurrun <diego@biurrun.de>2007-03-21 11:05:35 +0000
commit8076609a40ebf19541b52fe47a882c5ddd0fcb7c (patch)
tree50d64d60e4571a71e58847cb26fd1ffe049989d4
parentdf7625ed62897debf950e842116dc800afd8b5d7 (diff)
downloadffmpeg-8076609a40ebf19541b52fe47a882c5ddd0fcb7c.tar.gz
The NSV demuxer assumes that a video frame's timestamp increases by one on each
frame, but some low-bitrate NSV files omit video frames for some NSV frames, and expect the timestamp to increase by one every NSV frame. This is noticeable in 64vp3.nsv where the video runs several times faster than the audio. Fix this by unconditionally incrementing the video's timestamp with each NSV frame. patch by David Conrad, umovimus gmail com Originally committed as revision 8466 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavformat/nsvdec.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavformat/nsvdec.c b/libavformat/nsvdec.c
index af07ccf097..2753edbd99 100644
--- a/libavformat/nsvdec.c
+++ b/libavformat/nsvdec.c
@@ -602,13 +602,15 @@ null_chunk_retry:
pkt = &nsv->ahead[NSV_ST_VIDEO];
av_get_packet(pb, pkt, vsize);
pkt->stream_index = st[NSV_ST_VIDEO]->index;//NSV_ST_VIDEO;
- pkt->dts = nst->frame_offset++;
+ pkt->dts = nst->frame_offset;
pkt->flags |= nsv->state == NSV_HAS_READ_NSVS ? PKT_FLAG_KEY : 0; /* keyframe only likely on a sync frame */
/*
for (i = 0; i < MIN(8, vsize); i++)
PRINT(("NSV video: [%d] = %02x\n", i, pkt->data[i]));
*/
}
+ ((NSVStream*)st[NSV_ST_VIDEO]->priv_data)->frame_offset++;
+
if (asize/*st[NSV_ST_AUDIO]*/) {
nst = st[NSV_ST_AUDIO]->priv_data;
pkt = &nsv->ahead[NSV_ST_AUDIO];