[Ffmpeg-cvslog] r8466 - trunk/libavformat/nsvdec.c

diego subversion
Wed Mar 21 12:05:35 CET 2007


Author: diego
Date: Wed Mar 21 12:05:35 2007
New Revision: 8466

Modified:
   trunk/libavformat/nsvdec.c

Log:
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


Modified: trunk/libavformat/nsvdec.c
==============================================================================
--- trunk/libavformat/nsvdec.c	(original)
+++ trunk/libavformat/nsvdec.c	Wed Mar 21 12:05:35 2007
@@ -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];




More information about the ffmpeg-cvslog mailing list