• wm4's avatar
    ffmpeg: use new decode API · 8f6f2322
    wm4 authored
    This is a bit messy, mainly due to timestamp handling.
    
    decode_video() relied on the fact that it could set dts on a flush/drain
    packet. This is not possible with the old API, and won't be. (I think
    doing this was very questionable with the old API. Flush packets should
    not contain any information; they just cause a FIFO to be emptied.) This
    is replaced with checking the best_effort_timestamp for AV_NOPTS_VALUE,
    and using the suggested DTS in the drain case.
    
    The modified tests (fate-cavs and others) still fails due to dropping
    the last frame. This happens because the timestamp of the last frame
    goes backwards (ffprobe -show_frames shows the same thing). I suspect
    that this "worked" due to the best effort timestamp logic picking the
    DTS over the decreasing PTS. Since this logic is in libavcodec (where
    it probably shouldn't be), this can't be easily fixed. The timestamps
    of the cavs samples are weird anyway, so I chose not to fix it.
    
    Another strange thing is the timestamp handling in the video path of
    process_input_packet (after the decode_video() call). It looks like
    the code to increase next_dts and next_pts should be run every time
    a frame is decoded - but it's needed even if output is skipped.
    8f6f2322
Name
Last commit
Last update
compat Loading commit data...
doc Loading commit data...
libavcodec Loading commit data...
libavdevice Loading commit data...
libavfilter Loading commit data...
libavformat Loading commit data...
libavresample Loading commit data...
libavutil Loading commit data...
libpostproc Loading commit data...
libswresample Loading commit data...
libswscale Loading commit data...
presets Loading commit data...
tests Loading commit data...
tools Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.md Loading commit data...
COPYING.GPLv2 Loading commit data...
COPYING.GPLv3 Loading commit data...
COPYING.LGPLv2.1 Loading commit data...
COPYING.LGPLv3 Loading commit data...
CREDITS Loading commit data...
Changelog Loading commit data...
INSTALL.md Loading commit data...
LICENSE.md Loading commit data...
MAINTAINERS Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
arch.mak Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_common_opts.h Loading commit data...
cmdutils_opencl.c Loading commit data...
common.mak Loading commit data...
configure Loading commit data...
ffmpeg.c Loading commit data...
ffmpeg.h Loading commit data...
ffmpeg_cuvid.c Loading commit data...
ffmpeg_dxva2.c Loading commit data...
ffmpeg_filter.c Loading commit data...
ffmpeg_opt.c Loading commit data...
ffmpeg_qsv.c Loading commit data...
ffmpeg_vaapi.c Loading commit data...
ffmpeg_vdpau.c Loading commit data...
ffmpeg_videotoolbox.c Loading commit data...
ffplay.c Loading commit data...
ffprobe.c Loading commit data...
ffserver.c Loading commit data...
ffserver_config.c Loading commit data...
ffserver_config.h Loading commit data...
library.mak Loading commit data...
version.sh Loading commit data...