|
|
|
NAME = avcodec
|
|
|
|
DESC = FFmpeg codec library
|
|
|
|
|
|
|
|
HEADERS = ac3_parser.h \
|
|
|
|
adts_parser.h \
|
|
|
|
avcodec.h \
|
|
|
|
avdct.h \
|
|
|
|
avfft.h \
|
|
|
|
bsf.h \
|
|
|
|
codec.h \
|
|
|
|
codec_desc.h \
|
|
|
|
codec_id.h \
|
|
|
|
codec_par.h \
|
|
|
|
d3d11va.h \
|
|
|
|
defs.h \
|
|
|
|
dirac.h \
|
|
|
|
dv_profile.h \
|
|
|
|
dxva2.h \
|
|
|
|
jni.h \
|
|
|
|
mediacodec.h \
|
|
|
|
packet.h \
|
|
|
|
qsv.h \
|
|
|
|
vdpau.h \
|
|
|
|
version.h \
|
|
|
|
version_major.h \
|
|
|
|
videotoolbox.h \
|
|
|
|
vorbis_parser.h \
|
|
|
|
|
|
|
|
OBJS = ac3_parser.o \
|
|
|
|
adts_parser.o \
|
|
|
|
allcodecs.o \
|
|
|
|
avcodec.o \
|
|
|
|
avdct.o \
|
|
|
|
avfft.o \
|
|
|
|
packet.o \
|
|
|
|
bitstream.o \
|
|
|
|
bitstream_filters.o \
|
|
|
|
bsf.o \
|
|
|
|
codec_desc.o \
|
|
|
|
codec_par.o \
|
|
|
|
d3d11va.o \
|
|
|
|
decode.o \
|
|
|
|
dirac.o \
|
|
|
|
dv_profile.o \
|
|
|
|
encode.o \
|
|
|
|
get_buffer.o \
|
|
|
|
imgconvert.o \
|
|
|
|
jni.o \
|
|
|
|
lcevcdec.o \
|
|
|
|
mathtables.o \
|
|
|
|
mediacodec.o \
|
|
|
|
mpeg12framerate.o \
|
|
|
|
options.o \
|
|
|
|
parser.o \
|
|
|
|
parsers.o \
|
|
|
|
profiles.o \
|
|
|
|
qsv_api.o \
|
|
|
|
raw.o \
|
avcodec/refstruct: Add simple API for refcounted objects
For now, this API is supposed to replace all the internal uses
of reference counted objects in libavcodec; "internal" here
means that the object is created in libavcodec and is never
put directly in the hands of anyone outside of it.
It is intended to be made public eventually, but for now
I enjoy the ability to modify it freely.
Several shortcomings of the AVBuffer API motivated this API:
a) The unnecessary allocations (and ensuing error checks)
when using the API. Besides the need for runtime checks it
imposes upon the developer the burden of thinking through
what happens in case an error happens. Furthermore, these
error paths are typically not covered by FATE.
b) The AVBuffer API is designed with buffers and not with
objects in mind: The type for the actual buffers used
is uint8_t*; it pretends to be able to make buffers
writable, but this is wrong in case the buffer is not a POD.
Another instance of this thinking is the lack of a reset
callback in the AVBufferPool API.
c) The AVBuffer API incurs unnecessary indirections by
going through the AVBufferRef.data pointer. In case the user
tries to avoid this indirection and stores a pointer to
AVBuffer.data separately (which also allows to use the correct
type), the user has to keep these two pointers in sync
in case they can change (and in any case has two pointers
occupying space in the containing context). See the following
commit using this API for H.264 parameter sets for an example
of the removal of such syncing code as well as the casts
involved in the parts where only the AVBufferRef* pointer
was stored.
d) Given that the AVBuffer API allows custom allocators,
creating refcounted objects with dedicated free functions
often involves a lot of boilerplate like this:
obj = av_mallocz(sizeof(*obj));
ref = av_buffer_create((uint8_t*)obj, sizeof(*obj), free_func, opaque, 0);
if (!ref) {
av_free(obj);
return AVERROR(ENOMEM);
}
(There is also a corresponding av_free() at the end of free_func().)
This is now just
obj = ff_refstruct_alloc_ext(sizeof(*obj), 0, opaque, free_func);
if (!obj)
return AVERROR(ENOMEM);
See the subsequent patch for the framepool (i.e. get_buffer.c)
for an example.
This API does things differently; it is designed to be lightweight*
as well as geared to the common case where the allocator of the
underlying object does not matter as long as it is big enough and
suitably aligned. This allows to allocate the user data together
with the API's bookkeeping data which avoids an allocation as well
as the need for separate pointers to the user data and the API's
bookkeeping data. This entails that the actual allocation of the
object is performed by RefStruct, not the user. This is responsible
for avoiding the boilerplate code mentioned in d).
As a downside, custom allocators are not supported, but it will
become apparent in subsequent commits that there are enough
usecases to make it worthwhile.
Another advantage of this API is that one only needs to include
the relevant header if one uses the API and not when one includes
the header or some other component that uses it. This is because there
is no RefStruct type analog of AVBufferRef. This brings with it
one further downside: It is not apparent from the pointer itself
whether the underlying object is managed by the RefStruct API
or whether this pointer is a reference to it (or merely a pointer
to it).
Finally, this API supports const-qualified opaque pointees;
this will allow to avoid casting const away by the CBS code.
*: Basically the only exception to the you-only-pay-for-what-you-use
rule is that it always uses atomics for the refcount.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2 years ago
|
|
|
refstruct.o \
|
avcodec/decode: Add new ProgressFrame API
Frame-threaded decoders with inter-frame dependencies
use the ThreadFrame API for syncing. It works as follows:
During init each thread allocates an AVFrame for every
ThreadFrame.
Thread A reads the header of its packet and allocates
a buffer for an AVFrame with ff_thread_get_ext_buffer()
(which also allocates a small structure that is shared
with other references to this frame) and sets its fields,
including side data. Then said thread calls ff_thread_finish_setup().
From that moment onward it is not allowed to change any
of the AVFrame fields at all any more, but it may change
fields which are an indirection away, like the content of
AVFrame.data or already existing side data.
After thread A has called ff_thread_finish_setup(),
another thread (the user one) calls the codec's update_thread_context
callback which in turn calls ff_thread_ref_frame() which
calls av_frame_ref() which reads every field of A's
AVFrame; hence the above restriction on modifications
of the AVFrame (as any modification of the AVFrame by A after
ff_thread_finish_setup() would be a data race). Of course,
this av_frame_ref() also incurs allocations and therefore
needs to be checked. ff_thread_ref_frame() also references
the small structure used for communicating progress.
This av_frame_ref() makes it awkward to propagate values that
only become known during decoding to later threads (in case of
frame reordering or other mechanisms of delayed output (like
show-existing-frames) it's not the decoding thread, but a later
thread that returns the AVFrame). E.g. for VP9 when exporting video
encoding parameters as side data the number of blocks only
becomes known during decoding, so one can't allocate the side data
before ff_thread_finish_setup(). It is currently being done afterwards
and this leads to a data race in the vp9-encparams test when using
frame-threading. Returning decode_error_flags is also complicated
by this.
To perform this exchange a buffer shared between the references
is needed (notice that simply giving the later threads a pointer
to the original AVFrame does not work, because said AVFrame will
be reused lateron when thread A decodes the next packet given to it).
One could extend the buffer already used for progress for this
or use a new one (requiring yet another allocation), yet both
of these approaches have the drawback of being unnatural, ugly
and requiring quite a lot of ad-hoc code. E.g. in case of the VP9
side data mentioned above one could not simply use the helper
that allocates and adds the side data to an AVFrame in one go.
The ProgressFrame API meanwhile offers a different solution to all
of this. It is based around the idea that the most natural
shared object for sharing information about an AVFrame between
decoding threads is the AVFrame itself. To actually implement this
the AVFrame needs to be reference counted. This is achieved by
putting a (ownership) pointer into a shared (and opaque) structure
that is managed by the RefStruct API and which also contains
the stuff necessary for progress reporting.
The users get a pointer to this AVFrame with the understanding
that the owner may set all the fields until it has indicated
that it has finished decoding this AVFrame; then the users are
allowed to read everything. Every decoder may of course employ
a different contract than the one outlined above.
Given that there is no underlying av_frame_ref(), creating
references to a ProgressFrame can't fail. Only
ff_thread_progress_get_buffer() can fail, but given that
it will replace calls to ff_thread_get_ext_buffer() it is
at places where errors are already expected and properly
taken care of.
The ProgressFrames are empty (i.e. the AVFrame pointer is NULL
and the AVFrames are not allocated during init at all)
while not being in use; ff_thread_progress_get_buffer() both
sets up the actual ProgressFrame and already calls
ff_thread_get_buffer(). So instead of checking for
ThreadFrame.f->data[0] or ThreadFrame.f->buf[0] being NULL
for "this reference frame is non-existing" one should check for
ProgressFrame.f.
This also implies that one can only set AVFrame properties
after having allocated the buffer. This restriction is not deep:
if it becomes onerous for any codec, ff_thread_progress_get_buffer()
can be broken up. The user would then have to get a buffer
himself.
In order to avoid unnecessary allocations, the shared structure
is pooled, so that both the structure as well as the AVFrame
itself are reused. This means that there won't be lots of
unnecessary allocations in case of non-frame-threaded decoding.
It might even turn out to have fewer than the current code
(the current code allocates AVFrames for every DPB slot, but
these are often excessively large and not completely used;
the new code allocates them on demand). Pooling relies on the
reset function of the RefStruct pool API, it would be impossible
to implement with the AVBufferPool API.
Finally, ProgressFrames have no notion of owner; they are built
on top of the ThreadProgress API which also lacks such a concept.
Instead every ThreadProgress and every ProgressFrame contains
its own mutex and condition variable, making it completely independent
of pthread_frame.c. Just like the ThreadFrame API it is simply
presumed that only the actual owner/producer of a frame reports
progress on said frame.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2 years ago
|
|
|
threadprogress.o \
|
|
|
|
utils.o \
|
|
|
|
version.o \
|
|
|
|
vlc.o \
|
|
|
|
vorbis_parser.o \
|
|
|
|
xiph.o \
|
|
|
|
|
|
|
|
# subsystems
|
|
|
|
include $(SRC_PATH)/libavcodec/aac/Makefile
|
|
|
|
include $(SRC_PATH)/libavcodec/hevc/Makefile
|
|
|
|
include $(SRC_PATH)/libavcodec/opus/Makefile
|
|
|
|
include $(SRC_PATH)/libavcodec/vvc/Makefile
|
|
|
|
-include $(SRC_PATH)/libavcodec/$(ARCH)/vvc/Makefile
|
|
|
|
OBJS-$(CONFIG_AANDCTTABLES) += aandcttab.o
|
|
|
|
OBJS-$(CONFIG_AC3DSP) += ac3dsp.o ac3.o ac3tab.o
|
|
|
|
OBJS-$(CONFIG_ADTS_HEADER) += adts_header.o mpeg4audio_sample_rates.o
|
|
|
|
OBJS-$(CONFIG_AMF) += amfenc.o
|
|
|
|
OBJS-$(CONFIG_AUDIO_FRAME_QUEUE) += audio_frame_queue.o
|
|
|
|
OBJS-$(CONFIG_ATSC_A53) += atsc_a53.o
|
|
|
|
OBJS-$(CONFIG_AUDIODSP) += audiodsp.o
|
|
|
|
OBJS-$(CONFIG_BLOCKDSP) += blockdsp.o
|
|
|
|
OBJS-$(CONFIG_BSWAPDSP) += bswapdsp.o
|
|
|
|
OBJS-$(CONFIG_CABAC) += cabac.o
|
|
|
|
OBJS-$(CONFIG_CBS) += cbs.o cbs_bsf.o
|
|
|
|
OBJS-$(CONFIG_CBS_AV1) += cbs_av1.o
|
|
|
|
OBJS-$(CONFIG_CBS_H264) += cbs_h2645.o cbs_sei.o h2645_parse.o
|
|
|
|
OBJS-$(CONFIG_CBS_H265) += cbs_h2645.o cbs_sei.o h2645_parse.o
|
|
|
|
OBJS-$(CONFIG_CBS_H266) += cbs_h2645.o cbs_sei.o h2645_parse.o
|
|
|
|
OBJS-$(CONFIG_CBS_JPEG) += cbs_jpeg.o
|
|
|
|
OBJS-$(CONFIG_CBS_MPEG2) += cbs_mpeg2.o
|
|
|
|
OBJS-$(CONFIG_CBS_VP8) += cbs_vp8.o vp8data.o
|
|
|
|
OBJS-$(CONFIG_CBS_VP9) += cbs_vp9.o
|
|
|
|
OBJS-$(CONFIG_D3D12VA_ENCODE) += d3d12va_encode.o hw_base_encode.o
|
|
|
|
OBJS-$(CONFIG_DEFLATE_WRAPPER) += zlib_wrapper.o
|
|
|
|
OBJS-$(CONFIG_DOVI_RPUDEC) += dovi_rpu.o dovi_rpudec.o
|
|
|
|
OBJS-$(CONFIG_DOVI_RPUENC) += dovi_rpu.o dovi_rpuenc.o
|
|
|
|
OBJS-$(CONFIG_ERROR_RESILIENCE) += error_resilience.o
|
|
|
|
OBJS-$(CONFIG_EVCPARSE) += evc_parse.o evc_ps.o
|
|
|
|
OBJS-$(CONFIG_EXIF) += exif.o tiff_common.o
|
|
|
|
OBJS-$(CONFIG_FAANDCT) += faandct.o
|
|
|
|
OBJS-$(CONFIG_FAANIDCT) += faanidct.o
|
|
|
|
OBJS-$(CONFIG_FDCTDSP) += fdctdsp.o jfdctfst.o jfdctint.o
|
|
|
|
OBJS-$(CONFIG_FMTCONVERT) += fmtconvert.o
|
|
|
|
OBJS-$(CONFIG_GOLOMB) += golomb.o
|
|
|
|
OBJS-$(CONFIG_H263DSP) += h263dsp.o
|
|
|
|
OBJS-$(CONFIG_H264CHROMA) += h264chroma.o
|
|
|
|
OBJS-$(CONFIG_H264DSP) += h264dsp.o h264idct.o
|
|
|
|
OBJS-$(CONFIG_H264PARSE) += h264_parse.o h264_ps.o h264data.o \
|
|
|
|
h2645data.o h2645_parse.o h2645_vui.o
|
|
|
|
OBJS-$(CONFIG_H264PRED) += h264pred.o
|
|
|
|
OBJS-$(CONFIG_H264QPEL) += h264qpel.o
|
|
|
|
OBJS-$(CONFIG_H264_SEI) += h264_sei.o h2645_sei.o
|
|
|
|
OBJS-$(CONFIG_HEVCPARSE) += h2645data.o h2645_parse.o h2645_vui.o
|
|
|
|
OBJS-$(CONFIG_HEVC_SEI) += h2645_sei.o aom_film_grain.o \
|
|
|
|
dynamic_hdr_vivid.o
|
|
|
|
OBJS-$(CONFIG_HPELDSP) += hpeldsp.o
|
|
|
|
OBJS-$(CONFIG_HUFFMAN) += huffman.o
|
|
|
|
OBJS-$(CONFIG_HUFFYUVDSP) += huffyuvdsp.o
|
|
|
|
OBJS-$(CONFIG_HUFFYUVENCDSP) += huffyuvencdsp.o
|
|
|
|
OBJS-$(CONFIG_IDCTDSP) += idctdsp.o simple_idct.o jrevdct.o
|
|
|
|
OBJS-$(CONFIG_IIRFILTER) += iirfilter.o
|
|
|
|
OBJS-$(CONFIG_INFLATE_WRAPPER) += zlib_wrapper.o
|
|
|
|
OBJS-$(CONFIG_INTRAX8) += intrax8.o intrax8dsp.o msmpeg4_vc1_data.o
|
|
|
|
OBJS-$(CONFIG_IVIDSP) += ivi_dsp.o
|
|
|
|
OBJS-$(CONFIG_JNI) += ffjni.o jni.o
|
|
|
|
OBJS-$(CONFIG_JPEGTABLES) += jpegtables.o
|
|
|
|
OBJS-$(CONFIG_LCMS2) += fflcms2.o
|
|
|
|
OBJS-$(CONFIG_LLAUDDSP) += lossless_audiodsp.o
|
|
|
|
OBJS-$(CONFIG_LLVIDDSP) += lossless_videodsp.o
|
|
|
|
OBJS-$(CONFIG_LLVIDENCDSP) += lossless_videoencdsp.o
|
|
|
|
OBJS-$(CONFIG_LPC) += lpc.o
|
|
|
|
OBJS-$(CONFIG_LSP) += lsp.o
|
|
|
|
OBJS-$(CONFIG_LZF) += lzf.o
|
|
|
|
OBJS-$(CONFIG_ME_CMP) += me_cmp.o
|
|
|
|
OBJS-$(CONFIG_MEDIACODEC) += mediacodecdec_common.o mediacodec_surface.o mediacodec_wrapper.o mediacodec_sw_buffer.o
|
|
|
|
OBJS-$(CONFIG_MPEG_ER) += mpeg_er.o
|
|
|
|
OBJS-$(CONFIG_MPEGAUDIO) += mpegaudio.o mpegaudiodec_common.o \
|
|
|
|
mpegaudiodata.o
|
|
|
|
OBJS-$(CONFIG_MPEGAUDIODSP) += mpegaudiodsp.o \
|
|
|
|
mpegaudiodsp_data.o \
|
|
|
|
mpegaudiodsp_fixed.o \
|
|
|
|
mpegaudiodsp_float.o \
|
|
|
|
dct32_fixed.o dct32_float.o
|
|
|
|
OBJS-$(CONFIG_MPEGAUDIOHEADER) += mpegaudiodecheader.o mpegaudiotabs.o
|
|
|
|
OBJS-$(CONFIG_MPEG4AUDIO) += mpeg4audio.o mpeg4audio_sample_rates.o
|
|
|
|
OBJS-$(CONFIG_MPEGVIDEO) += mpegvideo.o rl.o \
|
|
|
|
mpegvideo_motion.o \
|
|
|
|
mpegvideodata.o mpegpicture.o \
|
|
|
|
to_upper4.o
|
|
|
|
OBJS-$(CONFIG_MPEGVIDEODEC) += mpegvideo_dec.o mpegutils.o
|
|
|
|
OBJS-$(CONFIG_MPEGVIDEOENC) += mpegvideo_enc.o mpeg12data.o \
|
|
|
|
motion_est.o ratecontrol.o \
|
|
|
|
mpegvideoencdsp.o
|
|
|
|
OBJS-$(CONFIG_MSMPEG4DEC) += msmpeg4dec.o msmpeg4.o msmpeg4data.o \
|
|
|
|
msmpeg4_vc1_data.o
|
|
|
|
OBJS-$(CONFIG_MSMPEG4ENC) += msmpeg4enc.o msmpeg4.o msmpeg4data.o \
|
|
|
|
msmpeg4_vc1_data.o
|
|
|
|
OBJS-$(CONFIG_MSS34DSP) += mss34dsp.o jpegquanttables.o
|
|
|
|
OBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o
|
|
|
|
OBJS-$(CONFIG_QPELDSP) += qpeldsp.o
|
|
|
|
OBJS-$(CONFIG_QSV) += qsv.o
|
|
|
|
OBJS-$(CONFIG_QSVDEC) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_QSVENC) += qsvenc.o
|
|
|
|
OBJS-$(CONFIG_RANGECODER) += rangecoder.o
|
|
|
|
OBJS-$(CONFIG_RV34DSP) += rv34dsp.o
|
|
|
|
OBJS-$(CONFIG_SINEWIN) += sinewin.o
|
|
|
|
OBJS-$(CONFIG_SNAPPY) += snappy.o
|
|
|
|
OBJS-$(CONFIG_STARTCODE) += startcode.o
|
|
|
|
OBJS-$(CONFIG_TEXTUREDSP) += texturedsp.o
|
|
|
|
OBJS-$(CONFIG_TEXTUREDSPENC) += texturedspenc.o
|
|
|
|
OBJS-$(CONFIG_TPELDSP) += tpeldsp.o
|
|
|
|
OBJS-$(CONFIG_VAAPI_ENCODE) += vaapi_encode.o hw_base_encode.o
|
|
|
|
OBJS-$(CONFIG_AV1_AMF_ENCODER) += amfenc_av1.o
|
|
|
|
OBJS-$(CONFIG_VC1DSP) += vc1dsp.o
|
|
|
|
OBJS-$(CONFIG_VIDEODSP) += videodsp.o
|
|
|
|
OBJS-$(CONFIG_VP3DSP) += vp3dsp.o
|
|
|
|
OBJS-$(CONFIG_VP56DSP) += vp56dsp.o
|
|
|
|
OBJS-$(CONFIG_VP8DSP) += vp8dsp.o
|
|
|
|
OBJS-$(CONFIG_V4L2_M2M) += v4l2_m2m.o v4l2_context.o v4l2_buffers.o v4l2_fmt.o
|
|
|
|
OBJS-$(CONFIG_WMA_FREQS) += wma_freqs.o
|
|
|
|
OBJS-$(CONFIG_WMV2DSP) += wmv2dsp.o
|
|
|
|
|
|
|
|
# decoders/encoders
|
|
|
|
OBJS-$(CONFIG_ZERO12V_DECODER) += 012v.o
|
|
|
|
OBJS-$(CONFIG_A64MULTI_ENCODER) += a64multienc.o elbg.o
|
|
|
|
OBJS-$(CONFIG_A64MULTI5_ENCODER) += a64multienc.o elbg.o
|
|
|
|
OBJS-$(CONFIG_AAC_DECODER) += aactab.o \
|
|
|
|
aacsbr.o aacps_common.o aacps_float.o \
|
|
|
|
kbdwin.o \
|
|
|
|
sbrdsp.o aacpsdsp_float.o cbrt_data.o
|
|
|
|
OBJS-$(CONFIG_AAC_FIXED_DECODER) += aactab.o \
|
|
|
|
aacsbr_fixed.o aacps_common.o aacps_fixed.o \
|
|
|
|
kbdwin.o \
|
|
|
|
sbrdsp_fixed.o aacpsdsp_fixed.o cbrt_data_fixed.o
|
|
|
|
OBJS-$(CONFIG_AAC_ENCODER) += aacenc.o aaccoder.o aacenctab.o \
|
|
|
|
aacpsy.o aactab.o \
|
|
|
|
aacenc_is.o \
|
|
|
|
aacenc_tns.o \
|
|
|
|
aacenc_ltp.o \
|
|
|
|
aacenc_pred.o \
|
|
|
|
psymodel.o kbdwin.o \
|
|
|
|
mpeg4audio_sample_rates.o
|
|
|
|
OBJS-$(CONFIG_AAC_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_AAC_MF_ENCODER) += mfenc.o mf_utils.o
|
|
|
|
OBJS-$(CONFIG_AASC_DECODER) += aasc.o msrledec.o
|
|
|
|
OBJS-$(CONFIG_AC3_DECODER) += ac3dec_float.o ac3dec_data.o ac3.o \
|
|
|
|
kbdwin.o ac3tab.o ac3_channel_layout_tab.o
|
|
|
|
OBJS-$(CONFIG_AC3_FIXED_DECODER) += ac3dec_fixed.o ac3dec_data.o ac3.o \
|
|
|
|
kbdwin.o ac3tab.o ac3_channel_layout_tab.o
|
|
|
|
OBJS-$(CONFIG_AC3_ENCODER) += ac3enc_float.o ac3enc.o ac3tab.o \
|
|
|
|
ac3.o kbdwin.o
|
ac3enc_fixed: convert to 32-bit sample format
The AC3 encoder used to be a separate library called "Aften", which
got merged into libavcodec (literally, SVN commits and all).
The merge preserved as much features from the library as possible.
The code had two versions - a fixed point version and a floating
point version. FFmpeg had floating point DSP code used by other
codecs, the AC3 decoder including, so the floating-point DSP was
simply replaced with FFmpeg's own functions.
However, FFmpeg had no fixed-point audio code at that point. So
the encoder brought along its own fixed-point DSP functions,
including a fixed-point MDCT.
The fixed-point MDCT itself is trivially just a float MDCT with a
different type and each multiply being a fixed-point multiply.
So over time, it got refactored, and the FFT used for all other codecs
was templated.
Due to design decisions at the time, the fixed-point version of the
encoder operates at 16-bits of precision. Although convenient, this,
even at the time, was inadequate and inefficient. The encoder is noisy,
does not produce output comparable to the float encoder, and even
rings at higher frequencies due to the badly approximated winow function.
Enter MIPS (owned by Imagination Technologies at the time). They wanted
quick fixed-point decoding on their FPUless cores. So they contributed
patches to template the AC3 decoder so it had both a fixed-point
and a floating-point version. They also did the same for the AAC decoder.
They however, used 32-bit samples. Not 16-bits. And we did not have
32-bit fixed-point DSP functions, including an MDCT. But instead of
templating our MDCT to output 3 versions (float, 32-bit fixed and 16-bit fixed),
they simply copy-pasted their own MDCT into ours, and completely
ifdeffed our own MDCT code out if a 32-bit fixed point MDCT was selected.
This is also the status quo nowadays - 2 separate MDCTs, one which
produces floating point and 16-bit fixed point versions, and one
sort-of integrated which produces 32-bit MDCT.
MIPS weren't all that interested in encoding, so they left the encoder
as-is, and they didn't care much about the ifdeffery, mess or quality - it's
not their problem.
So the MDCT/FFT code has always been a thorn in anyone looking to clean up
code's eye.
Backstory over. Internally AC3 operates on 25-bit fixed-point coefficients.
So for the floating point version, the encoder simply runs the float MDCT,
and converts the resulting coefficients to 25-bit fixed-point, as AC3 is inherently
a fixed-point codec. For the fixed-point version, the input is 16-bit samples,
so to maximize precision the frame samples are analyzed and the highest set
bit is detected via ac3_max_msb_abs_int16(), and the coefficients are then
scaled up via ac3_lshift_int16(), so the input for the FFT is always at least 14 bits,
computed in normalize_samples(). After FFT, the coefficients are scaled up to 25 bits.
This patch simply changes the encoder to accept 32-bit samples, reusing
the already well-optimized 32-bit MDCT code, allowing us to clean up and drop
a large part of a very messy code of ours, as well as prepare for the future lavu/tx
conversion. The coefficients are simply scaled down to 25 bits during windowing,
skipping 2 separate scalings, as the hacks to extend precision are simply no longer
necessary. There's no point in running the MDCT always at 32 bits when you're
going to drop 6 bits off anyway, the headroom is plenty, and the MDCT rounds
properly.
This also makes the encoder even slightly more accurate over the float version,
as there's no coefficient conversion step necessary.
SIZE SAVINGS:
ARM32:
HARDCODED TABLES:
BASE - 10709590
DROP DSP - 10702872 - diff: -6.56KiB
DROP MDCT - 10667932 - diff: -34.12KiB - both: -40.68KiB
DROP FFT - 10336652 - diff: -323.52KiB - all: -364.20KiB
SOFTCODED TABLES:
BASE - 9685096
DROP DSP - 9678378 - diff: -6.56KiB
DROP MDCT - 9643466 - diff: -34.09KiB - both: -40.65KiB
DROP FFT - 9573918 - diff: -67.92KiB - all: -108.57KiB
ARM64:
HARDCODED TABLES:
BASE - 14641112
DROP DSP - 14633806 - diff: -7.13KiB
DROP MDCT - 14604812 - diff: -28.31KiB - both: -35.45KiB
DROP FFT - 14286826 - diff: -310.53KiB - all: -345.98KiB
SOFTCODED TABLES:
BASE - 13636238
DROP DSP - 13628932 - diff: -7.13KiB
DROP MDCT - 13599866 - diff: -28.38KiB - both: -35.52KiB
DROP FFT - 13542080 - diff: -56.43KiB - all: -91.95KiB
x86:
HARDCODED TABLES:
BASE - 12367336
DROP DSP - 12354698 - diff: -12.34KiB
DROP MDCT - 12331024 - diff: -23.12KiB - both: -35.46KiB
DROP FFT - 12029788 - diff: -294.18KiB - all: -329.64KiB
SOFTCODED TABLES:
BASE - 11358094
DROP DSP - 11345456 - diff: -12.34KiB
DROP MDCT - 11321742 - diff: -23.16KiB - both: -35.50KiB
DROP FFT - 11276946 - diff: -43.75KiB - all: -79.25KiB
PERFORMANCE (10min random s32le):
ARM32 - before - 39.9x - 0m15.046s
ARM32 - after - 28.2x - 0m21.525s
Speed: -30%
ARM64 - before - 36.1x - 0m16.637s
ARM64 - after - 36.0x - 0m16.727s
Speed: -0.5%
x86 - before - 184x - 0m3.277s
x86 - after - 190x - 0m3.187s
Speed: +3%
4 years ago
|
|
|
OBJS-$(CONFIG_AC3_FIXED_ENCODER) += ac3enc_fixed.o ac3enc.o ac3tab.o ac3.o kbdwin.o
|
|
|
|
OBJS-$(CONFIG_AC3_MF_ENCODER) += mfenc.o mf_utils.o
|
|
|
|
OBJS-$(CONFIG_ACELP_KELVIN_DECODER) += g729dec.o lsp.o celp_math.o celp_filters.o acelp_filters.o acelp_pitch_delay.o acelp_vectors.o g729postfilter.o
|
|
|
|
OBJS-$(CONFIG_AGM_DECODER) += agm.o jpegquanttables.o
|
|
|
|
OBJS-$(CONFIG_AIC_DECODER) += aic.o
|
|
|
|
OBJS-$(CONFIG_ALAC_DECODER) += alac.o alac_data.o alacdsp.o
|
|
|
|
OBJS-$(CONFIG_ALAC_ENCODER) += alacenc.o alac_data.o
|
|
|
|
OBJS-$(CONFIG_ALIAS_PIX_DECODER) += aliaspixdec.o
|
|
|
|
OBJS-$(CONFIG_ALIAS_PIX_ENCODER) += aliaspixenc.o
|
|
|
|
OBJS-$(CONFIG_ALS_DECODER) += alsdec.o bgmc.o mlz.o
|
|
|
|
OBJS-$(CONFIG_AMRNB_DECODER) += amrnbdec.o celp_filters.o \
|
|
|
|
celp_math.o acelp_filters.o \
|
|
|
|
acelp_vectors.o \
|
|
|
|
acelp_pitch_delay.o
|
|
|
|
OBJS-$(CONFIG_AMRWB_DECODER) += amrwbdec.o celp_filters.o \
|
|
|
|
celp_math.o acelp_filters.o \
|
|
|
|
acelp_vectors.o \
|
|
|
|
acelp_pitch_delay.o
|
|
|
|
OBJS-$(CONFIG_AMRNB_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_AMRWB_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_AMV_ENCODER) += mjpegenc.o mjpegenc_common.o
|
|
|
|
OBJS-$(CONFIG_ANM_DECODER) += anm.o
|
|
|
|
OBJS-$(CONFIG_ANULL_DECODER) += null.o
|
|
|
|
OBJS-$(CONFIG_ANULL_ENCODER) += null.o
|
|
|
|
OBJS-$(CONFIG_ANSI_DECODER) += ansi.o cga_data.o
|
|
|
|
OBJS-$(CONFIG_APAC_DECODER) += apac.o
|
|
|
|
OBJS-$(CONFIG_APE_DECODER) += apedec.o
|
|
|
|
OBJS-$(CONFIG_APTX_DECODER) += aptxdec.o aptx.o
|
|
|
|
OBJS-$(CONFIG_APTX_ENCODER) += aptxenc.o aptx.o
|
|
|
|
OBJS-$(CONFIG_APTX_HD_DECODER) += aptxdec.o aptx.o
|
|
|
|
OBJS-$(CONFIG_APTX_HD_ENCODER) += aptxenc.o aptx.o
|
|
|
|
OBJS-$(CONFIG_APNG_DECODER) += png.o pngdec.o pngdsp.o
|
|
|
|
OBJS-$(CONFIG_APNG_ENCODER) += png.o pngenc.o
|
|
|
|
OBJS-$(CONFIG_ARBC_DECODER) += arbc.o
|
|
|
|
OBJS-$(CONFIG_ARGO_DECODER) += argo.o
|
|
|
|
OBJS-$(CONFIG_SSA_DECODER) += assdec.o ass.o
|
subtitles: introduce ASS codec id and use it.
Currently, we have a AV_CODEC_ID_SSA, which matches the way the ASS/SSA
markup is muxed in a standalone .ass/.ssa file. This means the AVPacket
data starts with a "Dialogue:" string, followed by a timing information
(start and end of the event as string) and a trailing CRLF after each
line. One packet can contain several lines. We'll refer to this layout
as "SSA" or "SSA lines".
In matroska, this markup is not stored as such: it has no "Dialogue:"
prefix, it contains a ReadOrder field, the timing information is not in
the payload, and it doesn't contain the trailing CRLF. See [1] for more
info. We'll refer to this layout as "ASS".
Since we have only one common codec for both formats, the matroska
demuxer is constructing an AVPacket following the "SSA lines" format.
This causes several problems, so it was decided to change this into
clean ASS packets.
Some insight about what is changed or unchanged in this commit:
CODECS
------
- the decoding process still writes "SSA lines" markup inside the ass
fields of the subtitles rectangles (sub->rects[n]->ass), which is
still the current common way of representing decoded subtitles
markup. It is meant to change later.
- new ASS codec id: AV_CODEC_ID_ASS (which is different from the
legacy AV_CODEC_ID_SSA)
- lavc/assdec: the "ass" decoder is renamed into "ssa" (instead of
"ass") for consistency with the codec id and allows to add a real
ass decoder. This ass decoder receives clean ASS lines (so it starts
with a ReadOrder, is followed by the Layer, etc). We make sure this
is decoded properly in a new ass-line rectangle of the decoded
subtitles (the ssa decoder OTOH is doing a simple straightforward
copy). Using the packet timing instead of data string makes sure the
ass-line now contains the appropriate timing.
- lavc/assenc: just like the ass decoder, the "ssa" encoder is renamed
into "ssa" (instead of "ass") for consistency with the codec id, and
allows to add a real "ass" encoder.
One important thing about this encoder is that it only supports one
ass rectangle: we could have put several dialogue events in the
AVPacket (separated by a \0 for instance) but this would have cause
trouble for the muxer which needs not only the start time, but also
the duration: typically, you have merged events with the same start
time (stored in the AVPacket->pts) but a different duration. At the
moment, only the matroska do the merge with the SSA-line codec.
We will need to make sure all the decoders in the future can't add
more than one rectangle (and only one Dialogue line in it
obviously).
FORMATS
-------
- lavf/assenc: the .ass/.ssa muxer can take both SSA and ASS packets.
In the case of ASS packets as input, it adds the timing based on the
AVPacket pts and duration, and mux it with "Dialogue:", trailing
CRLF, etc.
- lavf/assdec: unchanged; it currently still only outputs SSA-lines
packets.
- lavf/mkv: the demuxer can now output ASS packets without the need of
any "SSA-lines" reconstruction hack. It will become the default at
next libavformat bump, and the SSA support will be dropped from the
demuxer. The muxer can take ASS packets since it's muxed normally,
and still supports the old SSA packets. All the SSA support and
hacks in Matroska code will be dropped at next lavf bump.
[1]: http://www.matroska.org/technical/specs/subtitles/ssa.html
12 years ago
|
|
|
OBJS-$(CONFIG_SSA_ENCODER) += assenc.o ass.o
|
|
|
|
OBJS-$(CONFIG_ASS_DECODER) += assdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_ASS_ENCODER) += assenc.o ass.o
|
|
|
|
OBJS-$(CONFIG_ASV1_DECODER) += asvdec.o asv.o mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_ASV1_ENCODER) += asvenc.o asv.o mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_ASV2_DECODER) += asvdec.o asv.o mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_ASV2_ENCODER) += asvenc.o asv.o mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_ATRAC1_DECODER) += atrac1.o atrac.o
|
|
|
|
OBJS-$(CONFIG_ATRAC3_DECODER) += atrac3.o atrac.o
|
|
|
|
OBJS-$(CONFIG_ATRAC3AL_DECODER) += atrac3.o atrac.o
|
|
|
|
OBJS-$(CONFIG_ATRAC3P_DECODER) += atrac3plusdec.o atrac3plus.o \
|
|
|
|
atrac3plusdsp.o atrac.o
|
|
|
|
OBJS-$(CONFIG_ATRAC3PAL_DECODER) += atrac3plusdec.o atrac3plus.o \
|
|
|
|
atrac3plusdsp.o atrac.o
|
|
|
|
OBJS-$(CONFIG_ATRAC9_DECODER) += atrac9dec.o
|
|
|
|
OBJS-$(CONFIG_AURA_DECODER) += cyuv.o
|
|
|
|
OBJS-$(CONFIG_AURA2_DECODER) += aura.o
|
|
|
|
OBJS-$(CONFIG_AV1_DECODER) += av1dec.o av1_parse.o
|
|
|
|
OBJS-$(CONFIG_AV1_CUVID_DECODER) += cuviddec.o
|
|
|
|
OBJS-$(CONFIG_AV1_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_AV1_MEDIACODEC_ENCODER) += mediacodecenc.o
|
|
|
|
OBJS-$(CONFIG_AV1_NVENC_ENCODER) += nvenc_av1.o nvenc.o
|
|
|
|
OBJS-$(CONFIG_AV1_QSV_ENCODER) += qsvenc_av1.o
|
|
|
|
OBJS-$(CONFIG_AV1_VAAPI_ENCODER) += vaapi_encode_av1.o av1_levels.o
|
|
|
|
OBJS-$(CONFIG_AVRN_DECODER) += avrndec.o
|
|
|
|
OBJS-$(CONFIG_AVRP_DECODER) += r210dec.o
|
|
|
|
OBJS-$(CONFIG_AVRP_ENCODER) += r210enc.o
|
|
|
|
OBJS-$(CONFIG_AVS_DECODER) += avs.o
|
|
|
|
OBJS-$(CONFIG_AVUI_DECODER) += avuidec.o
|
|
|
|
OBJS-$(CONFIG_AVUI_ENCODER) += avuienc.o
|
|
|
|
OBJS-$(CONFIG_BETHSOFTVID_DECODER) += bethsoftvideo.o
|
|
|
|
OBJS-$(CONFIG_BFI_DECODER) += bfi.o
|
|
|
|
OBJS-$(CONFIG_BINK_DECODER) += bink.o binkdsp.o
|
|
|
|
OBJS-$(CONFIG_BINKAUDIO_DCT_DECODER) += binkaudio.o
|
|
|
|
OBJS-$(CONFIG_BINKAUDIO_RDFT_DECODER) += binkaudio.o
|
|
|
|
OBJS-$(CONFIG_BINTEXT_DECODER) += bintext.o cga_data.o
|
|
|
|
OBJS-$(CONFIG_BITPACKED_DECODER) += bitpacked_dec.o
|
|
|
|
OBJS-$(CONFIG_BITPACKED_ENCODER) += bitpacked_enc.o
|
|
|
|
OBJS-$(CONFIG_BMP_DECODER) += bmp.o msrledec.o
|
|
|
|
OBJS-$(CONFIG_BMP_ENCODER) += bmpenc.o
|
|
|
|
OBJS-$(CONFIG_BMV_AUDIO_DECODER) += bmvaudio.o
|
|
|
|
OBJS-$(CONFIG_BMV_VIDEO_DECODER) += bmvvideo.o
|
|
|
|
OBJS-$(CONFIG_BONK_DECODER) += bonk.o
|
|
|
|
OBJS-$(CONFIG_BRENDER_PIX_DECODER) += brenderpix.o
|
|
|
|
OBJS-$(CONFIG_C93_DECODER) += c93.o
|
|
|
|
OBJS-$(CONFIG_CAVS_DECODER) += cavs.o cavsdec.o cavsdsp.o \
|
|
|
|
cavsdata.o
|
|
|
|
OBJS-$(CONFIG_CBD2_DPCM_DECODER) += dpcm.o
|
|
|
|
OBJS-$(CONFIG_CCAPTION_DECODER) += ccaption_dec.o ass.o
|
|
|
|
OBJS-$(CONFIG_CDGRAPHICS_DECODER) += cdgraphics.o
|
|
|
|
OBJS-$(CONFIG_CDTOONS_DECODER) += cdtoons.o
|
|
|
|
OBJS-$(CONFIG_CDXL_DECODER) += cdxl.o
|
|
|
|
OBJS-$(CONFIG_CFHD_DECODER) += cfhd.o cfhddata.o cfhddsp.o
|
|
|
|
OBJS-$(CONFIG_CFHD_ENCODER) += cfhdenc.o cfhddata.o cfhdencdsp.o
|
|
|
|
OBJS-$(CONFIG_CINEPAK_DECODER) += cinepak.o
|
|
|
|
OBJS-$(CONFIG_CINEPAK_ENCODER) += cinepakenc.o elbg.o
|
|
|
|
OBJS-$(CONFIG_CLEARVIDEO_DECODER) += clearvideo.o
|
|
|
|
OBJS-$(CONFIG_CLJR_DECODER) += cljrdec.o
|
|
|
|
OBJS-$(CONFIG_CLJR_ENCODER) += cljrenc.o
|
|
|
|
OBJS-$(CONFIG_CLLC_DECODER) += cllc.o canopus.o
|
|
|
|
OBJS-$(CONFIG_COMFORTNOISE_DECODER) += cngdec.o celp_filters.o
|
|
|
|
OBJS-$(CONFIG_COMFORTNOISE_ENCODER) += cngenc.o
|
|
|
|
OBJS-$(CONFIG_COOK_DECODER) += cook.o
|
|
|
|
OBJS-$(CONFIG_CPIA_DECODER) += cpia.o
|
|
|
|
OBJS-$(CONFIG_CRI_DECODER) += cri.o
|
|
|
|
OBJS-$(CONFIG_CSCD_DECODER) += cscd.o
|
|
|
|
OBJS-$(CONFIG_CYUV_DECODER) += cyuv.o
|
|
|
|
OBJS-$(CONFIG_DCA_DECODER) += dcadec.o dca.o dcadata.o dcahuff.o \
|
|
|
|
dca_core.o dca_exss.o dca_xll.o dca_lbr.o \
|
|
|
|
dcadsp.o dcadct.o dca_sample_rate_tab.o \
|
|
|
|
synth_filter.o
|
|
|
|
OBJS-$(CONFIG_DCA_ENCODER) += dcaenc.o dcadata.o dcahuff.o \
|
|
|
|
dcaadpcm.o
|
|
|
|
OBJS-$(CONFIG_DDS_DECODER) += dds.o
|
|
|
|
OBJS-$(CONFIG_DERF_DPCM_DECODER) += dpcm.o
|
|
|
|
OBJS-$(CONFIG_DIRAC_DECODER) += diracdec.o dirac.o diracdsp.o diractab.o \
|
|
|
|
dirac_arith.o dirac_dwt.o dirac_vlc.o
|
|
|
|
OBJS-$(CONFIG_DFA_DECODER) += dfa.o
|
avcodec: add DFPWM1a codec
From the wiki page (https://wiki.vexatos.com/dfpwm):
> DFPWM (Dynamic Filter Pulse Width Modulation) is an audio codec
> created by Ben “GreaseMonkey” Russell in 2012, originally to be used
> as a voice codec for asiekierka's pixmess, a C remake of 64pixels.
> It is a 1-bit-per-sample codec which uses a dynamic-strength one-pole
> low-pass filter as a predictor. Due to the fact that a raw DPFWM decoding
> creates a high-pitched whine, it is often followed by some post-processing
> filters to make the stream more listenable.
It has recently gained popularity through the ComputerCraft mod for
Minecraft, which added support for audio through this codec, as well as
the Computronics expansion which preceeded the official support. These
both implement the slightly adjusted 1a version of the codec, which is
the version I have chosen for this patch.
This patch adds a new codec (with encoding and decoding) for DFPWM1a.
The codec sources are pretty simple: they use the reference codec with
a basic wrapper to connect it to the FFmpeg AVCodec system.
To clarify, the codec does not have a specific sample rate - it is
provided by the container (or user), which is typically 48000, but has
also been known to be 32768. The codec does not specify channel info
either, and it's pretty much always used with one mono channel.
However, since it appears that libavcodec expects both sample rate and
channel count to be handled by either the codec or container, I have
made the decision to allow multiple channels interleaved, which as far
as I know has never been used, but it works fine here nevertheless. The
accompanying raw format has a channels option to set this. (I expect
most users of this will not use multiple channels, but it remains an
option just in case.)
This patch will be highly useful to ComputerCraft developers who are
working with audio, as it is the standard format for audio, and there
are few user-friendly encoders out there, and even fewer decoders. It
will streamline the process for importing and listening to audio,
replacing the need to write code or use tools that require very
specific input formats.
You may use the CraftOS-PC program (https://www.craftos-pc.cc) to test
out DFPWM playback. To use it, run the program and type this command:
"attach left speaker" Then run "speaker play <file.dfpwm>" for each file.
The app runs in a sandbox, so files have to be transferred in first;
the easiest way to do this is to simply drag the file on the window.
(Or copy files to the folder at https://www.craftos-pc.cc/docs/saves.)
Sample DFPWM files can be generated with an online tool at
https://music.madefor.cc. This is the current best way to encode DFPWM
files. Simply drag an audio file onto the page, and it will encode it,
giving a download link on the page.
I've made sure to update all of the docs as per Developer§7, and I've
tested it as per section 8. Test files encoded to DFPWM play correctly
in ComputerCraft, and other files that work in CC are correctly decoded.
I have also verified that corrupt files do not crash the decoder - this
should theoretically not be an issue as the result size is constant with
respect to the input size.
Signed-off-by: Jack Bruienne <jackbruienne@gmail.com>
3 years ago
|
|
|
OBJS-$(CONFIG_DFPWM_DECODER) += dfpwmdec.o
|
|
|
|
OBJS-$(CONFIG_DFPWM_ENCODER) += dfpwmenc.o
|
|
|
|
OBJS-$(CONFIG_DNXHD_DECODER) += dnxhddec.o dnxhddata.o
|
|
|
|
OBJS-$(CONFIG_DNXHD_ENCODER) += dnxhdenc.o dnxhddata.o
|
|
|
|
OBJS-$(CONFIG_DOLBY_E_DECODER) += dolby_e.o dolby_e_parse.o kbdwin.o
|
|
|
|
OBJS-$(CONFIG_DPX_DECODER) += dpx.o
|
|
|
|
OBJS-$(CONFIG_DPX_ENCODER) += dpxenc.o
|
|
|
|
OBJS-$(CONFIG_DSD_LSBF_DECODER) += dsddec.o dsd.o
|
|
|
|
OBJS-$(CONFIG_DSD_MSBF_DECODER) += dsddec.o dsd.o
|
|
|
|
OBJS-$(CONFIG_DSD_LSBF_PLANAR_DECODER) += dsddec.o dsd.o
|
|
|
|
OBJS-$(CONFIG_DSD_MSBF_PLANAR_DECODER) += dsddec.o dsd.o
|
|
|
|
OBJS-$(CONFIG_DSICINAUDIO_DECODER) += dsicinaudio.o
|
|
|
|
OBJS-$(CONFIG_DSICINVIDEO_DECODER) += dsicinvideo.o
|
|
|
|
OBJS-$(CONFIG_DSS_SP_DECODER) += dss_sp.o
|
|
|
|
OBJS-$(CONFIG_DST_DECODER) += dstdec.o dsd.o
|
|
|
|
OBJS-$(CONFIG_DVBSUB_DECODER) += dvbsubdec.o
|
|
|
|
OBJS-$(CONFIG_DVBSUB_ENCODER) += dvbsubenc.o
|
|
|
|
OBJS-$(CONFIG_DVDSUB_DECODER) += dvdsubdec.o dvdsub.o
|
|
|
|
OBJS-$(CONFIG_DVDSUB_ENCODER) += dvdsubenc.o dvdsub.o
|
|
|
|
OBJS-$(CONFIG_DVAUDIO_DECODER) += dvaudiodec.o
|
|
|
|
OBJS-$(CONFIG_DVVIDEO_DECODER) += dvdec.o dv.o dvdata.o
|
|
|
|
OBJS-$(CONFIG_DVVIDEO_ENCODER) += dvenc.o dv.o dvdata.o
|
|
|
|
OBJS-$(CONFIG_DXA_DECODER) += dxa.o
|
|
|
|
OBJS-$(CONFIG_DXTORY_DECODER) += dxtory.o
|
|
|
|
OBJS-$(CONFIG_DXV_DECODER) += dxv.o
|
|
|
|
OBJS-$(CONFIG_DXV_ENCODER) += dxvenc.o
|
|
|
|
OBJS-$(CONFIG_EAC3_DECODER) += eac3_data.o
|
|
|
|
OBJS-$(CONFIG_EAC3_ENCODER) += eac3enc.o eac3_data.o
|
|
|
|
OBJS-$(CONFIG_EACMV_DECODER) += eacmv.o
|
|
|
|
OBJS-$(CONFIG_EAMAD_DECODER) += eamad.o eaidct.o mpeg12.o \
|
|
|
|
mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_EATGQ_DECODER) += eatgq.o eaidct.o
|
|
|
|
OBJS-$(CONFIG_EATGV_DECODER) += eatgv.o
|
|
|
|
OBJS-$(CONFIG_EATQI_DECODER) += eatqi.o eaidct.o mpeg12.o \
|
|
|
|
mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_EIGHTBPS_DECODER) += 8bps.o
|
|
|
|
OBJS-$(CONFIG_EIGHTSVX_EXP_DECODER) += 8svx.o
|
|
|
|
OBJS-$(CONFIG_EIGHTSVX_FIB_DECODER) += 8svx.o
|
|
|
|
OBJS-$(CONFIG_ESCAPE124_DECODER) += escape124.o
|
|
|
|
OBJS-$(CONFIG_ESCAPE130_DECODER) += escape130.o
|
|
|
|
OBJS-$(CONFIG_EVRC_DECODER) += evrcdec.o acelp_vectors.o lsp.o
|
|
|
|
OBJS-$(CONFIG_EXR_DECODER) += exr.o exrdsp.o half2float.o
|
|
|
|
OBJS-$(CONFIG_EXR_ENCODER) += exrenc.o float2half.o
|
|
|
|
OBJS-$(CONFIG_FASTAUDIO_DECODER) += fastaudio.o
|
|
|
|
OBJS-$(CONFIG_FFV1_DECODER) += ffv1dec.o ffv1.o
|
|
|
|
OBJS-$(CONFIG_FFV1_ENCODER) += ffv1enc.o ffv1.o
|
|
|
|
OBJS-$(CONFIG_FFWAVESYNTH_DECODER) += ffwavesynth.o
|
|
|
|
OBJS-$(CONFIG_FIC_DECODER) += fic.o
|
|
|
|
OBJS-$(CONFIG_FITS_DECODER) += fitsdec.o fits.o
|
|
|
|
OBJS-$(CONFIG_FITS_ENCODER) += fitsenc.o
|
|
|
|
OBJS-$(CONFIG_FLAC_DECODER) += flacdec.o flacdata.o flacdsp.o flac.o
|
|
|
|
OBJS-$(CONFIG_FLAC_ENCODER) += flacenc.o flacdata.o flacencdsp.o
|
|
|
|
OBJS-$(CONFIG_FLASHSV_DECODER) += flashsv.o
|
|
|
|
OBJS-$(CONFIG_FLASHSV_ENCODER) += flashsvenc.o
|
|
|
|
OBJS-$(CONFIG_FLASHSV2_ENCODER) += flashsv2enc.o
|
|
|
|
OBJS-$(CONFIG_FLASHSV2_DECODER) += flashsv.o
|
|
|
|
OBJS-$(CONFIG_FLIC_DECODER) += flicvideo.o
|
|
|
|
OBJS-$(CONFIG_FLV_DECODER) += flvdec.o
|
|
|
|
OBJS-$(CONFIG_FLV_ENCODER) += flvenc.o
|
|
|
|
OBJS-$(CONFIG_FMVC_DECODER) += fmvc.o
|
|
|
|
OBJS-$(CONFIG_FOURXM_DECODER) += 4xm.o
|
|
|
|
OBJS-$(CONFIG_FRAPS_DECODER) += fraps.o
|
|
|
|
OBJS-$(CONFIG_FRWU_DECODER) += frwu.o
|
|
|
|
OBJS-$(CONFIG_FTR_DECODER) += ftr.o
|
|
|
|
OBJS-$(CONFIG_G2M_DECODER) += g2meet.o elsdec.o mjpegdec_common.o
|
|
|
|
OBJS-$(CONFIG_G723_1_DECODER) += g723_1dec.o g723_1.o \
|
|
|
|
acelp_vectors.o celp_filters.o celp_math.o
|
|
|
|
OBJS-$(CONFIG_G723_1_ENCODER) += g723_1enc.o g723_1.o \
|
|
|
|
acelp_vectors.o celp_filters.o celp_math.o
|
|
|
|
OBJS-$(CONFIG_G729_DECODER) += g729dec.o lsp.o celp_math.o celp_filters.o acelp_filters.o acelp_pitch_delay.o acelp_vectors.o g729postfilter.o
|
|
|
|
OBJS-$(CONFIG_GDV_DECODER) += gdv.o
|
|
|
|
OBJS-$(CONFIG_GEM_DECODER) += gemdec.o
|
|
|
|
OBJS-$(CONFIG_GIF_DECODER) += gifdec.o lzw.o
|
|
|
|
OBJS-$(CONFIG_GIF_ENCODER) += gif.o lzwenc.o
|
|
|
|
OBJS-$(CONFIG_GREMLIN_DPCM_DECODER) += dpcm.o
|
|
|
|
OBJS-$(CONFIG_GSM_DECODER) += gsmdec.o gsmdec_data.o msgsmdec.o
|
|
|
|
OBJS-$(CONFIG_GSM_MS_DECODER) += gsmdec.o gsmdec_data.o msgsmdec.o
|
|
|
|
OBJS-$(CONFIG_H261_DECODER) += h261dec.o h261data.o h261.o
|
|
|
|
OBJS-$(CONFIG_H261_ENCODER) += h261enc.o h261data.o h261.o
|
|
|
|
OBJS-$(CONFIG_H263_DECODER) += h263dec.o h263.o ituh263dec.o \
|
|
|
|
mpeg4video.o mpeg4videodec.o \
|
|
|
|
h263data.o
|
|
|
|
OBJS-$(CONFIG_H263I_DECODER) += intelh263dec.o
|
|
|
|
OBJS-$(CONFIG_H263_ENCODER) += mpeg4video.o \
|
|
|
|
h263.o ituh263enc.o h263data.o
|
|
|
|
OBJS-$(CONFIG_H263_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
|
|
|
OBJS-$(CONFIG_H263_V4L2M2M_ENCODER) += v4l2_m2m_enc.o
|
|
|
|
OBJS-$(CONFIG_H264_DECODER) += h264dec.o h264_cabac.o h264_cavlc.o \
|
|
|
|
h264_direct.o h264_loopfilter.o \
|
|
|
|
h264_mb.o h264_picture.o \
|
|
|
|
h264_refs.o \
|
avcodec/h274: add film grain synthesis routine
This could arguably also be a vf, but I decided to put it here since
decoders are technically required to apply film grain during the output
step, and I would rather want to avoid requiring users insert the
correct film grain synthesis filter on their own.
The code, while in C, is written in a way that unrolls/vectorizes fairly
well under -O3, and is reasonably cache friendly. On my CPU, a single
thread pushes about 400 FPS at 1080p.
Apart from hand-written assembly, one possible avenue of improvement
would be to change the access order to compute the grain row-by-row
rather than in 8x8 blocks. This requires some redundant PRNG calls, but
would make the algorithm more cache-oblivious.
The implementation has been written to the wording of SMPTE RDD 5-2006
as faithfully as I can manage. However, apart from passing a visual
inspection, no guarantee of correctness can be made due to the lack of
any publicly available reference implementation against which to
compare it.
Signed-off-by: Niklas Haas <git@haasn.dev>
Signed-off-by: James Almer <jamrial@gmail.com>
3 years ago
|
|
|
h264_slice.o h264data.o h274.o
|
|
|
|
OBJS-$(CONFIG_H264_AMF_ENCODER) += amfenc_h264.o
|
|
|
|
OBJS-$(CONFIG_H264_CUVID_DECODER) += cuviddec.o
|
|
|
|
OBJS-$(CONFIG_H264_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_H264_MEDIACODEC_ENCODER) += mediacodecenc.o
|
|
|
|
OBJS-$(CONFIG_H264_MF_ENCODER) += mfenc.o mf_utils.o
|
|
|
|
OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o
|
|
|
|
OBJS-$(CONFIG_H264_NVENC_ENCODER) += nvenc_h264.o nvenc.o
|
|
|
|
OBJS-$(CONFIG_H264_OMX_ENCODER) += omx.o
|
|
|
|
OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o
|
|
|
|
OBJS-$(CONFIG_H264_RKMPP_DECODER) += rkmppdec.o
|
|
|
|
OBJS-$(CONFIG_H264_VAAPI_ENCODER) += vaapi_encode_h264.o h264_levels.o \
|
|
|
|
h2645data.o hw_base_encode_h264.o
|
|
|
|
OBJS-$(CONFIG_H264_VULKAN_ENCODER) += vulkan_encode.o vulkan_encode_h264.o \
|
|
|
|
hw_base_encode.o hw_base_encode_h264.o \
|
|
|
|
h264_levels.o h2645data.o
|
|
|
|
OBJS-$(CONFIG_H264_VIDEOTOOLBOX_ENCODER) += videotoolboxenc.o
|
|
|
|
OBJS-$(CONFIG_H264_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
|
|
|
OBJS-$(CONFIG_H264_V4L2M2M_ENCODER) += v4l2_m2m_enc.o
|
|
|
|
OBJS-$(CONFIG_HAP_DECODER) += hapdec.o hap.o
|
|
|
|
OBJS-$(CONFIG_HAP_ENCODER) += hapenc.o hap.o
|
|
|
|
OBJS-$(CONFIG_HCA_DECODER) += hcadec.o
|
|
|
|
OBJS-$(CONFIG_HCOM_DECODER) += hcom.o
|
|
|
|
OBJS-$(CONFIG_HDR_DECODER) += hdrdec.o
|
|
|
|
OBJS-$(CONFIG_HDR_ENCODER) += hdrenc.o
|
|
|
|
OBJS-$(CONFIG_HEVC_DECODER) += aom_film_grain.o h274.o container_fifo.o
|
|
|
|
OBJS-$(CONFIG_HEVC_AMF_ENCODER) += amfenc_hevc.o
|
|
|
|
OBJS-$(CONFIG_HEVC_CUVID_DECODER) += cuviddec.o
|
|
|
|
OBJS-$(CONFIG_HEVC_D3D12VA_ENCODER) += d3d12va_encode_hevc.o h265_profile_level.o \
|
|
|
|
h2645data.o
|
|
|
|
OBJS-$(CONFIG_HEVC_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_HEVC_MEDIACODEC_ENCODER) += mediacodecenc.o
|
|
|
|
OBJS-$(CONFIG_HEVC_MF_ENCODER) += mfenc.o mf_utils.o
|
|
|
|
OBJS-$(CONFIG_HEVC_NVENC_ENCODER) += nvenc_hevc.o nvenc.o
|
|
|
|
OBJS-$(CONFIG_HEVC_QSV_DECODER) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc/ps_enc.o
|
|
|
|
OBJS-$(CONFIG_HEVC_RKMPP_DECODER) += rkmppdec.o
|
|
|
|
OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o h265_profile_level.o \
|
|
|
|
h2645data.o hw_base_encode_h265.o
|
|
|
|
OBJS-$(CONFIG_HEVC_VULKAN_ENCODER) += vulkan_encode.o vulkan_encode_h265.o \
|
|
|
|
hw_base_encode.o hw_base_encode_h265.o \
|
|
|
|
h265_profile_level.o h2645data.o
|
|
|
|
OBJS-$(CONFIG_HEVC_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
|
|
|
OBJS-$(CONFIG_HEVC_V4L2M2M_ENCODER) += v4l2_m2m_enc.o
|
|
|
|
OBJS-$(CONFIG_HEVC_VIDEOTOOLBOX_ENCODER) += videotoolboxenc.o
|
|
|
|
OBJS-$(CONFIG_HNM4_VIDEO_DECODER) += hnm4video.o
|
|
|
|
OBJS-$(CONFIG_HQ_HQA_DECODER) += hq_hqa.o hq_hqadsp.o canopus.o
|
|
|
|
OBJS-$(CONFIG_HQX_DECODER) += hqx.o hqxvlc.o hqxdsp.o canopus.o
|
|
|
|
OBJS-$(CONFIG_HUFFYUV_DECODER) += huffyuv.o huffyuvdec.o
|
|
|
|
OBJS-$(CONFIG_HUFFYUV_ENCODER) += huffyuv.o huffyuvenc.o
|
|
|
|
OBJS-$(CONFIG_HYMT_DECODER) += huffyuv.o huffyuvdec.o
|
|
|
|
OBJS-$(CONFIG_IDCIN_DECODER) += idcinvideo.o
|
|
|
|
OBJS-$(CONFIG_IDF_DECODER) += bintext.o cga_data.o
|
|
|
|
OBJS-$(CONFIG_IFF_ILBM_DECODER) += iff.o
|
|
|
|
OBJS-$(CONFIG_ILBC_DECODER) += ilbcdec.o
|
|
|
|
OBJS-$(CONFIG_IMC_DECODER) += imc.o
|
|
|
|
OBJS-$(CONFIG_IMM4_DECODER) += imm4.o
|
|
|
|
OBJS-$(CONFIG_IMM5_DECODER) += imm5.o
|
|
|
|
OBJS-$(CONFIG_INDEO2_DECODER) += indeo2.o
|
|
|
|
OBJS-$(CONFIG_INDEO3_DECODER) += indeo3.o
|
|
|
|
OBJS-$(CONFIG_INDEO4_DECODER) += indeo4.o ivi.o
|
|
|
|
OBJS-$(CONFIG_INDEO5_DECODER) += indeo5.o ivi.o
|
|
|
|
OBJS-$(CONFIG_INTERPLAY_ACM_DECODER) += interplayacm.o
|
|
|
|
OBJS-$(CONFIG_INTERPLAY_DPCM_DECODER) += dpcm.o
|
|
|
|
OBJS-$(CONFIG_INTERPLAY_VIDEO_DECODER) += interplayvideo.o
|
|
|
|
OBJS-$(CONFIG_IPU_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_JACOSUB_DECODER) += jacosubdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_JPEG2000_ENCODER) += j2kenc.o mqcenc.o mqc.o jpeg2000.o \
|
|
|
|
jpeg2000dwt.o
|
|
|
|
OBJS-$(CONFIG_JPEG2000_DECODER) += jpeg2000dec.o jpeg2000.o jpeg2000dsp.o \
|
|
|
|
jpeg2000dwt.o mqcdec.o mqc.o jpeg2000htdec.o
|
|
|
|
OBJS-$(CONFIG_JPEGLS_DECODER) += jpeglsdec.o jpegls.o
|
|
|
|
OBJS-$(CONFIG_JPEGLS_ENCODER) += jpeglsenc.o jpegls.o
|
|
|
|
OBJS-$(CONFIG_JV_DECODER) += jvdec.o
|
|
|
|
OBJS-$(CONFIG_KGV1_DECODER) += kgv1dec.o
|
|
|
|
OBJS-$(CONFIG_KMVC_DECODER) += kmvc.o
|
|
|
|
OBJS-$(CONFIG_LAGARITH_DECODER) += lagarith.o lagarithrac.o
|
|
|
|
OBJS-$(CONFIG_LEAD_DECODER) += leaddec.o jpegquanttables.o
|
|
|
|
OBJS-$(CONFIG_LJPEG_ENCODER) += ljpegenc.o mjpegenc_common.o
|
|
|
|
OBJS-$(CONFIG_LOCO_DECODER) += loco.o
|
|
|
|
OBJS-$(CONFIG_LSCR_DECODER) += lscrdec.o png.o pngdec.o pngdsp.o
|
|
|
|
OBJS-$(CONFIG_M101_DECODER) += m101.o
|
|
|
|
OBJS-$(CONFIG_MACE3_DECODER) += mace.o
|
|
|
|
OBJS-$(CONFIG_MACE6_DECODER) += mace.o
|
|
|
|
OBJS-$(CONFIG_MAGICYUV_DECODER) += magicyuv.o
|
|
|
|
OBJS-$(CONFIG_MAGICYUV_ENCODER) += magicyuvenc.o
|
|
|
|
OBJS-$(CONFIG_MDEC_DECODER) += mdec.o mpeg12.o mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_MEDIA100_DECODER) += mjpegbdec.o
|
|
|
|
OBJS-$(CONFIG_METASOUND_DECODER) += metasound.o twinvq.o
|
|
|
|
OBJS-$(CONFIG_MICRODVD_DECODER) += microdvddec.o ass.o
|
|
|
|
OBJS-$(CONFIG_MIMIC_DECODER) += mimic.o
|
|
|
|
OBJS-$(CONFIG_MISC4_DECODER) += misc4.o
|
|
|
|
OBJS-$(CONFIG_MJPEG_DECODER) += mjpegdec.o mjpegdec_common.o
|
|
|
|
OBJS-$(CONFIG_MJPEG_QSV_DECODER) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_MJPEG_ENCODER) += mjpegenc.o mjpegenc_common.o \
|
|
|
|
mjpegenc_huffman.o
|
|
|
|
OBJS-$(CONFIG_MJPEGB_DECODER) += mjpegbdec.o
|
|
|
|
OBJS-$(CONFIG_MJPEG_CUVID_DECODER) += cuviddec.o
|
|
|
|
OBJS-$(CONFIG_MJPEG_QSV_ENCODER) += qsvenc_jpeg.o
|
|
|
|
OBJS-$(CONFIG_MJPEG_VAAPI_ENCODER) += vaapi_encode_mjpeg.o
|
|
|
|
OBJS-$(CONFIG_MLP_DECODER) += mlpdec.o mlpdsp.o
|
|
|
|
OBJS-$(CONFIG_MLP_ENCODER) += mlpenc.o mlp.o
|
|
|
|
OBJS-$(CONFIG_MMVIDEO_DECODER) += mmvideo.o
|
|
|
|
OBJS-$(CONFIG_MOBICLIP_DECODER) += mobiclip.o
|
|
|
|
OBJS-$(CONFIG_MOTIONPIXELS_DECODER) += motionpixels.o
|
|
|
|
OBJS-$(CONFIG_MOVTEXT_DECODER) += movtextdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_MOVTEXT_ENCODER) += movtextenc.o ass_split.o
|
|
|
|
OBJS-$(CONFIG_MP1_DECODER) += mpegaudiodec_fixed.o
|
|
|
|
OBJS-$(CONFIG_MP1FLOAT_DECODER) += mpegaudiodec_float.o
|
|
|
|
OBJS-$(CONFIG_MP2_DECODER) += mpegaudiodec_fixed.o
|
|
|
|
OBJS-$(CONFIG_MP2_ENCODER) += mpegaudioenc_float.o mpegaudio.o \
|
|
|
|
mpegaudiodata.o mpegaudiodsp_data.o \
|
|
|
|
mpegaudiotabs.o
|
|
|
|
OBJS-$(CONFIG_MP2FIXED_ENCODER) += mpegaudioenc_fixed.o mpegaudio.o \
|
|
|
|
mpegaudiodata.o mpegaudiodsp_data.o \
|
|
|
|
mpegaudiotabs.o
|
|
|
|
OBJS-$(CONFIG_MP2FLOAT_DECODER) += mpegaudiodec_float.o
|
|
|
|
OBJS-$(CONFIG_MP3_DECODER) += mpegaudiodec_fixed.o
|
|
|
|
OBJS-$(CONFIG_MP3_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_MP3_MF_ENCODER) += mfenc.o mf_utils.o
|
|
|
|
OBJS-$(CONFIG_MP3ADU_DECODER) += mpegaudiodec_fixed.o
|
|
|
|
OBJS-$(CONFIG_MP3ADUFLOAT_DECODER) += mpegaudiodec_float.o
|
|
|
|
OBJS-$(CONFIG_MP3FLOAT_DECODER) += mpegaudiodec_float.o
|
|
|
|
OBJS-$(CONFIG_MP3ON4_DECODER) += mpegaudiodec_fixed.o
|
|
|
|
OBJS-$(CONFIG_MP3ON4FLOAT_DECODER) += mpegaudiodec_float.o
|
|
|
|
OBJS-$(CONFIG_MPC7_DECODER) += mpc7.o mpc.o
|
|
|
|
OBJS-$(CONFIG_MPC8_DECODER) += mpc8.o mpc.o
|
|
|
|
OBJS-$(CONFIG_MPEGVIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_MPEG1VIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_MPEG1VIDEO_ENCODER) += mpeg12enc.o mpeg12.o
|
|
|
|
OBJS-$(CONFIG_MPEG1_CUVID_DECODER) += cuviddec.o
|
|
|
|
OBJS-$(CONFIG_MPEG1_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_MMAL_DECODER) += mmaldec.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_QSV_DECODER) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_QSV_ENCODER) += qsvenc_mpeg2.o
|
|
|
|
OBJS-$(CONFIG_MPEG2VIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_MPEG2VIDEO_ENCODER) += mpeg12enc.o mpeg12.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_CUVID_DECODER) += cuviddec.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_VAAPI_ENCODER) += vaapi_encode_mpeg2.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_DECODER) += mpeg4videodsp.o xvididct.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_ENCODER) += mpeg4videoenc.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_CUVID_DECODER) += cuviddec.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_MEDIACODEC_ENCODER) += mediacodecenc.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_OMX_ENCODER) += omx.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_V4L2M2M_ENCODER) += v4l2_m2m_enc.o
|
|
|
|
OBJS-$(CONFIG_MPL2_DECODER) += mpl2dec.o ass.o
|
|
|
|
OBJS-$(CONFIG_MSA1_DECODER) += mss3.o
|
|
|
|
OBJS-$(CONFIG_MSCC_DECODER) += mscc.o
|
|
|
|
OBJS-$(CONFIG_MSNSIREN_DECODER) += siren.o
|
|
|
|
OBJS-$(CONFIG_MSP2_DECODER) += msp2dec.o
|
|
|
|
OBJS-$(CONFIG_MSRLE_ENCODER) += msrleenc.o
|
|
|
|
OBJS-$(CONFIG_MSRLE_DECODER) += msrle.o msrledec.o
|
|
|
|
OBJS-$(CONFIG_MSS1_DECODER) += mss1.o mss12.o
|
|
|
|
OBJS-$(CONFIG_MSS2_DECODER) += mss2.o mss12.o mss2dsp.o wmv2data.o
|
|
|
|
OBJS-$(CONFIG_MSVIDEO1_DECODER) += msvideo1.o
|
|
|
|
OBJS-$(CONFIG_MSVIDEO1_ENCODER) += msvideo1enc.o elbg.o
|
|
|
|
OBJS-$(CONFIG_MSZH_DECODER) += lcldec.o
|
|
|
|
OBJS-$(CONFIG_MTS2_DECODER) += mss4.o
|
|
|
|
OBJS-$(CONFIG_MV30_DECODER) += mv30.o
|
|
|
|
OBJS-$(CONFIG_MVC1_DECODER) += mvcdec.o
|
|
|
|
OBJS-$(CONFIG_MVC2_DECODER) += mvcdec.o
|
|
|
|
OBJS-$(CONFIG_MVDV_DECODER) += midivid.o
|
|
|
|
OBJS-$(CONFIG_MVHA_DECODER) += mvha.o
|
|
|
|
OBJS-$(CONFIG_MWSC_DECODER) += mwsc.o
|
|
|
|
OBJS-$(CONFIG_MXPEG_DECODER) += mxpegdec.o
|
|
|
|
OBJS-$(CONFIG_NELLYMOSER_DECODER) += nellymoserdec.o nellymoser.o
|
|
|
|
OBJS-$(CONFIG_NELLYMOSER_ENCODER) += nellymoserenc.o nellymoser.o
|
|
|
|
OBJS-$(CONFIG_NOTCHLC_DECODER) += notchlc.o
|
|
|
|
OBJS-$(CONFIG_NUV_DECODER) += nuv.o rtjpeg.o jpegquanttables.o
|
|
|
|
OBJS-$(CONFIG_ON2AVC_DECODER) += on2avc.o on2avcdata.o
|
|
|
|
OBJS-$(CONFIG_OPUS_DECODER) += vorbis_data.o
|
|
|
|
OBJS-$(CONFIG_OSQ_DECODER) += osq.o
|
|
|
|
OBJS-$(CONFIG_PAF_AUDIO_DECODER) += pafaudio.o
|
|
|
|
OBJS-$(CONFIG_PAF_VIDEO_DECODER) += pafvideo.o
|
|
|
|
OBJS-$(CONFIG_PAM_DECODER) += pnmdec.o pnm.o
|
|
|
|
OBJS-$(CONFIG_PAM_ENCODER) += pamenc.o
|
|
|
|
OBJS-$(CONFIG_PBM_DECODER) += pnmdec.o pnm.o
|
|
|
|
OBJS-$(CONFIG_PBM_ENCODER) += pnmenc.o
|
|
|
|
OBJS-$(CONFIG_PCX_DECODER) += pcx.o
|
|
|
|
OBJS-$(CONFIG_PCX_ENCODER) += pcxenc.o
|
|
|
|
OBJS-$(CONFIG_PDV_DECODER) += pdvdec.o
|
|
|
|
OBJS-$(CONFIG_PFM_DECODER) += pnmdec.o pnm.o
|
|
|
|
OBJS-$(CONFIG_PFM_ENCODER) += pnmenc.o
|
|
|
|
OBJS-$(CONFIG_PGM_DECODER) += pnmdec.o pnm.o
|
|
|
|
OBJS-$(CONFIG_PGM_ENCODER) += pnmenc.o
|
|
|
|
OBJS-$(CONFIG_PGMYUV_DECODER) += pnmdec.o pnm.o
|
|
|
|
OBJS-$(CONFIG_PGMYUV_ENCODER) += pnmenc.o
|
|
|
|
OBJS-$(CONFIG_PGSSUB_DECODER) += pgssubdec.o
|
|
|
|
OBJS-$(CONFIG_PGX_DECODER) += pgxdec.o
|
|
|
|
OBJS-$(CONFIG_PHM_DECODER) += pnmdec.o pnm.o half2float.o
|
|
|
|
OBJS-$(CONFIG_PHM_ENCODER) += pnmenc.o float2half.o
|
|
|
|
OBJS-$(CONFIG_PHOTOCD_DECODER) += photocd.o
|
|
|
|
OBJS-$(CONFIG_PICTOR_DECODER) += pictordec.o cga_data.o
|
|
|
|
OBJS-$(CONFIG_PIXLET_DECODER) += pixlet.o
|
|
|
|
OBJS-$(CONFIG_PJS_DECODER) += textdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_PNG_DECODER) += png.o pngdec.o pngdsp.o
|
|
|
|
OBJS-$(CONFIG_PNG_ENCODER) += png.o pngenc.o
|
|
|
|
OBJS-$(CONFIG_PPM_DECODER) += pnmdec.o pnm.o
|
|
|
|
OBJS-$(CONFIG_PPM_ENCODER) += pnmenc.o
|
|
|
|
OBJS-$(CONFIG_PRORES_DECODER) += proresdec.o proresdsp.o proresdata.o
|
|
|
|
OBJS-$(CONFIG_PRORES_ENCODER) += proresenc_anatoliy.o proresdata.o
|
|
|
|
OBJS-$(CONFIG_PRORES_AW_ENCODER) += proresenc_anatoliy.o proresdata.o
|
|
|
|
OBJS-$(CONFIG_PRORES_KS_ENCODER) += proresenc_kostya.o proresdata.o
|
|
|
|
OBJS-$(CONFIG_PRORES_VIDEOTOOLBOX_ENCODER) += videotoolboxenc.o
|
|
|
|
OBJS-$(CONFIG_PROSUMER_DECODER) += prosumer.o
|
|
|
|
OBJS-$(CONFIG_PSD_DECODER) += psd.o
|
|
|
|
OBJS-$(CONFIG_PTX_DECODER) += ptx.o
|
|
|
|
OBJS-$(CONFIG_QCELP_DECODER) += qcelpdec.o \
|
|
|
|
celp_filters.o acelp_vectors.o \
|
|
|
|
acelp_filters.o
|
|
|
|
OBJS-$(CONFIG_QDM2_DECODER) += qdm2.o
|
|
|
|
OBJS-$(CONFIG_QDMC_DECODER) += qdmc.o
|
|
|
|
OBJS-$(CONFIG_QDRAW_DECODER) += qdrw.o
|
|
|
|
OBJS-$(CONFIG_QOA_DECODER) += qoadec.o
|
|
|
|
OBJS-$(CONFIG_QOI_DECODER) += qoidec.o
|
|
|
|
OBJS-$(CONFIG_QOI_ENCODER) += qoienc.o
|
|
|
|
OBJS-$(CONFIG_QPEG_DECODER) += qpeg.o
|
|
|
|
OBJS-$(CONFIG_QTRLE_DECODER) += qtrle.o
|
|
|
|
OBJS-$(CONFIG_QTRLE_ENCODER) += qtrleenc.o
|
|
|
|
OBJS-$(CONFIG_R10K_DECODER) += r210dec.o
|
|
|
|
OBJS-$(CONFIG_R10K_ENCODER) += r210enc.o
|
|
|
|
OBJS-$(CONFIG_R210_DECODER) += r210dec.o
|
|
|
|
OBJS-$(CONFIG_R210_ENCODER) += r210enc.o
|
|
|
|
OBJS-$(CONFIG_RA_144_DECODER) += ra144dec.o ra144.o celp_filters.o
|
|
|
|
OBJS-$(CONFIG_RA_144_ENCODER) += ra144enc.o ra144.o celp_filters.o
|
|
|
|
OBJS-$(CONFIG_RA_288_DECODER) += ra288.o celp_filters.o
|
|
|
|
OBJS-$(CONFIG_RALF_DECODER) += ralf.o
|
|
|
|
OBJS-$(CONFIG_RASC_DECODER) += rasc.o
|
|
|
|
OBJS-$(CONFIG_RAWVIDEO_DECODER) += rawdec.o
|
|
|
|
OBJS-$(CONFIG_RAWVIDEO_ENCODER) += rawenc.o
|
|
|
|
OBJS-$(CONFIG_REALTEXT_DECODER) += realtextdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_RKA_DECODER) += rka.o
|
|
|
|
OBJS-$(CONFIG_RL2_DECODER) += rl2.o
|
|
|
|
OBJS-$(CONFIG_ROQ_DECODER) += roqvideodec.o roqvideo.o
|
|
|
|
OBJS-$(CONFIG_ROQ_ENCODER) += roqvideoenc.o roqvideo.o elbg.o
|
|
|
|
OBJS-$(CONFIG_ROQ_DPCM_DECODER) += dpcm.o
|
|
|
|
OBJS-$(CONFIG_ROQ_DPCM_ENCODER) += roqaudioenc.o
|
|
|
|
OBJS-$(CONFIG_RPZA_DECODER) += rpza.o
|
|
|
|
OBJS-$(CONFIG_RPZA_ENCODER) += rpzaenc.o
|
|
|
|
OBJS-$(CONFIG_RSCC_DECODER) += rscc.o
|
|
|
|
OBJS-$(CONFIG_RTV1_DECODER) += rtv1.o
|
|
|
|
OBJS-$(CONFIG_RV10_DECODER) += rv10.o
|
|
|
|
OBJS-$(CONFIG_RV10_ENCODER) += rv10enc.o
|
|
|
|
OBJS-$(CONFIG_RV20_DECODER) += rv10.o
|
|
|
|
OBJS-$(CONFIG_RV20_ENCODER) += rv20enc.o
|
|
|
|
OBJS-$(CONFIG_RV30_DECODER) += rv30.o rv34.o rv30dsp.o
|
|
|
|
OBJS-$(CONFIG_RV40_DECODER) += rv40.o rv34.o rv40dsp.o
|
|
|
|
OBJS-$(CONFIG_SAMI_DECODER) += samidec.o ass.o htmlsubtitles.o
|
|
|
|
OBJS-$(CONFIG_S302M_DECODER) += s302m.o
|
|
|
|
OBJS-$(CONFIG_S302M_ENCODER) += s302menc.o
|
|
|
|
OBJS-$(CONFIG_SANM_DECODER) += sanm.o
|
|
|
|
OBJS-$(CONFIG_SCPR_DECODER) += scpr.o
|
|
|
|
OBJS-$(CONFIG_SCREENPRESSO_DECODER) += screenpresso.o
|
|
|
|
OBJS-$(CONFIG_SDX2_DPCM_DECODER) += dpcm.o
|
|
|
|
OBJS-$(CONFIG_SGA_DECODER) += sga.o
|
|
|
|
OBJS-$(CONFIG_SGI_DECODER) += sgidec.o
|
|
|
|
OBJS-$(CONFIG_SGI_ENCODER) += sgienc.o rle.o
|
|
|
|
OBJS-$(CONFIG_SGIRLE_DECODER) += sgirledec.o
|
|
|
|
OBJS-$(CONFIG_SHEERVIDEO_DECODER) += sheervideo.o
|
|
|
|
OBJS-$(CONFIG_SHORTEN_DECODER) += shorten.o
|
|
|
|
OBJS-$(CONFIG_SIPR_DECODER) += sipr.o acelp_pitch_delay.o \
|
|
|
|
celp_math.o acelp_vectors.o \
|
|
|
|
acelp_filters.o celp_filters.o \
|
|
|
|
sipr16k.o
|
|
|
|
OBJS-$(CONFIG_SIREN_DECODER) += siren.o
|
|
|
|
OBJS-$(CONFIG_SIMBIOSIS_IMX_DECODER) += imx.o
|
|
|
|
OBJS-$(CONFIG_SMACKAUD_DECODER) += smacker.o
|
|
|
|
OBJS-$(CONFIG_SMACKER_DECODER) += smacker.o
|
|
|
|
OBJS-$(CONFIG_SMC_DECODER) += smc.o
|
|
|
|
OBJS-$(CONFIG_SMC_ENCODER) += smcenc.o
|
|
|
|
OBJS-$(CONFIG_SNOW_DECODER) += snowdec.o snow.o snow_dwt.o
|
|
|
|
OBJS-$(CONFIG_SNOW_ENCODER) += snowenc.o snow.o snow_dwt.o \
|
|
|
|
h263.o h263data.o ituh263enc.o
|
|
|
|
OBJS-$(CONFIG_SOL_DPCM_DECODER) += dpcm.o
|
|
|
|
OBJS-$(CONFIG_SONIC_DECODER) += sonic.o
|
|
|
|
OBJS-$(CONFIG_SONIC_ENCODER) += sonic.o
|
|
|
|
OBJS-$(CONFIG_SONIC_LS_ENCODER) += sonic.o
|
|
|
|
OBJS-$(CONFIG_SPEEDHQ_DECODER) += speedhqdec.o speedhq.o mpeg12.o \
|
|
|
|
mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_SPEEDHQ_ENCODER) += speedhq.o mpeg12data.o mpeg12enc.o speedhqenc.o
|
|
|
|
OBJS-$(CONFIG_SPEEX_DECODER) += speexdec.o
|
|
|
|
OBJS-$(CONFIG_SP5X_DECODER) += sp5xdec.o
|
|
|
|
OBJS-$(CONFIG_SRGC_DECODER) += mscc.o
|
|
|
|
OBJS-$(CONFIG_SRT_DECODER) += srtdec.o ass.o htmlsubtitles.o
|
|
|
|
OBJS-$(CONFIG_SRT_ENCODER) += srtenc.o ass_split.o
|
|
|
|
OBJS-$(CONFIG_STL_DECODER) += textdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_SUBRIP_DECODER) += srtdec.o ass.o htmlsubtitles.o
|
|
|
|
OBJS-$(CONFIG_SUBRIP_ENCODER) += srtenc.o ass_split.o
|
|
|
|
OBJS-$(CONFIG_SUBVIEWER1_DECODER) += textdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_SUBVIEWER_DECODER) += subviewerdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_SUNRAST_DECODER) += sunrast.o
|
|
|
|
OBJS-$(CONFIG_SUNRAST_ENCODER) += sunrastenc.o
|
|
|
|
OBJS-$(CONFIG_LIBRSVG_DECODER) += librsvgdec.o
|
|
|
|
OBJS-$(CONFIG_SBC_DECODER) += sbcdec.o sbcdec_data.o sbc.o
|
|
|
|
OBJS-$(CONFIG_SBC_ENCODER) += sbcenc.o sbc.o sbcdsp.o sbcdsp_data.o
|
|
|
|
OBJS-$(CONFIG_SVQ1_DECODER) += svq1dec.o svq1.o h263data.o
|
|
|
|
OBJS-$(CONFIG_SVQ1_ENCODER) += svq1enc.o svq1.o h263data.o \
|
|
|
|
h263.o ituh263enc.o
|
|
|
|
OBJS-$(CONFIG_SVQ3_DECODER) += svq3.o mpegutils.o h264data.o
|
|
|
|
OBJS-$(CONFIG_TEXT_DECODER) += textdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_TEXT_ENCODER) += srtenc.o ass_split.o
|
|
|
|
OBJS-$(CONFIG_TAK_DECODER) += takdec.o tak.o takdsp.o
|
|
|
|
OBJS-$(CONFIG_TARGA_DECODER) += targa.o
|
|
|
|
OBJS-$(CONFIG_TARGA_ENCODER) += targaenc.o rle.o
|
|
|
|
OBJS-$(CONFIG_TARGA_Y216_DECODER) += targa_y216dec.o
|
|
|
|
OBJS-$(CONFIG_TDSC_DECODER) += tdsc.o
|
|
|
|
OBJS-$(CONFIG_TIERTEXSEQVIDEO_DECODER) += tiertexseqv.o
|
|
|
|
OBJS-$(CONFIG_TIFF_DECODER) += tiff.o lzw.o faxcompr.o tiff_common.o
|
|
|
|
OBJS-$(CONFIG_TIFF_ENCODER) += tiffenc.o rle.o lzwenc.o
|
|
|
|
OBJS-$(CONFIG_TMV_DECODER) += tmv.o cga_data.o
|
|
|
|
OBJS-$(CONFIG_TRUEHD_DECODER) += mlpdec.o mlpdsp.o
|
|
|
|
OBJS-$(CONFIG_TRUEHD_ENCODER) += mlpenc.o mlp.o
|
|
|
|
OBJS-$(CONFIG_TRUEMOTION1_DECODER) += truemotion1.o
|
|
|
|
OBJS-$(CONFIG_TRUEMOTION2_DECODER) += truemotion2.o
|
|
|
|
OBJS-$(CONFIG_TRUEMOTION2RT_DECODER) += truemotion2rt.o
|
|
|
|
OBJS-$(CONFIG_TRUESPEECH_DECODER) += truespeech.o
|
|
|
|
OBJS-$(CONFIG_TSCC_DECODER) += tscc.o msrledec.o
|
|
|
|
OBJS-$(CONFIG_TSCC2_DECODER) += tscc2.o
|
|
|
|
OBJS-$(CONFIG_TTA_DECODER) += tta.o ttadata.o ttadsp.o
|
|
|
|
OBJS-$(CONFIG_TTA_ENCODER) += ttaenc.o ttaencdsp.o ttadata.o
|
|
|
|
OBJS-$(CONFIG_TTML_ENCODER) += ttmlenc.o ass_split.o
|
|
|
|
OBJS-$(CONFIG_TWINVQ_DECODER) += twinvqdec.o twinvq.o
|
|
|
|
OBJS-$(CONFIG_TXD_DECODER) += txd.o
|
|
|
|
OBJS-$(CONFIG_ULTI_DECODER) += ulti.o
|
|
|
|
OBJS-$(CONFIG_UTVIDEO_DECODER) += utvideodec.o utvideodsp.o
|
|
|
|
OBJS-$(CONFIG_UTVIDEO_ENCODER) += utvideoenc.o
|
|
|
|
OBJS-$(CONFIG_V210_DECODER) += v210dec.o
|
|
|
|
OBJS-$(CONFIG_V210_ENCODER) += v210enc.o
|
|
|
|
OBJS-$(CONFIG_V210X_DECODER) += v210x.o
|
|
|
|
OBJS-$(CONFIG_V308_DECODER) += v308dec.o
|
|
|
|
OBJS-$(CONFIG_V308_ENCODER) += v308enc.o
|
|
|
|
OBJS-$(CONFIG_V408_DECODER) += v408dec.o
|
|
|
|
OBJS-$(CONFIG_V408_ENCODER) += v408enc.o
|
|
|
|
OBJS-$(CONFIG_V410_DECODER) += v410dec.o
|
|
|
|
OBJS-$(CONFIG_V410_ENCODER) += v410enc.o
|
|
|
|
OBJS-$(CONFIG_VB_DECODER) += vb.o
|
|
|
|
OBJS-$(CONFIG_VBN_DECODER) += vbndec.o
|
|
|
|
OBJS-$(CONFIG_VBN_ENCODER) += vbnenc.o
|
|
|
|
OBJS-$(CONFIG_VBLE_DECODER) += vble.o
|
|
|
|
OBJS-$(CONFIG_VC1_DECODER) += vc1dec.o vc1_block.o vc1_loopfilter.o \
|
|
|
|
vc1_mc.o vc1_pred.o vc1.o vc1data.o \
|
|
|
|
msmpeg4_vc1_data.o wmv2data.o
|
|
|
|
OBJS-$(CONFIG_VC1_CUVID_DECODER) += cuviddec.o
|
|
|
|
OBJS-$(CONFIG_VC1_MMAL_DECODER) += mmaldec.o
|
|
|
|
OBJS-$(CONFIG_VC1_QSV_DECODER) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_VC1_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
avcodec: add a native SMPTE VC-2 HQ encoder
This commit adds a new encoder capable of creating BBC/SMPTE Dirac/VC-2 HQ
profile files.
Dirac is a wavelet based codec created by the BBC a little more than 10
years ago. Since then, wavelets have mostly gone out of style as they
did not provide adequate encoding gains at lower bitrates. Dirac was a
fully featured video codec equipped with perceptual masking, support for
most popular pixel formats, interlacing, overlapped-block motion
compensation, and other features. It found new life after being stripped
of various features and standardized as the VC-2 codec by the SMPTE with
an extra profile, the HQ profile that this encoder supports, added.
The HQ profile was based off of the Low-Delay profile previously
existing in Dirac. The profile forbids DC prediction and arithmetic
coding to focus on high performance and low delay at higher bitrates.
The standard bitrates for this profile vary but generally 1:4
compression is expected (~525 Mbps vs the 2200 Mbps for uncompressed
1080p50). The codec only supports I-frames, hence the high bitrates.
The structure of this encoder is simple: do a DWT transform on the
entire image, split it into multiple slices (specified by the user) and
encode them in parallel. All of the slices are of the same size, making
rate control and threading very trivial. Although only in C, this encoder
is capable of 30 frames per second on an 4 core 8 threads Ivy Bridge.
A lookup table is used to encode most of the coefficients.
No code was used from the GSoC encoder from 2007 except for the 2
transform functions in diracenc_transforms.c. All other code was written
from scratch.
This encoder outperforms any other encoders in quality, usability and in
features. Other existing implementations do not support 4 level
transforms or 64x64 blocks (slices), which greatly increase compression.
As previously said, the codec is meant for broadcasting, hence support
for non-broadcasting image widths, heights, bit depths, aspect ratios,
etc. are limited by the "level". Although this codec supports a few
chroma subsamplings (420, 422, 444), signalling those is generally
outside the specifications of the level used (3) and the reference
decoder will outright refuse to read any image with such a flag
signalled (it only supports 1920x1080 yuv422p10). However, most
implementations will happily read files with alternate dimensions,
framerates and formats signalled.
Therefore, in order to encode files other than 1080p50 yuv422p10le, you
need to provide an "-strict -2" argument to the command line. The FFmpeg
decoder will happily read any files made with non-standard parameters,
dimensions and subsamplings, and so will other implementations. IMO this
should be "-strict -1", but I'll leave that up for discussion.
There are still plenty of stuff to implement, for instance 5 more
wavelet transforms are still in the specs and supported by the decoder.
The encoder can be lossless, given a high enough bitrate.
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
9 years ago
|
|
|
OBJS-$(CONFIG_VC2_ENCODER) += vc2enc.o vc2enc_dwt.o diractab.o
|
|
|
|
OBJS-$(CONFIG_VCR1_DECODER) += vcr1.o
|
|
|
|
OBJS-$(CONFIG_VMDAUDIO_DECODER) += vmdaudio.o
|
|
|
|
OBJS-$(CONFIG_VMDVIDEO_DECODER) += vmdvideo.o
|
|
|
|
OBJS-$(CONFIG_VMIX_DECODER) += vmixdec.o
|
|
|
|
OBJS-$(CONFIG_VMNC_DECODER) += vmnc.o
|
|
|
|
OBJS-$(CONFIG_VNULL_DECODER) += null.o
|
|
|
|
OBJS-$(CONFIG_VNULL_ENCODER) += null.o
|
|
|
|
OBJS-$(CONFIG_VORBIS_DECODER) += vorbisdec.o vorbisdsp.o vorbis.o \
|
|
|
|
vorbis_data.o
|
|
|
|
OBJS-$(CONFIG_VORBIS_ENCODER) += vorbisenc.o vorbis.o \
|
|
|
|
vorbis_data.o
|
|
|
|
OBJS-$(CONFIG_VP3_DECODER) += vp3.o jpegquanttables.o
|
|
|
|
OBJS-$(CONFIG_VP5_DECODER) += vp5.o vp56.o vp56data.o vpx_rac.o
|
|
|
|
OBJS-$(CONFIG_VP6_DECODER) += vp6.o vp56.o vp56data.o \
|
|
|
|
vp6dsp.o vpx_rac.o
|
|
|
|
OBJS-$(CONFIG_VP7_DECODER) += vp8.o vp8data.o vpx_rac.o
|
|
|
|
OBJS-$(CONFIG_VP8_DECODER) += vp8.o vp8data.o vpx_rac.o
|
|
|
|
OBJS-$(CONFIG_VP8_CUVID_DECODER) += cuviddec.o
|
|
|
|
OBJS-$(CONFIG_VP8_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_VP8_MEDIACODEC_ENCODER) += mediacodecenc.o
|
|
|
|
OBJS-$(CONFIG_VP8_QSV_DECODER) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_VP8_RKMPP_DECODER) += rkmppdec.o
|
|
|
|
OBJS-$(CONFIG_VP8_VAAPI_ENCODER) += vaapi_encode_vp8.o
|
|
|
|
OBJS-$(CONFIG_VP8_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
|
|
|
OBJS-$(CONFIG_VP8_V4L2M2M_ENCODER) += v4l2_m2m_enc.o
|
|
|
|
OBJS-$(CONFIG_VP9_DECODER) += vp9.o vp9data.o vp9dsp.o vp9lpf.o vp9recon.o \
|
|
|
|
vp9block.o vp9prob.o vp9mvs.o vpx_rac.o \
|
|
|
|
vp9dsp_8bpp.o vp9dsp_10bpp.o vp9dsp_12bpp.o
|
|
|
|
OBJS-$(CONFIG_VP9_CUVID_DECODER) += cuviddec.o
|
|
|
|
OBJS-$(CONFIG_VP9_MEDIACODEC_DECODER) += mediacodecdec.o
|
|
|
|
OBJS-$(CONFIG_VP9_MEDIACODEC_ENCODER) += mediacodecenc.o
|
|
|
|
OBJS-$(CONFIG_VP9_RKMPP_DECODER) += rkmppdec.o
|
|
|
|
OBJS-$(CONFIG_VP9_VAAPI_ENCODER) += vaapi_encode_vp9.o
|
|
|
|
OBJS-$(CONFIG_VP9_QSV_ENCODER) += qsvenc_vp9.o
|
|
|
|
OBJS-$(CONFIG_VPLAYER_DECODER) += textdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_VP9_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
|
|
|
OBJS-$(CONFIG_VQA_DECODER) += vqavideo.o
|
|
|
|
OBJS-$(CONFIG_VQC_DECODER) += vqcdec.o
|
|
|
|
OBJS-$(CONFIG_WADY_DPCM_DECODER) += dpcm.o
|
|
|
|
OBJS-$(CONFIG_WAVARC_DECODER) += wavarc.o
|
|
|
|
OBJS-$(CONFIG_WAVPACK_DECODER) += wavpack.o wavpackdata.o dsd.o
|
|
|
|
OBJS-$(CONFIG_WAVPACK_ENCODER) += wavpackdata.o wavpackenc.o
|
|
|
|
OBJS-$(CONFIG_WBMP_DECODER) += wbmpdec.o
|
|
|
|
OBJS-$(CONFIG_WBMP_ENCODER) += wbmpenc.o
|
|
|
|
OBJS-$(CONFIG_WCMV_DECODER) += wcmv.o
|
|
|
|
OBJS-$(CONFIG_WEBP_DECODER) += webp.o
|
|
|
|
OBJS-$(CONFIG_WEBVTT_DECODER) += webvttdec.o ass.o
|
|
|
|
OBJS-$(CONFIG_WEBVTT_ENCODER) += webvttenc.o ass_split.o
|
|
|
|
OBJS-$(CONFIG_WMALOSSLESS_DECODER) += wmalosslessdec.o wma_common.o
|
|
|
|
OBJS-$(CONFIG_WMAPRO_DECODER) += wmaprodec.o wma.o wma_common.o
|
|
|
|
OBJS-$(CONFIG_WMAV1_DECODER) += wmadec.o wma.o wma_common.o aactab.o
|
|
|
|
OBJS-$(CONFIG_WMAV1_ENCODER) += wmaenc.o wma.o wma_common.o aactab.o
|
|
|
|
OBJS-$(CONFIG_WMAV2_DECODER) += wmadec.o wma.o wma_common.o aactab.o
|
|
|
|
OBJS-$(CONFIG_WMAV2_ENCODER) += wmaenc.o wma.o wma_common.o aactab.o
|
|
|
|
OBJS-$(CONFIG_WMAVOICE_DECODER) += wmavoice.o \
|
|
|
|
celp_filters.o \
|
|
|
|
acelp_vectors.o acelp_filters.o
|
|
|
|
OBJS-$(CONFIG_WMV2_DECODER) += wmv2dec.o wmv2.o wmv2data.o
|
|
|
|
OBJS-$(CONFIG_WMV2_ENCODER) += wmv2enc.o wmv2.o wmv2data.o
|
|
|
|
OBJS-$(CONFIG_WNV1_DECODER) += wnv1.o
|
|
|
|
OBJS-$(CONFIG_WRAPPED_AVFRAME_DECODER) += wrapped_avframe.o
|
|
|
|
OBJS-$(CONFIG_WRAPPED_AVFRAME_ENCODER) += wrapped_avframe.o
|
|
|
|
OBJS-$(CONFIG_WS_SND1_DECODER) += ws-snd1.o
|
|
|
|
OBJS-$(CONFIG_XAN_DPCM_DECODER) += dpcm.o
|
|
|
|
OBJS-$(CONFIG_XAN_WC3_DECODER) += xan.o
|
|
|
|
OBJS-$(CONFIG_XAN_WC4_DECODER) += xxan.o
|
|
|
|
OBJS-$(CONFIG_XBIN_DECODER) += bintext.o cga_data.o
|
|
|
|
OBJS-$(CONFIG_XBM_DECODER) += xbmdec.o
|
|
|
|
OBJS-$(CONFIG_XBM_ENCODER) += xbmenc.o
|
|
|
|
OBJS-$(CONFIG_XFACE_DECODER) += xfacedec.o xface.o
|
|
|
|
OBJS-$(CONFIG_XFACE_ENCODER) += xfaceenc.o xface.o
|
|
|
|
OBJS-$(CONFIG_XL_DECODER) += xl.o
|
|
|
|
OBJS-$(CONFIG_XMA1_DECODER) += wmaprodec.o wma.o wma_common.o
|
|
|
|
OBJS-$(CONFIG_XMA2_DECODER) += wmaprodec.o wma.o wma_common.o
|
|
|
|
OBJS-$(CONFIG_XPM_DECODER) += xpmdec.o
|
|
|
|
OBJS-$(CONFIG_XSUB_DECODER) += xsubdec.o
|
|
|
|
OBJS-$(CONFIG_XSUB_ENCODER) += xsubenc.o
|
|
|
|
OBJS-$(CONFIG_XWD_DECODER) += xwddec.o
|
|
|
|
OBJS-$(CONFIG_XWD_ENCODER) += xwdenc.o
|
|
|
|
OBJS-$(CONFIG_Y41P_DECODER) += y41pdec.o
|
|
|
|
OBJS-$(CONFIG_Y41P_ENCODER) += y41penc.o
|
|
|
|
OBJS-$(CONFIG_YLC_DECODER) += ylc.o
|
|
|
|
OBJS-$(CONFIG_YOP_DECODER) += yop.o
|
|
|
|
OBJS-$(CONFIG_YUV4_DECODER) += yuv4dec.o
|
|
|
|
OBJS-$(CONFIG_YUV4_ENCODER) += yuv4enc.o
|
|
|
|
OBJS-$(CONFIG_ZEROCODEC_DECODER) += zerocodec.o
|
|
|
|
OBJS-$(CONFIG_ZLIB_DECODER) += lcldec.o
|
|
|
|
OBJS-$(CONFIG_ZLIB_ENCODER) += lclenc.o
|
|
|
|
OBJS-$(CONFIG_ZMBV_DECODER) += zmbv.o
|
|
|
|
OBJS-$(CONFIG_ZMBV_ENCODER) += zmbvenc.o
|
|
|
|
|
|
|
|
# (AD)PCM decoders/encoders
|
|
|
|
OBJS-$(CONFIG_PCM_ALAW_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_ALAW_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_BLURAY_ENCODER) += pcm-blurayenc.o
|
|
|
|
OBJS-$(CONFIG_PCM_BLURAY_DECODER) += pcm-bluray.o
|
|
|
|
OBJS-$(CONFIG_PCM_DVD_DECODER) += pcm-dvd.o
|
|
|
|
OBJS-$(CONFIG_PCM_DVD_ENCODER) += pcm-dvdenc.o
|
|
|
|
OBJS-$(CONFIG_PCM_F16LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_F24LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_F32BE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_F32BE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_F32LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_F32LE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_F64BE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_F64BE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_F64LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_F64LE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_LXF_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_MULAW_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_MULAW_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S8_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S8_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S8_PLANAR_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S8_PLANAR_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S16BE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S16BE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S16BE_PLANAR_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S16BE_PLANAR_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S16LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S16LE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S16LE_PLANAR_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S16LE_PLANAR_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S24BE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S24BE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S24DAUD_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S24DAUD_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S24LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S24LE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S24LE_PLANAR_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S24LE_PLANAR_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S32BE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S32BE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S32LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S32LE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S32LE_PLANAR_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S32LE_PLANAR_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S64BE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S64BE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S64LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_S64LE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_SGA_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U8_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U8_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U16BE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U16BE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U16LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U16LE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U24BE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U24BE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U24LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U24LE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U32BE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U32BE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U32LE_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_U32LE_ENCODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_VIDC_DECODER) += pcm.o
|
|
|
|
OBJS-$(CONFIG_PCM_VIDC_ENCODER) += pcm.o
|
|
|
|
|
|
|
|
OBJS-$(CONFIG_ADPCM_4XM_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_ADX_DECODER) += adxdec.o adx.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_ADX_ENCODER) += adxenc.o adx.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_AFC_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_AGM_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_AICA_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_ARGO_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_ARGO_ENCODER) += adpcm.o adpcm_data.o adpcmenc.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_CT_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_DTK_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_EA_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_EA_MAXIS_XA_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_EA_R1_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_EA_R2_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_EA_R3_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_EA_XAS_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_G722_DECODER) += g722.o g722dsp.o g722dec.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_G722_ENCODER) += g722.o g722dsp.o g722enc.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_G726_DECODER) += g726.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_G726_ENCODER) += g726.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_G726LE_DECODER) += g726.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_G726LE_ENCODER) += g726.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_ACORN_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_AMV_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_AMV_ENCODER) += adpcmenc.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_ALP_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_ALP_ENCODER) += adpcmenc.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_APC_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_APM_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_APM_ENCODER) += adpcmenc.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_CUNNING_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_DAT4_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_DK3_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_DK4_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_EA_EACS_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_EA_SEAD_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_ISS_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_MOFLEX_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_MTF_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_OKI_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_QT_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_QT_ENCODER) += adpcmenc.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_RAD_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_SSI_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_SSI_ENCODER) += adpcmenc.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_SMJPEG_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_WAV_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_WAV_ENCODER) += adpcmenc.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_WS_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_WS_ENCODER) += adpcmenc.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_MS_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_MS_ENCODER) += adpcmenc.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_MTAF_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_PSX_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_SBPRO_2_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_SBPRO_3_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_SBPRO_4_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_SWF_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_SWF_ENCODER) += adpcmenc.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_THP_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_THP_LE_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_VIMA_DECODER) += vima.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_XA_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_XMD_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_YAMAHA_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_YAMAHA_ENCODER) += adpcmenc.o adpcm_data.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_ZORK_DECODER) += adpcm.o adpcm_data.o
|
|
|
|
|
|
|
|
# hardware accelerators
|
|
|
|
OBJS-$(CONFIG_D3D11VA) += dxva2.o
|
|
|
|
OBJS-$(CONFIG_D3D12VA) += dxva2.o d3d12va_decode.o
|
|
|
|
OBJS-$(CONFIG_DXVA2) += dxva2.o
|
|
|
|
OBJS-$(CONFIG_NVDEC) += nvdec.o
|
|
|
|
OBJS-$(CONFIG_VAAPI) += vaapi_decode.o
|
|
|
|
OBJS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.o
|
|
|
|
OBJS-$(CONFIG_VDPAU) += vdpau.o
|
|
|
|
OBJS-$(CONFIG_VULKAN) += vulkan.o vulkan_video.o
|
|
|
|
|
|
|
|
OBJS-$(CONFIG_AV1_D3D11VA_HWACCEL) += dxva2_av1.o
|
|
|
|
OBJS-$(CONFIG_AV1_DXVA2_HWACCEL) += dxva2_av1.o
|
|
|
|
OBJS-$(CONFIG_AV1_D3D12VA_HWACCEL) += dxva2_av1.o d3d12va_av1.o
|
|
|
|
OBJS-$(CONFIG_AV1_NVDEC_HWACCEL) += nvdec_av1.o
|
|
|
|
OBJS-$(CONFIG_AV1_VAAPI_HWACCEL) += vaapi_av1.o
|
|
|
|
OBJS-$(CONFIG_AV1_VDPAU_HWACCEL) += vdpau_av1.o
|
|
|
|
OBJS-$(CONFIG_AV1_VULKAN_HWACCEL) += vulkan_decode.o vulkan_av1.o
|
|
|
|
OBJS-$(CONFIG_H263_VAAPI_HWACCEL) += vaapi_mpeg4.o
|
|
|
|
OBJS-$(CONFIG_H263_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o
|
|
|
|
OBJS-$(CONFIG_H264_D3D11VA_HWACCEL) += dxva2_h264.o
|
|
|
|
OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o
|
|
|
|
OBJS-$(CONFIG_H264_D3D12VA_HWACCEL) += dxva2_h264.o d3d12va_h264.o
|
|
|
|
OBJS-$(CONFIG_H264_NVDEC_HWACCEL) += nvdec_h264.o
|
|
|
|
OBJS-$(CONFIG_H264_QSV_HWACCEL) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o
|
|
|
|
OBJS-$(CONFIG_H264_VDPAU_HWACCEL) += vdpau_h264.o
|
|
|
|
OBJS-$(CONFIG_H264_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o
|
|
|
|
OBJS-$(CONFIG_H264_VULKAN_HWACCEL) += vulkan_decode.o vulkan_h264.o
|
|
|
|
OBJS-$(CONFIG_HEVC_D3D11VA_HWACCEL) += dxva2_hevc.o
|
|
|
|
OBJS-$(CONFIG_HEVC_DXVA2_HWACCEL) += dxva2_hevc.o
|
|
|
|
OBJS-$(CONFIG_HEVC_D3D12VA_HWACCEL) += dxva2_hevc.o d3d12va_hevc.o
|
|
|
|
OBJS-$(CONFIG_HEVC_NVDEC_HWACCEL) += nvdec_hevc.o
|
|
|
|
OBJS-$(CONFIG_HEVC_QSV_HWACCEL) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_HEVC_VAAPI_HWACCEL) += vaapi_hevc.o h265_profile_level.o
|
|
|
|
OBJS-$(CONFIG_HEVC_VDPAU_HWACCEL) += vdpau_hevc.o h265_profile_level.o
|
|
|
|
OBJS-$(CONFIG_HEVC_VULKAN_HWACCEL) += vulkan_decode.o vulkan_hevc.o
|
|
|
|
OBJS-$(CONFIG_MJPEG_NVDEC_HWACCEL) += nvdec_mjpeg.o
|
|
|
|
OBJS-$(CONFIG_MJPEG_VAAPI_HWACCEL) += vaapi_mjpeg.o
|
|
|
|
OBJS-$(CONFIG_MPEG1_NVDEC_HWACCEL) += nvdec_mpeg12.o
|
|
|
|
OBJS-$(CONFIG_MPEG1_VDPAU_HWACCEL) += vdpau_mpeg12.o
|
|
|
|
OBJS-$(CONFIG_MPEG1_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_D3D11VA_HWACCEL) += dxva2_mpeg2.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_DXVA2_HWACCEL) += dxva2_mpeg2.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_D3D12VA_HWACCEL) += dxva2_mpeg2.o d3d12va_mpeg2.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_NVDEC_HWACCEL) += nvdec_mpeg12.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_QSV_HWACCEL) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_VAAPI_HWACCEL) += vaapi_mpeg2.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_VDPAU_HWACCEL) += vdpau_mpeg12.o
|
|
|
|
OBJS-$(CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_NVDEC_HWACCEL) += nvdec_mpeg4.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_VAAPI_HWACCEL) += vaapi_mpeg4.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_VDPAU_HWACCEL) += vdpau_mpeg4.o
|
|
|
|
OBJS-$(CONFIG_MPEG4_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o
|
|
|
|
OBJS-$(CONFIG_VC1_D3D11VA_HWACCEL) += dxva2_vc1.o
|
|
|
|
OBJS-$(CONFIG_VC1_DXVA2_HWACCEL) += dxva2_vc1.o
|
|
|
|
OBJS-$(CONFIG_VC1_D3D12VA_HWACCEL) += dxva2_vc1.o d3d12va_vc1.o
|
|
|
|
OBJS-$(CONFIG_VC1_NVDEC_HWACCEL) += nvdec_vc1.o
|
|
|
|
OBJS-$(CONFIG_VC1_QSV_HWACCEL) += qsvdec.o
|
|
|
|
OBJS-$(CONFIG_VC1_VAAPI_HWACCEL) += vaapi_vc1.o
|
|
|
|
OBJS-$(CONFIG_VC1_VDPAU_HWACCEL) += vdpau_vc1.o
|
|
|
|
OBJS-$(CONFIG_VP8_NVDEC_HWACCEL) += nvdec_vp8.o
|
|
|
|
OBJS-$(CONFIG_VP8_VAAPI_HWACCEL) += vaapi_vp8.o
|
|
|
|
OBJS-$(CONFIG_VP9_D3D11VA_HWACCEL) += dxva2_vp9.o
|
|
|
|
OBJS-$(CONFIG_VP9_DXVA2_HWACCEL) += dxva2_vp9.o
|
|
|
|
OBJS-$(CONFIG_VP9_D3D12VA_HWACCEL) += dxva2_vp9.o d3d12va_vp9.o
|
|
|
|
OBJS-$(CONFIG_VP9_NVDEC_HWACCEL) += nvdec_vp9.o
|
|
|
|
OBJS-$(CONFIG_VP9_VAAPI_HWACCEL) += vaapi_vp9.o
|
|
|
|
OBJS-$(CONFIG_VP9_VDPAU_HWACCEL) += vdpau_vp9.o
|
|
|
|
OBJS-$(CONFIG_VP9_VIDEOTOOLBOX_HWACCEL) += videotoolbox_vp9.o
|
|
|
|
OBJS-$(CONFIG_VP8_QSV_HWACCEL) += qsvdec.o
|
|
|
|
|
|
|
|
# Objects duplicated from other libraries for shared builds
|
|
|
|
SHLIBOBJS += log2_tab.o reverse.o
|
|
|
|
|
|
|
|
# General libavformat dependencies
|
|
|
|
OBJS-$(CONFIG_FITS_DEMUXER) += fits.o
|
|
|
|
OBJS-$(CONFIG_TAK_DEMUXER) += tak.o
|
|
|
|
|
|
|
|
# libavformat dependencies for static builds
|
|
|
|
STLIBOBJS-$(CONFIG_AVFORMAT) += to_upper4.o
|
|
|
|
STLIBOBJS-$(CONFIG_ISO_MEDIA) += mpegaudiotabs.o
|
|
|
|
STLIBOBJS-$(CONFIG_FLV_MUXER) += mpeg4audio_sample_rates.o
|
|
|
|
STLIBOBJS-$(CONFIG_HLS_DEMUXER) += ac3_channel_layout_tab.o
|
|
|
|
STLIBOBJS-$(CONFIG_IMAGE_JPEGXL_PIPE_DEMUXER) += jpegxl_parse.o
|
|
|
|
STLIBOBJS-$(CONFIG_JNI) += ffjni.o
|
|
|
|
STLIBOBJS-$(CONFIG_JPEGXL_ANIM_DEMUXER) += jpegxl_parse.o
|
|
|
|
STLIBOBJS-$(CONFIG_MATROSKA_DEMUXER) += mpeg4audio_sample_rates.o
|
|
|
|
STLIBOBJS-$(CONFIG_MOV_DEMUXER) += ac3_channel_layout_tab.o
|
|
|
|
STLIBOBJS-$(CONFIG_MXF_MUXER) += golomb.o
|
|
|
|
STLIBOBJS-$(CONFIG_MP3_MUXER) += mpegaudiotabs.o
|
|
|
|
STLIBOBJS-$(CONFIG_NUT_MUXER) += mpegaudiotabs.o
|
|
|
|
STLIBOBJS-$(CONFIG_RTPDEC) += jpegtables.o
|
|
|
|
STLIBOBJS-$(CONFIG_RTP_MUXER) += golomb.o jpegtables.o \
|
|
|
|
mpeg4audio_sample_rates.o
|
|
|
|
STLIBOBJS-$(CONFIG_SPDIF_MUXER) += dca_sample_rate_tab.o
|
|
|
|
|
|
|
|
# libavfilter dependencies
|
|
|
|
OBJS-$(CONFIG_ELBG_FILTER) += elbg.o
|
|
|
|
|
|
|
|
# external codec libraries
|
|
|
|
OBJS-$(CONFIG_AAC_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_AC3_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_ADPCM_IMA_QT_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_ALAC_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_AMR_NB_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_EAC3_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_GSM_MS_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_ILBC_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_MP1_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_MP2_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_MP3_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_PCM_MULAW_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_PCM_ALAW_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_QDMC_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_QDM2_AT_DECODER) += audiotoolboxdec.o
|
|
|
|
OBJS-$(CONFIG_AAC_AT_ENCODER) += audiotoolboxenc.o
|
|
|
|
OBJS-$(CONFIG_ALAC_AT_ENCODER) += audiotoolboxenc.o
|
|
|
|
OBJS-$(CONFIG_ILBC_AT_ENCODER) += audiotoolboxenc.o
|
|
|
|
OBJS-$(CONFIG_PCM_ALAW_AT_ENCODER) += audiotoolboxenc.o
|
|
|
|
OBJS-$(CONFIG_PCM_MULAW_AT_ENCODER) += audiotoolboxenc.o
|
|
|
|
OBJS-$(CONFIG_LIBAOM_AV1_DECODER) += libaomdec.o libaom.o
|
|
|
|
OBJS-$(CONFIG_LIBAOM_AV1_ENCODER) += libaomenc.o libaom.o
|
|
|
|
OBJS-$(CONFIG_LIBARIBB24_DECODER) += libaribb24.o ass.o
|
|
|
|
OBJS-$(CONFIG_LIBARIBCAPTION_DECODER) += libaribcaption.o ass.o
|
|
|
|
OBJS-$(CONFIG_LIBCELT_DECODER) += libcelt_dec.o
|
|
|
|
OBJS-$(CONFIG_LIBCODEC2_DECODER) += libcodec2.o
|
|
|
|
OBJS-$(CONFIG_LIBCODEC2_ENCODER) += libcodec2.o
|
|
|
|
OBJS-$(CONFIG_LIBDAV1D_DECODER) += libdav1d.o av1_parse.o
|
|
|
|
OBJS-$(CONFIG_LIBDAVS2_DECODER) += libdavs2.o
|
|
|
|
OBJS-$(CONFIG_LIBFDK_AAC_DECODER) += libfdk-aacdec.o
|
|
|
|
OBJS-$(CONFIG_LIBFDK_AAC_ENCODER) += libfdk-aacenc.o
|
|
|
|
OBJS-$(CONFIG_LIBGSM_DECODER) += libgsmdec.o
|
|
|
|
OBJS-$(CONFIG_LIBGSM_ENCODER) += libgsmenc.o
|
|
|
|
OBJS-$(CONFIG_LIBGSM_MS_DECODER) += libgsmdec.o
|
|
|
|
OBJS-$(CONFIG_LIBGSM_MS_ENCODER) += libgsmenc.o
|
|
|
|
OBJS-$(CONFIG_LIBILBC_DECODER) += libilbc.o
|
|
|
|
OBJS-$(CONFIG_LIBILBC_ENCODER) += libilbc.o
|
|
|
|
OBJS-$(CONFIG_LIBJXL_DECODER) += libjxldec.o libjxl.o
|
|
|
|
OBJS-$(CONFIG_LIBJXL_ENCODER) += libjxlenc.o libjxl.o
|
|
|
|
OBJS-$(CONFIG_LIBKVAZAAR_ENCODER) += libkvazaar.o
|
|
|
|
OBJS-$(CONFIG_LIBLC3_ENCODER) += liblc3enc.o
|
|
|
|
OBJS-$(CONFIG_LIBLC3_DECODER) += liblc3dec.o
|
|
|
|
OBJS-$(CONFIG_LIBMP3LAME_ENCODER) += libmp3lame.o
|
|
|
|
OBJS-$(CONFIG_LIBOPENCORE_AMRNB_DECODER) += libopencore-amr.o
|
|
|
|
OBJS-$(CONFIG_LIBOPENCORE_AMRNB_ENCODER) += libopencore-amr.o
|
|
|
|
OBJS-$(CONFIG_LIBOPENCORE_AMRWB_DECODER) += libopencore-amr.o
|
|
|
|
OBJS-$(CONFIG_LIBOPENH264_DECODER) += libopenh264dec.o libopenh264.o
|
|
|
|
OBJS-$(CONFIG_LIBOPENH264_ENCODER) += libopenh264enc.o libopenh264.o
|
|
|
|
OBJS-$(CONFIG_LIBOPENJPEG_ENCODER) += libopenjpegenc.o
|
|
|
|
OBJS-$(CONFIG_LIBOPUS_DECODER) += libopusdec.o libopus.o \
|
|
|
|
vorbis_data.o
|
|
|
|
OBJS-$(CONFIG_LIBOPUS_ENCODER) += libopusenc.o libopus.o \
|
|
|
|
vorbis_data.o
|
|
|
|
OBJS-$(CONFIG_LIBRAV1E_ENCODER) += librav1e.o
|
|
|
|
OBJS-$(CONFIG_LIBSHINE_ENCODER) += libshine.o
|
|
|
|
OBJS-$(CONFIG_LIBSPEEX_DECODER) += libspeexdec.o
|
|
|
|
OBJS-$(CONFIG_LIBSPEEX_ENCODER) += libspeexenc.o
|
|
|
|
OBJS-$(CONFIG_LIBSVTAV1_ENCODER) += libsvtav1.o
|
|
|
|
OBJS-$(CONFIG_LIBTHEORA_ENCODER) += libtheoraenc.o
|
|
|
|
OBJS-$(CONFIG_LIBTWOLAME_ENCODER) += libtwolame.o
|
|
|
|
OBJS-$(CONFIG_LIBUAVS3D_DECODER) += libuavs3d.o
|
|
|
|
OBJS-$(CONFIG_LIBVO_AMRWBENC_ENCODER) += libvo-amrwbenc.o
|
|
|
|
OBJS-$(CONFIG_LIBVORBIS_DECODER) += libvorbisdec.o
|
|
|
|
OBJS-$(CONFIG_LIBVORBIS_ENCODER) += libvorbisenc.o \
|
|
|
|
vorbis_data.o
|
|
|
|
OBJS-$(CONFIG_LIBVPX_VP8_DECODER) += libvpxdec.o
|
|
|
|
OBJS-$(CONFIG_LIBVPX_VP8_ENCODER) += libvpxenc.o
|
|
|
|
OBJS-$(CONFIG_LIBVPX_VP9_DECODER) += libvpxdec.o
|
|
|
|
OBJS-$(CONFIG_LIBVPX_VP9_ENCODER) += libvpxenc.o
|
|
|
|
OBJS-$(CONFIG_LIBVVENC_ENCODER) += libvvenc.o
|
|
|
|
OBJS-$(CONFIG_LIBWEBP_ENCODER) += libwebpenc_common.o libwebpenc.o
|
|
|
|
OBJS-$(CONFIG_LIBWEBP_ANIM_ENCODER) += libwebpenc_common.o libwebpenc_animencoder.o
|
|
|
|
OBJS-$(CONFIG_LIBX262_ENCODER) += libx264.o
|
|
|
|
OBJS-$(CONFIG_LIBX264_ENCODER) += libx264.o
|
|
|
|
OBJS-$(CONFIG_LIBX265_ENCODER) += libx265.o
|
|
|
|
OBJS-$(CONFIG_LIBXAVS_ENCODER) += libxavs.o
|
|
|
|
OBJS-$(CONFIG_LIBXAVS2_ENCODER) += libxavs2.o
|
|
|
|
OBJS-$(CONFIG_LIBXEVD_DECODER) += libxevd.o
|
|
|
|
OBJS-$(CONFIG_LIBXEVE_ENCODER) += libxeve.o
|
|
|
|
OBJS-$(CONFIG_LIBXVID_ENCODER) += libxvid.o
|
|
|
|
OBJS-$(CONFIG_LIBZVBI_TELETEXT_DECODER) += libzvbi-teletextdec.o ass.o
|
|
|
|
|
|
|
|
# parsers
|
|
|
|
OBJS-$(CONFIG_AAC_LATM_PARSER) += latm_parser.o
|
|
|
|
OBJS-$(CONFIG_AAC_PARSER) += aac_parser.o aac_ac3_parser.o
|
|
|
|
OBJS-$(CONFIG_AC3_PARSER) += aac_ac3_parser.o ac3tab.o \
|
|
|
|
ac3_channel_layout_tab.o
|
|
|
|
OBJS-$(CONFIG_ADX_PARSER) += adx_parser.o
|
|
|
|
OBJS-$(CONFIG_AMR_PARSER) += amr_parser.o
|
|
|
|
OBJS-$(CONFIG_AV1_PARSER) += av1_parser.o av1_parse.o
|
|
|
|
OBJS-$(CONFIG_AVS2_PARSER) += avs2.o avs2_parser.o
|
|
|
|
OBJS-$(CONFIG_AVS3_PARSER) += avs3_parser.o
|
|
|
|
OBJS-$(CONFIG_BMP_PARSER) += bmp_parser.o
|
|
|
|
OBJS-$(CONFIG_CAVSVIDEO_PARSER) += cavs_parser.o
|
|
|
|
OBJS-$(CONFIG_COOK_PARSER) += cook_parser.o
|
|
|
|
OBJS-$(CONFIG_CRI_PARSER) += cri_parser.o
|
|
|
|
OBJS-$(CONFIG_DCA_PARSER) += dca_parser.o dca_exss.o dca.o \
|
|
|
|
dca_sample_rate_tab.o
|
|
|
|
OBJS-$(CONFIG_DIRAC_PARSER) += dirac_parser.o
|
|
|
|
OBJS-$(CONFIG_DNXHD_PARSER) += dnxhd_parser.o dnxhddata.o
|
|
|
|
OBJS-$(CONFIG_DOLBY_E_PARSER) += dolby_e_parser.o dolby_e_parse.o
|
|
|
|
OBJS-$(CONFIG_DPX_PARSER) += dpx_parser.o
|
|
|
|
OBJS-$(CONFIG_DVAUDIO_PARSER) += dvaudio_parser.o
|
|
|
|
OBJS-$(CONFIG_DVBSUB_PARSER) += dvbsub_parser.o
|
|
|
|
OBJS-$(CONFIG_DVD_NAV_PARSER) += dvd_nav_parser.o
|
|
|
|
OBJS-$(CONFIG_DVDSUB_PARSER) += dvdsub_parser.o
|
|
|
|
OBJS-$(CONFIG_EVC_PARSER) += evc_parser.o
|
|
|
|
OBJS-$(CONFIG_FLAC_PARSER) += flac_parser.o flacdata.o flac.o
|
|
|
|
OBJS-$(CONFIG_FTR_PARSER) += ftr_parser.o
|
|
|
|
OBJS-$(CONFIG_G723_1_PARSER) += g723_1_parser.o
|
|
|
|
OBJS-$(CONFIG_G729_PARSER) += g729_parser.o
|
|
|
|
OBJS-$(CONFIG_GIF_PARSER) += gif_parser.o
|
|
|
|
OBJS-$(CONFIG_GSM_PARSER) += gsm_parser.o
|
|
|
|
OBJS-$(CONFIG_H261_PARSER) += h261_parser.o
|
|
|
|
OBJS-$(CONFIG_H263_PARSER) += h263_parser.o
|
|
|
|
OBJS-$(CONFIG_H264_PARSER) += h264_parser.o h264data.o
|
|
|
|
OBJS-$(CONFIG_HDR_PARSER) += hdr_parser.o
|
|
|
|
OBJS-$(CONFIG_IPU_PARSER) += ipu_parser.o
|
|
|
|
OBJS-$(CONFIG_JPEG2000_PARSER) += jpeg2000_parser.o
|
|
|
|
OBJS-$(CONFIG_JPEGXL_PARSER) += jpegxl_parser.o jpegxl_parse.o
|
|
|
|
OBJS-$(CONFIG_MISC4_PARSER) += misc4_parser.o
|
|
|
|
OBJS-$(CONFIG_MJPEG_PARSER) += mjpeg_parser.o
|
|
|
|
OBJS-$(CONFIG_MLP_PARSER) += mlp_parse.o mlp_parser.o mlp.o
|
|
|
|
OBJS-$(CONFIG_MPEG4VIDEO_PARSER) += mpeg4video_parser.o h263.o \
|
|
|
|
mpeg4videodec.o mpeg4video.o \
|
|
|
|
ituh263dec.o h263dec.o h263data.o
|
|
|
|
OBJS-$(CONFIG_MPEGAUDIO_PARSER) += mpegaudio_parser.o
|
|
|
|
OBJS-$(CONFIG_MPEGVIDEO_PARSER) += mpegvideo_parser.o \
|
|
|
|
mpeg12.o mpeg12data.o
|
|
|
|
OBJS-$(CONFIG_OPUS_PARSER) += vorbis_data.o
|
|
|
|
OBJS-$(CONFIG_PNG_PARSER) += png_parser.o
|
|
|
|
OBJS-$(CONFIG_PNM_PARSER) += pnm_parser.o pnm.o
|
|
|
|
OBJS-$(CONFIG_QOI_PARSER) += qoi_parser.o
|
|
|
|
OBJS-$(CONFIG_RV34_PARSER) += rv34_parser.o
|
|
|
|
OBJS-$(CONFIG_SBC_PARSER) += sbc_parser.o
|
|
|
|
OBJS-$(CONFIG_SIPR_PARSER) += sipr_parser.o
|
|
|
|
OBJS-$(CONFIG_TAK_PARSER) += tak_parser.o tak.o
|
|
|
|
OBJS-$(CONFIG_VC1_PARSER) += vc1_parser.o vc1.o vc1data.o \
|
|
|
|
wmv2data.o
|
|
|
|
OBJS-$(CONFIG_VP3_PARSER) += vp3_parser.o
|
|
|
|
OBJS-$(CONFIG_VP8_PARSER) += vp8_parser.o
|
|
|
|
OBJS-$(CONFIG_VP9_PARSER) += vp9_parser.o
|
|
|
|
OBJS-$(CONFIG_VVC_PARSER) += vvc_parser.o
|
|
|
|
OBJS-$(CONFIG_WEBP_PARSER) += webp_parser.o
|
|
|
|
OBJS-$(CONFIG_XBM_PARSER) += xbm_parser.o
|
|
|
|
OBJS-$(CONFIG_XMA_PARSER) += xma_parser.o
|
|
|
|
OBJS-$(CONFIG_XWD_PARSER) += xwd_parser.o
|
|
|
|
|
|
|
|
# bitstream filters
|
|
|
|
include $(SRC_PATH)/libavcodec/bsf/Makefile
|
|
|
|
|
|
|
|
OBJS-$(CONFIG_EXTRACT_EXTRADATA_BSF) += av1_parse.o h2645_parse.o
|
|
|
|
OBJS-$(CONFIG_H264_METADATA_BSF) += h264_levels.o h2645data.o
|
|
|
|
OBJS-$(CONFIG_HAPQA_EXTRACT_BSF) += hap.o
|
|
|
|
OBJS-$(CONFIG_HEVC_METADATA_BSF) += h265_profile_level.o h2645data.o
|
|
|
|
OBJS-$(CONFIG_REMOVE_EXTRADATA_BSF) += av1_parse.o
|
|
|
|
OBJS-$(CONFIG_TRUEHD_CORE_BSF) += mlp_parse.o mlp.o
|
|
|
|
|
|
|
|
# thread libraries
|
|
|
|
OBJS-$(HAVE_LIBC_MSVCRT) += file_open.o
|
|
|
|
OBJS-$(HAVE_THREADS) += pthread.o pthread_slice.o pthread_frame.o
|
|
|
|
|
|
|
|
OBJS-$(CONFIG_FRAME_THREAD_ENCODER) += frame_thread_encoder.o
|
|
|
|
|
|
|
|
# Windows resource file
|
|
|
|
SHLIBOBJS-$(HAVE_GNU_WINDRES) += avcodecres.o
|
|
|
|
|
|
|
|
SKIPHEADERS += %_tablegen.h \
|
|
|
|
%_tables.h \
|
|
|
|
tableprint.h \
|
|
|
|
tableprint_vlc.h \
|
|
|
|
aaccoder_twoloop.h \
|
|
|
|
aaccoder_trellis.h \
|
|
|
|
aacenc_quantization.h \
|
|
|
|
aacenc_quantization_misc.h \
|
|
|
|
bitstream_template.h \
|
|
|
|
$(ARCH)/vpx_arith.h \
|
|
|
|
|
|
|
|
SKIPHEADERS-$(CONFIG_AMF) += amfenc.h
|
|
|
|
SKIPHEADERS-$(CONFIG_D3D11VA) += d3d11va.h dxva2_internal.h
|
|
|
|
SKIPHEADERS-$(CONFIG_D3D12VA) += d3d12va_decode.h d3d12va_encode.h
|
|
|
|
SKIPHEADERS-$(CONFIG_DXVA2) += dxva2.h dxva2_internal.h
|
|
|
|
SKIPHEADERS-$(CONFIG_JNI) += ffjni.h
|
|
|
|
SKIPHEADERS-$(CONFIG_LCMS2) += fflcms2.h
|
|
|
|
SKIPHEADERS-$(CONFIG_LIBAOM) += libaom.h
|
|
|
|
SKIPHEADERS-$(CONFIG_LIBJXL) += libjxl.h
|
|
|
|
SKIPHEADERS-$(CONFIG_LIBVPX) += libvpx.h
|
|
|
|
SKIPHEADERS-$(CONFIG_LIBWEBP_ENCODER) += libwebpenc_common.h
|
|
|
|
SKIPHEADERS-$(CONFIG_MEDIACODEC) += mediacodecdec_common.h mediacodec_surface.h mediacodec_wrapper.h mediacodec_sw_buffer.h
|
|
|
|
SKIPHEADERS-$(CONFIG_MEDIAFOUNDATION) += mf_utils.h
|
|
|
|
SKIPHEADERS-$(CONFIG_NVDEC) += nvdec.h
|
|
|
|
SKIPHEADERS-$(CONFIG_NVENC) += nvenc.h
|
|
|
|
SKIPHEADERS-$(CONFIG_QSV) += qsv.h qsv_internal.h
|
|
|
|
SKIPHEADERS-$(CONFIG_QSVENC) += qsvenc.h
|
|
|
|
SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_decode.h vaapi_hevc.h vaapi_encode.h
|
|
|
|
SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h vdpau_internal.h
|
|
|
|
SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.h vt_internal.h
|
|
|
|
SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_encode.h vulkan_decode.h
|
|
|
|
SKIPHEADERS-$(CONFIG_V4L2_M2M) += v4l2_buffers.h v4l2_context.h v4l2_m2m.h
|
|
|
|
SKIPHEADERS-$(CONFIG_ZLIB) += zlib_wrapper.h
|
|
|
|
|
|
|
|
TESTPROGS = avcodec \
|
|
|
|
avpacket \
|
|
|
|
bitstream_be \
|
|
|
|
bitstream_le \
|
|
|
|
celp_math \
|
|
|
|
codec_desc \
|
|
|
|
htmlsubtitles \
|
|
|
|
jpeg2000dwt \
|
|
|
|
mathops \
|
|
|
|
|
|
|
|
TESTPROGS-$(CONFIG_AV1_VAAPI_ENCODER) += av1_levels
|
|
|
|
TESTPROGS-$(CONFIG_CABAC) += cabac
|
|
|
|
TESTPROGS-$(CONFIG_GOLOMB) += golomb
|
|
|
|
TESTPROGS-$(CONFIG_IDCTDSP) += dct
|
|
|
|
TESTPROGS-$(CONFIG_IIRFILTER) += iirfilter
|
|
|
|
TESTPROGS-$(CONFIG_MJPEG_ENCODER) += mjpegenc_huffman
|
|
|
|
TESTPROGS-$(HAVE_MMX) += motion
|
|
|
|
TESTPROGS-$(CONFIG_MPEGVIDEO) += mpeg12framerate
|
|
|
|
TESTPROGS-$(CONFIG_H264_METADATA_BSF) += h264_levels
|
|
|
|
TESTPROGS-$(CONFIG_HEVC_METADATA_BSF) += h265_levels
|
|
|
|
TESTPROGS-$(CONFIG_RANGECODER) += rangecoder
|
|
|
|
TESTPROGS-$(CONFIG_SNOW_ENCODER) += snowenc
|
|
|
|
|
|
|
|
TESTOBJS = dctref.o
|
|
|
|
|
|
|
|
TOOLS = fourcc2pixfmt
|
|
|
|
|
|
|
|
HOSTPROGS = aacps_tablegen \
|
|
|
|
aacps_fixed_tablegen \
|
|
|
|
cbrt_tablegen \
|
|
|
|
cbrt_fixed_tablegen \
|
|
|
|
dv_tablegen \
|
|
|
|
motionpixels_tablegen \
|
|
|
|
mpegaudio_tablegen \
|
|
|
|
mpegaudiodec_common_tablegen \
|
|
|
|
pcm_tablegen \
|
|
|
|
qdm2_tablegen \
|
|
|
|
sinewin_tablegen \
|
|
|
|
sinewin_fixed_tablegen \
|
|
|
|
|
|
|
|
CLEANFILES = *_tables.c *_tables.h *_tablegen$(HOSTEXESUF)
|
|
|
|
|
|
|
|
$(SUBDIR)tests/dct$(EXESUF): $(SUBDIR)dctref.o $(SUBDIR)aandcttab.o
|
|
|
|
$(SUBDIR)dv_tablegen$(HOSTEXESUF): $(SUBDIR)dvdata_host.o
|
|
|
|
|
|
|
|
ifdef CONFIG_SMALL
|
|
|
|
$(SUBDIR)%_tablegen$(HOSTEXESUF): HOSTCFLAGS += -DCONFIG_SMALL=1
|
|
|
|
else
|
|
|
|
$(SUBDIR)%_tablegen$(HOSTEXESUF): HOSTCFLAGS += -DCONFIG_SMALL=0
|
|
|
|
endif
|
|
|
|
|
avcodec/aacsbr_tablegen: always initialize tables at runtime
This gets rid of virtually useless hardcoded tables hackery. The reason
it is useless is that a 320 element lut is anyway placed regardless of
--enable-hardcoded-tables, from which all necessary tables are trivially
derived at runtime at very low cost:
sample benchmark (x86-64, Haswell, GNU/Linux, single run is really
what is relevant here since looping drastically changes the bench). Fluctuations
are on the order of 10% for the single run test:
39400 decicycles in aacsbr_tableinit, 1 runs, 0 skips
25325 decicycles in aacsbr_tableinit, 2 runs, 0 skips
18475 decicycles in aacsbr_tableinit, 4 runs, 0 skips
15008 decicycles in aacsbr_tableinit, 8 runs, 0 skips
13016 decicycles in aacsbr_tableinit, 16 runs, 0 skips
12005 decicycles in aacsbr_tableinit, 32 runs, 0 skips
11546 decicycles in aacsbr_tableinit, 64 runs, 0 skips
11506 decicycles in aacsbr_tableinit, 128 runs, 0 skips
11500 decicycles in aacsbr_tableinit, 256 runs, 0 skips
11183 decicycles in aacsbr_tableinit, 509 runs, 3 skips
Tested with FATE with/without --enable-hardcoded-tables.
Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
9 years ago
|
|
|
GEN_HEADERS = cbrt_tables.h cbrt_fixed_tables.h aacps_tables.h aacps_fixed_tables.h \
|
|
|
|
dv_tables.h \
|
|
|
|
sinewin_tables.h sinewin_fixed_tables.h mpegaudio_tables.h \
|
|
|
|
mpegaudiodec_common_tables.h motionpixels_tables.h \
|
|
|
|
pcm_tables.h qdm2_tables.h
|
|
|
|
GEN_HEADERS := $(addprefix $(SUBDIR), $(GEN_HEADERS))
|
|
|
|
|
|
|
|
$(GEN_HEADERS): $(SUBDIR)%_tables.h: $(SUBDIR)%_tablegen$(HOSTEXESUF)
|
|
|
|
$(M)./$< > $@
|
|
|
|
|
|
|
|
ifdef CONFIG_HARDCODED_TABLES
|
|
|
|
$(SUBDIR)cbrt_data.o: $(SUBDIR)cbrt_tables.h
|
|
|
|
$(SUBDIR)cbrt_data_fixed.o: $(SUBDIR)cbrt_fixed_tables.h
|
|
|
|
$(SUBDIR)aac/aacdec_fixed.o: $(SUBDIR)sinewin_fixed_tables.h
|
|
|
|
$(SUBDIR)aacps_float.o: $(SUBDIR)aacps_tables.h
|
|
|
|
$(SUBDIR)aacps_fixed.o: $(SUBDIR)aacps_fixed_tables.h
|
|
|
|
$(SUBDIR)dvenc.o: $(SUBDIR)dv_tables.h
|
|
|
|
$(SUBDIR)motionpixels.o: $(SUBDIR)motionpixels_tables.h
|
|
|
|
$(SUBDIR)mpegaudiodec_common.o: $(SUBDIR)mpegaudiodec_common_tables.h
|
|
|
|
$(SUBDIR)mpegaudiodec_fixed.o: $(SUBDIR)mpegaudio_tables.h
|
|
|
|
$(SUBDIR)mpegaudiodec_float.o: $(SUBDIR)mpegaudio_tables.h
|
|
|
|
$(SUBDIR)pcm.o: $(SUBDIR)pcm_tables.h
|
|
|
|
$(SUBDIR)qdm2.o: $(SUBDIR)qdm2_tables.h
|
|
|
|
$(SUBDIR)sinewin.o: $(SUBDIR)sinewin_tables.h
|
|
|
|
endif
|