зеркало из https://github.com/mozilla/gecko-dev.git
Backed out 7 changesets (bug 1765480) for causing build bustages. CLOSED TREE
Backed out changeset ed10a546db4f (bug 1765480) Backed out changeset 3a362936969a (bug 1765480) Backed out changeset c0efff24b361 (bug 1765480) Backed out changeset e393cf609b9b (bug 1765480) Backed out changeset 2979c28076f7 (bug 1765480) Backed out changeset 37cfee2c325e (bug 1765480) Backed out changeset e3017c8a70af (bug 1765480)
This commit is contained in:
Родитель
05f6467ab9
Коммит
faa5640935
|
@ -269,7 +269,21 @@ MediaResult FFmpegAudioDecoder<LIBAV_VER>::DoDecode(MediaRawData* aSample,
|
|||
}
|
||||
#else
|
||||
# define AVRESULT_OK 0
|
||||
int ret = mLib->avcodec_send_packet(mCodecContext, &packet);
|
||||
|
||||
int ret = mLib->avcodec_receive_frame(mCodecContext, mFrame);
|
||||
switch (ret) {
|
||||
case AVRESULT_OK:
|
||||
decoded = true;
|
||||
break;
|
||||
case AVERROR(EAGAIN):
|
||||
break;
|
||||
case AVERROR_EOF: {
|
||||
FFMPEG_LOG(" End of stream.");
|
||||
return MediaResult(NS_ERROR_DOM_MEDIA_END_OF_STREAM,
|
||||
RESULT_DETAIL("End of stream"));
|
||||
}
|
||||
}
|
||||
ret = mLib->avcodec_send_packet(mCodecContext, &packet);
|
||||
switch (ret) {
|
||||
case AVRESULT_OK:
|
||||
bytesConsumed = packet.size;
|
||||
|
@ -285,20 +299,6 @@ MediaResult FFmpegAudioDecoder<LIBAV_VER>::DoDecode(MediaRawData* aSample,
|
|||
return MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
|
||||
RESULT_DETAIL("FFmpeg audio error"));
|
||||
}
|
||||
|
||||
ret = mLib->avcodec_receive_frame(mCodecContext, mFrame);
|
||||
switch (ret) {
|
||||
case AVRESULT_OK:
|
||||
decoded = true;
|
||||
break;
|
||||
case AVERROR(EAGAIN):
|
||||
break;
|
||||
case AVERROR_EOF: {
|
||||
FFMPEG_LOG(" End of stream.");
|
||||
return MediaResult(NS_ERROR_DOM_MEDIA_END_OF_STREAM,
|
||||
RESULT_DETAIL("End of stream"));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (decoded) {
|
||||
|
|
|
@ -20,7 +20,7 @@ SOURCES += [
|
|||
]
|
||||
LOCAL_INCLUDES += [
|
||||
"..",
|
||||
"../ffmpeg59/include",
|
||||
"../ffmpeg58/include",
|
||||
"/media/mozva",
|
||||
]
|
||||
|
||||
|
|
|
@ -0,0 +1,348 @@
|
|||
./COPYING.LGPLv2.1
|
||||
./COPYING.LGPLv3
|
||||
./compat/atomics/win32/stdatomic.h
|
||||
./compat/va_copy.h
|
||||
./compat/w32pthreads.h
|
||||
./libavcodec/allcodecs.c
|
||||
./libavcodec/aarch64/fft_init_aarch64.c
|
||||
./libavcodec/aarch64/fft_neon.S
|
||||
./libavcodec/aarch64/h264chroma_init_aarch64.c
|
||||
./libavcodec/aarch64/h264cmc_neon.S
|
||||
./libavcodec/aarch64/h264dsp_init_aarch64.c
|
||||
./libavcodec/aarch64/h264dsp_neon.S
|
||||
./libavcodec/aarch64/h264idct_neon.S
|
||||
./libavcodec/aarch64/h264pred_init.c
|
||||
./libavcodec/aarch64/h264pred_neon.S
|
||||
./libavcodec/aarch64/hpeldsp_init_aarch64.c
|
||||
./libavcodec/aarch64/hpeldsp_neon.S
|
||||
./libavcodec/aarch64/idct.h
|
||||
./libavcodec/aarch64/idctdsp_init_aarch64.c
|
||||
./libavcodec/aarch64/mdct_neon.S
|
||||
./libavcodec/aarch64/moz.build
|
||||
./libavcodec/aarch64/mpegaudiodsp_init.c
|
||||
./libavcodec/aarch64/mpegaudiodsp_neon.S
|
||||
./libavcodec/aarch64/neon.S
|
||||
./libavcodec/aarch64/simple_idct_neon.S
|
||||
./libavcodec/aarch64/vc1dsp_init_aarch64.c
|
||||
./libavcodec/aarch64/videodsp.S
|
||||
./libavcodec/aarch64/videodsp_init.c
|
||||
./libavcodec/aarch64/vp8dsp_init_aarch64.c
|
||||
./libavcodec/aarch64/vp8dsp.h
|
||||
./libavcodec/aarch64/vp8dsp_neon.S
|
||||
./libavcodec/aarch64/vp9dsp_init.h
|
||||
./libavcodec/aarch64/vp9dsp_init_10bpp_aarch64.c
|
||||
./libavcodec/aarch64/vp9dsp_init_12bpp_aarch64.c
|
||||
./libavcodec/aarch64/vp9dsp_init_16bpp_aarch64_template.c
|
||||
./libavcodec/aarch64/vp9dsp_init_aarch64.c
|
||||
./libavcodec/aarch64/vp9itxfm_16bpp_neon.S
|
||||
./libavcodec/aarch64/vp9itxfm_neon.S
|
||||
./libavcodec/aarch64/vp9lpf_16bpp_neon.S
|
||||
./libavcodec/aarch64/vp9lpf_neon.S
|
||||
./libavcodec/aarch64/vp9mc_16bpp_neon.S
|
||||
./libavcodec/aarch64/vp9mc_neon.S
|
||||
./libavcodec/arm/flacdsp_arm.S
|
||||
./libavcodec/arm/flacdsp_init_arm.c
|
||||
./libavcodec/arm/mathops.h
|
||||
./libavcodec/avcodec.h
|
||||
./libavcodec/avfft.c
|
||||
./libavcodec/avfft.h
|
||||
./libavcodec/avpacket.c
|
||||
./libavcodec/avpicture.c
|
||||
./libavcodec/bit_depth_template.c
|
||||
./libavcodec/bitstream.c
|
||||
./libavcodec/bitstream_filter.c
|
||||
./libavcodec/bitstream_filters.c
|
||||
./libavcodec/blockdsp.h
|
||||
./libavcodec/bsf.c
|
||||
./libavcodec/bsf.h
|
||||
./libavcodec/bsf_list.c
|
||||
./libavcodec/bytestream.h
|
||||
./libavcodec/codec_desc.c
|
||||
./libavcodec/dct.h
|
||||
./libavcodec/decode.c
|
||||
./libavcodec/decode.h
|
||||
./libavcodec/error_resilience.h
|
||||
./libavcodec/fdctdsp.h
|
||||
./libavcodec/fft-internal.h
|
||||
./libavcodec/fft.h
|
||||
./libavcodec/fft_float.c
|
||||
./libavcodec/fft_template.c
|
||||
./libavcodec/flac.c
|
||||
./libavcodec/flac.h
|
||||
./libavcodec/flacdata.c
|
||||
./libavcodec/flacdata.h
|
||||
./libavcodec/flacdec.c
|
||||
./libavcodec/flacdsp.c
|
||||
./libavcodec/flacdsp.h
|
||||
./libavcodec/flacdsp_lpc_template.c
|
||||
./libavcodec/flacdsp_template.c
|
||||
./libavcodec/frame_thread_encoder.h
|
||||
./libavcodec/get_bits.h
|
||||
./libavcodec/golomb.c
|
||||
./libavcodec/golomb.h
|
||||
./libavcodec/h263dsp.h
|
||||
./libavcodec/h264chroma.h
|
||||
./libavcodec/h264dsp.h
|
||||
./libavcodec/h264pred.c
|
||||
./libavcodec/h264pred.h
|
||||
./libavcodec/h264pred_template.c
|
||||
./libavcodec/hpeldsp.h
|
||||
./libavcodec/hwaccel.h
|
||||
./libavcodec/idctdsp.h
|
||||
./libavcodec/imgconvert.c
|
||||
./libavcodec/internal.h
|
||||
./libavcodec/log2_tab.c
|
||||
./libavcodec/mathops.h
|
||||
./libavcodec/mathtables.c
|
||||
./libavcodec/me_cmp.h
|
||||
./libavcodec/motion_est.h
|
||||
./libavcodec/mpeg12data.h
|
||||
./libavcodec/mpegpicture.h
|
||||
./libavcodec/mpegutils.h
|
||||
./libavcodec/mpegvideo.h
|
||||
./libavcodec/mpegvideodata.h
|
||||
./libavcodec/mpegvideodsp.h
|
||||
./libavcodec/mpegvideoencdsp.h
|
||||
./libavcodec/null_bsf.c
|
||||
./libavcodec/options.c
|
||||
./libavcodec/options_table.h
|
||||
./libavcodec/parser.c
|
||||
./libavcodec/parser.h
|
||||
./libavcodec/parsers.c
|
||||
./libavcodec/pixblockdsp.h
|
||||
./libavcodec/profiles.c
|
||||
./libavcodec/profiles.h
|
||||
./libavcodec/pthread.c
|
||||
./libavcodec/pthread_frame.c
|
||||
./libavcodec/pthread_internal.h
|
||||
./libavcodec/pthread_slice.c
|
||||
./libavcodec/put_bits.h
|
||||
./libavcodec/qpeldsp.h
|
||||
./libavcodec/qsv_api.c
|
||||
./libavcodec/ratecontrol.h
|
||||
./libavcodec/raw.c
|
||||
./libavcodec/raw.h
|
||||
./libavcodec/rdft.c
|
||||
./libavcodec/rdft.h
|
||||
./libavcodec/rectangle.h
|
||||
./libavcodec/reverse.c
|
||||
./libavcodec/rl.h
|
||||
./libavcodec/rnd_avg.h
|
||||
./libavcodec/thread.h
|
||||
./libavcodec/unary.h
|
||||
./libavcodec/utils.c
|
||||
./libavcodec/vaapi.h
|
||||
./libavcodec/vaapi_decode.h
|
||||
./libavcodec/vaapi_decode.c
|
||||
./libavcodec/vaapi_vp8.c
|
||||
./libavcodec/vaapi_vp9.c
|
||||
./libavcodec/version.h
|
||||
./libavcodec/videodsp.c
|
||||
./libavcodec/videodsp.h
|
||||
./libavcodec/videodsp_template.c
|
||||
./libavcodec/vlc.h
|
||||
./libavcodec/vorbis_parser.c
|
||||
./libavcodec/vorbis_parser.h
|
||||
./libavcodec/vorbis_parser_internal.h
|
||||
./libavcodec/vp3dsp.h
|
||||
./libavcodec/vp56.h
|
||||
./libavcodec/vp56dsp.h
|
||||
./libavcodec/vp56rac.c
|
||||
./libavcodec/vp8.c
|
||||
./libavcodec/vp8.h
|
||||
./libavcodec/vp8_parser.c
|
||||
./libavcodec/vp8data.h
|
||||
./libavcodec/vp8dsp.c
|
||||
./libavcodec/vp8dsp.h
|
||||
./libavcodec/vp9.c
|
||||
./libavcodec/vp9.h
|
||||
./libavcodec/vp9_mc_template.c
|
||||
./libavcodec/vp9_parser.c
|
||||
./libavcodec/vp9_superframe_split_bsf.c
|
||||
./libavcodec/vp9block.c
|
||||
./libavcodec/vp9data.c
|
||||
./libavcodec/vp9data.h
|
||||
./libavcodec/vp9dec.h
|
||||
./libavcodec/vp9dsp.c
|
||||
./libavcodec/vp9dsp.h
|
||||
./libavcodec/vp9dsp_10bpp.c
|
||||
./libavcodec/vp9dsp_12bpp.c
|
||||
./libavcodec/vp9dsp_8bpp.c
|
||||
./libavcodec/vp9dsp_template.c
|
||||
./libavcodec/vp9lpf.c
|
||||
./libavcodec/vp9mvs.c
|
||||
./libavcodec/vp9prob.c
|
||||
./libavcodec/vp9recon.c
|
||||
./libavcodec/vp9shared.h
|
||||
./libavcodec/x86/constants.c
|
||||
./libavcodec/x86/constants.h
|
||||
./libavcodec/x86/fft.asm
|
||||
./libavcodec/x86/fft.h
|
||||
./libavcodec/x86/fft_init.c
|
||||
./libavcodec/x86/flacdsp.asm
|
||||
./libavcodec/x86/flacdsp_init.c
|
||||
./libavcodec/x86/h264_intrapred.asm
|
||||
./libavcodec/x86/h264_intrapred_10bit.asm
|
||||
./libavcodec/x86/h264_intrapred_init.c
|
||||
./libavcodec/x86/mathops.h
|
||||
./libavcodec/x86/videodsp.asm
|
||||
./libavcodec/x86/videodsp_init.c
|
||||
./libavcodec/x86/vp56_arith.h
|
||||
./libavcodec/x86/vp8dsp.asm
|
||||
./libavcodec/x86/vp8dsp_init.c
|
||||
./libavcodec/x86/vp8dsp_loopfilter.asm
|
||||
./libavcodec/x86/vp9dsp_init.c
|
||||
./libavcodec/x86/vp9dsp_init.h
|
||||
./libavcodec/x86/vp9dsp_init_10bpp.c
|
||||
./libavcodec/x86/vp9dsp_init_12bpp.c
|
||||
./libavcodec/x86/vp9dsp_init_16bpp.c
|
||||
./libavcodec/x86/vp9dsp_init_16bpp_template.c
|
||||
./libavcodec/x86/vp9intrapred.asm
|
||||
./libavcodec/x86/vp9intrapred_16bpp.asm
|
||||
./libavcodec/x86/vp9itxfm.asm
|
||||
./libavcodec/x86/vp9itxfm_16bpp.asm
|
||||
./libavcodec/x86/vp9itxfm_template.asm
|
||||
./libavcodec/x86/vp9lpf.asm
|
||||
./libavcodec/x86/vp9lpf_16bpp.asm
|
||||
./libavcodec/x86/vp9mc.asm
|
||||
./libavcodec/x86/vp9mc_16bpp.asm
|
||||
./libavcodec/xiph.c
|
||||
./libavcodec/xiph.h
|
||||
./libavutil/adler32.c
|
||||
./libavutil/adler32.h
|
||||
./libavutil/arm/asm.S
|
||||
./libavutil/arm/bswap.h
|
||||
./libavutil/arm/cpu.c
|
||||
./libavutil/arm/cpu.h
|
||||
./libavutil/arm/float_dsp_arm.h
|
||||
./libavutil/arm/float_dsp_init_arm.c
|
||||
./libavutil/arm/float_dsp_init_neon.c
|
||||
./libavutil/arm/float_dsp_init_vfp.c
|
||||
./libavutil/arm/float_dsp_neon.S
|
||||
./libavutil/arm/float_dsp_vfp.S
|
||||
./libavutil/arm/intmath.h
|
||||
./libavutil/arm/intreadwrite.h
|
||||
./libavutil/arm/timer.h
|
||||
./libavutil/attributes.h
|
||||
./libavutil/avassert.h
|
||||
./libavutil/avconfig.h
|
||||
./libavutil/avstring.c
|
||||
./libavutil/avstring.h
|
||||
./libavutil/avutil.h
|
||||
./libavutil/avutilres.rc
|
||||
./libavutil/base64.c
|
||||
./libavutil/base64.h
|
||||
./libavutil/bprint.c
|
||||
./libavutil/bprint.h
|
||||
./libavutil/bswap.h
|
||||
./libavutil/buffer.c
|
||||
./libavutil/buffer.h
|
||||
./libavutil/buffer_internal.h
|
||||
./libavutil/channel_layout.c
|
||||
./libavutil/channel_layout.h
|
||||
./libavutil/color_utils.c
|
||||
./libavutil/color_utils.h
|
||||
./libavutil/colorspace.h
|
||||
./libavutil/common.h
|
||||
./libavutil/cpu.c
|
||||
./libavutil/cpu.h
|
||||
./libavutil/cpu_internal.h
|
||||
./libavutil/crc.c
|
||||
./libavutil/crc.h
|
||||
./libavutil/dict.c
|
||||
./libavutil/dict.h
|
||||
./libavutil/dynarray.h
|
||||
./libavutil/error.c
|
||||
./libavutil/error.h
|
||||
./libavutil/eval.c
|
||||
./libavutil/eval.h
|
||||
./libavutil/ffmath.h
|
||||
./libavutil/ffversion.h
|
||||
./libavutil/fifo.c
|
||||
./libavutil/fifo.h
|
||||
./libavutil/fixed_dsp.c
|
||||
./libavutil/fixed_dsp.h
|
||||
./libavutil/float_dsp.c
|
||||
./libavutil/float_dsp.h
|
||||
./libavutil/frame.c
|
||||
./libavutil/frame.h
|
||||
./libavutil/hwcontext.c
|
||||
./libavutil/hwcontext.h
|
||||
./libavutil/hwcontext_internal.h
|
||||
./libavutil/hwcontext_vaapi.h
|
||||
./libavutil/hwcontext_vaapi.c
|
||||
./libavutil/imgutils.c
|
||||
./libavutil/imgutils.h
|
||||
./libavutil/imgutils_internal.h
|
||||
./libavutil/integer.c
|
||||
./libavutil/integer.h
|
||||
./libavutil/internal.h
|
||||
./libavutil/intfloat.h
|
||||
./libavutil/intmath.c
|
||||
./libavutil/intmath.h
|
||||
./libavutil/intreadwrite.h
|
||||
./libavutil/libm.h
|
||||
./libavutil/lls.c
|
||||
./libavutil/lls.h
|
||||
./libavutil/log.c
|
||||
./libavutil/log.h
|
||||
./libavutil/log2_tab.c
|
||||
./libavutil/macros.h
|
||||
./libavutil/mathematics.c
|
||||
./libavutil/mathematics.h
|
||||
./libavutil/mem.c
|
||||
./libavutil/mem.h
|
||||
./libavutil/mem_internal.h
|
||||
./libavutil/opt.c
|
||||
./libavutil/opt.h
|
||||
./libavutil/parseutils.c
|
||||
./libavutil/parseutils.h
|
||||
./libavutil/pixdesc.c
|
||||
./libavutil/pixdesc.h
|
||||
./libavutil/pixelutils.c
|
||||
./libavutil/pixelutils.h
|
||||
./libavutil/pixfmt.h
|
||||
./libavutil/qsort.h
|
||||
./libavutil/rational.c
|
||||
./libavutil/rational.h
|
||||
./libavutil/replaygain.h
|
||||
./libavutil/reverse.c
|
||||
./libavutil/reverse.h
|
||||
./libavutil/samplefmt.c
|
||||
./libavutil/samplefmt.h
|
||||
./libavutil/slicethread.c
|
||||
./libavutil/slicethread.h
|
||||
./libavutil/thread.h
|
||||
./libavutil/threadmessage.c
|
||||
./libavutil/threadmessage.h
|
||||
./libavutil/time.c
|
||||
./libavutil/time_internal.h
|
||||
./libavutil/timecode.c
|
||||
./libavutil/timecode.h
|
||||
./libavutil/timer.h
|
||||
./libavutil/timestamp.h
|
||||
./libavutil/utils.c
|
||||
./libavutil/version.h
|
||||
./libavutil/x86/asm.h
|
||||
./libavutil/x86/bswap.h
|
||||
./libavutil/x86/cpu.c
|
||||
./libavutil/x86/cpu.h
|
||||
./libavutil/x86/cpuid.asm
|
||||
./libavutil/x86/emms.asm
|
||||
./libavutil/x86/emms.h
|
||||
./libavutil/x86/fixed_dsp.asm
|
||||
./libavutil/x86/fixed_dsp_init.c
|
||||
./libavutil/x86/float_dsp.asm
|
||||
./libavutil/x86/float_dsp_init.c
|
||||
./libavutil/x86/imgutils.asm
|
||||
./libavutil/x86/imgutils_init.c
|
||||
./libavutil/x86/intmath.h
|
||||
./libavutil/x86/intreadwrite.h
|
||||
./libavutil/x86/lls.asm
|
||||
./libavutil/x86/lls_init.c
|
||||
./libavutil/x86/pixelutils.asm
|
||||
./libavutil/x86/pixelutils.h
|
||||
./libavutil/x86/pixelutils_init.c
|
||||
./libavutil/x86/timer.h
|
||||
./libavutil/x86/x86inc.asm
|
||||
./libavutil/x86/x86util.asm
|
|
@ -1,144 +1,63 @@
|
|||
# FFVPX
|
||||
|
||||
This directory contains files used in gecko builds from FFmpeg
|
||||
(http://ffmpeg.org). The current files are from FFmpeg as of
|
||||
revision fed07efcde72824ac1ada80d4af4e91ac4fcfc14
|
||||
revision n4.2.2-1-g19bfd72126
|
||||
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
|
||||
git checkout fed07efcde72824ac1ada80d4af4e91ac4fcfc14
|
||||
git checkout n4.2.2-1-g19bfd72126
|
||||
|
||||
All source files match their path from the library's source archive.
|
||||
|
||||
Currently, we only use the vp8, vp9, av1 (libdav1d), mp3, and flac portion of
|
||||
the library. If this changes, configuration files will most likely need to be
|
||||
updated. Decoding AV1 via libdav1d is supported, although the decoder
|
||||
(libdav1d) is vendored separately, `ffvpx` only contains the code to use `libdav1d` through the `ffmpeg` API.
|
||||
Currently, we only use the vp8, vp9, mp3, and flac portion of the library. If
|
||||
this changes, configuration files will most likely need to be updated.
|
||||
|
||||
The ffmpeg project recommends to use ffmpeg's tip, not a particular release.
|
||||
AVX2 must be disabled on Linux 32 bits due to the use of yasm 1.1 on the build bots.
|
||||
Once yasm is upgraded to 1.2 or later, AVX2 code could be re-enabled.
|
||||
Add --disable-avx2 to configure on those platforms.
|
||||
|
||||
## Source files
|
||||
configuration files were generated as follow using the configure script:
|
||||
./configure --disable-all --enable-avcodec --enable-decoder=vp8,vp9,mp3,flac \
|
||||
--enable-parser=vp8,vp9 --disable-static --enable-shared \
|
||||
--disable-autodetect
|
||||
config*:
|
||||
replace: /HAVE_(MALLOC_H|ARC4RANDOM|LOCALTIME_R|MEMALIGN|POSIX_MEMALIGN)/d
|
||||
# sed -i bak -E '/HAVE_(MALLOC_H|ARC4RANDOM|LOCALTIME_R|MEMALIGN|POSIX_MEMALIGN)/d' config.h
|
||||
|
||||
This library only use a small part of `ffmpeg`. To update the source tree, run:
|
||||
config_unix32.h:
|
||||
add to configure command: --disable-asm --disable-x86asm --cc='clang -m32'
|
||||
|
||||
> rsync -av --existing ffmpeg-upstream ffmpeg-mozilla-dir
|
||||
config_android32.h: Only mp3 and flac are enabled on this platform.
|
||||
./configure --disable-all --enable-avcodec --enable-decoder=mp3,flac \
|
||||
--disable-static --enable-shared --disable-autodetect \
|
||||
--enable-small --target-os=linux --arch=arm --enable-cross-compile \
|
||||
--cc=$HOME/.mozbuild/android-ndk-r20/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi16-clang
|
||||
|
||||
config_unix32.h/config_unix64.h/config_unix64.asm:
|
||||
replace: s/HAVE_SYSCTL 1/HAVE_SYSCTL 0
|
||||
|
||||
config_win{32|64}.{h|asm}:
|
||||
add to configure command: --toolchain=msvc
|
||||
|
||||
config_aarch64_win64.h: You will need to install cpp (either using msys or wsl)
|
||||
./configure --disable-all --enable-avcodec --enable-decoder=vp8,vp9,mp3,flac \
|
||||
--enable-parser=vp8,vp9 --disable-static --enable-shared \
|
||||
--disable-autodetect --toolchain=msvc --enable-cross-compile \
|
||||
--target-os=win32 --arch=arm64
|
||||
|
||||
Regenerate defaults_disabled.{h,asm} with:
|
||||
$ grep -E ".*_(INDEV|OUTDEV|DECODER|ENCODER|DEMUXER|MUXER|PARSER|FILTER|HWACCEL|PROTOCOL|ENCODERS|DECODERS|HWACCELS|INDEVS|OUTDEVS|FILTERS|DEMUXERS|MUXERS|PROTOCOLS|BSF) 0" config.h | sort -d -u > ~/Work/Mozilla/mozilla-central/media/ffvpx/defaults_disabled.h
|
||||
$ grep -E ".*_(INDEV|OUTDEV|DECODER|ENCODER|DEMUXER|MUXER|PARSER|FILTER|HWACCEL|PROTOCOL|ENCODERS|DECODERS|HWACCELS|INDEVS|OUTDEVS|FILTERS|DEMUXERS|MUXERS|PROTOCOLS|BSF) 0" config.asm | sort -d -u > ~/Work/Mozilla/mozilla-central/media/ffvpx/defaults_disabled.asm
|
||||
|
||||
The GNU comm utility is a useful tool to compare and extract only the changes.
|
||||
|
||||
To update the source tree, perform a diff on the files listed in FILES.
|
||||
The diffs should typically apply to the ffvpx tree.
|
||||
e.g. something like this would do:
|
||||
Run in the ffmpeg original tree:
|
||||
$ for i in `cat $PATH_CENTRAL/media/ffvpx/FILES`; do git diff $REV_LASTSYNC HEAD >> patch.diff; done
|
||||
Then apply patch.diff on the ffvpx tree.
|
||||
|
||||
You can also directly copy existing files from new ffmpeg checkout by rsync:
|
||||
rsync -av --existing ffmpeg-new-dif ffmpeg-mozilla-dir
|
||||
|
||||
Compilation will reveal if any files are missing.
|
||||
|
||||
Then, make sure the files:
|
||||
|
||||
- `libavcodec/codec_list.c`
|
||||
- `libavcodec/bsf_list.c`
|
||||
- `libavcodec/parser_list.c`
|
||||
|
||||
include conditional compilation directives, by probably reverting them (or
|
||||
reverting and adjusting them if new codecs are added).
|
||||
|
||||
## `config.h` generation
|
||||
|
||||
Configuration files are generated as follow using the configure script (here
|
||||
for Linux desktop):
|
||||
|
||||
> ./configure --disable-all --enable-avcodec --enable-decoder=vp8,vp9,mp3,flac,av1 \
|
||||
--enable-parser=vp8,vp9 --disable-static --enable-shared \
|
||||
--disable-autodetect --disable-iconv --enable-libdav1d
|
||||
|
||||
For Linux Desktop, there are a number of overrides in `config_common.h` for
|
||||
VAAPI. We can't put them in `config_components.h` because this breaks the build.
|
||||
|
||||
`config_components.h` is common to all platforms, and then a specific config
|
||||
file is included, based on the platform and architecture. This needs to be
|
||||
regenerated on all OSes. macOS is similar to Linux Desktop. For other OSes,
|
||||
instructions below:
|
||||
|
||||
# Linux 32-bits from a Linux 64-bits host:
|
||||
|
||||
To produce `config_unix32.h` on a 64-bits machine, add to the configure command
|
||||
above: `--disable-asm --disable-x86asm --cc='clang -m32'`
|
||||
|
||||
# macOS, x86 and aarch64
|
||||
|
||||
Similar to Linux Desktop in all aspects.
|
||||
|
||||
# Android
|
||||
|
||||
config_android32.h: Only mp3 and flac are enabled on this platform. Assuming
|
||||
the standard toolchain location for a Firefox Developer, substitute with the
|
||||
ndk version in use when updating:
|
||||
|
||||
> ./configure --disable-all --enable-avcodec --enable-decoder=mp3,flac \
|
||||
--disable-static --enable-shared --disable-autodetect \
|
||||
--enable-small --target-os=linux --arch=arm --enable-cross-compile \
|
||||
--cc=$HOME/.mozbuild/android-ndk-r20/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi16-clang
|
||||
|
||||
config_android64.h, config_androidx86_64.h: substitute with aarch64 and the right compiler.
|
||||
|
||||
For config_androidx86_64.h, enable vp8 and vp9.
|
||||
|
||||
# Windows
|
||||
|
||||
The general idea is to get an msys prompt with an msvc toolchain
|
||||
configured, so that the configure script for ffmpeg can run successfully
|
||||
with the thread flavor Gecko prefers on Windows (win32, not pthreads).
|
||||
|
||||
- Open Visual Studio (2019 when writing this)
|
||||
- Tools → Command Line → Developer command prompt
|
||||
- Check that compiling a small C program with cl.exe works
|
||||
- Install msys2 from https://www.msys2.org/
|
||||
- From the Visual Studio Developer Command Prompt, run the following:
|
||||
> C:\msys64\msys_shell.cmd -mysy -use-full-path
|
||||
- This pops up a new shell window, with a 32-bits build environment
|
||||
- Check that compiling a small C program with `cl.exe` works
|
||||
- Run ffmpeg's ./configure with the options needed:
|
||||
|
||||
> ./configure --disable-all --enable-avcodec
|
||||
--enable-decoder=vp8,vp9,mp3,flac --enable-parser=vp8,vp9
|
||||
--disable-static --enable-shared --disable-autodetect
|
||||
--enable-w32threads --toolchain=msvc
|
||||
|
||||
- Copy `config.h` and `config.asm` as `config_win32.h` and `config_win32.asm`
|
||||
in this directory
|
||||
- Close the `msys2` window, go back to the `cmd.exe` window
|
||||
- Run this command, maybe substituting the Visual Studio version:
|
||||
|
||||
> "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
|
||||
|
||||
- This pops up a new shell window, now with a 64-bits build
|
||||
environment
|
||||
- Check that compiling a small C program with `cl.exe` works
|
||||
- Run ffmpeg's `./configure` with the options needed:
|
||||
|
||||
> ./configure --disable-all --enable-avcodec --enable-decoder=vp8,vp9,mp3,flac
|
||||
--enable-parser=vp8,vp9 --disable-static --enable-shared
|
||||
--disable-autodetect --enable-w32threads --toolchain=msvc
|
||||
|
||||
- Copy `config.h` and `config.asm` as `config_win64.h` and `config_win64.asm`.
|
||||
|
||||
config_aarch64_win64.h: You will need to install cpp (either using msys or
|
||||
wsl), then:
|
||||
|
||||
> ./configure --disable-all --enable-avcodec --enable-decoder=vp8,vp9,mp3,flac \
|
||||
--enable-parser=vp8,vp9 --disable-static --enable-shared \
|
||||
--disable-autodetect --toolchain=msvc --enable-cross-compile \
|
||||
--target-os=win32 --arch=arm64
|
||||
|
||||
|
||||
# Finally
|
||||
|
||||
Run the following command on all config* file:
|
||||
|
||||
> sed -i -E '/HAVE_(MALLOC_H|ARC4RANDOM|LOCALTIME_R|MEMALIGN|POSIX_MEMALIGN)/d' config.*
|
||||
|
||||
to avoid redefined macros.
|
||||
|
||||
# Build, fix errors
|
||||
|
||||
Missing files need to be added, and the patch to rename `time.h` to `fftime.h`
|
||||
might need to be reaplied or extended to other files including `time.h`. The
|
||||
issue being that it's included instead of the system header, causing all sorts
|
||||
of issues.
|
||||
|
||||
`moz.build` files might need to be modified as well, in light of compilation
|
||||
and link errors.
|
||||
|
||||
There are going to be a lot of changes in terms of symbols exported. Adjust
|
||||
`libavutil/avutil.symbols` and `libavcodec/avcodec.symbols` by removing and
|
||||
adding symbols until the build passes.
|
||||
Apply linux-vaapi-build.patch patch to enable build VA-API support for Linux.
|
||||
|
|
|
@ -96,7 +96,7 @@ do { \
|
|||
atomic_load(object)
|
||||
|
||||
#define atomic_exchange(object, desired) \
|
||||
InterlockedExchangePointer((PVOID volatile *)object, (PVOID)desired)
|
||||
InterlockedExchangePointer(object, desired);
|
||||
|
||||
#define atomic_exchange_explicit(object, desired, order) \
|
||||
atomic_exchange(object, desired)
|
||||
|
|
|
@ -38,13 +38,11 @@
|
|||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <process.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "libavutil/attributes.h"
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/mem.h"
|
||||
#include "libavutil/fftime.h"
|
||||
|
||||
typedef struct pthread_t {
|
||||
void *handle;
|
||||
|
@ -63,9 +61,6 @@ typedef CONDITION_VARIABLE pthread_cond_t;
|
|||
#define InitializeCriticalSection(x) InitializeCriticalSectionEx(x, 0, 0)
|
||||
#define WaitForSingleObject(a, b) WaitForSingleObjectEx(a, b, FALSE)
|
||||
|
||||
#define PTHREAD_CANCEL_ENABLE 1
|
||||
#define PTHREAD_CANCEL_DISABLE 0
|
||||
|
||||
static av_unused unsigned __stdcall attribute_align_arg win32thread_worker(void *arg)
|
||||
{
|
||||
pthread_t *h = (pthread_t*)arg;
|
||||
|
@ -161,31 +156,10 @@ static inline int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex,
|
||||
const struct timespec *abstime)
|
||||
{
|
||||
int64_t abs_milli = abstime->tv_sec * 1000LL + abstime->tv_nsec / 1000000;
|
||||
DWORD t = av_clip64(abs_milli - av_gettime() / 1000, 0, UINT32_MAX);
|
||||
|
||||
if (!SleepConditionVariableSRW(cond, mutex, t, 0)) {
|
||||
DWORD err = GetLastError();
|
||||
if (err == ERROR_TIMEOUT)
|
||||
return ETIMEDOUT;
|
||||
else
|
||||
return EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int pthread_cond_signal(pthread_cond_t *cond)
|
||||
{
|
||||
WakeConditionVariable(cond);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int pthread_setcancelstate(int state, int *oldstate)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* COMPAT_W32PTHREADS_H */
|
||||
|
|
|
@ -10,10 +10,8 @@
|
|||
#if defined(MOZ_FFVPX_AUDIOONLY)
|
||||
# if defined(MOZ_WIDGET_ANDROID) && defined(__arm__)
|
||||
# include "config_android32.h"
|
||||
# elif defined(MOZ_WIDGET_ANDROID) && defined(__aarch64__)
|
||||
# include "config_android64.h"
|
||||
# else
|
||||
# error "Unsupported configuration"
|
||||
# include "config_audio.h"
|
||||
# endif
|
||||
#else // MOZ_FFVPX_AUDIOONLY
|
||||
# if defined(XP_WIN)
|
||||
|
@ -46,8 +44,6 @@
|
|||
# else
|
||||
# include "config_darwin64.h"
|
||||
# endif
|
||||
# elif defined(MOZ_WIDGET_ANDROID) && defined(HAVE_64BIT_BUILD)
|
||||
# include "config_androidx86_64.h"
|
||||
# elif defined(XP_UNIX)
|
||||
# if defined(HAVE_64BIT_BUILD)
|
||||
# include "config_unix64.h"
|
||||
|
@ -57,4 +53,6 @@
|
|||
# endif
|
||||
#endif // else MOZ_FFVPX_AUDIOONLY
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
#endif // MOZ_FFVPX_CONFIG_H
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-all --enable-avcodec --enable-decoder='mp3,flac' --disable-static --enable-shared --disable-autodetect --enable-small --target-os=linux --arch=arm --enable-cross-compile --cc=/Users/padenot/.mozbuild/android-ndk-r21d/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi16-clang"
|
||||
#define FFMPEG_CONFIGURATION "--cross-prefix=/home/jyavenard/.mozbuild/android-ndk-r15c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- --target-os=linux --arch=arm --enable-cross-compile --sysroot=/home/jyavenard/.mozbuild/android-ndk-r15c/platforms/android-24/arch-arm --disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vdpau --disable-videotoolbox --enable-decoder=flac --disable-cuda --disable-cuvid --enable-decoder=mp3"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2022
|
||||
#define CONFIG_THIS_YEAR 2017
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)"
|
||||
#define OS_NAME linux
|
||||
#define CC_IDENT "gcc 4.9.x (GCC) 20150123 (prerelease)"
|
||||
#define av_restrict restrict
|
||||
#define EXTERN_PREFIX ""
|
||||
#define EXTERN_ASM
|
||||
#define EXTERN_ASM
|
||||
#define BUILDSUF ""
|
||||
#define SLIBSUF ".so"
|
||||
#define HAVE_MMX2 HAVE_MMXEXT
|
||||
|
@ -23,16 +22,12 @@
|
|||
#define ARCH_AVR32_UC 0
|
||||
#define ARCH_BFIN 0
|
||||
#define ARCH_IA64 0
|
||||
#define ARCH_LOONGARCH 0
|
||||
#define ARCH_LOONGARCH32 0
|
||||
#define ARCH_LOONGARCH64 0
|
||||
#define ARCH_M68K 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_MIPS64 0
|
||||
#define ARCH_PARISC 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_PPC64 0
|
||||
#define ARCH_RISCV 0
|
||||
#define ARCH_S390 0
|
||||
#define ARCH_SH4 0
|
||||
#define ARCH_SPARC 0
|
||||
|
@ -63,7 +58,6 @@
|
|||
#define HAVE_AVX 0
|
||||
#define HAVE_AVX2 0
|
||||
#define HAVE_AVX512 0
|
||||
#define HAVE_AVX512ICL 0
|
||||
#define HAVE_FMA3 0
|
||||
#define HAVE_FMA4 0
|
||||
#define HAVE_MMX 0
|
||||
|
@ -86,19 +80,18 @@
|
|||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_MSA2 0
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_LSX 0
|
||||
#define HAVE_LASX 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 1
|
||||
#define HAVE_ARMV6_EXTERNAL 1
|
||||
#define HAVE_ARMV6T2_EXTERNAL 1
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
#define HAVE_ARMV6T2_EXTERNAL 0
|
||||
#define HAVE_ARMV8_EXTERNAL 0
|
||||
#define HAVE_NEON_EXTERNAL 1
|
||||
#define HAVE_NEON_EXTERNAL 0
|
||||
#define HAVE_VFP_EXTERNAL 1
|
||||
#define HAVE_VFPV3_EXTERNAL 1
|
||||
#define HAVE_SETEND_EXTERNAL 1
|
||||
#define HAVE_VFPV3_EXTERNAL 0
|
||||
#define HAVE_SETEND_EXTERNAL 0
|
||||
#define HAVE_ALTIVEC_EXTERNAL 0
|
||||
#define HAVE_DCBZL_EXTERNAL 0
|
||||
#define HAVE_LDBRX_EXTERNAL 0
|
||||
|
@ -111,7 +104,6 @@
|
|||
#define HAVE_AVX_EXTERNAL 0
|
||||
#define HAVE_AVX2_EXTERNAL 0
|
||||
#define HAVE_AVX512_EXTERNAL 0
|
||||
#define HAVE_AVX512ICL_EXTERNAL 0
|
||||
#define HAVE_FMA3_EXTERNAL 0
|
||||
#define HAVE_FMA4_EXTERNAL 0
|
||||
#define HAVE_MMX_EXTERNAL 0
|
||||
|
@ -134,19 +126,18 @@
|
|||
#define HAVE_MIPSDSP_EXTERNAL 0
|
||||
#define HAVE_MIPSDSPR2_EXTERNAL 0
|
||||
#define HAVE_MSA_EXTERNAL 0
|
||||
#define HAVE_MSA2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON3_EXTERNAL 0
|
||||
#define HAVE_MMI_EXTERNAL 0
|
||||
#define HAVE_LSX_EXTERNAL 0
|
||||
#define HAVE_LASX_EXTERNAL 0
|
||||
#define HAVE_ARMV5TE_INLINE 1
|
||||
#define HAVE_ARMV6_INLINE 1
|
||||
#define HAVE_ARMV6T2_INLINE 1
|
||||
#define HAVE_ARMV6_INLINE 0
|
||||
#define HAVE_ARMV6T2_INLINE 0
|
||||
#define HAVE_ARMV8_INLINE 0
|
||||
#define HAVE_NEON_INLINE 1
|
||||
#define HAVE_VFP_INLINE 1
|
||||
#define HAVE_VFPV3_INLINE 1
|
||||
#define HAVE_SETEND_INLINE 1
|
||||
#define HAVE_NEON_INLINE 0
|
||||
#define HAVE_VFP_INLINE 0
|
||||
#define HAVE_VFPV3_INLINE 0
|
||||
#define HAVE_SETEND_INLINE 0
|
||||
#define HAVE_ALTIVEC_INLINE 0
|
||||
#define HAVE_DCBZL_INLINE 0
|
||||
#define HAVE_LDBRX_INLINE 0
|
||||
|
@ -159,7 +150,6 @@
|
|||
#define HAVE_AVX_INLINE 0
|
||||
#define HAVE_AVX2_INLINE 0
|
||||
#define HAVE_AVX512_INLINE 0
|
||||
#define HAVE_AVX512ICL_INLINE 0
|
||||
#define HAVE_FMA3_INLINE 0
|
||||
#define HAVE_FMA4_INLINE 0
|
||||
#define HAVE_MMX_INLINE 0
|
||||
|
@ -182,11 +172,10 @@
|
|||
#define HAVE_MIPSDSP_INLINE 0
|
||||
#define HAVE_MIPSDSPR2_INLINE 0
|
||||
#define HAVE_MSA_INLINE 0
|
||||
#define HAVE_MSA2_INLINE 0
|
||||
#define HAVE_LOONGSON2_INLINE 0
|
||||
#define HAVE_LOONGSON3_INLINE 0
|
||||
#define HAVE_MMI_INLINE 0
|
||||
#define HAVE_LSX_INLINE 0
|
||||
#define HAVE_LASX_INLINE 0
|
||||
#define HAVE_ALIGNED_STACK 0
|
||||
#define HAVE_FAST_64BIT 0
|
||||
#define HAVE_FAST_CLZ 1
|
||||
|
@ -202,13 +191,13 @@
|
|||
#define HAVE_RDTSC 0
|
||||
#define HAVE_SEM_TIMEDWAIT 1
|
||||
#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
|
||||
#define HAVE_CABS 0
|
||||
#define HAVE_CEXP 0
|
||||
#define HAVE_CABS 1
|
||||
#define HAVE_CEXP 1
|
||||
#define HAVE_INLINE_ASM 1
|
||||
#define HAVE_SYMVER 1
|
||||
#define HAVE_X86ASM 0
|
||||
#define HAVE_BIGENDIAN 0
|
||||
#define HAVE_FAST_UNALIGNED 1
|
||||
#define HAVE_FAST_UNALIGNED 0
|
||||
#define HAVE_ARPA_INET_H 1
|
||||
#define HAVE_ASM_TYPES_H 1
|
||||
#define HAVE_CDIO_PARANOIA_H 0
|
||||
|
@ -227,11 +216,9 @@
|
|||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
#define HAVE_IO_H 0
|
||||
#define HAVE_LINUX_DMA_BUF_H 0
|
||||
#define HAVE_LINUX_PERF_EVENT_H 1
|
||||
#define HAVE_LINUX_PERF_EVENT_H 0
|
||||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
#define HAVE_MALLOC_H 1
|
||||
#define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
#define HAVE_OPENGL_GL3_H 0
|
||||
#define HAVE_POLL_H 1
|
||||
|
@ -248,7 +235,7 @@
|
|||
#define HAVE_VALGRIND_VALGRIND_H 0
|
||||
#define HAVE_WINDOWS_H 0
|
||||
#define HAVE_WINSOCK2_H 0
|
||||
#define HAVE_INTRINSICS_NEON 1
|
||||
#define HAVE_INTRINSICS_NEON 0
|
||||
#define HAVE_ATANF 1
|
||||
#define HAVE_ATAN2F 1
|
||||
#define HAVE_CBRT 1
|
||||
|
@ -266,8 +253,8 @@
|
|||
#define HAVE_LDEXPF 1
|
||||
#define HAVE_LLRINT 1
|
||||
#define HAVE_LLRINTF 1
|
||||
#define HAVE_LOG2 0
|
||||
#define HAVE_LOG2F 0
|
||||
#define HAVE_LOG2 1
|
||||
#define HAVE_LOG2F 1
|
||||
#define HAVE_LOG10F 1
|
||||
#define HAVE_LRINT 1
|
||||
#define HAVE_LRINTF 1
|
||||
|
@ -287,22 +274,17 @@
|
|||
#define HAVE_WINRT 0
|
||||
#define HAVE_ACCESS 1
|
||||
#define HAVE_ALIGNED_MALLOC 0
|
||||
#define HAVE_ARC4RANDOM 1
|
||||
#define HAVE_CLOCK_GETTIME 1
|
||||
#define HAVE_CLOSESOCKET 0
|
||||
#define HAVE_COMMANDLINETOARGVW 0
|
||||
#define HAVE_FCNTL 1
|
||||
#define HAVE_GETADDRINFO 1
|
||||
#define HAVE_GETAUXVAL 0
|
||||
#define HAVE_GETENV 1
|
||||
#define HAVE_GETHRTIME 0
|
||||
#define HAVE_GETOPT 1
|
||||
#define HAVE_GETMODULEHANDLE 0
|
||||
#define HAVE_GETPROCESSAFFINITYMASK 0
|
||||
#define HAVE_GETPROCESSMEMORYINFO 0
|
||||
#define HAVE_GETPROCESSTIMES 0
|
||||
#define HAVE_GETRUSAGE 1
|
||||
#define HAVE_GETSTDHANDLE 0
|
||||
#define HAVE_GETSYSTEMTIMEASFILETIME 0
|
||||
#define HAVE_GETTIMEOFDAY 1
|
||||
#define HAVE_GLOB 0
|
||||
|
@ -311,24 +293,20 @@
|
|||
#define HAVE_INET_ATON 1
|
||||
#define HAVE_ISATTY 1
|
||||
#define HAVE_KBHIT 0
|
||||
#define HAVE_LOCALTIME_R 1
|
||||
#define HAVE_LSTAT 1
|
||||
#define HAVE_LZO1X_999_COMPRESS 0
|
||||
#define HAVE_MACH_ABSOLUTE_TIME 0
|
||||
#define HAVE_MAPVIEWOFFILE 0
|
||||
#define HAVE_MEMALIGN 1
|
||||
#define HAVE_MKSTEMP 1
|
||||
#define HAVE_MMAP 1
|
||||
#define HAVE_MPROTECT 1
|
||||
#define HAVE_NANOSLEEP 1
|
||||
#define HAVE_PEEKNAMEDPIPE 0
|
||||
#define HAVE_POSIX_MEMALIGN 0
|
||||
#define HAVE_PTHREAD_CANCEL 0
|
||||
#define HAVE_SCHED_GETAFFINITY 1
|
||||
#define HAVE_SECITEMIMPORT 0
|
||||
#define HAVE_SETCONSOLETEXTATTRIBUTE 0
|
||||
#define HAVE_SETCONSOLECTRLHANDLER 0
|
||||
#define HAVE_SETDLLDIRECTORY 0
|
||||
#define HAVE_SETMODE 0
|
||||
#define HAVE_SETRLIMIT 1
|
||||
#define HAVE_SLEEP 0
|
||||
|
@ -347,7 +325,7 @@
|
|||
#define HAVE_OS2THREADS 0
|
||||
#define HAVE_W32THREADS 0
|
||||
#define HAVE_AS_ARCH_DIRECTIVE 1
|
||||
#define HAVE_AS_DN_DIRECTIVE 0
|
||||
#define HAVE_AS_DN_DIRECTIVE 1
|
||||
#define HAVE_AS_FPU_DIRECTIVE 1
|
||||
#define HAVE_AS_FUNC 0
|
||||
#define HAVE_AS_OBJECT_ARCH 1
|
||||
|
@ -362,29 +340,14 @@
|
|||
#define HAVE_INLINE_ASM_LABELS 1
|
||||
#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
|
||||
#define HAVE_PRAGMA_DEPRECATED 1
|
||||
#define HAVE_RSYNC_CONTIMEOUT 0
|
||||
#define HAVE_SYMVER_ASM_LABEL 1
|
||||
#define HAVE_RSYNC_CONTIMEOUT 1
|
||||
#define HAVE_SYMVER_ASM_LABEL 0
|
||||
#define HAVE_SYMVER_GNU_ASM 1
|
||||
#define HAVE_VFP_ARGS 0
|
||||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_VP9 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
|
||||
#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -397,10 +360,8 @@
|
|||
#define HAVE_STRUCT_SOCKADDR_IN6 1
|
||||
#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
|
||||
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
|
||||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
#define HAVE_GZIP 1
|
||||
#define HAVE_LIBDRM_GETFB2 0
|
||||
#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 0
|
||||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
|
||||
#define HAVE_MAKEINFO 1
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_OPENCL_D3D11 0
|
||||
|
@ -412,14 +373,12 @@
|
|||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_XMLLINT 1
|
||||
#define HAVE_ZLIB_GZIP 0
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 0
|
||||
#define CONFIG_MANPAGES 1
|
||||
#define CONFIG_PODPAGES 1
|
||||
#define CONFIG_TXTPAGES 1
|
||||
#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
|
||||
#define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
|
@ -455,12 +414,14 @@
|
|||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_LIBTLS 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBARIBB24 0
|
||||
#define CONFIG_LIBLENSFUN 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_MBEDTLS 0
|
||||
#define CONFIG_RKMPP 0
|
||||
|
@ -470,7 +431,6 @@
|
|||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LCMS2 0
|
||||
#define CONFIG_LIBAOM 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
|
@ -485,13 +445,11 @@
|
|||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
#define CONFIG_LIBFRIBIDI 0
|
||||
#define CONFIG_LIBGLSLANG 0
|
||||
#define CONFIG_LIBGME 0
|
||||
#define CONFIG_LIBGSM 0
|
||||
#define CONFIG_LIBIEC61883 0
|
||||
#define CONFIG_LIBILBC 0
|
||||
#define CONFIG_LIBJACK 0
|
||||
#define CONFIG_LIBJXL 0
|
||||
#define CONFIG_LIBKLVANC 0
|
||||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
|
@ -501,16 +459,10 @@
|
|||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPENVINO 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPLACEBO 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRABBITMQ 0
|
||||
#define CONFIG_LIBRAV1E 0
|
||||
#define CONFIG_LIBRIST 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBSHADERC 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
|
@ -518,16 +470,14 @@
|
|||
#define CONFIG_LIBSPEEX 0
|
||||
#define CONFIG_LIBSRT 0
|
||||
#define CONFIG_LIBSSH 0
|
||||
#define CONFIG_LIBSVTAV1 0
|
||||
#define CONFIG_LIBTENSORFLOW 0
|
||||
#define CONFIG_LIBTESSERACT 0
|
||||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBUAVS3D 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWAVPACK 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
|
@ -537,28 +487,25 @@
|
|||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_POCKETSPHINX 0
|
||||
#define CONFIG_VAPOURSYNTH 0
|
||||
#define CONFIG_ALSA 0
|
||||
#define CONFIG_APPKIT 0
|
||||
#define CONFIG_AVFOUNDATION 0
|
||||
#define CONFIG_BZLIB 0
|
||||
#define CONFIG_COREIMAGE 0
|
||||
#define CONFIG_APPKIT 1
|
||||
#define CONFIG_AVFOUNDATION 1
|
||||
#define CONFIG_BZLIB 1
|
||||
#define CONFIG_COREIMAGE 1
|
||||
#define CONFIG_ICONV 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIAFOUNDATION 0
|
||||
#define CONFIG_METAL 0
|
||||
#define CONFIG_LZMA 1
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
#define CONFIG_XLIB 0
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_XLIB 1
|
||||
#define CONFIG_ZLIB 1
|
||||
#define CONFIG_CUDA_NVCC 0
|
||||
#define CONFIG_CUDA_SDK 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
|
@ -580,8 +527,8 @@
|
|||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_VULKAN 0
|
||||
#define CONFIG_V4L2_M2M 0
|
||||
#define CONFIG_XVMC 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -602,6 +549,7 @@
|
|||
#define CONFIG_AVFORMAT 0
|
||||
#define CONFIG_AVCODEC 1
|
||||
#define CONFIG_SWRESAMPLE 0
|
||||
#define CONFIG_AVRESAMPLE 0
|
||||
#define CONFIG_AVUTIL 1
|
||||
#define CONFIG_FFPLAY 0
|
||||
#define CONFIG_FFPROBE 0
|
||||
|
@ -610,41 +558,30 @@
|
|||
#define CONFIG_DWT 0
|
||||
#define CONFIG_ERROR_RESILIENCE 0
|
||||
#define CONFIG_FAAN 1
|
||||
#define CONFIG_FAST_UNALIGNED 1
|
||||
#define CONFIG_FFT 1
|
||||
#define CONFIG_FAST_UNALIGNED 0
|
||||
#define CONFIG_FFT 0
|
||||
#define CONFIG_LSP 0
|
||||
#define CONFIG_LZO 0
|
||||
#define CONFIG_MDCT 0
|
||||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 1
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_LARGE_TESTS 1
|
||||
#define CONFIG_LINUX_PERF 1
|
||||
#define CONFIG_MACOS_KPERF 0
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_PTX_COMPRESSION 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_BSFS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 0
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_ADTS_HEADER 0
|
||||
#define CONFIG_ATSC_A53 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
#define CONFIG_AUDIODSP 0
|
||||
#define CONFIG_BLOCKDSP 0
|
||||
|
@ -657,18 +594,15 @@
|
|||
#define CONFIG_CBS_JPEG 0
|
||||
#define CONFIG_CBS_MPEG2 0
|
||||
#define CONFIG_CBS_VP9 0
|
||||
#define CONFIG_DEFLATE_WRAPPER 0
|
||||
#define CONFIG_DIRAC_PARSE 0
|
||||
#define CONFIG_DNN 0
|
||||
#define CONFIG_DOVI_RPU 0
|
||||
#define CONFIG_DVPROFILE 0
|
||||
#define CONFIG_EXIF 0
|
||||
#define CONFIG_FAANDCT 1
|
||||
#define CONFIG_FAANIDCT 1
|
||||
#define CONFIG_FDCTDSP 1
|
||||
#define CONFIG_FAANDCT 0
|
||||
#define CONFIG_FAANIDCT 0
|
||||
#define CONFIG_FDCTDSP 0
|
||||
#define CONFIG_FLACDSP 1
|
||||
#define CONFIG_FMTCONVERT 0
|
||||
#define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
#define CONFIG_G722DSP 0
|
||||
#define CONFIG_GOLOMB 0
|
||||
#define CONFIG_GPLV3 0
|
||||
|
@ -683,10 +617,9 @@
|
|||
#define CONFIG_HUFFMAN 0
|
||||
#define CONFIG_HUFFYUVDSP 0
|
||||
#define CONFIG_HUFFYUVENCDSP 0
|
||||
#define CONFIG_IDCTDSP 1
|
||||
#define CONFIG_IDCTDSP 0
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INFLATE_WRAPPER 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
|
@ -703,9 +636,7 @@
|
|||
#define CONFIG_MPEGAUDIO 1
|
||||
#define CONFIG_MPEGAUDIODSP 1
|
||||
#define CONFIG_MPEGAUDIOHEADER 1
|
||||
#define CONFIG_MPEG4AUDIO 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEODEC 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
#define CONFIG_PIXBLOCKDSP 0
|
||||
|
@ -737,4 +668,12 @@
|
|||
#define CONFIG_VP8DSP 0
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#define CONFIG_NULL_BSF 1
|
||||
#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 0
|
||||
#define CONFIG_VP8_DECODER 0
|
||||
#define CONFIG_VP9_DECODER 0
|
||||
#define CONFIG_FLAC_DECODER 1
|
||||
#define CONFIG_MP3_DECODER 1
|
||||
#define CONFIG_VP8_PARSER 0
|
||||
#define CONFIG_VP9_PARSER 0
|
||||
#endif /* FFMPEG_CONFIG_H */
|
||||
|
|
|
@ -1,740 +0,0 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-all --enable-avcodec --enable-decoder='mp3,flac' --disable-static --enable-shared --disable-autodetect --enable-small --target-os=linux --arch=aarch64 --enable-cross-compile --cc=/Users/padenot/.mozbuild/android-ndk-r21d/toolchains/llvm/prebuilt/darwin-x86_64/bin/aarch64-linux-android21-clang"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2022
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)"
|
||||
#define OS_NAME linux
|
||||
#define av_restrict restrict
|
||||
#define EXTERN_PREFIX ""
|
||||
#define EXTERN_ASM
|
||||
#define BUILDSUF ""
|
||||
#define SLIBSUF ".so"
|
||||
#define HAVE_MMX2 HAVE_MMXEXT
|
||||
#define SWS_MAX_FILTER_SIZE 256
|
||||
#define ARCH_AARCH64 1
|
||||
#define ARCH_ALPHA 0
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_AVR32 0
|
||||
#define ARCH_AVR32_AP 0
|
||||
#define ARCH_AVR32_UC 0
|
||||
#define ARCH_BFIN 0
|
||||
#define ARCH_IA64 0
|
||||
#define ARCH_LOONGARCH 0
|
||||
#define ARCH_LOONGARCH32 0
|
||||
#define ARCH_LOONGARCH64 0
|
||||
#define ARCH_M68K 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_MIPS64 0
|
||||
#define ARCH_PARISC 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_PPC64 0
|
||||
#define ARCH_RISCV 0
|
||||
#define ARCH_S390 0
|
||||
#define ARCH_SH4 0
|
||||
#define ARCH_SPARC 0
|
||||
#define ARCH_SPARC64 0
|
||||
#define ARCH_TILEGX 0
|
||||
#define ARCH_TILEPRO 0
|
||||
#define ARCH_TOMI 0
|
||||
#define ARCH_X86 0
|
||||
#define ARCH_X86_32 0
|
||||
#define ARCH_X86_64 0
|
||||
#define HAVE_ARMV5TE 0
|
||||
#define HAVE_ARMV6 0
|
||||
#define HAVE_ARMV6T2 0
|
||||
#define HAVE_ARMV8 1
|
||||
#define HAVE_NEON 1
|
||||
#define HAVE_VFP 1
|
||||
#define HAVE_VFPV3 0
|
||||
#define HAVE_SETEND 0
|
||||
#define HAVE_ALTIVEC 0
|
||||
#define HAVE_DCBZL 0
|
||||
#define HAVE_LDBRX 0
|
||||
#define HAVE_POWER8 0
|
||||
#define HAVE_PPC4XX 0
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_AESNI 0
|
||||
#define HAVE_AMD3DNOW 0
|
||||
#define HAVE_AMD3DNOWEXT 0
|
||||
#define HAVE_AVX 0
|
||||
#define HAVE_AVX2 0
|
||||
#define HAVE_AVX512 0
|
||||
#define HAVE_AVX512ICL 0
|
||||
#define HAVE_FMA3 0
|
||||
#define HAVE_FMA4 0
|
||||
#define HAVE_MMX 0
|
||||
#define HAVE_MMXEXT 0
|
||||
#define HAVE_SSE 0
|
||||
#define HAVE_SSE2 0
|
||||
#define HAVE_SSE3 0
|
||||
#define HAVE_SSE4 0
|
||||
#define HAVE_SSE42 0
|
||||
#define HAVE_SSSE3 0
|
||||
#define HAVE_XOP 0
|
||||
#define HAVE_CPUNOP 0
|
||||
#define HAVE_I686 0
|
||||
#define HAVE_MIPSFPU 0
|
||||
#define HAVE_MIPS32R2 0
|
||||
#define HAVE_MIPS32R5 0
|
||||
#define HAVE_MIPS64R2 0
|
||||
#define HAVE_MIPS32R6 0
|
||||
#define HAVE_MIPS64R6 0
|
||||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_LSX 0
|
||||
#define HAVE_LASX 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 0
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
#define HAVE_ARMV6T2_EXTERNAL 0
|
||||
#define HAVE_ARMV8_EXTERNAL 1
|
||||
#define HAVE_NEON_EXTERNAL 1
|
||||
#define HAVE_VFP_EXTERNAL 1
|
||||
#define HAVE_VFPV3_EXTERNAL 0
|
||||
#define HAVE_SETEND_EXTERNAL 0
|
||||
#define HAVE_ALTIVEC_EXTERNAL 0
|
||||
#define HAVE_DCBZL_EXTERNAL 0
|
||||
#define HAVE_LDBRX_EXTERNAL 0
|
||||
#define HAVE_POWER8_EXTERNAL 0
|
||||
#define HAVE_PPC4XX_EXTERNAL 0
|
||||
#define HAVE_VSX_EXTERNAL 0
|
||||
#define HAVE_AESNI_EXTERNAL 0
|
||||
#define HAVE_AMD3DNOW_EXTERNAL 0
|
||||
#define HAVE_AMD3DNOWEXT_EXTERNAL 0
|
||||
#define HAVE_AVX_EXTERNAL 0
|
||||
#define HAVE_AVX2_EXTERNAL 0
|
||||
#define HAVE_AVX512_EXTERNAL 0
|
||||
#define HAVE_AVX512ICL_EXTERNAL 0
|
||||
#define HAVE_FMA3_EXTERNAL 0
|
||||
#define HAVE_FMA4_EXTERNAL 0
|
||||
#define HAVE_MMX_EXTERNAL 0
|
||||
#define HAVE_MMXEXT_EXTERNAL 0
|
||||
#define HAVE_SSE_EXTERNAL 0
|
||||
#define HAVE_SSE2_EXTERNAL 0
|
||||
#define HAVE_SSE3_EXTERNAL 0
|
||||
#define HAVE_SSE4_EXTERNAL 0
|
||||
#define HAVE_SSE42_EXTERNAL 0
|
||||
#define HAVE_SSSE3_EXTERNAL 0
|
||||
#define HAVE_XOP_EXTERNAL 0
|
||||
#define HAVE_CPUNOP_EXTERNAL 0
|
||||
#define HAVE_I686_EXTERNAL 0
|
||||
#define HAVE_MIPSFPU_EXTERNAL 0
|
||||
#define HAVE_MIPS32R2_EXTERNAL 0
|
||||
#define HAVE_MIPS32R5_EXTERNAL 0
|
||||
#define HAVE_MIPS64R2_EXTERNAL 0
|
||||
#define HAVE_MIPS32R6_EXTERNAL 0
|
||||
#define HAVE_MIPS64R6_EXTERNAL 0
|
||||
#define HAVE_MIPSDSP_EXTERNAL 0
|
||||
#define HAVE_MIPSDSPR2_EXTERNAL 0
|
||||
#define HAVE_MSA_EXTERNAL 0
|
||||
#define HAVE_LOONGSON2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON3_EXTERNAL 0
|
||||
#define HAVE_MMI_EXTERNAL 0
|
||||
#define HAVE_LSX_EXTERNAL 0
|
||||
#define HAVE_LASX_EXTERNAL 0
|
||||
#define HAVE_ARMV5TE_INLINE 0
|
||||
#define HAVE_ARMV6_INLINE 0
|
||||
#define HAVE_ARMV6T2_INLINE 0
|
||||
#define HAVE_ARMV8_INLINE 1
|
||||
#define HAVE_NEON_INLINE 1
|
||||
#define HAVE_VFP_INLINE 1
|
||||
#define HAVE_VFPV3_INLINE 0
|
||||
#define HAVE_SETEND_INLINE 0
|
||||
#define HAVE_ALTIVEC_INLINE 0
|
||||
#define HAVE_DCBZL_INLINE 0
|
||||
#define HAVE_LDBRX_INLINE 0
|
||||
#define HAVE_POWER8_INLINE 0
|
||||
#define HAVE_PPC4XX_INLINE 0
|
||||
#define HAVE_VSX_INLINE 0
|
||||
#define HAVE_AESNI_INLINE 0
|
||||
#define HAVE_AMD3DNOW_INLINE 0
|
||||
#define HAVE_AMD3DNOWEXT_INLINE 0
|
||||
#define HAVE_AVX_INLINE 0
|
||||
#define HAVE_AVX2_INLINE 0
|
||||
#define HAVE_AVX512_INLINE 0
|
||||
#define HAVE_AVX512ICL_INLINE 0
|
||||
#define HAVE_FMA3_INLINE 0
|
||||
#define HAVE_FMA4_INLINE 0
|
||||
#define HAVE_MMX_INLINE 0
|
||||
#define HAVE_MMXEXT_INLINE 0
|
||||
#define HAVE_SSE_INLINE 0
|
||||
#define HAVE_SSE2_INLINE 0
|
||||
#define HAVE_SSE3_INLINE 0
|
||||
#define HAVE_SSE4_INLINE 0
|
||||
#define HAVE_SSE42_INLINE 0
|
||||
#define HAVE_SSSE3_INLINE 0
|
||||
#define HAVE_XOP_INLINE 0
|
||||
#define HAVE_CPUNOP_INLINE 0
|
||||
#define HAVE_I686_INLINE 0
|
||||
#define HAVE_MIPSFPU_INLINE 0
|
||||
#define HAVE_MIPS32R2_INLINE 0
|
||||
#define HAVE_MIPS32R5_INLINE 0
|
||||
#define HAVE_MIPS64R2_INLINE 0
|
||||
#define HAVE_MIPS32R6_INLINE 0
|
||||
#define HAVE_MIPS64R6_INLINE 0
|
||||
#define HAVE_MIPSDSP_INLINE 0
|
||||
#define HAVE_MIPSDSPR2_INLINE 0
|
||||
#define HAVE_MSA_INLINE 0
|
||||
#define HAVE_LOONGSON2_INLINE 0
|
||||
#define HAVE_LOONGSON3_INLINE 0
|
||||
#define HAVE_MMI_INLINE 0
|
||||
#define HAVE_LSX_INLINE 0
|
||||
#define HAVE_LASX_INLINE 0
|
||||
#define HAVE_ALIGNED_STACK 1
|
||||
#define HAVE_FAST_64BIT 1
|
||||
#define HAVE_FAST_CLZ 1
|
||||
#define HAVE_FAST_CMOV 0
|
||||
#define HAVE_LOCAL_ALIGNED 0
|
||||
#define HAVE_SIMD_ALIGN_16 1
|
||||
#define HAVE_SIMD_ALIGN_32 0
|
||||
#define HAVE_SIMD_ALIGN_64 0
|
||||
#define HAVE_ATOMIC_CAS_PTR 0
|
||||
#define HAVE_MACHINE_RW_BARRIER 0
|
||||
#define HAVE_MEMORYBARRIER 0
|
||||
#define HAVE_MM_EMPTY 0
|
||||
#define HAVE_RDTSC 0
|
||||
#define HAVE_SEM_TIMEDWAIT 1
|
||||
#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
|
||||
#define HAVE_CABS 0
|
||||
#define HAVE_CEXP 0
|
||||
#define HAVE_INLINE_ASM 1
|
||||
#define HAVE_SYMVER 1
|
||||
#define HAVE_X86ASM 0
|
||||
#define HAVE_BIGENDIAN 0
|
||||
#define HAVE_FAST_UNALIGNED 1
|
||||
#define HAVE_ARPA_INET_H 1
|
||||
#define HAVE_ASM_TYPES_H 1
|
||||
#define HAVE_CDIO_PARANOIA_H 0
|
||||
#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
#define HAVE_CUDA_H 0
|
||||
#define HAVE_DISPATCH_DISPATCH_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
#define HAVE_DEV_IC_BT8XX_H 0
|
||||
#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
|
||||
#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
|
||||
#define HAVE_DIRECT_H 0
|
||||
#define HAVE_DIRENT_H 1
|
||||
#define HAVE_DXGIDEBUG_H 0
|
||||
#define HAVE_DXVA_H 0
|
||||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
#define HAVE_IO_H 0
|
||||
#define HAVE_LINUX_DMA_BUF_H 0
|
||||
#define HAVE_LINUX_PERF_EVENT_H 1
|
||||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
#define HAVE_MALLOC_H 1
|
||||
#define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
#define HAVE_OPENGL_GL3_H 0
|
||||
#define HAVE_POLL_H 1
|
||||
#define HAVE_SYS_PARAM_H 1
|
||||
#define HAVE_SYS_RESOURCE_H 1
|
||||
#define HAVE_SYS_SELECT_H 1
|
||||
#define HAVE_SYS_SOUNDCARD_H 0
|
||||
#define HAVE_SYS_TIME_H 1
|
||||
#define HAVE_SYS_UN_H 1
|
||||
#define HAVE_SYS_VIDEOIO_H 0
|
||||
#define HAVE_TERMIOS_H 1
|
||||
#define HAVE_UDPLITE_H 0
|
||||
#define HAVE_UNISTD_H 1
|
||||
#define HAVE_VALGRIND_VALGRIND_H 0
|
||||
#define HAVE_WINDOWS_H 0
|
||||
#define HAVE_WINSOCK2_H 0
|
||||
#define HAVE_INTRINSICS_NEON 1
|
||||
#define HAVE_ATANF 1
|
||||
#define HAVE_ATAN2F 1
|
||||
#define HAVE_CBRT 1
|
||||
#define HAVE_CBRTF 1
|
||||
#define HAVE_COPYSIGN 1
|
||||
#define HAVE_COSF 1
|
||||
#define HAVE_ERF 1
|
||||
#define HAVE_EXP2 1
|
||||
#define HAVE_EXP2F 1
|
||||
#define HAVE_EXPF 1
|
||||
#define HAVE_HYPOT 1
|
||||
#define HAVE_ISFINITE 1
|
||||
#define HAVE_ISINF 1
|
||||
#define HAVE_ISNAN 1
|
||||
#define HAVE_LDEXPF 1
|
||||
#define HAVE_LLRINT 1
|
||||
#define HAVE_LLRINTF 1
|
||||
#define HAVE_LOG2 1
|
||||
#define HAVE_LOG2F 1
|
||||
#define HAVE_LOG10F 1
|
||||
#define HAVE_LRINT 1
|
||||
#define HAVE_LRINTF 1
|
||||
#define HAVE_POWF 1
|
||||
#define HAVE_RINT 1
|
||||
#define HAVE_ROUND 1
|
||||
#define HAVE_ROUNDF 1
|
||||
#define HAVE_SINF 1
|
||||
#define HAVE_TRUNC 1
|
||||
#define HAVE_TRUNCF 1
|
||||
#define HAVE_DOS_PATHS 0
|
||||
#define HAVE_LIBC_MSVCRT 0
|
||||
#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
#define HAVE_SECTION_DATA_REL_RO 1
|
||||
#define HAVE_THREADS 1
|
||||
#define HAVE_UWP 0
|
||||
#define HAVE_WINRT 0
|
||||
#define HAVE_ACCESS 1
|
||||
#define HAVE_ALIGNED_MALLOC 0
|
||||
#define HAVE_ARC4RANDOM 1
|
||||
#define HAVE_CLOCK_GETTIME 1
|
||||
#define HAVE_CLOSESOCKET 0
|
||||
#define HAVE_COMMANDLINETOARGVW 0
|
||||
#define HAVE_FCNTL 1
|
||||
#define HAVE_GETADDRINFO 1
|
||||
#define HAVE_GETAUXVAL 1
|
||||
#define HAVE_GETENV 1
|
||||
#define HAVE_GETHRTIME 0
|
||||
#define HAVE_GETOPT 1
|
||||
#define HAVE_GETMODULEHANDLE 0
|
||||
#define HAVE_GETPROCESSAFFINITYMASK 0
|
||||
#define HAVE_GETPROCESSMEMORYINFO 0
|
||||
#define HAVE_GETPROCESSTIMES 0
|
||||
#define HAVE_GETRUSAGE 1
|
||||
#define HAVE_GETSTDHANDLE 0
|
||||
#define HAVE_GETSYSTEMTIMEASFILETIME 0
|
||||
#define HAVE_GETTIMEOFDAY 1
|
||||
#define HAVE_GLOB 0
|
||||
#define HAVE_GLXGETPROCADDRESS 0
|
||||
#define HAVE_GMTIME_R 1
|
||||
#define HAVE_INET_ATON 1
|
||||
#define HAVE_ISATTY 1
|
||||
#define HAVE_KBHIT 0
|
||||
#define HAVE_LOCALTIME_R 1
|
||||
#define HAVE_LSTAT 1
|
||||
#define HAVE_LZO1X_999_COMPRESS 0
|
||||
#define HAVE_MACH_ABSOLUTE_TIME 0
|
||||
#define HAVE_MAPVIEWOFFILE 0
|
||||
#define HAVE_MEMALIGN 1
|
||||
#define HAVE_MKSTEMP 1
|
||||
#define HAVE_MMAP 1
|
||||
#define HAVE_MPROTECT 1
|
||||
#define HAVE_NANOSLEEP 1
|
||||
#define HAVE_PEEKNAMEDPIPE 0
|
||||
#define HAVE_POSIX_MEMALIGN 1
|
||||
#define HAVE_PTHREAD_CANCEL 0
|
||||
#define HAVE_SCHED_GETAFFINITY 1
|
||||
#define HAVE_SECITEMIMPORT 0
|
||||
#define HAVE_SETCONSOLETEXTATTRIBUTE 0
|
||||
#define HAVE_SETCONSOLECTRLHANDLER 0
|
||||
#define HAVE_SETDLLDIRECTORY 0
|
||||
#define HAVE_SETMODE 0
|
||||
#define HAVE_SETRLIMIT 1
|
||||
#define HAVE_SLEEP 0
|
||||
#define HAVE_STRERROR_R 1
|
||||
#define HAVE_SYSCONF 1
|
||||
#define HAVE_SYSCTL 0
|
||||
#define HAVE_USLEEP 1
|
||||
#define HAVE_UTGETOSTYPEFROMSTRING 0
|
||||
#define HAVE_VIRTUALALLOC 0
|
||||
#define HAVE_WGLGETPROCADDRESS 0
|
||||
#define HAVE_BCRYPT 0
|
||||
#define HAVE_VAAPI_DRM 0
|
||||
#define HAVE_VAAPI_X11 0
|
||||
#define HAVE_VDPAU_X11 0
|
||||
#define HAVE_PTHREADS 1
|
||||
#define HAVE_OS2THREADS 0
|
||||
#define HAVE_W32THREADS 0
|
||||
#define HAVE_AS_ARCH_DIRECTIVE 0
|
||||
#define HAVE_AS_DN_DIRECTIVE 0
|
||||
#define HAVE_AS_FPU_DIRECTIVE 0
|
||||
#define HAVE_AS_FUNC 0
|
||||
#define HAVE_AS_OBJECT_ARCH 0
|
||||
#define HAVE_ASM_MOD_Q 0
|
||||
#define HAVE_BLOCKS_EXTENSION 0
|
||||
#define HAVE_EBP_AVAILABLE 0
|
||||
#define HAVE_EBX_AVAILABLE 0
|
||||
#define HAVE_GNU_AS 0
|
||||
#define HAVE_GNU_WINDRES 0
|
||||
#define HAVE_IBM_ASM 0
|
||||
#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 0
|
||||
#define HAVE_INLINE_ASM_LABELS 1
|
||||
#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
|
||||
#define HAVE_PRAGMA_DEPRECATED 1
|
||||
#define HAVE_RSYNC_CONTIMEOUT 0
|
||||
#define HAVE_SYMVER_ASM_LABEL 1
|
||||
#define HAVE_SYMVER_GNU_ASM 1
|
||||
#define HAVE_VFP_ARGS 0
|
||||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_VP9 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
|
||||
#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
#define HAVE_STRUCT_IP_MREQ_SOURCE 1
|
||||
#define HAVE_STRUCT_IPV6_MREQ 1
|
||||
#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 1
|
||||
#define HAVE_STRUCT_POLLFD 1
|
||||
#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
|
||||
#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
|
||||
#define HAVE_STRUCT_SOCKADDR_IN6 1
|
||||
#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
|
||||
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
|
||||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
#define HAVE_GZIP 1
|
||||
#define HAVE_LIBDRM_GETFB2 0
|
||||
#define HAVE_MAKEINFO 1
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_OPENCL_D3D11 0
|
||||
#define HAVE_OPENCL_DRM_ARM 0
|
||||
#define HAVE_OPENCL_DRM_BEIGNET 0
|
||||
#define HAVE_OPENCL_DXVA2 0
|
||||
#define HAVE_OPENCL_VAAPI_BEIGNET 0
|
||||
#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
|
||||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_XMLLINT 1
|
||||
#define HAVE_ZLIB_GZIP 0
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 0
|
||||
#define CONFIG_MANPAGES 1
|
||||
#define CONFIG_PODPAGES 1
|
||||
#define CONFIG_TXTPAGES 1
|
||||
#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
#define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
#define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
#define CONFIG_METADATA_EXAMPLE 0
|
||||
#define CONFIG_MUXING_EXAMPLE 0
|
||||
#define CONFIG_QSVDEC_EXAMPLE 0
|
||||
#define CONFIG_REMUXING_EXAMPLE 0
|
||||
#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
|
||||
#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBDAVS2 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXAVS2 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_LIBTLS 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBARIBB24 0
|
||||
#define CONFIG_LIBLENSFUN 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_MBEDTLS 0
|
||||
#define CONFIG_RKMPP 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LCMS2 0
|
||||
#define CONFIG_LIBAOM 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
#define CONFIG_LIBBS2B 0
|
||||
#define CONFIG_LIBCACA 0
|
||||
#define CONFIG_LIBCELT 0
|
||||
#define CONFIG_LIBCODEC2 0
|
||||
#define CONFIG_LIBDAV1D 0
|
||||
#define CONFIG_LIBDC1394 0
|
||||
#define CONFIG_LIBDRM 0
|
||||
#define CONFIG_LIBFLITE 0
|
||||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
#define CONFIG_LIBFRIBIDI 0
|
||||
#define CONFIG_LIBGLSLANG 0
|
||||
#define CONFIG_LIBGME 0
|
||||
#define CONFIG_LIBGSM 0
|
||||
#define CONFIG_LIBIEC61883 0
|
||||
#define CONFIG_LIBILBC 0
|
||||
#define CONFIG_LIBJACK 0
|
||||
#define CONFIG_LIBJXL 0
|
||||
#define CONFIG_LIBKLVANC 0
|
||||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
#define CONFIG_LIBMP3LAME 0
|
||||
#define CONFIG_LIBMYSOFA 0
|
||||
#define CONFIG_LIBOPENCV 0
|
||||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPENVINO 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPLACEBO 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRABBITMQ 0
|
||||
#define CONFIG_LIBRAV1E 0
|
||||
#define CONFIG_LIBRIST 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBSHADERC 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
#define CONFIG_LIBSOXR 0
|
||||
#define CONFIG_LIBSPEEX 0
|
||||
#define CONFIG_LIBSRT 0
|
||||
#define CONFIG_LIBSSH 0
|
||||
#define CONFIG_LIBSVTAV1 0
|
||||
#define CONFIG_LIBTENSORFLOW 0
|
||||
#define CONFIG_LIBTESSERACT 0
|
||||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBUAVS3D 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
#define CONFIG_LIBZMQ 0
|
||||
#define CONFIG_LIBZVBI 0
|
||||
#define CONFIG_LV2 0
|
||||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_POCKETSPHINX 0
|
||||
#define CONFIG_VAPOURSYNTH 0
|
||||
#define CONFIG_ALSA 0
|
||||
#define CONFIG_APPKIT 0
|
||||
#define CONFIG_AVFOUNDATION 0
|
||||
#define CONFIG_BZLIB 0
|
||||
#define CONFIG_COREIMAGE 0
|
||||
#define CONFIG_ICONV 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIAFOUNDATION 0
|
||||
#define CONFIG_METAL 0
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
#define CONFIG_XLIB 0
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_CUDA_NVCC 0
|
||||
#define CONFIG_CUDA_SDK 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_OPENCL 0
|
||||
#define CONFIG_AMF 0
|
||||
#define CONFIG_AUDIOTOOLBOX 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_CUDA 0
|
||||
#define CONFIG_CUDA_LLVM 0
|
||||
#define CONFIG_CUVID 0
|
||||
#define CONFIG_D3D11VA 0
|
||||
#define CONFIG_DXVA2 0
|
||||
#define CONFIG_FFNVCODEC 0
|
||||
#define CONFIG_NVDEC 0
|
||||
#define CONFIG_NVENC 0
|
||||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_VULKAN 0
|
||||
#define CONFIG_V4L2_M2M 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
#define CONFIG_OMX_RPI 0
|
||||
#define CONFIG_RUNTIME_CPUDETECT 1
|
||||
#define CONFIG_SAFE_BITSTREAM_READER 1
|
||||
#define CONFIG_SHARED 1
|
||||
#define CONFIG_SMALL 1
|
||||
#define CONFIG_STATIC 0
|
||||
#define CONFIG_SWSCALE_ALPHA 1
|
||||
#define CONFIG_GPL 0
|
||||
#define CONFIG_NONFREE 0
|
||||
#define CONFIG_VERSION3 0
|
||||
#define CONFIG_AVDEVICE 0
|
||||
#define CONFIG_AVFILTER 0
|
||||
#define CONFIG_SWSCALE 0
|
||||
#define CONFIG_POSTPROC 0
|
||||
#define CONFIG_AVFORMAT 0
|
||||
#define CONFIG_AVCODEC 1
|
||||
#define CONFIG_SWRESAMPLE 0
|
||||
#define CONFIG_AVUTIL 1
|
||||
#define CONFIG_FFPLAY 0
|
||||
#define CONFIG_FFPROBE 0
|
||||
#define CONFIG_FFMPEG 0
|
||||
#define CONFIG_DCT 1
|
||||
#define CONFIG_DWT 0
|
||||
#define CONFIG_ERROR_RESILIENCE 0
|
||||
#define CONFIG_FAAN 1
|
||||
#define CONFIG_FAST_UNALIGNED 1
|
||||
#define CONFIG_FFT 1
|
||||
#define CONFIG_LSP 0
|
||||
#define CONFIG_MDCT 0
|
||||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 1
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_LARGE_TESTS 1
|
||||
#define CONFIG_LINUX_PERF 1
|
||||
#define CONFIG_MACOS_KPERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_PTX_COMPRESSION 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 0
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_ADTS_HEADER 0
|
||||
#define CONFIG_ATSC_A53 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
#define CONFIG_AUDIODSP 0
|
||||
#define CONFIG_BLOCKDSP 0
|
||||
#define CONFIG_BSWAPDSP 0
|
||||
#define CONFIG_CABAC 0
|
||||
#define CONFIG_CBS 0
|
||||
#define CONFIG_CBS_AV1 0
|
||||
#define CONFIG_CBS_H264 0
|
||||
#define CONFIG_CBS_H265 0
|
||||
#define CONFIG_CBS_JPEG 0
|
||||
#define CONFIG_CBS_MPEG2 0
|
||||
#define CONFIG_CBS_VP9 0
|
||||
#define CONFIG_DEFLATE_WRAPPER 0
|
||||
#define CONFIG_DIRAC_PARSE 0
|
||||
#define CONFIG_DNN 0
|
||||
#define CONFIG_DOVI_RPU 0
|
||||
#define CONFIG_DVPROFILE 0
|
||||
#define CONFIG_EXIF 0
|
||||
#define CONFIG_FAANDCT 1
|
||||
#define CONFIG_FAANIDCT 1
|
||||
#define CONFIG_FDCTDSP 1
|
||||
#define CONFIG_FLACDSP 1
|
||||
#define CONFIG_FMTCONVERT 0
|
||||
#define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
#define CONFIG_G722DSP 0
|
||||
#define CONFIG_GOLOMB 0
|
||||
#define CONFIG_GPLV3 0
|
||||
#define CONFIG_H263DSP 0
|
||||
#define CONFIG_H264CHROMA 0
|
||||
#define CONFIG_H264DSP 0
|
||||
#define CONFIG_H264PARSE 0
|
||||
#define CONFIG_H264PRED 0
|
||||
#define CONFIG_H264QPEL 0
|
||||
#define CONFIG_HEVCPARSE 0
|
||||
#define CONFIG_HPELDSP 0
|
||||
#define CONFIG_HUFFMAN 0
|
||||
#define CONFIG_HUFFYUVDSP 0
|
||||
#define CONFIG_HUFFYUVENCDSP 0
|
||||
#define CONFIG_IDCTDSP 1
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INFLATE_WRAPPER 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
#define CONFIG_JPEGTABLES 0
|
||||
#define CONFIG_LGPLV3 0
|
||||
#define CONFIG_LIBX262 0
|
||||
#define CONFIG_LLAUDDSP 0
|
||||
#define CONFIG_LLVIDDSP 0
|
||||
#define CONFIG_LLVIDENCDSP 0
|
||||
#define CONFIG_LPC 0
|
||||
#define CONFIG_LZF 0
|
||||
#define CONFIG_ME_CMP 0
|
||||
#define CONFIG_MPEG_ER 0
|
||||
#define CONFIG_MPEGAUDIO 1
|
||||
#define CONFIG_MPEGAUDIODSP 1
|
||||
#define CONFIG_MPEGAUDIOHEADER 1
|
||||
#define CONFIG_MPEG4AUDIO 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEODEC 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
#define CONFIG_PIXBLOCKDSP 0
|
||||
#define CONFIG_QPELDSP 0
|
||||
#define CONFIG_QSV 0
|
||||
#define CONFIG_QSVDEC 0
|
||||
#define CONFIG_QSVENC 0
|
||||
#define CONFIG_QSVVPP 0
|
||||
#define CONFIG_RANGECODER 0
|
||||
#define CONFIG_RIFFDEC 0
|
||||
#define CONFIG_RIFFENC 0
|
||||
#define CONFIG_RTPDEC 0
|
||||
#define CONFIG_RTPENC_CHAIN 0
|
||||
#define CONFIG_RV34DSP 0
|
||||
#define CONFIG_SCENE_SAD 0
|
||||
#define CONFIG_SINEWIN 0
|
||||
#define CONFIG_SNAPPY 0
|
||||
#define CONFIG_SRTP 0
|
||||
#define CONFIG_STARTCODE 0
|
||||
#define CONFIG_TEXTUREDSP 0
|
||||
#define CONFIG_TEXTUREDSPENC 0
|
||||
#define CONFIG_TPELDSP 0
|
||||
#define CONFIG_VAAPI_1 0
|
||||
#define CONFIG_VAAPI_ENCODE 0
|
||||
#define CONFIG_VC1DSP 0
|
||||
#define CONFIG_VIDEODSP 0
|
||||
#define CONFIG_VP3DSP 0
|
||||
#define CONFIG_VP56DSP 0
|
||||
#define CONFIG_VP8DSP 0
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#endif /* FFMPEG_CONFIG_H */
|
|
@ -1,740 +0,0 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-all --enable-avcodec --enable-parser='vp8,vp9' --enable-decoder='mp3,flac,vp8,vp9' --disable-static --enable-shared --disable-autodetect --enable-small --target-os=linux --arch=x86_64 --enable-cross-compile --cc=/Users/padenot/.mozbuild/android-ndk-r21d/toolchains/llvm/prebuilt/darwin-x86_64/bin/x86_64-linux-android21-clang"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2022
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "Android (6454773 based on r365631c2) clang version 9.0.8 (https://android.googlesource.com/toolchain/llvm-project 98c855489587874b2a325e7a516b99d838599c6f) (based on LLVM 9.0.8svn)"
|
||||
#define OS_NAME linux
|
||||
#define av_restrict restrict
|
||||
#define EXTERN_PREFIX ""
|
||||
#define EXTERN_ASM
|
||||
#define BUILDSUF ""
|
||||
#define SLIBSUF ".so"
|
||||
#define HAVE_MMX2 HAVE_MMXEXT
|
||||
#define SWS_MAX_FILTER_SIZE 256
|
||||
#define ARCH_AARCH64 0
|
||||
#define ARCH_ALPHA 0
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_AVR32 0
|
||||
#define ARCH_AVR32_AP 0
|
||||
#define ARCH_AVR32_UC 0
|
||||
#define ARCH_BFIN 0
|
||||
#define ARCH_IA64 0
|
||||
#define ARCH_LOONGARCH 0
|
||||
#define ARCH_LOONGARCH32 0
|
||||
#define ARCH_LOONGARCH64 0
|
||||
#define ARCH_M68K 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_MIPS64 0
|
||||
#define ARCH_PARISC 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_PPC64 0
|
||||
#define ARCH_RISCV 0
|
||||
#define ARCH_S390 0
|
||||
#define ARCH_SH4 0
|
||||
#define ARCH_SPARC 0
|
||||
#define ARCH_SPARC64 0
|
||||
#define ARCH_TILEGX 0
|
||||
#define ARCH_TILEPRO 0
|
||||
#define ARCH_TOMI 0
|
||||
#define ARCH_X86 1
|
||||
#define ARCH_X86_32 0
|
||||
#define ARCH_X86_64 1
|
||||
#define HAVE_ARMV5TE 0
|
||||
#define HAVE_ARMV6 0
|
||||
#define HAVE_ARMV6T2 0
|
||||
#define HAVE_ARMV8 0
|
||||
#define HAVE_NEON 0
|
||||
#define HAVE_VFP 0
|
||||
#define HAVE_VFPV3 0
|
||||
#define HAVE_SETEND 0
|
||||
#define HAVE_ALTIVEC 0
|
||||
#define HAVE_DCBZL 0
|
||||
#define HAVE_LDBRX 0
|
||||
#define HAVE_POWER8 0
|
||||
#define HAVE_PPC4XX 0
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_AESNI 1
|
||||
#define HAVE_AMD3DNOW 1
|
||||
#define HAVE_AMD3DNOWEXT 1
|
||||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_AVX512 1
|
||||
#define HAVE_AVX512ICL 1
|
||||
#define HAVE_FMA3 1
|
||||
#define HAVE_FMA4 1
|
||||
#define HAVE_MMX 1
|
||||
#define HAVE_MMXEXT 1
|
||||
#define HAVE_SSE 1
|
||||
#define HAVE_SSE2 1
|
||||
#define HAVE_SSE3 1
|
||||
#define HAVE_SSE4 1
|
||||
#define HAVE_SSE42 1
|
||||
#define HAVE_SSSE3 1
|
||||
#define HAVE_XOP 1
|
||||
#define HAVE_CPUNOP 0
|
||||
#define HAVE_I686 1
|
||||
#define HAVE_MIPSFPU 0
|
||||
#define HAVE_MIPS32R2 0
|
||||
#define HAVE_MIPS32R5 0
|
||||
#define HAVE_MIPS64R2 0
|
||||
#define HAVE_MIPS32R6 0
|
||||
#define HAVE_MIPS64R6 0
|
||||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_LSX 0
|
||||
#define HAVE_LASX 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 0
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
#define HAVE_ARMV6T2_EXTERNAL 0
|
||||
#define HAVE_ARMV8_EXTERNAL 0
|
||||
#define HAVE_NEON_EXTERNAL 0
|
||||
#define HAVE_VFP_EXTERNAL 0
|
||||
#define HAVE_VFPV3_EXTERNAL 0
|
||||
#define HAVE_SETEND_EXTERNAL 0
|
||||
#define HAVE_ALTIVEC_EXTERNAL 0
|
||||
#define HAVE_DCBZL_EXTERNAL 0
|
||||
#define HAVE_LDBRX_EXTERNAL 0
|
||||
#define HAVE_POWER8_EXTERNAL 0
|
||||
#define HAVE_PPC4XX_EXTERNAL 0
|
||||
#define HAVE_VSX_EXTERNAL 0
|
||||
#define HAVE_AESNI_EXTERNAL 1
|
||||
#define HAVE_AMD3DNOW_EXTERNAL 1
|
||||
#define HAVE_AMD3DNOWEXT_EXTERNAL 1
|
||||
#define HAVE_AVX_EXTERNAL 1
|
||||
#define HAVE_AVX2_EXTERNAL 1
|
||||
#define HAVE_AVX512_EXTERNAL 1
|
||||
#define HAVE_AVX512ICL_EXTERNAL 1
|
||||
#define HAVE_FMA3_EXTERNAL 1
|
||||
#define HAVE_FMA4_EXTERNAL 1
|
||||
#define HAVE_MMX_EXTERNAL 1
|
||||
#define HAVE_MMXEXT_EXTERNAL 1
|
||||
#define HAVE_SSE_EXTERNAL 1
|
||||
#define HAVE_SSE2_EXTERNAL 1
|
||||
#define HAVE_SSE3_EXTERNAL 1
|
||||
#define HAVE_SSE4_EXTERNAL 1
|
||||
#define HAVE_SSE42_EXTERNAL 1
|
||||
#define HAVE_SSSE3_EXTERNAL 1
|
||||
#define HAVE_XOP_EXTERNAL 1
|
||||
#define HAVE_CPUNOP_EXTERNAL 0
|
||||
#define HAVE_I686_EXTERNAL 0
|
||||
#define HAVE_MIPSFPU_EXTERNAL 0
|
||||
#define HAVE_MIPS32R2_EXTERNAL 0
|
||||
#define HAVE_MIPS32R5_EXTERNAL 0
|
||||
#define HAVE_MIPS64R2_EXTERNAL 0
|
||||
#define HAVE_MIPS32R6_EXTERNAL 0
|
||||
#define HAVE_MIPS64R6_EXTERNAL 0
|
||||
#define HAVE_MIPSDSP_EXTERNAL 0
|
||||
#define HAVE_MIPSDSPR2_EXTERNAL 0
|
||||
#define HAVE_MSA_EXTERNAL 0
|
||||
#define HAVE_LOONGSON2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON3_EXTERNAL 0
|
||||
#define HAVE_MMI_EXTERNAL 0
|
||||
#define HAVE_LSX_EXTERNAL 0
|
||||
#define HAVE_LASX_EXTERNAL 0
|
||||
#define HAVE_ARMV5TE_INLINE 0
|
||||
#define HAVE_ARMV6_INLINE 0
|
||||
#define HAVE_ARMV6T2_INLINE 0
|
||||
#define HAVE_ARMV8_INLINE 0
|
||||
#define HAVE_NEON_INLINE 0
|
||||
#define HAVE_VFP_INLINE 0
|
||||
#define HAVE_VFPV3_INLINE 0
|
||||
#define HAVE_SETEND_INLINE 0
|
||||
#define HAVE_ALTIVEC_INLINE 0
|
||||
#define HAVE_DCBZL_INLINE 0
|
||||
#define HAVE_LDBRX_INLINE 0
|
||||
#define HAVE_POWER8_INLINE 0
|
||||
#define HAVE_PPC4XX_INLINE 0
|
||||
#define HAVE_VSX_INLINE 0
|
||||
#define HAVE_AESNI_INLINE 1
|
||||
#define HAVE_AMD3DNOW_INLINE 1
|
||||
#define HAVE_AMD3DNOWEXT_INLINE 1
|
||||
#define HAVE_AVX_INLINE 1
|
||||
#define HAVE_AVX2_INLINE 1
|
||||
#define HAVE_AVX512_INLINE 1
|
||||
#define HAVE_AVX512ICL_INLINE 1
|
||||
#define HAVE_FMA3_INLINE 1
|
||||
#define HAVE_FMA4_INLINE 1
|
||||
#define HAVE_MMX_INLINE 1
|
||||
#define HAVE_MMXEXT_INLINE 1
|
||||
#define HAVE_SSE_INLINE 1
|
||||
#define HAVE_SSE2_INLINE 1
|
||||
#define HAVE_SSE3_INLINE 1
|
||||
#define HAVE_SSE4_INLINE 1
|
||||
#define HAVE_SSE42_INLINE 1
|
||||
#define HAVE_SSSE3_INLINE 1
|
||||
#define HAVE_XOP_INLINE 1
|
||||
#define HAVE_CPUNOP_INLINE 0
|
||||
#define HAVE_I686_INLINE 0
|
||||
#define HAVE_MIPSFPU_INLINE 0
|
||||
#define HAVE_MIPS32R2_INLINE 0
|
||||
#define HAVE_MIPS32R5_INLINE 0
|
||||
#define HAVE_MIPS64R2_INLINE 0
|
||||
#define HAVE_MIPS32R6_INLINE 0
|
||||
#define HAVE_MIPS64R6_INLINE 0
|
||||
#define HAVE_MIPSDSP_INLINE 0
|
||||
#define HAVE_MIPSDSPR2_INLINE 0
|
||||
#define HAVE_MSA_INLINE 0
|
||||
#define HAVE_LOONGSON2_INLINE 0
|
||||
#define HAVE_LOONGSON3_INLINE 0
|
||||
#define HAVE_MMI_INLINE 0
|
||||
#define HAVE_LSX_INLINE 0
|
||||
#define HAVE_LASX_INLINE 0
|
||||
#define HAVE_ALIGNED_STACK 1
|
||||
#define HAVE_FAST_64BIT 1
|
||||
#define HAVE_FAST_CLZ 1
|
||||
#define HAVE_FAST_CMOV 1
|
||||
#define HAVE_LOCAL_ALIGNED 1
|
||||
#define HAVE_SIMD_ALIGN_16 1
|
||||
#define HAVE_SIMD_ALIGN_32 1
|
||||
#define HAVE_SIMD_ALIGN_64 1
|
||||
#define HAVE_ATOMIC_CAS_PTR 0
|
||||
#define HAVE_MACHINE_RW_BARRIER 0
|
||||
#define HAVE_MEMORYBARRIER 0
|
||||
#define HAVE_MM_EMPTY 1
|
||||
#define HAVE_RDTSC 0
|
||||
#define HAVE_SEM_TIMEDWAIT 1
|
||||
#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
|
||||
#define HAVE_CABS 0
|
||||
#define HAVE_CEXP 0
|
||||
#define HAVE_INLINE_ASM 1
|
||||
#define HAVE_SYMVER 1
|
||||
#define HAVE_X86ASM 1
|
||||
#define HAVE_BIGENDIAN 0
|
||||
#define HAVE_FAST_UNALIGNED 1
|
||||
#define HAVE_ARPA_INET_H 1
|
||||
#define HAVE_ASM_TYPES_H 1
|
||||
#define HAVE_CDIO_PARANOIA_H 0
|
||||
#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
#define HAVE_CUDA_H 0
|
||||
#define HAVE_DISPATCH_DISPATCH_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
#define HAVE_DEV_IC_BT8XX_H 0
|
||||
#define HAVE_DEV_VIDEO_BKTR_IOCTL_BT848_H 0
|
||||
#define HAVE_DEV_VIDEO_METEOR_IOCTL_METEOR_H 0
|
||||
#define HAVE_DIRECT_H 0
|
||||
#define HAVE_DIRENT_H 1
|
||||
#define HAVE_DXGIDEBUG_H 0
|
||||
#define HAVE_DXVA_H 0
|
||||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
#define HAVE_IO_H 0
|
||||
#define HAVE_LINUX_DMA_BUF_H 0
|
||||
#define HAVE_LINUX_PERF_EVENT_H 1
|
||||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
#define HAVE_MALLOC_H 1
|
||||
#define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
#define HAVE_OPENGL_GL3_H 0
|
||||
#define HAVE_POLL_H 1
|
||||
#define HAVE_SYS_PARAM_H 1
|
||||
#define HAVE_SYS_RESOURCE_H 1
|
||||
#define HAVE_SYS_SELECT_H 1
|
||||
#define HAVE_SYS_SOUNDCARD_H 0
|
||||
#define HAVE_SYS_TIME_H 1
|
||||
#define HAVE_SYS_UN_H 1
|
||||
#define HAVE_SYS_VIDEOIO_H 0
|
||||
#define HAVE_TERMIOS_H 1
|
||||
#define HAVE_UDPLITE_H 0
|
||||
#define HAVE_UNISTD_H 1
|
||||
#define HAVE_VALGRIND_VALGRIND_H 0
|
||||
#define HAVE_WINDOWS_H 0
|
||||
#define HAVE_WINSOCK2_H 0
|
||||
#define HAVE_INTRINSICS_NEON 0
|
||||
#define HAVE_ATANF 1
|
||||
#define HAVE_ATAN2F 1
|
||||
#define HAVE_CBRT 1
|
||||
#define HAVE_CBRTF 1
|
||||
#define HAVE_COPYSIGN 1
|
||||
#define HAVE_COSF 1
|
||||
#define HAVE_ERF 1
|
||||
#define HAVE_EXP2 1
|
||||
#define HAVE_EXP2F 1
|
||||
#define HAVE_EXPF 1
|
||||
#define HAVE_HYPOT 1
|
||||
#define HAVE_ISFINITE 1
|
||||
#define HAVE_ISINF 1
|
||||
#define HAVE_ISNAN 1
|
||||
#define HAVE_LDEXPF 1
|
||||
#define HAVE_LLRINT 1
|
||||
#define HAVE_LLRINTF 1
|
||||
#define HAVE_LOG2 1
|
||||
#define HAVE_LOG2F 1
|
||||
#define HAVE_LOG10F 1
|
||||
#define HAVE_LRINT 1
|
||||
#define HAVE_LRINTF 1
|
||||
#define HAVE_POWF 1
|
||||
#define HAVE_RINT 1
|
||||
#define HAVE_ROUND 1
|
||||
#define HAVE_ROUNDF 1
|
||||
#define HAVE_SINF 1
|
||||
#define HAVE_TRUNC 1
|
||||
#define HAVE_TRUNCF 1
|
||||
#define HAVE_DOS_PATHS 0
|
||||
#define HAVE_LIBC_MSVCRT 0
|
||||
#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
#define HAVE_SECTION_DATA_REL_RO 1
|
||||
#define HAVE_THREADS 1
|
||||
#define HAVE_UWP 0
|
||||
#define HAVE_WINRT 0
|
||||
#define HAVE_ACCESS 1
|
||||
#define HAVE_ALIGNED_MALLOC 0
|
||||
#define HAVE_ARC4RANDOM 1
|
||||
#define HAVE_CLOCK_GETTIME 1
|
||||
#define HAVE_CLOSESOCKET 0
|
||||
#define HAVE_COMMANDLINETOARGVW 0
|
||||
#define HAVE_FCNTL 1
|
||||
#define HAVE_GETADDRINFO 1
|
||||
#define HAVE_GETAUXVAL 1
|
||||
#define HAVE_GETENV 1
|
||||
#define HAVE_GETHRTIME 0
|
||||
#define HAVE_GETOPT 1
|
||||
#define HAVE_GETMODULEHANDLE 0
|
||||
#define HAVE_GETPROCESSAFFINITYMASK 0
|
||||
#define HAVE_GETPROCESSMEMORYINFO 0
|
||||
#define HAVE_GETPROCESSTIMES 0
|
||||
#define HAVE_GETRUSAGE 1
|
||||
#define HAVE_GETSTDHANDLE 0
|
||||
#define HAVE_GETSYSTEMTIMEASFILETIME 0
|
||||
#define HAVE_GETTIMEOFDAY 1
|
||||
#define HAVE_GLOB 0
|
||||
#define HAVE_GLXGETPROCADDRESS 0
|
||||
#define HAVE_GMTIME_R 1
|
||||
#define HAVE_INET_ATON 1
|
||||
#define HAVE_ISATTY 1
|
||||
#define HAVE_KBHIT 0
|
||||
#define HAVE_LOCALTIME_R 1
|
||||
#define HAVE_LSTAT 1
|
||||
#define HAVE_LZO1X_999_COMPRESS 0
|
||||
#define HAVE_MACH_ABSOLUTE_TIME 0
|
||||
#define HAVE_MAPVIEWOFFILE 0
|
||||
#define HAVE_MEMALIGN 1
|
||||
#define HAVE_MKSTEMP 1
|
||||
#define HAVE_MMAP 1
|
||||
#define HAVE_MPROTECT 1
|
||||
#define HAVE_NANOSLEEP 1
|
||||
#define HAVE_PEEKNAMEDPIPE 0
|
||||
#define HAVE_POSIX_MEMALIGN 1
|
||||
#define HAVE_PTHREAD_CANCEL 0
|
||||
#define HAVE_SCHED_GETAFFINITY 1
|
||||
#define HAVE_SECITEMIMPORT 0
|
||||
#define HAVE_SETCONSOLETEXTATTRIBUTE 0
|
||||
#define HAVE_SETCONSOLECTRLHANDLER 0
|
||||
#define HAVE_SETDLLDIRECTORY 0
|
||||
#define HAVE_SETMODE 0
|
||||
#define HAVE_SETRLIMIT 1
|
||||
#define HAVE_SLEEP 0
|
||||
#define HAVE_STRERROR_R 1
|
||||
#define HAVE_SYSCONF 1
|
||||
#define HAVE_SYSCTL 0
|
||||
#define HAVE_USLEEP 1
|
||||
#define HAVE_UTGETOSTYPEFROMSTRING 0
|
||||
#define HAVE_VIRTUALALLOC 0
|
||||
#define HAVE_WGLGETPROCADDRESS 0
|
||||
#define HAVE_BCRYPT 0
|
||||
#define HAVE_VAAPI_DRM 0
|
||||
#define HAVE_VAAPI_X11 0
|
||||
#define HAVE_VDPAU_X11 0
|
||||
#define HAVE_PTHREADS 1
|
||||
#define HAVE_OS2THREADS 0
|
||||
#define HAVE_W32THREADS 0
|
||||
#define HAVE_AS_ARCH_DIRECTIVE 0
|
||||
#define HAVE_AS_DN_DIRECTIVE 0
|
||||
#define HAVE_AS_FPU_DIRECTIVE 0
|
||||
#define HAVE_AS_FUNC 0
|
||||
#define HAVE_AS_OBJECT_ARCH 0
|
||||
#define HAVE_ASM_MOD_Q 0
|
||||
#define HAVE_BLOCKS_EXTENSION 0
|
||||
#define HAVE_EBP_AVAILABLE 1
|
||||
#define HAVE_EBX_AVAILABLE 1
|
||||
#define HAVE_GNU_AS 0
|
||||
#define HAVE_GNU_WINDRES 0
|
||||
#define HAVE_IBM_ASM 0
|
||||
#define HAVE_INLINE_ASM_DIRECT_SYMBOL_REFS 1
|
||||
#define HAVE_INLINE_ASM_LABELS 1
|
||||
#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
|
||||
#define HAVE_PRAGMA_DEPRECATED 1
|
||||
#define HAVE_RSYNC_CONTIMEOUT 0
|
||||
#define HAVE_SYMVER_ASM_LABEL 1
|
||||
#define HAVE_SYMVER_GNU_ASM 1
|
||||
#define HAVE_VFP_ARGS 0
|
||||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 1
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_VP9 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
|
||||
#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
#define HAVE_STRUCT_IP_MREQ_SOURCE 1
|
||||
#define HAVE_STRUCT_IPV6_MREQ 1
|
||||
#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 1
|
||||
#define HAVE_STRUCT_POLLFD 1
|
||||
#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1
|
||||
#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
|
||||
#define HAVE_STRUCT_SOCKADDR_IN6 1
|
||||
#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
|
||||
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
|
||||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
#define HAVE_GZIP 1
|
||||
#define HAVE_LIBDRM_GETFB2 0
|
||||
#define HAVE_MAKEINFO 1
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_OPENCL_D3D11 0
|
||||
#define HAVE_OPENCL_DRM_ARM 0
|
||||
#define HAVE_OPENCL_DRM_BEIGNET 0
|
||||
#define HAVE_OPENCL_DXVA2 0
|
||||
#define HAVE_OPENCL_VAAPI_BEIGNET 0
|
||||
#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
|
||||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_XMLLINT 1
|
||||
#define HAVE_ZLIB_GZIP 0
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 0
|
||||
#define CONFIG_MANPAGES 1
|
||||
#define CONFIG_PODPAGES 1
|
||||
#define CONFIG_TXTPAGES 1
|
||||
#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
#define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
#define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
#define CONFIG_METADATA_EXAMPLE 0
|
||||
#define CONFIG_MUXING_EXAMPLE 0
|
||||
#define CONFIG_QSVDEC_EXAMPLE 0
|
||||
#define CONFIG_REMUXING_EXAMPLE 0
|
||||
#define CONFIG_RESAMPLING_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
#define CONFIG_VAAPI_ENCODE_EXAMPLE 0
|
||||
#define CONFIG_VAAPI_TRANSCODE_EXAMPLE 0
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBDAVS2 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXAVS2 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_LIBTLS 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBARIBB24 0
|
||||
#define CONFIG_LIBLENSFUN 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_MBEDTLS 0
|
||||
#define CONFIG_RKMPP 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LCMS2 0
|
||||
#define CONFIG_LIBAOM 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
#define CONFIG_LIBBS2B 0
|
||||
#define CONFIG_LIBCACA 0
|
||||
#define CONFIG_LIBCELT 0
|
||||
#define CONFIG_LIBCODEC2 0
|
||||
#define CONFIG_LIBDAV1D 0
|
||||
#define CONFIG_LIBDC1394 0
|
||||
#define CONFIG_LIBDRM 0
|
||||
#define CONFIG_LIBFLITE 0
|
||||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
#define CONFIG_LIBFRIBIDI 0
|
||||
#define CONFIG_LIBGLSLANG 0
|
||||
#define CONFIG_LIBGME 0
|
||||
#define CONFIG_LIBGSM 0
|
||||
#define CONFIG_LIBIEC61883 0
|
||||
#define CONFIG_LIBILBC 0
|
||||
#define CONFIG_LIBJACK 0
|
||||
#define CONFIG_LIBJXL 0
|
||||
#define CONFIG_LIBKLVANC 0
|
||||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
#define CONFIG_LIBMP3LAME 0
|
||||
#define CONFIG_LIBMYSOFA 0
|
||||
#define CONFIG_LIBOPENCV 0
|
||||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPENVINO 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPLACEBO 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRABBITMQ 0
|
||||
#define CONFIG_LIBRAV1E 0
|
||||
#define CONFIG_LIBRIST 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBSHADERC 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
#define CONFIG_LIBSOXR 0
|
||||
#define CONFIG_LIBSPEEX 0
|
||||
#define CONFIG_LIBSRT 0
|
||||
#define CONFIG_LIBSSH 0
|
||||
#define CONFIG_LIBSVTAV1 0
|
||||
#define CONFIG_LIBTENSORFLOW 0
|
||||
#define CONFIG_LIBTESSERACT 0
|
||||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBUAVS3D 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
#define CONFIG_LIBZMQ 0
|
||||
#define CONFIG_LIBZVBI 0
|
||||
#define CONFIG_LV2 0
|
||||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_POCKETSPHINX 0
|
||||
#define CONFIG_VAPOURSYNTH 0
|
||||
#define CONFIG_ALSA 0
|
||||
#define CONFIG_APPKIT 0
|
||||
#define CONFIG_AVFOUNDATION 0
|
||||
#define CONFIG_BZLIB 0
|
||||
#define CONFIG_COREIMAGE 0
|
||||
#define CONFIG_ICONV 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIAFOUNDATION 0
|
||||
#define CONFIG_METAL 0
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
#define CONFIG_XLIB 0
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_CUDA_NVCC 0
|
||||
#define CONFIG_CUDA_SDK 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_OPENCL 0
|
||||
#define CONFIG_AMF 0
|
||||
#define CONFIG_AUDIOTOOLBOX 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_CUDA 0
|
||||
#define CONFIG_CUDA_LLVM 0
|
||||
#define CONFIG_CUVID 0
|
||||
#define CONFIG_D3D11VA 0
|
||||
#define CONFIG_DXVA2 0
|
||||
#define CONFIG_FFNVCODEC 0
|
||||
#define CONFIG_NVDEC 0
|
||||
#define CONFIG_NVENC 0
|
||||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_VULKAN 0
|
||||
#define CONFIG_V4L2_M2M 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
#define CONFIG_OMX_RPI 0
|
||||
#define CONFIG_RUNTIME_CPUDETECT 1
|
||||
#define CONFIG_SAFE_BITSTREAM_READER 1
|
||||
#define CONFIG_SHARED 1
|
||||
#define CONFIG_SMALL 1
|
||||
#define CONFIG_STATIC 0
|
||||
#define CONFIG_SWSCALE_ALPHA 1
|
||||
#define CONFIG_GPL 0
|
||||
#define CONFIG_NONFREE 0
|
||||
#define CONFIG_VERSION3 0
|
||||
#define CONFIG_AVDEVICE 0
|
||||
#define CONFIG_AVFILTER 0
|
||||
#define CONFIG_SWSCALE 0
|
||||
#define CONFIG_POSTPROC 0
|
||||
#define CONFIG_AVFORMAT 0
|
||||
#define CONFIG_AVCODEC 1
|
||||
#define CONFIG_SWRESAMPLE 0
|
||||
#define CONFIG_AVUTIL 1
|
||||
#define CONFIG_FFPLAY 0
|
||||
#define CONFIG_FFPROBE 0
|
||||
#define CONFIG_FFMPEG 0
|
||||
#define CONFIG_DCT 1
|
||||
#define CONFIG_DWT 0
|
||||
#define CONFIG_ERROR_RESILIENCE 0
|
||||
#define CONFIG_FAAN 1
|
||||
#define CONFIG_FAST_UNALIGNED 1
|
||||
#define CONFIG_FFT 1
|
||||
#define CONFIG_LSP 0
|
||||
#define CONFIG_MDCT 0
|
||||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 1
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_LARGE_TESTS 1
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MACOS_KPERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_PTX_COMPRESSION 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_ADTS_HEADER 0
|
||||
#define CONFIG_ATSC_A53 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
#define CONFIG_AUDIODSP 0
|
||||
#define CONFIG_BLOCKDSP 0
|
||||
#define CONFIG_BSWAPDSP 0
|
||||
#define CONFIG_CABAC 0
|
||||
#define CONFIG_CBS 0
|
||||
#define CONFIG_CBS_AV1 0
|
||||
#define CONFIG_CBS_H264 0
|
||||
#define CONFIG_CBS_H265 0
|
||||
#define CONFIG_CBS_JPEG 0
|
||||
#define CONFIG_CBS_MPEG2 0
|
||||
#define CONFIG_CBS_VP9 0
|
||||
#define CONFIG_DEFLATE_WRAPPER 0
|
||||
#define CONFIG_DIRAC_PARSE 0
|
||||
#define CONFIG_DNN 0
|
||||
#define CONFIG_DOVI_RPU 0
|
||||
#define CONFIG_DVPROFILE 0
|
||||
#define CONFIG_EXIF 0
|
||||
#define CONFIG_FAANDCT 1
|
||||
#define CONFIG_FAANIDCT 1
|
||||
#define CONFIG_FDCTDSP 1
|
||||
#define CONFIG_FLACDSP 1
|
||||
#define CONFIG_FMTCONVERT 0
|
||||
#define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
#define CONFIG_G722DSP 0
|
||||
#define CONFIG_GOLOMB 0
|
||||
#define CONFIG_GPLV3 0
|
||||
#define CONFIG_H263DSP 0
|
||||
#define CONFIG_H264CHROMA 0
|
||||
#define CONFIG_H264DSP 0
|
||||
#define CONFIG_H264PARSE 0
|
||||
#define CONFIG_H264PRED 1
|
||||
#define CONFIG_H264QPEL 0
|
||||
#define CONFIG_HEVCPARSE 0
|
||||
#define CONFIG_HPELDSP 0
|
||||
#define CONFIG_HUFFMAN 0
|
||||
#define CONFIG_HUFFYUVDSP 0
|
||||
#define CONFIG_HUFFYUVENCDSP 0
|
||||
#define CONFIG_IDCTDSP 1
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INFLATE_WRAPPER 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
#define CONFIG_JPEGTABLES 0
|
||||
#define CONFIG_LGPLV3 0
|
||||
#define CONFIG_LIBX262 0
|
||||
#define CONFIG_LLAUDDSP 0
|
||||
#define CONFIG_LLVIDDSP 0
|
||||
#define CONFIG_LLVIDENCDSP 0
|
||||
#define CONFIG_LPC 0
|
||||
#define CONFIG_LZF 0
|
||||
#define CONFIG_ME_CMP 0
|
||||
#define CONFIG_MPEG_ER 0
|
||||
#define CONFIG_MPEGAUDIO 1
|
||||
#define CONFIG_MPEGAUDIODSP 1
|
||||
#define CONFIG_MPEGAUDIOHEADER 1
|
||||
#define CONFIG_MPEG4AUDIO 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEODEC 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
#define CONFIG_PIXBLOCKDSP 0
|
||||
#define CONFIG_QPELDSP 0
|
||||
#define CONFIG_QSV 0
|
||||
#define CONFIG_QSVDEC 0
|
||||
#define CONFIG_QSVENC 0
|
||||
#define CONFIG_QSVVPP 0
|
||||
#define CONFIG_RANGECODER 0
|
||||
#define CONFIG_RIFFDEC 0
|
||||
#define CONFIG_RIFFENC 0
|
||||
#define CONFIG_RTPDEC 0
|
||||
#define CONFIG_RTPENC_CHAIN 0
|
||||
#define CONFIG_RV34DSP 0
|
||||
#define CONFIG_SCENE_SAD 0
|
||||
#define CONFIG_SINEWIN 0
|
||||
#define CONFIG_SNAPPY 0
|
||||
#define CONFIG_SRTP 0
|
||||
#define CONFIG_STARTCODE 0
|
||||
#define CONFIG_TEXTUREDSP 0
|
||||
#define CONFIG_TEXTUREDSPENC 0
|
||||
#define CONFIG_TPELDSP 0
|
||||
#define CONFIG_VAAPI_1 0
|
||||
#define CONFIG_VAAPI_ENCODE 0
|
||||
#define CONFIG_VC1DSP 0
|
||||
#define CONFIG_VIDEODSP 1
|
||||
#define CONFIG_VP3DSP 0
|
||||
#define CONFIG_VP56DSP 0
|
||||
#define CONFIG_VP8DSP 1
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#endif /* FFMPEG_CONFIG_H */
|
|
@ -1,5 +1,15 @@
|
|||
#ifndef MOZ_FFVPX_CONFIG_COMMON_H
|
||||
#define MOZ_FFVPX_CONFIG_COMMON_H
|
||||
#include "defaults_disabled.h"
|
||||
|
||||
#ifdef YASM_MISSING_AVX2
|
||||
#undef HAVE_AVX2
|
||||
#undef HAVE_AVX2_INTERNAL
|
||||
#undef HAVE_AVX2_EXTERNAL
|
||||
#define HAVE_AVX2 0
|
||||
#define HAVE_AVX2_INTERNAL 0
|
||||
#define HAVE_AVX2_EXTERNAL 0
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_LIBAV_FFT
|
||||
#undef CONFIG_FFT
|
||||
|
@ -14,17 +24,15 @@
|
|||
#undef CONFIG_VP8_VAAPI_HWACCEL
|
||||
#undef CONFIG_VP9_VAAPI_HWACCEL
|
||||
#undef CONFIG_AV1_VAAPI_HWACCEL
|
||||
#undef CONFIG_LIBDAV1D
|
||||
#undef CONFIG_AV1_DECODER
|
||||
#define CONFIG_VAAPI 1
|
||||
#define CONFIG_VAAPI_1 1
|
||||
#define CONFIG_VP8_VAAPI_HWACCEL 1
|
||||
#define CONFIG_VP9_VAAPI_HWACCEL 1
|
||||
#define CONFIG_AV1_VAAPI_HWACCEL 1
|
||||
#else
|
||||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VAAPI_1 0
|
||||
#define CONFIG_VP8_VAAPI_HWACCEL 0
|
||||
#define CONFIG_VP9_VAAPI_HWACCEL 0
|
||||
#define CONFIG_AV1_VAAPI_HWACCEL 0
|
||||
#define CONFIG_LIBDAV1D 1
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -1,18 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifndef MOZ_FFVPX_CONFIG__COMPONENTS_H
|
||||
#define MOZ_FFVPX_CONFIG__COMPONENTS_H
|
||||
|
||||
|
||||
#if defined(MOZ_FFVPX_AUDIOONLY)
|
||||
# include "config_components_audio_only.h"
|
||||
#else
|
||||
# include "config_components_audio_video.h"
|
||||
# include "config_desktop.h"
|
||||
#endif
|
||||
|
||||
#endif // MOZ_FFVPX_CONFIG__COMPONENTS_H
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -1,16 +1,15 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-all --enable-avcodec --enable-decoder='vp8,vp9,mp3,flac' --enable-parser='vp8,vp9' --disable-static --enable-shared --disable-autodetect --disable-asm --disable-x86asm --cc='clang -m32' --disable-iconv"
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vdpau --disable-videotoolbox --enable-decoder=flac --disable-asm --disable-x86asm --disable-cuda --disable-cuvid --enable-decoder=mp3"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2022
|
||||
#define CONFIG_THIS_YEAR 2019
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "Ubuntu clang version 14.0.0-1ubuntu1"
|
||||
#define OS_NAME linux
|
||||
#define CC_IDENT "gcc 6.3.0 (Ubuntu 6.3.0-12ubuntu2) 20170406"
|
||||
#define av_restrict restrict
|
||||
#define EXTERN_PREFIX ""
|
||||
#define EXTERN_ASM
|
||||
#define EXTERN_ASM
|
||||
#define BUILDSUF ""
|
||||
#define SLIBSUF ".so"
|
||||
#define HAVE_MMX2 HAVE_MMXEXT
|
||||
|
@ -23,16 +22,12 @@
|
|||
#define ARCH_AVR32_UC 0
|
||||
#define ARCH_BFIN 0
|
||||
#define ARCH_IA64 0
|
||||
#define ARCH_LOONGARCH 0
|
||||
#define ARCH_LOONGARCH32 0
|
||||
#define ARCH_LOONGARCH64 0
|
||||
#define ARCH_M68K 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_MIPS64 0
|
||||
#define ARCH_PARISC 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_PPC64 0
|
||||
#define ARCH_RISCV 0
|
||||
#define ARCH_S390 0
|
||||
#define ARCH_SH4 0
|
||||
#define ARCH_SPARC 0
|
||||
|
@ -63,7 +58,6 @@
|
|||
#define HAVE_AVX 0
|
||||
#define HAVE_AVX2 0
|
||||
#define HAVE_AVX512 0
|
||||
#define HAVE_AVX512ICL 0
|
||||
#define HAVE_FMA3 0
|
||||
#define HAVE_FMA4 0
|
||||
#define HAVE_MMX 0
|
||||
|
@ -86,11 +80,10 @@
|
|||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_MSA2 0
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_LSX 0
|
||||
#define HAVE_LASX 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 0
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
#define HAVE_ARMV6T2_EXTERNAL 0
|
||||
|
@ -111,7 +104,6 @@
|
|||
#define HAVE_AVX_EXTERNAL 0
|
||||
#define HAVE_AVX2_EXTERNAL 0
|
||||
#define HAVE_AVX512_EXTERNAL 0
|
||||
#define HAVE_AVX512ICL_EXTERNAL 0
|
||||
#define HAVE_FMA3_EXTERNAL 0
|
||||
#define HAVE_FMA4_EXTERNAL 0
|
||||
#define HAVE_MMX_EXTERNAL 0
|
||||
|
@ -134,11 +126,10 @@
|
|||
#define HAVE_MIPSDSP_EXTERNAL 0
|
||||
#define HAVE_MIPSDSPR2_EXTERNAL 0
|
||||
#define HAVE_MSA_EXTERNAL 0
|
||||
#define HAVE_MSA2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON3_EXTERNAL 0
|
||||
#define HAVE_MMI_EXTERNAL 0
|
||||
#define HAVE_LSX_EXTERNAL 0
|
||||
#define HAVE_LASX_EXTERNAL 0
|
||||
#define HAVE_ARMV5TE_INLINE 0
|
||||
#define HAVE_ARMV6_INLINE 0
|
||||
#define HAVE_ARMV6T2_INLINE 0
|
||||
|
@ -159,7 +150,6 @@
|
|||
#define HAVE_AVX_INLINE 0
|
||||
#define HAVE_AVX2_INLINE 0
|
||||
#define HAVE_AVX512_INLINE 0
|
||||
#define HAVE_AVX512ICL_INLINE 0
|
||||
#define HAVE_FMA3_INLINE 0
|
||||
#define HAVE_FMA4_INLINE 0
|
||||
#define HAVE_MMX_INLINE 0
|
||||
|
@ -182,11 +172,10 @@
|
|||
#define HAVE_MIPSDSP_INLINE 0
|
||||
#define HAVE_MIPSDSPR2_INLINE 0
|
||||
#define HAVE_MSA_INLINE 0
|
||||
#define HAVE_MSA2_INLINE 0
|
||||
#define HAVE_LOONGSON2_INLINE 0
|
||||
#define HAVE_LOONGSON3_INLINE 0
|
||||
#define HAVE_MMI_INLINE 0
|
||||
#define HAVE_LSX_INLINE 0
|
||||
#define HAVE_LASX_INLINE 0
|
||||
#define HAVE_ALIGNED_STACK 0
|
||||
#define HAVE_FAST_64BIT 0
|
||||
#define HAVE_FAST_CLZ 0
|
||||
|
@ -202,8 +191,8 @@
|
|||
#define HAVE_RDTSC 0
|
||||
#define HAVE_SEM_TIMEDWAIT 1
|
||||
#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
|
||||
#define HAVE_CABS 0
|
||||
#define HAVE_CEXP 0
|
||||
#define HAVE_CABS 1
|
||||
#define HAVE_CEXP 1
|
||||
#define HAVE_INLINE_ASM 1
|
||||
#define HAVE_SYMVER 1
|
||||
#define HAVE_X86ASM 0
|
||||
|
@ -227,8 +216,7 @@
|
|||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
#define HAVE_IO_H 0
|
||||
#define HAVE_LINUX_DMA_BUF_H 0
|
||||
#define HAVE_LINUX_PERF_EVENT_H 1
|
||||
#define HAVE_LINUX_PERF_EVENT_H 0
|
||||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
#define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
|
@ -280,7 +268,7 @@
|
|||
#define HAVE_DOS_PATHS 0
|
||||
#define HAVE_LIBC_MSVCRT 0
|
||||
#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
#define HAVE_SECTION_DATA_REL_RO 1
|
||||
#define HAVE_SECTION_DATA_REL_RO 0
|
||||
#define HAVE_THREADS 1
|
||||
#define HAVE_UWP 0
|
||||
#define HAVE_WINRT 0
|
||||
|
@ -291,16 +279,12 @@
|
|||
#define HAVE_COMMANDLINETOARGVW 0
|
||||
#define HAVE_FCNTL 1
|
||||
#define HAVE_GETADDRINFO 1
|
||||
#define HAVE_GETAUXVAL 1
|
||||
#define HAVE_GETENV 1
|
||||
#define HAVE_GETHRTIME 0
|
||||
#define HAVE_GETOPT 1
|
||||
#define HAVE_GETMODULEHANDLE 0
|
||||
#define HAVE_GETPROCESSAFFINITYMASK 0
|
||||
#define HAVE_GETPROCESSMEMORYINFO 0
|
||||
#define HAVE_GETPROCESSTIMES 0
|
||||
#define HAVE_GETRUSAGE 1
|
||||
#define HAVE_GETSTDHANDLE 0
|
||||
#define HAVE_GETSYSTEMTIMEASFILETIME 0
|
||||
#define HAVE_GETTIMEOFDAY 1
|
||||
#define HAVE_GLOB 1
|
||||
|
@ -319,11 +303,10 @@
|
|||
#define HAVE_NANOSLEEP 1
|
||||
#define HAVE_PEEKNAMEDPIPE 0
|
||||
#define HAVE_PTHREAD_CANCEL 1
|
||||
#define HAVE_SCHED_GETAFFINITY 1
|
||||
#define HAVE_SCHED_GETAFFINITY 0
|
||||
#define HAVE_SECITEMIMPORT 0
|
||||
#define HAVE_SETCONSOLETEXTATTRIBUTE 0
|
||||
#define HAVE_SETCONSOLECTRLHANDLER 0
|
||||
#define HAVE_SETDLLDIRECTORY 0
|
||||
#define HAVE_SETMODE 0
|
||||
#define HAVE_SETRLIMIT 1
|
||||
#define HAVE_SLEEP 0
|
||||
|
@ -358,28 +341,13 @@
|
|||
#define HAVE_INLINE_ASM_NONLOCAL_LABELS 1
|
||||
#define HAVE_PRAGMA_DEPRECATED 1
|
||||
#define HAVE_RSYNC_CONTIMEOUT 1
|
||||
#define HAVE_SYMVER_ASM_LABEL 1
|
||||
#define HAVE_SYMVER_ASM_LABEL 0
|
||||
#define HAVE_SYMVER_GNU_ASM 1
|
||||
#define HAVE_VFP_ARGS 0
|
||||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 1
|
||||
#define HAVE_XMM_CLOBBERS 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_VP9 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
|
||||
#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -393,11 +361,9 @@
|
|||
#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
|
||||
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
|
||||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
#define HAVE_GZIP 1
|
||||
#define HAVE_LIBDRM_GETFB2 0
|
||||
#define HAVE_MAKEINFO 1
|
||||
#define HAVE_MAKEINFO_HTML 1
|
||||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
|
||||
#define HAVE_MAKEINFO 0
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_OPENCL_D3D11 0
|
||||
#define HAVE_OPENCL_DRM_ARM 0
|
||||
#define HAVE_OPENCL_DRM_BEIGNET 0
|
||||
|
@ -406,15 +372,13 @@
|
|||
#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
|
||||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_XMLLINT 1
|
||||
#define HAVE_ZLIB_GZIP 0
|
||||
#define HAVE_TEXI2HTML 1
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 1
|
||||
#define CONFIG_MANPAGES 1
|
||||
#define CONFIG_PODPAGES 1
|
||||
#define CONFIG_TXTPAGES 1
|
||||
#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
|
||||
#define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
|
@ -450,12 +414,14 @@
|
|||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_LIBTLS 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBARIBB24 0
|
||||
#define CONFIG_LIBLENSFUN 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_MBEDTLS 0
|
||||
#define CONFIG_RKMPP 0
|
||||
|
@ -465,7 +431,6 @@
|
|||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LCMS2 0
|
||||
#define CONFIG_LIBAOM 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
|
@ -473,20 +438,18 @@
|
|||
#define CONFIG_LIBCACA 0
|
||||
#define CONFIG_LIBCELT 0
|
||||
#define CONFIG_LIBCODEC2 0
|
||||
#define CONFIG_LIBDAV1D 1
|
||||
#define CONFIG_LIBDAV1D 0
|
||||
#define CONFIG_LIBDC1394 0
|
||||
#define CONFIG_LIBDRM 0
|
||||
#define CONFIG_LIBFLITE 0
|
||||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
#define CONFIG_LIBFRIBIDI 0
|
||||
#define CONFIG_LIBGLSLANG 0
|
||||
#define CONFIG_LIBGME 0
|
||||
#define CONFIG_LIBGSM 0
|
||||
#define CONFIG_LIBIEC61883 0
|
||||
#define CONFIG_LIBILBC 0
|
||||
#define CONFIG_LIBJACK 0
|
||||
#define CONFIG_LIBJXL 0
|
||||
#define CONFIG_LIBKLVANC 0
|
||||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
|
@ -496,16 +459,10 @@
|
|||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPENVINO 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPLACEBO 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRABBITMQ 0
|
||||
#define CONFIG_LIBRAV1E 0
|
||||
#define CONFIG_LIBRIST 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBSHADERC 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
|
@ -513,16 +470,14 @@
|
|||
#define CONFIG_LIBSPEEX 0
|
||||
#define CONFIG_LIBSRT 0
|
||||
#define CONFIG_LIBSSH 0
|
||||
#define CONFIG_LIBSVTAV1 0
|
||||
#define CONFIG_LIBTENSORFLOW 0
|
||||
#define CONFIG_LIBTESSERACT 0
|
||||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBUAVS3D 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWAVPACK 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
|
@ -532,28 +487,25 @@
|
|||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_POCKETSPHINX 0
|
||||
#define CONFIG_VAPOURSYNTH 0
|
||||
#define CONFIG_ALSA 0
|
||||
#define CONFIG_APPKIT 0
|
||||
#define CONFIG_AVFOUNDATION 0
|
||||
#define CONFIG_BZLIB 0
|
||||
#define CONFIG_APPKIT 1
|
||||
#define CONFIG_AVFOUNDATION 1
|
||||
#define CONFIG_BZLIB 1
|
||||
#define CONFIG_COREIMAGE 0
|
||||
#define CONFIG_ICONV 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIAFOUNDATION 0
|
||||
#define CONFIG_METAL 0
|
||||
#define CONFIG_LZMA 1
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
#define CONFIG_XLIB 0
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_XLIB 1
|
||||
#define CONFIG_ZLIB 1
|
||||
#define CONFIG_CUDA_NVCC 0
|
||||
#define CONFIG_CUDA_SDK 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
|
@ -562,7 +514,7 @@
|
|||
#define CONFIG_OMX 0
|
||||
#define CONFIG_OPENCL 0
|
||||
#define CONFIG_AMF 0
|
||||
#define CONFIG_AUDIOTOOLBOX 0
|
||||
#define CONFIG_AUDIOTOOLBOX 1
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_CUDA 0
|
||||
#define CONFIG_CUDA_LLVM 0
|
||||
|
@ -575,8 +527,8 @@
|
|||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_VULKAN 0
|
||||
#define CONFIG_V4L2_M2M 0
|
||||
#define CONFIG_XVMC 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -597,6 +549,7 @@
|
|||
#define CONFIG_AVFORMAT 0
|
||||
#define CONFIG_AVCODEC 1
|
||||
#define CONFIG_SWRESAMPLE 0
|
||||
#define CONFIG_AVRESAMPLE 0
|
||||
#define CONFIG_AVUTIL 1
|
||||
#define CONFIG_FFPLAY 0
|
||||
#define CONFIG_FFPROBE 0
|
||||
|
@ -608,59 +561,46 @@
|
|||
#define CONFIG_FAST_UNALIGNED 0
|
||||
#define CONFIG_FFT 1
|
||||
#define CONFIG_LSP 0
|
||||
#define CONFIG_LZO 0
|
||||
#define CONFIG_MDCT 0
|
||||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 1
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_LARGE_TESTS 1
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MACOS_KPERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_PTX_COMPRESSION 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_BSFS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_ADTS_HEADER 0
|
||||
#define CONFIG_ATSC_A53 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
#define CONFIG_AUDIODSP 0
|
||||
#define CONFIG_BLOCKDSP 0
|
||||
#define CONFIG_BSWAPDSP 0
|
||||
#define CONFIG_CABAC 0
|
||||
#define CONFIG_CBS 0
|
||||
#define CONFIG_CBS_AV1 0
|
||||
#define CONFIG_CBS 1
|
||||
#define CONFIG_CBS_AV1 1
|
||||
#define CONFIG_CBS_H264 0
|
||||
#define CONFIG_CBS_H265 0
|
||||
#define CONFIG_CBS_JPEG 0
|
||||
#define CONFIG_CBS_MPEG2 0
|
||||
#define CONFIG_CBS_VP9 0
|
||||
#define CONFIG_DEFLATE_WRAPPER 0
|
||||
#define CONFIG_DIRAC_PARSE 0
|
||||
#define CONFIG_DNN 0
|
||||
#define CONFIG_DOVI_RPU 0
|
||||
#define CONFIG_DVPROFILE 0
|
||||
#define CONFIG_EXIF 0
|
||||
#define CONFIG_FAANDCT 1
|
||||
#define CONFIG_FAANIDCT 1
|
||||
#define CONFIG_FDCTDSP 1
|
||||
#define CONFIG_FAANDCT 0
|
||||
#define CONFIG_FAANIDCT 0
|
||||
#define CONFIG_FDCTDSP 0
|
||||
#define CONFIG_FLACDSP 1
|
||||
#define CONFIG_FMTCONVERT 0
|
||||
#define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
|
@ -678,10 +618,9 @@
|
|||
#define CONFIG_HUFFMAN 0
|
||||
#define CONFIG_HUFFYUVDSP 0
|
||||
#define CONFIG_HUFFYUVENCDSP 0
|
||||
#define CONFIG_IDCTDSP 1
|
||||
#define CONFIG_IDCTDSP 0
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INFLATE_WRAPPER 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
|
@ -698,9 +637,7 @@
|
|||
#define CONFIG_MPEGAUDIO 1
|
||||
#define CONFIG_MPEGAUDIODSP 1
|
||||
#define CONFIG_MPEGAUDIOHEADER 1
|
||||
#define CONFIG_MPEG4AUDIO 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEODEC 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
#define CONFIG_PIXBLOCKDSP 0
|
||||
|
@ -732,4 +669,14 @@
|
|||
#define CONFIG_VP8DSP 1
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#define CONFIG_NULL_BSF 1
|
||||
#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
|
||||
#define CONFIG_VP8_DECODER 1
|
||||
#define CONFIG_VP9_DECODER 1
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_FLAC_DECODER 1
|
||||
#define CONFIG_MP3_DECODER 1
|
||||
#define CONFIG_VP8_PARSER 1
|
||||
#define CONFIG_VP9_PARSER 1
|
||||
#define CONFIG_AV1_PARSER 1
|
||||
#endif /* FFMPEG_CONFIG_H */
|
||||
|
|
|
@ -7,16 +7,12 @@
|
|||
%define ARCH_AVR32_UC 0
|
||||
%define ARCH_BFIN 0
|
||||
%define ARCH_IA64 0
|
||||
%define ARCH_LOONGARCH 0
|
||||
%define ARCH_LOONGARCH32 0
|
||||
%define ARCH_LOONGARCH64 0
|
||||
%define ARCH_M68K 0
|
||||
%define ARCH_MIPS 0
|
||||
%define ARCH_MIPS64 0
|
||||
%define ARCH_PARISC 0
|
||||
%define ARCH_PPC 0
|
||||
%define ARCH_PPC64 0
|
||||
%define ARCH_RISCV 0
|
||||
%define ARCH_S390 0
|
||||
%define ARCH_SH4 0
|
||||
%define ARCH_SPARC 0
|
||||
|
@ -47,7 +43,6 @@
|
|||
%define HAVE_AVX 1
|
||||
%define HAVE_AVX2 1
|
||||
%define HAVE_AVX512 1
|
||||
%define HAVE_AVX512ICL 1
|
||||
%define HAVE_FMA3 1
|
||||
%define HAVE_FMA4 1
|
||||
%define HAVE_MMX 1
|
||||
|
@ -70,11 +65,10 @@
|
|||
%define HAVE_MIPSDSP 0
|
||||
%define HAVE_MIPSDSPR2 0
|
||||
%define HAVE_MSA 0
|
||||
%define HAVE_MSA2 0
|
||||
%define HAVE_LOONGSON2 0
|
||||
%define HAVE_LOONGSON3 0
|
||||
%define HAVE_MMI 0
|
||||
%define HAVE_LSX 0
|
||||
%define HAVE_LASX 0
|
||||
%define HAVE_ARMV5TE_EXTERNAL 0
|
||||
%define HAVE_ARMV6_EXTERNAL 0
|
||||
%define HAVE_ARMV6T2_EXTERNAL 0
|
||||
|
@ -95,7 +89,6 @@
|
|||
%define HAVE_AVX_EXTERNAL 1
|
||||
%define HAVE_AVX2_EXTERNAL 1
|
||||
%define HAVE_AVX512_EXTERNAL 1
|
||||
%define HAVE_AVX512ICL_EXTERNAL 1
|
||||
%define HAVE_FMA3_EXTERNAL 1
|
||||
%define HAVE_FMA4_EXTERNAL 1
|
||||
%define HAVE_MMX_EXTERNAL 1
|
||||
|
@ -118,11 +111,10 @@
|
|||
%define HAVE_MIPSDSP_EXTERNAL 0
|
||||
%define HAVE_MIPSDSPR2_EXTERNAL 0
|
||||
%define HAVE_MSA_EXTERNAL 0
|
||||
%define HAVE_MSA2_EXTERNAL 0
|
||||
%define HAVE_LOONGSON2_EXTERNAL 0
|
||||
%define HAVE_LOONGSON3_EXTERNAL 0
|
||||
%define HAVE_MMI_EXTERNAL 0
|
||||
%define HAVE_LSX_EXTERNAL 0
|
||||
%define HAVE_LASX_EXTERNAL 0
|
||||
%define HAVE_ARMV5TE_INLINE 0
|
||||
%define HAVE_ARMV6_INLINE 0
|
||||
%define HAVE_ARMV6T2_INLINE 0
|
||||
|
@ -143,7 +135,6 @@
|
|||
%define HAVE_AVX_INLINE 1
|
||||
%define HAVE_AVX2_INLINE 1
|
||||
%define HAVE_AVX512_INLINE 1
|
||||
%define HAVE_AVX512ICL_INLINE 1
|
||||
%define HAVE_FMA3_INLINE 1
|
||||
%define HAVE_FMA4_INLINE 1
|
||||
%define HAVE_MMX_INLINE 1
|
||||
|
@ -166,11 +157,10 @@
|
|||
%define HAVE_MIPSDSP_INLINE 0
|
||||
%define HAVE_MIPSDSPR2_INLINE 0
|
||||
%define HAVE_MSA_INLINE 0
|
||||
%define HAVE_MSA2_INLINE 0
|
||||
%define HAVE_LOONGSON2_INLINE 0
|
||||
%define HAVE_LOONGSON3_INLINE 0
|
||||
%define HAVE_MMI_INLINE 0
|
||||
%define HAVE_LSX_INLINE 0
|
||||
%define HAVE_LASX_INLINE 0
|
||||
%define HAVE_ALIGNED_STACK 1
|
||||
%define HAVE_FAST_64BIT 1
|
||||
%define HAVE_FAST_CLZ 1
|
||||
|
@ -186,8 +176,8 @@
|
|||
%define HAVE_RDTSC 0
|
||||
%define HAVE_SEM_TIMEDWAIT 1
|
||||
%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
|
||||
%define HAVE_CABS 0
|
||||
%define HAVE_CEXP 0
|
||||
%define HAVE_CABS 1
|
||||
%define HAVE_CEXP 1
|
||||
%define HAVE_INLINE_ASM 1
|
||||
%define HAVE_SYMVER 1
|
||||
%define HAVE_X86ASM 1
|
||||
|
@ -211,11 +201,9 @@
|
|||
%define HAVE_ES2_GL_H 0
|
||||
%define HAVE_GSM_H 0
|
||||
%define HAVE_IO_H 0
|
||||
%define HAVE_LINUX_DMA_BUF_H 0
|
||||
%define HAVE_LINUX_PERF_EVENT_H 1
|
||||
%define HAVE_LINUX_PERF_EVENT_H 0
|
||||
%define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
%define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
%define HAVE_MALLOC_H 1
|
||||
%define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
%define HAVE_OPENGL_GL3_H 0
|
||||
%define HAVE_POLL_H 1
|
||||
|
@ -265,28 +253,23 @@
|
|||
%define HAVE_DOS_PATHS 0
|
||||
%define HAVE_LIBC_MSVCRT 0
|
||||
%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
%define HAVE_SECTION_DATA_REL_RO 1
|
||||
%define HAVE_SECTION_DATA_REL_RO 0
|
||||
%define HAVE_THREADS 1
|
||||
%define HAVE_UWP 0
|
||||
%define HAVE_WINRT 0
|
||||
%define HAVE_ACCESS 1
|
||||
%define HAVE_ALIGNED_MALLOC 0
|
||||
%define HAVE_ARC4RANDOM 0
|
||||
%define HAVE_CLOCK_GETTIME 1
|
||||
%define HAVE_CLOSESOCKET 0
|
||||
%define HAVE_COMMANDLINETOARGVW 0
|
||||
%define HAVE_FCNTL 1
|
||||
%define HAVE_GETADDRINFO 1
|
||||
%define HAVE_GETAUXVAL 1
|
||||
%define HAVE_GETENV 1
|
||||
%define HAVE_GETHRTIME 0
|
||||
%define HAVE_GETOPT 1
|
||||
%define HAVE_GETMODULEHANDLE 0
|
||||
%define HAVE_GETPROCESSAFFINITYMASK 0
|
||||
%define HAVE_GETPROCESSMEMORYINFO 0
|
||||
%define HAVE_GETPROCESSTIMES 0
|
||||
%define HAVE_GETRUSAGE 1
|
||||
%define HAVE_GETSTDHANDLE 0
|
||||
%define HAVE_GETSYSTEMTIMEASFILETIME 0
|
||||
%define HAVE_GETTIMEOFDAY 1
|
||||
%define HAVE_GLOB 1
|
||||
|
@ -295,24 +278,20 @@
|
|||
%define HAVE_INET_ATON 1
|
||||
%define HAVE_ISATTY 1
|
||||
%define HAVE_KBHIT 0
|
||||
%define HAVE_LOCALTIME_R 1
|
||||
%define HAVE_LSTAT 1
|
||||
%define HAVE_LZO1X_999_COMPRESS 0
|
||||
%define HAVE_MACH_ABSOLUTE_TIME 0
|
||||
%define HAVE_MAPVIEWOFFILE 0
|
||||
%define HAVE_MEMALIGN 1
|
||||
%define HAVE_MKSTEMP 1
|
||||
%define HAVE_MMAP 1
|
||||
%define HAVE_MPROTECT 1
|
||||
%define HAVE_NANOSLEEP 1
|
||||
%define HAVE_PEEKNAMEDPIPE 0
|
||||
%define HAVE_POSIX_MEMALIGN 1
|
||||
%define HAVE_PTHREAD_CANCEL 1
|
||||
%define HAVE_SCHED_GETAFFINITY 1
|
||||
%define HAVE_SECITEMIMPORT 0
|
||||
%define HAVE_SETCONSOLETEXTATTRIBUTE 0
|
||||
%define HAVE_SETCONSOLECTRLHANDLER 0
|
||||
%define HAVE_SETDLLDIRECTORY 0
|
||||
%define HAVE_SETMODE 0
|
||||
%define HAVE_SETRLIMIT 1
|
||||
%define HAVE_SLEEP 0
|
||||
|
@ -324,7 +303,7 @@
|
|||
%define HAVE_VIRTUALALLOC 0
|
||||
%define HAVE_WGLGETPROCADDRESS 0
|
||||
%define HAVE_BCRYPT 0
|
||||
%define HAVE_VAAPI_DRM 1
|
||||
%define HAVE_VAAPI_DRM 0
|
||||
%define HAVE_VAAPI_X11 0
|
||||
%define HAVE_VDPAU_X11 0
|
||||
%define HAVE_PTHREADS 1
|
||||
|
@ -353,22 +332,7 @@
|
|||
%define HAVE_XFORM_ASM 0
|
||||
%define HAVE_XMM_CLOBBERS 1
|
||||
%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
%define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
|
||||
%define HAVE_KCMVIDEOCODECTYPE_VP9 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
|
||||
%define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
|
||||
%define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
|
||||
%define HAVE_SOCKLEN_T 1
|
||||
%define HAVE_STRUCT_ADDRINFO 1
|
||||
%define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -382,11 +346,9 @@
|
|||
%define HAVE_STRUCT_SOCKADDR_SA_LEN 0
|
||||
%define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
%define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
|
||||
%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
%define HAVE_GZIP 1
|
||||
%define HAVE_LIBDRM_GETFB2 0
|
||||
%define HAVE_MAKEINFO 1
|
||||
%define HAVE_MAKEINFO_HTML 1
|
||||
%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
|
||||
%define HAVE_MAKEINFO 0
|
||||
%define HAVE_MAKEINFO_HTML 0
|
||||
%define HAVE_OPENCL_D3D11 0
|
||||
%define HAVE_OPENCL_DRM_ARM 0
|
||||
%define HAVE_OPENCL_DRM_BEIGNET 0
|
||||
|
@ -395,15 +357,13 @@
|
|||
%define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
|
||||
%define HAVE_PERL 1
|
||||
%define HAVE_POD2MAN 1
|
||||
%define HAVE_TEXI2HTML 0
|
||||
%define HAVE_XMLLINT 1
|
||||
%define HAVE_ZLIB_GZIP 0
|
||||
%define HAVE_TEXI2HTML 1
|
||||
%define CONFIG_DOC 0
|
||||
%define CONFIG_HTMLPAGES 1
|
||||
%define CONFIG_MANPAGES 1
|
||||
%define CONFIG_PODPAGES 1
|
||||
%define CONFIG_TXTPAGES 1
|
||||
%define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
|
||||
%define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
%define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
%define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
|
@ -438,13 +398,16 @@
|
|||
%define CONFIG_LIBXAVS2 0
|
||||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_LIBNDI_NEWTEK 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_LIBTLS 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_LIBARIBB24 0
|
||||
%define CONFIG_LIBLENSFUN 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBVMAF 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_MBEDTLS 0
|
||||
%define CONFIG_RKMPP 0
|
||||
|
@ -454,7 +417,6 @@
|
|||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_JNI 0
|
||||
%define CONFIG_LADSPA 0
|
||||
%define CONFIG_LCMS2 0
|
||||
%define CONFIG_LIBAOM 0
|
||||
%define CONFIG_LIBASS 0
|
||||
%define CONFIG_LIBBLURAY 0
|
||||
|
@ -469,13 +431,11 @@
|
|||
%define CONFIG_LIBFONTCONFIG 0
|
||||
%define CONFIG_LIBFREETYPE 0
|
||||
%define CONFIG_LIBFRIBIDI 0
|
||||
%define CONFIG_LIBGLSLANG 0
|
||||
%define CONFIG_LIBGME 0
|
||||
%define CONFIG_LIBGSM 0
|
||||
%define CONFIG_LIBIEC61883 0
|
||||
%define CONFIG_LIBILBC 0
|
||||
%define CONFIG_LIBJACK 0
|
||||
%define CONFIG_LIBJXL 0
|
||||
%define CONFIG_LIBKLVANC 0
|
||||
%define CONFIG_LIBKVAZAAR 0
|
||||
%define CONFIG_LIBMODPLUG 0
|
||||
|
@ -485,16 +445,10 @@
|
|||
%define CONFIG_LIBOPENH264 0
|
||||
%define CONFIG_LIBOPENJPEG 0
|
||||
%define CONFIG_LIBOPENMPT 0
|
||||
%define CONFIG_LIBOPENVINO 0
|
||||
%define CONFIG_LIBOPUS 0
|
||||
%define CONFIG_LIBPLACEBO 0
|
||||
%define CONFIG_LIBPULSE 0
|
||||
%define CONFIG_LIBRABBITMQ 0
|
||||
%define CONFIG_LIBRAV1E 0
|
||||
%define CONFIG_LIBRIST 0
|
||||
%define CONFIG_LIBRSVG 0
|
||||
%define CONFIG_LIBRTMP 0
|
||||
%define CONFIG_LIBSHADERC 0
|
||||
%define CONFIG_LIBSHINE 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_LIBSNAPPY 0
|
||||
|
@ -502,16 +456,14 @@
|
|||
%define CONFIG_LIBSPEEX 0
|
||||
%define CONFIG_LIBSRT 0
|
||||
%define CONFIG_LIBSSH 0
|
||||
%define CONFIG_LIBSVTAV1 0
|
||||
%define CONFIG_LIBTENSORFLOW 0
|
||||
%define CONFIG_LIBTESSERACT 0
|
||||
%define CONFIG_LIBTHEORA 0
|
||||
%define CONFIG_LIBTWOLAME 0
|
||||
%define CONFIG_LIBUAVS3D 0
|
||||
%define CONFIG_LIBV4L2 0
|
||||
%define CONFIG_LIBVMAF 0
|
||||
%define CONFIG_LIBVORBIS 0
|
||||
%define CONFIG_LIBVPX 0
|
||||
%define CONFIG_LIBWAVPACK 0
|
||||
%define CONFIG_LIBWEBP 0
|
||||
%define CONFIG_LIBXML2 0
|
||||
%define CONFIG_LIBZIMG 0
|
||||
|
@ -521,28 +473,25 @@
|
|||
%define CONFIG_MEDIACODEC 0
|
||||
%define CONFIG_OPENAL 0
|
||||
%define CONFIG_OPENGL 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_POCKETSPHINX 0
|
||||
%define CONFIG_VAPOURSYNTH 0
|
||||
%define CONFIG_ALSA 0
|
||||
%define CONFIG_APPKIT 0
|
||||
%define CONFIG_AVFOUNDATION 0
|
||||
%define CONFIG_BZLIB 0
|
||||
%define CONFIG_APPKIT 1
|
||||
%define CONFIG_AVFOUNDATION 1
|
||||
%define CONFIG_BZLIB 1
|
||||
%define CONFIG_COREIMAGE 0
|
||||
%define CONFIG_ICONV 0
|
||||
%define CONFIG_LIBXCB 0
|
||||
%define CONFIG_LIBXCB_SHM 0
|
||||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LZMA 0
|
||||
%define CONFIG_MEDIAFOUNDATION 0
|
||||
%define CONFIG_METAL 0
|
||||
%define CONFIG_LZMA 1
|
||||
%define CONFIG_SCHANNEL 0
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_SNDIO 0
|
||||
%define CONFIG_XLIB 0
|
||||
%define CONFIG_ZLIB 0
|
||||
%define CONFIG_XLIB 1
|
||||
%define CONFIG_ZLIB 1
|
||||
%define CONFIG_CUDA_NVCC 0
|
||||
%define CONFIG_CUDA_SDK 0
|
||||
%define CONFIG_LIBNPP 0
|
||||
|
@ -551,7 +500,7 @@
|
|||
%define CONFIG_OMX 0
|
||||
%define CONFIG_OPENCL 0
|
||||
%define CONFIG_AMF 0
|
||||
%define CONFIG_AUDIOTOOLBOX 0
|
||||
%define CONFIG_AUDIOTOOLBOX 1
|
||||
%define CONFIG_CRYSTALHD 0
|
||||
%define CONFIG_CUDA 0
|
||||
%define CONFIG_CUDA_LLVM 0
|
||||
|
@ -561,11 +510,11 @@
|
|||
%define CONFIG_FFNVCODEC 0
|
||||
%define CONFIG_NVDEC 0
|
||||
%define CONFIG_NVENC 0
|
||||
%define CONFIG_VAAPI 1
|
||||
%define CONFIG_VAAPI 0
|
||||
%define CONFIG_VDPAU 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_VULKAN 0
|
||||
%define CONFIG_V4L2_M2M 0
|
||||
%define CONFIG_V4L2_M2M 1
|
||||
%define CONFIG_XVMC 0
|
||||
%define CONFIG_FTRAPV 0
|
||||
%define CONFIG_GRAY 0
|
||||
%define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -586,6 +535,7 @@
|
|||
%define CONFIG_AVFORMAT 0
|
||||
%define CONFIG_AVCODEC 1
|
||||
%define CONFIG_SWRESAMPLE 0
|
||||
%define CONFIG_AVRESAMPLE 0
|
||||
%define CONFIG_AVUTIL 1
|
||||
%define CONFIG_FFPLAY 0
|
||||
%define CONFIG_FFPROBE 0
|
||||
|
@ -597,38 +547,27 @@
|
|||
%define CONFIG_FAST_UNALIGNED 1
|
||||
%define CONFIG_FFT 1
|
||||
%define CONFIG_LSP 0
|
||||
%define CONFIG_LZO 0
|
||||
%define CONFIG_MDCT 0
|
||||
%define CONFIG_PIXELUTILS 0
|
||||
%define CONFIG_NETWORK 0
|
||||
%define CONFIG_RDFT 1
|
||||
%define CONFIG_AUTODETECT 0
|
||||
%define CONFIG_FONTCONFIG 0
|
||||
%define CONFIG_LARGE_TESTS 1
|
||||
%define CONFIG_LINUX_PERF 0
|
||||
%define CONFIG_MACOS_KPERF 0
|
||||
%define CONFIG_MEMORY_POISONING 0
|
||||
%define CONFIG_NEON_CLOBBER_TEST 0
|
||||
%define CONFIG_OSSFUZZ 0
|
||||
%define CONFIG_PIC 1
|
||||
%define CONFIG_PTX_COMPRESSION 0
|
||||
%define CONFIG_THUMB 0
|
||||
%define CONFIG_VALGRIND_BACKTRACE 0
|
||||
%define CONFIG_XMM_CLOBBER_TEST 0
|
||||
%define CONFIG_BSFS 0
|
||||
%define CONFIG_BSFS 1
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_ENCODERS 0
|
||||
%define CONFIG_HWACCELS 1
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_INDEVS 0
|
||||
%define CONFIG_OUTDEVS 0
|
||||
%define CONFIG_FILTERS 0
|
||||
%define CONFIG_DEMUXERS 0
|
||||
%define CONFIG_MUXERS 0
|
||||
%define CONFIG_PROTOCOLS 0
|
||||
%define CONFIG_AANDCTTABLES 0
|
||||
%define CONFIG_AC3DSP 0
|
||||
%define CONFIG_ADTS_HEADER 0
|
||||
%define CONFIG_ATSC_A53 0
|
||||
%define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
%define CONFIG_AUDIODSP 0
|
||||
%define CONFIG_BLOCKDSP 0
|
||||
|
@ -641,10 +580,8 @@
|
|||
%define CONFIG_CBS_JPEG 0
|
||||
%define CONFIG_CBS_MPEG2 0
|
||||
%define CONFIG_CBS_VP9 0
|
||||
%define CONFIG_DEFLATE_WRAPPER 0
|
||||
%define CONFIG_DIRAC_PARSE 0
|
||||
%define CONFIG_DNN 0
|
||||
%define CONFIG_DOVI_RPU 0
|
||||
%define CONFIG_DVPROFILE 0
|
||||
%define CONFIG_EXIF 0
|
||||
%define CONFIG_FAANDCT 1
|
||||
|
@ -670,7 +607,6 @@
|
|||
%define CONFIG_IDCTDSP 1
|
||||
%define CONFIG_IIRFILTER 0
|
||||
%define CONFIG_MDCT15 0
|
||||
%define CONFIG_INFLATE_WRAPPER 0
|
||||
%define CONFIG_INTRAX8 0
|
||||
%define CONFIG_ISO_MEDIA 0
|
||||
%define CONFIG_IVIDSP 0
|
||||
|
@ -687,9 +623,7 @@
|
|||
%define CONFIG_MPEGAUDIO 1
|
||||
%define CONFIG_MPEGAUDIODSP 1
|
||||
%define CONFIG_MPEGAUDIOHEADER 1
|
||||
%define CONFIG_MPEG4AUDIO 0
|
||||
%define CONFIG_MPEGVIDEO 0
|
||||
%define CONFIG_MPEGVIDEODEC 0
|
||||
%define CONFIG_MPEGVIDEOENC 0
|
||||
%define CONFIG_MSS34DSP 0
|
||||
%define CONFIG_PIXBLOCKDSP 0
|
||||
|
@ -712,7 +646,7 @@
|
|||
%define CONFIG_TEXTUREDSP 0
|
||||
%define CONFIG_TEXTUREDSPENC 0
|
||||
%define CONFIG_TPELDSP 0
|
||||
%define CONFIG_VAAPI_1 1
|
||||
%define CONFIG_VAAPI_1 0
|
||||
%define CONFIG_VAAPI_ENCODE 0
|
||||
%define CONFIG_VC1DSP 0
|
||||
%define CONFIG_VIDEODSP 1
|
||||
|
@ -721,3 +655,13 @@
|
|||
%define CONFIG_VP8DSP 1
|
||||
%define CONFIG_WMA_FREQS 0
|
||||
%define CONFIG_WMV2DSP 0
|
||||
%define CONFIG_NULL_BSF 1
|
||||
%define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
|
||||
%define CONFIG_VP8_DECODER 1
|
||||
%define CONFIG_VP9_DECODER 1
|
||||
%define CONFIG_AV1_DECODER 1
|
||||
%define CONFIG_FLAC_DECODER 1
|
||||
%define CONFIG_MP3_DECODER 1
|
||||
%define CONFIG_VP8_PARSER 1
|
||||
%define CONFIG_VP9_PARSER 1
|
||||
%define CONFIG_AV1_PARSER 1
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-all --enable-avcodec --enable-decoder='vp8,vp9,mp3,flac,av1' --enable-parser='vp8,vp9' --disable-static --enable-shared --disable-autodetect --disable-iconv --enable-vaapi --enable-hwaccel='vp9_vaapi,vp8_vaapi,av1_vaapi' --enable-libdav1d"
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-x86asm --disable-cuda --disable-cuvid --enable-decoder=mp3"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2022
|
||||
#define CONFIG_THIS_YEAR 2019
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "gcc 11 (Ubuntu 11.2.0-19ubuntu1)"
|
||||
#define OS_NAME linux
|
||||
#define CC_IDENT "gcc 6.3.0 (Ubuntu 6.3.0-12ubuntu2) 20170406"
|
||||
#define av_restrict restrict
|
||||
#define EXTERN_PREFIX ""
|
||||
#define EXTERN_ASM
|
||||
#define EXTERN_ASM
|
||||
#define BUILDSUF ""
|
||||
#define SLIBSUF ".so"
|
||||
#define HAVE_MMX2 HAVE_MMXEXT
|
||||
|
@ -23,16 +22,12 @@
|
|||
#define ARCH_AVR32_UC 0
|
||||
#define ARCH_BFIN 0
|
||||
#define ARCH_IA64 0
|
||||
#define ARCH_LOONGARCH 0
|
||||
#define ARCH_LOONGARCH32 0
|
||||
#define ARCH_LOONGARCH64 0
|
||||
#define ARCH_M68K 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_MIPS64 0
|
||||
#define ARCH_PARISC 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_PPC64 0
|
||||
#define ARCH_RISCV 0
|
||||
#define ARCH_S390 0
|
||||
#define ARCH_SH4 0
|
||||
#define ARCH_SPARC 0
|
||||
|
@ -63,7 +58,6 @@
|
|||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_AVX512 1
|
||||
#define HAVE_AVX512ICL 1
|
||||
#define HAVE_FMA3 1
|
||||
#define HAVE_FMA4 1
|
||||
#define HAVE_MMX 1
|
||||
|
@ -86,11 +80,10 @@
|
|||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_MSA2 0
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_LSX 0
|
||||
#define HAVE_LASX 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 0
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
#define HAVE_ARMV6T2_EXTERNAL 0
|
||||
|
@ -111,7 +104,6 @@
|
|||
#define HAVE_AVX_EXTERNAL 1
|
||||
#define HAVE_AVX2_EXTERNAL 1
|
||||
#define HAVE_AVX512_EXTERNAL 1
|
||||
#define HAVE_AVX512ICL_EXTERNAL 1
|
||||
#define HAVE_FMA3_EXTERNAL 1
|
||||
#define HAVE_FMA4_EXTERNAL 1
|
||||
#define HAVE_MMX_EXTERNAL 1
|
||||
|
@ -134,11 +126,10 @@
|
|||
#define HAVE_MIPSDSP_EXTERNAL 0
|
||||
#define HAVE_MIPSDSPR2_EXTERNAL 0
|
||||
#define HAVE_MSA_EXTERNAL 0
|
||||
#define HAVE_MSA2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON3_EXTERNAL 0
|
||||
#define HAVE_MMI_EXTERNAL 0
|
||||
#define HAVE_LSX_EXTERNAL 0
|
||||
#define HAVE_LASX_EXTERNAL 0
|
||||
#define HAVE_ARMV5TE_INLINE 0
|
||||
#define HAVE_ARMV6_INLINE 0
|
||||
#define HAVE_ARMV6T2_INLINE 0
|
||||
|
@ -159,7 +150,6 @@
|
|||
#define HAVE_AVX_INLINE 1
|
||||
#define HAVE_AVX2_INLINE 1
|
||||
#define HAVE_AVX512_INLINE 1
|
||||
#define HAVE_AVX512ICL_INLINE 1
|
||||
#define HAVE_FMA3_INLINE 1
|
||||
#define HAVE_FMA4_INLINE 1
|
||||
#define HAVE_MMX_INLINE 1
|
||||
|
@ -182,11 +172,10 @@
|
|||
#define HAVE_MIPSDSP_INLINE 0
|
||||
#define HAVE_MIPSDSPR2_INLINE 0
|
||||
#define HAVE_MSA_INLINE 0
|
||||
#define HAVE_MSA2_INLINE 0
|
||||
#define HAVE_LOONGSON2_INLINE 0
|
||||
#define HAVE_LOONGSON3_INLINE 0
|
||||
#define HAVE_MMI_INLINE 0
|
||||
#define HAVE_LSX_INLINE 0
|
||||
#define HAVE_LASX_INLINE 0
|
||||
#define HAVE_ALIGNED_STACK 1
|
||||
#define HAVE_FAST_64BIT 1
|
||||
#define HAVE_FAST_CLZ 1
|
||||
|
@ -202,8 +191,8 @@
|
|||
#define HAVE_RDTSC 0
|
||||
#define HAVE_SEM_TIMEDWAIT 1
|
||||
#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
|
||||
#define HAVE_CABS 0
|
||||
#define HAVE_CEXP 0
|
||||
#define HAVE_CABS 1
|
||||
#define HAVE_CEXP 1
|
||||
#define HAVE_INLINE_ASM 1
|
||||
#define HAVE_SYMVER 1
|
||||
#define HAVE_X86ASM 1
|
||||
|
@ -227,8 +216,7 @@
|
|||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
#define HAVE_IO_H 0
|
||||
#define HAVE_LINUX_DMA_BUF_H 0
|
||||
#define HAVE_LINUX_PERF_EVENT_H 1
|
||||
#define HAVE_LINUX_PERF_EVENT_H 0
|
||||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
#define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
|
@ -280,7 +268,7 @@
|
|||
#define HAVE_DOS_PATHS 0
|
||||
#define HAVE_LIBC_MSVCRT 0
|
||||
#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
#define HAVE_SECTION_DATA_REL_RO 1
|
||||
#define HAVE_SECTION_DATA_REL_RO 0
|
||||
#define HAVE_THREADS 1
|
||||
#define HAVE_UWP 0
|
||||
#define HAVE_WINRT 0
|
||||
|
@ -291,16 +279,12 @@
|
|||
#define HAVE_COMMANDLINETOARGVW 0
|
||||
#define HAVE_FCNTL 1
|
||||
#define HAVE_GETADDRINFO 1
|
||||
#define HAVE_GETAUXVAL 1
|
||||
#define HAVE_GETENV 1
|
||||
#define HAVE_GETHRTIME 0
|
||||
#define HAVE_GETOPT 1
|
||||
#define HAVE_GETMODULEHANDLE 0
|
||||
#define HAVE_GETPROCESSAFFINITYMASK 0
|
||||
#define HAVE_GETPROCESSMEMORYINFO 0
|
||||
#define HAVE_GETPROCESSTIMES 0
|
||||
#define HAVE_GETRUSAGE 1
|
||||
#define HAVE_GETSTDHANDLE 0
|
||||
#define HAVE_GETSYSTEMTIMEASFILETIME 0
|
||||
#define HAVE_GETTIMEOFDAY 1
|
||||
#define HAVE_GLOB 1
|
||||
|
@ -323,7 +307,6 @@
|
|||
#define HAVE_SECITEMIMPORT 0
|
||||
#define HAVE_SETCONSOLETEXTATTRIBUTE 0
|
||||
#define HAVE_SETCONSOLECTRLHANDLER 0
|
||||
#define HAVE_SETDLLDIRECTORY 0
|
||||
#define HAVE_SETMODE 0
|
||||
#define HAVE_SETRLIMIT 1
|
||||
#define HAVE_SLEEP 0
|
||||
|
@ -364,22 +347,7 @@
|
|||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 1
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_VP9 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
|
||||
#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -393,11 +361,9 @@
|
|||
#define HAVE_STRUCT_SOCKADDR_SA_LEN 0
|
||||
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
|
||||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
#define HAVE_GZIP 1
|
||||
#define HAVE_LIBDRM_GETFB2 0
|
||||
#define HAVE_MAKEINFO 1
|
||||
#define HAVE_MAKEINFO_HTML 1
|
||||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
|
||||
#define HAVE_MAKEINFO 0
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_OPENCL_D3D11 0
|
||||
#define HAVE_OPENCL_DRM_ARM 0
|
||||
#define HAVE_OPENCL_DRM_BEIGNET 0
|
||||
|
@ -406,15 +372,13 @@
|
|||
#define HAVE_OPENCL_VAAPI_INTEL_MEDIA 0
|
||||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_XMLLINT 1
|
||||
#define HAVE_ZLIB_GZIP 0
|
||||
#define HAVE_TEXI2HTML 1
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 1
|
||||
#define CONFIG_MANPAGES 1
|
||||
#define CONFIG_PODPAGES 1
|
||||
#define CONFIG_TXTPAGES 1
|
||||
#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
|
||||
#define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
|
@ -450,12 +414,14 @@
|
|||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_LIBTLS 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBARIBB24 0
|
||||
#define CONFIG_LIBLENSFUN 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_MBEDTLS 0
|
||||
#define CONFIG_RKMPP 0
|
||||
|
@ -465,7 +431,6 @@
|
|||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LCMS2 0
|
||||
#define CONFIG_LIBAOM 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
|
@ -473,20 +438,18 @@
|
|||
#define CONFIG_LIBCACA 0
|
||||
#define CONFIG_LIBCELT 0
|
||||
#define CONFIG_LIBCODEC2 0
|
||||
#define CONFIG_LIBDAV1D 1
|
||||
#define CONFIG_LIBDAV1D 0
|
||||
#define CONFIG_LIBDC1394 0
|
||||
#define CONFIG_LIBDRM 0
|
||||
#define CONFIG_LIBFLITE 0
|
||||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
#define CONFIG_LIBFRIBIDI 0
|
||||
#define CONFIG_LIBGLSLANG 0
|
||||
#define CONFIG_LIBGME 0
|
||||
#define CONFIG_LIBGSM 0
|
||||
#define CONFIG_LIBIEC61883 0
|
||||
#define CONFIG_LIBILBC 0
|
||||
#define CONFIG_LIBJACK 0
|
||||
#define CONFIG_LIBJXL 0
|
||||
#define CONFIG_LIBKLVANC 0
|
||||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
|
@ -496,16 +459,10 @@
|
|||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPENVINO 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPLACEBO 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRABBITMQ 0
|
||||
#define CONFIG_LIBRAV1E 0
|
||||
#define CONFIG_LIBRIST 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBSHADERC 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
|
@ -513,16 +470,14 @@
|
|||
#define CONFIG_LIBSPEEX 0
|
||||
#define CONFIG_LIBSRT 0
|
||||
#define CONFIG_LIBSSH 0
|
||||
#define CONFIG_LIBSVTAV1 0
|
||||
#define CONFIG_LIBTENSORFLOW 0
|
||||
#define CONFIG_LIBTESSERACT 0
|
||||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBUAVS3D 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWAVPACK 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
|
@ -532,28 +487,25 @@
|
|||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_POCKETSPHINX 0
|
||||
#define CONFIG_VAPOURSYNTH 0
|
||||
#define CONFIG_ALSA 0
|
||||
#define CONFIG_APPKIT 0
|
||||
#define CONFIG_AVFOUNDATION 0
|
||||
#define CONFIG_BZLIB 0
|
||||
#define CONFIG_APPKIT 1
|
||||
#define CONFIG_AVFOUNDATION 1
|
||||
#define CONFIG_BZLIB 1
|
||||
#define CONFIG_COREIMAGE 0
|
||||
#define CONFIG_ICONV 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIAFOUNDATION 0
|
||||
#define CONFIG_METAL 0
|
||||
#define CONFIG_LZMA 1
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
#define CONFIG_XLIB 0
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_XLIB 1
|
||||
#define CONFIG_ZLIB 1
|
||||
#define CONFIG_CUDA_NVCC 0
|
||||
#define CONFIG_CUDA_SDK 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
|
@ -562,7 +514,7 @@
|
|||
#define CONFIG_OMX 0
|
||||
#define CONFIG_OPENCL 0
|
||||
#define CONFIG_AMF 0
|
||||
#define CONFIG_AUDIOTOOLBOX 0
|
||||
#define CONFIG_AUDIOTOOLBOX 1
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_CUDA 0
|
||||
#define CONFIG_CUDA_LLVM 0
|
||||
|
@ -572,10 +524,11 @@
|
|||
#define CONFIG_FFNVCODEC 0
|
||||
#define CONFIG_NVDEC 0
|
||||
#define CONFIG_NVENC 0
|
||||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_VULKAN 0
|
||||
#define CONFIG_V4L2_M2M 0
|
||||
#define CONFIG_V4L2_M2M 1
|
||||
#define CONFIG_XVMC 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -596,6 +549,7 @@
|
|||
#define CONFIG_AVFORMAT 0
|
||||
#define CONFIG_AVCODEC 1
|
||||
#define CONFIG_SWRESAMPLE 0
|
||||
#define CONFIG_AVRESAMPLE 0
|
||||
#define CONFIG_AVUTIL 1
|
||||
#define CONFIG_FFPLAY 0
|
||||
#define CONFIG_FFPROBE 0
|
||||
|
@ -607,38 +561,27 @@
|
|||
#define CONFIG_FAST_UNALIGNED 1
|
||||
#define CONFIG_FFT 1
|
||||
#define CONFIG_LSP 0
|
||||
#define CONFIG_LZO 0
|
||||
#define CONFIG_MDCT 0
|
||||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 1
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_LARGE_TESTS 1
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MACOS_KPERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_PTX_COMPRESSION 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_BSFS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 1
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_ADTS_HEADER 0
|
||||
#define CONFIG_ATSC_A53 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
#define CONFIG_AUDIODSP 0
|
||||
#define CONFIG_BLOCKDSP 0
|
||||
|
@ -651,10 +594,8 @@
|
|||
#define CONFIG_CBS_JPEG 0
|
||||
#define CONFIG_CBS_MPEG2 0
|
||||
#define CONFIG_CBS_VP9 0
|
||||
#define CONFIG_DEFLATE_WRAPPER 0
|
||||
#define CONFIG_DIRAC_PARSE 0
|
||||
#define CONFIG_DNN 0
|
||||
#define CONFIG_DOVI_RPU 0
|
||||
#define CONFIG_DVPROFILE 0
|
||||
#define CONFIG_EXIF 0
|
||||
#define CONFIG_FAANDCT 1
|
||||
|
@ -680,7 +621,6 @@
|
|||
#define CONFIG_IDCTDSP 1
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INFLATE_WRAPPER 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
|
@ -697,9 +637,7 @@
|
|||
#define CONFIG_MPEGAUDIO 1
|
||||
#define CONFIG_MPEGAUDIODSP 1
|
||||
#define CONFIG_MPEGAUDIOHEADER 1
|
||||
#define CONFIG_MPEG4AUDIO 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEODEC 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
#define CONFIG_PIXBLOCKDSP 0
|
||||
|
@ -722,6 +660,7 @@
|
|||
#define CONFIG_TEXTUREDSP 0
|
||||
#define CONFIG_TEXTUREDSPENC 0
|
||||
#define CONFIG_TPELDSP 0
|
||||
#define CONFIG_VAAPI_1 0
|
||||
#define CONFIG_VAAPI_ENCODE 0
|
||||
#define CONFIG_VC1DSP 0
|
||||
#define CONFIG_VIDEODSP 1
|
||||
|
@ -730,4 +669,14 @@
|
|||
#define CONFIG_VP8DSP 1
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#define CONFIG_NULL_BSF 1
|
||||
#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
|
||||
#define CONFIG_VP8_DECODER 1
|
||||
#define CONFIG_VP9_DECODER 1
|
||||
#define CONFIG_AV1_DECODER 1
|
||||
#define CONFIG_FLAC_DECODER 1
|
||||
#define CONFIG_MP3_DECODER 1
|
||||
#define CONFIG_VP8_PARSER 1
|
||||
#define CONFIG_VP9_PARSER 1
|
||||
#define CONFIG_AV1_PARSER 1
|
||||
#endif /* FFMPEG_CONFIG_H */
|
||||
|
|
|
@ -7,16 +7,12 @@
|
|||
%define ARCH_AVR32_UC 0
|
||||
%define ARCH_BFIN 0
|
||||
%define ARCH_IA64 0
|
||||
%define ARCH_LOONGARCH 0
|
||||
%define ARCH_LOONGARCH32 0
|
||||
%define ARCH_LOONGARCH64 0
|
||||
%define ARCH_M68K 0
|
||||
%define ARCH_MIPS 0
|
||||
%define ARCH_MIPS64 0
|
||||
%define ARCH_PARISC 0
|
||||
%define ARCH_PPC 0
|
||||
%define ARCH_PPC64 0
|
||||
%define ARCH_RISCV 0
|
||||
%define ARCH_S390 0
|
||||
%define ARCH_SH4 0
|
||||
%define ARCH_SPARC 0
|
||||
|
@ -47,7 +43,6 @@
|
|||
%define HAVE_AVX 1
|
||||
%define HAVE_AVX2 1
|
||||
%define HAVE_AVX512 1
|
||||
%define HAVE_AVX512ICL 1
|
||||
%define HAVE_FMA3 1
|
||||
%define HAVE_FMA4 1
|
||||
%define HAVE_MMX 1
|
||||
|
@ -70,11 +65,10 @@
|
|||
%define HAVE_MIPSDSP 0
|
||||
%define HAVE_MIPSDSPR2 0
|
||||
%define HAVE_MSA 0
|
||||
%define HAVE_MSA2 0
|
||||
%define HAVE_LOONGSON2 0
|
||||
%define HAVE_LOONGSON3 0
|
||||
%define HAVE_MMI 0
|
||||
%define HAVE_LSX 0
|
||||
%define HAVE_LASX 0
|
||||
%define HAVE_ARMV5TE_EXTERNAL 0
|
||||
%define HAVE_ARMV6_EXTERNAL 0
|
||||
%define HAVE_ARMV6T2_EXTERNAL 0
|
||||
|
@ -95,7 +89,6 @@
|
|||
%define HAVE_AVX_EXTERNAL 1
|
||||
%define HAVE_AVX2_EXTERNAL 1
|
||||
%define HAVE_AVX512_EXTERNAL 1
|
||||
%define HAVE_AVX512ICL_EXTERNAL 0
|
||||
%define HAVE_FMA3_EXTERNAL 1
|
||||
%define HAVE_FMA4_EXTERNAL 1
|
||||
%define HAVE_MMX_EXTERNAL 1
|
||||
|
@ -118,11 +111,10 @@
|
|||
%define HAVE_MIPSDSP_EXTERNAL 0
|
||||
%define HAVE_MIPSDSPR2_EXTERNAL 0
|
||||
%define HAVE_MSA_EXTERNAL 0
|
||||
%define HAVE_MSA2_EXTERNAL 0
|
||||
%define HAVE_LOONGSON2_EXTERNAL 0
|
||||
%define HAVE_LOONGSON3_EXTERNAL 0
|
||||
%define HAVE_MMI_EXTERNAL 0
|
||||
%define HAVE_LSX_EXTERNAL 0
|
||||
%define HAVE_LASX_EXTERNAL 0
|
||||
%define HAVE_ARMV5TE_INLINE 0
|
||||
%define HAVE_ARMV6_INLINE 0
|
||||
%define HAVE_ARMV6T2_INLINE 0
|
||||
|
@ -143,7 +135,6 @@
|
|||
%define HAVE_AVX_INLINE 0
|
||||
%define HAVE_AVX2_INLINE 0
|
||||
%define HAVE_AVX512_INLINE 0
|
||||
%define HAVE_AVX512ICL_INLINE 0
|
||||
%define HAVE_FMA3_INLINE 0
|
||||
%define HAVE_FMA4_INLINE 0
|
||||
%define HAVE_MMX_INLINE 0
|
||||
|
@ -166,14 +157,13 @@
|
|||
%define HAVE_MIPSDSP_INLINE 0
|
||||
%define HAVE_MIPSDSPR2_INLINE 0
|
||||
%define HAVE_MSA_INLINE 0
|
||||
%define HAVE_MSA2_INLINE 0
|
||||
%define HAVE_LOONGSON2_INLINE 0
|
||||
%define HAVE_LOONGSON3_INLINE 0
|
||||
%define HAVE_MMI_INLINE 0
|
||||
%define HAVE_LSX_INLINE 0
|
||||
%define HAVE_LASX_INLINE 0
|
||||
%define HAVE_ALIGNED_STACK 0
|
||||
%define HAVE_FAST_64BIT 0
|
||||
%define HAVE_FAST_CLZ 1
|
||||
%define HAVE_FAST_CLZ 0
|
||||
%define HAVE_FAST_CMOV 0
|
||||
%define HAVE_LOCAL_ALIGNED 1
|
||||
%define HAVE_SIMD_ALIGN_16 1
|
||||
|
@ -211,7 +201,6 @@
|
|||
%define HAVE_ES2_GL_H 0
|
||||
%define HAVE_GSM_H 0
|
||||
%define HAVE_IO_H 1
|
||||
%define HAVE_LINUX_DMA_BUF_H 0
|
||||
%define HAVE_LINUX_PERF_EVENT_H 0
|
||||
%define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
%define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
|
@ -275,16 +264,12 @@
|
|||
%define HAVE_COMMANDLINETOARGVW 1
|
||||
%define HAVE_FCNTL 0
|
||||
%define HAVE_GETADDRINFO 1
|
||||
%define HAVE_GETAUXVAL 0
|
||||
%define HAVE_GETENV 1
|
||||
%define HAVE_GETHRTIME 0
|
||||
%define HAVE_GETOPT 0
|
||||
%define HAVE_GETMODULEHANDLE 1
|
||||
%define HAVE_GETPROCESSAFFINITYMASK 1
|
||||
%define HAVE_GETPROCESSMEMORYINFO 1
|
||||
%define HAVE_GETPROCESSTIMES 1
|
||||
%define HAVE_GETRUSAGE 0
|
||||
%define HAVE_GETSTDHANDLE 1
|
||||
%define HAVE_GETSYSTEMTIMEASFILETIME 1
|
||||
%define HAVE_GETTIMEOFDAY 0
|
||||
%define HAVE_GLOB 0
|
||||
|
@ -307,7 +292,6 @@
|
|||
%define HAVE_SECITEMIMPORT 0
|
||||
%define HAVE_SETCONSOLETEXTATTRIBUTE 1
|
||||
%define HAVE_SETCONSOLECTRLHANDLER 1
|
||||
%define HAVE_SETDLLDIRECTORY 1
|
||||
%define HAVE_SETMODE 1
|
||||
%define HAVE_SETRLIMIT 0
|
||||
%define HAVE_SLEEP 1
|
||||
|
@ -341,29 +325,14 @@
|
|||
%define HAVE_INLINE_ASM_LABELS 0
|
||||
%define HAVE_INLINE_ASM_NONLOCAL_LABELS 0
|
||||
%define HAVE_PRAGMA_DEPRECATED 1
|
||||
%define HAVE_RSYNC_CONTIMEOUT 0
|
||||
%define HAVE_RSYNC_CONTIMEOUT 1
|
||||
%define HAVE_SYMVER_ASM_LABEL 0
|
||||
%define HAVE_SYMVER_GNU_ASM 0
|
||||
%define HAVE_VFP_ARGS 0
|
||||
%define HAVE_XFORM_ASM 0
|
||||
%define HAVE_XMM_CLOBBERS 0
|
||||
%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
%define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
|
||||
%define HAVE_KCMVIDEOCODECTYPE_VP9 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
|
||||
%define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
|
||||
%define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
|
||||
%define HAVE_SOCKLEN_T 1
|
||||
%define HAVE_STRUCT_ADDRINFO 1
|
||||
%define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -378,9 +347,7 @@
|
|||
%define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
%define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 0
|
||||
%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
%define HAVE_GZIP 1
|
||||
%define HAVE_LIBDRM_GETFB2 0
|
||||
%define HAVE_MAKEINFO 0
|
||||
%define HAVE_MAKEINFO 1
|
||||
%define HAVE_MAKEINFO_HTML 0
|
||||
%define HAVE_OPENCL_D3D11 0
|
||||
%define HAVE_OPENCL_DRM_ARM 0
|
||||
|
@ -391,14 +358,12 @@
|
|||
%define HAVE_PERL 1
|
||||
%define HAVE_POD2MAN 1
|
||||
%define HAVE_TEXI2HTML 0
|
||||
%define HAVE_XMLLINT 1
|
||||
%define HAVE_ZLIB_GZIP 0
|
||||
%define CONFIG_DOC 0
|
||||
%define CONFIG_HTMLPAGES 0
|
||||
%define CONFIG_MANPAGES 1
|
||||
%define CONFIG_PODPAGES 1
|
||||
%define CONFIG_TXTPAGES 0
|
||||
%define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
|
||||
%define CONFIG_TXTPAGES 1
|
||||
%define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
%define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
%define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
|
@ -434,12 +399,14 @@
|
|||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_LIBTLS 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_LIBARIBB24 0
|
||||
%define CONFIG_LIBLENSFUN 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBVMAF 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_MBEDTLS 0
|
||||
%define CONFIG_RKMPP 0
|
||||
|
@ -449,7 +416,6 @@
|
|||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_JNI 0
|
||||
%define CONFIG_LADSPA 0
|
||||
%define CONFIG_LCMS2 0
|
||||
%define CONFIG_LIBAOM 0
|
||||
%define CONFIG_LIBASS 0
|
||||
%define CONFIG_LIBBLURAY 0
|
||||
|
@ -464,13 +430,11 @@
|
|||
%define CONFIG_LIBFONTCONFIG 0
|
||||
%define CONFIG_LIBFREETYPE 0
|
||||
%define CONFIG_LIBFRIBIDI 0
|
||||
%define CONFIG_LIBGLSLANG 0
|
||||
%define CONFIG_LIBGME 0
|
||||
%define CONFIG_LIBGSM 0
|
||||
%define CONFIG_LIBIEC61883 0
|
||||
%define CONFIG_LIBILBC 0
|
||||
%define CONFIG_LIBJACK 0
|
||||
%define CONFIG_LIBJXL 0
|
||||
%define CONFIG_LIBKLVANC 0
|
||||
%define CONFIG_LIBKVAZAAR 0
|
||||
%define CONFIG_LIBMODPLUG 0
|
||||
|
@ -480,16 +444,10 @@
|
|||
%define CONFIG_LIBOPENH264 0
|
||||
%define CONFIG_LIBOPENJPEG 0
|
||||
%define CONFIG_LIBOPENMPT 0
|
||||
%define CONFIG_LIBOPENVINO 0
|
||||
%define CONFIG_LIBOPUS 0
|
||||
%define CONFIG_LIBPLACEBO 0
|
||||
%define CONFIG_LIBPULSE 0
|
||||
%define CONFIG_LIBRABBITMQ 0
|
||||
%define CONFIG_LIBRAV1E 0
|
||||
%define CONFIG_LIBRIST 0
|
||||
%define CONFIG_LIBRSVG 0
|
||||
%define CONFIG_LIBRTMP 0
|
||||
%define CONFIG_LIBSHADERC 0
|
||||
%define CONFIG_LIBSHINE 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_LIBSNAPPY 0
|
||||
|
@ -497,16 +455,14 @@
|
|||
%define CONFIG_LIBSPEEX 0
|
||||
%define CONFIG_LIBSRT 0
|
||||
%define CONFIG_LIBSSH 0
|
||||
%define CONFIG_LIBSVTAV1 0
|
||||
%define CONFIG_LIBTENSORFLOW 0
|
||||
%define CONFIG_LIBTESSERACT 0
|
||||
%define CONFIG_LIBTHEORA 0
|
||||
%define CONFIG_LIBTWOLAME 0
|
||||
%define CONFIG_LIBUAVS3D 0
|
||||
%define CONFIG_LIBV4L2 0
|
||||
%define CONFIG_LIBVMAF 0
|
||||
%define CONFIG_LIBVORBIS 0
|
||||
%define CONFIG_LIBVPX 0
|
||||
%define CONFIG_LIBWAVPACK 0
|
||||
%define CONFIG_LIBWEBP 0
|
||||
%define CONFIG_LIBXML2 0
|
||||
%define CONFIG_LIBZIMG 0
|
||||
|
@ -516,7 +472,6 @@
|
|||
%define CONFIG_MEDIACODEC 0
|
||||
%define CONFIG_OPENAL 0
|
||||
%define CONFIG_OPENGL 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_POCKETSPHINX 0
|
||||
%define CONFIG_VAPOURSYNTH 0
|
||||
%define CONFIG_ALSA 0
|
||||
|
@ -530,9 +485,7 @@
|
|||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LZMA 0
|
||||
%define CONFIG_MEDIAFOUNDATION 0
|
||||
%define CONFIG_METAL 0
|
||||
%define CONFIG_SCHANNEL 0
|
||||
%define CONFIG_SCHANNEL 1
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_SNDIO 0
|
||||
|
@ -559,8 +512,8 @@
|
|||
%define CONFIG_VAAPI 0
|
||||
%define CONFIG_VDPAU 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_VULKAN 0
|
||||
%define CONFIG_V4L2_M2M 0
|
||||
%define CONFIG_XVMC 0
|
||||
%define CONFIG_FTRAPV 0
|
||||
%define CONFIG_GRAY 0
|
||||
%define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -581,6 +534,7 @@
|
|||
%define CONFIG_AVFORMAT 0
|
||||
%define CONFIG_AVCODEC 1
|
||||
%define CONFIG_SWRESAMPLE 0
|
||||
%define CONFIG_AVRESAMPLE 0
|
||||
%define CONFIG_AVUTIL 1
|
||||
%define CONFIG_FFPLAY 0
|
||||
%define CONFIG_FFPROBE 0
|
||||
|
@ -592,38 +546,27 @@
|
|||
%define CONFIG_FAST_UNALIGNED 1
|
||||
%define CONFIG_FFT 1
|
||||
%define CONFIG_LSP 0
|
||||
%define CONFIG_LZO 0
|
||||
%define CONFIG_MDCT 0
|
||||
%define CONFIG_PIXELUTILS 0
|
||||
%define CONFIG_NETWORK 0
|
||||
%define CONFIG_RDFT 1
|
||||
%define CONFIG_AUTODETECT 0
|
||||
%define CONFIG_FONTCONFIG 0
|
||||
%define CONFIG_LARGE_TESTS 1
|
||||
%define CONFIG_LINUX_PERF 0
|
||||
%define CONFIG_MACOS_KPERF 0
|
||||
%define CONFIG_MEMORY_POISONING 0
|
||||
%define CONFIG_NEON_CLOBBER_TEST 0
|
||||
%define CONFIG_OSSFUZZ 0
|
||||
%define CONFIG_PIC 0
|
||||
%define CONFIG_PTX_COMPRESSION 0
|
||||
%define CONFIG_THUMB 0
|
||||
%define CONFIG_VALGRIND_BACKTRACE 0
|
||||
%define CONFIG_XMM_CLOBBER_TEST 0
|
||||
%define CONFIG_BSFS 0
|
||||
%define CONFIG_BSFS 1
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_ENCODERS 0
|
||||
%define CONFIG_HWACCELS 0
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_INDEVS 0
|
||||
%define CONFIG_OUTDEVS 0
|
||||
%define CONFIG_FILTERS 0
|
||||
%define CONFIG_DEMUXERS 0
|
||||
%define CONFIG_MUXERS 0
|
||||
%define CONFIG_PROTOCOLS 0
|
||||
%define CONFIG_AANDCTTABLES 0
|
||||
%define CONFIG_AC3DSP 0
|
||||
%define CONFIG_ADTS_HEADER 0
|
||||
%define CONFIG_ATSC_A53 0
|
||||
%define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
%define CONFIG_AUDIODSP 0
|
||||
%define CONFIG_BLOCKDSP 0
|
||||
|
@ -636,10 +579,8 @@
|
|||
%define CONFIG_CBS_JPEG 0
|
||||
%define CONFIG_CBS_MPEG2 0
|
||||
%define CONFIG_CBS_VP9 0
|
||||
%define CONFIG_DEFLATE_WRAPPER 0
|
||||
%define CONFIG_DIRAC_PARSE 0
|
||||
%define CONFIG_DNN 0
|
||||
%define CONFIG_DOVI_RPU 0
|
||||
%define CONFIG_DVPROFILE 0
|
||||
%define CONFIG_EXIF 0
|
||||
%define CONFIG_FAANDCT 1
|
||||
|
@ -665,7 +606,6 @@
|
|||
%define CONFIG_IDCTDSP 1
|
||||
%define CONFIG_IIRFILTER 0
|
||||
%define CONFIG_MDCT15 0
|
||||
%define CONFIG_INFLATE_WRAPPER 0
|
||||
%define CONFIG_INTRAX8 0
|
||||
%define CONFIG_ISO_MEDIA 0
|
||||
%define CONFIG_IVIDSP 0
|
||||
|
@ -682,9 +622,7 @@
|
|||
%define CONFIG_MPEGAUDIO 1
|
||||
%define CONFIG_MPEGAUDIODSP 1
|
||||
%define CONFIG_MPEGAUDIOHEADER 1
|
||||
%define CONFIG_MPEG4AUDIO 0
|
||||
%define CONFIG_MPEGVIDEO 0
|
||||
%define CONFIG_MPEGVIDEODEC 0
|
||||
%define CONFIG_MPEGVIDEOENC 0
|
||||
%define CONFIG_MSS34DSP 0
|
||||
%define CONFIG_PIXBLOCKDSP 0
|
||||
|
@ -716,3 +654,11 @@
|
|||
%define CONFIG_VP8DSP 1
|
||||
%define CONFIG_WMA_FREQS 0
|
||||
%define CONFIG_WMV2DSP 0
|
||||
%define CONFIG_NULL_BSF 1
|
||||
%define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
|
||||
%define CONFIG_VP8_DECODER 1
|
||||
%define CONFIG_VP9_DECODER 1
|
||||
%define CONFIG_FLAC_DECODER 1
|
||||
%define CONFIG_MP3_DECODER 1
|
||||
%define CONFIG_VP8_PARSER 1
|
||||
%define CONFIG_VP9_PARSER 1
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-all --enable-avcodec --enable-decoder='vp8,vp9,mp3,flac' --enable-parser='vp8,vp9' --disable-static --enable-shared --disable-autodetect --toolchain=msvc"
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-x86asm --disable-cuda --disable-cuvid --enable-decoder=mp3 --toolchain=msvc"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2022
|
||||
#define CONFIG_THIS_YEAR 2019
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "Microsoft (R) C/C++ Optimizing Compiler Version 19.29.30133 for x86"
|
||||
#define OS_NAME win32
|
||||
#define av_restrict restrict
|
||||
#define CC_IDENT "Microsoft (R) C/C++ Optimizing Compiler Version 19.24.28315 for x86"
|
||||
#define av_restrict __restrict
|
||||
#define EXTERN_PREFIX "_"
|
||||
#define EXTERN_ASM _
|
||||
#define BUILDSUF ""
|
||||
|
@ -23,16 +22,12 @@
|
|||
#define ARCH_AVR32_UC 0
|
||||
#define ARCH_BFIN 0
|
||||
#define ARCH_IA64 0
|
||||
#define ARCH_LOONGARCH 0
|
||||
#define ARCH_LOONGARCH32 0
|
||||
#define ARCH_LOONGARCH64 0
|
||||
#define ARCH_M68K 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_MIPS64 0
|
||||
#define ARCH_PARISC 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_PPC64 0
|
||||
#define ARCH_RISCV 0
|
||||
#define ARCH_S390 0
|
||||
#define ARCH_SH4 0
|
||||
#define ARCH_SPARC 0
|
||||
|
@ -63,7 +58,6 @@
|
|||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_AVX512 1
|
||||
#define HAVE_AVX512ICL 1
|
||||
#define HAVE_FMA3 1
|
||||
#define HAVE_FMA4 1
|
||||
#define HAVE_MMX 1
|
||||
|
@ -86,11 +80,10 @@
|
|||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_MSA2 0
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_LSX 0
|
||||
#define HAVE_LASX 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 0
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
#define HAVE_ARMV6T2_EXTERNAL 0
|
||||
|
@ -111,7 +104,6 @@
|
|||
#define HAVE_AVX_EXTERNAL 1
|
||||
#define HAVE_AVX2_EXTERNAL 1
|
||||
#define HAVE_AVX512_EXTERNAL 1
|
||||
#define HAVE_AVX512ICL_EXTERNAL 0
|
||||
#define HAVE_FMA3_EXTERNAL 1
|
||||
#define HAVE_FMA4_EXTERNAL 1
|
||||
#define HAVE_MMX_EXTERNAL 1
|
||||
|
@ -134,11 +126,10 @@
|
|||
#define HAVE_MIPSDSP_EXTERNAL 0
|
||||
#define HAVE_MIPSDSPR2_EXTERNAL 0
|
||||
#define HAVE_MSA_EXTERNAL 0
|
||||
#define HAVE_MSA2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON3_EXTERNAL 0
|
||||
#define HAVE_MMI_EXTERNAL 0
|
||||
#define HAVE_LSX_EXTERNAL 0
|
||||
#define HAVE_LASX_EXTERNAL 0
|
||||
#define HAVE_ARMV5TE_INLINE 0
|
||||
#define HAVE_ARMV6_INLINE 0
|
||||
#define HAVE_ARMV6T2_INLINE 0
|
||||
|
@ -159,7 +150,6 @@
|
|||
#define HAVE_AVX_INLINE 0
|
||||
#define HAVE_AVX2_INLINE 0
|
||||
#define HAVE_AVX512_INLINE 0
|
||||
#define HAVE_AVX512ICL_INLINE 0
|
||||
#define HAVE_FMA3_INLINE 0
|
||||
#define HAVE_FMA4_INLINE 0
|
||||
#define HAVE_MMX_INLINE 0
|
||||
|
@ -182,14 +172,13 @@
|
|||
#define HAVE_MIPSDSP_INLINE 0
|
||||
#define HAVE_MIPSDSPR2_INLINE 0
|
||||
#define HAVE_MSA_INLINE 0
|
||||
#define HAVE_MSA2_INLINE 0
|
||||
#define HAVE_LOONGSON2_INLINE 0
|
||||
#define HAVE_LOONGSON3_INLINE 0
|
||||
#define HAVE_MMI_INLINE 0
|
||||
#define HAVE_LSX_INLINE 0
|
||||
#define HAVE_LASX_INLINE 0
|
||||
#define HAVE_ALIGNED_STACK 0
|
||||
#define HAVE_FAST_64BIT 0
|
||||
#define HAVE_FAST_CLZ 1
|
||||
#define HAVE_FAST_CLZ 0
|
||||
#define HAVE_FAST_CMOV 0
|
||||
#define HAVE_LOCAL_ALIGNED 1
|
||||
#define HAVE_SIMD_ALIGN_16 1
|
||||
|
@ -227,7 +216,6 @@
|
|||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
#define HAVE_IO_H 1
|
||||
#define HAVE_LINUX_DMA_BUF_H 0
|
||||
#define HAVE_LINUX_PERF_EVENT_H 0
|
||||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
|
@ -291,16 +279,12 @@
|
|||
#define HAVE_COMMANDLINETOARGVW 1
|
||||
#define HAVE_FCNTL 0
|
||||
#define HAVE_GETADDRINFO 1
|
||||
#define HAVE_GETAUXVAL 0
|
||||
#define HAVE_GETENV 1
|
||||
#define HAVE_GETHRTIME 0
|
||||
#define HAVE_GETOPT 0
|
||||
#define HAVE_GETMODULEHANDLE 1
|
||||
#define HAVE_GETPROCESSAFFINITYMASK 1
|
||||
#define HAVE_GETPROCESSMEMORYINFO 1
|
||||
#define HAVE_GETPROCESSTIMES 1
|
||||
#define HAVE_GETRUSAGE 0
|
||||
#define HAVE_GETSTDHANDLE 1
|
||||
#define HAVE_GETSYSTEMTIMEASFILETIME 1
|
||||
#define HAVE_GETTIMEOFDAY 0
|
||||
#define HAVE_GLOB 0
|
||||
|
@ -323,7 +307,6 @@
|
|||
#define HAVE_SECITEMIMPORT 0
|
||||
#define HAVE_SETCONSOLETEXTATTRIBUTE 1
|
||||
#define HAVE_SETCONSOLECTRLHANDLER 1
|
||||
#define HAVE_SETDLLDIRECTORY 1
|
||||
#define HAVE_SETMODE 1
|
||||
#define HAVE_SETRLIMIT 0
|
||||
#define HAVE_SLEEP 1
|
||||
|
@ -357,29 +340,14 @@
|
|||
#define HAVE_INLINE_ASM_LABELS 0
|
||||
#define HAVE_INLINE_ASM_NONLOCAL_LABELS 0
|
||||
#define HAVE_PRAGMA_DEPRECATED 1
|
||||
#define HAVE_RSYNC_CONTIMEOUT 0
|
||||
#define HAVE_RSYNC_CONTIMEOUT 1
|
||||
#define HAVE_SYMVER_ASM_LABEL 0
|
||||
#define HAVE_SYMVER_GNU_ASM 0
|
||||
#define HAVE_VFP_ARGS 0
|
||||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_VP9 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
|
||||
#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -394,9 +362,7 @@
|
|||
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 0
|
||||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
#define HAVE_GZIP 1
|
||||
#define HAVE_LIBDRM_GETFB2 0
|
||||
#define HAVE_MAKEINFO 0
|
||||
#define HAVE_MAKEINFO 1
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_OPENCL_D3D11 0
|
||||
#define HAVE_OPENCL_DRM_ARM 0
|
||||
|
@ -407,14 +373,12 @@
|
|||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_XMLLINT 1
|
||||
#define HAVE_ZLIB_GZIP 0
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 0
|
||||
#define CONFIG_MANPAGES 1
|
||||
#define CONFIG_PODPAGES 1
|
||||
#define CONFIG_TXTPAGES 0
|
||||
#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
|
||||
#define CONFIG_TXTPAGES 1
|
||||
#define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
|
@ -450,12 +414,14 @@
|
|||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_LIBTLS 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBARIBB24 0
|
||||
#define CONFIG_LIBLENSFUN 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_MBEDTLS 0
|
||||
#define CONFIG_RKMPP 0
|
||||
|
@ -465,7 +431,6 @@
|
|||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LCMS2 0
|
||||
#define CONFIG_LIBAOM 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
|
@ -480,13 +445,11 @@
|
|||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
#define CONFIG_LIBFRIBIDI 0
|
||||
#define CONFIG_LIBGLSLANG 0
|
||||
#define CONFIG_LIBGME 0
|
||||
#define CONFIG_LIBGSM 0
|
||||
#define CONFIG_LIBIEC61883 0
|
||||
#define CONFIG_LIBILBC 0
|
||||
#define CONFIG_LIBJACK 0
|
||||
#define CONFIG_LIBJXL 0
|
||||
#define CONFIG_LIBKLVANC 0
|
||||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
|
@ -496,16 +459,10 @@
|
|||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPENVINO 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPLACEBO 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRABBITMQ 0
|
||||
#define CONFIG_LIBRAV1E 0
|
||||
#define CONFIG_LIBRIST 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBSHADERC 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
|
@ -513,16 +470,14 @@
|
|||
#define CONFIG_LIBSPEEX 0
|
||||
#define CONFIG_LIBSRT 0
|
||||
#define CONFIG_LIBSSH 0
|
||||
#define CONFIG_LIBSVTAV1 0
|
||||
#define CONFIG_LIBTENSORFLOW 0
|
||||
#define CONFIG_LIBTESSERACT 0
|
||||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBUAVS3D 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWAVPACK 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
|
@ -532,7 +487,6 @@
|
|||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_POCKETSPHINX 0
|
||||
#define CONFIG_VAPOURSYNTH 0
|
||||
#define CONFIG_ALSA 0
|
||||
|
@ -546,9 +500,7 @@
|
|||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIAFOUNDATION 0
|
||||
#define CONFIG_METAL 0
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SCHANNEL 1
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
|
@ -575,8 +527,8 @@
|
|||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_VULKAN 0
|
||||
#define CONFIG_V4L2_M2M 0
|
||||
#define CONFIG_XVMC 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -597,6 +549,7 @@
|
|||
#define CONFIG_AVFORMAT 0
|
||||
#define CONFIG_AVCODEC 1
|
||||
#define CONFIG_SWRESAMPLE 0
|
||||
#define CONFIG_AVRESAMPLE 0
|
||||
#define CONFIG_AVUTIL 1
|
||||
#define CONFIG_FFPLAY 0
|
||||
#define CONFIG_FFPROBE 0
|
||||
|
@ -608,38 +561,27 @@
|
|||
#define CONFIG_FAST_UNALIGNED 1
|
||||
#define CONFIG_FFT 1
|
||||
#define CONFIG_LSP 0
|
||||
#define CONFIG_LZO 0
|
||||
#define CONFIG_MDCT 0
|
||||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 1
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_LARGE_TESTS 1
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MACOS_KPERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_PTX_COMPRESSION 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_BSFS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_ADTS_HEADER 0
|
||||
#define CONFIG_ATSC_A53 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
#define CONFIG_AUDIODSP 0
|
||||
#define CONFIG_BLOCKDSP 0
|
||||
|
@ -652,10 +594,8 @@
|
|||
#define CONFIG_CBS_JPEG 0
|
||||
#define CONFIG_CBS_MPEG2 0
|
||||
#define CONFIG_CBS_VP9 0
|
||||
#define CONFIG_DEFLATE_WRAPPER 0
|
||||
#define CONFIG_DIRAC_PARSE 0
|
||||
#define CONFIG_DNN 0
|
||||
#define CONFIG_DOVI_RPU 0
|
||||
#define CONFIG_DVPROFILE 0
|
||||
#define CONFIG_EXIF 0
|
||||
#define CONFIG_FAANDCT 1
|
||||
|
@ -681,7 +621,6 @@
|
|||
#define CONFIG_IDCTDSP 1
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INFLATE_WRAPPER 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
|
@ -698,9 +637,7 @@
|
|||
#define CONFIG_MPEGAUDIO 1
|
||||
#define CONFIG_MPEGAUDIODSP 1
|
||||
#define CONFIG_MPEGAUDIOHEADER 1
|
||||
#define CONFIG_MPEG4AUDIO 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEODEC 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
#define CONFIG_PIXBLOCKDSP 0
|
||||
|
@ -732,4 +669,12 @@
|
|||
#define CONFIG_VP8DSP 1
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#define CONFIG_NULL_BSF 1
|
||||
#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
|
||||
#define CONFIG_VP8_DECODER 1
|
||||
#define CONFIG_VP9_DECODER 1
|
||||
#define CONFIG_FLAC_DECODER 1
|
||||
#define CONFIG_MP3_DECODER 1
|
||||
#define CONFIG_VP8_PARSER 1
|
||||
#define CONFIG_VP9_PARSER 1
|
||||
#endif /* FFMPEG_CONFIG_H */
|
||||
|
|
|
@ -7,16 +7,12 @@
|
|||
%define ARCH_AVR32_UC 0
|
||||
%define ARCH_BFIN 0
|
||||
%define ARCH_IA64 0
|
||||
%define ARCH_LOONGARCH 0
|
||||
%define ARCH_LOONGARCH32 0
|
||||
%define ARCH_LOONGARCH64 0
|
||||
%define ARCH_M68K 0
|
||||
%define ARCH_MIPS 0
|
||||
%define ARCH_MIPS64 0
|
||||
%define ARCH_PARISC 0
|
||||
%define ARCH_PPC 0
|
||||
%define ARCH_PPC64 0
|
||||
%define ARCH_RISCV 0
|
||||
%define ARCH_S390 0
|
||||
%define ARCH_SH4 0
|
||||
%define ARCH_SPARC 0
|
||||
|
@ -47,7 +43,6 @@
|
|||
%define HAVE_AVX 1
|
||||
%define HAVE_AVX2 1
|
||||
%define HAVE_AVX512 1
|
||||
%define HAVE_AVX512ICL 1
|
||||
%define HAVE_FMA3 1
|
||||
%define HAVE_FMA4 1
|
||||
%define HAVE_MMX 1
|
||||
|
@ -70,11 +65,10 @@
|
|||
%define HAVE_MIPSDSP 0
|
||||
%define HAVE_MIPSDSPR2 0
|
||||
%define HAVE_MSA 0
|
||||
%define HAVE_MSA2 0
|
||||
%define HAVE_LOONGSON2 0
|
||||
%define HAVE_LOONGSON3 0
|
||||
%define HAVE_MMI 0
|
||||
%define HAVE_LSX 0
|
||||
%define HAVE_LASX 0
|
||||
%define HAVE_ARMV5TE_EXTERNAL 0
|
||||
%define HAVE_ARMV6_EXTERNAL 0
|
||||
%define HAVE_ARMV6T2_EXTERNAL 0
|
||||
|
@ -95,7 +89,6 @@
|
|||
%define HAVE_AVX_EXTERNAL 1
|
||||
%define HAVE_AVX2_EXTERNAL 1
|
||||
%define HAVE_AVX512_EXTERNAL 1
|
||||
%define HAVE_AVX512ICL_EXTERNAL 1
|
||||
%define HAVE_FMA3_EXTERNAL 1
|
||||
%define HAVE_FMA4_EXTERNAL 1
|
||||
%define HAVE_MMX_EXTERNAL 1
|
||||
|
@ -118,11 +111,10 @@
|
|||
%define HAVE_MIPSDSP_EXTERNAL 0
|
||||
%define HAVE_MIPSDSPR2_EXTERNAL 0
|
||||
%define HAVE_MSA_EXTERNAL 0
|
||||
%define HAVE_MSA2_EXTERNAL 0
|
||||
%define HAVE_LOONGSON2_EXTERNAL 0
|
||||
%define HAVE_LOONGSON3_EXTERNAL 0
|
||||
%define HAVE_MMI_EXTERNAL 0
|
||||
%define HAVE_LSX_EXTERNAL 0
|
||||
%define HAVE_LASX_EXTERNAL 0
|
||||
%define HAVE_ARMV5TE_INLINE 0
|
||||
%define HAVE_ARMV6_INLINE 0
|
||||
%define HAVE_ARMV6T2_INLINE 0
|
||||
|
@ -143,7 +135,6 @@
|
|||
%define HAVE_AVX_INLINE 0
|
||||
%define HAVE_AVX2_INLINE 0
|
||||
%define HAVE_AVX512_INLINE 0
|
||||
%define HAVE_AVX512ICL_INLINE 0
|
||||
%define HAVE_FMA3_INLINE 0
|
||||
%define HAVE_FMA4_INLINE 0
|
||||
%define HAVE_MMX_INLINE 0
|
||||
|
@ -166,11 +157,10 @@
|
|||
%define HAVE_MIPSDSP_INLINE 0
|
||||
%define HAVE_MIPSDSPR2_INLINE 0
|
||||
%define HAVE_MSA_INLINE 0
|
||||
%define HAVE_MSA2_INLINE 0
|
||||
%define HAVE_LOONGSON2_INLINE 0
|
||||
%define HAVE_LOONGSON3_INLINE 0
|
||||
%define HAVE_MMI_INLINE 0
|
||||
%define HAVE_LSX_INLINE 0
|
||||
%define HAVE_LASX_INLINE 0
|
||||
%define HAVE_ALIGNED_STACK 1
|
||||
%define HAVE_FAST_64BIT 1
|
||||
%define HAVE_FAST_CLZ 1
|
||||
|
@ -211,7 +201,6 @@
|
|||
%define HAVE_ES2_GL_H 0
|
||||
%define HAVE_GSM_H 0
|
||||
%define HAVE_IO_H 1
|
||||
%define HAVE_LINUX_DMA_BUF_H 0
|
||||
%define HAVE_LINUX_PERF_EVENT_H 0
|
||||
%define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
%define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
|
@ -275,16 +264,12 @@
|
|||
%define HAVE_COMMANDLINETOARGVW 1
|
||||
%define HAVE_FCNTL 0
|
||||
%define HAVE_GETADDRINFO 1
|
||||
%define HAVE_GETAUXVAL 0
|
||||
%define HAVE_GETENV 1
|
||||
%define HAVE_GETHRTIME 0
|
||||
%define HAVE_GETOPT 0
|
||||
%define HAVE_GETMODULEHANDLE 1
|
||||
%define HAVE_GETPROCESSAFFINITYMASK 1
|
||||
%define HAVE_GETPROCESSMEMORYINFO 1
|
||||
%define HAVE_GETPROCESSTIMES 1
|
||||
%define HAVE_GETRUSAGE 0
|
||||
%define HAVE_GETSTDHANDLE 1
|
||||
%define HAVE_GETSYSTEMTIMEASFILETIME 1
|
||||
%define HAVE_GETTIMEOFDAY 0
|
||||
%define HAVE_GLOB 0
|
||||
|
@ -307,7 +292,6 @@
|
|||
%define HAVE_SECITEMIMPORT 0
|
||||
%define HAVE_SETCONSOLETEXTATTRIBUTE 1
|
||||
%define HAVE_SETCONSOLECTRLHANDLER 1
|
||||
%define HAVE_SETDLLDIRECTORY 1
|
||||
%define HAVE_SETMODE 1
|
||||
%define HAVE_SETRLIMIT 0
|
||||
%define HAVE_SLEEP 1
|
||||
|
@ -341,29 +325,14 @@
|
|||
%define HAVE_INLINE_ASM_LABELS 0
|
||||
%define HAVE_INLINE_ASM_NONLOCAL_LABELS 0
|
||||
%define HAVE_PRAGMA_DEPRECATED 1
|
||||
%define HAVE_RSYNC_CONTIMEOUT 0
|
||||
%define HAVE_RSYNC_CONTIMEOUT 1
|
||||
%define HAVE_SYMVER_ASM_LABEL 0
|
||||
%define HAVE_SYMVER_GNU_ASM 0
|
||||
%define HAVE_VFP_ARGS 0
|
||||
%define HAVE_XFORM_ASM 0
|
||||
%define HAVE_XMM_CLOBBERS 0
|
||||
%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
%define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
|
||||
%define HAVE_KCMVIDEOCODECTYPE_VP9 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
|
||||
%define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
|
||||
%define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
|
||||
%define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
|
||||
%define HAVE_SOCKLEN_T 1
|
||||
%define HAVE_STRUCT_ADDRINFO 1
|
||||
%define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -378,9 +347,7 @@
|
|||
%define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
%define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 0
|
||||
%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
%define HAVE_GZIP 1
|
||||
%define HAVE_LIBDRM_GETFB2 0
|
||||
%define HAVE_MAKEINFO 0
|
||||
%define HAVE_MAKEINFO 1
|
||||
%define HAVE_MAKEINFO_HTML 0
|
||||
%define HAVE_OPENCL_D3D11 0
|
||||
%define HAVE_OPENCL_DRM_ARM 0
|
||||
|
@ -391,14 +358,12 @@
|
|||
%define HAVE_PERL 1
|
||||
%define HAVE_POD2MAN 1
|
||||
%define HAVE_TEXI2HTML 0
|
||||
%define HAVE_XMLLINT 1
|
||||
%define HAVE_ZLIB_GZIP 0
|
||||
%define CONFIG_DOC 0
|
||||
%define CONFIG_HTMLPAGES 0
|
||||
%define CONFIG_MANPAGES 1
|
||||
%define CONFIG_PODPAGES 1
|
||||
%define CONFIG_TXTPAGES 0
|
||||
%define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
|
||||
%define CONFIG_TXTPAGES 1
|
||||
%define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
%define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
%define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
|
@ -434,12 +399,14 @@
|
|||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_LIBTLS 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_LIBARIBB24 0
|
||||
%define CONFIG_LIBLENSFUN 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBVMAF 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_MBEDTLS 0
|
||||
%define CONFIG_RKMPP 0
|
||||
|
@ -449,7 +416,6 @@
|
|||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_JNI 0
|
||||
%define CONFIG_LADSPA 0
|
||||
%define CONFIG_LCMS2 0
|
||||
%define CONFIG_LIBAOM 0
|
||||
%define CONFIG_LIBASS 0
|
||||
%define CONFIG_LIBBLURAY 0
|
||||
|
@ -464,13 +430,11 @@
|
|||
%define CONFIG_LIBFONTCONFIG 0
|
||||
%define CONFIG_LIBFREETYPE 0
|
||||
%define CONFIG_LIBFRIBIDI 0
|
||||
%define CONFIG_LIBGLSLANG 0
|
||||
%define CONFIG_LIBGME 0
|
||||
%define CONFIG_LIBGSM 0
|
||||
%define CONFIG_LIBIEC61883 0
|
||||
%define CONFIG_LIBILBC 0
|
||||
%define CONFIG_LIBJACK 0
|
||||
%define CONFIG_LIBJXL 0
|
||||
%define CONFIG_LIBKLVANC 0
|
||||
%define CONFIG_LIBKVAZAAR 0
|
||||
%define CONFIG_LIBMODPLUG 0
|
||||
|
@ -480,16 +444,10 @@
|
|||
%define CONFIG_LIBOPENH264 0
|
||||
%define CONFIG_LIBOPENJPEG 0
|
||||
%define CONFIG_LIBOPENMPT 0
|
||||
%define CONFIG_LIBOPENVINO 0
|
||||
%define CONFIG_LIBOPUS 0
|
||||
%define CONFIG_LIBPLACEBO 0
|
||||
%define CONFIG_LIBPULSE 0
|
||||
%define CONFIG_LIBRABBITMQ 0
|
||||
%define CONFIG_LIBRAV1E 0
|
||||
%define CONFIG_LIBRIST 0
|
||||
%define CONFIG_LIBRSVG 0
|
||||
%define CONFIG_LIBRTMP 0
|
||||
%define CONFIG_LIBSHADERC 0
|
||||
%define CONFIG_LIBSHINE 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_LIBSNAPPY 0
|
||||
|
@ -497,16 +455,14 @@
|
|||
%define CONFIG_LIBSPEEX 0
|
||||
%define CONFIG_LIBSRT 0
|
||||
%define CONFIG_LIBSSH 0
|
||||
%define CONFIG_LIBSVTAV1 0
|
||||
%define CONFIG_LIBTENSORFLOW 0
|
||||
%define CONFIG_LIBTESSERACT 0
|
||||
%define CONFIG_LIBTHEORA 0
|
||||
%define CONFIG_LIBTWOLAME 0
|
||||
%define CONFIG_LIBUAVS3D 0
|
||||
%define CONFIG_LIBV4L2 0
|
||||
%define CONFIG_LIBVMAF 0
|
||||
%define CONFIG_LIBVORBIS 0
|
||||
%define CONFIG_LIBVPX 0
|
||||
%define CONFIG_LIBWAVPACK 0
|
||||
%define CONFIG_LIBWEBP 0
|
||||
%define CONFIG_LIBXML2 0
|
||||
%define CONFIG_LIBZIMG 0
|
||||
|
@ -516,7 +472,6 @@
|
|||
%define CONFIG_MEDIACODEC 0
|
||||
%define CONFIG_OPENAL 0
|
||||
%define CONFIG_OPENGL 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_POCKETSPHINX 0
|
||||
%define CONFIG_VAPOURSYNTH 0
|
||||
%define CONFIG_ALSA 0
|
||||
|
@ -530,9 +485,7 @@
|
|||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LZMA 0
|
||||
%define CONFIG_MEDIAFOUNDATION 0
|
||||
%define CONFIG_METAL 0
|
||||
%define CONFIG_SCHANNEL 0
|
||||
%define CONFIG_SCHANNEL 1
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_SNDIO 0
|
||||
|
@ -559,8 +512,8 @@
|
|||
%define CONFIG_VAAPI 0
|
||||
%define CONFIG_VDPAU 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_VULKAN 0
|
||||
%define CONFIG_V4L2_M2M 0
|
||||
%define CONFIG_XVMC 0
|
||||
%define CONFIG_FTRAPV 0
|
||||
%define CONFIG_GRAY 0
|
||||
%define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -581,6 +534,7 @@
|
|||
%define CONFIG_AVFORMAT 0
|
||||
%define CONFIG_AVCODEC 1
|
||||
%define CONFIG_SWRESAMPLE 0
|
||||
%define CONFIG_AVRESAMPLE 0
|
||||
%define CONFIG_AVUTIL 1
|
||||
%define CONFIG_FFPLAY 0
|
||||
%define CONFIG_FFPROBE 0
|
||||
|
@ -592,38 +546,27 @@
|
|||
%define CONFIG_FAST_UNALIGNED 1
|
||||
%define CONFIG_FFT 1
|
||||
%define CONFIG_LSP 0
|
||||
%define CONFIG_LZO 0
|
||||
%define CONFIG_MDCT 0
|
||||
%define CONFIG_PIXELUTILS 0
|
||||
%define CONFIG_NETWORK 0
|
||||
%define CONFIG_RDFT 1
|
||||
%define CONFIG_AUTODETECT 0
|
||||
%define CONFIG_FONTCONFIG 0
|
||||
%define CONFIG_LARGE_TESTS 1
|
||||
%define CONFIG_LINUX_PERF 0
|
||||
%define CONFIG_MACOS_KPERF 0
|
||||
%define CONFIG_MEMORY_POISONING 0
|
||||
%define CONFIG_NEON_CLOBBER_TEST 0
|
||||
%define CONFIG_OSSFUZZ 0
|
||||
%define CONFIG_PIC 1
|
||||
%define CONFIG_PTX_COMPRESSION 0
|
||||
%define CONFIG_THUMB 0
|
||||
%define CONFIG_VALGRIND_BACKTRACE 0
|
||||
%define CONFIG_XMM_CLOBBER_TEST 0
|
||||
%define CONFIG_BSFS 0
|
||||
%define CONFIG_BSFS 1
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_ENCODERS 0
|
||||
%define CONFIG_HWACCELS 0
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_INDEVS 0
|
||||
%define CONFIG_OUTDEVS 0
|
||||
%define CONFIG_FILTERS 0
|
||||
%define CONFIG_DEMUXERS 0
|
||||
%define CONFIG_MUXERS 0
|
||||
%define CONFIG_PROTOCOLS 0
|
||||
%define CONFIG_AANDCTTABLES 0
|
||||
%define CONFIG_AC3DSP 0
|
||||
%define CONFIG_ADTS_HEADER 0
|
||||
%define CONFIG_ATSC_A53 0
|
||||
%define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
%define CONFIG_AUDIODSP 0
|
||||
%define CONFIG_BLOCKDSP 0
|
||||
|
@ -636,10 +579,8 @@
|
|||
%define CONFIG_CBS_JPEG 0
|
||||
%define CONFIG_CBS_MPEG2 0
|
||||
%define CONFIG_CBS_VP9 0
|
||||
%define CONFIG_DEFLATE_WRAPPER 0
|
||||
%define CONFIG_DIRAC_PARSE 0
|
||||
%define CONFIG_DNN 0
|
||||
%define CONFIG_DOVI_RPU 0
|
||||
%define CONFIG_DVPROFILE 0
|
||||
%define CONFIG_EXIF 0
|
||||
%define CONFIG_FAANDCT 1
|
||||
|
@ -665,7 +606,6 @@
|
|||
%define CONFIG_IDCTDSP 1
|
||||
%define CONFIG_IIRFILTER 0
|
||||
%define CONFIG_MDCT15 0
|
||||
%define CONFIG_INFLATE_WRAPPER 0
|
||||
%define CONFIG_INTRAX8 0
|
||||
%define CONFIG_ISO_MEDIA 0
|
||||
%define CONFIG_IVIDSP 0
|
||||
|
@ -682,9 +622,7 @@
|
|||
%define CONFIG_MPEGAUDIO 1
|
||||
%define CONFIG_MPEGAUDIODSP 1
|
||||
%define CONFIG_MPEGAUDIOHEADER 1
|
||||
%define CONFIG_MPEG4AUDIO 0
|
||||
%define CONFIG_MPEGVIDEO 0
|
||||
%define CONFIG_MPEGVIDEODEC 0
|
||||
%define CONFIG_MPEGVIDEOENC 0
|
||||
%define CONFIG_MSS34DSP 0
|
||||
%define CONFIG_PIXBLOCKDSP 0
|
||||
|
@ -716,3 +654,11 @@
|
|||
%define CONFIG_VP8DSP 1
|
||||
%define CONFIG_WMA_FREQS 0
|
||||
%define CONFIG_WMV2DSP 0
|
||||
%define CONFIG_NULL_BSF 1
|
||||
%define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
|
||||
%define CONFIG_VP8_DECODER 1
|
||||
%define CONFIG_VP9_DECODER 1
|
||||
%define CONFIG_FLAC_DECODER 1
|
||||
%define CONFIG_MP3_DECODER 1
|
||||
%define CONFIG_VP8_PARSER 1
|
||||
%define CONFIG_VP9_PARSER 1
|
|
@ -1,14 +1,13 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-all --enable-avcodec --enable-decoder='vp8,vp9,mp3,flac' --enable-parser='vp8,vp9' --disable-static --enable-shared --disable-autodetect --enable-w32threads --toolchain=msvc"
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-x86asm --disable-cuda --disable-cuvid --enable-decoder=mp3 --toolchain=msvc"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2022
|
||||
#define CONFIG_THIS_YEAR 2019
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "Microsoft (R) C/C++ Optimizing Compiler Version 19.29.30133 for x64"
|
||||
#define OS_NAME win32
|
||||
#define av_restrict restrict
|
||||
#define CC_IDENT "Microsoft (R) C/C++ Optimizing Compiler Version 19.24.28315 for x64"
|
||||
#define av_restrict __restrict
|
||||
#define EXTERN_PREFIX ""
|
||||
#define EXTERN_ASM
|
||||
#define BUILDSUF ""
|
||||
|
@ -23,16 +22,12 @@
|
|||
#define ARCH_AVR32_UC 0
|
||||
#define ARCH_BFIN 0
|
||||
#define ARCH_IA64 0
|
||||
#define ARCH_LOONGARCH 0
|
||||
#define ARCH_LOONGARCH32 0
|
||||
#define ARCH_LOONGARCH64 0
|
||||
#define ARCH_M68K 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_MIPS64 0
|
||||
#define ARCH_PARISC 0
|
||||
#define ARCH_PPC 0
|
||||
#define ARCH_PPC64 0
|
||||
#define ARCH_RISCV 0
|
||||
#define ARCH_S390 0
|
||||
#define ARCH_SH4 0
|
||||
#define ARCH_SPARC 0
|
||||
|
@ -63,7 +58,6 @@
|
|||
#define HAVE_AVX 1
|
||||
#define HAVE_AVX2 1
|
||||
#define HAVE_AVX512 1
|
||||
#define HAVE_AVX512ICL 1
|
||||
#define HAVE_FMA3 1
|
||||
#define HAVE_FMA4 1
|
||||
#define HAVE_MMX 1
|
||||
|
@ -86,11 +80,10 @@
|
|||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_MSA2 0
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_LSX 0
|
||||
#define HAVE_LASX 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 0
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
#define HAVE_ARMV6T2_EXTERNAL 0
|
||||
|
@ -111,7 +104,6 @@
|
|||
#define HAVE_AVX_EXTERNAL 1
|
||||
#define HAVE_AVX2_EXTERNAL 1
|
||||
#define HAVE_AVX512_EXTERNAL 1
|
||||
#define HAVE_AVX512ICL_EXTERNAL 1
|
||||
#define HAVE_FMA3_EXTERNAL 1
|
||||
#define HAVE_FMA4_EXTERNAL 1
|
||||
#define HAVE_MMX_EXTERNAL 1
|
||||
|
@ -134,11 +126,10 @@
|
|||
#define HAVE_MIPSDSP_EXTERNAL 0
|
||||
#define HAVE_MIPSDSPR2_EXTERNAL 0
|
||||
#define HAVE_MSA_EXTERNAL 0
|
||||
#define HAVE_MSA2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON2_EXTERNAL 0
|
||||
#define HAVE_LOONGSON3_EXTERNAL 0
|
||||
#define HAVE_MMI_EXTERNAL 0
|
||||
#define HAVE_LSX_EXTERNAL 0
|
||||
#define HAVE_LASX_EXTERNAL 0
|
||||
#define HAVE_ARMV5TE_INLINE 0
|
||||
#define HAVE_ARMV6_INLINE 0
|
||||
#define HAVE_ARMV6T2_INLINE 0
|
||||
|
@ -159,7 +150,6 @@
|
|||
#define HAVE_AVX_INLINE 0
|
||||
#define HAVE_AVX2_INLINE 0
|
||||
#define HAVE_AVX512_INLINE 0
|
||||
#define HAVE_AVX512ICL_INLINE 0
|
||||
#define HAVE_FMA3_INLINE 0
|
||||
#define HAVE_FMA4_INLINE 0
|
||||
#define HAVE_MMX_INLINE 0
|
||||
|
@ -182,14 +172,13 @@
|
|||
#define HAVE_MIPSDSP_INLINE 0
|
||||
#define HAVE_MIPSDSPR2_INLINE 0
|
||||
#define HAVE_MSA_INLINE 0
|
||||
#define HAVE_MSA2_INLINE 0
|
||||
#define HAVE_LOONGSON2_INLINE 0
|
||||
#define HAVE_LOONGSON3_INLINE 0
|
||||
#define HAVE_MMI_INLINE 0
|
||||
#define HAVE_LSX_INLINE 0
|
||||
#define HAVE_LASX_INLINE 0
|
||||
#define HAVE_ALIGNED_STACK 1
|
||||
#define HAVE_FAST_64BIT 1
|
||||
#define HAVE_FAST_CLZ 1
|
||||
#define HAVE_FAST_CLZ 0
|
||||
#define HAVE_FAST_CMOV 1
|
||||
#define HAVE_LOCAL_ALIGNED 1
|
||||
#define HAVE_SIMD_ALIGN_16 1
|
||||
|
@ -227,7 +216,6 @@
|
|||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
#define HAVE_IO_H 1
|
||||
#define HAVE_LINUX_DMA_BUF_H 0
|
||||
#define HAVE_LINUX_PERF_EVENT_H 0
|
||||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
|
@ -291,16 +279,12 @@
|
|||
#define HAVE_COMMANDLINETOARGVW 1
|
||||
#define HAVE_FCNTL 0
|
||||
#define HAVE_GETADDRINFO 1
|
||||
#define HAVE_GETAUXVAL 0
|
||||
#define HAVE_GETENV 1
|
||||
#define HAVE_GETHRTIME 0
|
||||
#define HAVE_GETOPT 0
|
||||
#define HAVE_GETMODULEHANDLE 1
|
||||
#define HAVE_GETPROCESSAFFINITYMASK 1
|
||||
#define HAVE_GETPROCESSMEMORYINFO 1
|
||||
#define HAVE_GETPROCESSTIMES 1
|
||||
#define HAVE_GETRUSAGE 0
|
||||
#define HAVE_GETSTDHANDLE 1
|
||||
#define HAVE_GETSYSTEMTIMEASFILETIME 1
|
||||
#define HAVE_GETTIMEOFDAY 0
|
||||
#define HAVE_GLOB 0
|
||||
|
@ -323,7 +307,6 @@
|
|||
#define HAVE_SECITEMIMPORT 0
|
||||
#define HAVE_SETCONSOLETEXTATTRIBUTE 1
|
||||
#define HAVE_SETCONSOLECTRLHANDLER 1
|
||||
#define HAVE_SETDLLDIRECTORY 1
|
||||
#define HAVE_SETMODE 1
|
||||
#define HAVE_SETRLIMIT 0
|
||||
#define HAVE_SLEEP 1
|
||||
|
@ -357,29 +340,14 @@
|
|||
#define HAVE_INLINE_ASM_LABELS 0
|
||||
#define HAVE_INLINE_ASM_NONLOCAL_LABELS 0
|
||||
#define HAVE_PRAGMA_DEPRECATED 1
|
||||
#define HAVE_RSYNC_CONTIMEOUT 0
|
||||
#define HAVE_RSYNC_CONTIMEOUT 1
|
||||
#define HAVE_SYMVER_ASM_LABEL 0
|
||||
#define HAVE_SYMVER_GNU_ASM 0
|
||||
#define HAVE_VFP_ARGS 0
|
||||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVCWITHALPHA 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_VP9 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_420YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_422YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR8BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR10BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVPIXELFORMATTYPE_444YPCBCR16BIPLANARVIDEORANGE 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_2084_PQ 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2100_HLG 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_LINEAR 0
|
||||
#define HAVE_KCVIMAGEBUFFERYCBCRMATRIX_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERCOLORPRIMARIES_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_ITU_R_2020 0
|
||||
#define HAVE_KCVIMAGEBUFFERTRANSFERFUNCTION_SMPTE_ST_428_1 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -394,9 +362,7 @@
|
|||
#define HAVE_STRUCT_SOCKADDR_STORAGE 1
|
||||
#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 0
|
||||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
#define HAVE_GZIP 1
|
||||
#define HAVE_LIBDRM_GETFB2 0
|
||||
#define HAVE_MAKEINFO 0
|
||||
#define HAVE_MAKEINFO 1
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_OPENCL_D3D11 0
|
||||
#define HAVE_OPENCL_DRM_ARM 0
|
||||
|
@ -407,14 +373,12 @@
|
|||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_XMLLINT 1
|
||||
#define HAVE_ZLIB_GZIP 0
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 0
|
||||
#define CONFIG_MANPAGES 1
|
||||
#define CONFIG_PODPAGES 1
|
||||
#define CONFIG_TXTPAGES 0
|
||||
#define CONFIG_AVIO_LIST_DIR_EXAMPLE 1
|
||||
#define CONFIG_TXTPAGES 1
|
||||
#define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
|
@ -450,12 +414,14 @@
|
|||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_LIBTLS 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBARIBB24 0
|
||||
#define CONFIG_LIBLENSFUN 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_MBEDTLS 0
|
||||
#define CONFIG_RKMPP 0
|
||||
|
@ -465,7 +431,6 @@
|
|||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LCMS2 0
|
||||
#define CONFIG_LIBAOM 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
|
@ -480,13 +445,11 @@
|
|||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
#define CONFIG_LIBFRIBIDI 0
|
||||
#define CONFIG_LIBGLSLANG 0
|
||||
#define CONFIG_LIBGME 0
|
||||
#define CONFIG_LIBGSM 0
|
||||
#define CONFIG_LIBIEC61883 0
|
||||
#define CONFIG_LIBILBC 0
|
||||
#define CONFIG_LIBJACK 0
|
||||
#define CONFIG_LIBJXL 0
|
||||
#define CONFIG_LIBKLVANC 0
|
||||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
|
@ -496,16 +459,10 @@
|
|||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPENVINO 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPLACEBO 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRABBITMQ 0
|
||||
#define CONFIG_LIBRAV1E 0
|
||||
#define CONFIG_LIBRIST 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBSHADERC 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
|
@ -513,16 +470,14 @@
|
|||
#define CONFIG_LIBSPEEX 0
|
||||
#define CONFIG_LIBSRT 0
|
||||
#define CONFIG_LIBSSH 0
|
||||
#define CONFIG_LIBSVTAV1 0
|
||||
#define CONFIG_LIBTENSORFLOW 0
|
||||
#define CONFIG_LIBTESSERACT 0
|
||||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBUAVS3D 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWAVPACK 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
|
@ -532,7 +487,6 @@
|
|||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_POCKETSPHINX 0
|
||||
#define CONFIG_VAPOURSYNTH 0
|
||||
#define CONFIG_ALSA 0
|
||||
|
@ -546,9 +500,7 @@
|
|||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIAFOUNDATION 0
|
||||
#define CONFIG_METAL 0
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SCHANNEL 1
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
|
@ -575,8 +527,8 @@
|
|||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_VULKAN 0
|
||||
#define CONFIG_V4L2_M2M 0
|
||||
#define CONFIG_XVMC 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -597,6 +549,7 @@
|
|||
#define CONFIG_AVFORMAT 0
|
||||
#define CONFIG_AVCODEC 1
|
||||
#define CONFIG_SWRESAMPLE 0
|
||||
#define CONFIG_AVRESAMPLE 0
|
||||
#define CONFIG_AVUTIL 1
|
||||
#define CONFIG_FFPLAY 0
|
||||
#define CONFIG_FFPROBE 0
|
||||
|
@ -608,38 +561,27 @@
|
|||
#define CONFIG_FAST_UNALIGNED 1
|
||||
#define CONFIG_FFT 1
|
||||
#define CONFIG_LSP 0
|
||||
#define CONFIG_LZO 0
|
||||
#define CONFIG_MDCT 0
|
||||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 1
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_LARGE_TESTS 1
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MACOS_KPERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_PTX_COMPRESSION 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_BSFS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_ADTS_HEADER 0
|
||||
#define CONFIG_ATSC_A53 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
#define CONFIG_AUDIODSP 0
|
||||
#define CONFIG_BLOCKDSP 0
|
||||
|
@ -652,10 +594,8 @@
|
|||
#define CONFIG_CBS_JPEG 0
|
||||
#define CONFIG_CBS_MPEG2 0
|
||||
#define CONFIG_CBS_VP9 0
|
||||
#define CONFIG_DEFLATE_WRAPPER 0
|
||||
#define CONFIG_DIRAC_PARSE 0
|
||||
#define CONFIG_DNN 0
|
||||
#define CONFIG_DOVI_RPU 0
|
||||
#define CONFIG_DVPROFILE 0
|
||||
#define CONFIG_EXIF 0
|
||||
#define CONFIG_FAANDCT 1
|
||||
|
@ -681,7 +621,6 @@
|
|||
#define CONFIG_IDCTDSP 1
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INFLATE_WRAPPER 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
|
@ -698,9 +637,7 @@
|
|||
#define CONFIG_MPEGAUDIO 1
|
||||
#define CONFIG_MPEGAUDIODSP 1
|
||||
#define CONFIG_MPEGAUDIOHEADER 1
|
||||
#define CONFIG_MPEG4AUDIO 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEODEC 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
#define CONFIG_PIXBLOCKDSP 0
|
||||
|
@ -732,4 +669,12 @@
|
|||
#define CONFIG_VP8DSP 1
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#define CONFIG_NULL_BSF 1
|
||||
#define CONFIG_VP9_SUPERFRAME_SPLIT_BSF 1
|
||||
#define CONFIG_VP8_DECODER 1
|
||||
#define CONFIG_VP9_DECODER 1
|
||||
#define CONFIG_FLAC_DECODER 1
|
||||
#define CONFIG_MP3_DECODER 1
|
||||
#define CONFIG_VP8_PARSER 1
|
||||
#define CONFIG_VP9_PARSER 1
|
||||
#endif /* FFMPEG_CONFIG_H */
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -36,7 +36,6 @@
|
|||
|
||||
|
||||
function fft4_neon
|
||||
AARCH64_VALID_JUMP_TARGET
|
||||
ld1 {v0.2s,v1.2s,v2.2s,v3.2s}, [x0]
|
||||
|
||||
fadd v4.2s, v0.2s, v1.2s // r0+r1,i0+i1
|
||||
|
@ -59,7 +58,6 @@ function fft4_neon
|
|||
endfunc
|
||||
|
||||
function fft8_neon
|
||||
AARCH64_VALID_JUMP_TARGET
|
||||
mov x1, x0
|
||||
ld1 {v0.2s, v1.2s, v2.2s, v3.2s}, [x0], #32
|
||||
ld1 {v16.2s,v17.2s,v18.2s,v19.2s}, [x0]
|
||||
|
@ -110,7 +108,6 @@ function fft8_neon
|
|||
endfunc
|
||||
|
||||
function fft16_neon
|
||||
AARCH64_VALID_JUMP_TARGET
|
||||
mov x1, x0
|
||||
ld1 {v0.2s, v1.2s, v2.2s, v3.2s}, [x0], #32
|
||||
ld1 {v16.2s,v17.2s,v18.2s,v19.2s}, [x0], #32
|
||||
|
@ -340,8 +337,6 @@ endfunc
|
|||
|
||||
.macro def_fft n, n2, n4
|
||||
function fft\n\()_neon, align=6
|
||||
AARCH64_VALID_JUMP_TARGET
|
||||
AARCH64_SIGN_LINK_REGISTER
|
||||
sub sp, sp, #16
|
||||
stp x28, x30, [sp]
|
||||
add x28, x0, #\n4*2*8
|
||||
|
@ -352,7 +347,6 @@ function fft\n\()_neon, align=6
|
|||
bl fft\n4\()_neon
|
||||
sub x0, x28, #\n4*2*8
|
||||
ldp x28, x30, [sp], #16
|
||||
AARCH64_VALIDATE_LINK_REGISTER
|
||||
movrel x4, X(ff_cos_\n)
|
||||
mov x2, #\n4>>1
|
||||
b fft_pass_neon
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "config_components.h"
|
||||
|
||||
#include "libavutil/aarch64/asm.S"
|
||||
|
||||
/* chroma_mc8(uint8_t *dst, uint8_t *src, ptrdiff_t stride, int h, int x, int y) */
|
||||
|
|
|
@ -69,42 +69,19 @@ void ff_h264_idct_add_neon(uint8_t *dst, int16_t *block, int stride);
|
|||
void ff_h264_idct_dc_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct_add16_neon(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
const uint8_t nnzc[6*8]);
|
||||
void ff_h264_idct_add16intra_neon(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
const uint8_t nnzc[6*8]);
|
||||
void ff_h264_idct_add8_neon(uint8_t **dest, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
const uint8_t nnzc[15 * 8]);
|
||||
const uint8_t nnzc[6*8]);
|
||||
|
||||
void ff_h264_idct8_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct8_dc_add_neon(uint8_t *dst, int16_t *block, int stride);
|
||||
void ff_h264_idct8_add4_neon(uint8_t *dst, const int *block_offset,
|
||||
int16_t *block, int stride,
|
||||
const uint8_t nnzc[5 * 8]);
|
||||
|
||||
void ff_h264_v_loop_filter_luma_neon_10(uint8_t *pix, ptrdiff_t stride, int alpha,
|
||||
int beta, int8_t *tc0);
|
||||
void ff_h264_h_loop_filter_luma_neon_10(uint8_t *pix, ptrdiff_t stride, int alpha,
|
||||
int beta, int8_t *tc0);
|
||||
void ff_h264_v_loop_filter_luma_intra_neon_10(uint8_t *pix, ptrdiff_t stride, int alpha,
|
||||
int beta);
|
||||
void ff_h264_h_loop_filter_luma_intra_neon_10(uint8_t *pix, ptrdiff_t stride, int alpha,
|
||||
int beta);
|
||||
void ff_h264_v_loop_filter_chroma_neon_10(uint8_t *pix, ptrdiff_t stride, int alpha,
|
||||
int beta, int8_t *tc0);
|
||||
void ff_h264_h_loop_filter_chroma_neon_10(uint8_t *pix, ptrdiff_t stride, int alpha,
|
||||
int beta, int8_t *tc0);
|
||||
void ff_h264_h_loop_filter_chroma422_neon_10(uint8_t *pix, ptrdiff_t stride, int alpha,
|
||||
int beta, int8_t *tc0);
|
||||
void ff_h264_v_loop_filter_chroma_intra_neon_10(uint8_t *pix, ptrdiff_t stride,
|
||||
int alpha, int beta);
|
||||
void ff_h264_h_loop_filter_chroma_intra_neon_10(uint8_t *pix, ptrdiff_t stride,
|
||||
int alpha, int beta);
|
||||
void ff_h264_h_loop_filter_chroma422_intra_neon_10(uint8_t *pix, ptrdiff_t stride,
|
||||
int alpha, int beta);
|
||||
void ff_h264_h_loop_filter_chroma_mbaff_intra_neon_10(uint8_t *pix, ptrdiff_t stride,
|
||||
int alpha, int beta);
|
||||
const uint8_t nnzc[6*8]);
|
||||
|
||||
av_cold void ff_h264dsp_init_aarch64(H264DSPContext *c, const int bit_depth,
|
||||
const int chroma_format_idc)
|
||||
|
@ -148,19 +125,5 @@ av_cold void ff_h264dsp_init_aarch64(H264DSPContext *c, const int bit_depth,
|
|||
c->h264_idct8_add = ff_h264_idct8_add_neon;
|
||||
c->h264_idct8_dc_add = ff_h264_idct8_dc_add_neon;
|
||||
c->h264_idct8_add4 = ff_h264_idct8_add4_neon;
|
||||
} else if (have_neon(cpu_flags) && bit_depth == 10) {
|
||||
c->h264_v_loop_filter_chroma = ff_h264_v_loop_filter_chroma_neon_10;
|
||||
c->h264_v_loop_filter_chroma_intra = ff_h264_v_loop_filter_chroma_intra_neon_10;
|
||||
|
||||
if (chroma_format_idc <= 1) {
|
||||
c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma_neon_10;
|
||||
c->h264_h_loop_filter_chroma_intra = ff_h264_h_loop_filter_chroma_intra_neon_10;
|
||||
c->h264_h_loop_filter_chroma_mbaff_intra = ff_h264_h_loop_filter_chroma_mbaff_intra_neon_10;
|
||||
} else {
|
||||
c->h264_h_loop_filter_chroma = ff_h264_h_loop_filter_chroma422_neon_10;
|
||||
c->h264_h_loop_filter_chroma_mbaff = ff_h264_h_loop_filter_chroma_neon_10;
|
||||
c->h264_h_loop_filter_chroma_intra = ff_h264_h_loop_filter_chroma422_intra_neon_10;
|
||||
c->h264_h_loop_filter_chroma_mbaff_intra = ff_h264_h_loop_filter_chroma_intra_neon_10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -110,6 +110,7 @@
|
|||
|
||||
function ff_h264_v_loop_filter_luma_neon, export=1
|
||||
h264_loop_filter_start
|
||||
sxtw x1, w1
|
||||
|
||||
ld1 {v0.16B}, [x0], x1
|
||||
ld1 {v2.16B}, [x0], x1
|
||||
|
@ -133,6 +134,7 @@ endfunc
|
|||
|
||||
function ff_h264_h_loop_filter_luma_neon, export=1
|
||||
h264_loop_filter_start
|
||||
sxtw x1, w1
|
||||
|
||||
sub x0, x0, #4
|
||||
ld1 {v6.8B}, [x0], x1
|
||||
|
@ -182,198 +184,199 @@ endfunc
|
|||
|
||||
|
||||
.macro h264_loop_filter_start_intra
|
||||
orr w4, w2, w3
|
||||
cbnz w4, 1f
|
||||
ret
|
||||
orr w4, w2, w3
|
||||
cbnz w4, 1f
|
||||
ret
|
||||
1:
|
||||
dup v30.16b, w2 // alpha
|
||||
dup v31.16b, w3 // beta
|
||||
sxtw x1, w1
|
||||
dup v30.16b, w2 // alpha
|
||||
dup v31.16b, w3 // beta
|
||||
.endm
|
||||
|
||||
.macro h264_loop_filter_luma_intra
|
||||
uabd v16.16b, v7.16b, v0.16b // abs(p0 - q0)
|
||||
uabd v17.16b, v6.16b, v7.16b // abs(p1 - p0)
|
||||
uabd v18.16b, v1.16b, v0.16b // abs(q1 - q0)
|
||||
cmhi v19.16b, v30.16b, v16.16b // < alpha
|
||||
cmhi v17.16b, v31.16b, v17.16b // < beta
|
||||
cmhi v18.16b, v31.16b, v18.16b // < beta
|
||||
uabd v16.16b, v7.16b, v0.16b // abs(p0 - q0)
|
||||
uabd v17.16b, v6.16b, v7.16b // abs(p1 - p0)
|
||||
uabd v18.16b, v1.16b, v0.16b // abs(q1 - q0)
|
||||
cmhi v19.16b, v30.16b, v16.16b // < alpha
|
||||
cmhi v17.16b, v31.16b, v17.16b // < beta
|
||||
cmhi v18.16b, v31.16b, v18.16b // < beta
|
||||
|
||||
movi v29.16b, #2
|
||||
ushr v30.16b, v30.16b, #2 // alpha >> 2
|
||||
add v30.16b, v30.16b, v29.16b // (alpha >> 2) + 2
|
||||
cmhi v16.16b, v30.16b, v16.16b // < (alpha >> 2) + 2
|
||||
movi v29.16b, #2
|
||||
ushr v30.16b, v30.16b, #2 // alpha >> 2
|
||||
add v30.16b, v30.16b, v29.16b // (alpha >> 2) + 2
|
||||
cmhi v16.16b, v30.16b, v16.16b // < (alpha >> 2) + 2
|
||||
|
||||
and v19.16b, v19.16b, v17.16b
|
||||
and v19.16b, v19.16b, v18.16b
|
||||
shrn v20.8b, v19.8h, #4
|
||||
mov x4, v20.d[0]
|
||||
cbz x4, 9f
|
||||
and v19.16b, v19.16b, v17.16b
|
||||
and v19.16b, v19.16b, v18.16b
|
||||
shrn v20.8b, v19.8h, #4
|
||||
mov x4, v20.d[0]
|
||||
cbz x4, 9f
|
||||
|
||||
ushll v20.8h, v6.8b, #1
|
||||
ushll v22.8h, v1.8b, #1
|
||||
ushll2 v21.8h, v6.16b, #1
|
||||
ushll2 v23.8h, v1.16b, #1
|
||||
uaddw v20.8h, v20.8h, v7.8b
|
||||
uaddw v22.8h, v22.8h, v0.8b
|
||||
uaddw2 v21.8h, v21.8h, v7.16b
|
||||
uaddw2 v23.8h, v23.8h, v0.16b
|
||||
uaddw v20.8h, v20.8h, v1.8b
|
||||
uaddw v22.8h, v22.8h, v6.8b
|
||||
uaddw2 v21.8h, v21.8h, v1.16b
|
||||
uaddw2 v23.8h, v23.8h, v6.16b
|
||||
ushll v20.8h, v6.8b, #1
|
||||
ushll v22.8h, v1.8b, #1
|
||||
ushll2 v21.8h, v6.16b, #1
|
||||
ushll2 v23.8h, v1.16b, #1
|
||||
uaddw v20.8h, v20.8h, v7.8b
|
||||
uaddw v22.8h, v22.8h, v0.8b
|
||||
uaddw2 v21.8h, v21.8h, v7.16b
|
||||
uaddw2 v23.8h, v23.8h, v0.16b
|
||||
uaddw v20.8h, v20.8h, v1.8b
|
||||
uaddw v22.8h, v22.8h, v6.8b
|
||||
uaddw2 v21.8h, v21.8h, v1.16b
|
||||
uaddw2 v23.8h, v23.8h, v6.16b
|
||||
|
||||
rshrn v24.8b, v20.8h, #2 // p0'_1
|
||||
rshrn v25.8b, v22.8h, #2 // q0'_1
|
||||
rshrn2 v24.16b, v21.8h, #2 // p0'_1
|
||||
rshrn2 v25.16b, v23.8h, #2 // q0'_1
|
||||
rshrn v24.8b, v20.8h, #2 // p0'_1
|
||||
rshrn v25.8b, v22.8h, #2 // q0'_1
|
||||
rshrn2 v24.16b, v21.8h, #2 // p0'_1
|
||||
rshrn2 v25.16b, v23.8h, #2 // q0'_1
|
||||
|
||||
uabd v17.16b, v5.16b, v7.16b // abs(p2 - p0)
|
||||
uabd v18.16b, v2.16b, v0.16b // abs(q2 - q0)
|
||||
cmhi v17.16b, v31.16b, v17.16b // < beta
|
||||
cmhi v18.16b, v31.16b, v18.16b // < beta
|
||||
uabd v17.16b, v5.16b, v7.16b // abs(p2 - p0)
|
||||
uabd v18.16b, v2.16b, v0.16b // abs(q2 - q0)
|
||||
cmhi v17.16b, v31.16b, v17.16b // < beta
|
||||
cmhi v18.16b, v31.16b, v18.16b // < beta
|
||||
|
||||
and v17.16b, v16.16b, v17.16b // if_2 && if_3
|
||||
and v18.16b, v16.16b, v18.16b // if_2 && if_4
|
||||
and v17.16b, v16.16b, v17.16b // if_2 && if_3
|
||||
and v18.16b, v16.16b, v18.16b // if_2 && if_4
|
||||
|
||||
not v30.16b, v17.16b
|
||||
not v31.16b, v18.16b
|
||||
not v30.16b, v17.16b
|
||||
not v31.16b, v18.16b
|
||||
|
||||
and v30.16b, v30.16b, v19.16b // if_1 && !(if_2 && if_3)
|
||||
and v31.16b, v31.16b, v19.16b // if_1 && !(if_2 && if_4)
|
||||
and v30.16b, v30.16b, v19.16b // if_1 && !(if_2 && if_3)
|
||||
and v31.16b, v31.16b, v19.16b // if_1 && !(if_2 && if_4)
|
||||
|
||||
and v17.16b, v19.16b, v17.16b // if_1 && if_2 && if_3
|
||||
and v18.16b, v19.16b, v18.16b // if_1 && if_2 && if_4
|
||||
and v17.16b, v19.16b, v17.16b // if_1 && if_2 && if_3
|
||||
and v18.16b, v19.16b, v18.16b // if_1 && if_2 && if_4
|
||||
|
||||
//calc p, v7, v6, v5, v4, v17, v7, v6, v5, v4
|
||||
uaddl v26.8h, v5.8b, v7.8b
|
||||
uaddl2 v27.8h, v5.16b, v7.16b
|
||||
uaddw v26.8h, v26.8h, v0.8b
|
||||
uaddw2 v27.8h, v27.8h, v0.16b
|
||||
add v20.8h, v20.8h, v26.8h
|
||||
add v21.8h, v21.8h, v27.8h
|
||||
uaddw v20.8h, v20.8h, v0.8b
|
||||
uaddw2 v21.8h, v21.8h, v0.16b
|
||||
rshrn v20.8b, v20.8h, #3 // p0'_2
|
||||
rshrn2 v20.16b, v21.8h, #3 // p0'_2
|
||||
uaddw v26.8h, v26.8h, v6.8b
|
||||
uaddw2 v27.8h, v27.8h, v6.16b
|
||||
rshrn v21.8b, v26.8h, #2 // p1'_2
|
||||
rshrn2 v21.16b, v27.8h, #2 // p1'_2
|
||||
uaddl v28.8h, v4.8b, v5.8b
|
||||
uaddl2 v29.8h, v4.16b, v5.16b
|
||||
shl v28.8h, v28.8h, #1
|
||||
shl v29.8h, v29.8h, #1
|
||||
add v28.8h, v28.8h, v26.8h
|
||||
add v29.8h, v29.8h, v27.8h
|
||||
rshrn v19.8b, v28.8h, #3 // p2'_2
|
||||
rshrn2 v19.16b, v29.8h, #3 // p2'_2
|
||||
//calc p, v7, v6, v5, v4, v17, v7, v6, v5, v4
|
||||
uaddl v26.8h, v5.8b, v7.8b
|
||||
uaddl2 v27.8h, v5.16b, v7.16b
|
||||
uaddw v26.8h, v26.8h, v0.8b
|
||||
uaddw2 v27.8h, v27.8h, v0.16b
|
||||
add v20.8h, v20.8h, v26.8h
|
||||
add v21.8h, v21.8h, v27.8h
|
||||
uaddw v20.8h, v20.8h, v0.8b
|
||||
uaddw2 v21.8h, v21.8h, v0.16b
|
||||
rshrn v20.8b, v20.8h, #3 // p0'_2
|
||||
rshrn2 v20.16b, v21.8h, #3 // p0'_2
|
||||
uaddw v26.8h, v26.8h, v6.8b
|
||||
uaddw2 v27.8h, v27.8h, v6.16b
|
||||
rshrn v21.8b, v26.8h, #2 // p1'_2
|
||||
rshrn2 v21.16b, v27.8h, #2 // p1'_2
|
||||
uaddl v28.8h, v4.8b, v5.8b
|
||||
uaddl2 v29.8h, v4.16b, v5.16b
|
||||
shl v28.8h, v28.8h, #1
|
||||
shl v29.8h, v29.8h, #1
|
||||
add v28.8h, v28.8h, v26.8h
|
||||
add v29.8h, v29.8h, v27.8h
|
||||
rshrn v19.8b, v28.8h, #3 // p2'_2
|
||||
rshrn2 v19.16b, v29.8h, #3 // p2'_2
|
||||
|
||||
//calc q, v0, v1, v2, v3, v18, v0, v1, v2, v3
|
||||
uaddl v26.8h, v2.8b, v0.8b
|
||||
uaddl2 v27.8h, v2.16b, v0.16b
|
||||
uaddw v26.8h, v26.8h, v7.8b
|
||||
uaddw2 v27.8h, v27.8h, v7.16b
|
||||
add v22.8h, v22.8h, v26.8h
|
||||
add v23.8h, v23.8h, v27.8h
|
||||
uaddw v22.8h, v22.8h, v7.8b
|
||||
uaddw2 v23.8h, v23.8h, v7.16b
|
||||
rshrn v22.8b, v22.8h, #3 // q0'_2
|
||||
rshrn2 v22.16b, v23.8h, #3 // q0'_2
|
||||
uaddw v26.8h, v26.8h, v1.8b
|
||||
uaddw2 v27.8h, v27.8h, v1.16b
|
||||
rshrn v23.8b, v26.8h, #2 // q1'_2
|
||||
rshrn2 v23.16b, v27.8h, #2 // q1'_2
|
||||
uaddl v28.8h, v2.8b, v3.8b
|
||||
uaddl2 v29.8h, v2.16b, v3.16b
|
||||
shl v28.8h, v28.8h, #1
|
||||
shl v29.8h, v29.8h, #1
|
||||
add v28.8h, v28.8h, v26.8h
|
||||
add v29.8h, v29.8h, v27.8h
|
||||
rshrn v26.8b, v28.8h, #3 // q2'_2
|
||||
rshrn2 v26.16b, v29.8h, #3 // q2'_2
|
||||
//calc q, v0, v1, v2, v3, v18, v0, v1, v2, v3
|
||||
uaddl v26.8h, v2.8b, v0.8b
|
||||
uaddl2 v27.8h, v2.16b, v0.16b
|
||||
uaddw v26.8h, v26.8h, v7.8b
|
||||
uaddw2 v27.8h, v27.8h, v7.16b
|
||||
add v22.8h, v22.8h, v26.8h
|
||||
add v23.8h, v23.8h, v27.8h
|
||||
uaddw v22.8h, v22.8h, v7.8b
|
||||
uaddw2 v23.8h, v23.8h, v7.16b
|
||||
rshrn v22.8b, v22.8h, #3 // q0'_2
|
||||
rshrn2 v22.16b, v23.8h, #3 // q0'_2
|
||||
uaddw v26.8h, v26.8h, v1.8b
|
||||
uaddw2 v27.8h, v27.8h, v1.16b
|
||||
rshrn v23.8b, v26.8h, #2 // q1'_2
|
||||
rshrn2 v23.16b, v27.8h, #2 // q1'_2
|
||||
uaddl v28.8h, v2.8b, v3.8b
|
||||
uaddl2 v29.8h, v2.16b, v3.16b
|
||||
shl v28.8h, v28.8h, #1
|
||||
shl v29.8h, v29.8h, #1
|
||||
add v28.8h, v28.8h, v26.8h
|
||||
add v29.8h, v29.8h, v27.8h
|
||||
rshrn v26.8b, v28.8h, #3 // q2'_2
|
||||
rshrn2 v26.16b, v29.8h, #3 // q2'_2
|
||||
|
||||
bit v7.16b, v24.16b, v30.16b // p0'_1
|
||||
bit v0.16b, v25.16b, v31.16b // q0'_1
|
||||
bit v7.16b, v20.16b, v17.16b // p0'_2
|
||||
bit v6.16b, v21.16b, v17.16b // p1'_2
|
||||
bit v5.16b, v19.16b, v17.16b // p2'_2
|
||||
bit v0.16b, v22.16b, v18.16b // q0'_2
|
||||
bit v1.16b, v23.16b, v18.16b // q1'_2
|
||||
bit v2.16b, v26.16b, v18.16b // q2'_2
|
||||
bit v7.16b, v24.16b, v30.16b // p0'_1
|
||||
bit v0.16b, v25.16b, v31.16b // q0'_1
|
||||
bit v7.16b, v20.16b, v17.16b // p0'_2
|
||||
bit v6.16b, v21.16b, v17.16b // p1'_2
|
||||
bit v5.16b, v19.16b, v17.16b // p2'_2
|
||||
bit v0.16b, v22.16b, v18.16b // q0'_2
|
||||
bit v1.16b, v23.16b, v18.16b // q1'_2
|
||||
bit v2.16b, v26.16b, v18.16b // q2'_2
|
||||
.endm
|
||||
|
||||
function ff_h264_v_loop_filter_luma_intra_neon, export=1
|
||||
h264_loop_filter_start_intra
|
||||
h264_loop_filter_start_intra
|
||||
|
||||
ld1 {v0.16b}, [x0], x1 // q0
|
||||
ld1 {v1.16b}, [x0], x1 // q1
|
||||
ld1 {v2.16b}, [x0], x1 // q2
|
||||
ld1 {v3.16b}, [x0], x1 // q3
|
||||
sub x0, x0, x1, lsl #3
|
||||
ld1 {v4.16b}, [x0], x1 // p3
|
||||
ld1 {v5.16b}, [x0], x1 // p2
|
||||
ld1 {v6.16b}, [x0], x1 // p1
|
||||
ld1 {v7.16b}, [x0] // p0
|
||||
ld1 {v0.16b}, [x0], x1 // q0
|
||||
ld1 {v1.16b}, [x0], x1 // q1
|
||||
ld1 {v2.16b}, [x0], x1 // q2
|
||||
ld1 {v3.16b}, [x0], x1 // q3
|
||||
sub x0, x0, x1, lsl #3
|
||||
ld1 {v4.16b}, [x0], x1 // p3
|
||||
ld1 {v5.16b}, [x0], x1 // p2
|
||||
ld1 {v6.16b}, [x0], x1 // p1
|
||||
ld1 {v7.16b}, [x0] // p0
|
||||
|
||||
h264_loop_filter_luma_intra
|
||||
h264_loop_filter_luma_intra
|
||||
|
||||
sub x0, x0, x1, lsl #1
|
||||
st1 {v5.16b}, [x0], x1 // p2
|
||||
st1 {v6.16b}, [x0], x1 // p1
|
||||
st1 {v7.16b}, [x0], x1 // p0
|
||||
st1 {v0.16b}, [x0], x1 // q0
|
||||
st1 {v1.16b}, [x0], x1 // q1
|
||||
st1 {v2.16b}, [x0] // q2
|
||||
sub x0, x0, x1, lsl #1
|
||||
st1 {v5.16b}, [x0], x1 // p2
|
||||
st1 {v6.16b}, [x0], x1 // p1
|
||||
st1 {v7.16b}, [x0], x1 // p0
|
||||
st1 {v0.16b}, [x0], x1 // q0
|
||||
st1 {v1.16b}, [x0], x1 // q1
|
||||
st1 {v2.16b}, [x0] // q2
|
||||
9:
|
||||
ret
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_h264_h_loop_filter_luma_intra_neon, export=1
|
||||
h264_loop_filter_start_intra
|
||||
h264_loop_filter_start_intra
|
||||
|
||||
sub x0, x0, #4
|
||||
ld1 {v4.8b}, [x0], x1
|
||||
ld1 {v5.8b}, [x0], x1
|
||||
ld1 {v6.8b}, [x0], x1
|
||||
ld1 {v7.8b}, [x0], x1
|
||||
ld1 {v0.8b}, [x0], x1
|
||||
ld1 {v1.8b}, [x0], x1
|
||||
ld1 {v2.8b}, [x0], x1
|
||||
ld1 {v3.8b}, [x0], x1
|
||||
ld1 {v4.d}[1], [x0], x1
|
||||
ld1 {v5.d}[1], [x0], x1
|
||||
ld1 {v6.d}[1], [x0], x1
|
||||
ld1 {v7.d}[1], [x0], x1
|
||||
ld1 {v0.d}[1], [x0], x1
|
||||
ld1 {v1.d}[1], [x0], x1
|
||||
ld1 {v2.d}[1], [x0], x1
|
||||
ld1 {v3.d}[1], [x0], x1
|
||||
sub x0, x0, #4
|
||||
ld1 {v4.8b}, [x0], x1
|
||||
ld1 {v5.8b}, [x0], x1
|
||||
ld1 {v6.8b}, [x0], x1
|
||||
ld1 {v7.8b}, [x0], x1
|
||||
ld1 {v0.8b}, [x0], x1
|
||||
ld1 {v1.8b}, [x0], x1
|
||||
ld1 {v2.8b}, [x0], x1
|
||||
ld1 {v3.8b}, [x0], x1
|
||||
ld1 {v4.d}[1], [x0], x1
|
||||
ld1 {v5.d}[1], [x0], x1
|
||||
ld1 {v6.d}[1], [x0], x1
|
||||
ld1 {v7.d}[1], [x0], x1
|
||||
ld1 {v0.d}[1], [x0], x1
|
||||
ld1 {v1.d}[1], [x0], x1
|
||||
ld1 {v2.d}[1], [x0], x1
|
||||
ld1 {v3.d}[1], [x0], x1
|
||||
|
||||
transpose_8x16B v4, v5, v6, v7, v0, v1, v2, v3, v21, v23
|
||||
transpose_8x16B v4, v5, v6, v7, v0, v1, v2, v3, v21, v23
|
||||
|
||||
h264_loop_filter_luma_intra
|
||||
h264_loop_filter_luma_intra
|
||||
|
||||
transpose_8x16B v4, v5, v6, v7, v0, v1, v2, v3, v21, v23
|
||||
transpose_8x16B v4, v5, v6, v7, v0, v1, v2, v3, v21, v23
|
||||
|
||||
sub x0, x0, x1, lsl #4
|
||||
st1 {v4.8b}, [x0], x1
|
||||
st1 {v5.8b}, [x0], x1
|
||||
st1 {v6.8b}, [x0], x1
|
||||
st1 {v7.8b}, [x0], x1
|
||||
st1 {v0.8b}, [x0], x1
|
||||
st1 {v1.8b}, [x0], x1
|
||||
st1 {v2.8b}, [x0], x1
|
||||
st1 {v3.8b}, [x0], x1
|
||||
st1 {v4.d}[1], [x0], x1
|
||||
st1 {v5.d}[1], [x0], x1
|
||||
st1 {v6.d}[1], [x0], x1
|
||||
st1 {v7.d}[1], [x0], x1
|
||||
st1 {v0.d}[1], [x0], x1
|
||||
st1 {v1.d}[1], [x0], x1
|
||||
st1 {v2.d}[1], [x0], x1
|
||||
st1 {v3.d}[1], [x0], x1
|
||||
sub x0, x0, x1, lsl #4
|
||||
st1 {v4.8b}, [x0], x1
|
||||
st1 {v5.8b}, [x0], x1
|
||||
st1 {v6.8b}, [x0], x1
|
||||
st1 {v7.8b}, [x0], x1
|
||||
st1 {v0.8b}, [x0], x1
|
||||
st1 {v1.8b}, [x0], x1
|
||||
st1 {v2.8b}, [x0], x1
|
||||
st1 {v3.8b}, [x0], x1
|
||||
st1 {v4.d}[1], [x0], x1
|
||||
st1 {v5.d}[1], [x0], x1
|
||||
st1 {v6.d}[1], [x0], x1
|
||||
st1 {v7.d}[1], [x0], x1
|
||||
st1 {v0.d}[1], [x0], x1
|
||||
st1 {v1.d}[1], [x0], x1
|
||||
st1 {v2.d}[1], [x0], x1
|
||||
st1 {v3.d}[1], [x0], x1
|
||||
9:
|
||||
ret
|
||||
ret
|
||||
endfunc
|
||||
|
||||
.macro h264_loop_filter_chroma
|
||||
|
@ -411,6 +414,7 @@ endfunc
|
|||
|
||||
function ff_h264_v_loop_filter_chroma_neon, export=1
|
||||
h264_loop_filter_start
|
||||
sxtw x1, w1
|
||||
|
||||
sub x0, x0, x1, lsl #1
|
||||
ld1 {v18.8B}, [x0], x1
|
||||
|
@ -429,6 +433,7 @@ endfunc
|
|||
|
||||
function ff_h264_h_loop_filter_chroma_neon, export=1
|
||||
h264_loop_filter_start
|
||||
sxtw x1, w1
|
||||
|
||||
sub x0, x0, #2
|
||||
h_loop_filter_chroma420:
|
||||
|
@ -461,6 +466,7 @@ h_loop_filter_chroma420:
|
|||
endfunc
|
||||
|
||||
function ff_h264_h_loop_filter_chroma422_neon, export=1
|
||||
sxtw x1, w1
|
||||
h264_loop_filter_start
|
||||
add x5, x0, x1
|
||||
sub x0, x0, #2
|
||||
|
@ -474,113 +480,113 @@ function ff_h264_h_loop_filter_chroma422_neon, export=1
|
|||
endfunc
|
||||
|
||||
.macro h264_loop_filter_chroma_intra
|
||||
uabd v26.8b, v16.8b, v17.8b // abs(p0 - q0)
|
||||
uabd v27.8b, v18.8b, v16.8b // abs(p1 - p0)
|
||||
uabd v28.8b, v19.8b, v17.8b // abs(q1 - q0)
|
||||
cmhi v26.8b, v30.8b, v26.8b // < alpha
|
||||
cmhi v27.8b, v31.8b, v27.8b // < beta
|
||||
cmhi v28.8b, v31.8b, v28.8b // < beta
|
||||
and v26.8b, v26.8b, v27.8b
|
||||
and v26.8b, v26.8b, v28.8b
|
||||
mov x2, v26.d[0]
|
||||
uabd v26.8b, v16.8b, v17.8b // abs(p0 - q0)
|
||||
uabd v27.8b, v18.8b, v16.8b // abs(p1 - p0)
|
||||
uabd v28.8b, v19.8b, v17.8b // abs(q1 - q0)
|
||||
cmhi v26.8b, v30.8b, v26.8b // < alpha
|
||||
cmhi v27.8b, v31.8b, v27.8b // < beta
|
||||
cmhi v28.8b, v31.8b, v28.8b // < beta
|
||||
and v26.8b, v26.8b, v27.8b
|
||||
and v26.8b, v26.8b, v28.8b
|
||||
mov x2, v26.d[0]
|
||||
|
||||
ushll v4.8h, v18.8b, #1
|
||||
ushll v6.8h, v19.8b, #1
|
||||
cbz x2, 9f
|
||||
uaddl v20.8h, v16.8b, v19.8b
|
||||
uaddl v22.8h, v17.8b, v18.8b
|
||||
add v20.8h, v20.8h, v4.8h
|
||||
add v22.8h, v22.8h, v6.8h
|
||||
uqrshrn v24.8b, v20.8h, #2
|
||||
uqrshrn v25.8b, v22.8h, #2
|
||||
bit v16.8b, v24.8b, v26.8b
|
||||
bit v17.8b, v25.8b, v26.8b
|
||||
ushll v4.8h, v18.8b, #1
|
||||
ushll v6.8h, v19.8b, #1
|
||||
cbz x2, 9f
|
||||
uaddl v20.8h, v16.8b, v19.8b
|
||||
uaddl v22.8h, v17.8b, v18.8b
|
||||
add v20.8h, v20.8h, v4.8h
|
||||
add v22.8h, v22.8h, v6.8h
|
||||
uqrshrn v24.8b, v20.8h, #2
|
||||
uqrshrn v25.8b, v22.8h, #2
|
||||
bit v16.8b, v24.8b, v26.8b
|
||||
bit v17.8b, v25.8b, v26.8b
|
||||
.endm
|
||||
|
||||
function ff_h264_v_loop_filter_chroma_intra_neon, export=1
|
||||
h264_loop_filter_start_intra
|
||||
h264_loop_filter_start_intra
|
||||
|
||||
sub x0, x0, x1, lsl #1
|
||||
ld1 {v18.8b}, [x0], x1
|
||||
ld1 {v16.8b}, [x0], x1
|
||||
ld1 {v17.8b}, [x0], x1
|
||||
ld1 {v19.8b}, [x0]
|
||||
sub x0, x0, x1, lsl #1
|
||||
ld1 {v18.8b}, [x0], x1
|
||||
ld1 {v16.8b}, [x0], x1
|
||||
ld1 {v17.8b}, [x0], x1
|
||||
ld1 {v19.8b}, [x0]
|
||||
|
||||
h264_loop_filter_chroma_intra
|
||||
h264_loop_filter_chroma_intra
|
||||
|
||||
sub x0, x0, x1, lsl #1
|
||||
st1 {v16.8b}, [x0], x1
|
||||
st1 {v17.8b}, [x0], x1
|
||||
sub x0, x0, x1, lsl #1
|
||||
st1 {v16.8b}, [x0], x1
|
||||
st1 {v17.8b}, [x0], x1
|
||||
|
||||
9:
|
||||
ret
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_h264_h_loop_filter_chroma_mbaff_intra_neon, export=1
|
||||
h264_loop_filter_start_intra
|
||||
h264_loop_filter_start_intra
|
||||
|
||||
sub x4, x0, #2
|
||||
sub x0, x0, #1
|
||||
ld1 {v18.8b}, [x4], x1
|
||||
ld1 {v16.8b}, [x4], x1
|
||||
ld1 {v17.8b}, [x4], x1
|
||||
ld1 {v19.8b}, [x4], x1
|
||||
sub x4, x0, #2
|
||||
sub x0, x0, #1
|
||||
ld1 {v18.8b}, [x4], x1
|
||||
ld1 {v16.8b}, [x4], x1
|
||||
ld1 {v17.8b}, [x4], x1
|
||||
ld1 {v19.8b}, [x4], x1
|
||||
|
||||
transpose_4x8B v18, v16, v17, v19, v26, v27, v28, v29
|
||||
transpose_4x8B v18, v16, v17, v19, v26, v27, v28, v29
|
||||
|
||||
h264_loop_filter_chroma_intra
|
||||
h264_loop_filter_chroma_intra
|
||||
|
||||
st2 {v16.b,v17.b}[0], [x0], x1
|
||||
st2 {v16.b,v17.b}[1], [x0], x1
|
||||
st2 {v16.b,v17.b}[2], [x0], x1
|
||||
st2 {v16.b,v17.b}[3], [x0], x1
|
||||
st2 {v16.b,v17.b}[0], [x0], x1
|
||||
st2 {v16.b,v17.b}[1], [x0], x1
|
||||
st2 {v16.b,v17.b}[2], [x0], x1
|
||||
st2 {v16.b,v17.b}[3], [x0], x1
|
||||
|
||||
9:
|
||||
ret
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_h264_h_loop_filter_chroma_intra_neon, export=1
|
||||
h264_loop_filter_start_intra
|
||||
h264_loop_filter_start_intra
|
||||
|
||||
sub x4, x0, #2
|
||||
sub x0, x0, #1
|
||||
sub x4, x0, #2
|
||||
sub x0, x0, #1
|
||||
h_loop_filter_chroma420_intra:
|
||||
ld1 {v18.8b}, [x4], x1
|
||||
ld1 {v16.8b}, [x4], x1
|
||||
ld1 {v17.8b}, [x4], x1
|
||||
ld1 {v19.8b}, [x4], x1
|
||||
ld1 {v18.s}[1], [x4], x1
|
||||
ld1 {v16.s}[1], [x4], x1
|
||||
ld1 {v17.s}[1], [x4], x1
|
||||
ld1 {v19.s}[1], [x4], x1
|
||||
ld1 {v18.8b}, [x4], x1
|
||||
ld1 {v16.8b}, [x4], x1
|
||||
ld1 {v17.8b}, [x4], x1
|
||||
ld1 {v19.8b}, [x4], x1
|
||||
ld1 {v18.s}[1], [x4], x1
|
||||
ld1 {v16.s}[1], [x4], x1
|
||||
ld1 {v17.s}[1], [x4], x1
|
||||
ld1 {v19.s}[1], [x4], x1
|
||||
|
||||
transpose_4x8B v18, v16, v17, v19, v26, v27, v28, v29
|
||||
transpose_4x8B v18, v16, v17, v19, v26, v27, v28, v29
|
||||
|
||||
h264_loop_filter_chroma_intra
|
||||
h264_loop_filter_chroma_intra
|
||||
|
||||
st2 {v16.b,v17.b}[0], [x0], x1
|
||||
st2 {v16.b,v17.b}[1], [x0], x1
|
||||
st2 {v16.b,v17.b}[2], [x0], x1
|
||||
st2 {v16.b,v17.b}[3], [x0], x1
|
||||
st2 {v16.b,v17.b}[4], [x0], x1
|
||||
st2 {v16.b,v17.b}[5], [x0], x1
|
||||
st2 {v16.b,v17.b}[6], [x0], x1
|
||||
st2 {v16.b,v17.b}[7], [x0], x1
|
||||
st2 {v16.b,v17.b}[0], [x0], x1
|
||||
st2 {v16.b,v17.b}[1], [x0], x1
|
||||
st2 {v16.b,v17.b}[2], [x0], x1
|
||||
st2 {v16.b,v17.b}[3], [x0], x1
|
||||
st2 {v16.b,v17.b}[4], [x0], x1
|
||||
st2 {v16.b,v17.b}[5], [x0], x1
|
||||
st2 {v16.b,v17.b}[6], [x0], x1
|
||||
st2 {v16.b,v17.b}[7], [x0], x1
|
||||
|
||||
9:
|
||||
ret
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_h264_h_loop_filter_chroma422_intra_neon, export=1
|
||||
h264_loop_filter_start_intra
|
||||
sub x4, x0, #2
|
||||
add x5, x0, x1, lsl #3
|
||||
sub x0, x0, #1
|
||||
mov x7, x30
|
||||
bl h_loop_filter_chroma420_intra
|
||||
sub x0, x5, #1
|
||||
mov x30, x7
|
||||
b h_loop_filter_chroma420_intra
|
||||
h264_loop_filter_start_intra
|
||||
sub x4, x0, #2
|
||||
add x5, x0, x1, lsl #3
|
||||
sub x0, x0, #1
|
||||
mov x7, x30
|
||||
bl h_loop_filter_chroma420_intra
|
||||
sub x0, x5, #1
|
||||
mov x30, x7
|
||||
b h_loop_filter_chroma420_intra
|
||||
endfunc
|
||||
|
||||
.macro biweight_16 macs, macd
|
||||
|
@ -685,6 +691,7 @@ endfunc
|
|||
|
||||
.macro biweight_func w
|
||||
function ff_biweight_h264_pixels_\w\()_neon, export=1
|
||||
sxtw x2, w2
|
||||
lsr w8, w5, #31
|
||||
add w7, w7, #1
|
||||
eor w8, w8, w6, lsr #30
|
||||
|
@ -793,6 +800,7 @@ endfunc
|
|||
|
||||
.macro weight_func w
|
||||
function ff_weight_h264_pixels_\w\()_neon, export=1
|
||||
sxtw x1, w1
|
||||
cmp w3, #1
|
||||
mov w6, #1
|
||||
lsl w5, w5, w3
|
||||
|
@ -819,258 +827,3 @@ endfunc
|
|||
weight_func 16
|
||||
weight_func 8
|
||||
weight_func 4
|
||||
|
||||
.macro h264_loop_filter_start_10
|
||||
cmp w2, #0
|
||||
ldr w6, [x4]
|
||||
ccmp w3, #0, #0, ne
|
||||
lsl w2, w2, #2
|
||||
mov v24.S[0], w6
|
||||
lsl w3, w3, #2
|
||||
and w8, w6, w6, lsl #16
|
||||
b.eq 1f
|
||||
ands w8, w8, w8, lsl #8
|
||||
b.ge 2f
|
||||
1:
|
||||
ret
|
||||
2:
|
||||
.endm
|
||||
|
||||
.macro h264_loop_filter_start_intra_10
|
||||
orr w4, w2, w3
|
||||
cbnz w4, 1f
|
||||
ret
|
||||
1:
|
||||
lsl w2, w2, #2
|
||||
lsl w3, w3, #2
|
||||
dup v30.8h, w2 // alpha
|
||||
dup v31.8h, w3 // beta
|
||||
.endm
|
||||
|
||||
.macro h264_loop_filter_chroma_10
|
||||
dup v22.8h, w2 // alpha
|
||||
dup v23.8h, w3 // beta
|
||||
uxtl v24.8h, v24.8b // tc0
|
||||
|
||||
uabd v26.8h, v16.8h, v0.8h // abs(p0 - q0)
|
||||
uabd v28.8h, v18.8h, v16.8h // abs(p1 - p0)
|
||||
uabd v30.8h, v2.8h, v0.8h // abs(q1 - q0)
|
||||
cmhi v26.8h, v22.8h, v26.8h // < alpha
|
||||
cmhi v28.8h, v23.8h, v28.8h // < beta
|
||||
cmhi v30.8h, v23.8h, v30.8h // < beta
|
||||
|
||||
and v26.16b, v26.16b, v28.16b
|
||||
mov v4.16b, v0.16b
|
||||
sub v4.8h, v4.8h, v16.8h
|
||||
and v26.16b, v26.16b, v30.16b
|
||||
shl v4.8h, v4.8h, #2
|
||||
mov x8, v26.d[0]
|
||||
mov x9, v26.d[1]
|
||||
sli v24.8h, v24.8h, #8
|
||||
uxtl v24.8h, v24.8b
|
||||
add v4.8h, v4.8h, v18.8h
|
||||
adds x8, x8, x9
|
||||
shl v24.8h, v24.8h, #2
|
||||
|
||||
b.eq 9f
|
||||
|
||||
movi v31.8h, #3 // (tc0 - 1) << (BIT_DEPTH - 8)) + 1
|
||||
uqsub v24.8h, v24.8h, v31.8h
|
||||
sub v4.8h, v4.8h, v2.8h
|
||||
srshr v4.8h, v4.8h, #3
|
||||
smin v4.8h, v4.8h, v24.8h
|
||||
neg v25.8h, v24.8h
|
||||
smax v4.8h, v4.8h, v25.8h
|
||||
and v4.16b, v4.16b, v26.16b
|
||||
add v16.8h, v16.8h, v4.8h
|
||||
sub v0.8h, v0.8h, v4.8h
|
||||
|
||||
mvni v4.8h, #0xFC, lsl #8 // 1023 for clipping
|
||||
movi v5.8h, #0
|
||||
smin v0.8h, v0.8h, v4.8h
|
||||
smin v16.8h, v16.8h, v4.8h
|
||||
smax v0.8h, v0.8h, v5.8h
|
||||
smax v16.8h, v16.8h, v5.8h
|
||||
.endm
|
||||
|
||||
function ff_h264_v_loop_filter_chroma_neon_10, export=1
|
||||
h264_loop_filter_start_10
|
||||
|
||||
mov x10, x0
|
||||
sub x0, x0, x1, lsl #1
|
||||
ld1 {v18.8h}, [x0 ], x1
|
||||
ld1 {v0.8h}, [x10], x1
|
||||
ld1 {v16.8h}, [x0 ], x1
|
||||
ld1 {v2.8h}, [x10]
|
||||
|
||||
h264_loop_filter_chroma_10
|
||||
|
||||
sub x0, x10, x1, lsl #1
|
||||
st1 {v16.8h}, [x0], x1
|
||||
st1 {v0.8h}, [x0], x1
|
||||
9:
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_h264_h_loop_filter_chroma_neon_10, export=1
|
||||
h264_loop_filter_start_10
|
||||
|
||||
sub x0, x0, #4 // access the 2nd left pixel
|
||||
h_loop_filter_chroma420_10:
|
||||
add x10, x0, x1, lsl #2
|
||||
ld1 {v18.d}[0], [x0 ], x1
|
||||
ld1 {v18.d}[1], [x10], x1
|
||||
ld1 {v16.d}[0], [x0 ], x1
|
||||
ld1 {v16.d}[1], [x10], x1
|
||||
ld1 {v0.d}[0], [x0 ], x1
|
||||
ld1 {v0.d}[1], [x10], x1
|
||||
ld1 {v2.d}[0], [x0 ], x1
|
||||
ld1 {v2.d}[1], [x10], x1
|
||||
|
||||
transpose_4x8H v18, v16, v0, v2, v28, v29, v30, v31
|
||||
|
||||
h264_loop_filter_chroma_10
|
||||
|
||||
transpose_4x8H v18, v16, v0, v2, v28, v29, v30, v31
|
||||
|
||||
sub x0, x10, x1, lsl #3
|
||||
st1 {v18.d}[0], [x0], x1
|
||||
st1 {v16.d}[0], [x0], x1
|
||||
st1 {v0.d}[0], [x0], x1
|
||||
st1 {v2.d}[0], [x0], x1
|
||||
st1 {v18.d}[1], [x0], x1
|
||||
st1 {v16.d}[1], [x0], x1
|
||||
st1 {v0.d}[1], [x0], x1
|
||||
st1 {v2.d}[1], [x0], x1
|
||||
9:
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_h264_h_loop_filter_chroma422_neon_10, export=1
|
||||
h264_loop_filter_start_10
|
||||
add x5, x0, x1
|
||||
sub x0, x0, #4
|
||||
add x1, x1, x1
|
||||
mov x7, x30
|
||||
bl h_loop_filter_chroma420_10
|
||||
mov x30, x7
|
||||
sub x0, x5, #4
|
||||
mov v24.s[0], w6
|
||||
b h_loop_filter_chroma420_10
|
||||
endfunc
|
||||
|
||||
.macro h264_loop_filter_chroma_intra_10
|
||||
uabd v26.8h, v16.8h, v17.8h // abs(p0 - q0)
|
||||
uabd v27.8h, v18.8h, v16.8h // abs(p1 - p0)
|
||||
uabd v28.8h, v19.8h, v17.8h // abs(q1 - q0)
|
||||
cmhi v26.8h, v30.8h, v26.8h // < alpha
|
||||
cmhi v27.8h, v31.8h, v27.8h // < beta
|
||||
cmhi v28.8h, v31.8h, v28.8h // < beta
|
||||
and v26.16b, v26.16b, v27.16b
|
||||
and v26.16b, v26.16b, v28.16b
|
||||
mov x2, v26.d[0]
|
||||
mov x3, v26.d[1]
|
||||
|
||||
shl v4.8h, v18.8h, #1
|
||||
shl v6.8h, v19.8h, #1
|
||||
|
||||
adds x2, x2, x3
|
||||
b.eq 9f
|
||||
|
||||
add v20.8h, v16.8h, v19.8h
|
||||
add v22.8h, v17.8h, v18.8h
|
||||
add v20.8h, v20.8h, v4.8h
|
||||
add v22.8h, v22.8h, v6.8h
|
||||
urshr v24.8h, v20.8h, #2
|
||||
urshr v25.8h, v22.8h, #2
|
||||
bit v16.16b, v24.16b, v26.16b
|
||||
bit v17.16b, v25.16b, v26.16b
|
||||
.endm
|
||||
|
||||
function ff_h264_v_loop_filter_chroma_intra_neon_10, export=1
|
||||
h264_loop_filter_start_intra_10
|
||||
mov x9, x0
|
||||
sub x0, x0, x1, lsl #1
|
||||
ld1 {v18.8h}, [x0], x1
|
||||
ld1 {v17.8h}, [x9], x1
|
||||
ld1 {v16.8h}, [x0], x1
|
||||
ld1 {v19.8h}, [x9]
|
||||
|
||||
h264_loop_filter_chroma_intra_10
|
||||
|
||||
sub x0, x9, x1, lsl #1
|
||||
st1 {v16.8h}, [x0], x1
|
||||
st1 {v17.8h}, [x0], x1
|
||||
|
||||
9:
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_h264_h_loop_filter_chroma_mbaff_intra_neon_10, export=1
|
||||
h264_loop_filter_start_intra_10
|
||||
|
||||
sub x4, x0, #4
|
||||
sub x0, x0, #2
|
||||
add x9, x4, x1, lsl #1
|
||||
ld1 {v18.8h}, [x4], x1
|
||||
ld1 {v17.8h}, [x9], x1
|
||||
ld1 {v16.8h}, [x4], x1
|
||||
ld1 {v19.8h}, [x9], x1
|
||||
|
||||
transpose_4x8H v18, v16, v17, v19, v26, v27, v28, v29
|
||||
|
||||
h264_loop_filter_chroma_intra_10
|
||||
|
||||
st2 {v16.h,v17.h}[0], [x0], x1
|
||||
st2 {v16.h,v17.h}[1], [x0], x1
|
||||
st2 {v16.h,v17.h}[2], [x0], x1
|
||||
st2 {v16.h,v17.h}[3], [x0], x1
|
||||
|
||||
9:
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_h264_h_loop_filter_chroma_intra_neon_10, export=1
|
||||
h264_loop_filter_start_intra_10
|
||||
sub x4, x0, #4
|
||||
sub x0, x0, #2
|
||||
h_loop_filter_chroma420_intra_10:
|
||||
add x9, x4, x1, lsl #2
|
||||
ld1 {v18.4h}, [x4], x1
|
||||
ld1 {v18.d}[1], [x9], x1
|
||||
ld1 {v16.4h}, [x4], x1
|
||||
ld1 {v16.d}[1], [x9], x1
|
||||
ld1 {v17.4h}, [x4], x1
|
||||
ld1 {v17.d}[1], [x9], x1
|
||||
ld1 {v19.4h}, [x4], x1
|
||||
ld1 {v19.d}[1], [x9], x1
|
||||
|
||||
transpose_4x8H v18, v16, v17, v19, v26, v27, v28, v29
|
||||
|
||||
h264_loop_filter_chroma_intra_10
|
||||
|
||||
st2 {v16.h,v17.h}[0], [x0], x1
|
||||
st2 {v16.h,v17.h}[1], [x0], x1
|
||||
st2 {v16.h,v17.h}[2], [x0], x1
|
||||
st2 {v16.h,v17.h}[3], [x0], x1
|
||||
st2 {v16.h,v17.h}[4], [x0], x1
|
||||
st2 {v16.h,v17.h}[5], [x0], x1
|
||||
st2 {v16.h,v17.h}[6], [x0], x1
|
||||
st2 {v16.h,v17.h}[7], [x0], x1
|
||||
|
||||
9:
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_h264_h_loop_filter_chroma422_intra_neon_10, export=1
|
||||
h264_loop_filter_start_intra_10
|
||||
sub x4, x0, #4
|
||||
add x5, x0, x1, lsl #3
|
||||
sub x0, x0, #2
|
||||
mov x7, x30
|
||||
bl h_loop_filter_chroma420_intra_10
|
||||
mov x4, x9
|
||||
sub x0, x5, #2
|
||||
mov x30, x7
|
||||
b h_loop_filter_chroma420_intra_10
|
||||
endfunc
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
|
||||
function ff_h264_idct_add_neon, export=1
|
||||
.L_ff_h264_idct_add_neon:
|
||||
AARCH64_VALID_CALL_TARGET
|
||||
ld1 {v0.4H, v1.4H, v2.4H, v3.4H}, [x1]
|
||||
sxtw x2, w2
|
||||
movi v30.8H, #0
|
||||
|
@ -80,7 +79,6 @@ endfunc
|
|||
|
||||
function ff_h264_idct_dc_add_neon, export=1
|
||||
.L_ff_h264_idct_dc_add_neon:
|
||||
AARCH64_VALID_CALL_TARGET
|
||||
sxtw x2, w2
|
||||
mov w3, #0
|
||||
ld1r {v2.8H}, [x1]
|
||||
|
@ -268,7 +266,6 @@ endfunc
|
|||
|
||||
function ff_h264_idct8_add_neon, export=1
|
||||
.L_ff_h264_idct8_add_neon:
|
||||
AARCH64_VALID_CALL_TARGET
|
||||
movi v19.8H, #0
|
||||
sxtw x2, w2
|
||||
ld1 {v24.8H, v25.8H}, [x1]
|
||||
|
@ -333,7 +330,6 @@ endfunc
|
|||
|
||||
function ff_h264_idct8_dc_add_neon, export=1
|
||||
.L_ff_h264_idct8_dc_add_neon:
|
||||
AARCH64_VALID_CALL_TARGET
|
||||
mov w3, #0
|
||||
sxtw x2, w2
|
||||
ld1r {v31.8H}, [x1]
|
||||
|
|
|
@ -45,84 +45,42 @@ void ff_pred8x8_0lt_dc_neon(uint8_t *src, ptrdiff_t stride);
|
|||
void ff_pred8x8_l00_dc_neon(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_0l0_dc_neon(uint8_t *src, ptrdiff_t stride);
|
||||
|
||||
void ff_pred16x16_vert_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred16x16_hor_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred16x16_plane_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred16x16_dc_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred16x16_top_dc_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
|
||||
void ff_pred8x8_vert_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_hor_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_plane_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_dc_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_128_dc_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_left_dc_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_top_dc_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_l0t_dc_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_0lt_dc_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_l00_dc_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
void ff_pred8x8_0l0_dc_neon_10(uint8_t *src, ptrdiff_t stride);
|
||||
|
||||
static av_cold void h264_pred_init_neon(H264PredContext *h, int codec_id,
|
||||
const int bit_depth,
|
||||
const int chroma_format_idc)
|
||||
{
|
||||
if (bit_depth == 8) {
|
||||
if (chroma_format_idc <= 1) {
|
||||
h->pred8x8[VERT_PRED8x8 ] = ff_pred8x8_vert_neon;
|
||||
h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_hor_neon;
|
||||
if (codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8)
|
||||
h->pred8x8[PLANE_PRED8x8] = ff_pred8x8_plane_neon;
|
||||
h->pred8x8[DC_128_PRED8x8 ] = ff_pred8x8_128_dc_neon;
|
||||
if (codec_id != AV_CODEC_ID_RV40 && codec_id != AV_CODEC_ID_VP7 &&
|
||||
codec_id != AV_CODEC_ID_VP8) {
|
||||
h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_neon;
|
||||
h->pred8x8[LEFT_DC_PRED8x8] = ff_pred8x8_left_dc_neon;
|
||||
h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_neon;
|
||||
h->pred8x8[ALZHEIMER_DC_L0T_PRED8x8] = ff_pred8x8_l0t_dc_neon;
|
||||
h->pred8x8[ALZHEIMER_DC_0LT_PRED8x8] = ff_pred8x8_0lt_dc_neon;
|
||||
h->pred8x8[ALZHEIMER_DC_L00_PRED8x8] = ff_pred8x8_l00_dc_neon;
|
||||
h->pred8x8[ALZHEIMER_DC_0L0_PRED8x8] = ff_pred8x8_0l0_dc_neon;
|
||||
}
|
||||
}
|
||||
const int high_depth = bit_depth > 8;
|
||||
|
||||
h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_neon;
|
||||
h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vert_neon;
|
||||
h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_hor_neon;
|
||||
h->pred16x16[LEFT_DC_PRED8x8] = ff_pred16x16_left_dc_neon;
|
||||
h->pred16x16[TOP_DC_PRED8x8 ] = ff_pred16x16_top_dc_neon;
|
||||
h->pred16x16[DC_128_PRED8x8 ] = ff_pred16x16_128_dc_neon;
|
||||
if (codec_id != AV_CODEC_ID_SVQ3 && codec_id != AV_CODEC_ID_RV40 &&
|
||||
codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8)
|
||||
h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_neon;
|
||||
}
|
||||
if (bit_depth == 10) {
|
||||
if (chroma_format_idc <= 1) {
|
||||
h->pred8x8[VERT_PRED8x8 ] = ff_pred8x8_vert_neon_10;
|
||||
h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_hor_neon_10;
|
||||
if (codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8)
|
||||
h->pred8x8[PLANE_PRED8x8] = ff_pred8x8_plane_neon_10;
|
||||
h->pred8x8[DC_128_PRED8x8 ] = ff_pred8x8_128_dc_neon_10;
|
||||
if (codec_id != AV_CODEC_ID_RV40 && codec_id != AV_CODEC_ID_VP7 &&
|
||||
codec_id != AV_CODEC_ID_VP8) {
|
||||
h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_neon_10;
|
||||
h->pred8x8[LEFT_DC_PRED8x8] = ff_pred8x8_left_dc_neon_10;
|
||||
h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_neon_10;
|
||||
h->pred8x8[ALZHEIMER_DC_L0T_PRED8x8] = ff_pred8x8_l0t_dc_neon_10;
|
||||
h->pred8x8[ALZHEIMER_DC_0LT_PRED8x8] = ff_pred8x8_0lt_dc_neon_10;
|
||||
h->pred8x8[ALZHEIMER_DC_L00_PRED8x8] = ff_pred8x8_l00_dc_neon_10;
|
||||
h->pred8x8[ALZHEIMER_DC_0L0_PRED8x8] = ff_pred8x8_0l0_dc_neon_10;
|
||||
}
|
||||
}
|
||||
if (high_depth)
|
||||
return;
|
||||
|
||||
h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_neon_10;
|
||||
h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vert_neon_10;
|
||||
h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_hor_neon_10;
|
||||
h->pred16x16[TOP_DC_PRED8x8 ] = ff_pred16x16_top_dc_neon_10;
|
||||
if (codec_id != AV_CODEC_ID_SVQ3 && codec_id != AV_CODEC_ID_RV40 &&
|
||||
codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8)
|
||||
h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_neon_10;
|
||||
if (chroma_format_idc <= 1) {
|
||||
h->pred8x8[VERT_PRED8x8 ] = ff_pred8x8_vert_neon;
|
||||
h->pred8x8[HOR_PRED8x8 ] = ff_pred8x8_hor_neon;
|
||||
if (codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8)
|
||||
h->pred8x8[PLANE_PRED8x8] = ff_pred8x8_plane_neon;
|
||||
h->pred8x8[DC_128_PRED8x8 ] = ff_pred8x8_128_dc_neon;
|
||||
if (codec_id != AV_CODEC_ID_RV40 && codec_id != AV_CODEC_ID_VP7 &&
|
||||
codec_id != AV_CODEC_ID_VP8) {
|
||||
h->pred8x8[DC_PRED8x8 ] = ff_pred8x8_dc_neon;
|
||||
h->pred8x8[LEFT_DC_PRED8x8] = ff_pred8x8_left_dc_neon;
|
||||
h->pred8x8[TOP_DC_PRED8x8 ] = ff_pred8x8_top_dc_neon;
|
||||
h->pred8x8[ALZHEIMER_DC_L0T_PRED8x8] = ff_pred8x8_l0t_dc_neon;
|
||||
h->pred8x8[ALZHEIMER_DC_0LT_PRED8x8] = ff_pred8x8_0lt_dc_neon;
|
||||
h->pred8x8[ALZHEIMER_DC_L00_PRED8x8] = ff_pred8x8_l00_dc_neon;
|
||||
h->pred8x8[ALZHEIMER_DC_0L0_PRED8x8] = ff_pred8x8_0l0_dc_neon;
|
||||
}
|
||||
}
|
||||
|
||||
h->pred16x16[DC_PRED8x8 ] = ff_pred16x16_dc_neon;
|
||||
h->pred16x16[VERT_PRED8x8 ] = ff_pred16x16_vert_neon;
|
||||
h->pred16x16[HOR_PRED8x8 ] = ff_pred16x16_hor_neon;
|
||||
h->pred16x16[LEFT_DC_PRED8x8] = ff_pred16x16_left_dc_neon;
|
||||
h->pred16x16[TOP_DC_PRED8x8 ] = ff_pred16x16_top_dc_neon;
|
||||
h->pred16x16[DC_128_PRED8x8 ] = ff_pred16x16_128_dc_neon;
|
||||
if (codec_id != AV_CODEC_ID_SVQ3 && codec_id != AV_CODEC_ID_RV40 &&
|
||||
codec_id != AV_CODEC_ID_VP7 && codec_id != AV_CODEC_ID_VP8)
|
||||
h->pred16x16[PLANE_PRED8x8 ] = ff_pred16x16_plane_neon;
|
||||
}
|
||||
|
||||
av_cold void ff_h264_pred_init_aarch64(H264PredContext *h, int codec_id,
|
||||
|
|
|
@ -81,8 +81,8 @@ function ff_pred16x16_dc_neon, export=1
|
|||
.L_pred16x16_dc_end:
|
||||
mov w3, #8
|
||||
6: st1 {v0.16b}, [x0], x1
|
||||
subs w3, w3, #1
|
||||
st1 {v0.16b}, [x0], x1
|
||||
subs w3, w3, #1
|
||||
b.ne 6b
|
||||
ret
|
||||
endfunc
|
||||
|
@ -91,8 +91,8 @@ function ff_pred16x16_hor_neon, export=1
|
|||
sub x2, x0, #1
|
||||
mov w3, #16
|
||||
1: ld1r {v0.16b}, [x2], x1
|
||||
subs w3, w3, #1
|
||||
st1 {v0.16b}, [x0], x1
|
||||
subs w3, w3, #1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
@ -102,9 +102,9 @@ function ff_pred16x16_vert_neon, export=1
|
|||
add x1, x1, x1
|
||||
ld1 {v0.16b}, [x2], x1
|
||||
mov w3, #8
|
||||
1: subs w3, w3, #1
|
||||
st1 {v0.16b}, [x0], x1
|
||||
1: st1 {v0.16b}, [x0], x1
|
||||
st1 {v0.16b}, [x2], x1
|
||||
subs w3, w3, #1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
@ -158,8 +158,8 @@ function ff_pred16x16_plane_neon, export=1
|
|||
add v1.8h, v1.8h, v2.8h
|
||||
sqshrun2 v0.16b, v1.8h, #5
|
||||
add v1.8h, v1.8h, v3.8h
|
||||
subs w3, w3, #1
|
||||
st1 {v0.16b}, [x0], x1
|
||||
subs w3, w3, #1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
@ -175,8 +175,8 @@ function ff_pred8x8_hor_neon, export=1
|
|||
sub x2, x0, #1
|
||||
mov w3, #8
|
||||
1: ld1r {v0.8b}, [x2], x1
|
||||
subs w3, w3, #1
|
||||
st1 {v0.8b}, [x0], x1
|
||||
subs w3, w3, #1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
@ -186,9 +186,9 @@ function ff_pred8x8_vert_neon, export=1
|
|||
lsl x1, x1, #1
|
||||
ld1 {v0.8b}, [x2], x1
|
||||
mov w3, #4
|
||||
1: subs w3, w3, #1
|
||||
st1 {v0.8b}, [x0], x1
|
||||
1: st1 {v0.8b}, [x0], x1
|
||||
st1 {v0.8b}, [x2], x1
|
||||
subs w3, w3, #1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
@ -232,9 +232,9 @@ function ff_pred8x8_plane_neon, export=1
|
|||
mov w3, #8
|
||||
1:
|
||||
sqshrun v0.8b, v1.8h, #5
|
||||
subs w3, w3, #1
|
||||
add v1.8h, v1.8h, v2.8h
|
||||
st1 {v0.8b}, [x0], x1
|
||||
subs w3, w3, #1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
@ -290,9 +290,9 @@ function ff_pred8x8_dc_neon, export=1
|
|||
.L_pred8x8_dc_end:
|
||||
mov w3, #4
|
||||
add x2, x0, x1, lsl #2
|
||||
6: subs w3, w3, #1
|
||||
st1 {v0.8b}, [x0], x1
|
||||
6: st1 {v0.8b}, [x0], x1
|
||||
st1 {v1.8b}, [x2], x1
|
||||
subs w3, w3, #1
|
||||
b.ne 6b
|
||||
ret
|
||||
endfunc
|
||||
|
@ -359,407 +359,3 @@ function ff_pred8x8_0l0_dc_neon, export=1
|
|||
dup v1.8b, v1.b[0]
|
||||
b .L_pred8x8_dc_end
|
||||
endfunc
|
||||
|
||||
.macro ldcol.16 rd, rs, rt, n=4, hi=0
|
||||
.if \n >= 4 && \hi == 0
|
||||
ld1 {\rd\().h}[0], [\rs], \rt
|
||||
ld1 {\rd\().h}[1], [\rs], \rt
|
||||
ld1 {\rd\().h}[2], [\rs], \rt
|
||||
ld1 {\rd\().h}[3], [\rs], \rt
|
||||
.endif
|
||||
.if \n == 8 || \hi == 1
|
||||
ld1 {\rd\().h}[4], [\rs], \rt
|
||||
ld1 {\rd\().h}[5], [\rs], \rt
|
||||
ld1 {\rd\().h}[6], [\rs], \rt
|
||||
ld1 {\rd\().h}[7], [\rs], \rt
|
||||
.endif
|
||||
.endm
|
||||
|
||||
// slower than C
|
||||
/*
|
||||
function ff_pred16x16_128_dc_neon_10, export=1
|
||||
movi v0.8h, #2, lsl #8 // 512, 1 << (bit_depth - 1)
|
||||
|
||||
b .L_pred16x16_dc_10_end
|
||||
endfunc
|
||||
*/
|
||||
|
||||
function ff_pred16x16_top_dc_neon_10, export=1
|
||||
sub x2, x0, x1
|
||||
|
||||
ld1 {v0.8h, v1.8h}, [x2]
|
||||
|
||||
add v0.8h, v0.8h, v1.8h
|
||||
addv h0, v0.8h
|
||||
|
||||
urshr v0.4h, v0.4h, #4
|
||||
dup v0.8h, v0.h[0]
|
||||
b .L_pred16x16_dc_10_end
|
||||
endfunc
|
||||
|
||||
// slower than C
|
||||
/*
|
||||
function ff_pred16x16_left_dc_neon_10, export=1
|
||||
sub x2, x0, #2 // access to the "left" column
|
||||
ldcol.16 v0, x2, x1, 8
|
||||
ldcol.16 v1, x2, x1, 8 // load "left" column
|
||||
|
||||
add v0.8h, v0.8h, v1.8h
|
||||
addv h0, v0.8h
|
||||
|
||||
urshr v0.4h, v0.4h, #4
|
||||
dup v0.8h, v0.h[0]
|
||||
b .L_pred16x16_dc_10_end
|
||||
endfunc
|
||||
*/
|
||||
|
||||
function ff_pred16x16_dc_neon_10, export=1
|
||||
sub x2, x0, x1 // access to the "top" row
|
||||
sub x3, x0, #2 // access to the "left" column
|
||||
|
||||
ld1 {v0.8h, v1.8h}, [x2]
|
||||
ldcol.16 v2, x3, x1, 8
|
||||
ldcol.16 v3, x3, x1, 8 // load pixels in "top" row and "left" col
|
||||
|
||||
add v0.8h, v0.8h, v1.8h
|
||||
add v2.8h, v2.8h, v3.8h
|
||||
add v0.8h, v0.8h, v2.8h
|
||||
addv h0, v0.8h
|
||||
|
||||
urshr v0.4h, v0.4h, #5
|
||||
dup v0.8h, v0.h[0]
|
||||
.L_pred16x16_dc_10_end:
|
||||
mov v1.16b, v0.16b
|
||||
mov w3, #8
|
||||
6: st1 {v0.8h, v1.8h}, [x0], x1
|
||||
subs w3, w3, #1
|
||||
st1 {v0.8h, v1.8h}, [x0], x1
|
||||
b.ne 6b
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_pred16x16_hor_neon_10, export=1
|
||||
sub x2, x0, #2
|
||||
add x3, x0, #16
|
||||
|
||||
mov w4, #16
|
||||
1: ld1r {v0.8h}, [x2], x1
|
||||
subs w4, w4, #1
|
||||
st1 {v0.8h}, [x0], x1
|
||||
st1 {v0.8h}, [x3], x1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_pred16x16_vert_neon_10, export=1
|
||||
sub x2, x0, x1
|
||||
add x1, x1, x1
|
||||
|
||||
ld1 {v0.8h, v1.8h}, [x2], x1
|
||||
|
||||
mov w3, #8
|
||||
1: subs w3, w3, #1
|
||||
st1 {v0.8h, v1.8h}, [x0], x1
|
||||
st1 {v0.8h, v1.8h}, [x2], x1
|
||||
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_pred16x16_plane_neon_10, export=1
|
||||
sub x3, x0, x1
|
||||
movrel x4, p16weight
|
||||
add x2, x3, #16
|
||||
sub x3, x3, #2
|
||||
ld1 {v0.8h}, [x3]
|
||||
ld1 {v2.8h}, [x2], x1
|
||||
ldcol.16 v1, x3, x1, 8
|
||||
add x3, x3, x1
|
||||
ldcol.16 v3, x3, x1, 8
|
||||
|
||||
rev64 v16.8h, v0.8h
|
||||
rev64 v17.8h, v1.8h
|
||||
ext v0.16b, v16.16b, v16.16b, #8
|
||||
ext v1.16b, v17.16b, v17.16b, #8
|
||||
|
||||
add v7.8h, v2.8h, v3.8h
|
||||
sub v2.8h, v2.8h, v0.8h
|
||||
sub v3.8h, v3.8h, v1.8h
|
||||
ld1 {v0.8h}, [x4]
|
||||
mul v2.8h, v2.8h, v0.8h
|
||||
mul v3.8h, v3.8h, v0.8h
|
||||
addp v2.8h, v2.8h, v3.8h
|
||||
addp v2.8h, v2.8h, v2.8h
|
||||
addp v2.4h, v2.4h, v2.4h
|
||||
sshll v3.4s, v2.4h, #2
|
||||
saddw v2.4s, v3.4s, v2.4h
|
||||
rshrn v4.4h, v2.4s, #6
|
||||
trn2 v5.4h, v4.4h, v4.4h
|
||||
add v2.4h, v4.4h, v5.4h
|
||||
shl v3.4h, v2.4h, #3
|
||||
ext v7.16b, v7.16b, v7.16b, #14
|
||||
sub v3.4h, v3.4h, v2.4h // 7 * (b + c)
|
||||
add v7.4h, v7.4h, v0.4h
|
||||
shl v2.4h, v7.4h, #4
|
||||
ssubl v2.4s, v2.4h, v3.4h
|
||||
shl v3.4h, v4.4h, #4
|
||||
ext v0.16b, v0.16b, v0.16b, #14
|
||||
ssubl v6.4s, v5.4h, v3.4h
|
||||
|
||||
mov v0.h[0], wzr
|
||||
mul v0.8h, v0.8h, v4.h[0]
|
||||
dup v16.4s, v2.s[0]
|
||||
dup v17.4s, v2.s[0]
|
||||
dup v2.8h, v4.h[0]
|
||||
dup v3.4s, v6.s[0]
|
||||
shl v2.8h, v2.8h, #3
|
||||
saddw v16.4s, v16.4s, v0.4h
|
||||
saddw2 v17.4s, v17.4s, v0.8h
|
||||
saddw v3.4s, v3.4s, v2.4h
|
||||
|
||||
mov w3, #16
|
||||
mvni v4.8h, #0xFC, lsl #8 // 1023 for clipping
|
||||
1:
|
||||
sqshrun v0.4h, v16.4s, #5
|
||||
sqshrun2 v0.8h, v17.4s, #5
|
||||
saddw v16.4s, v16.4s, v2.4h
|
||||
saddw v17.4s, v17.4s, v2.4h
|
||||
sqshrun v1.4h, v16.4s, #5
|
||||
sqshrun2 v1.8h, v17.4s, #5
|
||||
add v16.4s, v16.4s, v3.4s
|
||||
add v17.4s, v17.4s, v3.4s
|
||||
|
||||
subs w3, w3, #1
|
||||
|
||||
smin v0.8h, v0.8h, v4.8h
|
||||
smin v1.8h, v1.8h, v4.8h
|
||||
|
||||
st1 {v0.8h, v1.8h}, [x0], x1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_hor_neon_10, export=1
|
||||
sub x2, x0, #2
|
||||
mov w3, #8
|
||||
|
||||
1: ld1r {v0.8h}, [x2], x1
|
||||
subs w3, w3, #1
|
||||
st1 {v0.8h}, [x0], x1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_vert_neon_10, export=1
|
||||
sub x2, x0, x1
|
||||
lsl x1, x1, #1
|
||||
|
||||
ld1 {v0.8h}, [x2], x1
|
||||
mov w3, #4
|
||||
1: subs w3, w3, #1
|
||||
st1 {v0.8h}, [x0], x1
|
||||
st1 {v0.8h}, [x2], x1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_plane_neon_10, export=1
|
||||
sub x3, x0, x1
|
||||
movrel x4, p8weight
|
||||
movrel x5, p16weight
|
||||
add x2, x3, #8
|
||||
sub x3, x3, #2
|
||||
ld1 {v0.d}[0], [x3]
|
||||
ld1 {v2.d}[0], [x2], x1
|
||||
ldcol.16 v0, x3, x1, hi=1
|
||||
add x3, x3, x1
|
||||
ldcol.16 v3, x3, x1, 4
|
||||
add v7.8h, v2.8h, v3.8h
|
||||
rev64 v0.8h, v0.8h
|
||||
trn1 v2.2d, v2.2d, v3.2d
|
||||
sub v2.8h, v2.8h, v0.8h
|
||||
ld1 {v6.8h}, [x4]
|
||||
mul v2.8h, v2.8h, v6.8h
|
||||
ld1 {v0.8h}, [x5]
|
||||
saddlp v2.4s, v2.8h
|
||||
addp v2.4s, v2.4s, v2.4s
|
||||
shl v3.4s, v2.4s, #4
|
||||
add v2.4s, v3.4s, v2.4s
|
||||
rshrn v5.4h, v2.4s, #5
|
||||
addp v2.4h, v5.4h, v5.4h
|
||||
shl v3.4h, v2.4h, #1
|
||||
add v3.4h, v3.4h, v2.4h
|
||||
rev64 v7.4h, v7.4h
|
||||
add v7.4h, v7.4h, v0.4h
|
||||
shl v2.4h, v7.4h, #4
|
||||
ssubl v2.4s, v2.4h, v3.4h
|
||||
ext v0.16b, v0.16b, v0.16b, #14
|
||||
mov v0.h[0], wzr
|
||||
mul v0.8h, v0.8h, v5.h[0]
|
||||
dup v1.4s, v2.s[0]
|
||||
dup v2.4s, v2.s[0]
|
||||
dup v3.8h, v5.h[1]
|
||||
saddw v1.4s, v1.4s, v0.4h
|
||||
saddw2 v2.4s, v2.4s, v0.8h
|
||||
mov w3, #8
|
||||
mvni v4.8h, #0xFC, lsl #8 // 1023 for clipping
|
||||
1:
|
||||
sqshrun v0.4h, v1.4s, #5
|
||||
sqshrun2 v0.8h, v2.4s, #5
|
||||
|
||||
saddw v1.4s, v1.4s, v3.4h
|
||||
saddw v2.4s, v2.4s, v3.4h
|
||||
|
||||
subs w3, w3, #1
|
||||
|
||||
smin v0.8h, v0.8h, v4.8h
|
||||
|
||||
st1 {v0.8h}, [x0], x1
|
||||
b.ne 1b
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_128_dc_neon_10, export=1
|
||||
movi v0.8h, #2, lsl #8 // 512, 1 << (bit_depth - 1)
|
||||
movi v1.8h, #2, lsl #8
|
||||
b .L_pred8x8_dc_10_end
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_top_dc_neon_10, export=1
|
||||
sub x2, x0, x1
|
||||
ld1 {v0.8h}, [x2]
|
||||
|
||||
addp v0.8h, v0.8h, v0.8h
|
||||
addp v0.4h, v0.4h, v0.4h
|
||||
zip1 v0.4h, v0.4h, v0.4h
|
||||
urshr v2.4h, v0.4h, #2
|
||||
zip1 v0.8h, v2.8h, v2.8h
|
||||
zip1 v1.8h, v2.8h, v2.8h
|
||||
b .L_pred8x8_dc_10_end
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_left_dc_neon_10, export=1
|
||||
sub x2, x0, #2
|
||||
ldcol.16 v0, x2, x1, 8
|
||||
|
||||
addp v0.8h, v0.8h, v0.8h
|
||||
addp v0.4h, v0.4h, v0.4h
|
||||
urshr v2.4h, v0.4h, #2
|
||||
dup v1.8h, v2.h[1]
|
||||
dup v0.8h, v2.h[0]
|
||||
b .L_pred8x8_dc_10_end
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_dc_neon_10, export=1
|
||||
sub x2, x0, x1
|
||||
sub x3, x0, #2
|
||||
|
||||
ld1 {v0.8h}, [x2]
|
||||
ldcol.16 v1, x3, x1, 8
|
||||
|
||||
addp v0.8h, v0.8h, v0.8h
|
||||
addp v1.8h, v1.8h, v1.8h
|
||||
trn1 v2.2s, v0.2s, v1.2s
|
||||
trn2 v3.2s, v0.2s, v1.2s
|
||||
addp v4.4h, v2.4h, v3.4h
|
||||
addp v5.4h, v4.4h, v4.4h
|
||||
urshr v6.4h, v5.4h, #3
|
||||
urshr v7.4h, v4.4h, #2
|
||||
dup v0.8h, v6.h[0]
|
||||
dup v2.8h, v7.h[2]
|
||||
dup v1.8h, v7.h[3]
|
||||
dup v3.8h, v6.h[1]
|
||||
zip1 v0.2d, v0.2d, v2.2d
|
||||
zip1 v1.2d, v1.2d, v3.2d
|
||||
.L_pred8x8_dc_10_end:
|
||||
mov w3, #4
|
||||
add x2, x0, x1, lsl #2
|
||||
|
||||
6: st1 {v0.8h}, [x0], x1
|
||||
subs w3, w3, #1
|
||||
st1 {v1.8h}, [x2], x1
|
||||
b.ne 6b
|
||||
ret
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_l0t_dc_neon_10, export=1
|
||||
sub x2, x0, x1
|
||||
sub x3, x0, #2
|
||||
|
||||
ld1 {v0.8h}, [x2]
|
||||
ldcol.16 v1, x3, x1, 4
|
||||
|
||||
addp v0.8h, v0.8h, v0.8h
|
||||
addp v1.4h, v1.4h, v1.4h
|
||||
addp v0.4h, v0.4h, v0.4h
|
||||
addp v1.4h, v1.4h, v1.4h
|
||||
add v1.4h, v1.4h, v0.4h
|
||||
|
||||
urshr v2.4h, v0.4h, #2
|
||||
urshr v3.4h, v1.4h, #3 // the pred4x4 part
|
||||
|
||||
dup v4.4h, v3.h[0]
|
||||
dup v5.4h, v2.h[0]
|
||||
dup v6.4h, v2.h[1]
|
||||
|
||||
zip1 v0.2d, v4.2d, v6.2d
|
||||
zip1 v1.2d, v5.2d, v6.2d
|
||||
b .L_pred8x8_dc_10_end
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_l00_dc_neon_10, export=1
|
||||
sub x2, x0, #2
|
||||
|
||||
ldcol.16 v0, x2, x1, 4
|
||||
|
||||
addp v0.4h, v0.4h, v0.4h
|
||||
addp v0.4h, v0.4h, v0.4h
|
||||
urshr v0.4h, v0.4h, #2
|
||||
|
||||
movi v1.8h, #2, lsl #8 // 512
|
||||
dup v0.8h, v0.h[0]
|
||||
b .L_pred8x8_dc_10_end
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_0lt_dc_neon_10, export=1
|
||||
add x3, x0, x1, lsl #2
|
||||
sub x2, x0, x1
|
||||
sub x3, x3, #2
|
||||
|
||||
ld1 {v0.8h}, [x2]
|
||||
ldcol.16 v1, x3, x1, hi=1
|
||||
|
||||
addp v0.8h, v0.8h, v0.8h
|
||||
addp v1.8h, v1.8h, v1.8h
|
||||
addp v0.4h, v0.4h, v0.4h
|
||||
addp v1.4h, v1.4h, v1.4h
|
||||
zip1 v0.2s, v0.2s, v1.2s
|
||||
add v1.4h, v0.4h, v1.4h
|
||||
|
||||
urshr v2.4h, v0.4h, #2
|
||||
urshr v3.4h, v1.4h, #3
|
||||
|
||||
dup v4.4h, v2.h[0]
|
||||
dup v5.4h, v2.h[3]
|
||||
dup v6.4h, v2.h[1]
|
||||
dup v7.4h, v3.h[1]
|
||||
|
||||
zip1 v0.2d, v4.2d, v6.2d
|
||||
zip1 v1.2d, v5.2d, v7.2d
|
||||
b .L_pred8x8_dc_10_end
|
||||
endfunc
|
||||
|
||||
function ff_pred8x8_0l0_dc_neon_10, export=1
|
||||
add x2, x0, x1, lsl #2
|
||||
sub x2, x2, #2
|
||||
|
||||
ldcol.16 v1, x2, x1, 4
|
||||
|
||||
addp v2.8h, v1.8h, v1.8h
|
||||
addp v2.4h, v2.4h, v2.4h
|
||||
urshr v1.4h, v2.4h, #2
|
||||
|
||||
movi v0.8h, #2, lsl #8 // 512
|
||||
dup v1.8h, v1.h[0]
|
||||
b .L_pred8x8_dc_10_end
|
||||
endfunc
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#ifndef AVCODEC_AARCH64_IDCT_H
|
||||
#define AVCODEC_AARCH64_IDCT_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
void ff_simple_idct_neon(int16_t *data);
|
||||
|
|
|
@ -27,29 +27,19 @@
|
|||
#include "libavcodec/idctdsp.h"
|
||||
#include "idct.h"
|
||||
|
||||
void ff_put_pixels_clamped_neon(const int16_t *, uint8_t *, ptrdiff_t);
|
||||
void ff_put_signed_pixels_clamped_neon(const int16_t *, uint8_t *, ptrdiff_t);
|
||||
void ff_add_pixels_clamped_neon(const int16_t *, uint8_t *, ptrdiff_t);
|
||||
|
||||
av_cold void ff_idctdsp_init_aarch64(IDCTDSPContext *c, AVCodecContext *avctx,
|
||||
unsigned high_bit_depth)
|
||||
{
|
||||
int cpu_flags = av_get_cpu_flags();
|
||||
|
||||
if (have_neon(cpu_flags)) {
|
||||
if (!avctx->lowres && !high_bit_depth) {
|
||||
if (avctx->idct_algo == FF_IDCT_AUTO ||
|
||||
avctx->idct_algo == FF_IDCT_SIMPLEAUTO ||
|
||||
avctx->idct_algo == FF_IDCT_SIMPLENEON) {
|
||||
c->idct_put = ff_simple_idct_put_neon;
|
||||
c->idct_add = ff_simple_idct_add_neon;
|
||||
c->idct = ff_simple_idct_neon;
|
||||
c->perm_type = FF_IDCT_PERM_PARTTRANS;
|
||||
}
|
||||
if (have_neon(cpu_flags) && !avctx->lowres && !high_bit_depth) {
|
||||
if (avctx->idct_algo == FF_IDCT_AUTO ||
|
||||
avctx->idct_algo == FF_IDCT_SIMPLEAUTO ||
|
||||
avctx->idct_algo == FF_IDCT_SIMPLENEON) {
|
||||
c->idct_put = ff_simple_idct_put_neon;
|
||||
c->idct_add = ff_simple_idct_add_neon;
|
||||
c->idct = ff_simple_idct_neon;
|
||||
c->perm_type = FF_IDCT_PERM_PARTTRANS;
|
||||
}
|
||||
|
||||
c->add_pixels_clamped = ff_add_pixels_clamped_neon;
|
||||
c->put_pixels_clamped = ff_put_pixels_clamped_neon;
|
||||
c->put_signed_pixels_clamped = ff_put_signed_pixels_clamped_neon;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,130 +0,0 @@
|
|||
/*
|
||||
* IDCT AArch64 NEON optimisations
|
||||
*
|
||||
* Copyright (c) 2022 Ben Avison <bavison@riscosopen.org>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "libavutil/aarch64/asm.S"
|
||||
|
||||
// Clamp 16-bit signed block coefficients to unsigned 8-bit
|
||||
// On entry:
|
||||
// x0 -> array of 64x 16-bit coefficients
|
||||
// x1 -> 8-bit results
|
||||
// x2 = row stride for results, bytes
|
||||
function ff_put_pixels_clamped_neon, export=1
|
||||
ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #64
|
||||
ld1 {v4.16b, v5.16b, v6.16b, v7.16b}, [x0]
|
||||
sqxtun v0.8b, v0.8h
|
||||
sqxtun v1.8b, v1.8h
|
||||
sqxtun v2.8b, v2.8h
|
||||
sqxtun v3.8b, v3.8h
|
||||
sqxtun v4.8b, v4.8h
|
||||
st1 {v0.8b}, [x1], x2
|
||||
sqxtun v0.8b, v5.8h
|
||||
st1 {v1.8b}, [x1], x2
|
||||
sqxtun v1.8b, v6.8h
|
||||
st1 {v2.8b}, [x1], x2
|
||||
sqxtun v2.8b, v7.8h
|
||||
st1 {v3.8b}, [x1], x2
|
||||
st1 {v4.8b}, [x1], x2
|
||||
st1 {v0.8b}, [x1], x2
|
||||
st1 {v1.8b}, [x1], x2
|
||||
st1 {v2.8b}, [x1]
|
||||
ret
|
||||
endfunc
|
||||
|
||||
// Clamp 16-bit signed block coefficients to signed 8-bit (biased by 128)
|
||||
// On entry:
|
||||
// x0 -> array of 64x 16-bit coefficients
|
||||
// x1 -> 8-bit results
|
||||
// x2 = row stride for results, bytes
|
||||
function ff_put_signed_pixels_clamped_neon, export=1
|
||||
ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #64
|
||||
movi v4.8b, #128
|
||||
ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x0]
|
||||
sqxtn v0.8b, v0.8h
|
||||
sqxtn v1.8b, v1.8h
|
||||
sqxtn v2.8b, v2.8h
|
||||
sqxtn v3.8b, v3.8h
|
||||
sqxtn v5.8b, v16.8h
|
||||
add v0.8b, v0.8b, v4.8b
|
||||
sqxtn v6.8b, v17.8h
|
||||
add v1.8b, v1.8b, v4.8b
|
||||
sqxtn v7.8b, v18.8h
|
||||
add v2.8b, v2.8b, v4.8b
|
||||
sqxtn v16.8b, v19.8h
|
||||
add v3.8b, v3.8b, v4.8b
|
||||
st1 {v0.8b}, [x1], x2
|
||||
add v0.8b, v5.8b, v4.8b
|
||||
st1 {v1.8b}, [x1], x2
|
||||
add v1.8b, v6.8b, v4.8b
|
||||
st1 {v2.8b}, [x1], x2
|
||||
add v2.8b, v7.8b, v4.8b
|
||||
st1 {v3.8b}, [x1], x2
|
||||
add v3.8b, v16.8b, v4.8b
|
||||
st1 {v0.8b}, [x1], x2
|
||||
st1 {v1.8b}, [x1], x2
|
||||
st1 {v2.8b}, [x1], x2
|
||||
st1 {v3.8b}, [x1]
|
||||
ret
|
||||
endfunc
|
||||
|
||||
// Add 16-bit signed block coefficients to unsigned 8-bit
|
||||
// On entry:
|
||||
// x0 -> array of 64x 16-bit coefficients
|
||||
// x1 -> 8-bit input and results
|
||||
// x2 = row stride for 8-bit input and results, bytes
|
||||
function ff_add_pixels_clamped_neon, export=1
|
||||
ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [x0], #64
|
||||
mov x3, x1
|
||||
ld1 {v4.8b}, [x1], x2
|
||||
ld1 {v5.8b}, [x1], x2
|
||||
ld1 {v6.8b}, [x1], x2
|
||||
ld1 {v7.8b}, [x1], x2
|
||||
ld1 {v16.16b, v17.16b, v18.16b, v19.16b}, [x0]
|
||||
uaddw v0.8h, v0.8h, v4.8b
|
||||
uaddw v1.8h, v1.8h, v5.8b
|
||||
uaddw v2.8h, v2.8h, v6.8b
|
||||
ld1 {v4.8b}, [x1], x2
|
||||
uaddw v3.8h, v3.8h, v7.8b
|
||||
ld1 {v5.8b}, [x1], x2
|
||||
sqxtun v0.8b, v0.8h
|
||||
ld1 {v6.8b}, [x1], x2
|
||||
sqxtun v1.8b, v1.8h
|
||||
ld1 {v7.8b}, [x1]
|
||||
sqxtun v2.8b, v2.8h
|
||||
sqxtun v3.8b, v3.8h
|
||||
uaddw v4.8h, v16.8h, v4.8b
|
||||
st1 {v0.8b}, [x3], x2
|
||||
uaddw v0.8h, v17.8h, v5.8b
|
||||
st1 {v1.8b}, [x3], x2
|
||||
uaddw v1.8h, v18.8h, v6.8b
|
||||
st1 {v2.8b}, [x3], x2
|
||||
uaddw v2.8h, v19.8h, v7.8b
|
||||
sqxtun v4.8b, v4.8h
|
||||
sqxtun v0.8b, v0.8h
|
||||
st1 {v3.8b}, [x3], x2
|
||||
sqxtun v1.8b, v1.8h
|
||||
sqxtun v2.8b, v2.8h
|
||||
st1 {v4.8b}, [x3], x2
|
||||
st1 {v0.8b}, [x3], x2
|
||||
st1 {v1.8b}, [x3], x2
|
||||
st1 {v2.8b}, [x3]
|
||||
ret
|
||||
endfunc
|
|
@ -25,7 +25,6 @@
|
|||
function ff_imdct_half_neon, export=1
|
||||
sub sp, sp, #32
|
||||
stp x19, x20, [sp]
|
||||
AARCH64_SIGN_LINK_REGISTER
|
||||
str x30, [sp, #16]
|
||||
mov x12, #1
|
||||
ldr w14, [x0, #28] // mdct_bits
|
||||
|
@ -122,7 +121,6 @@ function ff_imdct_half_neon, export=1
|
|||
|
||||
ldp x19, x20, [sp]
|
||||
ldr x30, [sp, #16]
|
||||
AARCH64_VALIDATE_LINK_REGISTER
|
||||
add sp, sp, #32
|
||||
|
||||
ret
|
||||
|
@ -131,7 +129,6 @@ endfunc
|
|||
function ff_imdct_calc_neon, export=1
|
||||
sub sp, sp, #32
|
||||
stp x19, x20, [sp]
|
||||
AARCH64_SIGN_LINK_REGISTER
|
||||
str x30, [sp, #16]
|
||||
ldr w3, [x0, #28] // mdct_bits
|
||||
mov x19, #1
|
||||
|
@ -163,10 +160,8 @@ function ff_imdct_calc_neon, export=1
|
|||
subs x19, x19, #16
|
||||
b.gt 1b
|
||||
|
||||
ldp x19, x20, [sp]
|
||||
ldr x30, [sp, #16]
|
||||
AARCH64_VALIDATE_LINK_REGISTER
|
||||
add sp, sp, #32
|
||||
ldp x19, x20, [sp], #16
|
||||
ldr x30, [sp], #16
|
||||
|
||||
ret
|
||||
endfunc
|
||||
|
@ -175,7 +170,6 @@ endfunc
|
|||
function ff_mdct_calc_neon, export=1
|
||||
sub sp, sp, #32
|
||||
stp x19, x20, [sp]
|
||||
AARCH64_SIGN_LINK_REGISTER
|
||||
str x30, [sp, #16]
|
||||
|
||||
mov x12, #1
|
||||
|
@ -323,10 +317,7 @@ function ff_mdct_calc_neon, export=1
|
|||
st2 {v4.2s,v5.2s}, [x0]
|
||||
st2 {v6.2s,v7.2s}, [x8]
|
||||
|
||||
ldp x19, x20, [sp]
|
||||
ldr x30, [sp, #16]
|
||||
AARCH64_VALIDATE_LINK_REGISTER
|
||||
add sp, sp, #32
|
||||
|
||||
ldp x19, x20, [sp], #16
|
||||
ldr x30, [sp], #16
|
||||
ret
|
||||
endfunc
|
||||
|
|
|
@ -4,55 +4,48 @@
|
|||
## License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
## file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
if not CONFIG['MOZ_FFVPX_AUDIOONLY']:
|
||||
SOURCES += [
|
||||
'fft_init_aarch64.c',
|
||||
'fft_neon.S',
|
||||
'h264chroma_init_aarch64.c',
|
||||
'h264cmc_neon.S',
|
||||
'h264dsp_init_aarch64.c',
|
||||
'h264dsp_neon.S',
|
||||
'h264idct_neon.S',
|
||||
'h264pred_init.c',
|
||||
'h264pred_neon.S',
|
||||
'hpeldsp_init_aarch64.c',
|
||||
'hpeldsp_neon.S',
|
||||
'idctdsp_init_aarch64.c',
|
||||
'mdct_neon.S',
|
||||
'mpegaudiodsp_init.c',
|
||||
'mpegaudiodsp_neon.S',
|
||||
'neon.S',
|
||||
'simple_idct_neon.S',
|
||||
'videodsp.S',
|
||||
'videodsp_init.c',
|
||||
'vp8dsp_init_aarch64.c',
|
||||
'vp8dsp_neon.S',
|
||||
'vp9dsp_init_10bpp_aarch64.c',
|
||||
'vp9dsp_init_12bpp_aarch64.c',
|
||||
'vp9dsp_init_aarch64.c',
|
||||
'vp9itxfm_16bpp_neon.S',
|
||||
'vp9itxfm_neon.S',
|
||||
'vp9lpf_16bpp_neon.S',
|
||||
'vp9lpf_neon.S',
|
||||
'vp9mc_16bpp_neon.S',
|
||||
'vp9mc_aarch64.S',
|
||||
'vp9mc_neon.S',
|
||||
]
|
||||
else:
|
||||
SOURCES += [
|
||||
'fft_init_aarch64.c',
|
||||
'fft_neon.S',
|
||||
'idctdsp_init_aarch64.c',
|
||||
'idctdsp_neon.S',
|
||||
'mpegaudiodsp_init.c',
|
||||
'mpegaudiodsp_neon.S',
|
||||
'simple_idct_neon.S',
|
||||
]
|
||||
SOURCES += [
|
||||
'h264chroma_init_aarch64.c',
|
||||
'h264cmc_neon.S',
|
||||
'h264dsp_init_aarch64.c',
|
||||
'h264dsp_neon.S',
|
||||
'h264idct_neon.S',
|
||||
'h264pred_init.c',
|
||||
'h264pred_neon.S',
|
||||
'hpeldsp_init_aarch64.c',
|
||||
'hpeldsp_neon.S',
|
||||
'idctdsp_init_aarch64.c',
|
||||
'mdct_neon.S',
|
||||
'mpegaudiodsp_init.c',
|
||||
'mpegaudiodsp_neon.S',
|
||||
'neon.S',
|
||||
'simple_idct_neon.S',
|
||||
'videodsp.S',
|
||||
'videodsp_init.c',
|
||||
'vp8dsp_init_aarch64.c',
|
||||
'vp8dsp_neon.S',
|
||||
'vp9dsp_init_10bpp_aarch64.c',
|
||||
'vp9dsp_init_12bpp_aarch64.c',
|
||||
'vp9dsp_init_aarch64.c',
|
||||
'vp9itxfm_16bpp_neon.S',
|
||||
'vp9itxfm_neon.S',
|
||||
'vp9lpf_16bpp_neon.S',
|
||||
'vp9lpf_neon.S',
|
||||
'vp9mc_16bpp_neon.S',
|
||||
'vp9mc_aarch64.S',
|
||||
'vp9mc_neon.S',
|
||||
]
|
||||
|
||||
if CONFIG['OS_ARCH'] == 'WINNT':
|
||||
USE_INTEGRATED_CLANGCL_AS = True
|
||||
DEFINES['EXTERN_ASM'] = ''
|
||||
|
||||
if CONFIG['MOZ_LIBAV_FFT']:
|
||||
SOURCES += [
|
||||
'fft_init_aarch64.c',
|
||||
'fft_neon.S',
|
||||
]
|
||||
|
||||
FINAL_LIBRARY = 'mozavcodec'
|
||||
|
||||
include('/media/ffvpx/ffvpxcommon.mozbuild')
|
||||
|
|
|
@ -109,25 +109,12 @@
|
|||
trn2 \r5\().4H, \r0\().4H, \r1\().4H
|
||||
trn1 \r6\().4H, \r2\().4H, \r3\().4H
|
||||
trn2 \r7\().4H, \r2\().4H, \r3\().4H
|
||||
|
||||
trn1 \r0\().2S, \r4\().2S, \r6\().2S
|
||||
trn2 \r2\().2S, \r4\().2S, \r6\().2S
|
||||
trn1 \r1\().2S, \r5\().2S, \r7\().2S
|
||||
trn2 \r3\().2S, \r5\().2S, \r7\().2S
|
||||
.endm
|
||||
|
||||
.macro transpose_4x8H r0, r1, r2, r3, t4, t5, t6, t7
|
||||
trn1 \t4\().8H, \r0\().8H, \r1\().8H
|
||||
trn2 \t5\().8H, \r0\().8H, \r1\().8H
|
||||
trn1 \t6\().8H, \r2\().8H, \r3\().8H
|
||||
trn2 \t7\().8H, \r2\().8H, \r3\().8H
|
||||
|
||||
trn1 \r0\().4S, \t4\().4S, \t6\().4S
|
||||
trn2 \r2\().4S, \t4\().4S, \t6\().4S
|
||||
trn1 \r1\().4S, \t5\().4S, \t7\().4S
|
||||
trn2 \r3\().4S, \t5\().4S, \t7\().4S
|
||||
.endm
|
||||
|
||||
.macro transpose_8x8H r0, r1, r2, r3, r4, r5, r6, r7, r8, r9
|
||||
trn1 \r8\().8H, \r0\().8H, \r1\().8H
|
||||
trn2 \r9\().8H, \r0\().8H, \r1\().8H
|
||||
|
|
|
@ -58,7 +58,7 @@ endconst
|
|||
.endm
|
||||
|
||||
.macro idct_end
|
||||
ret x10
|
||||
br x10
|
||||
.endm
|
||||
|
||||
.macro smull1 a, b, c
|
||||
|
|
|
@ -21,28 +21,10 @@
|
|||
#include "libavutil/attributes.h"
|
||||
#include "libavutil/cpu.h"
|
||||
#include "libavutil/aarch64/cpu.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
#include "libavcodec/vc1dsp.h"
|
||||
|
||||
#include "config.h"
|
||||
|
||||
void ff_vc1_inv_trans_8x8_neon(int16_t *block);
|
||||
void ff_vc1_inv_trans_8x4_neon(uint8_t *dest, ptrdiff_t stride, int16_t *block);
|
||||
void ff_vc1_inv_trans_4x8_neon(uint8_t *dest, ptrdiff_t stride, int16_t *block);
|
||||
void ff_vc1_inv_trans_4x4_neon(uint8_t *dest, ptrdiff_t stride, int16_t *block);
|
||||
|
||||
void ff_vc1_inv_trans_8x8_dc_neon(uint8_t *dest, ptrdiff_t stride, int16_t *block);
|
||||
void ff_vc1_inv_trans_8x4_dc_neon(uint8_t *dest, ptrdiff_t stride, int16_t *block);
|
||||
void ff_vc1_inv_trans_4x8_dc_neon(uint8_t *dest, ptrdiff_t stride, int16_t *block);
|
||||
void ff_vc1_inv_trans_4x4_dc_neon(uint8_t *dest, ptrdiff_t stride, int16_t *block);
|
||||
|
||||
void ff_vc1_v_loop_filter4_neon(uint8_t *src, ptrdiff_t stride, int pq);
|
||||
void ff_vc1_h_loop_filter4_neon(uint8_t *src, ptrdiff_t stride, int pq);
|
||||
void ff_vc1_v_loop_filter8_neon(uint8_t *src, ptrdiff_t stride, int pq);
|
||||
void ff_vc1_h_loop_filter8_neon(uint8_t *src, ptrdiff_t stride, int pq);
|
||||
void ff_vc1_v_loop_filter16_neon(uint8_t *src, ptrdiff_t stride, int pq);
|
||||
void ff_vc1_h_loop_filter16_neon(uint8_t *src, ptrdiff_t stride, int pq);
|
||||
|
||||
void ff_put_vc1_chroma_mc8_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
|
||||
int h, int x, int y);
|
||||
void ff_avg_vc1_chroma_mc8_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
|
||||
|
@ -52,90 +34,14 @@ void ff_put_vc1_chroma_mc4_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
|
|||
void ff_avg_vc1_chroma_mc4_neon(uint8_t *dst, uint8_t *src, ptrdiff_t stride,
|
||||
int h, int x, int y);
|
||||
|
||||
int ff_vc1_unescape_buffer_helper_neon(const uint8_t *src, int size, uint8_t *dst);
|
||||
|
||||
static int vc1_unescape_buffer_neon(const uint8_t *src, int size, uint8_t *dst)
|
||||
{
|
||||
/* Dealing with starting and stopping, and removing escape bytes, are
|
||||
* comparatively less time-sensitive, so are more clearly expressed using
|
||||
* a C wrapper around the assembly inner loop. Note that we assume a
|
||||
* little-endian machine that supports unaligned loads. */
|
||||
int dsize = 0;
|
||||
while (size >= 4)
|
||||
{
|
||||
int found = 0;
|
||||
while (!found && (((uintptr_t) dst) & 7) && size >= 4)
|
||||
{
|
||||
found = (AV_RL32(src) &~ 0x03000000) == 0x00030000;
|
||||
if (!found)
|
||||
{
|
||||
*dst++ = *src++;
|
||||
--size;
|
||||
++dsize;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
int skip = size - ff_vc1_unescape_buffer_helper_neon(src, size, dst);
|
||||
dst += skip;
|
||||
src += skip;
|
||||
size -= skip;
|
||||
dsize += skip;
|
||||
while (!found && size >= 4)
|
||||
{
|
||||
found = (AV_RL32(src) &~ 0x03000000) == 0x00030000;
|
||||
if (!found)
|
||||
{
|
||||
*dst++ = *src++;
|
||||
--size;
|
||||
++dsize;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (found)
|
||||
{
|
||||
*dst++ = *src++;
|
||||
*dst++ = *src++;
|
||||
++src;
|
||||
size -= 3;
|
||||
dsize += 2;
|
||||
}
|
||||
}
|
||||
while (size > 0)
|
||||
{
|
||||
*dst++ = *src++;
|
||||
--size;
|
||||
++dsize;
|
||||
}
|
||||
return dsize;
|
||||
}
|
||||
|
||||
av_cold void ff_vc1dsp_init_aarch64(VC1DSPContext *dsp)
|
||||
{
|
||||
int cpu_flags = av_get_cpu_flags();
|
||||
|
||||
if (have_neon(cpu_flags)) {
|
||||
dsp->vc1_inv_trans_8x8 = ff_vc1_inv_trans_8x8_neon;
|
||||
dsp->vc1_inv_trans_8x4 = ff_vc1_inv_trans_8x4_neon;
|
||||
dsp->vc1_inv_trans_4x8 = ff_vc1_inv_trans_4x8_neon;
|
||||
dsp->vc1_inv_trans_4x4 = ff_vc1_inv_trans_4x4_neon;
|
||||
dsp->vc1_inv_trans_8x8_dc = ff_vc1_inv_trans_8x8_dc_neon;
|
||||
dsp->vc1_inv_trans_8x4_dc = ff_vc1_inv_trans_8x4_dc_neon;
|
||||
dsp->vc1_inv_trans_4x8_dc = ff_vc1_inv_trans_4x8_dc_neon;
|
||||
dsp->vc1_inv_trans_4x4_dc = ff_vc1_inv_trans_4x4_dc_neon;
|
||||
|
||||
dsp->vc1_v_loop_filter4 = ff_vc1_v_loop_filter4_neon;
|
||||
dsp->vc1_h_loop_filter4 = ff_vc1_h_loop_filter4_neon;
|
||||
dsp->vc1_v_loop_filter8 = ff_vc1_v_loop_filter8_neon;
|
||||
dsp->vc1_h_loop_filter8 = ff_vc1_h_loop_filter8_neon;
|
||||
dsp->vc1_v_loop_filter16 = ff_vc1_v_loop_filter16_neon;
|
||||
dsp->vc1_h_loop_filter16 = ff_vc1_h_loop_filter16_neon;
|
||||
|
||||
dsp->put_no_rnd_vc1_chroma_pixels_tab[0] = ff_put_vc1_chroma_mc8_neon;
|
||||
dsp->avg_no_rnd_vc1_chroma_pixels_tab[0] = ff_avg_vc1_chroma_mc8_neon;
|
||||
dsp->put_no_rnd_vc1_chroma_pixels_tab[1] = ff_put_vc1_chroma_mc4_neon;
|
||||
dsp->avg_no_rnd_vc1_chroma_pixels_tab[1] = ff_avg_vc1_chroma_mc4_neon;
|
||||
|
||||
dsp->vc1_unescape_buffer = vc1_unescape_buffer_neon;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,11 +19,10 @@
|
|||
#include "libavutil/aarch64/asm.S"
|
||||
|
||||
function ff_prefetch_aarch64, export=1
|
||||
1:
|
||||
subs w2, w2, #2
|
||||
prfm pldl1strm, [x0]
|
||||
prfm pldl1strm, [x0, x1]
|
||||
add x0, x0, x1, lsl #1
|
||||
b.gt 1b
|
||||
b.gt X(ff_prefetch_aarch64)
|
||||
ret
|
||||
endfunc
|
||||
|
|
|
@ -1040,7 +1040,7 @@ function \txfm\()16_1d_4x16_pass1_neon
|
|||
.irp i, 16, 20, 24, 28, 17, 21, 25, 29, 18, 22, 26, 30, 19, 23, 27, 31
|
||||
store \i, x0, #16
|
||||
.endr
|
||||
ret x14
|
||||
br x14
|
||||
1:
|
||||
// Special case: For the last input column (x1 == 12),
|
||||
// which would be stored as the last row in the temp buffer,
|
||||
|
@ -1068,7 +1068,7 @@ function \txfm\()16_1d_4x16_pass1_neon
|
|||
mov v29.16b, v17.16b
|
||||
mov v30.16b, v18.16b
|
||||
mov v31.16b, v19.16b
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
// Read a vertical 4x16 slice out of a 16x16 matrix, do a transform on it,
|
||||
|
@ -1098,7 +1098,7 @@ function \txfm\()16_1d_4x16_pass2_neon
|
|||
load_add_store v16.4s, v17.4s, v18.4s, v19.4s, v20.4s, v21.4s, v22.4s, v23.4s
|
||||
load_add_store v24.4s, v25.4s, v26.4s, v27.4s, v28.4s, v29.4s, v30.4s, v31.4s
|
||||
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -1208,7 +1208,7 @@ function vp9_\txfm1\()_\txfm2\()_16x16_add_16_neon
|
|||
ldp d12, d13, [sp], 0x10
|
||||
ldp d14, d15, [sp], 0x10
|
||||
.endif
|
||||
ret x15
|
||||
br x15
|
||||
endfunc
|
||||
|
||||
function ff_vp9_\txfm1\()_\txfm2\()_16x16_add_10_neon, export=1
|
||||
|
@ -1264,7 +1264,7 @@ function idct16_1d_4x16_pass1_quarter_neon
|
|||
st1 {v23.4s}, [x0], #16
|
||||
st1 {v27.4s}, [x0], #16
|
||||
st1 {v31.4s}, [x0], #16
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
function idct16_1d_4x16_pass2_quarter_neon
|
||||
|
@ -1286,7 +1286,7 @@ function idct16_1d_4x16_pass2_quarter_neon
|
|||
load_add_store v16.4s, v17.4s, v18.4s, v19.4s, v20.4s, v21.4s, v22.4s, v23.4s
|
||||
load_add_store v24.4s, v25.4s, v26.4s, v27.4s, v28.4s, v29.4s, v30.4s, v31.4s
|
||||
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
function idct16_1d_4x16_pass1_half_neon
|
||||
|
@ -1313,7 +1313,7 @@ function idct16_1d_4x16_pass1_half_neon
|
|||
.irp i, 16, 20, 24, 28, 17, 21, 25, 29, 18, 22, 26, 30, 19, 23, 27, 31
|
||||
store \i, x0, #16
|
||||
.endr
|
||||
ret x14
|
||||
br x14
|
||||
1:
|
||||
// Special case: For the second input column (r1 == 4),
|
||||
// which would be stored as the second row in the temp buffer,
|
||||
|
@ -1341,7 +1341,7 @@ function idct16_1d_4x16_pass1_half_neon
|
|||
mov v21.16b, v17.16b
|
||||
mov v22.16b, v18.16b
|
||||
mov v23.16b, v19.16b
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
function idct16_1d_4x16_pass2_half_neon
|
||||
|
@ -1364,7 +1364,7 @@ function idct16_1d_4x16_pass2_half_neon
|
|||
load_add_store v16.4s, v17.4s, v18.4s, v19.4s, v20.4s, v21.4s, v22.4s, v23.4s
|
||||
load_add_store v24.4s, v25.4s, v26.4s, v27.4s, v28.4s, v29.4s, v30.4s, v31.4s
|
||||
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
.macro idct16_partial size
|
||||
|
@ -1390,7 +1390,7 @@ function idct16x16_\size\()_add_16_neon
|
|||
|
||||
add sp, sp, #1024
|
||||
ldp d8, d9, [sp], 0x10
|
||||
ret x15
|
||||
br x15
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -1729,7 +1729,7 @@ function idct32_1d_4x32_pass1\suffix\()_neon
|
|||
store_rev v29.4s, v25.4s, v21.4s, v17.4s, v29.16b, v25.16b
|
||||
store_rev v28.4s, v24.4s, v20.4s, v16.4s, v28.16b, v24.16b
|
||||
.purgem store_rev
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
// This is mostly the same as 4x32_pass1, but without the transpose,
|
||||
|
@ -1849,7 +1849,7 @@ function idct32_1d_4x32_pass2\suffix\()_neon
|
|||
load_acc_store v24.4s, v25.4s, v26.4s, v27.4s, 1
|
||||
load_acc_store v28.4s, v29.4s, v30.4s, v31.4s, 1
|
||||
.purgem load_acc_store
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -1943,7 +1943,7 @@ function vp9_idct_idct_32x32_add_16_neon
|
|||
ldp d10, d11, [sp], 0x10
|
||||
ldp d8, d9, [sp], 0x10
|
||||
|
||||
ret x15
|
||||
br x15
|
||||
endfunc
|
||||
|
||||
function ff_vp9_idct_idct_32x32_add_10_neon, export=1
|
||||
|
@ -2009,7 +2009,7 @@ function idct32x32_\size\()_add_16_neon
|
|||
ldp d10, d11, [sp], 0x10
|
||||
ldp d8, d9, [sp], 0x10
|
||||
|
||||
ret x15
|
||||
br x15
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
|
|
@ -787,7 +787,7 @@ function \txfm\()16_1d_8x16_pass1_neon
|
|||
.irp i, 16, 24, 17, 25, 18, 26, 19, 27, 20, 28, 21, 29, 22, 30, 23, 31
|
||||
store \i, x0, #16
|
||||
.endr
|
||||
ret x14
|
||||
br x14
|
||||
1:
|
||||
// Special case: For the last input column (x1 == 8),
|
||||
// which would be stored as the last row in the temp buffer,
|
||||
|
@ -806,7 +806,7 @@ function \txfm\()16_1d_8x16_pass1_neon
|
|||
mov v29.16b, v21.16b
|
||||
mov v30.16b, v22.16b
|
||||
mov v31.16b, v23.16b
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
// Read a vertical 8x16 slice out of a 16x16 matrix, do a transform on it,
|
||||
|
@ -834,7 +834,7 @@ function \txfm\()16_1d_8x16_pass2_neon
|
|||
load_add_store v16.8h, v17.8h, v18.8h, v19.8h, v20.8h, v21.8h, v22.8h, v23.8h, v16.8b, v17.8b
|
||||
load_add_store v24.8h, v25.8h, v26.8h, v27.8h, v28.8h, v29.8h, v30.8h, v31.8h, v16.8b, v17.8b
|
||||
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -925,7 +925,7 @@ function ff_vp9_\txfm1\()_\txfm2\()_16x16_add_neon, export=1
|
|||
ldp d12, d13, [sp], 0x10
|
||||
ldp d14, d15, [sp], 0x10
|
||||
.endif
|
||||
ret x15
|
||||
br x15
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -960,7 +960,7 @@ function idct16_1d_8x16_pass1_quarter_neon
|
|||
.irp i, 24, 25, 26, 27
|
||||
store \i, x0, x9
|
||||
.endr
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
function idct16_1d_8x16_pass2_quarter_neon
|
||||
|
@ -978,7 +978,7 @@ function idct16_1d_8x16_pass2_quarter_neon
|
|||
load_add_store v16.8h, v17.8h, v18.8h, v19.8h, v20.8h, v21.8h, v22.8h, v23.8h, v16.8b, v17.8b
|
||||
load_add_store v24.8h, v25.8h, v26.8h, v27.8h, v28.8h, v29.8h, v30.8h, v31.8h, v16.8b, v17.8b
|
||||
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
function idct16_1d_8x16_pass1_half_neon
|
||||
|
@ -1003,7 +1003,7 @@ function idct16_1d_8x16_pass1_half_neon
|
|||
.irp i, 24, 25, 26, 27, 28, 29, 30, 31
|
||||
store \i, x0, x9
|
||||
.endr
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
function idct16_1d_8x16_pass2_half_neon
|
||||
|
@ -1021,7 +1021,7 @@ function idct16_1d_8x16_pass2_half_neon
|
|||
load_add_store v16.8h, v17.8h, v18.8h, v19.8h, v20.8h, v21.8h, v22.8h, v23.8h, v16.8b, v17.8b
|
||||
load_add_store v24.8h, v25.8h, v26.8h, v27.8h, v28.8h, v29.8h, v30.8h, v31.8h, v16.8b, v17.8b
|
||||
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
.macro idct16_partial size
|
||||
|
@ -1038,7 +1038,7 @@ function idct16x16_\size\()_add_neon
|
|||
.endr
|
||||
|
||||
add sp, sp, #512
|
||||
ret x15
|
||||
br x15
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -1349,7 +1349,7 @@ function idct32_1d_8x32_pass1\suffix\()_neon
|
|||
store_rev v25.8h, v17.8h
|
||||
store_rev v24.8h, v16.8h
|
||||
.purgem store_rev
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
|
||||
// This is mostly the same as 8x32_pass1, but without the transpose,
|
||||
|
@ -1466,7 +1466,7 @@ function idct32_1d_8x32_pass2\suffix\()_neon
|
|||
load_acc_store v24.8h, v25.8h, v26.8h, v27.8h, 1
|
||||
load_acc_store v28.8h, v29.8h, v30.8h, v31.8h, 1
|
||||
.purgem load_acc_store
|
||||
ret x14
|
||||
br x14
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -1547,7 +1547,7 @@ function ff_vp9_idct_idct_32x32_add_neon, export=1
|
|||
ldp d8, d9, [sp], 0x10
|
||||
ldp d10, d11, [sp], 0x10
|
||||
|
||||
ret x15
|
||||
br x15
|
||||
endfunc
|
||||
|
||||
.macro idct32_partial size
|
||||
|
@ -1572,7 +1572,7 @@ function idct32x32_\size\()_add_neon
|
|||
ldp d8, d9, [sp], 0x10
|
||||
ldp d10, d11, [sp], 0x10
|
||||
|
||||
ret x15
|
||||
br x15
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
|
|
@ -22,6 +22,18 @@
|
|||
#include "neon.S"
|
||||
|
||||
|
||||
.macro transpose_4x8H r0, r1, r2, r3, t4, t5, t6, t7
|
||||
trn1 \t4\().8h, \r0\().8h, \r1\().8h
|
||||
trn2 \t5\().8h, \r0\().8h, \r1\().8h
|
||||
trn1 \t6\().8h, \r2\().8h, \r3\().8h
|
||||
trn2 \t7\().8h, \r2\().8h, \r3\().8h
|
||||
|
||||
trn1 \r0\().4s, \t4\().4s, \t6\().4s
|
||||
trn2 \r2\().4s, \t4\().4s, \t6\().4s
|
||||
trn1 \r1\().4s, \t5\().4s, \t7\().4s
|
||||
trn2 \r3\().4s, \t5\().4s, \t7\().4s
|
||||
.endm
|
||||
|
||||
// The input to and output from this macro is in the registers v16-v31,
|
||||
// and v0-v7 are used as scratch registers.
|
||||
// p7 = v16 .. p3 = v20, p0 = v23, q0 = v24, q3 = v27, q7 = v31
|
||||
|
@ -57,7 +69,7 @@
|
|||
mov x12, v4.d[1]
|
||||
adds x11, x11, x12
|
||||
b.ne 1f
|
||||
ret x10
|
||||
br x10
|
||||
1:
|
||||
|
||||
.if \wd >= 8
|
||||
|
@ -193,7 +205,7 @@
|
|||
b.eq 6f
|
||||
.else
|
||||
b.ne 1f
|
||||
ret x13
|
||||
br x13
|
||||
1:
|
||||
.endif
|
||||
|
||||
|
@ -252,7 +264,7 @@
|
|||
b.ne 1f
|
||||
// If no pixels needed flat8in nor flat8out, jump to a
|
||||
// writeout of the inner 4 pixels
|
||||
ret x14
|
||||
br x14
|
||||
1:
|
||||
|
||||
mov x11, v7.d[0]
|
||||
|
@ -260,7 +272,7 @@
|
|||
adds x11, x11, x12
|
||||
b.ne 1f
|
||||
// If no pixels need flat8out, jump to a writeout of the inner 6 pixels
|
||||
ret x15
|
||||
br x15
|
||||
|
||||
1:
|
||||
// flat8out
|
||||
|
@ -434,7 +446,7 @@ function ff_\func\()_\bpp\()_neon, export=1
|
|||
ldp d10, d11, [sp], 0x10
|
||||
ldp d12, d13, [sp], 0x10
|
||||
ldp d14, d15, [sp], 0x10
|
||||
ret x16
|
||||
br x16
|
||||
.else
|
||||
b \func\()_16_neon
|
||||
.endif
|
||||
|
@ -474,7 +486,7 @@ function ff_\func\()_\suffix\()_\bpp\()_neon, export=1
|
|||
ldp d12, d13, [sp], 0x10
|
||||
ldp d14, d15, [sp], 0x10
|
||||
.endif
|
||||
ret x16
|
||||
br x16
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -508,7 +520,7 @@ function ff_vp9_loop_filter_\dir\()_\wd1\()\wd2\()_16_\bpp\()_neon, export=1
|
|||
lsl w3, w14, #\bpp - 8
|
||||
lsl w4, w15, #\bpp - 8
|
||||
bl vp9_loop_filter_\dir\()_\wd2\()_8_16_neon
|
||||
ret x16
|
||||
br x16
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -541,7 +553,7 @@ function vp9_loop_filter_v_4_8_16_neon
|
|||
st1 {v25.8h}, [x0], x1
|
||||
sub x0, x0, x1, lsl #1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
bpp_frontends vp9_loop_filter_v_4_8
|
||||
|
@ -589,7 +601,7 @@ function vp9_loop_filter_h_4_8_16_neon
|
|||
sub x0, x0, x1, lsl #3
|
||||
add x0, x0, #4
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
bpp_frontends vp9_loop_filter_h_4_8
|
||||
|
@ -620,7 +632,7 @@ function vp9_loop_filter_v_8_8_16_neon
|
|||
sub x0, x0, x1, lsl #1
|
||||
sub x0, x0, x1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
6:
|
||||
sub x9, x0, x1, lsl #1
|
||||
st1 {v22.8h}, [x9], x1
|
||||
|
@ -628,7 +640,7 @@ function vp9_loop_filter_v_8_8_16_neon
|
|||
st1 {v23.8h}, [x9], x1
|
||||
st1 {v25.8h}, [x0], x1
|
||||
sub x0, x0, x1, lsl #1
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
bpp_frontends vp9_loop_filter_v_8_8
|
||||
|
@ -671,7 +683,7 @@ function vp9_loop_filter_h_8_8_16_neon
|
|||
sub x0, x0, x1, lsl #3
|
||||
add x0, x0, #8
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
6:
|
||||
// If we didn't need to do the flat8in part, we use the same writeback
|
||||
// as in loop_filter_h_4_8.
|
||||
|
@ -688,7 +700,7 @@ function vp9_loop_filter_h_8_8_16_neon
|
|||
st1 {v25.d}[1], [x0], x1
|
||||
sub x0, x0, x1, lsl #3
|
||||
add x0, x0, #4
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
bpp_frontends vp9_loop_filter_h_8_8
|
||||
|
@ -743,7 +755,7 @@ function vp9_loop_filter_v_16_8_16_neon
|
|||
sub x0, x0, x1, lsl #3
|
||||
add x0, x0, x1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
8:
|
||||
add x9, x9, x1, lsl #2
|
||||
// If we didn't do the flat8out part, the output is left in the
|
||||
|
@ -756,7 +768,7 @@ function vp9_loop_filter_v_16_8_16_neon
|
|||
st1 {v26.8h}, [x0], x1
|
||||
sub x0, x0, x1, lsl #1
|
||||
sub x0, x0, x1
|
||||
ret x10
|
||||
br x10
|
||||
7:
|
||||
sub x9, x0, x1, lsl #1
|
||||
st1 {v22.8h}, [x9], x1
|
||||
|
@ -764,7 +776,7 @@ function vp9_loop_filter_v_16_8_16_neon
|
|||
st1 {v23.8h}, [x9], x1
|
||||
st1 {v25.8h}, [x0], x1
|
||||
sub x0, x0, x1, lsl #1
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
bpp_frontends vp9_loop_filter_v_16_8, push=1
|
||||
|
@ -821,7 +833,7 @@ function vp9_loop_filter_h_16_8_16_neon
|
|||
st1 {v31.8h}, [x0], x1
|
||||
sub x0, x0, x1, lsl #3
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
8:
|
||||
// The same writeback as in loop_filter_h_8_8
|
||||
sub x9, x0, #8
|
||||
|
@ -838,7 +850,7 @@ function vp9_loop_filter_h_16_8_16_neon
|
|||
st1 {v27.8h}, [x0], x1
|
||||
sub x0, x0, x1, lsl #3
|
||||
add x0, x0, #8
|
||||
ret x10
|
||||
br x10
|
||||
7:
|
||||
// The same writeback as in loop_filter_h_4_8
|
||||
sub x9, x0, #4
|
||||
|
@ -854,7 +866,7 @@ function vp9_loop_filter_h_16_8_16_neon
|
|||
st1 {v25.d}[1], [x0], x1
|
||||
sub x0, x0, x1, lsl #3
|
||||
add x0, x0, #4
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
bpp_frontends vp9_loop_filter_h_16_8, push=1
|
||||
|
|
|
@ -399,7 +399,7 @@
|
|||
.endif
|
||||
// If no pixels needed flat8in nor flat8out, jump to a
|
||||
// writeout of the inner 4 pixels
|
||||
ret x14
|
||||
br x14
|
||||
1:
|
||||
|
||||
mov x5, v7.d[0]
|
||||
|
@ -411,7 +411,7 @@
|
|||
cbnz x5, 1f
|
||||
.endif
|
||||
// If no pixels need flat8out, jump to a writeout of the inner 6 pixels
|
||||
ret x15
|
||||
br x15
|
||||
|
||||
1:
|
||||
// flat8out
|
||||
|
@ -532,32 +532,32 @@ function vp9_loop_filter_4
|
|||
loop_filter 4, .8b, 0, v16, v17, v18, v19, v28, v29, v30, v31
|
||||
ret
|
||||
9:
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
function vp9_loop_filter_4_16b_mix_44
|
||||
loop_filter 4, .16b, 44, v16, v17, v18, v19, v28, v29, v30, v31
|
||||
ret
|
||||
9:
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
function vp9_loop_filter_8
|
||||
loop_filter 8, .8b, 0, v16, v17, v18, v19, v28, v29, v30, v31
|
||||
ret
|
||||
6:
|
||||
ret x13
|
||||
br x13
|
||||
9:
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
function vp9_loop_filter_8_16b_mix
|
||||
loop_filter 8, .16b, 88, v16, v17, v18, v19, v28, v29, v30, v31
|
||||
ret
|
||||
6:
|
||||
ret x13
|
||||
br x13
|
||||
9:
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
function vp9_loop_filter_16
|
||||
|
@ -568,7 +568,7 @@ function vp9_loop_filter_16
|
|||
ldp d10, d11, [sp], 0x10
|
||||
ldp d12, d13, [sp], 0x10
|
||||
ldp d14, d15, [sp], 0x10
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
function vp9_loop_filter_16_16b
|
||||
|
@ -579,7 +579,7 @@ function vp9_loop_filter_16_16b
|
|||
ldp d10, d11, [sp], 0x10
|
||||
ldp d12, d13, [sp], 0x10
|
||||
ldp d14, d15, [sp], 0x10
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
.macro loop_filter_4
|
||||
|
@ -648,7 +648,7 @@ function ff_vp9_loop_filter_v_4_8_neon, export=1
|
|||
st1 {v23.8b}, [x9], x1
|
||||
st1 {v25.8b}, [x0], x1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
function ff_vp9_loop_filter_v_44_16_neon, export=1
|
||||
|
@ -672,7 +672,7 @@ function ff_vp9_loop_filter_v_44_16_neon, export=1
|
|||
st1 {v23.16b}, [x9], x1
|
||||
st1 {v25.16b}, [x0], x1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
function ff_vp9_loop_filter_h_4_8_neon, export=1
|
||||
|
@ -714,7 +714,7 @@ function ff_vp9_loop_filter_h_4_8_neon, export=1
|
|||
st1 {v25.s}[0], [x9], x1
|
||||
st1 {v25.s}[1], [x0], x1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
function ff_vp9_loop_filter_h_44_16_neon, export=1
|
||||
|
@ -766,7 +766,7 @@ function ff_vp9_loop_filter_h_44_16_neon, export=1
|
|||
st1 {v25.s}[1], [x9], x1
|
||||
st1 {v25.s}[3], [x0], x1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
function ff_vp9_loop_filter_v_8_8_neon, export=1
|
||||
|
@ -793,14 +793,14 @@ function ff_vp9_loop_filter_v_8_8_neon, export=1
|
|||
st1 {v23.8b}, [x9], x1
|
||||
st1 {v26.8b}, [x0], x1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
6:
|
||||
sub x9, x0, x1, lsl #1
|
||||
st1 {v22.8b}, [x9], x1
|
||||
st1 {v24.8b}, [x0], x1
|
||||
st1 {v23.8b}, [x9], x1
|
||||
st1 {v25.8b}, [x0], x1
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
.macro mix_v_16 mix
|
||||
|
@ -828,14 +828,14 @@ function ff_vp9_loop_filter_v_\mix\()_16_neon, export=1
|
|||
st1 {v23.16b}, [x9], x1
|
||||
st1 {v26.16b}, [x0], x1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
6:
|
||||
sub x9, x0, x1, lsl #1
|
||||
st1 {v22.16b}, [x9], x1
|
||||
st1 {v24.16b}, [x0], x1
|
||||
st1 {v23.16b}, [x9], x1
|
||||
st1 {v25.16b}, [x0], x1
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -876,7 +876,7 @@ function ff_vp9_loop_filter_h_8_8_neon, export=1
|
|||
st1 {v23.8b}, [x9], x1
|
||||
st1 {v27.8b}, [x0], x1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
6:
|
||||
// If we didn't need to do the flat8in part, we use the same writeback
|
||||
// as in loop_filter_h_4_8.
|
||||
|
@ -891,7 +891,7 @@ function ff_vp9_loop_filter_h_8_8_neon, export=1
|
|||
st1 {v24.s}[1], [x0], x1
|
||||
st1 {v25.s}[0], [x9], x1
|
||||
st1 {v25.s}[1], [x0], x1
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
|
||||
.macro mix_h_16 mix
|
||||
|
@ -942,7 +942,7 @@ function ff_vp9_loop_filter_h_\mix\()_16_neon, export=1
|
|||
st1 {v27.8b}, [x9], x1
|
||||
st1 {v27.d}[1], [x0], x1
|
||||
|
||||
ret x10
|
||||
br x10
|
||||
6:
|
||||
add x9, x9, #2
|
||||
add x0, x0, #2
|
||||
|
@ -963,7 +963,7 @@ function ff_vp9_loop_filter_h_\mix\()_16_neon, export=1
|
|||
st1 {v24.s}[3], [x0], x1
|
||||
st1 {v25.s}[1], [x9], x1
|
||||
st1 {v25.s}[3], [x0], x1
|
||||
ret x10
|
||||
br x10
|
||||
endfunc
|
||||
.endm
|
||||
|
||||
|
@ -1022,7 +1022,7 @@ function ff_vp9_loop_filter_v_16_8_neon, export=1
|
|||
ldp d10, d11, [sp], 0x10
|
||||
ldp d12, d13, [sp], 0x10
|
||||
ldp d14, d15, [sp], 0x10
|
||||
ret x10
|
||||
br x10
|
||||
8:
|
||||
add x9, x9, x1, lsl #2
|
||||
// If we didn't do the flat8out part, the output is left in the
|
||||
|
@ -1091,7 +1091,7 @@ function ff_vp9_loop_filter_v_16_16_neon, export=1
|
|||
ldp d10, d11, [sp], 0x10
|
||||
ldp d12, d13, [sp], 0x10
|
||||
ldp d14, d15, [sp], 0x10
|
||||
ret x10
|
||||
br x10
|
||||
8:
|
||||
add x9, x9, x1, lsl #2
|
||||
st1 {v21.16b}, [x9], x1
|
||||
|
@ -1168,7 +1168,7 @@ function ff_vp9_loop_filter_h_16_8_neon, export=1
|
|||
ldp d10, d11, [sp], 0x10
|
||||
ldp d12, d13, [sp], 0x10
|
||||
ldp d14, d15, [sp], 0x10
|
||||
ret x10
|
||||
br x10
|
||||
8:
|
||||
// The same writeback as in loop_filter_h_8_8
|
||||
sub x9, x0, #4
|
||||
|
@ -1287,7 +1287,7 @@ function ff_vp9_loop_filter_h_16_16_neon, export=1
|
|||
ldp d10, d11, [sp], 0x10
|
||||
ldp d12, d13, [sp], 0x10
|
||||
ldp d14, d15, [sp], 0x10
|
||||
ret x10
|
||||
br x10
|
||||
8:
|
||||
sub x9, x0, #4
|
||||
add x0, x9, x1, lsl #3
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -18,10 +18,8 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "libavutil/attributes.h"
|
||||
#include "libavcodec/flacdsp.h"
|
||||
#include "config.h"
|
||||
#include "config_components.h"
|
||||
|
||||
void ff_flac_lpc_16_arm(int32_t *samples, const int coeffs[32], int order,
|
||||
int qlevel, int len);
|
||||
|
|
|
@ -73,7 +73,7 @@ int ff_parse_a53_cc(AVBufferRef **pbuf, const uint8_t *data, int size)
|
|||
int ret, cc_count;
|
||||
|
||||
if (size < 3)
|
||||
return AVERROR_INVALIDDATA;
|
||||
return AVERROR(EINVAL);
|
||||
|
||||
ret = init_get_bits8(&gb, data, size);
|
||||
if (ret < 0)
|
||||
|
@ -95,12 +95,12 @@ int ff_parse_a53_cc(AVBufferRef **pbuf, const uint8_t *data, int size)
|
|||
|
||||
/* 3 bytes per CC plus one byte marker_bits at the end */
|
||||
if (cc_count * 3 >= (get_bits_left(&gb) >> 3))
|
||||
return AVERROR_INVALIDDATA;
|
||||
return AVERROR(EINVAL);
|
||||
|
||||
new_size = (old_size + cc_count * 3);
|
||||
|
||||
if (new_size > INT_MAX)
|
||||
return AVERROR_INVALIDDATA;
|
||||
return AVERROR(EINVAL);
|
||||
|
||||
/* Allow merging of the cc data from two fields. */
|
||||
ret = av_buffer_realloc(pbuf, new_size);
|
||||
|
|
|
@ -114,13 +114,6 @@ enum {
|
|||
AV1_WARP_MODEL_TRANSLATION = 1,
|
||||
AV1_WARP_MODEL_ROTZOOM = 2,
|
||||
AV1_WARP_MODEL_AFFINE = 3,
|
||||
AV1_WARP_PARAM_REDUCE_BITS = 6,
|
||||
|
||||
AV1_DIV_LUT_BITS = 8,
|
||||
AV1_DIV_LUT_PREC_BITS = 14,
|
||||
AV1_DIV_LUT_NUM = 257,
|
||||
|
||||
AV1_MAX_LOOP_FILTER = 63,
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -21,14 +21,10 @@
|
|||
#ifndef AVCODEC_AV1_PARSE_H
|
||||
#define AVCODEC_AV1_PARSE_H
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/error.h"
|
||||
#include "libavutil/intmath.h"
|
||||
#include "libavutil/macros.h"
|
||||
|
||||
#include "av1.h"
|
||||
#include "avcodec.h"
|
||||
#include "get_bits.h"
|
||||
|
||||
// OBU header fields + max leb128 length
|
||||
|
|
|
@ -20,9 +20,10 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "libavutil/avassert.h"
|
||||
#include "av1_parse.h"
|
||||
#include "cbs.h"
|
||||
#include "cbs_av1.h"
|
||||
#include "internal.h"
|
||||
#include "parser.h"
|
||||
|
||||
typedef struct AV1ParseContext {
|
||||
|
@ -55,9 +56,9 @@ static int av1_parser_parse(AVCodecParserContext *ctx,
|
|||
{
|
||||
AV1ParseContext *s = ctx->priv_data;
|
||||
CodedBitstreamFragment *td = &s->temporal_unit;
|
||||
const CodedBitstreamAV1Context *av1 = s->cbc->priv_data;
|
||||
const AV1RawSequenceHeader *seq;
|
||||
const AV1RawColorConfig *color;
|
||||
CodedBitstreamAV1Context *av1 = s->cbc->priv_data;
|
||||
AV1RawSequenceHeader *seq;
|
||||
AV1RawColorConfig *color;
|
||||
int ret;
|
||||
|
||||
*out_data = data;
|
||||
|
@ -95,9 +96,9 @@ static int av1_parser_parse(AVCodecParserContext *ctx,
|
|||
color = &seq->color_config;
|
||||
|
||||
for (int i = 0; i < td->nb_units; i++) {
|
||||
const CodedBitstreamUnit *unit = &td->units[i];
|
||||
const AV1RawOBU *obu = unit->content;
|
||||
const AV1RawFrameHeader *frame;
|
||||
CodedBitstreamUnit *unit = &td->units[i];
|
||||
AV1RawOBU *obu = unit->content;
|
||||
AV1RawFrameHeader *frame;
|
||||
|
||||
if (unit->type == AV1_OBU_FRAME)
|
||||
frame = &obu->obu.frame.header;
|
||||
|
@ -204,10 +205,33 @@ static void av1_parser_close(AVCodecParserContext *ctx)
|
|||
ff_cbs_close(&s->cbc);
|
||||
}
|
||||
|
||||
const AVCodecParser ff_av1_parser = {
|
||||
static int av1_parser_split(AVCodecContext *avctx,
|
||||
const uint8_t *buf, int buf_size)
|
||||
{
|
||||
AV1OBU obu;
|
||||
const uint8_t *ptr = buf, *end = buf + buf_size;
|
||||
|
||||
while (ptr < end) {
|
||||
int len = ff_av1_extract_obu(&obu, ptr, buf_size, avctx);
|
||||
if (len < 0)
|
||||
break;
|
||||
|
||||
if (obu.type == AV1_OBU_FRAME_HEADER ||
|
||||
obu.type == AV1_OBU_FRAME) {
|
||||
return ptr - buf;
|
||||
}
|
||||
ptr += len;
|
||||
buf_size -= len;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
AVCodecParser ff_av1_parser = {
|
||||
.codec_ids = { AV_CODEC_ID_AV1 },
|
||||
.priv_data_size = sizeof(AV1ParseContext),
|
||||
.parser_init = av1_parser_init,
|
||||
.parser_close = av1_parser_close,
|
||||
.parser_parse = av1_parser_parse,
|
||||
.split = av1_parser_split,
|
||||
};
|
||||
|
|
|
@ -18,47 +18,15 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "config_components.h"
|
||||
|
||||
#include "libavutil/film_grain_params.h"
|
||||
#include "libavutil/pixdesc.h"
|
||||
#include "libavutil/opt.h"
|
||||
#include "avcodec.h"
|
||||
#include "av1dec.h"
|
||||
#include "bytestream.h"
|
||||
#include "codec_internal.h"
|
||||
#include "hwconfig.h"
|
||||
#include "internal.h"
|
||||
#include "profiles.h"
|
||||
#include "thread.h"
|
||||
|
||||
/**< same with Div_Lut defined in spec 7.11.3.7 */
|
||||
static const uint16_t div_lut[AV1_DIV_LUT_NUM] = {
|
||||
16384, 16320, 16257, 16194, 16132, 16070, 16009, 15948, 15888, 15828, 15768,
|
||||
15709, 15650, 15592, 15534, 15477, 15420, 15364, 15308, 15252, 15197, 15142,
|
||||
15087, 15033, 14980, 14926, 14873, 14821, 14769, 14717, 14665, 14614, 14564,
|
||||
14513, 14463, 14413, 14364, 14315, 14266, 14218, 14170, 14122, 14075, 14028,
|
||||
13981, 13935, 13888, 13843, 13797, 13752, 13707, 13662, 13618, 13574, 13530,
|
||||
13487, 13443, 13400, 13358, 13315, 13273, 13231, 13190, 13148, 13107, 13066,
|
||||
13026, 12985, 12945, 12906, 12866, 12827, 12788, 12749, 12710, 12672, 12633,
|
||||
12596, 12558, 12520, 12483, 12446, 12409, 12373, 12336, 12300, 12264, 12228,
|
||||
12193, 12157, 12122, 12087, 12053, 12018, 11984, 11950, 11916, 11882, 11848,
|
||||
11815, 11782, 11749, 11716, 11683, 11651, 11619, 11586, 11555, 11523, 11491,
|
||||
11460, 11429, 11398, 11367, 11336, 11305, 11275, 11245, 11215, 11185, 11155,
|
||||
11125, 11096, 11067, 11038, 11009, 10980, 10951, 10923, 10894, 10866, 10838,
|
||||
10810, 10782, 10755, 10727, 10700, 10673, 10645, 10618, 10592, 10565, 10538,
|
||||
10512, 10486, 10460, 10434, 10408, 10382, 10356, 10331, 10305, 10280, 10255,
|
||||
10230, 10205, 10180, 10156, 10131, 10107, 10082, 10058, 10034, 10010, 9986,
|
||||
9963, 9939, 9916, 9892, 9869, 9846, 9823, 9800, 9777, 9754, 9732,
|
||||
9709, 9687, 9664, 9642, 9620, 9598, 9576, 9554, 9533, 9511, 9489,
|
||||
9468, 9447, 9425, 9404, 9383, 9362, 9341, 9321, 9300, 9279, 9259,
|
||||
9239, 9218, 9198, 9178, 9158, 9138, 9118, 9098, 9079, 9059, 9039,
|
||||
9020, 9001, 8981, 8962, 8943, 8924, 8905, 8886, 8867, 8849, 8830,
|
||||
8812, 8793, 8775, 8756, 8738, 8720, 8702, 8684, 8666, 8648, 8630,
|
||||
8613, 8595, 8577, 8560, 8542, 8525, 8508, 8490, 8473, 8456, 8439,
|
||||
8422, 8405, 8389, 8372, 8355, 8339, 8322, 8306, 8289, 8273, 8257,
|
||||
8240, 8224, 8208, 8192
|
||||
};
|
||||
|
||||
static uint32_t inverse_recenter(int r, uint32_t v)
|
||||
{
|
||||
|
@ -129,70 +97,6 @@ static void read_global_param(AV1DecContext *s, int type, int ref, int idx)
|
|||
-mx, mx + 1, r) << prec_diff) + round;
|
||||
}
|
||||
|
||||
static uint64_t round_two(uint64_t x, uint16_t n)
|
||||
{
|
||||
if (n == 0)
|
||||
return x;
|
||||
return ((x + ((uint64_t)1 << (n - 1))) >> n);
|
||||
}
|
||||
|
||||
static int64_t round_two_signed(int64_t x, uint16_t n)
|
||||
{
|
||||
return ((x<0) ? -((int64_t)round_two(-x, n)) : (int64_t)round_two(x, n));
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve divisor process.
|
||||
* see spec 7.11.3.7
|
||||
*/
|
||||
static int16_t resolve_divisor(uint32_t d, uint16_t *shift)
|
||||
{
|
||||
int32_t e, f;
|
||||
|
||||
*shift = av_log2(d);
|
||||
e = d - (1 << (*shift));
|
||||
if (*shift > AV1_DIV_LUT_BITS)
|
||||
f = round_two(e, *shift - AV1_DIV_LUT_BITS);
|
||||
else
|
||||
f = e << (AV1_DIV_LUT_BITS - (*shift));
|
||||
|
||||
*shift += AV1_DIV_LUT_PREC_BITS;
|
||||
|
||||
return div_lut[f];
|
||||
}
|
||||
|
||||
/**
|
||||
* check if global motion params is valid.
|
||||
* see spec 7.11.3.6
|
||||
*/
|
||||
static uint8_t get_shear_params_valid(AV1DecContext *s, int idx)
|
||||
{
|
||||
int16_t alpha, beta, gamma, delta, divf, divs;
|
||||
int64_t v, w;
|
||||
int32_t *param = &s->cur_frame.gm_params[idx][0];
|
||||
if (param[2] < 0)
|
||||
return 0;
|
||||
|
||||
alpha = av_clip_int16(param[2] - (1 << AV1_WARPEDMODEL_PREC_BITS));
|
||||
beta = av_clip_int16(param[3]);
|
||||
divf = resolve_divisor(abs(param[2]), &divs);
|
||||
v = (int64_t)param[4] * (1 << AV1_WARPEDMODEL_PREC_BITS);
|
||||
w = (int64_t)param[3] * param[4];
|
||||
gamma = av_clip_int16((int)round_two_signed((v * divf), divs));
|
||||
delta = av_clip_int16(param[5] - (int)round_two_signed((w * divf), divs) - (1 << AV1_WARPEDMODEL_PREC_BITS));
|
||||
|
||||
alpha = round_two_signed(alpha, AV1_WARP_PARAM_REDUCE_BITS) << AV1_WARP_PARAM_REDUCE_BITS;
|
||||
beta = round_two_signed(beta, AV1_WARP_PARAM_REDUCE_BITS) << AV1_WARP_PARAM_REDUCE_BITS;
|
||||
gamma = round_two_signed(gamma, AV1_WARP_PARAM_REDUCE_BITS) << AV1_WARP_PARAM_REDUCE_BITS;
|
||||
delta = round_two_signed(delta, AV1_WARP_PARAM_REDUCE_BITS) << AV1_WARP_PARAM_REDUCE_BITS;
|
||||
|
||||
if ((4 * abs(alpha) + 7 * abs(beta)) >= (1 << AV1_WARPEDMODEL_PREC_BITS) ||
|
||||
(4 * abs(gamma) + 4 * abs(delta)) >= (1 << AV1_WARPEDMODEL_PREC_BITS))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* update gm type/params, since cbs already implemented part of this funcation,
|
||||
* so we don't need to full implement spec.
|
||||
|
@ -240,9 +144,6 @@ static void global_motion_params(AV1DecContext *s)
|
|||
read_global_param(s, type, ref, 0);
|
||||
read_global_param(s, type, ref, 1);
|
||||
}
|
||||
if (type <= AV1_WARP_MODEL_AFFINE) {
|
||||
s->cur_frame.gm_invalid[ref] = !get_shear_params_valid(s, ref);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -503,8 +404,9 @@ static int get_pixel_format(AVCodecContext *avctx)
|
|||
|
||||
if (pix_fmt == AV_PIX_FMT_NONE)
|
||||
return -1;
|
||||
s->pix_fmt = pix_fmt;
|
||||
|
||||
switch (pix_fmt) {
|
||||
switch (s->pix_fmt) {
|
||||
case AV_PIX_FMT_YUV420P:
|
||||
#if CONFIG_AV1_DXVA2_HWACCEL
|
||||
*fmtp++ = AV_PIX_FMT_DXVA2_VLD;
|
||||
|
@ -547,7 +449,7 @@ static int get_pixel_format(AVCodecContext *avctx)
|
|||
break;
|
||||
}
|
||||
|
||||
*fmtp++ = pix_fmt;
|
||||
*fmtp++ = s->pix_fmt;
|
||||
*fmtp = AV_PIX_FMT_NONE;
|
||||
|
||||
ret = ff_thread_get_format(avctx, pix_fmts);
|
||||
|
@ -565,7 +467,6 @@ static int get_pixel_format(AVCodecContext *avctx)
|
|||
return AVERROR(ENOSYS);
|
||||
}
|
||||
|
||||
s->pix_fmt = pix_fmt;
|
||||
avctx->pix_fmt = ret;
|
||||
|
||||
return 0;
|
||||
|
@ -573,7 +474,7 @@ static int get_pixel_format(AVCodecContext *avctx)
|
|||
|
||||
static void av1_frame_unref(AVCodecContext *avctx, AV1Frame *f)
|
||||
{
|
||||
ff_thread_release_buffer(avctx, f->f);
|
||||
ff_thread_release_buffer(avctx, &f->tf);
|
||||
av_buffer_unref(&f->hwaccel_priv_buf);
|
||||
f->hwaccel_picture_private = NULL;
|
||||
av_buffer_unref(&f->header_ref);
|
||||
|
@ -589,19 +490,16 @@ static int av1_frame_ref(AVCodecContext *avctx, AV1Frame *dst, const AV1Frame *s
|
|||
{
|
||||
int ret;
|
||||
|
||||
ret = av_buffer_replace(&dst->header_ref, src->header_ref);
|
||||
ret = ff_thread_ref_frame(&dst->tf, &src->tf);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
dst->raw_frame_header = src->raw_frame_header;
|
||||
|
||||
if (!src->f->buf[0])
|
||||
return 0;
|
||||
|
||||
ret = av_frame_ref(dst->f, src->f);
|
||||
if (ret < 0)
|
||||
dst->header_ref = av_buffer_ref(src->header_ref);
|
||||
if (!dst->header_ref)
|
||||
goto fail;
|
||||
|
||||
dst->raw_frame_header = src->raw_frame_header;
|
||||
|
||||
if (src->hwaccel_picture_private) {
|
||||
dst->hwaccel_priv_buf = av_buffer_ref(src->hwaccel_priv_buf);
|
||||
if (!dst->hwaccel_priv_buf)
|
||||
|
@ -611,9 +509,6 @@ static int av1_frame_ref(AVCodecContext *avctx, AV1Frame *dst, const AV1Frame *s
|
|||
|
||||
dst->spatial_id = src->spatial_id;
|
||||
dst->temporal_id = src->temporal_id;
|
||||
memcpy(dst->gm_invalid,
|
||||
src->gm_invalid,
|
||||
AV1_NUM_REF_FRAMES * sizeof(uint8_t));
|
||||
memcpy(dst->gm_type,
|
||||
src->gm_type,
|
||||
AV1_NUM_REF_FRAMES * sizeof(uint8_t));
|
||||
|
@ -641,10 +536,10 @@ static av_cold int av1_decode_free(AVCodecContext *avctx)
|
|||
|
||||
for (int i = 0; i < FF_ARRAY_ELEMS(s->ref); i++) {
|
||||
av1_frame_unref(avctx, &s->ref[i]);
|
||||
av_frame_free(&s->ref[i].f);
|
||||
av_frame_free(&s->ref[i].tf.f);
|
||||
}
|
||||
av1_frame_unref(avctx, &s->cur_frame);
|
||||
av_frame_free(&s->cur_frame.f);
|
||||
av_frame_free(&s->cur_frame.tf.f);
|
||||
|
||||
av_buffer_unref(&s->seq_ref);
|
||||
av_buffer_unref(&s->header_ref);
|
||||
|
@ -680,11 +575,6 @@ static int set_context_with_sequence(AVCodecContext *avctx,
|
|||
break;
|
||||
}
|
||||
|
||||
if (seq->film_grain_params_present)
|
||||
avctx->properties |= FF_CODEC_PROPERTY_FILM_GRAIN;
|
||||
else
|
||||
avctx->properties &= ~FF_CODEC_PROPERTY_FILM_GRAIN;
|
||||
|
||||
if (avctx->width != width || avctx->height != height) {
|
||||
int ret = ff_set_dimensions(avctx, width, height);
|
||||
if (ret < 0)
|
||||
|
@ -745,16 +635,16 @@ static av_cold int av1_decode_init(AVCodecContext *avctx)
|
|||
s->pix_fmt = AV_PIX_FMT_NONE;
|
||||
|
||||
for (int i = 0; i < FF_ARRAY_ELEMS(s->ref); i++) {
|
||||
s->ref[i].f = av_frame_alloc();
|
||||
if (!s->ref[i].f) {
|
||||
s->ref[i].tf.f = av_frame_alloc();
|
||||
if (!s->ref[i].tf.f) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Failed to allocate reference frame buffer %d.\n", i);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
}
|
||||
|
||||
s->cur_frame.f = av_frame_alloc();
|
||||
if (!s->cur_frame.f) {
|
||||
s->cur_frame.tf.f = av_frame_alloc();
|
||||
if (!s->cur_frame.tf.f) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Failed to allocate current frame buffer.\n");
|
||||
return AVERROR(ENOMEM);
|
||||
|
@ -807,10 +697,16 @@ static int av1_frame_alloc(AVCodecContext *avctx, AV1Frame *f)
|
|||
return ret;
|
||||
}
|
||||
|
||||
if ((ret = ff_thread_get_buffer(avctx, f->f, AV_GET_BUFFER_FLAG_REF)) < 0)
|
||||
f->header_ref = av_buffer_ref(s->header_ref);
|
||||
if (!f->header_ref)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
f->raw_frame_header = s->raw_frame_header;
|
||||
|
||||
if ((ret = ff_thread_get_buffer(avctx, &f->tf, AV_GET_BUFFER_FLAG_REF)) < 0)
|
||||
goto fail;
|
||||
|
||||
frame = f->f;
|
||||
frame = f->tf.f;
|
||||
frame->key_frame = header->frame_type == AV1_FRAME_KEY;
|
||||
|
||||
switch (header->frame_type) {
|
||||
|
@ -909,7 +805,7 @@ static int set_output_frame(AVCodecContext *avctx, AVFrame *frame,
|
|||
const AVPacket *pkt, int *got_frame)
|
||||
{
|
||||
AV1DecContext *s = avctx->priv_data;
|
||||
const AVFrame *srcframe = s->cur_frame.f;
|
||||
const AVFrame *srcframe = s->cur_frame.tf.f;
|
||||
int ret;
|
||||
|
||||
// TODO: all layers
|
||||
|
@ -946,7 +842,8 @@ static int update_reference_list(AVCodecContext *avctx)
|
|||
|
||||
for (int i = 0; i < AV1_NUM_REF_FRAMES; i++) {
|
||||
if (header->refresh_frame_flags & (1 << i)) {
|
||||
av1_frame_unref(avctx, &s->ref[i]);
|
||||
if (s->ref[i].tf.f->buf[0])
|
||||
av1_frame_unref(avctx, &s->ref[i]);
|
||||
if ((ret = av1_frame_ref(avctx, &s->ref[i], &s->cur_frame)) < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Failed to update frame %d in reference list\n", i);
|
||||
|
@ -962,27 +859,8 @@ static int get_current_frame(AVCodecContext *avctx)
|
|||
AV1DecContext *s = avctx->priv_data;
|
||||
int ret;
|
||||
|
||||
av1_frame_unref(avctx, &s->cur_frame);
|
||||
|
||||
s->cur_frame.header_ref = av_buffer_ref(s->header_ref);
|
||||
if (!s->cur_frame.header_ref)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
s->cur_frame.raw_frame_header = s->raw_frame_header;
|
||||
|
||||
ret = init_tile_data(s);
|
||||
if (ret < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Failed to init tile data.\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((avctx->skip_frame >= AVDISCARD_NONINTRA &&
|
||||
(s->raw_frame_header->frame_type != AV1_FRAME_KEY &&
|
||||
s->raw_frame_header->frame_type != AV1_FRAME_INTRA_ONLY)) ||
|
||||
(avctx->skip_frame >= AVDISCARD_NONKEY &&
|
||||
s->raw_frame_header->frame_type != AV1_FRAME_KEY) ||
|
||||
avctx->skip_frame >= AVDISCARD_ALL)
|
||||
return 0;
|
||||
if (s->cur_frame.tf.f->buf[0])
|
||||
av1_frame_unref(avctx, &s->cur_frame);
|
||||
|
||||
ret = av1_frame_alloc(avctx, &s->cur_frame);
|
||||
if (ret < 0) {
|
||||
|
@ -991,6 +869,12 @@ static int get_current_frame(AVCodecContext *avctx)
|
|||
return ret;
|
||||
}
|
||||
|
||||
ret = init_tile_data(s);
|
||||
if (ret < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Failed to init tile data.\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
global_motion_params(s);
|
||||
skip_mode_params(s);
|
||||
coded_lossless_param(s);
|
||||
|
@ -999,7 +883,7 @@ static int get_current_frame(AVCodecContext *avctx)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int av1_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
||||
static int av1_decode_frame(AVCodecContext *avctx, void *frame,
|
||||
int *got_frame, AVPacket *pkt)
|
||||
{
|
||||
AV1DecContext *s = avctx->priv_data;
|
||||
|
@ -1090,7 +974,8 @@ static int av1_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
|||
s->raw_frame_header = &obu->obu.frame_header;
|
||||
|
||||
if (s->raw_frame_header->show_existing_frame) {
|
||||
av1_frame_unref(avctx, &s->cur_frame);
|
||||
if (s->cur_frame.tf.f->buf[0])
|
||||
av1_frame_unref(avctx, &s->cur_frame);
|
||||
|
||||
ret = av1_frame_ref(avctx, &s->cur_frame,
|
||||
&s->ref[s->raw_frame_header->frame_to_show_map_idx]);
|
||||
|
@ -1105,11 +990,9 @@ static int av1_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
|||
goto end;
|
||||
}
|
||||
|
||||
if (s->cur_frame.f->buf[0]) {
|
||||
ret = set_output_frame(avctx, frame, pkt, got_frame);
|
||||
if (ret < 0)
|
||||
av_log(avctx, AV_LOG_ERROR, "Set output frame error.\n");
|
||||
}
|
||||
ret = set_output_frame(avctx, frame, pkt, got_frame);
|
||||
if (ret < 0)
|
||||
av_log(avctx, AV_LOG_ERROR, "Set output frame error.\n");
|
||||
|
||||
s->raw_frame_header = NULL;
|
||||
|
||||
|
@ -1125,7 +1008,7 @@ static int av1_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
|||
s->cur_frame.spatial_id = header->spatial_id;
|
||||
s->cur_frame.temporal_id = header->temporal_id;
|
||||
|
||||
if (avctx->hwaccel && s->cur_frame.f->buf[0]) {
|
||||
if (avctx->hwaccel) {
|
||||
ret = avctx->hwaccel->start_frame(avctx, unit->data,
|
||||
unit->data_size);
|
||||
if (ret < 0) {
|
||||
|
@ -1152,7 +1035,7 @@ static int av1_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
|||
if (ret < 0)
|
||||
goto end;
|
||||
|
||||
if (avctx->hwaccel && s->cur_frame.f->buf[0]) {
|
||||
if (avctx->hwaccel) {
|
||||
ret = avctx->hwaccel->decode_slice(avctx,
|
||||
raw_tile_group->tile_data.data,
|
||||
raw_tile_group->tile_data.data_size);
|
||||
|
@ -1175,7 +1058,7 @@ static int av1_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
|||
}
|
||||
|
||||
if (raw_tile_group && (s->tile_num == raw_tile_group->tg_end + 1)) {
|
||||
if (avctx->hwaccel && s->cur_frame.f->buf[0]) {
|
||||
if (avctx->hwaccel) {
|
||||
ret = avctx->hwaccel->end_frame(avctx);
|
||||
if (ret < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "HW accel end frame fail.\n");
|
||||
|
@ -1189,7 +1072,7 @@ static int av1_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
|||
goto end;
|
||||
}
|
||||
|
||||
if (s->raw_frame_header->show_frame && s->cur_frame.f->buf[0]) {
|
||||
if (s->raw_frame_header->show_frame) {
|
||||
ret = set_output_frame(avctx, frame, pkt, got_frame);
|
||||
if (ret < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Set output frame error\n");
|
||||
|
@ -1238,23 +1121,22 @@ static const AVClass av1_class = {
|
|||
.version = LIBAVUTIL_VERSION_INT,
|
||||
};
|
||||
|
||||
const FFCodec ff_av1_decoder = {
|
||||
.p.name = "av1",
|
||||
.p.long_name = NULL_IF_CONFIG_SMALL("Alliance for Open Media AV1"),
|
||||
.p.type = AVMEDIA_TYPE_VIDEO,
|
||||
.p.id = AV_CODEC_ID_AV1,
|
||||
AVCodec ff_av1_decoder = {
|
||||
.name = "av1",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("Alliance for Open Media AV1"),
|
||||
.type = AVMEDIA_TYPE_VIDEO,
|
||||
.id = AV_CODEC_ID_AV1,
|
||||
.priv_data_size = sizeof(AV1DecContext),
|
||||
.init = av1_decode_init,
|
||||
.close = av1_decode_free,
|
||||
FF_CODEC_DECODE_CB(av1_decode_frame),
|
||||
.p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_AVOID_PROBING,
|
||||
.decode = av1_decode_frame,
|
||||
.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_AVOID_PROBING,
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE |
|
||||
FF_CODEC_CAP_INIT_CLEANUP |
|
||||
FF_CODEC_CAP_SETS_PKT_DTS,
|
||||
.flush = av1_decode_flush,
|
||||
.p.profiles = NULL_IF_CONFIG_SMALL(ff_av1_profiles),
|
||||
.p.priv_class = &av1_class,
|
||||
.bsfs = "av1_frame_split",
|
||||
.profiles = NULL_IF_CONFIG_SMALL(ff_av1_profiles),
|
||||
.priv_class = &av1_class,
|
||||
.hw_configs = (const AVCodecHWConfigInternal *const []) {
|
||||
#if CONFIG_AV1_DXVA2_HWACCEL
|
||||
HWACCEL_DXVA2(av1),
|
||||
|
|
|
@ -24,14 +24,14 @@
|
|||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/buffer.h"
|
||||
#include "libavutil/frame.h"
|
||||
#include "libavutil/pixfmt.h"
|
||||
#include "avcodec.h"
|
||||
#include "cbs.h"
|
||||
#include "cbs_av1.h"
|
||||
#include "thread.h"
|
||||
|
||||
typedef struct AV1Frame {
|
||||
AVFrame *f;
|
||||
ThreadFrame tf;
|
||||
|
||||
AVBufferRef *hwaccel_priv_buf;
|
||||
void *hwaccel_picture_private;
|
||||
|
@ -42,7 +42,6 @@ typedef struct AV1Frame {
|
|||
int temporal_id;
|
||||
int spatial_id;
|
||||
|
||||
uint8_t gm_invalid[AV1_NUM_REF_FRAMES];
|
||||
uint8_t gm_type[AV1_NUM_REF_FRAMES];
|
||||
int32_t gm_params[AV1_NUM_REF_FRAMES][6];
|
||||
|
||||
|
|
|
@ -26,21 +26,43 @@
|
|||
#include "config.h"
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/avstring.h"
|
||||
#include "libavutil/bprint.h"
|
||||
#include "libavutil/channel_layout.h"
|
||||
#include "libavutil/fifo.h"
|
||||
#include "libavutil/imgutils.h"
|
||||
#include "libavutil/mem.h"
|
||||
#include "libavutil/opt.h"
|
||||
#include "libavutil/thread.h"
|
||||
#include "avcodec.h"
|
||||
#include "bsf.h"
|
||||
#include "codec_internal.h"
|
||||
#include "decode.h"
|
||||
#include "encode.h"
|
||||
#include "frame_thread_encoder.h"
|
||||
#include "internal.h"
|
||||
#include "thread.h"
|
||||
#if CONFIG_ICONV
|
||||
# include <iconv.h>
|
||||
#endif
|
||||
|
||||
#include "libavutil/ffversion.h"
|
||||
const char av_codec_ffversion[] = "FFmpeg version " FFMPEG_VERSION;
|
||||
|
||||
unsigned avcodec_version(void)
|
||||
{
|
||||
av_assert0(AV_CODEC_ID_PCM_S8_PLANAR==65563);
|
||||
av_assert0(AV_CODEC_ID_ADPCM_G722==69660);
|
||||
av_assert0(AV_CODEC_ID_SRT==94216);
|
||||
av_assert0(LIBAVCODEC_VERSION_MICRO >= 100);
|
||||
|
||||
return LIBAVCODEC_VERSION_INT;
|
||||
}
|
||||
|
||||
const char *avcodec_configuration(void)
|
||||
{
|
||||
return FFMPEG_CONFIGURATION;
|
||||
}
|
||||
|
||||
const char *avcodec_license(void)
|
||||
{
|
||||
#define LICENSE_PREFIX "libavcodec license: "
|
||||
return &LICENSE_PREFIX FFMPEG_LICENSE[sizeof(LICENSE_PREFIX) - 1];
|
||||
}
|
||||
|
||||
int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size)
|
||||
{
|
||||
|
@ -70,18 +92,25 @@ int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2,
|
|||
|
||||
static AVMutex codec_mutex = AV_MUTEX_INITIALIZER;
|
||||
|
||||
static void lock_avcodec(const FFCodec *codec)
|
||||
static void lock_avcodec(const AVCodec *codec)
|
||||
{
|
||||
if (!(codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE) && codec->init)
|
||||
ff_mutex_lock(&codec_mutex);
|
||||
}
|
||||
|
||||
static void unlock_avcodec(const FFCodec *codec)
|
||||
static void unlock_avcodec(const AVCodec *codec)
|
||||
{
|
||||
if (!(codec->caps_internal & FF_CODEC_CAP_INIT_THREADSAFE) && codec->init)
|
||||
ff_mutex_unlock(&codec_mutex);
|
||||
}
|
||||
|
||||
#if FF_API_LOCKMGR
|
||||
int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int64_t get_bit_rate(AVCodecContext *ctx)
|
||||
{
|
||||
int64_t bit_rate;
|
||||
|
@ -97,7 +126,7 @@ static int64_t get_bit_rate(AVCodecContext *ctx)
|
|||
case AVMEDIA_TYPE_AUDIO:
|
||||
bits_per_sample = av_get_bits_per_sample(ctx->codec_id);
|
||||
if (bits_per_sample) {
|
||||
bit_rate = ctx->sample_rate * (int64_t)ctx->ch_layout.nb_channels;
|
||||
bit_rate = ctx->sample_rate * (int64_t)ctx->channels;
|
||||
if (bit_rate > INT64_MAX / bits_per_sample) {
|
||||
bit_rate = 0;
|
||||
} else
|
||||
|
@ -115,8 +144,9 @@ static int64_t get_bit_rate(AVCodecContext *ctx)
|
|||
int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
|
||||
{
|
||||
int ret = 0;
|
||||
int codec_init_ok = 0;
|
||||
AVDictionary *tmp = NULL;
|
||||
AVCodecInternal *avci;
|
||||
const FFCodec *codec2;
|
||||
|
||||
if (avcodec_is_open(avctx))
|
||||
return 0;
|
||||
|
@ -132,21 +162,15 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
|
|||
}
|
||||
if (!codec)
|
||||
codec = avctx->codec;
|
||||
codec2 = ffcodec(codec);
|
||||
|
||||
if ((avctx->codec_type != AVMEDIA_TYPE_UNKNOWN && avctx->codec_type != codec->type) ||
|
||||
(avctx->codec_id != AV_CODEC_ID_NONE && avctx->codec_id != codec->id)) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Codec type or id mismatches\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
avctx->codec_type = codec->type;
|
||||
avctx->codec_id = codec->id;
|
||||
avctx->codec = codec;
|
||||
|
||||
if (avctx->extradata_size < 0 || avctx->extradata_size >= FF_MAX_EXTRADATA_SIZE)
|
||||
return AVERROR(EINVAL);
|
||||
|
||||
if (options)
|
||||
av_dict_copy(&tmp, *options, 0);
|
||||
|
||||
lock_avcodec(codec);
|
||||
|
||||
avci = av_mallocz(sizeof(*avci));
|
||||
if (!avci) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
|
@ -154,18 +178,33 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
|
|||
}
|
||||
avctx->internal = avci;
|
||||
|
||||
#if FF_API_OLD_ENCDEC
|
||||
avci->to_free = av_frame_alloc();
|
||||
avci->compat_decode_frame = av_frame_alloc();
|
||||
avci->compat_encode_packet = av_packet_alloc();
|
||||
if (!avci->to_free || !avci->compat_decode_frame || !avci->compat_encode_packet) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto free_and_end;
|
||||
}
|
||||
#endif
|
||||
avci->buffer_frame = av_frame_alloc();
|
||||
avci->buffer_pkt = av_packet_alloc();
|
||||
if (!avci->buffer_frame || !avci->buffer_pkt) {
|
||||
avci->es.in_frame = av_frame_alloc();
|
||||
avci->ds.in_pkt = av_packet_alloc();
|
||||
avci->last_pkt_props = av_packet_alloc();
|
||||
avci->pkt_props = av_fifo_alloc(sizeof(*avci->last_pkt_props));
|
||||
if (!avci->buffer_frame || !avci->buffer_pkt ||
|
||||
!avci->es.in_frame || !avci->ds.in_pkt ||
|
||||
!avci->last_pkt_props || !avci->pkt_props) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto free_and_end;
|
||||
}
|
||||
|
||||
avci->skip_samples_multiplier = 1;
|
||||
|
||||
if (codec2->priv_data_size > 0) {
|
||||
if (codec->priv_data_size > 0) {
|
||||
if (!avctx->priv_data) {
|
||||
avctx->priv_data = av_mallocz(codec2->priv_data_size);
|
||||
avctx->priv_data = av_mallocz(codec->priv_data_size);
|
||||
if (!avctx->priv_data) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto free_and_end;
|
||||
|
@ -175,12 +214,12 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
|
|||
av_opt_set_defaults(avctx->priv_data);
|
||||
}
|
||||
}
|
||||
if (codec->priv_class && (ret = av_opt_set_dict(avctx->priv_data, options)) < 0)
|
||||
if (codec->priv_class && (ret = av_opt_set_dict(avctx->priv_data, &tmp)) < 0)
|
||||
goto free_and_end;
|
||||
} else {
|
||||
avctx->priv_data = NULL;
|
||||
}
|
||||
if ((ret = av_opt_set_dict(avctx, options)) < 0)
|
||||
if ((ret = av_opt_set_dict(avctx, &tmp)) < 0)
|
||||
goto free_and_end;
|
||||
|
||||
if (avctx->codec_whitelist && av_match_list(codec->name, avctx->codec_whitelist, ',') <= 0) {
|
||||
|
@ -217,6 +256,20 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
|
|||
}
|
||||
}
|
||||
|
||||
if (avctx->channels > FF_SANE_NB_CHANNELS || avctx->channels < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Too many or invalid channels: %d\n", avctx->channels);
|
||||
ret = AVERROR(EINVAL);
|
||||
goto free_and_end;
|
||||
}
|
||||
if (av_codec_is_decoder(codec) &&
|
||||
codec->type == AVMEDIA_TYPE_AUDIO &&
|
||||
!(codec->capabilities & AV_CODEC_CAP_CHANNEL_CONF) &&
|
||||
avctx->channels == 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Decoder requires channel count but channels not set\n");
|
||||
ret = AVERROR(EINVAL);
|
||||
goto free_and_end;
|
||||
}
|
||||
|
||||
if (avctx->sample_rate < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Invalid sample rate: %d\n", avctx->sample_rate);
|
||||
ret = AVERROR(EINVAL);
|
||||
|
@ -228,31 +281,18 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code
|
|||
goto free_and_end;
|
||||
}
|
||||
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
/* compat wrapper for old-style callers */
|
||||
if (avctx->channel_layout && !avctx->channels)
|
||||
avctx->channels = av_popcount64(avctx->channel_layout);
|
||||
|
||||
if ((avctx->channels > 0 && avctx->ch_layout.nb_channels != avctx->channels) ||
|
||||
(avctx->channel_layout && (avctx->ch_layout.order != AV_CHANNEL_ORDER_NATIVE ||
|
||||
avctx->ch_layout.u.mask != avctx->channel_layout))) {
|
||||
if (avctx->channel_layout) {
|
||||
av_channel_layout_from_mask(&avctx->ch_layout, avctx->channel_layout);
|
||||
} else {
|
||||
avctx->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
|
||||
avctx->ch_layout.nb_channels = avctx->channels;
|
||||
}
|
||||
avctx->codec = codec;
|
||||
if ((avctx->codec_type == AVMEDIA_TYPE_UNKNOWN || avctx->codec_type == codec->type) &&
|
||||
avctx->codec_id == AV_CODEC_ID_NONE) {
|
||||
avctx->codec_type = codec->type;
|
||||
avctx->codec_id = codec->id;
|
||||
}
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
|
||||
if (avctx->ch_layout.nb_channels > FF_SANE_NB_CHANNELS) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Too many channels: %d\n", avctx->ch_layout.nb_channels);
|
||||
if (avctx->codec_id != codec->id || (avctx->codec_type != codec->type
|
||||
&& avctx->codec_type != AVMEDIA_TYPE_ATTACHMENT)) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Codec type or id mismatches\n");
|
||||
ret = AVERROR(EINVAL);
|
||||
goto free_and_end;
|
||||
}
|
||||
|
||||
avctx->frame_number = 0;
|
||||
avctx->codec_descriptor = avcodec_descriptor_get(avctx->codec_id);
|
||||
|
||||
|
@ -285,37 +325,35 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
|||
if (ret < 0)
|
||||
goto free_and_end;
|
||||
|
||||
if (!HAVE_THREADS)
|
||||
av_log(avctx, AV_LOG_WARNING, "Warning: not compiled with thread support, using thread emulation\n");
|
||||
|
||||
if (CONFIG_FRAME_THREAD_ENCODER && av_codec_is_encoder(avctx->codec)) {
|
||||
ret = ff_frame_thread_encoder_init(avctx);
|
||||
unlock_avcodec(codec); //we will instantiate a few encoders thus kick the counter to prevent false detection of a problem
|
||||
ret = ff_frame_thread_encoder_init(avctx, options ? *options : NULL);
|
||||
lock_avcodec(codec);
|
||||
if (ret < 0)
|
||||
goto free_and_end;
|
||||
}
|
||||
|
||||
if (HAVE_THREADS
|
||||
&& !(avci->frame_thread_encoder && (avctx->active_thread_type&FF_THREAD_FRAME))) {
|
||||
/* Frame-threaded decoders call FFCodec.init for their child contexts. */
|
||||
lock_avcodec(codec2);
|
||||
ret = ff_thread_init(avctx);
|
||||
unlock_avcodec(codec2);
|
||||
if (ret < 0) {
|
||||
goto free_and_end;
|
||||
}
|
||||
}
|
||||
if (!HAVE_THREADS && !(codec2->caps_internal & FF_CODEC_CAP_AUTO_THREADS))
|
||||
if (!HAVE_THREADS && !(codec->caps_internal & FF_CODEC_CAP_AUTO_THREADS))
|
||||
avctx->thread_count = 1;
|
||||
|
||||
if (!(avctx->active_thread_type & FF_THREAD_FRAME) ||
|
||||
avci->frame_thread_encoder) {
|
||||
if (codec2->init) {
|
||||
lock_avcodec(codec2);
|
||||
ret = codec2->init(avctx);
|
||||
unlock_avcodec(codec2);
|
||||
if (ret < 0) {
|
||||
avci->needs_close = codec2->caps_internal & FF_CODEC_CAP_INIT_CLEANUP;
|
||||
goto free_and_end;
|
||||
}
|
||||
if ( avctx->codec->init && (!(avctx->active_thread_type&FF_THREAD_FRAME)
|
||||
|| avci->frame_thread_encoder)) {
|
||||
ret = avctx->codec->init(avctx);
|
||||
if (ret < 0) {
|
||||
codec_init_ok = -1;
|
||||
goto free_and_end;
|
||||
}
|
||||
avci->needs_close = 1;
|
||||
codec_init_ok = 1;
|
||||
}
|
||||
|
||||
ret=0;
|
||||
|
@ -323,14 +361,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
|||
if (av_codec_is_decoder(avctx->codec)) {
|
||||
if (!avctx->bit_rate)
|
||||
avctx->bit_rate = get_bit_rate(avctx);
|
||||
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
/* update the deprecated fields for old-style callers */
|
||||
avctx->channels = avctx->ch_layout.nb_channels;
|
||||
avctx->channel_layout = avctx->ch_layout.order == AV_CHANNEL_ORDER_NATIVE ?
|
||||
avctx->ch_layout.u.mask : 0;
|
||||
|
||||
/* validate channel layout from the decoder */
|
||||
if (avctx->channel_layout) {
|
||||
int channels = av_get_channel_layout_nb_channels(avctx->channel_layout);
|
||||
|
@ -355,22 +385,106 @@ FF_DISABLE_DEPRECATION_WARNINGS
|
|||
ret = AVERROR(EINVAL);
|
||||
goto free_and_end;
|
||||
}
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
if (avctx->sub_charenc) {
|
||||
if (avctx->codec_type != AVMEDIA_TYPE_SUBTITLE) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Character encoding is only "
|
||||
"supported with subtitles codecs\n");
|
||||
ret = AVERROR(EINVAL);
|
||||
goto free_and_end;
|
||||
} else if (avctx->codec_descriptor->props & AV_CODEC_PROP_BITMAP_SUB) {
|
||||
av_log(avctx, AV_LOG_WARNING, "Codec '%s' is bitmap-based, "
|
||||
"subtitles character encoding will be ignored\n",
|
||||
avctx->codec_descriptor->name);
|
||||
avctx->sub_charenc_mode = FF_SUB_CHARENC_MODE_DO_NOTHING;
|
||||
} else {
|
||||
/* input character encoding is set for a text based subtitle
|
||||
* codec at this point */
|
||||
if (avctx->sub_charenc_mode == FF_SUB_CHARENC_MODE_AUTOMATIC)
|
||||
avctx->sub_charenc_mode = FF_SUB_CHARENC_MODE_PRE_DECODER;
|
||||
|
||||
if (avctx->sub_charenc_mode == FF_SUB_CHARENC_MODE_PRE_DECODER) {
|
||||
#if CONFIG_ICONV
|
||||
iconv_t cd = iconv_open("UTF-8", avctx->sub_charenc);
|
||||
if (cd == (iconv_t)-1) {
|
||||
ret = AVERROR(errno);
|
||||
av_log(avctx, AV_LOG_ERROR, "Unable to open iconv context "
|
||||
"with input character encoding \"%s\"\n", avctx->sub_charenc);
|
||||
goto free_and_end;
|
||||
}
|
||||
iconv_close(cd);
|
||||
#else
|
||||
av_log(avctx, AV_LOG_ERROR, "Character encoding subtitles "
|
||||
"conversion needs a libavcodec built with iconv support "
|
||||
"for this codec\n");
|
||||
ret = AVERROR(ENOSYS);
|
||||
goto free_and_end;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if FF_API_AVCTX_TIMEBASE
|
||||
if (avctx->framerate.num > 0 && avctx->framerate.den > 0)
|
||||
avctx->time_base = av_inv_q(av_mul_q(avctx->framerate, (AVRational){avctx->ticks_per_frame, 1}));
|
||||
#endif
|
||||
}
|
||||
if (codec->priv_class)
|
||||
if (codec->priv_data_size > 0 && avctx->priv_data && codec->priv_class) {
|
||||
av_assert0(*(const AVClass **)avctx->priv_data == codec->priv_class);
|
||||
}
|
||||
|
||||
end:
|
||||
unlock_avcodec(codec);
|
||||
if (options) {
|
||||
av_dict_free(options);
|
||||
*options = tmp;
|
||||
}
|
||||
|
||||
return ret;
|
||||
free_and_end:
|
||||
avcodec_close(avctx);
|
||||
if (avctx->codec && avctx->codec->close &&
|
||||
(codec_init_ok > 0 || (codec_init_ok < 0 &&
|
||||
avctx->codec->caps_internal & FF_CODEC_CAP_INIT_CLEANUP)))
|
||||
avctx->codec->close(avctx);
|
||||
|
||||
if (HAVE_THREADS && avci->thread_ctx)
|
||||
ff_thread_free(avctx);
|
||||
|
||||
if (codec->priv_class && avctx->priv_data)
|
||||
av_opt_free(avctx->priv_data);
|
||||
av_opt_free(avctx);
|
||||
|
||||
if (av_codec_is_encoder(avctx->codec)) {
|
||||
#if FF_API_CODED_FRAME
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
av_frame_free(&avctx->coded_frame);
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
av_freep(&avctx->extradata);
|
||||
avctx->extradata_size = 0;
|
||||
}
|
||||
|
||||
av_dict_free(&tmp);
|
||||
av_freep(&avctx->priv_data);
|
||||
av_freep(&avctx->subtitle_header);
|
||||
|
||||
#if FF_API_OLD_ENCDEC
|
||||
av_frame_free(&avci->to_free);
|
||||
av_frame_free(&avci->compat_decode_frame);
|
||||
av_packet_free(&avci->compat_encode_packet);
|
||||
#endif
|
||||
av_frame_free(&avci->buffer_frame);
|
||||
av_packet_free(&avci->buffer_pkt);
|
||||
av_packet_free(&avci->last_pkt_props);
|
||||
av_fifo_freep(&avci->pkt_props);
|
||||
|
||||
av_packet_free(&avci->ds.in_pkt);
|
||||
av_frame_free(&avci->es.in_frame);
|
||||
av_bsf_free(&avci->bsf);
|
||||
|
||||
av_buffer_unref(&avci->pool);
|
||||
av_freep(&avci);
|
||||
avctx->internal = NULL;
|
||||
avctx->codec = NULL;
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
@ -388,31 +502,50 @@ void avcodec_flush_buffers(AVCodecContext *avctx)
|
|||
"that doesn't support it\n");
|
||||
return;
|
||||
}
|
||||
if (avci->in_frame)
|
||||
av_frame_unref(avci->in_frame);
|
||||
} else {
|
||||
av_packet_unref(avci->last_pkt_props);
|
||||
while (av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1) >= 0)
|
||||
av_packet_unref(avci->last_pkt_props);
|
||||
|
||||
av_packet_unref(avci->in_pkt);
|
||||
|
||||
avctx->pts_correction_last_pts =
|
||||
avctx->pts_correction_last_dts = INT64_MIN;
|
||||
|
||||
av_bsf_flush(avci->bsf);
|
||||
// We haven't implemented flushing for frame-threaded encoders.
|
||||
av_assert0(!(caps & AV_CODEC_CAP_FRAME_THREADS));
|
||||
}
|
||||
|
||||
avci->draining = 0;
|
||||
avci->draining_done = 0;
|
||||
avci->nb_draining_errors = 0;
|
||||
av_frame_unref(avci->buffer_frame);
|
||||
#if FF_API_OLD_ENCDEC
|
||||
av_frame_unref(avci->compat_decode_frame);
|
||||
av_packet_unref(avci->compat_encode_packet);
|
||||
#endif
|
||||
av_packet_unref(avci->buffer_pkt);
|
||||
|
||||
av_packet_unref(avci->last_pkt_props);
|
||||
while (av_fifo_size(avci->pkt_props) >= sizeof(*avci->last_pkt_props)) {
|
||||
av_fifo_generic_read(avci->pkt_props,
|
||||
avci->last_pkt_props, sizeof(*avci->last_pkt_props),
|
||||
NULL);
|
||||
av_packet_unref(avci->last_pkt_props);
|
||||
}
|
||||
av_fifo_reset(avci->pkt_props);
|
||||
|
||||
av_frame_unref(avci->es.in_frame);
|
||||
av_packet_unref(avci->ds.in_pkt);
|
||||
|
||||
if (HAVE_THREADS && avctx->active_thread_type & FF_THREAD_FRAME)
|
||||
ff_thread_flush(avctx);
|
||||
else if (ffcodec(avctx->codec)->flush)
|
||||
ffcodec(avctx->codec)->flush(avctx);
|
||||
else if (avctx->codec->flush)
|
||||
avctx->codec->flush(avctx);
|
||||
|
||||
avctx->pts_correction_last_pts =
|
||||
avctx->pts_correction_last_dts = INT64_MIN;
|
||||
|
||||
if (av_codec_is_decoder(avctx->codec))
|
||||
av_bsf_flush(avci->bsf);
|
||||
|
||||
#if FF_API_OLD_ENCDEC
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
if (!avctx->refcounted_frames)
|
||||
av_frame_unref(avci->to_free);
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
}
|
||||
|
||||
void avsubtitle_free(AVSubtitle *sub)
|
||||
|
@ -420,15 +553,12 @@ void avsubtitle_free(AVSubtitle *sub)
|
|||
int i;
|
||||
|
||||
for (i = 0; i < sub->num_rects; i++) {
|
||||
AVSubtitleRect *const rect = sub->rects[i];
|
||||
|
||||
av_freep(&rect->data[0]);
|
||||
av_freep(&rect->data[1]);
|
||||
av_freep(&rect->data[2]);
|
||||
av_freep(&rect->data[3]);
|
||||
av_freep(&rect->text);
|
||||
av_freep(&rect->ass);
|
||||
|
||||
av_freep(&sub->rects[i]->data[0]);
|
||||
av_freep(&sub->rects[i]->data[1]);
|
||||
av_freep(&sub->rects[i]->data[2]);
|
||||
av_freep(&sub->rects[i]->data[3]);
|
||||
av_freep(&sub->rects[i]->text);
|
||||
av_freep(&sub->rects[i]->ass);
|
||||
av_freep(&sub->rects[i]);
|
||||
}
|
||||
|
||||
|
@ -445,41 +575,45 @@ av_cold int avcodec_close(AVCodecContext *avctx)
|
|||
return 0;
|
||||
|
||||
if (avcodec_is_open(avctx)) {
|
||||
AVCodecInternal *avci = avctx->internal;
|
||||
|
||||
if (CONFIG_FRAME_THREAD_ENCODER &&
|
||||
avci->frame_thread_encoder && avctx->thread_count > 1) {
|
||||
avctx->internal->frame_thread_encoder && avctx->thread_count > 1) {
|
||||
ff_frame_thread_encoder_free(avctx);
|
||||
}
|
||||
if (HAVE_THREADS && avci->thread_ctx)
|
||||
if (HAVE_THREADS && avctx->internal->thread_ctx)
|
||||
ff_thread_free(avctx);
|
||||
if (avci->needs_close && ffcodec(avctx->codec)->close)
|
||||
ffcodec(avctx->codec)->close(avctx);
|
||||
avci->byte_buffer_size = 0;
|
||||
av_freep(&avci->byte_buffer);
|
||||
av_frame_free(&avci->buffer_frame);
|
||||
av_packet_free(&avci->buffer_pkt);
|
||||
if (avci->pkt_props) {
|
||||
while (av_fifo_can_read(avci->pkt_props)) {
|
||||
av_packet_unref(avci->last_pkt_props);
|
||||
av_fifo_read(avci->pkt_props, avci->last_pkt_props, 1);
|
||||
}
|
||||
av_fifo_freep2(&avci->pkt_props);
|
||||
if (avctx->codec && avctx->codec->close)
|
||||
avctx->codec->close(avctx);
|
||||
avctx->internal->byte_buffer_size = 0;
|
||||
av_freep(&avctx->internal->byte_buffer);
|
||||
#if FF_API_OLD_ENCDEC
|
||||
av_frame_free(&avctx->internal->to_free);
|
||||
av_frame_free(&avctx->internal->compat_decode_frame);
|
||||
av_packet_free(&avctx->internal->compat_encode_packet);
|
||||
#endif
|
||||
av_frame_free(&avctx->internal->buffer_frame);
|
||||
av_packet_free(&avctx->internal->buffer_pkt);
|
||||
av_packet_unref(avctx->internal->last_pkt_props);
|
||||
while (av_fifo_size(avctx->internal->pkt_props) >=
|
||||
sizeof(*avctx->internal->last_pkt_props)) {
|
||||
av_fifo_generic_read(avctx->internal->pkt_props,
|
||||
avctx->internal->last_pkt_props,
|
||||
sizeof(*avctx->internal->last_pkt_props),
|
||||
NULL);
|
||||
av_packet_unref(avctx->internal->last_pkt_props);
|
||||
}
|
||||
av_packet_free(&avci->last_pkt_props);
|
||||
av_packet_free(&avctx->internal->last_pkt_props);
|
||||
av_fifo_freep(&avctx->internal->pkt_props);
|
||||
|
||||
av_packet_free(&avci->in_pkt);
|
||||
av_frame_free(&avci->in_frame);
|
||||
av_packet_free(&avctx->internal->ds.in_pkt);
|
||||
av_frame_free(&avctx->internal->es.in_frame);
|
||||
|
||||
av_buffer_unref(&avci->pool);
|
||||
av_buffer_unref(&avctx->internal->pool);
|
||||
|
||||
if (avctx->hwaccel && avctx->hwaccel->uninit)
|
||||
avctx->hwaccel->uninit(avctx);
|
||||
av_freep(&avci->hwaccel_priv_data);
|
||||
av_freep(&avctx->internal->hwaccel_priv_data);
|
||||
|
||||
av_bsf_free(&avci->bsf);
|
||||
|
||||
av_channel_layout_uninit(&avci->initial_ch_layout);
|
||||
av_bsf_free(&avctx->internal->bsf);
|
||||
|
||||
av_freep(&avctx->internal);
|
||||
}
|
||||
|
@ -498,10 +632,12 @@ av_cold int avcodec_close(AVCodecContext *avctx)
|
|||
av_freep(&avctx->priv_data);
|
||||
if (av_codec_is_encoder(avctx->codec)) {
|
||||
av_freep(&avctx->extradata);
|
||||
avctx->extradata_size = 0;
|
||||
} else if (av_codec_is_decoder(avctx->codec))
|
||||
av_freep(&avctx->subtitle_header);
|
||||
|
||||
#if FF_API_CODED_FRAME
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
av_frame_free(&avctx->coded_frame);
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
}
|
||||
avctx->codec = NULL;
|
||||
avctx->active_thread_type = 0;
|
||||
|
||||
|
@ -518,7 +654,6 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
|
|||
const char *codec_type;
|
||||
const char *codec_name;
|
||||
const char *profile = NULL;
|
||||
AVBPrint bprint;
|
||||
int64_t bitrate;
|
||||
int new_line = 0;
|
||||
AVRational display_aspect_ratio;
|
||||
|
@ -527,54 +662,46 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
|
|||
|
||||
if (!buf || buf_size <= 0)
|
||||
return;
|
||||
av_bprint_init_for_buffer(&bprint, buf, buf_size);
|
||||
codec_type = av_get_media_type_string(enc->codec_type);
|
||||
codec_name = avcodec_get_name(enc->codec_id);
|
||||
profile = avcodec_profile_name(enc->codec_id, enc->profile);
|
||||
|
||||
av_bprintf(&bprint, "%s: %s", codec_type ? codec_type : "unknown",
|
||||
codec_name);
|
||||
snprintf(buf, buf_size, "%s: %s", codec_type ? codec_type : "unknown",
|
||||
codec_name);
|
||||
buf[0] ^= 'a' ^ 'A'; /* first letter in uppercase */
|
||||
|
||||
if (enc->codec && strcmp(enc->codec->name, codec_name))
|
||||
av_bprintf(&bprint, " (%s)", enc->codec->name);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf), " (%s)", enc->codec->name);
|
||||
|
||||
if (profile)
|
||||
av_bprintf(&bprint, " (%s)", profile);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf), " (%s)", profile);
|
||||
if ( enc->codec_type == AVMEDIA_TYPE_VIDEO
|
||||
&& av_log_get_level() >= AV_LOG_VERBOSE
|
||||
&& enc->refs)
|
||||
av_bprintf(&bprint, ", %d reference frame%s",
|
||||
enc->refs, enc->refs > 1 ? "s" : "");
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", %d reference frame%s",
|
||||
enc->refs, enc->refs > 1 ? "s" : "");
|
||||
|
||||
if (enc->codec_tag)
|
||||
av_bprintf(&bprint, " (%s / 0x%04X)",
|
||||
av_fourcc2str(enc->codec_tag), enc->codec_tag);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf), " (%s / 0x%04X)",
|
||||
av_fourcc2str(enc->codec_tag), enc->codec_tag);
|
||||
|
||||
switch (enc->codec_type) {
|
||||
case AVMEDIA_TYPE_VIDEO:
|
||||
{
|
||||
unsigned len;
|
||||
char detail[256] = "(";
|
||||
|
||||
av_bprintf(&bprint, "%s%s", separator,
|
||||
enc->pix_fmt == AV_PIX_FMT_NONE ? "none" :
|
||||
unknown_if_null(av_get_pix_fmt_name(enc->pix_fmt)));
|
||||
|
||||
av_bprint_chars(&bprint, '(', 1);
|
||||
len = bprint.len;
|
||||
|
||||
/* The following check ensures that '(' has been written
|
||||
* and therefore allows us to erase it if it turns out
|
||||
* to be unnecessary. */
|
||||
if (!av_bprint_is_complete(&bprint))
|
||||
return;
|
||||
av_strlcat(buf, separator, buf_size);
|
||||
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
"%s", enc->pix_fmt == AV_PIX_FMT_NONE ? "none" :
|
||||
unknown_if_null(av_get_pix_fmt_name(enc->pix_fmt)));
|
||||
if (enc->bits_per_raw_sample && enc->pix_fmt != AV_PIX_FMT_NONE &&
|
||||
enc->bits_per_raw_sample < av_pix_fmt_desc_get(enc->pix_fmt)->comp[0].depth)
|
||||
av_bprintf(&bprint, "%d bpc, ", enc->bits_per_raw_sample);
|
||||
av_strlcatf(detail, sizeof(detail), "%d bpc, ", enc->bits_per_raw_sample);
|
||||
if (enc->color_range != AVCOL_RANGE_UNSPECIFIED &&
|
||||
(str = av_color_range_name(enc->color_range)))
|
||||
av_bprintf(&bprint, "%s, ", str);
|
||||
av_strlcatf(detail, sizeof(detail), "%s, ", str);
|
||||
|
||||
if (enc->colorspace != AVCOL_SPC_UNSPECIFIED ||
|
||||
enc->color_primaries != AVCOL_PRI_UNSPECIFIED ||
|
||||
|
@ -584,9 +711,10 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
|
|||
const char *trc = unknown_if_null(av_color_transfer_name(enc->color_trc));
|
||||
if (strcmp(col, pri) || strcmp(col, trc)) {
|
||||
new_line = 1;
|
||||
av_bprintf(&bprint, "%s/%s/%s, ", col, pri, trc);
|
||||
av_strlcatf(detail, sizeof(detail), "%s/%s/%s, ",
|
||||
col, pri, trc);
|
||||
} else
|
||||
av_bprintf(&bprint, "%s, ", col);
|
||||
av_strlcatf(detail, sizeof(detail), "%s, ", col);
|
||||
}
|
||||
|
||||
if (enc->field_order != AV_FIELD_UNKNOWN) {
|
||||
|
@ -600,115 +728,120 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)
|
|||
else if (enc->field_order == AV_FIELD_BT)
|
||||
field_order = "bottom coded first (swapped)";
|
||||
|
||||
av_bprintf(&bprint, "%s, ", field_order);
|
||||
av_strlcatf(detail, sizeof(detail), "%s, ", field_order);
|
||||
}
|
||||
|
||||
if (av_log_get_level() >= AV_LOG_VERBOSE &&
|
||||
enc->chroma_sample_location != AVCHROMA_LOC_UNSPECIFIED &&
|
||||
(str = av_chroma_location_name(enc->chroma_sample_location)))
|
||||
av_bprintf(&bprint, "%s, ", str);
|
||||
av_strlcatf(detail, sizeof(detail), "%s, ", str);
|
||||
|
||||
if (len == bprint.len) {
|
||||
bprint.str[len - 1] = '\0';
|
||||
bprint.len--;
|
||||
} else {
|
||||
if (bprint.len - 2 < bprint.size) {
|
||||
/* Erase the last ", " */
|
||||
bprint.len -= 2;
|
||||
bprint.str[bprint.len] = '\0';
|
||||
}
|
||||
av_bprint_chars(&bprint, ')', 1);
|
||||
if (strlen(detail) > 1) {
|
||||
detail[strlen(detail) - 2] = 0;
|
||||
av_strlcatf(buf, buf_size, "%s)", detail);
|
||||
}
|
||||
}
|
||||
|
||||
if (enc->width) {
|
||||
av_bprintf(&bprint, "%s%dx%d", new_line ? separator : ", ",
|
||||
enc->width, enc->height);
|
||||
av_strlcat(buf, new_line ? separator : ", ", buf_size);
|
||||
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
"%dx%d",
|
||||
enc->width, enc->height);
|
||||
|
||||
if (av_log_get_level() >= AV_LOG_VERBOSE &&
|
||||
(enc->width != enc->coded_width ||
|
||||
enc->height != enc->coded_height))
|
||||
av_bprintf(&bprint, " (%dx%d)",
|
||||
enc->coded_width, enc->coded_height);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
" (%dx%d)", enc->coded_width, enc->coded_height);
|
||||
|
||||
if (enc->sample_aspect_ratio.num) {
|
||||
av_reduce(&display_aspect_ratio.num, &display_aspect_ratio.den,
|
||||
enc->width * (int64_t)enc->sample_aspect_ratio.num,
|
||||
enc->height * (int64_t)enc->sample_aspect_ratio.den,
|
||||
1024 * 1024);
|
||||
av_bprintf(&bprint, " [SAR %d:%d DAR %d:%d]",
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
" [SAR %d:%d DAR %d:%d]",
|
||||
enc->sample_aspect_ratio.num, enc->sample_aspect_ratio.den,
|
||||
display_aspect_ratio.num, display_aspect_ratio.den);
|
||||
}
|
||||
if (av_log_get_level() >= AV_LOG_DEBUG) {
|
||||
int g = av_gcd(enc->time_base.num, enc->time_base.den);
|
||||
av_bprintf(&bprint, ", %d/%d",
|
||||
enc->time_base.num / g, enc->time_base.den / g);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", %d/%d",
|
||||
enc->time_base.num / g, enc->time_base.den / g);
|
||||
}
|
||||
}
|
||||
if (encode) {
|
||||
av_bprintf(&bprint, ", q=%d-%d", enc->qmin, enc->qmax);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", q=%d-%d", enc->qmin, enc->qmax);
|
||||
} else {
|
||||
if (enc->properties & FF_CODEC_PROPERTY_CLOSED_CAPTIONS)
|
||||
av_bprintf(&bprint, ", Closed Captions");
|
||||
if (enc->properties & FF_CODEC_PROPERTY_FILM_GRAIN)
|
||||
av_bprintf(&bprint, ", Film Grain");
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", Closed Captions");
|
||||
if (enc->properties & FF_CODEC_PROPERTY_LOSSLESS)
|
||||
av_bprintf(&bprint, ", lossless");
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", lossless");
|
||||
}
|
||||
break;
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
av_bprintf(&bprint, "%s", separator);
|
||||
av_strlcat(buf, separator, buf_size);
|
||||
|
||||
if (enc->sample_rate) {
|
||||
av_bprintf(&bprint, "%d Hz, ", enc->sample_rate);
|
||||
}
|
||||
{
|
||||
char buf[512];
|
||||
int ret = av_channel_layout_describe(&enc->ch_layout, buf, sizeof(buf));
|
||||
if (ret >= 0)
|
||||
av_bprintf(&bprint, "%s", buf);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
"%d Hz, ", enc->sample_rate);
|
||||
}
|
||||
av_get_channel_layout_string(buf + strlen(buf), buf_size - strlen(buf), enc->channels, enc->channel_layout);
|
||||
if (enc->sample_fmt != AV_SAMPLE_FMT_NONE &&
|
||||
(str = av_get_sample_fmt_name(enc->sample_fmt))) {
|
||||
av_bprintf(&bprint, ", %s", str);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", %s", str);
|
||||
}
|
||||
if ( enc->bits_per_raw_sample > 0
|
||||
&& enc->bits_per_raw_sample != av_get_bytes_per_sample(enc->sample_fmt) * 8)
|
||||
av_bprintf(&bprint, " (%d bit)", enc->bits_per_raw_sample);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
" (%d bit)", enc->bits_per_raw_sample);
|
||||
if (av_log_get_level() >= AV_LOG_VERBOSE) {
|
||||
if (enc->initial_padding)
|
||||
av_bprintf(&bprint, ", delay %d", enc->initial_padding);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", delay %d", enc->initial_padding);
|
||||
if (enc->trailing_padding)
|
||||
av_bprintf(&bprint, ", padding %d", enc->trailing_padding);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", padding %d", enc->trailing_padding);
|
||||
}
|
||||
break;
|
||||
case AVMEDIA_TYPE_DATA:
|
||||
if (av_log_get_level() >= AV_LOG_DEBUG) {
|
||||
int g = av_gcd(enc->time_base.num, enc->time_base.den);
|
||||
if (g)
|
||||
av_bprintf(&bprint, ", %d/%d",
|
||||
enc->time_base.num / g, enc->time_base.den / g);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", %d/%d",
|
||||
enc->time_base.num / g, enc->time_base.den / g);
|
||||
}
|
||||
break;
|
||||
case AVMEDIA_TYPE_SUBTITLE:
|
||||
if (enc->width)
|
||||
av_bprintf(&bprint, ", %dx%d", enc->width, enc->height);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", %dx%d", enc->width, enc->height);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
if (encode) {
|
||||
if (enc->flags & AV_CODEC_FLAG_PASS1)
|
||||
av_bprintf(&bprint, ", pass 1");
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", pass 1");
|
||||
if (enc->flags & AV_CODEC_FLAG_PASS2)
|
||||
av_bprintf(&bprint, ", pass 2");
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", pass 2");
|
||||
}
|
||||
bitrate = get_bit_rate(enc);
|
||||
if (bitrate != 0) {
|
||||
av_bprintf(&bprint, ", %"PRId64" kb/s", bitrate / 1000);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", %"PRId64" kb/s", bitrate / 1000);
|
||||
} else if (enc->rc_max_rate > 0) {
|
||||
av_bprintf(&bprint, ", max. %"PRId64" kb/s", enc->rc_max_rate / 1000);
|
||||
snprintf(buf + strlen(buf), buf_size - strlen(buf),
|
||||
", max. %"PRId64" kb/s", enc->rc_max_rate / 1000);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -1,26 +1,47 @@
|
|||
av_codec_ffversion
|
||||
av_codec_get_chroma_intra_matrix
|
||||
av_codec_get_codec_descriptor
|
||||
av_codec_get_codec_properties
|
||||
av_codec_get_lowres
|
||||
av_codec_get_max_lowres
|
||||
av_codec_get_pkt_timebase
|
||||
av_codec_get_seek_preroll
|
||||
av_codec_is_decoder
|
||||
av_codec_is_encoder
|
||||
av_codec_iterate
|
||||
av_codec_next
|
||||
av_codec_set_chroma_intra_matrix
|
||||
av_codec_set_codec_descriptor
|
||||
av_codec_set_lowres
|
||||
av_codec_set_pkt_timebase
|
||||
av_codec_set_seek_preroll
|
||||
av_copy_packet
|
||||
av_copy_packet_side_data
|
||||
av_dup_packet
|
||||
av_fast_padded_malloc
|
||||
av_fast_padded_mallocz
|
||||
av_free_packet
|
||||
av_get_audio_frame_duration
|
||||
av_get_bits_per_sample
|
||||
av_get_codec_tag_string
|
||||
av_get_exact_bits_per_sample
|
||||
av_get_pcm_codec
|
||||
av_get_profile_name
|
||||
av_grow_packet
|
||||
av_hwaccel_next
|
||||
av_hwdevice_ctx_init
|
||||
av_hwdevice_ctx_alloc
|
||||
av_hwdevice_ctx_create_derived
|
||||
av_hwframe_transfer_get_formats
|
||||
av_hwframe_ctx_alloc
|
||||
av_init_packet
|
||||
av_lockmgr_register
|
||||
av_new_packet
|
||||
av_packet_copy_props
|
||||
av_packet_free_side_data
|
||||
av_packet_from_data
|
||||
av_packet_get_side_data
|
||||
av_packet_merge_side_data
|
||||
av_packet_move_ref
|
||||
av_packet_new_side_data
|
||||
av_packet_pack_dictionary
|
||||
|
@ -28,16 +49,21 @@ av_packet_ref
|
|||
av_packet_rescale_ts
|
||||
av_packet_shrink_side_data
|
||||
av_packet_side_data_name
|
||||
av_packet_split_side_data
|
||||
av_packet_unpack_dictionary
|
||||
av_packet_unref
|
||||
av_parser_change
|
||||
av_parser_close
|
||||
av_parser_init
|
||||
av_parser_next
|
||||
av_parser_parse2
|
||||
#ifdef MOZ_LIBAV_FFT
|
||||
av_rdft_calc
|
||||
av_rdft_end
|
||||
av_rdft_init
|
||||
#endif
|
||||
av_register_codec_parser
|
||||
av_register_hwaccel
|
||||
av_shrink_packet
|
||||
av_vorbis_parse_frame
|
||||
av_vorbis_parse_frame_flags
|
||||
|
@ -51,7 +77,10 @@ avcodec_alloc_context3
|
|||
avcodec_chroma_pos_to_enum
|
||||
avcodec_close
|
||||
avcodec_configuration
|
||||
avcodec_copy_context
|
||||
avcodec_decode_audio4
|
||||
avcodec_decode_subtitle2
|
||||
avcodec_decode_video2
|
||||
avcodec_default_execute
|
||||
avcodec_default_execute2
|
||||
avcodec_default_get_buffer2
|
||||
|
@ -68,6 +97,7 @@ avcodec_find_encoder_by_name
|
|||
avcodec_flush_buffers
|
||||
avcodec_free_context
|
||||
avcodec_get_class
|
||||
avcodec_get_context_defaults3
|
||||
avcodec_get_frame_class
|
||||
avcodec_get_hw_config
|
||||
avcodec_get_name
|
||||
|
@ -76,12 +106,10 @@ avcodec_get_type
|
|||
avcodec_is_open
|
||||
avcodec_license
|
||||
avcodec_open2
|
||||
avcodec_register
|
||||
avcodec_register_all
|
||||
avcodec_string
|
||||
avcodec_version
|
||||
avsubtitle_free
|
||||
avcodec_send_packet
|
||||
avcodec_receive_frame
|
||||
ff_init_vlc_from_lengths
|
||||
ff_init_vlc_sparse
|
||||
ff_mpa_freq_tab
|
||||
ff_mpa_bitrate_tab
|
||||
|
|
|
@ -22,12 +22,13 @@
|
|||
#include <string.h>
|
||||
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/mathematics.h"
|
||||
#include "libavutil/mem.h"
|
||||
#include "libavutil/rational.h"
|
||||
|
||||
#include "defs.h"
|
||||
#include "bytestream.h"
|
||||
#include "internal.h"
|
||||
#include "packet.h"
|
||||
#include "packet_internal.h"
|
||||
|
||||
|
@ -38,14 +39,16 @@ void av_init_packet(AVPacket *pkt)
|
|||
pkt->dts = AV_NOPTS_VALUE;
|
||||
pkt->pos = -1;
|
||||
pkt->duration = 0;
|
||||
#if FF_API_CONVERGENCE_DURATION
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
pkt->convergence_duration = 0;
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
pkt->flags = 0;
|
||||
pkt->stream_index = 0;
|
||||
pkt->buf = NULL;
|
||||
pkt->side_data = NULL;
|
||||
pkt->side_data_elems = 0;
|
||||
pkt->opaque = NULL;
|
||||
pkt->opaque_ref = NULL;
|
||||
pkt->time_base = av_make_q(0, 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -56,12 +59,11 @@ static void get_packet_defaults(AVPacket *pkt)
|
|||
pkt->pts = AV_NOPTS_VALUE;
|
||||
pkt->dts = AV_NOPTS_VALUE;
|
||||
pkt->pos = -1;
|
||||
pkt->time_base = av_make_q(0, 1);
|
||||
}
|
||||
|
||||
AVPacket *av_packet_alloc(void)
|
||||
{
|
||||
AVPacket *pkt = av_malloc(sizeof(AVPacket));
|
||||
AVPacket *pkt = av_mallocz(sizeof(AVPacket));
|
||||
if (!pkt)
|
||||
return pkt;
|
||||
|
||||
|
@ -140,14 +142,7 @@ int av_grow_packet(AVPacket *pkt, int grow_by)
|
|||
|
||||
if (new_size + data_offset > pkt->buf->size ||
|
||||
!av_buffer_is_writable(pkt->buf)) {
|
||||
int ret;
|
||||
|
||||
// allocate slightly more than requested to avoid excessive
|
||||
// reallocations
|
||||
if (new_size + data_offset < INT_MAX - new_size/16)
|
||||
new_size += new_size/16;
|
||||
|
||||
ret = av_buffer_realloc(&pkt->buf, new_size + data_offset);
|
||||
int ret = av_buffer_realloc(&pkt->buf, new_size + data_offset);
|
||||
if (ret < 0) {
|
||||
pkt->data = old_data;
|
||||
return ret;
|
||||
|
@ -184,6 +179,108 @@ int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if FF_API_AVPACKET_OLD_API
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
#define ALLOC_MALLOC(data, size) data = av_malloc(size)
|
||||
#define ALLOC_BUF(data, size) \
|
||||
do { \
|
||||
av_buffer_realloc(&pkt->buf, size); \
|
||||
data = pkt->buf ? pkt->buf->data : NULL; \
|
||||
} while (0)
|
||||
|
||||
#define DUP_DATA(dst, src, size, padding, ALLOC) \
|
||||
do { \
|
||||
void *data; \
|
||||
if (padding) { \
|
||||
if ((unsigned)(size) > \
|
||||
(unsigned)(size) + AV_INPUT_BUFFER_PADDING_SIZE) \
|
||||
goto failed_alloc; \
|
||||
ALLOC(data, size + AV_INPUT_BUFFER_PADDING_SIZE); \
|
||||
} else { \
|
||||
ALLOC(data, size); \
|
||||
} \
|
||||
if (!data) \
|
||||
goto failed_alloc; \
|
||||
memcpy(data, src, size); \
|
||||
if (padding) \
|
||||
memset((uint8_t *)data + size, 0, \
|
||||
AV_INPUT_BUFFER_PADDING_SIZE); \
|
||||
dst = data; \
|
||||
} while (0)
|
||||
|
||||
/* Makes duplicates of data, side_data, but does not copy any other fields */
|
||||
static int copy_packet_data(AVPacket *pkt, const AVPacket *src, int dup)
|
||||
{
|
||||
pkt->data = NULL;
|
||||
pkt->side_data = NULL;
|
||||
pkt->side_data_elems = 0;
|
||||
if (pkt->buf) {
|
||||
AVBufferRef *ref = av_buffer_ref(src->buf);
|
||||
if (!ref)
|
||||
return AVERROR(ENOMEM);
|
||||
pkt->buf = ref;
|
||||
pkt->data = ref->data;
|
||||
} else {
|
||||
DUP_DATA(pkt->data, src->data, pkt->size, 1, ALLOC_BUF);
|
||||
}
|
||||
if (src->side_data_elems && dup) {
|
||||
pkt->side_data = src->side_data;
|
||||
pkt->side_data_elems = src->side_data_elems;
|
||||
}
|
||||
if (src->side_data_elems && !dup) {
|
||||
return av_copy_packet_side_data(pkt, src);
|
||||
}
|
||||
return 0;
|
||||
|
||||
failed_alloc:
|
||||
av_packet_unref(pkt);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
int av_copy_packet_side_data(AVPacket *pkt, const AVPacket *src)
|
||||
{
|
||||
if (src->side_data_elems) {
|
||||
int i;
|
||||
DUP_DATA(pkt->side_data, src->side_data,
|
||||
src->side_data_elems * sizeof(*src->side_data), 0, ALLOC_MALLOC);
|
||||
if (src != pkt) {
|
||||
memset(pkt->side_data, 0,
|
||||
src->side_data_elems * sizeof(*src->side_data));
|
||||
}
|
||||
for (i = 0; i < src->side_data_elems; i++) {
|
||||
DUP_DATA(pkt->side_data[i].data, src->side_data[i].data,
|
||||
src->side_data[i].size, 1, ALLOC_MALLOC);
|
||||
pkt->side_data[i].size = src->side_data[i].size;
|
||||
pkt->side_data[i].type = src->side_data[i].type;
|
||||
}
|
||||
}
|
||||
pkt->side_data_elems = src->side_data_elems;
|
||||
return 0;
|
||||
|
||||
failed_alloc:
|
||||
av_packet_unref(pkt);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
int av_dup_packet(AVPacket *pkt)
|
||||
{
|
||||
AVPacket tmp_pkt;
|
||||
|
||||
if (!pkt->buf && pkt->data) {
|
||||
tmp_pkt = *pkt;
|
||||
return copy_packet_data(pkt, &tmp_pkt, 1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int av_copy_packet(AVPacket *dst, const AVPacket *src)
|
||||
{
|
||||
*dst = *src;
|
||||
return copy_packet_data(dst, src, 0);
|
||||
}
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
|
||||
void av_packet_free_side_data(AVPacket *pkt)
|
||||
{
|
||||
int i;
|
||||
|
@ -193,6 +290,22 @@ void av_packet_free_side_data(AVPacket *pkt)
|
|||
pkt->side_data_elems = 0;
|
||||
}
|
||||
|
||||
#if FF_API_AVPACKET_OLD_API
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
void av_free_packet(AVPacket *pkt)
|
||||
{
|
||||
if (pkt) {
|
||||
if (pkt->buf)
|
||||
av_buffer_unref(&pkt->buf);
|
||||
pkt->data = NULL;
|
||||
pkt->size = 0;
|
||||
|
||||
av_packet_free_side_data(pkt);
|
||||
}
|
||||
}
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
|
||||
int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
|
||||
uint8_t *data, size_t size)
|
||||
{
|
||||
|
@ -228,12 +341,16 @@ int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
|
|||
|
||||
|
||||
uint8_t *av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
|
||||
size_t size)
|
||||
buffer_size_t size)
|
||||
{
|
||||
int ret;
|
||||
uint8_t *data;
|
||||
|
||||
#if FF_API_BUFFER_SIZE_T
|
||||
if ((unsigned)size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE)
|
||||
#else
|
||||
if (size > SIZE_MAX - AV_INPUT_BUFFER_PADDING_SIZE)
|
||||
#endif
|
||||
return NULL;
|
||||
data = av_mallocz(size + AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (!data)
|
||||
|
@ -249,7 +366,7 @@ uint8_t *av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
|
|||
}
|
||||
|
||||
uint8_t *av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type,
|
||||
size_t *size)
|
||||
buffer_size_t *size)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -299,12 +416,102 @@ const char *av_packet_side_data_name(enum AVPacketSideDataType type)
|
|||
case AV_PKT_DATA_ICC_PROFILE: return "ICC Profile";
|
||||
case AV_PKT_DATA_DOVI_CONF: return "DOVI configuration record";
|
||||
case AV_PKT_DATA_S12M_TIMECODE: return "SMPTE ST 12-1:2014 timecode";
|
||||
case AV_PKT_DATA_DYNAMIC_HDR10_PLUS: return "HDR10+ Dynamic Metadata (SMPTE 2094-40)";
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if FF_API_MERGE_SD_API
|
||||
|
||||
#define FF_MERGE_MARKER 0x8c4d9d108e25e9feULL
|
||||
|
||||
int av_packet_merge_side_data(AVPacket *pkt){
|
||||
if(pkt->side_data_elems){
|
||||
AVBufferRef *buf;
|
||||
int i;
|
||||
uint8_t *p;
|
||||
uint64_t size= pkt->size + 8LL + AV_INPUT_BUFFER_PADDING_SIZE;
|
||||
AVPacket old= *pkt;
|
||||
for (i=0; i<old.side_data_elems; i++) {
|
||||
size += old.side_data[i].size + 5LL;
|
||||
}
|
||||
if (size > INT_MAX)
|
||||
return AVERROR(EINVAL);
|
||||
buf = av_buffer_alloc(size);
|
||||
if (!buf)
|
||||
return AVERROR(ENOMEM);
|
||||
pkt->buf = buf;
|
||||
pkt->data = p = buf->data;
|
||||
pkt->size = size - AV_INPUT_BUFFER_PADDING_SIZE;
|
||||
bytestream_put_buffer(&p, old.data, old.size);
|
||||
for (i=old.side_data_elems-1; i>=0; i--) {
|
||||
bytestream_put_buffer(&p, old.side_data[i].data, old.side_data[i].size);
|
||||
bytestream_put_be32(&p, old.side_data[i].size);
|
||||
*p++ = old.side_data[i].type | ((i==old.side_data_elems-1)*128);
|
||||
}
|
||||
bytestream_put_be64(&p, FF_MERGE_MARKER);
|
||||
av_assert0(p-pkt->data == pkt->size);
|
||||
memset(p, 0, AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
av_packet_unref(&old);
|
||||
pkt->side_data_elems = 0;
|
||||
pkt->side_data = NULL;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int av_packet_split_side_data(AVPacket *pkt){
|
||||
if (!pkt->side_data_elems && pkt->size >12 && AV_RB64(pkt->data + pkt->size - 8) == FF_MERGE_MARKER){
|
||||
int i;
|
||||
unsigned int size;
|
||||
uint8_t *p;
|
||||
|
||||
p = pkt->data + pkt->size - 8 - 5;
|
||||
for (i=1; ; i++){
|
||||
size = AV_RB32(p);
|
||||
if (size>INT_MAX - 5 || p - pkt->data < size)
|
||||
return 0;
|
||||
if (p[4]&128)
|
||||
break;
|
||||
if (p - pkt->data < size + 5)
|
||||
return 0;
|
||||
p-= size+5;
|
||||
}
|
||||
|
||||
if (i > AV_PKT_DATA_NB)
|
||||
return AVERROR(ERANGE);
|
||||
|
||||
pkt->side_data = av_malloc_array(i, sizeof(*pkt->side_data));
|
||||
if (!pkt->side_data)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
p= pkt->data + pkt->size - 8 - 5;
|
||||
for (i=0; ; i++){
|
||||
size= AV_RB32(p);
|
||||
av_assert0(size<=INT_MAX - 5 && p - pkt->data >= size);
|
||||
pkt->side_data[i].data = av_mallocz(size + AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
pkt->side_data[i].size = size;
|
||||
pkt->side_data[i].type = p[4]&127;
|
||||
if (!pkt->side_data[i].data)
|
||||
return AVERROR(ENOMEM);
|
||||
memcpy(pkt->side_data[i].data, p-size, size);
|
||||
pkt->size -= size + 5;
|
||||
if(p[4]&128)
|
||||
break;
|
||||
p-= size+5;
|
||||
}
|
||||
pkt->size -= 8;
|
||||
pkt->side_data_elems = i+1;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if FF_API_BUFFER_SIZE_T
|
||||
uint8_t *av_packet_pack_dictionary(AVDictionary *dict, int *size)
|
||||
#else
|
||||
uint8_t *av_packet_pack_dictionary(AVDictionary *dict, size_t *size)
|
||||
#endif
|
||||
{
|
||||
uint8_t *data = NULL;
|
||||
*size = 0;
|
||||
|
@ -323,7 +530,11 @@ uint8_t *av_packet_pack_dictionary(AVDictionary *dict, size_t *size)
|
|||
|
||||
if (pass)
|
||||
memcpy(data + total_length, str, len);
|
||||
#if FF_API_BUFFER_SIZE_T
|
||||
else if (len > INT_MAX - total_length)
|
||||
#else
|
||||
else if (len > SIZE_MAX - total_length)
|
||||
#endif
|
||||
return NULL;
|
||||
total_length += len;
|
||||
}
|
||||
|
@ -339,8 +550,12 @@ uint8_t *av_packet_pack_dictionary(AVDictionary *dict, size_t *size)
|
|||
return data;
|
||||
}
|
||||
|
||||
#if FF_API_BUFFER_SIZE_T
|
||||
int av_packet_unpack_dictionary(const uint8_t *data, int size, AVDictionary **dict)
|
||||
#else
|
||||
int av_packet_unpack_dictionary(const uint8_t *data, size_t size,
|
||||
AVDictionary **dict)
|
||||
#endif
|
||||
{
|
||||
const uint8_t *end;
|
||||
int ret;
|
||||
|
@ -367,7 +582,7 @@ int av_packet_unpack_dictionary(const uint8_t *data, size_t size,
|
|||
}
|
||||
|
||||
int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
|
||||
size_t size)
|
||||
buffer_size_t size)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -384,32 +599,29 @@ int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
|
|||
|
||||
int av_packet_copy_props(AVPacket *dst, const AVPacket *src)
|
||||
{
|
||||
int i, ret;
|
||||
int i;
|
||||
|
||||
dst->pts = src->pts;
|
||||
dst->dts = src->dts;
|
||||
dst->pos = src->pos;
|
||||
dst->duration = src->duration;
|
||||
#if FF_API_CONVERGENCE_DURATION
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
dst->convergence_duration = src->convergence_duration;
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
dst->flags = src->flags;
|
||||
dst->stream_index = src->stream_index;
|
||||
dst->opaque = src->opaque;
|
||||
dst->time_base = src->time_base;
|
||||
dst->opaque_ref = NULL;
|
||||
|
||||
dst->side_data = NULL;
|
||||
dst->side_data_elems = 0;
|
||||
|
||||
ret = av_buffer_replace(&dst->opaque_ref, src->opaque_ref);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
for (i = 0; i < src->side_data_elems; i++) {
|
||||
enum AVPacketSideDataType type = src->side_data[i].type;
|
||||
size_t size = src->side_data[i].size;
|
||||
buffer_size_t size = src->side_data[i].size;
|
||||
uint8_t *src_data = src->side_data[i].data;
|
||||
uint8_t *dst_data = av_packet_new_side_data(dst, type, size);
|
||||
|
||||
if (!dst_data) {
|
||||
av_buffer_unref(&dst->opaque_ref);
|
||||
av_packet_free_side_data(dst);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
@ -422,7 +634,6 @@ int av_packet_copy_props(AVPacket *dst, const AVPacket *src)
|
|||
void av_packet_unref(AVPacket *pkt)
|
||||
{
|
||||
av_packet_free_side_data(pkt);
|
||||
av_buffer_unref(&pkt->opaque_ref);
|
||||
av_buffer_unref(&pkt->buf);
|
||||
get_packet_defaults(pkt);
|
||||
}
|
||||
|
@ -531,21 +742,27 @@ void av_packet_rescale_ts(AVPacket *pkt, AVRational src_tb, AVRational dst_tb)
|
|||
pkt->dts = av_rescale_q(pkt->dts, src_tb, dst_tb);
|
||||
if (pkt->duration > 0)
|
||||
pkt->duration = av_rescale_q(pkt->duration, src_tb, dst_tb);
|
||||
#if FF_API_CONVERGENCE_DURATION
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
if (pkt->convergence_duration > 0)
|
||||
pkt->convergence_duration = av_rescale_q(pkt->convergence_duration, src_tb, dst_tb);
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
}
|
||||
|
||||
int avpriv_packet_list_put(PacketList *packet_buffer,
|
||||
int avpriv_packet_list_put(PacketList **packet_buffer,
|
||||
PacketList **plast_pktl,
|
||||
AVPacket *pkt,
|
||||
int (*copy)(AVPacket *dst, const AVPacket *src),
|
||||
int flags)
|
||||
{
|
||||
PacketListEntry *pktl = av_malloc(sizeof(*pktl));
|
||||
PacketList *pktl = av_mallocz(sizeof(PacketList));
|
||||
int ret;
|
||||
|
||||
if (!pktl)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
if (copy) {
|
||||
get_packet_defaults(&pktl->pkt);
|
||||
ret = copy(&pktl->pkt, pkt);
|
||||
if (ret < 0) {
|
||||
av_free(pktl);
|
||||
|
@ -560,49 +777,50 @@ int avpriv_packet_list_put(PacketList *packet_buffer,
|
|||
av_packet_move_ref(&pktl->pkt, pkt);
|
||||
}
|
||||
|
||||
pktl->next = NULL;
|
||||
|
||||
if (packet_buffer->head)
|
||||
packet_buffer->tail->next = pktl;
|
||||
if (*packet_buffer)
|
||||
(*plast_pktl)->next = pktl;
|
||||
else
|
||||
packet_buffer->head = pktl;
|
||||
*packet_buffer = pktl;
|
||||
|
||||
/* Add the packet in the buffered packet list. */
|
||||
packet_buffer->tail = pktl;
|
||||
*plast_pktl = pktl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int avpriv_packet_list_get(PacketList *pkt_buffer,
|
||||
int avpriv_packet_list_get(PacketList **pkt_buffer,
|
||||
PacketList **pkt_buffer_end,
|
||||
AVPacket *pkt)
|
||||
{
|
||||
PacketListEntry *pktl = pkt_buffer->head;
|
||||
if (!pktl)
|
||||
PacketList *pktl;
|
||||
if (!*pkt_buffer)
|
||||
return AVERROR(EAGAIN);
|
||||
pktl = *pkt_buffer;
|
||||
*pkt = pktl->pkt;
|
||||
pkt_buffer->head = pktl->next;
|
||||
if (!pkt_buffer->head)
|
||||
pkt_buffer->tail = NULL;
|
||||
*pkt_buffer = pktl->next;
|
||||
if (!pktl->next)
|
||||
*pkt_buffer_end = NULL;
|
||||
av_freep(&pktl);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void avpriv_packet_list_free(PacketList *pkt_buf)
|
||||
void avpriv_packet_list_free(PacketList **pkt_buf, PacketList **pkt_buf_end)
|
||||
{
|
||||
PacketListEntry *tmp = pkt_buf->head;
|
||||
PacketList *tmp = *pkt_buf;
|
||||
|
||||
while (tmp) {
|
||||
PacketListEntry *pktl = tmp;
|
||||
PacketList *pktl = tmp;
|
||||
tmp = pktl->next;
|
||||
av_packet_unref(&pktl->pkt);
|
||||
av_freep(&pktl);
|
||||
}
|
||||
pkt_buf->head = pkt_buf->tail = NULL;
|
||||
*pkt_buf = NULL;
|
||||
*pkt_buf_end = NULL;
|
||||
}
|
||||
|
||||
int ff_side_data_set_encoder_stats(AVPacket *pkt, int quality, int64_t *error, int error_count, int pict_type)
|
||||
{
|
||||
uint8_t *side_data;
|
||||
size_t side_data_size;
|
||||
buffer_size_t side_data_size;
|
||||
int i;
|
||||
|
||||
side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_QUALITY_STATS, &side_data_size);
|
||||
|
@ -628,7 +846,7 @@ int ff_side_data_set_prft(AVPacket *pkt, int64_t timestamp)
|
|||
{
|
||||
AVProducerReferenceTime *prft;
|
||||
uint8_t *side_data;
|
||||
size_t side_data_size;
|
||||
buffer_size_t side_data_size;
|
||||
|
||||
side_data = av_packet_get_side_data(pkt, AV_PKT_DATA_PRFT, &side_data_size);
|
||||
if (!side_data) {
|
||||
|
|
|
@ -28,13 +28,33 @@
|
|||
* bitstream api.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
#include "libavutil/qsort.h"
|
||||
#include "avcodec.h"
|
||||
#include "internal.h"
|
||||
#include "mathops.h"
|
||||
#include "put_bits.h"
|
||||
#include "vlc.h"
|
||||
|
||||
const uint8_t ff_log2_run[41]={
|
||||
0, 0, 0, 0, 1, 1, 1, 1,
|
||||
2, 2, 2, 2, 3, 3, 3, 3,
|
||||
4, 4, 5, 5, 6, 6, 7, 7,
|
||||
8, 9,10,11,12,13,14,15,
|
||||
16,17,18,19,20,21,22,23,
|
||||
24,
|
||||
};
|
||||
|
||||
#if FF_API_AVPRIV_PUT_BITS
|
||||
void avpriv_align_put_bits(PutBitContext *s)
|
||||
{
|
||||
align_put_bits(s);
|
||||
}
|
||||
void avpriv_copy_bits(PutBitContext *pb, const uint8_t *src, int length)
|
||||
{
|
||||
ff_copy_bits(pb, src, length);
|
||||
}
|
||||
#endif
|
||||
|
||||
void ff_put_string(PutBitContext *pb, const char *string, int terminate_string)
|
||||
{
|
||||
|
@ -70,3 +90,345 @@ void ff_copy_bits(PutBitContext *pb, const uint8_t *src, int length)
|
|||
|
||||
put_bits(pb, bits, AV_RB16(src + 2 * words) >> (16 - bits));
|
||||
}
|
||||
|
||||
/* VLC decoding */
|
||||
|
||||
#define GET_DATA(v, table, i, wrap, size) \
|
||||
{ \
|
||||
const uint8_t *ptr = (const uint8_t *)table + i * wrap; \
|
||||
switch(size) { \
|
||||
case 1: \
|
||||
v = *(const uint8_t *)ptr; \
|
||||
break; \
|
||||
case 2: \
|
||||
v = *(const uint16_t *)ptr; \
|
||||
break; \
|
||||
case 4: \
|
||||
default: \
|
||||
av_assert1(size == 4); \
|
||||
v = *(const uint32_t *)ptr; \
|
||||
break; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
static int alloc_table(VLC *vlc, int size, int use_static)
|
||||
{
|
||||
int index = vlc->table_size;
|
||||
|
||||
vlc->table_size += size;
|
||||
if (vlc->table_size > vlc->table_allocated) {
|
||||
if (use_static)
|
||||
abort(); // cannot do anything, init_vlc() is used with too little memory
|
||||
vlc->table_allocated += (1 << vlc->bits);
|
||||
vlc->table = av_realloc_f(vlc->table, vlc->table_allocated, sizeof(VLC_TYPE) * 2);
|
||||
if (!vlc->table) {
|
||||
vlc->table_allocated = 0;
|
||||
vlc->table_size = 0;
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
memset(vlc->table + vlc->table_allocated - (1 << vlc->bits), 0, sizeof(VLC_TYPE) * 2 << vlc->bits);
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
#define LOCALBUF_ELEMS 1500 // the maximum currently needed is 1296 by rv34
|
||||
|
||||
typedef struct VLCcode {
|
||||
uint8_t bits;
|
||||
VLC_TYPE symbol;
|
||||
/** codeword, with the first bit-to-be-read in the msb
|
||||
* (even if intended for a little-endian bitstream reader) */
|
||||
uint32_t code;
|
||||
} VLCcode;
|
||||
|
||||
static int vlc_common_init(VLC *vlc_arg, int nb_bits, int nb_codes,
|
||||
VLC **vlc, VLC *localvlc, VLCcode **buf,
|
||||
int flags)
|
||||
{
|
||||
*vlc = vlc_arg;
|
||||
(*vlc)->bits = nb_bits;
|
||||
if (flags & INIT_VLC_USE_NEW_STATIC) {
|
||||
av_assert0(nb_codes <= LOCALBUF_ELEMS);
|
||||
*localvlc = *vlc_arg;
|
||||
*vlc = localvlc;
|
||||
(*vlc)->table_size = 0;
|
||||
} else {
|
||||
(*vlc)->table = NULL;
|
||||
(*vlc)->table_allocated = 0;
|
||||
(*vlc)->table_size = 0;
|
||||
}
|
||||
if (nb_codes > LOCALBUF_ELEMS) {
|
||||
*buf = av_malloc_array(nb_codes, sizeof(VLCcode));
|
||||
if (!*buf)
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int compare_vlcspec(const void *a, const void *b)
|
||||
{
|
||||
const VLCcode *sa = a, *sb = b;
|
||||
return (sa->code >> 1) - (sb->code >> 1);
|
||||
}
|
||||
/**
|
||||
* Build VLC decoding tables suitable for use with get_vlc().
|
||||
*
|
||||
* @param vlc the context to be initialized
|
||||
*
|
||||
* @param table_nb_bits max length of vlc codes to store directly in this table
|
||||
* (Longer codes are delegated to subtables.)
|
||||
*
|
||||
* @param nb_codes number of elements in codes[]
|
||||
*
|
||||
* @param codes descriptions of the vlc codes
|
||||
* These must be ordered such that codes going into the same subtable are contiguous.
|
||||
* Sorting by VLCcode.code is sufficient, though not necessary.
|
||||
*/
|
||||
static int build_table(VLC *vlc, int table_nb_bits, int nb_codes,
|
||||
VLCcode *codes, int flags)
|
||||
{
|
||||
int table_size, table_index, index, code_prefix, symbol, subtable_bits;
|
||||
int i, j, k, n, nb, inc;
|
||||
uint32_t code;
|
||||
volatile VLC_TYPE (* volatile table)[2]; // the double volatile is needed to prevent an internal compiler error in gcc 4.2
|
||||
|
||||
if (table_nb_bits > 30)
|
||||
return AVERROR(EINVAL);
|
||||
table_size = 1 << table_nb_bits;
|
||||
table_index = alloc_table(vlc, table_size, flags & INIT_VLC_USE_NEW_STATIC);
|
||||
ff_dlog(NULL, "new table index=%d size=%d\n", table_index, table_size);
|
||||
if (table_index < 0)
|
||||
return table_index;
|
||||
table = (volatile VLC_TYPE (*)[2])&vlc->table[table_index];
|
||||
|
||||
/* first pass: map codes and compute auxiliary table sizes */
|
||||
for (i = 0; i < nb_codes; i++) {
|
||||
n = codes[i].bits;
|
||||
code = codes[i].code;
|
||||
symbol = codes[i].symbol;
|
||||
ff_dlog(NULL, "i=%d n=%d code=0x%"PRIx32"\n", i, n, code);
|
||||
if (n <= table_nb_bits) {
|
||||
/* no need to add another table */
|
||||
j = code >> (32 - table_nb_bits);
|
||||
nb = 1 << (table_nb_bits - n);
|
||||
inc = 1;
|
||||
if (flags & INIT_VLC_OUTPUT_LE) {
|
||||
j = bitswap_32(code);
|
||||
inc = 1 << n;
|
||||
}
|
||||
for (k = 0; k < nb; k++) {
|
||||
int bits = table[j][1];
|
||||
int oldsym = table[j][0];
|
||||
ff_dlog(NULL, "%4x: code=%d n=%d\n", j, i, n);
|
||||
if ((bits || oldsym) && (bits != n || oldsym != symbol)) {
|
||||
av_log(NULL, AV_LOG_ERROR, "incorrect codes\n");
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
table[j][1] = n; //bits
|
||||
table[j][0] = symbol;
|
||||
j += inc;
|
||||
}
|
||||
} else {
|
||||
/* fill auxiliary table recursively */
|
||||
n -= table_nb_bits;
|
||||
code_prefix = code >> (32 - table_nb_bits);
|
||||
subtable_bits = n;
|
||||
codes[i].bits = n;
|
||||
codes[i].code = code << table_nb_bits;
|
||||
for (k = i+1; k < nb_codes; k++) {
|
||||
n = codes[k].bits - table_nb_bits;
|
||||
if (n <= 0)
|
||||
break;
|
||||
code = codes[k].code;
|
||||
if (code >> (32 - table_nb_bits) != code_prefix)
|
||||
break;
|
||||
codes[k].bits = n;
|
||||
codes[k].code = code << table_nb_bits;
|
||||
subtable_bits = FFMAX(subtable_bits, n);
|
||||
}
|
||||
subtable_bits = FFMIN(subtable_bits, table_nb_bits);
|
||||
j = (flags & INIT_VLC_OUTPUT_LE) ? bitswap_32(code_prefix) >> (32 - table_nb_bits) : code_prefix;
|
||||
table[j][1] = -subtable_bits;
|
||||
ff_dlog(NULL, "%4x: n=%d (subtable)\n",
|
||||
j, codes[i].bits + table_nb_bits);
|
||||
index = build_table(vlc, subtable_bits, k-i, codes+i, flags);
|
||||
if (index < 0)
|
||||
return index;
|
||||
/* note: realloc has been done, so reload tables */
|
||||
table = (volatile VLC_TYPE (*)[2])&vlc->table[table_index];
|
||||
table[j][0] = index; //code
|
||||
if (table[j][0] != index) {
|
||||
avpriv_request_sample(NULL, "strange codes");
|
||||
return AVERROR_PATCHWELCOME;
|
||||
}
|
||||
i = k-1;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < table_size; i++) {
|
||||
if (table[i][1] == 0) //bits
|
||||
table[i][0] = -1; //codes
|
||||
}
|
||||
|
||||
return table_index;
|
||||
}
|
||||
|
||||
static int vlc_common_end(VLC *vlc, int nb_bits, int nb_codes, VLCcode *codes,
|
||||
int flags, VLC *vlc_arg, VLCcode localbuf[LOCALBUF_ELEMS])
|
||||
{
|
||||
int ret = build_table(vlc, nb_bits, nb_codes, codes, flags);
|
||||
|
||||
if (flags & INIT_VLC_USE_NEW_STATIC) {
|
||||
if (vlc->table_size != vlc->table_allocated &&
|
||||
!(flags & (INIT_VLC_STATIC_OVERLONG & ~INIT_VLC_USE_NEW_STATIC)))
|
||||
av_log(NULL, AV_LOG_ERROR, "needed %d had %d\n", vlc->table_size, vlc->table_allocated);
|
||||
av_assert0(ret >= 0);
|
||||
*vlc_arg = *vlc;
|
||||
} else {
|
||||
if (codes != localbuf)
|
||||
av_free(codes);
|
||||
if (ret < 0) {
|
||||
av_freep(&vlc->table);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Build VLC decoding tables suitable for use with get_vlc().
|
||||
|
||||
'nb_bits' sets the decoding table size (2^nb_bits) entries. The
|
||||
bigger it is, the faster is the decoding. But it should not be too
|
||||
big to save memory and L1 cache. '9' is a good compromise.
|
||||
|
||||
'nb_codes' : number of vlcs codes
|
||||
|
||||
'bits' : table which gives the size (in bits) of each vlc code.
|
||||
|
||||
'codes' : table which gives the bit pattern of of each vlc code.
|
||||
|
||||
'symbols' : table which gives the values to be returned from get_vlc().
|
||||
|
||||
'xxx_wrap' : give the number of bytes between each entry of the
|
||||
'bits' or 'codes' tables.
|
||||
|
||||
'xxx_size' : gives the number of bytes of each entry of the 'bits'
|
||||
or 'codes' tables. Currently 1,2 and 4 are supported.
|
||||
|
||||
'wrap' and 'size' make it possible to use any memory configuration and types
|
||||
(byte/word/long) to store the 'bits', 'codes', and 'symbols' tables.
|
||||
*/
|
||||
int ff_init_vlc_sparse(VLC *vlc_arg, int nb_bits, int nb_codes,
|
||||
const void *bits, int bits_wrap, int bits_size,
|
||||
const void *codes, int codes_wrap, int codes_size,
|
||||
const void *symbols, int symbols_wrap, int symbols_size,
|
||||
int flags)
|
||||
{
|
||||
VLCcode localbuf[LOCALBUF_ELEMS], *buf = localbuf;
|
||||
int i, j, ret;
|
||||
VLC localvlc, *vlc;
|
||||
|
||||
ret = vlc_common_init(vlc_arg, nb_bits, nb_codes, &vlc, &localvlc,
|
||||
&buf, flags);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
av_assert0(symbols_size <= 2 || !symbols);
|
||||
j = 0;
|
||||
#define COPY(condition)\
|
||||
for (i = 0; i < nb_codes; i++) { \
|
||||
unsigned len; \
|
||||
GET_DATA(len, bits, i, bits_wrap, bits_size); \
|
||||
if (!(condition)) \
|
||||
continue; \
|
||||
if (len > 3*nb_bits || len > 32) { \
|
||||
av_log(NULL, AV_LOG_ERROR, "Too long VLC (%u) in init_vlc\n", len);\
|
||||
if (buf != localbuf) \
|
||||
av_free(buf); \
|
||||
return AVERROR(EINVAL); \
|
||||
} \
|
||||
buf[j].bits = len; \
|
||||
GET_DATA(buf[j].code, codes, i, codes_wrap, codes_size); \
|
||||
if (buf[j].code >= (1LL<<buf[j].bits)) { \
|
||||
av_log(NULL, AV_LOG_ERROR, "Invalid code %"PRIx32" for %d in " \
|
||||
"init_vlc\n", buf[j].code, i); \
|
||||
if (buf != localbuf) \
|
||||
av_free(buf); \
|
||||
return AVERROR(EINVAL); \
|
||||
} \
|
||||
if (flags & INIT_VLC_INPUT_LE) \
|
||||
buf[j].code = bitswap_32(buf[j].code); \
|
||||
else \
|
||||
buf[j].code <<= 32 - buf[j].bits; \
|
||||
if (symbols) \
|
||||
GET_DATA(buf[j].symbol, symbols, i, symbols_wrap, symbols_size) \
|
||||
else \
|
||||
buf[j].symbol = i; \
|
||||
j++; \
|
||||
}
|
||||
COPY(len > nb_bits);
|
||||
// qsort is the slowest part of init_vlc, and could probably be improved or avoided
|
||||
AV_QSORT(buf, j, struct VLCcode, compare_vlcspec);
|
||||
COPY(len && len <= nb_bits);
|
||||
nb_codes = j;
|
||||
|
||||
return vlc_common_end(vlc, nb_bits, nb_codes, buf,
|
||||
flags, vlc_arg, localbuf);
|
||||
}
|
||||
|
||||
int ff_init_vlc_from_lengths(VLC *vlc_arg, int nb_bits, int nb_codes,
|
||||
const int8_t *lens, int lens_wrap,
|
||||
const void *symbols, int symbols_wrap, int symbols_size,
|
||||
int offset, int flags, void *logctx)
|
||||
{
|
||||
VLCcode localbuf[LOCALBUF_ELEMS], *buf = localbuf;
|
||||
VLC localvlc, *vlc;
|
||||
uint64_t code;
|
||||
int ret, j, len_max = FFMIN(32, 3 * nb_bits);
|
||||
|
||||
ret = vlc_common_init(vlc_arg, nb_bits, nb_codes, &vlc, &localvlc,
|
||||
&buf, flags);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
j = code = 0;
|
||||
for (int i = 0; i < nb_codes; i++, lens += lens_wrap) {
|
||||
int len = *lens;
|
||||
if (len > 0) {
|
||||
unsigned sym;
|
||||
|
||||
buf[j].bits = len;
|
||||
if (symbols)
|
||||
GET_DATA(sym, symbols, i, symbols_wrap, symbols_size)
|
||||
else
|
||||
sym = i;
|
||||
buf[j].symbol = sym + offset;
|
||||
buf[j++].code = code;
|
||||
} else if (len < 0) {
|
||||
len = -len;
|
||||
} else
|
||||
continue;
|
||||
if (len > len_max || code & ((1U << (32 - len)) - 1)) {
|
||||
av_log(logctx, AV_LOG_ERROR, "Invalid VLC (length %u)\n", len);
|
||||
goto fail;
|
||||
}
|
||||
code += 1U << (32 - len);
|
||||
if (code > UINT32_MAX + 1ULL) {
|
||||
av_log(logctx, AV_LOG_ERROR, "Overdetermined VLC tree\n");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
return vlc_common_end(vlc, nb_bits, j, buf,
|
||||
flags, vlc_arg, localbuf);
|
||||
fail:
|
||||
if (buf != localbuf)
|
||||
av_free(buf);
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
void ff_free_vlc(VLC *vlc)
|
||||
{
|
||||
av_freep(&vlc->table);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,185 @@
|
|||
/*
|
||||
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/mem.h"
|
||||
#include "libavutil/opt.h"
|
||||
|
||||
#if FF_API_OLD_BSF
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
|
||||
const AVBitStreamFilter *av_bitstream_filter_next(const AVBitStreamFilter *f)
|
||||
{
|
||||
const AVBitStreamFilter *filter = NULL;
|
||||
void *opaque = NULL;
|
||||
|
||||
while (filter != f)
|
||||
filter = av_bsf_iterate(&opaque);
|
||||
|
||||
return av_bsf_iterate(&opaque);
|
||||
}
|
||||
|
||||
void av_register_bitstream_filter(AVBitStreamFilter *bsf)
|
||||
{
|
||||
}
|
||||
|
||||
typedef struct BSFCompatContext {
|
||||
AVBSFContext *ctx;
|
||||
int extradata_updated;
|
||||
} BSFCompatContext;
|
||||
|
||||
AVBitStreamFilterContext *av_bitstream_filter_init(const char *name)
|
||||
{
|
||||
AVBitStreamFilterContext *ctx = NULL;
|
||||
BSFCompatContext *priv = NULL;
|
||||
const AVBitStreamFilter *bsf;
|
||||
|
||||
bsf = av_bsf_get_by_name(name);
|
||||
if (!bsf)
|
||||
return NULL;
|
||||
|
||||
ctx = av_mallocz(sizeof(*ctx));
|
||||
if (!ctx)
|
||||
return NULL;
|
||||
|
||||
priv = av_mallocz(sizeof(*priv));
|
||||
if (!priv)
|
||||
goto fail;
|
||||
|
||||
|
||||
ctx->filter = bsf;
|
||||
ctx->priv_data = priv;
|
||||
|
||||
return ctx;
|
||||
|
||||
fail:
|
||||
if (priv)
|
||||
av_bsf_free(&priv->ctx);
|
||||
av_freep(&priv);
|
||||
av_freep(&ctx);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void av_bitstream_filter_close(AVBitStreamFilterContext *bsfc)
|
||||
{
|
||||
BSFCompatContext *priv;
|
||||
|
||||
if (!bsfc)
|
||||
return;
|
||||
|
||||
priv = bsfc->priv_data;
|
||||
|
||||
av_bsf_free(&priv->ctx);
|
||||
av_freep(&bsfc->priv_data);
|
||||
av_free(bsfc);
|
||||
}
|
||||
|
||||
int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc,
|
||||
AVCodecContext *avctx, const char *args,
|
||||
uint8_t **poutbuf, int *poutbuf_size,
|
||||
const uint8_t *buf, int buf_size, int keyframe)
|
||||
{
|
||||
BSFCompatContext *priv = bsfc->priv_data;
|
||||
AVPacket pkt = { 0 };
|
||||
int ret;
|
||||
|
||||
if (!priv->ctx) {
|
||||
ret = av_bsf_alloc(bsfc->filter, &priv->ctx);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = avcodec_parameters_from_context(priv->ctx->par_in, avctx);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
priv->ctx->time_base_in = avctx->time_base;
|
||||
|
||||
if (bsfc->args && bsfc->filter->priv_class) {
|
||||
const AVOption *opt = av_opt_next(priv->ctx->priv_data, NULL);
|
||||
const char * shorthand[2] = {NULL};
|
||||
|
||||
if (opt)
|
||||
shorthand[0] = opt->name;
|
||||
|
||||
ret = av_opt_set_from_string(priv->ctx->priv_data, bsfc->args, shorthand, "=", ":");
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = av_bsf_init(priv->ctx);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
pkt.data = (uint8_t *)buf;
|
||||
pkt.size = buf_size;
|
||||
|
||||
ret = av_bsf_send_packet(priv->ctx, &pkt);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
*poutbuf = NULL;
|
||||
*poutbuf_size = 0;
|
||||
|
||||
ret = av_bsf_receive_packet(priv->ctx, &pkt);
|
||||
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
|
||||
return 0;
|
||||
else if (ret < 0)
|
||||
return ret;
|
||||
|
||||
*poutbuf = av_malloc(pkt.size + AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (!*poutbuf) {
|
||||
av_packet_unref(&pkt);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
*poutbuf_size = pkt.size;
|
||||
memcpy(*poutbuf, pkt.data, pkt.size);
|
||||
|
||||
av_packet_unref(&pkt);
|
||||
|
||||
/* drain all the remaining packets we cannot return */
|
||||
while (ret >= 0) {
|
||||
ret = av_bsf_receive_packet(priv->ctx, &pkt);
|
||||
av_packet_unref(&pkt);
|
||||
}
|
||||
|
||||
if (!priv->extradata_updated) {
|
||||
/* update extradata in avctx from the output codec parameters */
|
||||
if (priv->ctx->par_out->extradata_size && (!args || !strstr(args, "private_spspps_buf"))) {
|
||||
av_freep(&avctx->extradata);
|
||||
avctx->extradata_size = 0;
|
||||
avctx->extradata = av_mallocz(priv->ctx->par_out->extradata_size + AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (!avctx->extradata)
|
||||
return AVERROR(ENOMEM);
|
||||
memcpy(avctx->extradata, priv->ctx->par_out->extradata, priv->ctx->par_out->extradata_size);
|
||||
avctx->extradata_size = priv->ctx->par_out->extradata_size;
|
||||
}
|
||||
|
||||
priv->extradata_updated = 1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
|
@ -16,68 +16,71 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include "config.h"
|
||||
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/log.h"
|
||||
|
||||
#include "bsf.h"
|
||||
#include "avcodec.h"
|
||||
#include "bsf_internal.h"
|
||||
|
||||
extern const FFBitStreamFilter ff_aac_adtstoasc_bsf;
|
||||
extern const FFBitStreamFilter ff_av1_frame_merge_bsf;
|
||||
extern const FFBitStreamFilter ff_av1_frame_split_bsf;
|
||||
extern const FFBitStreamFilter ff_av1_metadata_bsf;
|
||||
extern const FFBitStreamFilter ff_chomp_bsf;
|
||||
extern const FFBitStreamFilter ff_dump_extradata_bsf;
|
||||
extern const FFBitStreamFilter ff_dca_core_bsf;
|
||||
extern const FFBitStreamFilter ff_dv_error_marker_bsf;
|
||||
extern const FFBitStreamFilter ff_eac3_core_bsf;
|
||||
extern const FFBitStreamFilter ff_extract_extradata_bsf;
|
||||
extern const FFBitStreamFilter ff_filter_units_bsf;
|
||||
extern const FFBitStreamFilter ff_h264_metadata_bsf;
|
||||
extern const FFBitStreamFilter ff_h264_mp4toannexb_bsf;
|
||||
extern const FFBitStreamFilter ff_h264_redundant_pps_bsf;
|
||||
extern const FFBitStreamFilter ff_hapqa_extract_bsf;
|
||||
extern const FFBitStreamFilter ff_hevc_metadata_bsf;
|
||||
extern const FFBitStreamFilter ff_hevc_mp4toannexb_bsf;
|
||||
extern const FFBitStreamFilter ff_imx_dump_header_bsf;
|
||||
extern const FFBitStreamFilter ff_mjpeg2jpeg_bsf;
|
||||
extern const FFBitStreamFilter ff_mjpega_dump_header_bsf;
|
||||
extern const FFBitStreamFilter ff_mp3_header_decompress_bsf;
|
||||
extern const FFBitStreamFilter ff_mpeg2_metadata_bsf;
|
||||
extern const FFBitStreamFilter ff_mpeg4_unpack_bframes_bsf;
|
||||
extern const FFBitStreamFilter ff_mov2textsub_bsf;
|
||||
extern const FFBitStreamFilter ff_noise_bsf;
|
||||
extern const FFBitStreamFilter ff_null_bsf;
|
||||
extern const FFBitStreamFilter ff_opus_metadata_bsf;
|
||||
extern const FFBitStreamFilter ff_pcm_rechunk_bsf;
|
||||
extern const FFBitStreamFilter ff_pgs_frame_merge_bsf;
|
||||
extern const FFBitStreamFilter ff_prores_metadata_bsf;
|
||||
extern const FFBitStreamFilter ff_remove_extradata_bsf;
|
||||
extern const FFBitStreamFilter ff_setts_bsf;
|
||||
extern const FFBitStreamFilter ff_text2movsub_bsf;
|
||||
extern const FFBitStreamFilter ff_trace_headers_bsf;
|
||||
extern const FFBitStreamFilter ff_truehd_core_bsf;
|
||||
extern const FFBitStreamFilter ff_vp9_metadata_bsf;
|
||||
extern const FFBitStreamFilter ff_vp9_raw_reorder_bsf;
|
||||
extern const FFBitStreamFilter ff_vp9_superframe_bsf;
|
||||
extern const FFBitStreamFilter ff_vp9_superframe_split_bsf;
|
||||
extern const AVBitStreamFilter ff_aac_adtstoasc_bsf;
|
||||
extern const AVBitStreamFilter ff_av1_frame_merge_bsf;
|
||||
extern const AVBitStreamFilter ff_av1_frame_split_bsf;
|
||||
extern const AVBitStreamFilter ff_av1_metadata_bsf;
|
||||
extern const AVBitStreamFilter ff_chomp_bsf;
|
||||
extern const AVBitStreamFilter ff_dump_extradata_bsf;
|
||||
extern const AVBitStreamFilter ff_dca_core_bsf;
|
||||
extern const AVBitStreamFilter ff_eac3_core_bsf;
|
||||
extern const AVBitStreamFilter ff_extract_extradata_bsf;
|
||||
extern const AVBitStreamFilter ff_filter_units_bsf;
|
||||
extern const AVBitStreamFilter ff_h264_metadata_bsf;
|
||||
extern const AVBitStreamFilter ff_h264_mp4toannexb_bsf;
|
||||
extern const AVBitStreamFilter ff_h264_redundant_pps_bsf;
|
||||
extern const AVBitStreamFilter ff_hapqa_extract_bsf;
|
||||
extern const AVBitStreamFilter ff_hevc_metadata_bsf;
|
||||
extern const AVBitStreamFilter ff_hevc_mp4toannexb_bsf;
|
||||
extern const AVBitStreamFilter ff_imx_dump_header_bsf;
|
||||
extern const AVBitStreamFilter ff_mjpeg2jpeg_bsf;
|
||||
extern const AVBitStreamFilter ff_mjpega_dump_header_bsf;
|
||||
extern const AVBitStreamFilter ff_mp3_header_decompress_bsf;
|
||||
extern const AVBitStreamFilter ff_mpeg2_metadata_bsf;
|
||||
extern const AVBitStreamFilter ff_mpeg4_unpack_bframes_bsf;
|
||||
extern const AVBitStreamFilter ff_mov2textsub_bsf;
|
||||
extern const AVBitStreamFilter ff_noise_bsf;
|
||||
extern const AVBitStreamFilter ff_null_bsf;
|
||||
extern const AVBitStreamFilter ff_opus_metadata_bsf;
|
||||
extern const AVBitStreamFilter ff_pcm_rechunk_bsf;
|
||||
extern const AVBitStreamFilter ff_prores_metadata_bsf;
|
||||
extern const AVBitStreamFilter ff_remove_extradata_bsf;
|
||||
extern const AVBitStreamFilter ff_setts_bsf;
|
||||
extern const AVBitStreamFilter ff_text2movsub_bsf;
|
||||
extern const AVBitStreamFilter ff_trace_headers_bsf;
|
||||
extern const AVBitStreamFilter ff_truehd_core_bsf;
|
||||
extern const AVBitStreamFilter ff_vp9_metadata_bsf;
|
||||
extern const AVBitStreamFilter ff_vp9_raw_reorder_bsf;
|
||||
extern const AVBitStreamFilter ff_vp9_superframe_bsf;
|
||||
extern const AVBitStreamFilter ff_vp9_superframe_split_bsf;
|
||||
|
||||
#include "libavcodec/bsf_list.c"
|
||||
|
||||
const AVBitStreamFilter *av_bsf_iterate(void **opaque)
|
||||
{
|
||||
uintptr_t i = (uintptr_t)*opaque;
|
||||
const FFBitStreamFilter *f = bitstream_filters[i];
|
||||
const AVBitStreamFilter *f = bitstream_filters[i];
|
||||
|
||||
if (f) {
|
||||
if (f)
|
||||
*opaque = (void*)(i + 1);
|
||||
return &f->p;
|
||||
}
|
||||
return NULL;
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
#if FF_API_NEXT
|
||||
const AVBitStreamFilter *av_bsf_next(void **opaque) {
|
||||
return av_bsf_iterate(opaque);
|
||||
}
|
||||
#endif
|
||||
|
||||
const AVBitStreamFilter *av_bsf_get_by_name(const char *name)
|
||||
{
|
||||
const AVBitStreamFilter *f = NULL;
|
||||
|
@ -94,6 +97,28 @@ const AVBitStreamFilter *av_bsf_get_by_name(const char *name)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#if FF_API_CHILD_CLASS_NEXT
|
||||
const AVClass *ff_bsf_child_class_next(const AVClass *prev)
|
||||
{
|
||||
const AVBitStreamFilter *f = NULL;
|
||||
void *i = 0;
|
||||
|
||||
/* find the filter that corresponds to prev */
|
||||
while (prev && (f = av_bsf_iterate(&i))) {
|
||||
if (f->priv_class == prev) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* find next filter with priv options */
|
||||
while ((f = av_bsf_iterate(&i))) {
|
||||
if (f->priv_class)
|
||||
return f->priv_class;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
const AVClass *ff_bsf_child_class_iterate(void **opaque)
|
||||
{
|
||||
const AVBitStreamFilter *f;
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <stdint.h>
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "version.h"
|
||||
|
||||
/* add and put pixel (decoding)
|
||||
* Block sizes for op_pixels_func are 8x4,8x8 16x8 16x16.
|
||||
|
|
|
@ -18,8 +18,6 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
#include "config_components.h"
|
||||
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/log.h"
|
||||
#include "libavutil/mem.h"
|
||||
|
@ -34,40 +32,29 @@
|
|||
|
||||
#define IS_EMPTY(pkt) (!(pkt)->data && !(pkt)->side_data_elems)
|
||||
|
||||
static av_always_inline const FFBitStreamFilter *ff_bsf(const AVBitStreamFilter *bsf)
|
||||
{
|
||||
return (const FFBitStreamFilter*)bsf;
|
||||
}
|
||||
|
||||
typedef struct FFBSFContext {
|
||||
AVBSFContext pub;
|
||||
struct AVBSFInternal {
|
||||
AVPacket *buffer_pkt;
|
||||
int eof;
|
||||
} FFBSFContext;
|
||||
|
||||
static av_always_inline FFBSFContext *ffbsfcontext(AVBSFContext *ctx)
|
||||
{
|
||||
return (FFBSFContext *)ctx;
|
||||
}
|
||||
};
|
||||
|
||||
void av_bsf_free(AVBSFContext **pctx)
|
||||
{
|
||||
AVBSFContext *ctx;
|
||||
FFBSFContext *bsfi;
|
||||
|
||||
if (!pctx || !*pctx)
|
||||
return;
|
||||
ctx = *pctx;
|
||||
bsfi = ffbsfcontext(ctx);
|
||||
ctx = *pctx;
|
||||
|
||||
if (ctx->priv_data) {
|
||||
if (ff_bsf(ctx->filter)->close)
|
||||
ff_bsf(ctx->filter)->close(ctx);
|
||||
if (ctx->filter->priv_class)
|
||||
av_opt_free(ctx->priv_data);
|
||||
av_freep(&ctx->priv_data);
|
||||
if (ctx->internal) {
|
||||
if (ctx->filter->close)
|
||||
ctx->filter->close(ctx);
|
||||
av_packet_free(&ctx->internal->buffer_pkt);
|
||||
av_freep(&ctx->internal);
|
||||
}
|
||||
av_packet_free(&bsfi->buffer_pkt);
|
||||
if (ctx->filter->priv_class && ctx->priv_data)
|
||||
av_opt_free(ctx->priv_data);
|
||||
|
||||
av_freep(&ctx->priv_data);
|
||||
|
||||
avcodec_parameters_free(&ctx->par_in);
|
||||
avcodec_parameters_free(&ctx->par_out);
|
||||
|
@ -93,6 +80,9 @@ static const AVClass bsf_class = {
|
|||
.item_name = bsf_to_name,
|
||||
.version = LIBAVUTIL_VERSION_INT,
|
||||
.child_next = bsf_child_next,
|
||||
#if FF_API_CHILD_CLASS_NEXT
|
||||
.child_class_next = ff_bsf_child_class_next,
|
||||
#endif
|
||||
.child_class_iterate = ff_bsf_child_class_iterate,
|
||||
.category = AV_CLASS_CATEGORY_BITSTREAM_FILTER,
|
||||
};
|
||||
|
@ -105,13 +95,12 @@ const AVClass *av_bsf_get_class(void)
|
|||
int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **pctx)
|
||||
{
|
||||
AVBSFContext *ctx;
|
||||
FFBSFContext *bsfi;
|
||||
AVBSFInternal *bsfi;
|
||||
int ret;
|
||||
|
||||
bsfi = av_mallocz(sizeof(*bsfi));
|
||||
if (!bsfi)
|
||||
ctx = av_mallocz(sizeof(*ctx));
|
||||
if (!ctx)
|
||||
return AVERROR(ENOMEM);
|
||||
ctx = &bsfi->pub;
|
||||
|
||||
ctx->av_class = &bsf_class;
|
||||
ctx->filter = filter;
|
||||
|
@ -123,8 +112,8 @@ int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **pctx)
|
|||
goto fail;
|
||||
}
|
||||
/* allocate priv data and init private options */
|
||||
if (ff_bsf(filter)->priv_data_size) {
|
||||
ctx->priv_data = av_mallocz(ff_bsf(filter)->priv_data_size);
|
||||
if (filter->priv_data_size) {
|
||||
ctx->priv_data = av_mallocz(filter->priv_data_size);
|
||||
if (!ctx->priv_data) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto fail;
|
||||
|
@ -134,6 +123,15 @@ int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **pctx)
|
|||
av_opt_set_defaults(ctx->priv_data);
|
||||
}
|
||||
}
|
||||
/* Allocate AVBSFInternal; must happen after priv_data has been allocated
|
||||
* so that a filter->close needing priv_data is never called without. */
|
||||
bsfi = av_mallocz(sizeof(*bsfi));
|
||||
if (!bsfi) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto fail;
|
||||
}
|
||||
ctx->internal = bsfi;
|
||||
|
||||
bsfi->buffer_pkt = av_packet_alloc();
|
||||
if (!bsfi->buffer_pkt) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
|
@ -162,9 +160,9 @@ int av_bsf_init(AVBSFContext *ctx)
|
|||
"bitstream filter '%s'. Supported codecs are: ",
|
||||
desc ? desc->name : "unknown", ctx->par_in->codec_id, ctx->filter->name);
|
||||
for (i = 0; ctx->filter->codec_ids[i] != AV_CODEC_ID_NONE; i++) {
|
||||
enum AVCodecID codec_id = ctx->filter->codec_ids[i];
|
||||
desc = avcodec_descriptor_get(ctx->filter->codec_ids[i]);
|
||||
av_log(ctx, AV_LOG_ERROR, "%s (%d) ",
|
||||
avcodec_get_name(codec_id), codec_id);
|
||||
desc ? desc->name : "unknown", ctx->filter->codec_ids[i]);
|
||||
}
|
||||
av_log(ctx, AV_LOG_ERROR, "\n");
|
||||
return AVERROR(EINVAL);
|
||||
|
@ -179,8 +177,8 @@ int av_bsf_init(AVBSFContext *ctx)
|
|||
|
||||
ctx->time_base_out = ctx->time_base_in;
|
||||
|
||||
if (ff_bsf(ctx->filter)->init) {
|
||||
ret = ff_bsf(ctx->filter)->init(ctx);
|
||||
if (ctx->filter->init) {
|
||||
ret = ctx->filter->init(ctx);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
@ -190,24 +188,22 @@ int av_bsf_init(AVBSFContext *ctx)
|
|||
|
||||
void av_bsf_flush(AVBSFContext *ctx)
|
||||
{
|
||||
FFBSFContext *const bsfi = ffbsfcontext(ctx);
|
||||
AVBSFInternal *bsfi = ctx->internal;
|
||||
|
||||
bsfi->eof = 0;
|
||||
|
||||
av_packet_unref(bsfi->buffer_pkt);
|
||||
|
||||
if (ff_bsf(ctx->filter)->flush)
|
||||
ff_bsf(ctx->filter)->flush(ctx);
|
||||
if (ctx->filter->flush)
|
||||
ctx->filter->flush(ctx);
|
||||
}
|
||||
|
||||
int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt)
|
||||
{
|
||||
FFBSFContext *const bsfi = ffbsfcontext(ctx);
|
||||
AVBSFInternal *bsfi = ctx->internal;
|
||||
int ret;
|
||||
|
||||
if (!pkt || IS_EMPTY(pkt)) {
|
||||
if (pkt)
|
||||
av_packet_unref(pkt);
|
||||
bsfi->eof = 1;
|
||||
return 0;
|
||||
}
|
||||
|
@ -230,12 +226,12 @@ int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt)
|
|||
|
||||
int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt)
|
||||
{
|
||||
return ff_bsf(ctx->filter)->filter(ctx, pkt);
|
||||
return ctx->filter->filter(ctx, pkt);
|
||||
}
|
||||
|
||||
int ff_bsf_get_packet(AVBSFContext *ctx, AVPacket **pkt)
|
||||
{
|
||||
FFBSFContext *const bsfi = ffbsfcontext(ctx);
|
||||
AVBSFInternal *bsfi = ctx->internal;
|
||||
AVPacket *tmp_pkt;
|
||||
|
||||
if (bsfi->eof)
|
||||
|
@ -256,7 +252,7 @@ int ff_bsf_get_packet(AVBSFContext *ctx, AVPacket **pkt)
|
|||
|
||||
int ff_bsf_get_packet_ref(AVBSFContext *ctx, AVPacket *pkt)
|
||||
{
|
||||
FFBSFContext *const bsfi = ffbsfcontext(ctx);
|
||||
AVBSFInternal *bsfi = ctx->internal;
|
||||
|
||||
if (bsfi->eof)
|
||||
return AVERROR_EOF;
|
||||
|
@ -403,10 +399,10 @@ static const AVClass bsf_list_class = {
|
|||
.version = LIBAVUTIL_VERSION_INT,
|
||||
};
|
||||
|
||||
static const FFBitStreamFilter list_bsf = {
|
||||
.p.name = "bsf_list",
|
||||
.p.priv_class = &bsf_list_class,
|
||||
const AVBitStreamFilter ff_list_bsf = {
|
||||
.name = "bsf_list",
|
||||
.priv_data_size = sizeof(BSFListContext),
|
||||
.priv_class = &bsf_list_class,
|
||||
.init = bsf_list_init,
|
||||
.filter = bsf_list_filter,
|
||||
.flush = bsf_list_flush,
|
||||
|
@ -499,7 +495,7 @@ int av_bsf_list_finalize(AVBSFList **lst, AVBSFContext **bsf)
|
|||
goto end;
|
||||
}
|
||||
|
||||
ret = av_bsf_alloc(&list_bsf.p, bsf);
|
||||
ret = av_bsf_alloc(&ff_list_bsf, bsf);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
@ -527,6 +523,7 @@ static int bsf_parse_single(char *str, AVBSFList *bsf_lst)
|
|||
int av_bsf_list_parse_str(const char *str, AVBSFContext **bsf_lst)
|
||||
{
|
||||
AVBSFList *lst;
|
||||
char *bsf_str, *buf, *dup, *saveptr;
|
||||
int ret;
|
||||
|
||||
if (!str)
|
||||
|
@ -536,27 +533,28 @@ int av_bsf_list_parse_str(const char *str, AVBSFContext **bsf_lst)
|
|||
if (!lst)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
do {
|
||||
char *bsf_str = av_get_token(&str, ",");
|
||||
if (!(dup = buf = av_strdup(str))) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto end;
|
||||
}
|
||||
|
||||
while (bsf_str = av_strtok(buf, ",", &saveptr)) {
|
||||
ret = bsf_parse_single(bsf_str, lst);
|
||||
av_free(bsf_str);
|
||||
if (ret < 0)
|
||||
goto end;
|
||||
} while (*str && *++str);
|
||||
|
||||
buf = NULL;
|
||||
}
|
||||
|
||||
ret = av_bsf_list_finalize(&lst, bsf_lst);
|
||||
end:
|
||||
if (ret < 0)
|
||||
av_bsf_list_free(&lst);
|
||||
av_free(dup);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int av_bsf_get_null_filter(AVBSFContext **bsf)
|
||||
{
|
||||
#if CONFIG_NULL_BSF
|
||||
extern const FFBitStreamFilter ff_null_bsf;
|
||||
return av_bsf_alloc(&ff_null_bsf.p, bsf);
|
||||
#else
|
||||
return av_bsf_alloc(&list_bsf.p, bsf);
|
||||
#endif
|
||||
return av_bsf_alloc(&ff_list_bsf, bsf);
|
||||
}
|
||||
|
|
|
@ -30,31 +30,12 @@
|
|||
#include "packet.h"
|
||||
|
||||
/**
|
||||
* @defgroup lavc_bsf Bitstream filters
|
||||
* @ingroup libavc
|
||||
*
|
||||
* Bitstream filters transform encoded media data without decoding it. This
|
||||
* allows e.g. manipulating various header values. Bitstream filters operate on
|
||||
* @ref AVPacket "AVPackets".
|
||||
*
|
||||
* The bitstream filtering API is centered around two structures:
|
||||
* AVBitStreamFilter and AVBSFContext. The former represents a bitstream filter
|
||||
* in abstract, the latter a specific filtering process. Obtain an
|
||||
* AVBitStreamFilter using av_bsf_get_by_name() or av_bsf_iterate(), then pass
|
||||
* it to av_bsf_alloc() to create an AVBSFContext. Fill in the user-settable
|
||||
* AVBSFContext fields, as described in its documentation, then call
|
||||
* av_bsf_init() to prepare the filter context for use.
|
||||
*
|
||||
* Submit packets for filtering using av_bsf_send_packet(), obtain filtered
|
||||
* results with av_bsf_receive_packet(). When no more input packets will be
|
||||
* sent, submit a NULL AVPacket to signal the end of the stream to the filter.
|
||||
* av_bsf_receive_packet() will then return trailing packets, if any are
|
||||
* produced by the filter.
|
||||
*
|
||||
* Finally, free the filter context with av_bsf_free().
|
||||
* @addtogroup lavc_core
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef struct AVBSFInternal AVBSFInternal;
|
||||
|
||||
/**
|
||||
* The bitstream filter state.
|
||||
*
|
||||
|
@ -76,6 +57,12 @@ typedef struct AVBSFContext {
|
|||
*/
|
||||
const struct AVBitStreamFilter *filter;
|
||||
|
||||
/**
|
||||
* Opaque libavcodec internal data. Must not be touched by the caller in any
|
||||
* way.
|
||||
*/
|
||||
AVBSFInternal *internal;
|
||||
|
||||
/**
|
||||
* Opaque filter-specific private data. If filter->priv_class is non-NULL,
|
||||
* this is an AVOptions-enabled struct.
|
||||
|
@ -128,6 +115,20 @@ typedef struct AVBitStreamFilter {
|
|||
* code to this class.
|
||||
*/
|
||||
const AVClass *priv_class;
|
||||
|
||||
/*****************************************************************
|
||||
* No fields below this line are part of the public API. They
|
||||
* may not be used outside of libavcodec and can be changed and
|
||||
* removed at will.
|
||||
* New public fields should be added right above.
|
||||
*****************************************************************
|
||||
*/
|
||||
|
||||
int priv_data_size;
|
||||
int (*init)(AVBSFContext *ctx);
|
||||
int (*filter)(AVBSFContext *ctx, AVPacket *pkt);
|
||||
void (*close)(AVBSFContext *ctx);
|
||||
void (*flush)(AVBSFContext *ctx);
|
||||
} AVBitStreamFilter;
|
||||
|
||||
/**
|
||||
|
@ -153,9 +154,9 @@ const AVBitStreamFilter *av_bsf_iterate(void **opaque);
|
|||
* av_bsf_init() before sending any data to the filter.
|
||||
*
|
||||
* @param filter the filter for which to allocate an instance.
|
||||
* @param[out] ctx a pointer into which the pointer to the newly-allocated context
|
||||
* will be written. It must be freed with av_bsf_free() after the
|
||||
* filtering is done.
|
||||
* @param ctx a pointer into which the pointer to the newly-allocated context
|
||||
* will be written. It must be freed with av_bsf_free() after the
|
||||
* filtering is done.
|
||||
*
|
||||
* @return 0 on success, a negative AVERROR code on failure
|
||||
*/
|
||||
|
@ -181,11 +182,9 @@ int av_bsf_init(AVBSFContext *ctx);
|
|||
* sending more empty packets does nothing) and will cause the filter to output
|
||||
* any packets it may have buffered internally.
|
||||
*
|
||||
* @return
|
||||
* - 0 on success.
|
||||
* - AVERROR(EAGAIN) if packets need to be retrieved from the filter (using
|
||||
* av_bsf_receive_packet()) before new input can be consumed.
|
||||
* - Another negative AVERROR value if an error occurs.
|
||||
* @return 0 on success. AVERROR(EAGAIN) if packets need to be retrieved from the
|
||||
* filter (using av_bsf_receive_packet()) before new input can be consumed. Another
|
||||
* negative AVERROR value if an error occurs.
|
||||
*/
|
||||
int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt);
|
||||
|
||||
|
@ -202,12 +201,10 @@ int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt);
|
|||
* overwritten by the returned data. On failure, pkt is not
|
||||
* touched.
|
||||
*
|
||||
* @return
|
||||
* - 0 on success.
|
||||
* - AVERROR(EAGAIN) if more packets need to be sent to the filter (using
|
||||
* av_bsf_send_packet()) to get more output.
|
||||
* - AVERROR_EOF if there will be no further output from the filter.
|
||||
* - Another negative AVERROR value if an error occurs.
|
||||
* @return 0 on success. AVERROR(EAGAIN) if more packets need to be sent to the
|
||||
* filter (using av_bsf_send_packet()) to get more output. AVERROR_EOF if there
|
||||
* will be no further output from the filter. Another negative AVERROR value if
|
||||
* an error occurs.
|
||||
*
|
||||
* @note one input packet may result in several output packets, so after sending
|
||||
* a packet with av_bsf_send_packet(), this function needs to be called
|
||||
|
|
|
@ -24,19 +24,6 @@
|
|||
#include "bsf.h"
|
||||
#include "packet.h"
|
||||
|
||||
typedef struct FFBitStreamFilter {
|
||||
/**
|
||||
* The public AVBitStreamFilter. See bsf.h for it.
|
||||
*/
|
||||
AVBitStreamFilter p;
|
||||
|
||||
int priv_data_size;
|
||||
int (*init)(AVBSFContext *ctx);
|
||||
int (*filter)(AVBSFContext *ctx, AVPacket *pkt);
|
||||
void (*close)(AVBSFContext *ctx);
|
||||
void (*flush)(AVBSFContext *ctx);
|
||||
} FFBitStreamFilter;
|
||||
|
||||
/**
|
||||
* Called by the bitstream filters to get the next packet for filtering.
|
||||
* The filter is responsible for either freeing the packet or passing it to the
|
||||
|
@ -55,6 +42,10 @@ int ff_bsf_get_packet(AVBSFContext *ctx, AVPacket **pkt);
|
|||
*/
|
||||
int ff_bsf_get_packet_ref(AVBSFContext *ctx, AVPacket *pkt);
|
||||
|
||||
#if FF_API_CHILD_CLASS_NEXT
|
||||
const AVClass *ff_bsf_child_class_next(const AVClass *prev);
|
||||
#endif
|
||||
|
||||
const AVClass *ff_bsf_child_class_iterate(void **opaque);
|
||||
|
||||
#endif /* AVCODEC_BSF_INTERNAL_H */
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
#include "config_components.h"
|
||||
|
||||
static const FFBitStreamFilter * const bitstream_filters[] = {
|
||||
static const AVBitStreamFilter * const bitstream_filters[] = {
|
||||
&ff_null_bsf,
|
||||
#if CONFIG_VP9_SUPERFRAME_SPLIT_BSF
|
||||
&ff_vp9_superframe_split_bsf,
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include "libavutil/common.h"
|
||||
#include "libavutil/opt.h"
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "cbs.h"
|
||||
#include "cbs_internal.h"
|
||||
|
||||
|
@ -294,19 +293,6 @@ int ff_cbs_read_packet(CodedBitstreamContext *ctx,
|
|||
pkt->data, pkt->size, 0);
|
||||
}
|
||||
|
||||
int ff_cbs_read_packet_side_data(CodedBitstreamContext *ctx,
|
||||
CodedBitstreamFragment *frag,
|
||||
const AVPacket *pkt)
|
||||
{
|
||||
size_t side_data_size;
|
||||
const uint8_t *side_data =
|
||||
av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA,
|
||||
&side_data_size);
|
||||
|
||||
return cbs_read_data(ctx, frag, NULL,
|
||||
side_data, side_data_size, 1);
|
||||
}
|
||||
|
||||
int ff_cbs_read(CodedBitstreamContext *ctx,
|
||||
CodedBitstreamFragment *frag,
|
||||
const uint8_t *data, size_t size)
|
||||
|
@ -315,28 +301,6 @@ int ff_cbs_read(CodedBitstreamContext *ctx,
|
|||
data, size, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Allocate a new internal data buffer of the given size in the unit.
|
||||
*
|
||||
* The data buffer will have input padding.
|
||||
*/
|
||||
static int cbs_alloc_unit_data(CodedBitstreamUnit *unit,
|
||||
size_t size)
|
||||
{
|
||||
av_assert0(!unit->data && !unit->data_ref);
|
||||
|
||||
unit->data_ref = av_buffer_alloc(size + AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (!unit->data_ref)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
unit->data = unit->data_ref->data;
|
||||
unit->data_size = size;
|
||||
|
||||
memset(unit->data + size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cbs_write_unit_data(CodedBitstreamContext *ctx,
|
||||
CodedBitstreamUnit *unit)
|
||||
{
|
||||
|
@ -382,7 +346,7 @@ static int cbs_write_unit_data(CodedBitstreamContext *ctx,
|
|||
|
||||
flush_put_bits(&pbc);
|
||||
|
||||
ret = cbs_alloc_unit_data(unit, put_bytes_output(&pbc));
|
||||
ret = ff_cbs_alloc_unit_data(unit, put_bits_count(&pbc) / 8);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
@ -715,6 +679,23 @@ int ff_cbs_alloc_unit_content(CodedBitstreamUnit *unit,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int ff_cbs_alloc_unit_data(CodedBitstreamUnit *unit,
|
||||
size_t size)
|
||||
{
|
||||
av_assert0(!unit->data && !unit->data_ref);
|
||||
|
||||
unit->data_ref = av_buffer_alloc(size + AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
if (!unit->data_ref)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
unit->data = unit->data_ref->data;
|
||||
unit->data_size = size;
|
||||
|
||||
memset(unit->data + size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cbs_insert_unit(CodedBitstreamFragment *frag,
|
||||
int position)
|
||||
{
|
||||
|
@ -789,16 +770,18 @@ int ff_cbs_insert_unit_content(CodedBitstreamFragment *frag,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int cbs_insert_unit_data(CodedBitstreamFragment *frag,
|
||||
CodedBitstreamUnitType type,
|
||||
uint8_t *data, size_t data_size,
|
||||
AVBufferRef *data_buf,
|
||||
int position)
|
||||
int ff_cbs_insert_unit_data(CodedBitstreamFragment *frag,
|
||||
int position,
|
||||
CodedBitstreamUnitType type,
|
||||
uint8_t *data, size_t data_size,
|
||||
AVBufferRef *data_buf)
|
||||
{
|
||||
CodedBitstreamUnit *unit;
|
||||
AVBufferRef *data_ref;
|
||||
int err;
|
||||
|
||||
if (position == -1)
|
||||
position = frag->nb_units;
|
||||
av_assert0(position >= 0 && position <= frag->nb_units);
|
||||
|
||||
if (data_buf)
|
||||
|
@ -826,16 +809,6 @@ static int cbs_insert_unit_data(CodedBitstreamFragment *frag,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int ff_cbs_append_unit_data(CodedBitstreamFragment *frag,
|
||||
CodedBitstreamUnitType type,
|
||||
uint8_t *data, size_t data_size,
|
||||
AVBufferRef *data_buf)
|
||||
{
|
||||
return cbs_insert_unit_data(frag, type,
|
||||
data, data_size, data_buf,
|
||||
frag->nb_units);
|
||||
}
|
||||
|
||||
void ff_cbs_delete_unit(CodedBitstreamFragment *frag,
|
||||
int position)
|
||||
{
|
||||
|
|
|
@ -24,9 +24,7 @@
|
|||
|
||||
#include "libavutil/buffer.h"
|
||||
|
||||
#include "codec_id.h"
|
||||
#include "codec_par.h"
|
||||
#include "packet.h"
|
||||
#include "avcodec.h"
|
||||
|
||||
|
||||
/*
|
||||
|
@ -42,7 +40,6 @@
|
|||
* bitstream.
|
||||
*/
|
||||
|
||||
struct AVCodecContext;
|
||||
struct CodedBitstreamType;
|
||||
|
||||
/**
|
||||
|
@ -274,11 +271,7 @@ int ff_cbs_read_extradata(CodedBitstreamContext *ctx,
|
|||
*/
|
||||
int ff_cbs_read_extradata_from_codec(CodedBitstreamContext *ctx,
|
||||
CodedBitstreamFragment *frag,
|
||||
const struct AVCodecContext *avctx);
|
||||
|
||||
int ff_cbs_read_packet_side_data(CodedBitstreamContext *ctx,
|
||||
CodedBitstreamFragment *frag,
|
||||
const AVPacket *pkt);
|
||||
const AVCodecContext *avctx);
|
||||
|
||||
/**
|
||||
* Read the data bitstream from a packet into a fragment, then
|
||||
|
@ -380,6 +373,15 @@ int ff_cbs_alloc_unit_content(CodedBitstreamUnit *unit,
|
|||
int ff_cbs_alloc_unit_content2(CodedBitstreamContext *ctx,
|
||||
CodedBitstreamUnit *unit);
|
||||
|
||||
|
||||
/**
|
||||
* Allocate a new internal data buffer of the given size in the unit.
|
||||
*
|
||||
* The data buffer will have input padding.
|
||||
*/
|
||||
int ff_cbs_alloc_unit_data(CodedBitstreamUnit *unit,
|
||||
size_t size);
|
||||
|
||||
/**
|
||||
* Insert a new unit into a fragment with the given content.
|
||||
*
|
||||
|
@ -393,13 +395,14 @@ int ff_cbs_insert_unit_content(CodedBitstreamFragment *frag,
|
|||
AVBufferRef *content_buf);
|
||||
|
||||
/**
|
||||
* Add a new unit to a fragment with the given data bitstream.
|
||||
* Insert a new unit into a fragment with the given data bitstream.
|
||||
*
|
||||
* If data_buf is not supplied then data must have been allocated with
|
||||
* av_malloc() and will on success become owned by the unit after this
|
||||
* call or freed on error.
|
||||
*/
|
||||
int ff_cbs_append_unit_data(CodedBitstreamFragment *frag,
|
||||
int ff_cbs_insert_unit_data(CodedBitstreamFragment *frag,
|
||||
int position,
|
||||
CodedBitstreamUnitType type,
|
||||
uint8_t *data, size_t data_size,
|
||||
AVBufferRef *data_buf);
|
||||
|
|
|
@ -20,10 +20,10 @@
|
|||
#include "libavutil/opt.h"
|
||||
#include "libavutil/pixfmt.h"
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "cbs.h"
|
||||
#include "cbs_internal.h"
|
||||
#include "cbs_av1.h"
|
||||
#include "internal.h"
|
||||
|
||||
|
||||
static int cbs_av1_read_uvlc(CodedBitstreamContext *ctx, GetBitContext *gbc,
|
||||
|
@ -828,7 +828,7 @@ static int cbs_av1_split_fragment(CodedBitstreamContext *ctx,
|
|||
goto fail;
|
||||
}
|
||||
|
||||
err = ff_cbs_append_unit_data(frag, header.obu_type,
|
||||
err = ff_cbs_insert_unit_data(frag, -1, header.obu_type,
|
||||
data, obu_length, frag->data_ref);
|
||||
if (err < 0)
|
||||
goto fail;
|
||||
|
|
|
@ -355,7 +355,7 @@ static int FUNC(set_frame_refs)(CodedBitstreamContext *ctx, RWContext *rw,
|
|||
AV1_REF_FRAME_ALTREF2, AV1_REF_FRAME_ALTREF
|
||||
};
|
||||
int8_t ref_frame_idx[AV1_REFS_PER_FRAME], used_frame[AV1_NUM_REF_FRAMES];
|
||||
int16_t shifted_order_hints[AV1_NUM_REF_FRAMES];
|
||||
int8_t shifted_order_hints[AV1_NUM_REF_FRAMES];
|
||||
int cur_frame_hint, latest_order_hint, earliest_order_hint, ref;
|
||||
int i, j;
|
||||
|
||||
|
|
|
@ -19,13 +19,8 @@
|
|||
#ifndef AVCODEC_CBS_INTERNAL_H
|
||||
#define AVCODEC_CBS_INTERNAL_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/buffer.h"
|
||||
#include "libavutil/log.h"
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "cbs.h"
|
||||
#include "codec_id.h"
|
||||
#include "get_bits.h"
|
||||
#include "put_bits.h"
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#include "libavutil/samplefmt.h"
|
||||
|
||||
#include "libavcodec/codec_id.h"
|
||||
#include "libavcodec/version_major.h"
|
||||
#include "libavcodec/version.h"
|
||||
|
||||
/**
|
||||
* @addtogroup lavc_core
|
||||
|
@ -50,12 +50,7 @@
|
|||
* avcodec_default_get_buffer2 or avcodec_default_get_encode_buffer.
|
||||
*/
|
||||
#define AV_CODEC_CAP_DR1 (1 << 1)
|
||||
#if FF_API_FLAG_TRUNCATED
|
||||
/**
|
||||
* @deprecated Use parsers to always send proper frames.
|
||||
*/
|
||||
#define AV_CODEC_CAP_TRUNCATED (1 << 3)
|
||||
#endif
|
||||
/**
|
||||
* Encoder or decoder requires flushing with NULL input at the end in order to
|
||||
* give the complete and correct output.
|
||||
|
@ -190,6 +185,12 @@ typedef struct AVProfile {
|
|||
const char *name; ///< short name for the profile
|
||||
} AVProfile;
|
||||
|
||||
typedef struct AVCodecDefault AVCodecDefault;
|
||||
|
||||
struct AVCodecContext;
|
||||
struct AVSubtitle;
|
||||
struct AVPacket;
|
||||
|
||||
/**
|
||||
* AVCodec.
|
||||
*/
|
||||
|
@ -213,18 +214,12 @@ typedef struct AVCodec {
|
|||
* see AV_CODEC_CAP_*
|
||||
*/
|
||||
int capabilities;
|
||||
uint8_t max_lowres; ///< maximum value for lowres supported by the decoder
|
||||
const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0}
|
||||
const enum AVPixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1
|
||||
const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0
|
||||
const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
/**
|
||||
* @deprecated use ch_layouts instead
|
||||
*/
|
||||
attribute_deprecated
|
||||
const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0
|
||||
#endif
|
||||
uint8_t max_lowres; ///< maximum value for lowres supported by the decoder
|
||||
const AVClass *priv_class; ///< AVClass for the private context
|
||||
const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN}
|
||||
|
||||
|
@ -240,10 +235,117 @@ typedef struct AVCodec {
|
|||
*/
|
||||
const char *wrapper_name;
|
||||
|
||||
/**
|
||||
* Array of supported channel layouts, terminated with a zeroed layout.
|
||||
/*****************************************************************
|
||||
* No fields below this line are part of the public API. They
|
||||
* may not be used outside of libavcodec and can be changed and
|
||||
* removed at will.
|
||||
* New public fields should be added right above.
|
||||
*****************************************************************
|
||||
*/
|
||||
const AVChannelLayout *ch_layouts;
|
||||
int priv_data_size;
|
||||
#if FF_API_NEXT
|
||||
struct AVCodec *next;
|
||||
#endif
|
||||
/**
|
||||
* @name Frame-level threading support functions
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* Copy necessary context variables from a previous thread context to the current one.
|
||||
* If not defined, the next thread will start automatically; otherwise, the codec
|
||||
* must call ff_thread_finish_setup().
|
||||
*
|
||||
* dst and src will (rarely) point to the same context, in which case memcpy should be skipped.
|
||||
*/
|
||||
int (*update_thread_context)(struct AVCodecContext *dst, const struct AVCodecContext *src);
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* Private codec-specific defaults.
|
||||
*/
|
||||
const AVCodecDefault *defaults;
|
||||
|
||||
/**
|
||||
* Initialize codec static data, called from av_codec_iterate().
|
||||
*
|
||||
* This is not intended for time consuming operations as it is
|
||||
* run for every codec regardless of that codec being used.
|
||||
*/
|
||||
void (*init_static_data)(struct AVCodec *codec);
|
||||
|
||||
int (*init)(struct AVCodecContext *);
|
||||
int (*encode_sub)(struct AVCodecContext *, uint8_t *buf, int buf_size,
|
||||
const struct AVSubtitle *sub);
|
||||
/**
|
||||
* Encode data to an AVPacket.
|
||||
*
|
||||
* @param avctx codec context
|
||||
* @param avpkt output AVPacket
|
||||
* @param[in] frame AVFrame containing the raw data to be encoded
|
||||
* @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a
|
||||
* non-empty packet was returned in avpkt.
|
||||
* @return 0 on success, negative error code on failure
|
||||
*/
|
||||
int (*encode2)(struct AVCodecContext *avctx, struct AVPacket *avpkt,
|
||||
const struct AVFrame *frame, int *got_packet_ptr);
|
||||
/**
|
||||
* Decode picture or subtitle data.
|
||||
*
|
||||
* @param avctx codec context
|
||||
* @param outdata codec type dependent output struct
|
||||
* @param[out] got_frame_ptr decoder sets to 0 or 1 to indicate that a
|
||||
* non-empty frame or subtitle was returned in
|
||||
* outdata.
|
||||
* @param[in] avpkt AVPacket containing the data to be decoded
|
||||
* @return amount of bytes read from the packet on success, negative error
|
||||
* code on failure
|
||||
*/
|
||||
int (*decode)(struct AVCodecContext *avctx, void *outdata,
|
||||
int *got_frame_ptr, struct AVPacket *avpkt);
|
||||
int (*close)(struct AVCodecContext *);
|
||||
/**
|
||||
* Encode API with decoupled frame/packet dataflow. This function is called
|
||||
* to get one output packet. It should call ff_encode_get_frame() to obtain
|
||||
* input data.
|
||||
*/
|
||||
int (*receive_packet)(struct AVCodecContext *avctx, struct AVPacket *avpkt);
|
||||
|
||||
/**
|
||||
* Decode API with decoupled packet/frame dataflow. This function is called
|
||||
* to get one output frame. It should call ff_decode_get_packet() to obtain
|
||||
* input data.
|
||||
*/
|
||||
int (*receive_frame)(struct AVCodecContext *avctx, struct AVFrame *frame);
|
||||
/**
|
||||
* Flush buffers.
|
||||
* Will be called when seeking
|
||||
*/
|
||||
void (*flush)(struct AVCodecContext *);
|
||||
/**
|
||||
* Internal codec capabilities.
|
||||
* See FF_CODEC_CAP_* in internal.h
|
||||
*/
|
||||
int caps_internal;
|
||||
|
||||
/**
|
||||
* Decoding only, a comma-separated list of bitstream filters to apply to
|
||||
* packets before decoding.
|
||||
*/
|
||||
const char *bsfs;
|
||||
|
||||
/**
|
||||
* Array of pointers to hardware configurations supported by the codec,
|
||||
* or NULL if no hardware supported. The array is terminated by a NULL
|
||||
* pointer.
|
||||
*
|
||||
* The user can only access this field via avcodec_get_hw_config().
|
||||
*/
|
||||
const struct AVCodecHWConfigInternal *const *hw_configs;
|
||||
|
||||
/**
|
||||
* List of supported codec_tags, terminated by FF_CODEC_TAGS_END.
|
||||
*/
|
||||
const uint32_t *codec_tags;
|
||||
} AVCodec;
|
||||
|
||||
/**
|
||||
|
@ -263,7 +365,7 @@ const AVCodec *av_codec_iterate(void **opaque);
|
|||
* @param id AVCodecID of the requested decoder
|
||||
* @return A decoder if one was found, NULL otherwise.
|
||||
*/
|
||||
const AVCodec *avcodec_find_decoder(enum AVCodecID id);
|
||||
AVCodec *avcodec_find_decoder(enum AVCodecID id);
|
||||
|
||||
/**
|
||||
* Find a registered decoder with the specified name.
|
||||
|
@ -271,7 +373,7 @@ const AVCodec *avcodec_find_decoder(enum AVCodecID id);
|
|||
* @param name name of the requested decoder
|
||||
* @return A decoder if one was found, NULL otherwise.
|
||||
*/
|
||||
const AVCodec *avcodec_find_decoder_by_name(const char *name);
|
||||
AVCodec *avcodec_find_decoder_by_name(const char *name);
|
||||
|
||||
/**
|
||||
* Find a registered encoder with a matching codec ID.
|
||||
|
@ -279,7 +381,7 @@ const AVCodec *avcodec_find_decoder_by_name(const char *name);
|
|||
* @param id AVCodecID of the requested encoder
|
||||
* @return An encoder if one was found, NULL otherwise.
|
||||
*/
|
||||
const AVCodec *avcodec_find_encoder(enum AVCodecID id);
|
||||
AVCodec *avcodec_find_encoder(enum AVCodecID id);
|
||||
|
||||
/**
|
||||
* Find a registered encoder with the specified name.
|
||||
|
@ -287,7 +389,7 @@ const AVCodec *avcodec_find_encoder(enum AVCodecID id);
|
|||
* @param name name of the requested encoder
|
||||
* @return An encoder if one was found, NULL otherwise.
|
||||
*/
|
||||
const AVCodec *avcodec_find_encoder_by_name(const char *name);
|
||||
AVCodec *avcodec_find_encoder_by_name(const char *name);
|
||||
/**
|
||||
* @return a non-zero number if codec is an encoder, zero otherwise
|
||||
*/
|
||||
|
@ -298,15 +400,6 @@ int av_codec_is_encoder(const AVCodec *codec);
|
|||
*/
|
||||
int av_codec_is_decoder(const AVCodec *codec);
|
||||
|
||||
/**
|
||||
* Return a name for the specified profile, if available.
|
||||
*
|
||||
* @param codec the codec that is searched for the given profile
|
||||
* @param profile the profile value for which a name is requested
|
||||
* @return A name for the profile if found, NULL otherwise.
|
||||
*/
|
||||
const char *av_get_profile_name(const AVCodec *codec, int profile);
|
||||
|
||||
enum {
|
||||
/**
|
||||
* The codec supports this format via the hw_device_ctx interface.
|
||||
|
|
|
@ -19,15 +19,15 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/macros.h"
|
||||
|
||||
#include "codec_id.h"
|
||||
#include "codec_desc.h"
|
||||
#include "profiles.h"
|
||||
#include "version.h"
|
||||
|
||||
#define MT(...) (const char *const[]){ __VA_ARGS__, NULL }
|
||||
|
||||
|
@ -1856,36 +1856,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
|
|||
.long_name = NULL_IF_CONFIG_SMALL("Digital Pictures SGA Video"),
|
||||
.props = AV_CODEC_PROP_LOSSY,
|
||||
},
|
||||
{
|
||||
.id = AV_CODEC_ID_GEM,
|
||||
.type = AVMEDIA_TYPE_VIDEO,
|
||||
.name = "gem",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("GEM Raster image"),
|
||||
.props = AV_CODEC_PROP_LOSSY,
|
||||
},
|
||||
{
|
||||
.id = AV_CODEC_ID_VBN,
|
||||
.type = AVMEDIA_TYPE_VIDEO,
|
||||
.name = "vbn",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("Vizrt Binary Image"),
|
||||
.props = AV_CODEC_PROP_LOSSY,
|
||||
},
|
||||
{
|
||||
.id = AV_CODEC_ID_JPEGXL,
|
||||
.type = AVMEDIA_TYPE_VIDEO,
|
||||
.name = "jpegxl",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("JPEG XL"),
|
||||
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY |
|
||||
AV_CODEC_PROP_LOSSLESS,
|
||||
.mime_types= MT("image/jxl"),
|
||||
},
|
||||
{
|
||||
.id = AV_CODEC_ID_QOI,
|
||||
.type = AVMEDIA_TYPE_VIDEO,
|
||||
.name = "qoi",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("QOI (Quite OK Image)"),
|
||||
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
|
||||
},
|
||||
|
||||
/* various PCM "codecs" */
|
||||
{
|
||||
|
@ -2492,13 +2462,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
|
|||
.long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA MobiClip MOFLEX"),
|
||||
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
|
||||
},
|
||||
{
|
||||
.id = AV_CODEC_ID_ADPCM_IMA_ACORN,
|
||||
.type = AVMEDIA_TYPE_AUDIO,
|
||||
.name = "adpcm_ima_acorn",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("ADPCM IMA Acorn Replay"),
|
||||
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
|
||||
},
|
||||
|
||||
/* AMR */
|
||||
{
|
||||
|
@ -2795,7 +2758,7 @@ static const AVCodecDescriptor codec_descriptors[] = {
|
|||
.type = AVMEDIA_TYPE_AUDIO,
|
||||
.name = "mlp",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("MLP (Meridian Lossless Packing)"),
|
||||
.props = AV_CODEC_PROP_LOSSLESS,
|
||||
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSLESS,
|
||||
},
|
||||
{
|
||||
.id = AV_CODEC_ID_GSM_MS,
|
||||
|
@ -3253,20 +3216,6 @@ static const AVCodecDescriptor codec_descriptors[] = {
|
|||
.long_name = NULL_IF_CONFIG_SMALL("MobiClip FastAudio"),
|
||||
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
|
||||
},
|
||||
{
|
||||
.id = AV_CODEC_ID_MSNSIREN,
|
||||
.type = AVMEDIA_TYPE_AUDIO,
|
||||
.name = "msnsiren",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("MSN Siren"),
|
||||
.props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY,
|
||||
},
|
||||
{
|
||||
.id = AV_CODEC_ID_DFPWM,
|
||||
.type = AVMEDIA_TYPE_AUDIO,
|
||||
.name = "dfpwm",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("DFPWM (Dynamic Filter Pulse Width Modulation)"),
|
||||
.props = AV_CODEC_PROP_LOSSY,
|
||||
},
|
||||
|
||||
/* subtitle codecs */
|
||||
{
|
||||
|
|
|
@ -308,9 +308,6 @@ enum AVCodecID {
|
|||
AV_CODEC_ID_SIMBIOSIS_IMX,
|
||||
AV_CODEC_ID_SGA_VIDEO,
|
||||
AV_CODEC_ID_GEM,
|
||||
AV_CODEC_ID_VBN,
|
||||
AV_CODEC_ID_JPEGXL,
|
||||
AV_CODEC_ID_QOI,
|
||||
|
||||
/* various PCM "codecs" */
|
||||
AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
|
||||
|
@ -519,7 +516,6 @@ enum AVCodecID {
|
|||
AV_CODEC_ID_HCA,
|
||||
AV_CODEC_ID_FASTAUDIO,
|
||||
AV_CODEC_ID_MSNSIREN,
|
||||
AV_CODEC_ID_DFPWM,
|
||||
|
||||
/* subtitle codecs */
|
||||
AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.
|
||||
|
|
|
@ -1,278 +0,0 @@
|
|||
/*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_CODEC_INTERNAL_H
|
||||
#define AVCODEC_CODEC_INTERNAL_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/attributes.h"
|
||||
#include "codec.h"
|
||||
|
||||
/**
|
||||
* The codec does not modify any global variables in the init function,
|
||||
* allowing to call the init function without locking any global mutexes.
|
||||
*/
|
||||
#define FF_CODEC_CAP_INIT_THREADSAFE (1 << 0)
|
||||
/**
|
||||
* The codec allows calling the close function for deallocation even if
|
||||
* the init function returned a failure. Without this capability flag, a
|
||||
* codec does such cleanup internally when returning failures from the
|
||||
* init function and does not expect the close function to be called at
|
||||
* all.
|
||||
*/
|
||||
#define FF_CODEC_CAP_INIT_CLEANUP (1 << 1)
|
||||
/**
|
||||
* Decoders marked with FF_CODEC_CAP_SETS_PKT_DTS want to set
|
||||
* AVFrame.pkt_dts manually. If the flag is set, decode.c won't overwrite
|
||||
* this field. If it's unset, decode.c tries to guess the pkt_dts field
|
||||
* from the input AVPacket.
|
||||
*/
|
||||
#define FF_CODEC_CAP_SETS_PKT_DTS (1 << 2)
|
||||
/**
|
||||
* The decoder extracts and fills its parameters even if the frame is
|
||||
* skipped due to the skip_frame setting.
|
||||
*/
|
||||
#define FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM (1 << 3)
|
||||
/**
|
||||
* The decoder sets the cropping fields in the output frames manually.
|
||||
* If this cap is set, the generic code will initialize output frame
|
||||
* dimensions to coded rather than display values.
|
||||
*/
|
||||
#define FF_CODEC_CAP_EXPORTS_CROPPING (1 << 4)
|
||||
/**
|
||||
* Codec initializes slice-based threading with a main function
|
||||
*/
|
||||
#define FF_CODEC_CAP_SLICE_THREAD_HAS_MF (1 << 5)
|
||||
/*
|
||||
* The codec supports frame threading and has inter-frame dependencies, so it
|
||||
* uses ff_thread_report/await_progress().
|
||||
*/
|
||||
#define FF_CODEC_CAP_ALLOCATE_PROGRESS (1 << 6)
|
||||
/**
|
||||
* Codec handles avctx->thread_count == 0 (auto) internally.
|
||||
*/
|
||||
#define FF_CODEC_CAP_AUTO_THREADS (1 << 7)
|
||||
/**
|
||||
* Codec handles output frame properties internally instead of letting the
|
||||
* internal logic derive them from AVCodecInternal.last_pkt_props.
|
||||
*/
|
||||
#define FF_CODEC_CAP_SETS_FRAME_PROPS (1 << 8)
|
||||
|
||||
/**
|
||||
* FFCodec.codec_tags termination value
|
||||
*/
|
||||
#define FF_CODEC_TAGS_END -1
|
||||
|
||||
typedef struct FFCodecDefault {
|
||||
const char *key;
|
||||
const char *value;
|
||||
} FFCodecDefault;
|
||||
|
||||
struct AVCodecContext;
|
||||
struct AVSubtitle;
|
||||
struct AVPacket;
|
||||
|
||||
enum FFCodecType {
|
||||
/* The codec is a decoder using the decode callback;
|
||||
* audio and video codecs only. */
|
||||
FF_CODEC_CB_TYPE_DECODE,
|
||||
/* The codec is a decoder using the decode_sub callback;
|
||||
* subtitle codecs only. */
|
||||
FF_CODEC_CB_TYPE_DECODE_SUB,
|
||||
/* The codec is a decoder using the receive_frame callback;
|
||||
* audio and video codecs only. */
|
||||
FF_CODEC_CB_TYPE_RECEIVE_FRAME,
|
||||
/* The codec is an encoder using the encode callback;
|
||||
* audio and video codecs only. */
|
||||
FF_CODEC_CB_TYPE_ENCODE,
|
||||
/* The codec is an encoder using the encode_sub callback;
|
||||
* subtitle codecs only. */
|
||||
FF_CODEC_CB_TYPE_ENCODE_SUB,
|
||||
/* The codec is an encoder using the receive_packet callback;
|
||||
* audio and video codecs only. */
|
||||
FF_CODEC_CB_TYPE_RECEIVE_PACKET,
|
||||
};
|
||||
|
||||
typedef struct FFCodec {
|
||||
/**
|
||||
* The public AVCodec. See codec.h for it.
|
||||
*/
|
||||
AVCodec p;
|
||||
|
||||
/**
|
||||
* Internal codec capabilities FF_CODEC_CAP_*.
|
||||
*/
|
||||
unsigned caps_internal:29;
|
||||
|
||||
/**
|
||||
* This field determines the type of the codec (decoder/encoder)
|
||||
* and also the exact callback cb implemented by the codec.
|
||||
* cb_type uses enum FFCodecType values.
|
||||
*/
|
||||
unsigned cb_type:3;
|
||||
|
||||
int priv_data_size;
|
||||
/**
|
||||
* @name Frame-level threading support functions
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* Copy necessary context variables from a previous thread context to the current one.
|
||||
* If not defined, the next thread will start automatically; otherwise, the codec
|
||||
* must call ff_thread_finish_setup().
|
||||
*
|
||||
* dst and src will (rarely) point to the same context, in which case memcpy should be skipped.
|
||||
*/
|
||||
int (*update_thread_context)(struct AVCodecContext *dst, const struct AVCodecContext *src);
|
||||
|
||||
/**
|
||||
* Copy variables back to the user-facing context
|
||||
*/
|
||||
int (*update_thread_context_for_user)(struct AVCodecContext *dst, const struct AVCodecContext *src);
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* Private codec-specific defaults.
|
||||
*/
|
||||
const FFCodecDefault *defaults;
|
||||
|
||||
/**
|
||||
* Initialize codec static data, called from av_codec_iterate().
|
||||
*
|
||||
* This is not intended for time consuming operations as it is
|
||||
* run for every codec regardless of that codec being used.
|
||||
*/
|
||||
void (*init_static_data)(struct FFCodec *codec);
|
||||
|
||||
int (*init)(struct AVCodecContext *);
|
||||
|
||||
union {
|
||||
/**
|
||||
* Decode to an AVFrame.
|
||||
* cb is in this state if cb_type is FF_CODEC_CB_TYPE_DECODE.
|
||||
*
|
||||
* @param avctx codec context
|
||||
* @param[out] frame AVFrame for output
|
||||
* @param[out] got_frame_ptr decoder sets to 0 or 1 to indicate that
|
||||
* a non-empty frame was returned in frame.
|
||||
* @param[in] avpkt AVPacket containing the data to be decoded
|
||||
* @return amount of bytes read from the packet on success,
|
||||
* negative error code on failure
|
||||
*/
|
||||
int (*decode)(struct AVCodecContext *avctx, struct AVFrame *frame,
|
||||
int *got_frame_ptr, struct AVPacket *avpkt);
|
||||
/**
|
||||
* Decode subtitle data to an AVSubtitle.
|
||||
* cb is in this state if cb_type is FF_CODEC_CB_TYPE_DECODE_SUB.
|
||||
*
|
||||
* Apart from that this is like the decode callback.
|
||||
*/
|
||||
int (*decode_sub)(struct AVCodecContext *avctx, struct AVSubtitle *sub,
|
||||
int *got_frame_ptr, const struct AVPacket *avpkt);
|
||||
/**
|
||||
* Decode API with decoupled packet/frame dataflow.
|
||||
* cb is in this state if cb_type is FF_CODEC_CB_TYPE_RECEIVE_FRAME.
|
||||
*
|
||||
* This function is called to get one output frame. It should call
|
||||
* ff_decode_get_packet() to obtain input data.
|
||||
*/
|
||||
int (*receive_frame)(struct AVCodecContext *avctx, struct AVFrame *frame);
|
||||
/**
|
||||
* Encode data to an AVPacket.
|
||||
* cb is in this state if cb_type is FF_CODEC_CB_TYPE_ENCODE
|
||||
*
|
||||
* @param avctx codec context
|
||||
* @param[out] avpkt output AVPacket
|
||||
* @param[in] frame AVFrame containing the input to be encoded
|
||||
* @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a
|
||||
* non-empty packet was returned in avpkt.
|
||||
* @return 0 on success, negative error code on failure
|
||||
*/
|
||||
int (*encode)(struct AVCodecContext *avctx, struct AVPacket *avpkt,
|
||||
const struct AVFrame *frame, int *got_packet_ptr);
|
||||
/**
|
||||
* Encode subtitles to a raw buffer.
|
||||
* cb is in this state if cb_type is FF_CODEC_CB_TYPE_ENCODE_SUB.
|
||||
*/
|
||||
int (*encode_sub)(struct AVCodecContext *avctx, uint8_t *buf,
|
||||
int buf_size, const struct AVSubtitle *sub);
|
||||
/**
|
||||
* Encode API with decoupled frame/packet dataflow.
|
||||
* cb is in this state if cb_type is FF_CODEC_CB_TYPE_RECEIVE_PACKET.
|
||||
*
|
||||
* This function is called to get one output packet.
|
||||
* It should call ff_encode_get_frame() to obtain input data.
|
||||
*/
|
||||
int (*receive_packet)(struct AVCodecContext *avctx, struct AVPacket *avpkt);
|
||||
} cb;
|
||||
|
||||
int (*close)(struct AVCodecContext *);
|
||||
|
||||
/**
|
||||
* Flush buffers.
|
||||
* Will be called when seeking
|
||||
*/
|
||||
void (*flush)(struct AVCodecContext *);
|
||||
|
||||
/**
|
||||
* Decoding only, a comma-separated list of bitstream filters to apply to
|
||||
* packets before decoding.
|
||||
*/
|
||||
const char *bsfs;
|
||||
|
||||
/**
|
||||
* Array of pointers to hardware configurations supported by the codec,
|
||||
* or NULL if no hardware supported. The array is terminated by a NULL
|
||||
* pointer.
|
||||
*
|
||||
* The user can only access this field via avcodec_get_hw_config().
|
||||
*/
|
||||
const struct AVCodecHWConfigInternal *const *hw_configs;
|
||||
|
||||
/**
|
||||
* List of supported codec_tags, terminated by FF_CODEC_TAGS_END.
|
||||
*/
|
||||
const uint32_t *codec_tags;
|
||||
} FFCodec;
|
||||
|
||||
#define FF_CODEC_DECODE_CB(func) \
|
||||
.cb_type = FF_CODEC_CB_TYPE_DECODE, \
|
||||
.cb.decode = (func)
|
||||
#define FF_CODEC_DECODE_SUB_CB(func) \
|
||||
.cb_type = FF_CODEC_CB_TYPE_DECODE_SUB, \
|
||||
.cb.decode_sub = (func)
|
||||
#define FF_CODEC_RECEIVE_FRAME_CB(func) \
|
||||
.cb_type = FF_CODEC_CB_TYPE_RECEIVE_FRAME, \
|
||||
.cb.receive_frame = (func)
|
||||
#define FF_CODEC_ENCODE_CB(func) \
|
||||
.cb_type = FF_CODEC_CB_TYPE_ENCODE, \
|
||||
.cb.encode = (func)
|
||||
#define FF_CODEC_ENCODE_SUB_CB(func) \
|
||||
.cb_type = FF_CODEC_CB_TYPE_ENCODE_SUB, \
|
||||
.cb.encode_sub = (func)
|
||||
#define FF_CODEC_RECEIVE_PACKET_CB(func) \
|
||||
.cb_type = FF_CODEC_CB_TYPE_RECEIVE_PACKET, \
|
||||
.cb.receive_packet = (func)
|
||||
|
||||
static av_always_inline const FFCodec *ffcodec(const AVCodec *codec)
|
||||
{
|
||||
return (const FFCodec*)codec;
|
||||
}
|
||||
|
||||
#endif /* AVCODEC_CODEC_INTERNAL_H */
|
|
@ -1,4 +1,4 @@
|
|||
static const FFCodec * const codec_list[] = {
|
||||
static const AVCodec * const codec_list[] = {
|
||||
#if CONFIG_VP8_DECODER
|
||||
&ff_vp8_decoder,
|
||||
#endif
|
||||
|
|
|
@ -31,14 +31,12 @@
|
|||
static void codec_parameters_reset(AVCodecParameters *par)
|
||||
{
|
||||
av_freep(&par->extradata);
|
||||
av_channel_layout_uninit(&par->ch_layout);
|
||||
|
||||
memset(par, 0, sizeof(*par));
|
||||
|
||||
par->codec_type = AVMEDIA_TYPE_UNKNOWN;
|
||||
par->codec_id = AV_CODEC_ID_NONE;
|
||||
par->format = -1;
|
||||
par->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
|
||||
par->field_order = AV_FIELD_UNKNOWN;
|
||||
par->color_range = AVCOL_RANGE_UNSPECIFIED;
|
||||
par->color_primaries = AVCOL_PRI_UNSPECIFIED;
|
||||
|
@ -73,12 +71,9 @@ void avcodec_parameters_free(AVCodecParameters **ppar)
|
|||
|
||||
int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src)
|
||||
{
|
||||
int ret;
|
||||
|
||||
codec_parameters_reset(dst);
|
||||
memcpy(dst, src, sizeof(*dst));
|
||||
|
||||
dst->ch_layout = (AVChannelLayout){0};
|
||||
dst->extradata = NULL;
|
||||
dst->extradata_size = 0;
|
||||
if (src->extradata) {
|
||||
|
@ -89,18 +84,12 @@ int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src
|
|||
dst->extradata_size = src->extradata_size;
|
||||
}
|
||||
|
||||
ret = av_channel_layout_copy(&dst->ch_layout, &src->ch_layout);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int avcodec_parameters_from_context(AVCodecParameters *par,
|
||||
const AVCodecContext *codec)
|
||||
{
|
||||
int ret;
|
||||
|
||||
codec_parameters_reset(par);
|
||||
|
||||
par->codec_type = codec->codec_type;
|
||||
|
@ -129,32 +118,8 @@ int avcodec_parameters_from_context(AVCodecParameters *par,
|
|||
break;
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
par->format = codec->sample_fmt;
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
// if the old/new fields are set inconsistently, prefer the old ones
|
||||
if ((codec->channels && codec->channels != codec->ch_layout.nb_channels) ||
|
||||
(codec->channel_layout && (codec->ch_layout.order != AV_CHANNEL_ORDER_NATIVE ||
|
||||
codec->ch_layout.u.mask != codec->channel_layout))) {
|
||||
if (codec->channel_layout)
|
||||
av_channel_layout_from_mask(&par->ch_layout, codec->channel_layout);
|
||||
else {
|
||||
par->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
|
||||
par->ch_layout.nb_channels = codec->channels;
|
||||
}
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
} else {
|
||||
#endif
|
||||
ret = av_channel_layout_copy(&par->ch_layout, &codec->ch_layout);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
}
|
||||
par->channel_layout = par->ch_layout.order == AV_CHANNEL_ORDER_NATIVE ?
|
||||
par->ch_layout.u.mask : 0;
|
||||
par->channels = par->ch_layout.nb_channels;
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
par->channel_layout = codec->channel_layout;
|
||||
par->channels = codec->channels;
|
||||
par->sample_rate = codec->sample_rate;
|
||||
par->block_align = codec->block_align;
|
||||
par->frame_size = codec->frame_size;
|
||||
|
@ -182,8 +147,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
|||
int avcodec_parameters_to_context(AVCodecContext *codec,
|
||||
const AVCodecParameters *par)
|
||||
{
|
||||
int ret;
|
||||
|
||||
codec->codec_type = par->codec_type;
|
||||
codec->codec_id = par->codec_id;
|
||||
codec->codec_tag = par->codec_tag;
|
||||
|
@ -210,32 +173,8 @@ int avcodec_parameters_to_context(AVCodecContext *codec,
|
|||
break;
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
codec->sample_fmt = par->format;
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
// if the old/new fields are set inconsistently, prefer the old ones
|
||||
if ((par->channels && par->channels != par->ch_layout.nb_channels) ||
|
||||
(par->channel_layout && (par->ch_layout.order != AV_CHANNEL_ORDER_NATIVE ||
|
||||
par->ch_layout.u.mask != par->channel_layout))) {
|
||||
if (par->channel_layout)
|
||||
av_channel_layout_from_mask(&codec->ch_layout, par->channel_layout);
|
||||
else {
|
||||
codec->ch_layout.order = AV_CHANNEL_ORDER_UNSPEC;
|
||||
codec->ch_layout.nb_channels = par->channels;
|
||||
}
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
} else {
|
||||
#endif
|
||||
ret = av_channel_layout_copy(&codec->ch_layout, &par->ch_layout);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
}
|
||||
codec->channel_layout = codec->ch_layout.order == AV_CHANNEL_ORDER_NATIVE ?
|
||||
codec->ch_layout.u.mask : 0;
|
||||
codec->channels = codec->ch_layout.nb_channels;
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
codec->channel_layout = par->channel_layout;
|
||||
codec->channels = par->channels;
|
||||
codec->sample_rate = par->sample_rate;
|
||||
codec->block_align = par->block_align;
|
||||
codec->frame_size = par->frame_size;
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/avutil.h"
|
||||
#include "libavutil/channel_layout.h"
|
||||
#include "libavutil/rational.h"
|
||||
#include "libavutil/pixfmt.h"
|
||||
|
||||
|
@ -155,22 +154,16 @@ typedef struct AVCodecParameters {
|
|||
*/
|
||||
int video_delay;
|
||||
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
/**
|
||||
* Audio only. The channel layout bitmask. May be 0 if the channel layout is
|
||||
* unknown or unspecified, otherwise the number of bits set must be equal to
|
||||
* the channels field.
|
||||
* @deprecated use ch_layout
|
||||
*/
|
||||
attribute_deprecated
|
||||
uint64_t channel_layout;
|
||||
/**
|
||||
* Audio only. The number of audio channels.
|
||||
* @deprecated use ch_layout.nb_channels
|
||||
*/
|
||||
attribute_deprecated
|
||||
int channels;
|
||||
#endif
|
||||
/**
|
||||
* Audio only. The number of audio samples per second.
|
||||
*/
|
||||
|
@ -205,11 +198,6 @@ typedef struct AVCodecParameters {
|
|||
* Audio only. Number of samples to skip after a discontinuity.
|
||||
*/
|
||||
int seek_preroll;
|
||||
|
||||
/**
|
||||
* Audio only. The channel layout and number of channels.
|
||||
*/
|
||||
AVChannelLayout ch_layout;
|
||||
} AVCodecParameters;
|
||||
|
||||
/**
|
||||
|
|
|
@ -30,9 +30,7 @@
|
|||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "libavutil/error.h"
|
||||
#include "libavutil/mathematics.h"
|
||||
#include "libavutil/mem.h"
|
||||
#include "dct.h"
|
||||
#include "dct32.h"
|
||||
|
||||
|
@ -214,9 +212,8 @@ av_cold int ff_dct_init(DCTContext *s, int nbits, enum DCTTransformType inverse)
|
|||
}
|
||||
|
||||
s->dct32 = ff_dct32_float;
|
||||
#if ARCH_X86
|
||||
ff_dct_init_x86(s);
|
||||
#endif
|
||||
if (ARCH_X86)
|
||||
ff_dct_init_x86(s);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -79,18 +79,9 @@ int ff_decode_get_hw_frames_ctx(AVCodecContext *avctx,
|
|||
|
||||
int ff_attach_decode_data(AVFrame *frame);
|
||||
|
||||
/**
|
||||
* Check whether the side-data of src contains a palette of
|
||||
* size AVPALETTE_SIZE; if so, copy it to dst and return 1;
|
||||
* else return 0.
|
||||
* Also emit an error message upon encountering a palette
|
||||
* with invalid size.
|
||||
*/
|
||||
int ff_copy_palette(void *dst, const AVPacket *src, void *logctx);
|
||||
|
||||
/**
|
||||
* Perform decoder initialization and validation.
|
||||
* Called when opening the decoder, before the FFCodec.init() call.
|
||||
* Called when opening the decoder, before the AVCodec.init() call.
|
||||
*/
|
||||
int ff_decode_preinit(AVCodecContext *avctx);
|
||||
|
||||
|
|
|
@ -1,170 +0,0 @@
|
|||
/*
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef AVCODEC_DEFS_H
|
||||
#define AVCODEC_DEFS_H
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @ingroup libavc
|
||||
* Misc types and constants that do not belong anywhere else.
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/**
|
||||
* @ingroup lavc_decoding
|
||||
* Required number of additionally allocated bytes at the end of the input bitstream for decoding.
|
||||
* This is mainly needed because some optimized bitstream readers read
|
||||
* 32 or 64 bit at once and could read over the end.<br>
|
||||
* Note: If the first 23 bits of the additional bytes are not 0, then damaged
|
||||
* MPEG bitstreams could cause overread and segfault.
|
||||
*/
|
||||
#define AV_INPUT_BUFFER_PADDING_SIZE 64
|
||||
|
||||
/**
|
||||
* @ingroup lavc_decoding
|
||||
*/
|
||||
enum AVDiscard{
|
||||
/* We leave some space between them for extensions (drop some
|
||||
* keyframes for intra-only or drop just some bidir frames). */
|
||||
AVDISCARD_NONE =-16, ///< discard nothing
|
||||
AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi
|
||||
AVDISCARD_NONREF = 8, ///< discard all non reference
|
||||
AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames
|
||||
AVDISCARD_NONINTRA= 24, ///< discard all non intra frames
|
||||
AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes
|
||||
AVDISCARD_ALL = 48, ///< discard all
|
||||
};
|
||||
|
||||
enum AVAudioServiceType {
|
||||
AV_AUDIO_SERVICE_TYPE_MAIN = 0,
|
||||
AV_AUDIO_SERVICE_TYPE_EFFECTS = 1,
|
||||
AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2,
|
||||
AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3,
|
||||
AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4,
|
||||
AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5,
|
||||
AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6,
|
||||
AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7,
|
||||
AV_AUDIO_SERVICE_TYPE_KARAOKE = 8,
|
||||
AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI
|
||||
};
|
||||
|
||||
/**
|
||||
* Pan Scan area.
|
||||
* This specifies the area which should be displayed.
|
||||
* Note there may be multiple such areas for one frame.
|
||||
*/
|
||||
typedef struct AVPanScan {
|
||||
/**
|
||||
* id
|
||||
* - encoding: Set by user.
|
||||
* - decoding: Set by libavcodec.
|
||||
*/
|
||||
int id;
|
||||
|
||||
/**
|
||||
* width and height in 1/16 pel
|
||||
* - encoding: Set by user.
|
||||
* - decoding: Set by libavcodec.
|
||||
*/
|
||||
int width;
|
||||
int height;
|
||||
|
||||
/**
|
||||
* position of the top left corner in 1/16 pel for up to 3 fields/frames
|
||||
* - encoding: Set by user.
|
||||
* - decoding: Set by libavcodec.
|
||||
*/
|
||||
int16_t position[3][2];
|
||||
} AVPanScan;
|
||||
|
||||
/**
|
||||
* This structure describes the bitrate properties of an encoded bitstream. It
|
||||
* roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD
|
||||
* parameters for H.264/HEVC.
|
||||
*/
|
||||
typedef struct AVCPBProperties {
|
||||
/**
|
||||
* Maximum bitrate of the stream, in bits per second.
|
||||
* Zero if unknown or unspecified.
|
||||
*/
|
||||
int64_t max_bitrate;
|
||||
/**
|
||||
* Minimum bitrate of the stream, in bits per second.
|
||||
* Zero if unknown or unspecified.
|
||||
*/
|
||||
int64_t min_bitrate;
|
||||
/**
|
||||
* Average bitrate of the stream, in bits per second.
|
||||
* Zero if unknown or unspecified.
|
||||
*/
|
||||
int64_t avg_bitrate;
|
||||
|
||||
/**
|
||||
* The size of the buffer to which the ratecontrol is applied, in bits.
|
||||
* Zero if unknown or unspecified.
|
||||
*/
|
||||
int64_t buffer_size;
|
||||
|
||||
/**
|
||||
* The delay between the time the packet this structure is associated with
|
||||
* is received and the time when it should be decoded, in periods of a 27MHz
|
||||
* clock.
|
||||
*
|
||||
* UINT64_MAX when unknown or unspecified.
|
||||
*/
|
||||
uint64_t vbv_delay;
|
||||
} AVCPBProperties;
|
||||
|
||||
/**
|
||||
* Allocate a CPB properties structure and initialize its fields to default
|
||||
* values.
|
||||
*
|
||||
* @param size if non-NULL, the size of the allocated struct will be written
|
||||
* here. This is useful for embedding it in side data.
|
||||
*
|
||||
* @return the newly allocated struct or NULL on failure
|
||||
*/
|
||||
AVCPBProperties *av_cpb_properties_alloc(size_t *size);
|
||||
|
||||
/**
|
||||
* This structure supplies correlation between a packet timestamp and a wall clock
|
||||
* production time. The definition follows the Producer Reference Time ('prft')
|
||||
* as defined in ISO/IEC 14496-12
|
||||
*/
|
||||
typedef struct AVProducerReferenceTime {
|
||||
/**
|
||||
* A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()).
|
||||
*/
|
||||
int64_t wallclock;
|
||||
int flags;
|
||||
} AVProducerReferenceTime;
|
||||
|
||||
/**
|
||||
* Encode extradata length to a buffer. Used by xiph codecs.
|
||||
*
|
||||
* @param s buffer to write to; must be at least (v/255+1) bytes long
|
||||
* @param v size of extradata in bytes
|
||||
* @return number of bytes written to the buffer.
|
||||
*/
|
||||
unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
|
||||
|
||||
#endif // AVCODEC_DEFS_H
|
|
@ -20,19 +20,17 @@
|
|||
|
||||
#include "libavutil/attributes.h"
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/channel_layout.h"
|
||||
#include "libavutil/frame.h"
|
||||
#include "libavutil/imgutils.h"
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/samplefmt.h"
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "codec_internal.h"
|
||||
#include "encode.h"
|
||||
#include "frame_thread_encoder.h"
|
||||
#include "internal.h"
|
||||
|
||||
int ff_alloc_packet(AVCodecContext *avctx, AVPacket *avpkt, int64_t size)
|
||||
int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int64_t min_size)
|
||||
{
|
||||
if (size < 0 || size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Invalid minimum required packet size %"PRId64" (max allowed is %d)\n",
|
||||
|
@ -42,14 +40,18 @@ int ff_alloc_packet(AVCodecContext *avctx, AVPacket *avpkt, int64_t size)
|
|||
|
||||
av_assert0(!avpkt->data);
|
||||
|
||||
av_fast_padded_malloc(&avctx->internal->byte_buffer,
|
||||
&avctx->internal->byte_buffer_size, size);
|
||||
avpkt->data = avctx->internal->byte_buffer;
|
||||
if (!avpkt->data) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Failed to allocate packet of size %"PRId64"\n", size);
|
||||
return AVERROR(ENOMEM);
|
||||
if (avctx && 2*min_size < size) { // FIXME The factor needs to be finetuned
|
||||
av_fast_padded_malloc(&avctx->internal->byte_buffer, &avctx->internal->byte_buffer_size, size);
|
||||
avpkt->data = avctx->internal->byte_buffer;
|
||||
avpkt->size = size;
|
||||
}
|
||||
|
||||
if (!avpkt->data) {
|
||||
int ret = av_new_packet(avpkt, size);
|
||||
if (ret < 0)
|
||||
av_log(avctx, AV_LOG_ERROR, "Failed to allocate packet of size %"PRId64"\n", size);
|
||||
return ret;
|
||||
}
|
||||
avpkt->size = size;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -72,6 +74,7 @@ int avcodec_default_get_encode_buffer(AVCodecContext *avctx, AVPacket *avpkt, in
|
|||
return ret;
|
||||
}
|
||||
avpkt->data = avpkt->buf->data;
|
||||
memset(avpkt->data + avpkt->size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -95,7 +98,6 @@ int ff_get_encode_buffer(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, i
|
|||
ret = AVERROR(EINVAL);
|
||||
goto fail;
|
||||
}
|
||||
memset(avpkt->data + avpkt->size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
|
||||
|
||||
ret = 0;
|
||||
fail:
|
||||
|
@ -115,10 +117,9 @@ static int pad_last_frame(AVCodecContext *s, AVFrame *frame, const AVFrame *src)
|
|||
int ret;
|
||||
|
||||
frame->format = src->format;
|
||||
frame->channel_layout = src->channel_layout;
|
||||
frame->channels = src->channels;
|
||||
frame->nb_samples = s->frame_size;
|
||||
ret = av_channel_layout_copy(&frame->ch_layout, &s->ch_layout);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
ret = av_frame_get_buffer(frame, 0);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
@ -128,12 +129,11 @@ static int pad_last_frame(AVCodecContext *s, AVFrame *frame, const AVFrame *src)
|
|||
goto fail;
|
||||
|
||||
if ((ret = av_samples_copy(frame->extended_data, src->extended_data, 0, 0,
|
||||
src->nb_samples, s->ch_layout.nb_channels,
|
||||
s->sample_fmt)) < 0)
|
||||
src->nb_samples, s->channels, s->sample_fmt)) < 0)
|
||||
goto fail;
|
||||
if ((ret = av_samples_set_silence(frame->extended_data, src->nb_samples,
|
||||
frame->nb_samples - src->nb_samples,
|
||||
s->ch_layout.nb_channels, s->sample_fmt)) < 0)
|
||||
s->channels, s->sample_fmt)) < 0)
|
||||
goto fail;
|
||||
|
||||
return 0;
|
||||
|
@ -152,7 +152,7 @@ int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,
|
|||
return -1;
|
||||
}
|
||||
|
||||
ret = ffcodec(avctx->codec)->cb.encode_sub(avctx, buf, buf_size, sub);
|
||||
ret = avctx->codec->encode_sub(avctx, buf, buf_size, sub);
|
||||
avctx->frame_number++;
|
||||
return ret;
|
||||
}
|
||||
|
@ -175,8 +175,8 @@ int ff_encode_get_frame(AVCodecContext *avctx, AVFrame *frame)
|
|||
static int encode_simple_internal(AVCodecContext *avctx, AVPacket *avpkt)
|
||||
{
|
||||
AVCodecInternal *avci = avctx->internal;
|
||||
AVFrame *frame = avci->in_frame;
|
||||
const FFCodec *const codec = ffcodec(avctx->codec);
|
||||
EncodeSimpleContext *es = &avci->es;
|
||||
AVFrame *frame = es->in_frame;
|
||||
int got_packet;
|
||||
int ret;
|
||||
|
||||
|
@ -201,7 +201,7 @@ static int encode_simple_internal(AVCodecContext *avctx, AVPacket *avpkt)
|
|||
|
||||
got_packet = 0;
|
||||
|
||||
av_assert0(codec->cb_type == FF_CODEC_CB_TYPE_ENCODE);
|
||||
av_assert0(avctx->codec->encode2);
|
||||
|
||||
if (CONFIG_FRAME_THREAD_ENCODER &&
|
||||
avci->frame_thread_encoder && (avctx->active_thread_type & FF_THREAD_FRAME))
|
||||
|
@ -211,7 +211,7 @@ static int encode_simple_internal(AVCodecContext *avctx, AVPacket *avpkt)
|
|||
* no sense to use the properties of the current frame anyway). */
|
||||
ret = ff_thread_video_encode_frame(avctx, avpkt, frame, &got_packet);
|
||||
else {
|
||||
ret = codec->cb.encode(avctx, avpkt, frame, &got_packet);
|
||||
ret = avctx->codec->encode2(avctx, avpkt, frame, &got_packet);
|
||||
if (avctx->codec->type == AVMEDIA_TYPE_VIDEO && !ret && got_packet &&
|
||||
!(avctx->codec->capabilities & AV_CODEC_CAP_DELAY))
|
||||
avpkt->pts = avpkt->dts = frame->pts;
|
||||
|
@ -238,9 +238,12 @@ static int encode_simple_internal(AVCodecContext *avctx, AVPacket *avpkt)
|
|||
}
|
||||
}
|
||||
if (avctx->codec->type == AVMEDIA_TYPE_AUDIO) {
|
||||
/* NOTE: if we add any audio encoders which output non-keyframe packets,
|
||||
* this needs to be moved to the encoders, but for now we can do it
|
||||
* here to simplify things */
|
||||
avpkt->flags |= AV_PKT_FLAG_KEY;
|
||||
avpkt->dts = avpkt->pts;
|
||||
}
|
||||
avpkt->flags |= avci->intra_only_flag;
|
||||
}
|
||||
|
||||
if (avci->draining && !got_packet)
|
||||
|
@ -250,8 +253,11 @@ end:
|
|||
if (ret < 0 || !got_packet)
|
||||
av_packet_unref(avpkt);
|
||||
|
||||
if (frame)
|
||||
if (frame) {
|
||||
if (!ret)
|
||||
avctx->frame_number++;
|
||||
av_frame_unref(frame);
|
||||
}
|
||||
|
||||
if (got_packet)
|
||||
// Encoders must always return ref-counted buffers.
|
||||
|
@ -291,8 +297,8 @@ static int encode_receive_packet_internal(AVCodecContext *avctx, AVPacket *avpkt
|
|||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
if (ffcodec(avctx->codec)->cb_type == FF_CODEC_CB_TYPE_RECEIVE_PACKET) {
|
||||
ret = ffcodec(avctx->codec)->cb.receive_packet(avctx, avpkt);
|
||||
if (avctx->codec->receive_packet) {
|
||||
ret = avctx->codec->receive_packet(avctx, avpkt);
|
||||
if (ret < 0)
|
||||
av_packet_unref(avpkt);
|
||||
else
|
||||
|
@ -366,7 +372,7 @@ int attribute_align_arg avcodec_send_frame(AVCodecContext *avctx, const AVFrame
|
|||
if (avci->draining)
|
||||
return AVERROR_EOF;
|
||||
|
||||
if (avci->buffer_frame->buf[0])
|
||||
if (avci->buffer_frame->data[0])
|
||||
return AVERROR(EAGAIN);
|
||||
|
||||
if (!frame) {
|
||||
|
@ -383,8 +389,6 @@ int attribute_align_arg avcodec_send_frame(AVCodecContext *avctx, const AVFrame
|
|||
return ret;
|
||||
}
|
||||
|
||||
avctx->frame_number++;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -409,16 +413,160 @@ int attribute_align_arg avcodec_receive_packet(AVCodecContext *avctx, AVPacket *
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int encode_preinit_video(AVCodecContext *avctx)
|
||||
#if FF_API_OLD_ENCDEC
|
||||
static int compat_encode(AVCodecContext *avctx, AVPacket *avpkt,
|
||||
int *got_packet, const AVFrame *frame)
|
||||
{
|
||||
const AVPixFmtDescriptor *pixdesc = av_pix_fmt_desc_get(avctx->pix_fmt);
|
||||
int i;
|
||||
AVCodecInternal *avci = avctx->internal;
|
||||
AVPacket user_pkt;
|
||||
int ret;
|
||||
|
||||
*got_packet = 0;
|
||||
|
||||
if (frame && avctx->codec->type == AVMEDIA_TYPE_VIDEO) {
|
||||
if (frame->format == AV_PIX_FMT_NONE)
|
||||
av_log(avctx, AV_LOG_WARNING, "AVFrame.format is not set\n");
|
||||
if (frame->width == 0 || frame->height == 0)
|
||||
av_log(avctx, AV_LOG_WARNING, "AVFrame.width or height is not set\n");
|
||||
}
|
||||
|
||||
if (avctx->codec->capabilities & AV_CODEC_CAP_DR1) {
|
||||
av_log(avctx, AV_LOG_WARNING, "The deprecated avcodec_encode_* API does not support "
|
||||
"AV_CODEC_CAP_DR1 encoders\n");
|
||||
return AVERROR(ENOSYS);
|
||||
}
|
||||
|
||||
ret = avcodec_send_frame(avctx, frame);
|
||||
if (ret == AVERROR_EOF)
|
||||
ret = 0;
|
||||
else if (ret == AVERROR(EAGAIN)) {
|
||||
/* we fully drain all the output in each encode call, so this should not
|
||||
* ever happen */
|
||||
return AVERROR_BUG;
|
||||
} else if (ret < 0)
|
||||
return ret;
|
||||
|
||||
av_packet_move_ref(&user_pkt, avpkt);
|
||||
while (ret >= 0) {
|
||||
ret = avcodec_receive_packet(avctx, avpkt);
|
||||
if (ret < 0) {
|
||||
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
|
||||
ret = 0;
|
||||
goto finish;
|
||||
}
|
||||
|
||||
if (avpkt != avci->compat_encode_packet) {
|
||||
if (avpkt->data && user_pkt.data) {
|
||||
if (user_pkt.size >= avpkt->size) {
|
||||
memcpy(user_pkt.data, avpkt->data, avpkt->size);
|
||||
av_buffer_unref(&avpkt->buf);
|
||||
avpkt->buf = user_pkt.buf;
|
||||
avpkt->data = user_pkt.data;
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
av_init_packet(&user_pkt);
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
} else {
|
||||
av_log(avctx, AV_LOG_ERROR, "Provided packet is too small, needs to be %d\n", avpkt->size);
|
||||
av_packet_unref(avpkt);
|
||||
ret = AVERROR(EINVAL);
|
||||
goto finish;
|
||||
}
|
||||
}
|
||||
|
||||
*got_packet = 1;
|
||||
avpkt = avci->compat_encode_packet;
|
||||
} else {
|
||||
if (!avci->compat_decode_warned) {
|
||||
av_log(avctx, AV_LOG_WARNING, "The deprecated avcodec_encode_* "
|
||||
"API cannot return all the packets for this encoder. "
|
||||
"Some packets will be dropped. Update your code to the "
|
||||
"new encoding API to fix this.\n");
|
||||
avci->compat_decode_warned = 1;
|
||||
av_packet_unref(avpkt);
|
||||
}
|
||||
}
|
||||
|
||||
if (avci->draining)
|
||||
break;
|
||||
}
|
||||
|
||||
finish:
|
||||
if (ret < 0)
|
||||
av_packet_unref(&user_pkt);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
|
||||
AVPacket *avpkt,
|
||||
const AVFrame *frame,
|
||||
int *got_packet_ptr)
|
||||
{
|
||||
int ret = compat_encode(avctx, avpkt, got_packet_ptr, frame);
|
||||
|
||||
if (ret < 0)
|
||||
av_packet_unref(avpkt);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx,
|
||||
AVPacket *avpkt,
|
||||
const AVFrame *frame,
|
||||
int *got_packet_ptr)
|
||||
{
|
||||
int ret = compat_encode(avctx, avpkt, got_packet_ptr, frame);
|
||||
|
||||
if (ret < 0)
|
||||
av_packet_unref(avpkt);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
int ff_encode_preinit(AVCodecContext *avctx)
|
||||
{
|
||||
int i;
|
||||
#if FF_API_CODED_FRAME
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
avctx->coded_frame = av_frame_alloc();
|
||||
if (!avctx->coded_frame) {
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
|
||||
if (avctx->time_base.num <= 0 || avctx->time_base.den <= 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "The encoder timebase is not set.\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
if (avctx->codec->sample_fmts) {
|
||||
for (i = 0; avctx->codec->sample_fmts[i] != AV_SAMPLE_FMT_NONE; i++) {
|
||||
if (avctx->sample_fmt == avctx->codec->sample_fmts[i])
|
||||
break;
|
||||
if (avctx->channels == 1 &&
|
||||
av_get_planar_sample_fmt(avctx->sample_fmt) ==
|
||||
av_get_planar_sample_fmt(avctx->codec->sample_fmts[i])) {
|
||||
avctx->sample_fmt = avctx->codec->sample_fmts[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (avctx->codec->sample_fmts[i] == AV_SAMPLE_FMT_NONE) {
|
||||
char buf[128];
|
||||
snprintf(buf, sizeof(buf), "%d", avctx->sample_fmt);
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified sample format %s is invalid or not supported\n",
|
||||
(char *)av_x_if_null(av_get_sample_fmt_name(avctx->sample_fmt), buf));
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
}
|
||||
if (avctx->codec->pix_fmts) {
|
||||
for (i = 0; avctx->codec->pix_fmts[i] != AV_PIX_FMT_NONE; i++)
|
||||
if (avctx->pix_fmt == avctx->codec->pix_fmts[i])
|
||||
break;
|
||||
if (avctx->codec->pix_fmts[i] == AV_PIX_FMT_NONE) {
|
||||
if (avctx->codec->pix_fmts[i] == AV_PIX_FMT_NONE
|
||||
&& !(avctx->codec_id == AV_CODEC_ID_MJPEG
|
||||
&& avctx->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL)) {
|
||||
char buf[128];
|
||||
snprintf(buf, sizeof(buf), "%d", avctx->pix_fmt);
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified pixel format %s is invalid or not supported\n",
|
||||
|
@ -432,17 +580,74 @@ static int encode_preinit_video(AVCodecContext *avctx)
|
|||
avctx->codec->pix_fmts[i] == AV_PIX_FMT_YUVJ444P)
|
||||
avctx->color_range = AVCOL_RANGE_JPEG;
|
||||
}
|
||||
|
||||
if ( avctx->bits_per_raw_sample < 0
|
||||
|| (avctx->bits_per_raw_sample > 8 && pixdesc->comp[0].depth <= 8)) {
|
||||
av_log(avctx, AV_LOG_WARNING, "Specified bit depth %d not possible with the specified pixel formats depth %d\n",
|
||||
avctx->bits_per_raw_sample, pixdesc->comp[0].depth);
|
||||
avctx->bits_per_raw_sample = pixdesc->comp[0].depth;
|
||||
if (avctx->codec->supported_samplerates) {
|
||||
for (i = 0; avctx->codec->supported_samplerates[i] != 0; i++)
|
||||
if (avctx->sample_rate == avctx->codec->supported_samplerates[i])
|
||||
break;
|
||||
if (avctx->codec->supported_samplerates[i] == 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified sample rate %d is not supported\n",
|
||||
avctx->sample_rate);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
}
|
||||
if (avctx->width <= 0 || avctx->height <= 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "dimensions not set\n");
|
||||
if (avctx->sample_rate < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified sample rate %d is not supported\n",
|
||||
avctx->sample_rate);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
if (avctx->codec->channel_layouts) {
|
||||
if (!avctx->channel_layout) {
|
||||
av_log(avctx, AV_LOG_WARNING, "Channel layout not specified\n");
|
||||
} else {
|
||||
for (i = 0; avctx->codec->channel_layouts[i] != 0; i++)
|
||||
if (avctx->channel_layout == avctx->codec->channel_layouts[i])
|
||||
break;
|
||||
if (avctx->codec->channel_layouts[i] == 0) {
|
||||
char buf[512];
|
||||
av_get_channel_layout_string(buf, sizeof(buf), -1, avctx->channel_layout);
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified channel layout '%s' is not supported\n", buf);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (avctx->channel_layout && avctx->channels) {
|
||||
int channels = av_get_channel_layout_nb_channels(avctx->channel_layout);
|
||||
if (channels != avctx->channels) {
|
||||
char buf[512];
|
||||
av_get_channel_layout_string(buf, sizeof(buf), -1, avctx->channel_layout);
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Channel layout '%s' with %d channels does not match number of specified channels %d\n",
|
||||
buf, channels, avctx->channels);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
} else if (avctx->channel_layout) {
|
||||
avctx->channels = av_get_channel_layout_nb_channels(avctx->channel_layout);
|
||||
}
|
||||
if (avctx->channels < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified number of channels %d is not supported\n",
|
||||
avctx->channels);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
if(avctx->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
const AVPixFmtDescriptor *pixdesc = av_pix_fmt_desc_get(avctx->pix_fmt);
|
||||
if ( avctx->bits_per_raw_sample < 0
|
||||
|| (avctx->bits_per_raw_sample > 8 && pixdesc->comp[0].depth <= 8)) {
|
||||
av_log(avctx, AV_LOG_WARNING, "Specified bit depth %d not possible with the specified pixel formats depth %d\n",
|
||||
avctx->bits_per_raw_sample, pixdesc->comp[0].depth);
|
||||
avctx->bits_per_raw_sample = pixdesc->comp[0].depth;
|
||||
}
|
||||
if (avctx->width <= 0 || avctx->height <= 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "dimensions not set\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
}
|
||||
if ( (avctx->codec_type == AVMEDIA_TYPE_VIDEO || avctx->codec_type == AVMEDIA_TYPE_AUDIO)
|
||||
&& avctx->bit_rate>0 && avctx->bit_rate<1000) {
|
||||
av_log(avctx, AV_LOG_WARNING, "Bitrate %"PRId64" is extremely low, maybe you mean %"PRId64"k\n", avctx->bit_rate, avctx->bit_rate);
|
||||
}
|
||||
|
||||
if (!avctx->rc_initial_buffer_occupancy)
|
||||
avctx->rc_initial_buffer_occupancy = avctx->rc_buffer_size * 3LL / 4;
|
||||
|
||||
if (avctx->ticks_per_frame && avctx->time_base.num &&
|
||||
avctx->ticks_per_frame > INT_MAX / avctx->time_base.num) {
|
||||
|
@ -475,159 +680,3 @@ static int encode_preinit_video(AVCodecContext *avctx)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int encode_preinit_audio(AVCodecContext *avctx)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (avctx->codec->sample_fmts) {
|
||||
for (i = 0; avctx->codec->sample_fmts[i] != AV_SAMPLE_FMT_NONE; i++) {
|
||||
if (avctx->sample_fmt == avctx->codec->sample_fmts[i])
|
||||
break;
|
||||
if (avctx->ch_layout.nb_channels == 1 &&
|
||||
av_get_planar_sample_fmt(avctx->sample_fmt) ==
|
||||
av_get_planar_sample_fmt(avctx->codec->sample_fmts[i])) {
|
||||
avctx->sample_fmt = avctx->codec->sample_fmts[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (avctx->codec->sample_fmts[i] == AV_SAMPLE_FMT_NONE) {
|
||||
char buf[128];
|
||||
snprintf(buf, sizeof(buf), "%d", avctx->sample_fmt);
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified sample format %s is invalid or not supported\n",
|
||||
(char *)av_x_if_null(av_get_sample_fmt_name(avctx->sample_fmt), buf));
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
}
|
||||
if (avctx->codec->supported_samplerates) {
|
||||
for (i = 0; avctx->codec->supported_samplerates[i] != 0; i++)
|
||||
if (avctx->sample_rate == avctx->codec->supported_samplerates[i])
|
||||
break;
|
||||
if (avctx->codec->supported_samplerates[i] == 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified sample rate %d is not supported\n",
|
||||
avctx->sample_rate);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
}
|
||||
if (avctx->sample_rate < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified sample rate %d is not supported\n",
|
||||
avctx->sample_rate);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
if (avctx->codec->ch_layouts) {
|
||||
if (!av_channel_layout_check(&avctx->ch_layout)) {
|
||||
av_log(avctx, AV_LOG_WARNING, "Channel layout not specified correctly\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
for (i = 0; avctx->codec->ch_layouts[i].nb_channels; i++) {
|
||||
if (!av_channel_layout_compare(&avctx->ch_layout, &avctx->codec->ch_layouts[i]))
|
||||
break;
|
||||
}
|
||||
if (!avctx->codec->ch_layouts[i].nb_channels) {
|
||||
char buf[512];
|
||||
int ret = av_channel_layout_describe(&avctx->ch_layout, buf, sizeof(buf));
|
||||
if (ret > 0)
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified channel layout '%s' is not supported\n", buf);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
}
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
if (avctx->channel_layout && avctx->channels) {
|
||||
int channels = av_get_channel_layout_nb_channels(avctx->channel_layout);
|
||||
if (channels != avctx->channels) {
|
||||
char buf[512];
|
||||
av_get_channel_layout_string(buf, sizeof(buf), -1, avctx->channel_layout);
|
||||
av_log(avctx, AV_LOG_ERROR,
|
||||
"Channel layout '%s' with %d channels does not match number of specified channels %d\n",
|
||||
buf, channels, avctx->channels);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
} else if (avctx->channel_layout) {
|
||||
avctx->channels = av_get_channel_layout_nb_channels(avctx->channel_layout);
|
||||
}
|
||||
if (avctx->channels < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Specified number of channels %d is not supported\n",
|
||||
avctx->channels);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
|
||||
if (!avctx->bits_per_raw_sample)
|
||||
avctx->bits_per_raw_sample = 8 * av_get_bytes_per_sample(avctx->sample_fmt);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ff_encode_preinit(AVCodecContext *avctx)
|
||||
{
|
||||
AVCodecInternal *avci = avctx->internal;
|
||||
int ret = 0;
|
||||
|
||||
if (avctx->time_base.num <= 0 || avctx->time_base.den <= 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "The encoder timebase is not set.\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
switch (avctx->codec_type) {
|
||||
case AVMEDIA_TYPE_VIDEO: ret = encode_preinit_video(avctx); break;
|
||||
case AVMEDIA_TYPE_AUDIO: ret = encode_preinit_audio(avctx); break;
|
||||
}
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if ( (avctx->codec_type == AVMEDIA_TYPE_VIDEO || avctx->codec_type == AVMEDIA_TYPE_AUDIO)
|
||||
&& avctx->bit_rate>0 && avctx->bit_rate<1000) {
|
||||
av_log(avctx, AV_LOG_WARNING, "Bitrate %"PRId64" is extremely low, maybe you mean %"PRId64"k\n", avctx->bit_rate, avctx->bit_rate);
|
||||
}
|
||||
|
||||
if (!avctx->rc_initial_buffer_occupancy)
|
||||
avctx->rc_initial_buffer_occupancy = avctx->rc_buffer_size * 3LL / 4;
|
||||
|
||||
if (avctx->codec_descriptor->props & AV_CODEC_PROP_INTRA_ONLY)
|
||||
avctx->internal->intra_only_flag = AV_PKT_FLAG_KEY;
|
||||
|
||||
if (ffcodec(avctx->codec)->cb_type == FF_CODEC_CB_TYPE_ENCODE) {
|
||||
avci->in_frame = av_frame_alloc();
|
||||
if (!avci->in_frame)
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ff_encode_alloc_frame(AVCodecContext *avctx, AVFrame *frame)
|
||||
{
|
||||
int ret;
|
||||
|
||||
switch (avctx->codec->type) {
|
||||
case AVMEDIA_TYPE_VIDEO:
|
||||
frame->format = avctx->pix_fmt;
|
||||
if (frame->width <= 0 || frame->height <= 0) {
|
||||
frame->width = FFMAX(avctx->width, avctx->coded_width);
|
||||
frame->height = FFMAX(avctx->height, avctx->coded_height);
|
||||
}
|
||||
|
||||
break;
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
frame->sample_rate = avctx->sample_rate;
|
||||
frame->format = avctx->sample_fmt;
|
||||
if (!frame->ch_layout.nb_channels) {
|
||||
ret = av_channel_layout_copy(&frame->ch_layout, &avctx->ch_layout);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
ret = avcodec_default_get_buffer2(avctx, frame, 0);
|
||||
if (ret < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
||||
av_frame_unref(frame);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -44,29 +44,9 @@ int ff_encode_get_frame(AVCodecContext *avctx, AVFrame *frame);
|
|||
*/
|
||||
int ff_get_encode_buffer(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int flags);
|
||||
|
||||
/**
|
||||
* Allocate buffers for a frame. Encoder equivalent to ff_get_buffer().
|
||||
*/
|
||||
int ff_encode_alloc_frame(AVCodecContext *avctx, AVFrame *frame);
|
||||
|
||||
/**
|
||||
* Check AVPacket size and allocate data.
|
||||
*
|
||||
* Encoders supporting FFCodec.encode2() can use this as a convenience to
|
||||
* obtain a big enough buffer for the encoded bitstream.
|
||||
*
|
||||
* @param avctx the AVCodecContext of the encoder
|
||||
* @param avpkt The AVPacket: on success, avpkt->data will point to a buffer
|
||||
* of size at least `size`; the packet will not be refcounted.
|
||||
* This packet must be initially blank.
|
||||
* @param size an upper bound of the size of the packet to encode
|
||||
* @return non negative on success, negative error code on failure
|
||||
*/
|
||||
int ff_alloc_packet(AVCodecContext *avctx, AVPacket *avpkt, int64_t size);
|
||||
|
||||
/*
|
||||
* Perform encoder initialization and validation.
|
||||
* Called when opening the encoder, before the FFCodec.init() call.
|
||||
* Called when opening the encoder, before the AVCodec.init() call.
|
||||
*/
|
||||
int ff_encode_preinit(AVCodecContext *avctx);
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
#include "avcodec.h"
|
||||
#include "me_cmp.h"
|
||||
#include "threadframe.h"
|
||||
#include "thread.h"
|
||||
|
||||
///< current MB is the first after a resync marker
|
||||
#define VP_START 1
|
||||
|
@ -52,8 +52,7 @@ typedef struct ERPicture {
|
|||
|
||||
typedef struct ERContext {
|
||||
AVCodecContext *avctx;
|
||||
|
||||
me_cmp_func sad;
|
||||
MECmpContext mecc;
|
||||
int mecc_inited;
|
||||
|
||||
int *mb_index2xy;
|
||||
|
@ -82,6 +81,7 @@ typedef struct ERContext {
|
|||
uint16_t pb_time;
|
||||
int quarter_sample;
|
||||
int partitioned_frame;
|
||||
int ref_count;
|
||||
|
||||
void (*decode_mb)(void *opaque, int ref, int mv_dir, int mv_type,
|
||||
int (*mv)[2][4][2],
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
av_cold void ff_fdctdsp_init(FDCTDSPContext *c, AVCodecContext *avctx)
|
||||
{
|
||||
av_unused const unsigned high_bit_depth = avctx->bits_per_raw_sample > 8;
|
||||
const unsigned high_bit_depth = avctx->bits_per_raw_sample > 8;
|
||||
|
||||
if (avctx->bits_per_raw_sample == 10 || avctx->bits_per_raw_sample == 9) {
|
||||
c->fdct = ff_jpeg_fdct_islow_10;
|
||||
|
@ -43,9 +43,8 @@ av_cold void ff_fdctdsp_init(FDCTDSPContext *c, AVCodecContext *avctx)
|
|||
c->fdct248 = ff_fdct248_islow_8;
|
||||
}
|
||||
|
||||
#if ARCH_PPC
|
||||
ff_fdctdsp_init_ppc(c, avctx, high_bit_depth);
|
||||
#elif ARCH_X86
|
||||
ff_fdctdsp_init_x86(c, avctx, high_bit_depth);
|
||||
#endif
|
||||
if (ARCH_PPC)
|
||||
ff_fdctdsp_init_ppc(c, avctx, high_bit_depth);
|
||||
if (ARCH_X86)
|
||||
ff_fdctdsp_init_x86(c, avctx, high_bit_depth);
|
||||
}
|
||||
|
|
|
@ -19,9 +19,6 @@
|
|||
#ifndef AVCODEC_FFT_INTERNAL_H
|
||||
#define AVCODEC_FFT_INTERNAL_H
|
||||
|
||||
#include "libavutil/mathematics.h"
|
||||
#include "fft.h"
|
||||
|
||||
#if FFT_FLOAT
|
||||
|
||||
#define FIX15(v) (v)
|
||||
|
@ -39,6 +36,10 @@
|
|||
|
||||
#else /* FFT_FLOAT */
|
||||
|
||||
#define SCALE_FLOAT(a, bits) lrint((a) * (double)(1 << (bits)))
|
||||
|
||||
#if FFT_FIXED_32
|
||||
|
||||
#define CMUL(dre, dim, are, aim, bre, bim) do { \
|
||||
int64_t accu; \
|
||||
(accu) = (int64_t)(bre) * (are); \
|
||||
|
@ -49,6 +50,10 @@
|
|||
(dim) = (int)(((accu) + 0x40000000) >> 31); \
|
||||
} while (0)
|
||||
|
||||
#define FIX15(a) av_clip(SCALE_FLOAT(a, 31), -2147483647, 2147483647)
|
||||
|
||||
#endif /* FFT_FIXED_32 */
|
||||
|
||||
#endif /* FFT_FLOAT */
|
||||
|
||||
#define ff_imdct_calc_c FFT_NAME(ff_imdct_calc_c)
|
||||
|
|
|
@ -26,6 +26,10 @@
|
|||
#define FFT_FLOAT 1
|
||||
#endif
|
||||
|
||||
#ifndef FFT_FIXED_32
|
||||
#define FFT_FIXED_32 0
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include "config.h"
|
||||
|
||||
|
@ -41,11 +45,15 @@ typedef float FFTDouble;
|
|||
|
||||
#else
|
||||
|
||||
#if FFT_FIXED_32
|
||||
|
||||
#define Q31(x) (int)((x)*2147483648.0 + 0.5)
|
||||
#define FFT_NAME(x) x ## _fixed_32
|
||||
|
||||
typedef int32_t FFTSample;
|
||||
|
||||
#endif /* FFT_FIXED_32 */
|
||||
|
||||
typedef struct FFTComplex {
|
||||
FFTSample re, im;
|
||||
} FFTComplex;
|
||||
|
|
|
@ -48,4 +48,5 @@
|
|||
*/
|
||||
|
||||
#define FFT_FLOAT 0
|
||||
#define FFT_FIXED_32 1
|
||||
#include "fft_template.c"
|
||||
|
|
|
@ -17,4 +17,5 @@
|
|||
*/
|
||||
|
||||
#define FFT_FLOAT 1
|
||||
#define FFT_FIXED_32 0
|
||||
#include "fft_template.c"
|
||||
|
|
|
@ -33,9 +33,9 @@
|
|||
#include "fft.h"
|
||||
#include "fft-internal.h"
|
||||
|
||||
#if !FFT_FLOAT
|
||||
#if FFT_FIXED_32
|
||||
#include "fft_table.h"
|
||||
#else /* !FFT_FLOAT */
|
||||
#else /* FFT_FIXED_32 */
|
||||
|
||||
/* cos(2*pi*x/n) for 0<=x<=n/4, followed by its reverse */
|
||||
#if !CONFIG_HARDCODED_TABLES
|
||||
|
@ -136,7 +136,7 @@ COSTABLE_CONST FFTSample * const FFT_NAME(ff_cos_tabs)[] = {
|
|||
FFT_NAME(ff_cos_131072),
|
||||
};
|
||||
|
||||
#endif /* FFT_FLOAT */
|
||||
#endif /* FFT_FIXED_32 */
|
||||
|
||||
static void fft_permute_c(FFTContext *s, FFTComplex *z);
|
||||
static void fft_calc_c(FFTContext *s, FFTComplex *z);
|
||||
|
@ -226,25 +226,20 @@ av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse)
|
|||
s->mdct_calc = ff_mdct_calc_c;
|
||||
#endif
|
||||
|
||||
#if FFT_FIXED_32
|
||||
ff_fft_lut_init();
|
||||
#else /* FFT_FIXED_32 */
|
||||
#if FFT_FLOAT
|
||||
#if ARCH_AARCH64
|
||||
ff_fft_init_aarch64(s);
|
||||
#elif ARCH_ARM
|
||||
ff_fft_init_arm(s);
|
||||
#elif ARCH_PPC
|
||||
ff_fft_init_ppc(s);
|
||||
#elif ARCH_X86
|
||||
ff_fft_init_x86(s);
|
||||
#endif
|
||||
#if HAVE_MIPSFPU
|
||||
ff_fft_init_mips(s);
|
||||
if (ARCH_AARCH64) ff_fft_init_aarch64(s);
|
||||
if (ARCH_ARM) ff_fft_init_arm(s);
|
||||
if (ARCH_PPC) ff_fft_init_ppc(s);
|
||||
if (ARCH_X86) ff_fft_init_x86(s);
|
||||
if (HAVE_MIPSFPU) ff_fft_init_mips(s);
|
||||
#endif
|
||||
for(j=4; j<=nbits; j++) {
|
||||
ff_init_ff_cos_tabs(j);
|
||||
}
|
||||
#else /* FFT_FLOAT */
|
||||
ff_fft_lut_init();
|
||||
#endif
|
||||
#endif /* FFT_FIXED_32 */
|
||||
|
||||
|
||||
if (ARCH_X86 && FFT_FLOAT && s->fft_permutation == FF_FFT_PERM_AVX) {
|
||||
|
@ -317,7 +312,7 @@ av_cold void ff_fft_end(FFTContext *s)
|
|||
av_freep(&s->tmp_buf);
|
||||
}
|
||||
|
||||
#if !FFT_FLOAT
|
||||
#if FFT_FIXED_32
|
||||
|
||||
static void fft_calc_c(FFTContext *s, FFTComplex *z) {
|
||||
|
||||
|
@ -475,7 +470,7 @@ static void fft_calc_c(FFTContext *s, FFTComplex *z) {
|
|||
}
|
||||
}
|
||||
|
||||
#else /* !FFT_FLOAT */
|
||||
#else /* FFT_FIXED_32 */
|
||||
|
||||
#define BUTTERFLIES(a0,a1,a2,a3) {\
|
||||
BF(t3, t5, t5, t1);\
|
||||
|
@ -625,4 +620,4 @@ static void fft_calc_c(FFTContext *s, FFTComplex *z)
|
|||
{
|
||||
fft_dispatch[s->nbits-2](z);
|
||||
}
|
||||
#endif /* !FFT_FLOAT */
|
||||
#endif /* FFT_FIXED_32 */
|
||||
|
|
|
@ -29,15 +29,15 @@
|
|||
|
||||
static const int8_t sample_size_table[] = { 0, 8, 12, 0, 16, 20, 24, 0 };
|
||||
|
||||
static const AVChannelLayout flac_channel_layouts[8] = {
|
||||
AV_CHANNEL_LAYOUT_MONO,
|
||||
AV_CHANNEL_LAYOUT_STEREO,
|
||||
AV_CHANNEL_LAYOUT_SURROUND,
|
||||
AV_CHANNEL_LAYOUT_QUAD,
|
||||
AV_CHANNEL_LAYOUT_5POINT0,
|
||||
AV_CHANNEL_LAYOUT_5POINT1,
|
||||
AV_CHANNEL_LAYOUT_6POINT1,
|
||||
AV_CHANNEL_LAYOUT_7POINT1
|
||||
static const uint64_t flac_channel_layouts[8] = {
|
||||
AV_CH_LAYOUT_MONO,
|
||||
AV_CH_LAYOUT_STEREO,
|
||||
AV_CH_LAYOUT_SURROUND,
|
||||
AV_CH_LAYOUT_QUAD,
|
||||
AV_CH_LAYOUT_5POINT0,
|
||||
AV_CH_LAYOUT_5POINT1,
|
||||
AV_CH_LAYOUT_6POINT1,
|
||||
AV_CH_LAYOUT_7POINT1
|
||||
};
|
||||
|
||||
static int64_t get_utf8(GetBitContext *gb)
|
||||
|
@ -193,18 +193,12 @@ int ff_flac_is_extradata_valid(AVCodecContext *avctx,
|
|||
return 1;
|
||||
}
|
||||
|
||||
void ff_flac_set_channel_layout(AVCodecContext *avctx, int channels)
|
||||
void ff_flac_set_channel_layout(AVCodecContext *avctx)
|
||||
{
|
||||
if (channels == avctx->ch_layout.nb_channels &&
|
||||
avctx->ch_layout.order != AV_CHANNEL_ORDER_UNSPEC)
|
||||
return;
|
||||
|
||||
av_channel_layout_uninit(&avctx->ch_layout);
|
||||
if (channels <= FF_ARRAY_ELEMS(flac_channel_layouts))
|
||||
avctx->ch_layout = flac_channel_layouts[channels - 1];
|
||||
if (avctx->channels <= FF_ARRAY_ELEMS(flac_channel_layouts))
|
||||
avctx->channel_layout = flac_channel_layouts[avctx->channels - 1];
|
||||
else
|
||||
avctx->ch_layout = (AVChannelLayout){ .order = AV_CHANNEL_ORDER_UNSPEC,
|
||||
.nb_channels = channels };
|
||||
avctx->channel_layout = 0;
|
||||
}
|
||||
|
||||
int ff_flac_parse_streaminfo(AVCodecContext *avctx, struct FLACStreaminfo *s,
|
||||
|
@ -235,9 +229,13 @@ int ff_flac_parse_streaminfo(AVCodecContext *avctx, struct FLACStreaminfo *s,
|
|||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
avctx->channels = s->channels;
|
||||
avctx->sample_rate = s->samplerate;
|
||||
avctx->bits_per_raw_sample = s->bps;
|
||||
ff_flac_set_channel_layout(avctx, s->channels);
|
||||
|
||||
if (!avctx->channel_layout ||
|
||||
av_get_channel_layout_nb_channels(avctx->channel_layout) != avctx->channels)
|
||||
ff_flac_set_channel_layout(avctx);
|
||||
|
||||
s->samples = get_bits64(&gb, 36);
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ int ff_flac_get_max_frame_size(int blocksize, int ch, int bps);
|
|||
int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb,
|
||||
FLACFrameInfo *fi, int log_level_offset);
|
||||
|
||||
void ff_flac_set_channel_layout(AVCodecContext *avctx, int channels);
|
||||
void ff_flac_set_channel_layout(AVCodecContext *avctx);
|
||||
|
||||
/**
|
||||
* Parse the metadata block parameters from the header.
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "flacdata.h"
|
||||
#include "internal.h"
|
||||
|
||||
const int ff_flac_sample_rate_table[16] =
|
||||
{ 0,
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#ifndef AVCODEC_FLACDATA_H
|
||||
#define AVCODEC_FLACDATA_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "internal.h"
|
||||
|
||||
extern const int ff_flac_sample_rate_table[16];
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
#include "libavutil/crc.h"
|
||||
#include "libavutil/opt.h"
|
||||
#include "avcodec.h"
|
||||
#include "codec_internal.h"
|
||||
#include "internal.h"
|
||||
#include "get_bits.h"
|
||||
#include "bytestream.h"
|
||||
#include "golomb.h"
|
||||
|
@ -260,7 +260,7 @@ static int decode_residuals(FLACContext *s, int32_t *decoded, int pred_order)
|
|||
for (; i < samples; i++)
|
||||
*decoded++ = get_sbits_long(&gb, tmp);
|
||||
} else {
|
||||
int real_limit = (tmp > 1) ? (INT_MAX >> (tmp - 1)) + 2 : INT_MAX;
|
||||
int real_limit = tmp ? (INT_MAX >> tmp) + 2 : INT_MAX;
|
||||
for (; i < samples; i++) {
|
||||
int v = get_sr_golomb_flac(&gb, tmp, real_limit, 1);
|
||||
if (v == 0x80000000){
|
||||
|
@ -483,14 +483,15 @@ static int decode_frame(FLACContext *s)
|
|||
if ( s->flac_stream_info.channels
|
||||
&& fi.channels != s->flac_stream_info.channels
|
||||
&& s->got_streaminfo) {
|
||||
s->flac_stream_info.channels = fi.channels;
|
||||
ff_flac_set_channel_layout(s->avctx, fi.channels);
|
||||
s->flac_stream_info.channels = s->avctx->channels = fi.channels;
|
||||
ff_flac_set_channel_layout(s->avctx);
|
||||
ret = allocate_buffers(s);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
s->flac_stream_info.channels = fi.channels;
|
||||
ff_flac_set_channel_layout(s->avctx, fi.channels);
|
||||
s->flac_stream_info.channels = s->avctx->channels = fi.channels;
|
||||
if (!s->avctx->channel_layout)
|
||||
ff_flac_set_channel_layout(s->avctx);
|
||||
s->ch_mode = fi.ch_mode;
|
||||
|
||||
if (!s->flac_stream_info.bps && !fi.bps) {
|
||||
|
@ -554,9 +555,11 @@ static int decode_frame(FLACContext *s)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int flac_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
||||
static int flac_decode_frame(AVCodecContext *avctx, void *data,
|
||||
int *got_frame_ptr, AVPacket *avpkt)
|
||||
{
|
||||
AVFrame *frame = data;
|
||||
ThreadFrame tframe = { .f = data };
|
||||
const uint8_t *buf = avpkt->data;
|
||||
int buf_size = avpkt->size;
|
||||
FLACContext *s = avctx->priv_data;
|
||||
|
@ -615,7 +618,7 @@ static int flac_decode_frame(AVCodecContext *avctx, AVFrame *frame,
|
|||
|
||||
/* get output buffer */
|
||||
frame->nb_samples = s->blocksize;
|
||||
if ((ret = ff_thread_get_buffer(avctx, frame, 0)) < 0)
|
||||
if ((ret = ff_thread_get_buffer(avctx, &tframe, 0)) < 0)
|
||||
return ret;
|
||||
|
||||
s->dsp.decorrelate[s->ch_mode](frame->data, s->decoded,
|
||||
|
@ -657,23 +660,22 @@ static const AVClass flac_decoder_class = {
|
|||
.version = LIBAVUTIL_VERSION_INT,
|
||||
};
|
||||
|
||||
const FFCodec ff_flac_decoder = {
|
||||
.p.name = "flac",
|
||||
.p.long_name = NULL_IF_CONFIG_SMALL("FLAC (Free Lossless Audio Codec)"),
|
||||
.p.type = AVMEDIA_TYPE_AUDIO,
|
||||
.p.id = AV_CODEC_ID_FLAC,
|
||||
AVCodec ff_flac_decoder = {
|
||||
.name = "flac",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("FLAC (Free Lossless Audio Codec)"),
|
||||
.type = AVMEDIA_TYPE_AUDIO,
|
||||
.id = AV_CODEC_ID_FLAC,
|
||||
.priv_data_size = sizeof(FLACContext),
|
||||
.init = flac_decode_init,
|
||||
.close = flac_decode_close,
|
||||
FF_CODEC_DECODE_CB(flac_decode_frame),
|
||||
.p.capabilities = AV_CODEC_CAP_CHANNEL_CONF |
|
||||
.decode = flac_decode_frame,
|
||||
.capabilities = AV_CODEC_CAP_CHANNEL_CONF |
|
||||
AV_CODEC_CAP_DR1 |
|
||||
AV_CODEC_CAP_FRAME_THREADS,
|
||||
.p.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16,
|
||||
.sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16,
|
||||
AV_SAMPLE_FMT_S16P,
|
||||
AV_SAMPLE_FMT_S32,
|
||||
AV_SAMPLE_FMT_S32P,
|
||||
AV_SAMPLE_FMT_NONE },
|
||||
.p.priv_class = &flac_decoder_class,
|
||||
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE,
|
||||
.priv_class = &flac_decoder_class,
|
||||
};
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
*/
|
||||
|
||||
#include "libavutil/attributes.h"
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/samplefmt.h"
|
||||
#include "flacdsp.h"
|
||||
#include "config.h"
|
||||
|
@ -124,9 +123,8 @@ av_cold void ff_flacdsp_init(FLACDSPContext *c, enum AVSampleFormat fmt, int cha
|
|||
break;
|
||||
}
|
||||
|
||||
#if ARCH_ARM
|
||||
ff_flacdsp_init_arm(c, fmt, channels, bps);
|
||||
#elif ARCH_X86
|
||||
ff_flacdsp_init_x86(c, fmt, channels, bps);
|
||||
#endif
|
||||
if (ARCH_ARM)
|
||||
ff_flacdsp_init_arm(c, fmt, channels, bps);
|
||||
if (ARCH_X86)
|
||||
ff_flacdsp_init_x86(c, fmt, channels, bps);
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#define AVCODEC_FLACDSP_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/internal.h"
|
||||
#include "libavutil/samplefmt.h"
|
||||
|
||||
typedef struct FLACDSPContext {
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/avutil.h"
|
||||
#include "mathops.h"
|
||||
|
||||
#undef FUNC
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include "libavutil/macros.h"
|
||||
#include "libavutil/avutil.h"
|
||||
|
||||
#undef FUNC
|
||||
#undef FSUF
|
||||
|
@ -66,8 +66,8 @@ static void FUNC(flac_decorrelate_ls_c)(uint8_t **out, int32_t **in,
|
|||
int i;
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
unsigned a = in[0][i];
|
||||
unsigned b = in[1][i];
|
||||
int a = in[0][i];
|
||||
int b = in[1][i];
|
||||
S(samples, 0, i) = a << shift;
|
||||
S(samples, 1, i) = (a - b) << shift;
|
||||
}
|
||||
|
@ -80,8 +80,8 @@ static void FUNC(flac_decorrelate_rs_c)(uint8_t **out, int32_t **in,
|
|||
int i;
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
unsigned a = in[0][i];
|
||||
unsigned b = in[1][i];
|
||||
int a = in[0][i];
|
||||
int b = in[1][i];
|
||||
S(samples, 0, i) = (a + b) << shift;
|
||||
S(samples, 1, i) = b << shift;
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ static void FUNC(flac_decorrelate_ms_c)(uint8_t **out, int32_t **in,
|
|||
int i;
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
unsigned a = in[0][i];
|
||||
int a = in[0][i];
|
||||
int b = in[1][i];
|
||||
a -= b >> 1;
|
||||
S(samples, 0, i) = (a + b) << shift;
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
* Initialize frame thread encoder.
|
||||
* @note hardware encoders are not supported
|
||||
*/
|
||||
int ff_frame_thread_encoder_init(AVCodecContext *avctx);
|
||||
int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options);
|
||||
void ff_frame_thread_encoder_free(AVCodecContext *avctx);
|
||||
int ff_thread_video_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
|
||||
AVFrame *frame, int *got_packet_ptr);
|
||||
|
|
|
@ -33,8 +33,7 @@
|
|||
#include "libavutil/intreadwrite.h"
|
||||
#include "libavutil/log.h"
|
||||
#include "libavutil/avassert.h"
|
||||
|
||||
#include "defs.h"
|
||||
#include "avcodec.h"
|
||||
#include "mathops.h"
|
||||
#include "vlc.h"
|
||||
|
||||
|
@ -710,8 +709,8 @@ static inline const uint8_t *align_get_bits(GetBitContext *s)
|
|||
unsigned int index; \
|
||||
\
|
||||
index = SHOW_UBITS(name, gb, bits); \
|
||||
code = table[index].sym; \
|
||||
n = table[index].len; \
|
||||
code = table[index][0]; \
|
||||
n = table[index][1]; \
|
||||
\
|
||||
if (max_depth > 1 && n < 0) { \
|
||||
LAST_SKIP_BITS(name, gb, bits); \
|
||||
|
@ -720,8 +719,8 @@ static inline const uint8_t *align_get_bits(GetBitContext *s)
|
|||
nb_bits = -n; \
|
||||
\
|
||||
index = SHOW_UBITS(name, gb, nb_bits) + code; \
|
||||
code = table[index].sym; \
|
||||
n = table[index].len; \
|
||||
code = table[index][0]; \
|
||||
n = table[index][1]; \
|
||||
if (max_depth > 2 && n < 0) { \
|
||||
LAST_SKIP_BITS(name, gb, nb_bits); \
|
||||
UPDATE_CACHE(name, gb); \
|
||||
|
@ -729,8 +728,8 @@ static inline const uint8_t *align_get_bits(GetBitContext *s)
|
|||
nb_bits = -n; \
|
||||
\
|
||||
index = SHOW_UBITS(name, gb, nb_bits) + code; \
|
||||
code = table[index].sym; \
|
||||
n = table[index].len; \
|
||||
code = table[index][0]; \
|
||||
n = table[index][1]; \
|
||||
} \
|
||||
} \
|
||||
SKIP_BITS(name, gb, n); \
|
||||
|
@ -775,15 +774,15 @@ static inline const uint8_t *align_get_bits(GetBitContext *s)
|
|||
|
||||
/* Return the LUT element for the given bitstream configuration. */
|
||||
static inline int set_idx(GetBitContext *s, int code, int *n, int *nb_bits,
|
||||
const VLCElem *table)
|
||||
VLC_TYPE (*table)[2])
|
||||
{
|
||||
unsigned idx;
|
||||
|
||||
*nb_bits = -*n;
|
||||
idx = show_bits(s, *nb_bits) + code;
|
||||
*n = table[idx].len;
|
||||
*n = table[idx][1];
|
||||
|
||||
return table[idx].sym;
|
||||
return table[idx][0];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -795,14 +794,14 @@ static inline int set_idx(GetBitContext *s, int code, int *n, int *nb_bits,
|
|||
* = (max_vlc_length + bits - 1) / bits
|
||||
* @returns the code parsed or -1 if no vlc matches
|
||||
*/
|
||||
static av_always_inline int get_vlc2(GetBitContext *s, const VLCElem *table,
|
||||
static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE (*table)[2],
|
||||
int bits, int max_depth)
|
||||
{
|
||||
#if CACHED_BITSTREAM_READER
|
||||
int nb_bits;
|
||||
unsigned idx = show_bits(s, bits);
|
||||
int code = table[idx].sym;
|
||||
int n = table[idx].len;
|
||||
int code = table[idx][0];
|
||||
int n = table[idx][1];
|
||||
|
||||
if (max_depth > 1 && n < 0) {
|
||||
skip_remaining(s, bits);
|
||||
|
|
|
@ -1,312 +0,0 @@
|
|||
/*
|
||||
* The default get_buffer2() implementation
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/avutil.h"
|
||||
#include "libavutil/buffer.h"
|
||||
#include "libavutil/frame.h"
|
||||
#include "libavutil/hwcontext.h"
|
||||
#include "libavutil/imgutils.h"
|
||||
#include "libavutil/mem.h"
|
||||
#include "libavutil/samplefmt.h"
|
||||
#include "libavutil/version.h"
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "internal.h"
|
||||
|
||||
typedef struct FramePool {
|
||||
/**
|
||||
* Pools for each data plane. For audio all the planes have the same size,
|
||||
* so only pools[0] is used.
|
||||
*/
|
||||
AVBufferPool *pools[4];
|
||||
|
||||
/*
|
||||
* Pool parameters
|
||||
*/
|
||||
int format;
|
||||
int width, height;
|
||||
int stride_align[AV_NUM_DATA_POINTERS];
|
||||
int linesize[4];
|
||||
int planes;
|
||||
int channels;
|
||||
int samples;
|
||||
} FramePool;
|
||||
|
||||
static void frame_pool_free(void *opaque, uint8_t *data)
|
||||
{
|
||||
FramePool *pool = (FramePool*)data;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < FF_ARRAY_ELEMS(pool->pools); i++)
|
||||
av_buffer_pool_uninit(&pool->pools[i]);
|
||||
|
||||
av_freep(&data);
|
||||
}
|
||||
|
||||
static AVBufferRef *frame_pool_alloc(void)
|
||||
{
|
||||
FramePool *pool = av_mallocz(sizeof(*pool));
|
||||
AVBufferRef *buf;
|
||||
|
||||
if (!pool)
|
||||
return NULL;
|
||||
|
||||
buf = av_buffer_create((uint8_t*)pool, sizeof(*pool),
|
||||
frame_pool_free, NULL, 0);
|
||||
if (!buf) {
|
||||
av_freep(&pool);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
static int update_frame_pool(AVCodecContext *avctx, AVFrame *frame)
|
||||
{
|
||||
FramePool *pool = avctx->internal->pool ?
|
||||
(FramePool*)avctx->internal->pool->data : NULL;
|
||||
AVBufferRef *pool_buf;
|
||||
int i, ret, ch, planes;
|
||||
|
||||
if (avctx->codec_type == AVMEDIA_TYPE_AUDIO) {
|
||||
int planar = av_sample_fmt_is_planar(frame->format);
|
||||
ch = frame->ch_layout.nb_channels;
|
||||
#if FF_API_OLD_CHANNEL_LAYOUT
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
if (!ch)
|
||||
ch = frame->channels;
|
||||
FF_ENABLE_DEPRECATION_WARNINGS
|
||||
#endif
|
||||
planes = planar ? ch : 1;
|
||||
}
|
||||
|
||||
if (pool && pool->format == frame->format) {
|
||||
if (avctx->codec_type == AVMEDIA_TYPE_VIDEO &&
|
||||
pool->width == frame->width && pool->height == frame->height)
|
||||
return 0;
|
||||
if (avctx->codec_type == AVMEDIA_TYPE_AUDIO && pool->planes == planes &&
|
||||
pool->channels == ch && frame->nb_samples == pool->samples)
|
||||
return 0;
|
||||
}
|
||||
|
||||
pool_buf = frame_pool_alloc();
|
||||
if (!pool_buf)
|
||||
return AVERROR(ENOMEM);
|
||||
pool = (FramePool*)pool_buf->data;
|
||||
|
||||
switch (avctx->codec_type) {
|
||||
case AVMEDIA_TYPE_VIDEO: {
|
||||
int linesize[4];
|
||||
int w = frame->width;
|
||||
int h = frame->height;
|
||||
int unaligned;
|
||||
ptrdiff_t linesize1[4];
|
||||
size_t size[4];
|
||||
|
||||
avcodec_align_dimensions2(avctx, &w, &h, pool->stride_align);
|
||||
|
||||
do {
|
||||
// NOTE: do not align linesizes individually, this breaks e.g. assumptions
|
||||
// that linesize[0] == 2*linesize[1] in the MPEG-encoder for 4:2:2
|
||||
ret = av_image_fill_linesizes(linesize, avctx->pix_fmt, w);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
// increase alignment of w for next try (rhs gives the lowest bit set in w)
|
||||
w += w & ~(w - 1);
|
||||
|
||||
unaligned = 0;
|
||||
for (i = 0; i < 4; i++)
|
||||
unaligned |= linesize[i] % pool->stride_align[i];
|
||||
} while (unaligned);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
linesize1[i] = linesize[i];
|
||||
ret = av_image_fill_plane_sizes(size, avctx->pix_fmt, h, linesize1);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
pool->linesize[i] = linesize[i];
|
||||
if (size[i]) {
|
||||
if (size[i] > INT_MAX - (16 + STRIDE_ALIGN - 1)) {
|
||||
ret = AVERROR(EINVAL);
|
||||
goto fail;
|
||||
}
|
||||
pool->pools[i] = av_buffer_pool_init(size[i] + 16 + STRIDE_ALIGN - 1,
|
||||
CONFIG_MEMORY_POISONING ?
|
||||
NULL :
|
||||
av_buffer_allocz);
|
||||
if (!pool->pools[i]) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
}
|
||||
pool->format = frame->format;
|
||||
pool->width = frame->width;
|
||||
pool->height = frame->height;
|
||||
|
||||
break;
|
||||
}
|
||||
case AVMEDIA_TYPE_AUDIO: {
|
||||
ret = av_samples_get_buffer_size(&pool->linesize[0], ch,
|
||||
frame->nb_samples, frame->format, 0);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
pool->pools[0] = av_buffer_pool_init(pool->linesize[0], NULL);
|
||||
if (!pool->pools[0]) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
pool->format = frame->format;
|
||||
pool->planes = planes;
|
||||
pool->channels = ch;
|
||||
pool->samples = frame->nb_samples;
|
||||
break;
|
||||
}
|
||||
default: av_assert0(0);
|
||||
}
|
||||
|
||||
av_buffer_unref(&avctx->internal->pool);
|
||||
avctx->internal->pool = pool_buf;
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
av_buffer_unref(&pool_buf);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int audio_get_buffer(AVCodecContext *avctx, AVFrame *frame)
|
||||
{
|
||||
FramePool *pool = (FramePool*)avctx->internal->pool->data;
|
||||
int planes = pool->planes;
|
||||
int i;
|
||||
|
||||
frame->linesize[0] = pool->linesize[0];
|
||||
|
||||
if (planes > AV_NUM_DATA_POINTERS) {
|
||||
frame->extended_data = av_calloc(planes, sizeof(*frame->extended_data));
|
||||
frame->nb_extended_buf = planes - AV_NUM_DATA_POINTERS;
|
||||
frame->extended_buf = av_calloc(frame->nb_extended_buf,
|
||||
sizeof(*frame->extended_buf));
|
||||
if (!frame->extended_data || !frame->extended_buf) {
|
||||
av_freep(&frame->extended_data);
|
||||
av_freep(&frame->extended_buf);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
} else {
|
||||
frame->extended_data = frame->data;
|
||||
av_assert0(frame->nb_extended_buf == 0);
|
||||
}
|
||||
|
||||
for (i = 0; i < FFMIN(planes, AV_NUM_DATA_POINTERS); i++) {
|
||||
frame->buf[i] = av_buffer_pool_get(pool->pools[0]);
|
||||
if (!frame->buf[i])
|
||||
goto fail;
|
||||
frame->extended_data[i] = frame->data[i] = frame->buf[i]->data;
|
||||
}
|
||||
for (i = 0; i < frame->nb_extended_buf; i++) {
|
||||
frame->extended_buf[i] = av_buffer_pool_get(pool->pools[0]);
|
||||
if (!frame->extended_buf[i])
|
||||
goto fail;
|
||||
frame->extended_data[i + AV_NUM_DATA_POINTERS] = frame->extended_buf[i]->data;
|
||||
}
|
||||
|
||||
if (avctx->debug & FF_DEBUG_BUFFERS)
|
||||
av_log(avctx, AV_LOG_DEBUG, "default_get_buffer called on frame %p", frame);
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
av_frame_unref(frame);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
static int video_get_buffer(AVCodecContext *s, AVFrame *pic)
|
||||
{
|
||||
FramePool *pool = (FramePool*)s->internal->pool->data;
|
||||
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pic->format);
|
||||
int i;
|
||||
|
||||
if (pic->data[0] || pic->data[1] || pic->data[2] || pic->data[3]) {
|
||||
av_log(s, AV_LOG_ERROR, "pic->data[*]!=NULL in avcodec_default_get_buffer\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!desc) {
|
||||
av_log(s, AV_LOG_ERROR,
|
||||
"Unable to get pixel format descriptor for format %s\n",
|
||||
av_get_pix_fmt_name(pic->format));
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
memset(pic->data, 0, sizeof(pic->data));
|
||||
pic->extended_data = pic->data;
|
||||
|
||||
for (i = 0; i < 4 && pool->pools[i]; i++) {
|
||||
pic->linesize[i] = pool->linesize[i];
|
||||
|
||||
pic->buf[i] = av_buffer_pool_get(pool->pools[i]);
|
||||
if (!pic->buf[i])
|
||||
goto fail;
|
||||
|
||||
pic->data[i] = pic->buf[i]->data;
|
||||
}
|
||||
for (; i < AV_NUM_DATA_POINTERS; i++) {
|
||||
pic->data[i] = NULL;
|
||||
pic->linesize[i] = 0;
|
||||
}
|
||||
|
||||
if (s->debug & FF_DEBUG_BUFFERS)
|
||||
av_log(s, AV_LOG_DEBUG, "default_get_buffer called on pic %p\n", pic);
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
av_frame_unref(pic);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
int avcodec_default_get_buffer2(AVCodecContext *avctx, AVFrame *frame, int flags)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (avctx->hw_frames_ctx) {
|
||||
ret = av_hwframe_get_buffer(avctx->hw_frames_ctx, frame, 0);
|
||||
frame->width = avctx->coded_width;
|
||||
frame->height = avctx->coded_height;
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((ret = update_frame_pool(avctx, frame)) < 0)
|
||||
return ret;
|
||||
|
||||
switch (avctx->codec_type) {
|
||||
case AVMEDIA_TYPE_VIDEO:
|
||||
return video_get_buffer(avctx, frame);
|
||||
case AVMEDIA_TYPE_AUDIO:
|
||||
return audio_get_buffer(avctx, frame);
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче