mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-27 05:00:37 +00:00
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
This commit is contained in:
parent
df7625ed62
commit
8076609a40
@ -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];
|
||||
|
Loading…
Reference in New Issue
Block a user