• Anton Khirnov's avatar
    decode: restructure the core decoding code · 061a0c14
    Anton Khirnov authored
    Currently, the new decoding API is pretty much just a wrapper around the
    old deprecated one. This is problematic, since it interferes with making
    full use of the flexibility added by the new API. The old API should
    also be removed at some future point.
    
    Reorganize the code so that the new send_packet/receive_frame functions
    call the actual decoding directly and change the old deprecated
    avcodec_decode_* functions into wrappers around the new API.
    
    The new internal API for decoders is now changing as well. Before this
    commit, it mirrors the public API, so the decoders need to implement
    send_packet() and receive_frame() callbacks. This turns out to require
    awkward constructs in both the decoders and the generic code. After this
    commit, the decoders only implement the receive_frame() callback and
    call a new internal function, ff_decode_get_packet() to obtain input
    data, in the same manner to how the bitstream filters now work.
    
    avcodec will now always make a reference to the input packet, which means
    that non-refcounted input packets will be copied. Keeping the previous
    behaviour, where this copy could sometimes be avoided, would make the
    code significantly more complex and fragile for only dubious gains,
    since packets are typically small and everyone who cares about
    performance should use refcounted packets anyway.
    061a0c14
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...
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...
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 Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
README Loading commit data...
README.md Loading commit data...
RELEASE Loading commit data...
arch.mak Loading commit data...
avconv.c Loading commit data...
avconv.h Loading commit data...
avconv_dxva2.c Loading commit data...
avconv_filter.c Loading commit data...
avconv_opt.c Loading commit data...
avconv_qsv.c Loading commit data...
avconv_vaapi.c Loading commit data...
avconv_vda.c Loading commit data...
avconv_vdpau.c Loading commit data...
avplay.c Loading commit data...
avprobe.c Loading commit data...
cmdutils.c Loading commit data...
cmdutils.h Loading commit data...
cmdutils_common_opts.h Loading commit data...
common.mak Loading commit data...
configure Loading commit data...
library.mak Loading commit data...
version.sh Loading commit data...