mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-16 03:50:05 +01:00
lavf/utils: Fix DTS for short H264 streams.
Fill DTS if all packets have been read in avformat_find_stream_info, and still has_decode_delay_been_guessed returns false. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
committed by
Michael Niedermayer
parent
e939dde48d
commit
895dd09671
@@ -3188,6 +3188,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
|
|||||||
int64_t max_stream_analyze_duration;
|
int64_t max_stream_analyze_duration;
|
||||||
int64_t max_subtitle_analyze_duration;
|
int64_t max_subtitle_analyze_duration;
|
||||||
int64_t probesize = ic->probesize;
|
int64_t probesize = ic->probesize;
|
||||||
|
int eof_reached = 0;
|
||||||
|
|
||||||
flush_codecs = probesize > 0;
|
flush_codecs = probesize > 0;
|
||||||
|
|
||||||
@@ -3354,6 +3355,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
|
|||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
/* EOF or error*/
|
/* EOF or error*/
|
||||||
|
eof_reached = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3477,6 +3479,17 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
|
|||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (eof_reached && ic->internal->packet_buffer) {
|
||||||
|
int stream_index;
|
||||||
|
for (stream_index = 0; stream_index < ic->nb_streams; stream_index++) {
|
||||||
|
// EOF already reached while reading the stream above.
|
||||||
|
// So continue with reoordering DTS with whatever delay we have.
|
||||||
|
if (!has_decode_delay_been_guessed(st)) {
|
||||||
|
update_dts_from_pts(ic, stream_index, ic->internal->packet_buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (flush_codecs) {
|
if (flush_codecs) {
|
||||||
AVPacket empty_pkt = { 0 };
|
AVPacket empty_pkt = { 0 };
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user