# HG changeset patch # User diego # Date 1174475135 0 # Node ID 70b741fa63eb5f24e7fee2a5a6ae9a7728fa1b24 # Parent c2d0bdc9e6f15af7b1d907d1cdb8dbd91d576660 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 diff -r c2d0bdc9e6f1 -r 70b741fa63eb nsvdec.c --- a/nsvdec.c Wed Mar 21 10:48:10 2007 +0000 +++ b/nsvdec.c Wed Mar 21 11:05:35 2007 +0000 @@ -602,13 +602,15 @@ 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];