1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-03 05:10:03 +02:00
FFmpeg/fftools
Anton Khirnov 5d407cb2d7 fftools/ffmpeg: change video decoding timestamp generation
When no timestamps are available from the container, the video decoding
code will currently use fake dts values - generated in
process_input_packet() based on a combination of information from the
decoder and the parser (obtained via the demuxer) - to generate
timestamps during decoder flushing. This is fragile, hard to follow, and
unnecessarily convoluted, since more reliable information can be
obtained directly from post-decoding values.

The new code keeps track of the last decoded frame pts and estimates its
duration based on a number of heuristics. Timestamps generated when both
pts and pkt_dts are missing are then simple pts+duration of the last frame.
The heuristics are somewhat complicated by the fact that lavf insists on
making up packet timestamps based on its highly incomplete information.
That should be removed in the future, allowing to further simplify this
code.

The results of the following tests change:
* h264-3386 now requires -fps_mode passthrough to avoid dropping frames
  at the end; this is a pathology of the interaction of the new and old
  code, and the fact that the sample switches from field to frame coding
  in the last packet, and will be fixed in following commits
* hevc-conformance-DELTAQP_A_BRCM_4 stops inventing an arbitrary
  timestamp gap at the end
* hevc-small422chroma - the single frame output by this test now has a
  timestamp of 0, rather than an arbitrary 7
2023-04-13 15:34:07 +02:00
..
cmdutils.c fftools: use av_dict_iterate 2022-12-01 11:21:14 +01:00
cmdutils.h fftools/cmdutils: Add function to report error before exit 2022-09-01 14:21:56 +02:00
ffmpeg_demux.c fftools/ffmpeg: change video decoding timestamp generation 2023-04-13 15:34:07 +02:00
ffmpeg_enc.c fftools/ffmpeg: inline check_output_constraints() into its only caller 2023-04-13 15:11:56 +02:00
ffmpeg_filter.c fftools/ffmpeg_filter: stop setting encoder channel layout unnecessarily 2023-04-13 15:11:56 +02:00
ffmpeg_hw.c fftools/ffmpeg: supply hw_device_ctx to filters before initializing them 2023-03-24 10:23:52 +01:00
ffmpeg_mux_init.c fftools/ffmpeg: track a list of non-lavfi outputs in InputStream 2023-04-13 15:11:56 +02:00
ffmpeg_mux.c fftools/ffmpeg_mux: make data_size_mux private to ffmpeg_mux 2023-04-13 15:11:56 +02:00
ffmpeg_mux.h fftools/ffmpeg_mux: make data_size_mux private to ffmpeg_mux 2023-04-13 15:11:56 +02:00
ffmpeg_opt.c fftools/ffmpeg: disable and deprecate -qphist 2023-04-13 15:11:56 +02:00
ffmpeg.c fftools/ffmpeg: change video decoding timestamp generation 2023-04-13 15:34:07 +02:00
ffmpeg.h fftools/ffmpeg: change video decoding timestamp generation 2023-04-13 15:34:07 +02:00
ffplay.c fftools/ffplay: stop using AVFrame.pkt_pos 2023-03-20 10:42:09 +01:00
ffprobe.c fftools/ffprobe: print crop_* frame fields 2023-03-26 16:39:59 -03:00
fftools.manifest fftools: add DPI awareness manifest 2022-08-13 14:42:52 +02:00
fftoolsres.rc fftools: add DPI awareness manifest 2022-08-13 14:42:52 +02:00
fopen_utf8.h fftools/fopen_utf8: support long paths on Windows for fftools 2022-06-19 01:38:23 +03:00
Makefile fftools/ffmpeg: move initializing encoders to a new file 2023-04-09 15:47:45 +02:00
objpool.c fftools/objpool: Don't use return with expression when returning void 2022-07-23 18:58:35 +02:00
objpool.h fftools: add an object pool 2022-07-23 11:53:19 +02:00
opt_common.c fftools/opt_common: check the return value of av_hwdevice_get_type_name before printing it 2022-09-14 09:54:19 -03:00
opt_common.h fftools/cmdutils: split common option handlers into their own file 2022-03-22 18:49:43 +01:00
sync_queue.c fftools/sync_queue: allow requesting a specific number of audio samples 2023-04-09 15:47:45 +02:00
sync_queue.h fftools/sync_queue: allow requesting a specific number of audio samples 2023-04-09 15:47:45 +02:00
thread_queue.c fftools: add a multistream thread-safe queue 2022-07-23 11:53:19 +02:00
thread_queue.h fftools: add a multistream thread-safe queue 2022-07-23 11:53:19 +02:00