From ccf521fd8b6d4ed169d5eac7b57d0910b4901c23 Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Wed, 10 Aug 2022 12:37:45 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=AF=91uos=E7=89=88=E6=9C=ACffmpeg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uos/amd64/include/libavcodec/ac3_parser.h | 36 + .../amd64/include/libavcodec/adts_parser.h | 37 + .../uos/amd64/include/libavcodec/avcodec.h | 3180 +++++++++++++++++ .../uos/amd64/include/libavcodec/avdct.h | 88 + .../uos/amd64/include/libavcodec/avfft.h | 118 + .../ffmpeg/uos/amd64/include/libavcodec/bsf.h | 328 ++ .../uos/amd64/include/libavcodec/codec.h | 395 ++ .../uos/amd64/include/libavcodec/codec_desc.h | 128 + .../uos/amd64/include/libavcodec/codec_id.h | 636 ++++ .../uos/amd64/include/libavcodec/codec_par.h | 246 ++ .../uos/amd64/include/libavcodec/d3d11va.h | 112 + .../uos/amd64/include/libavcodec/defs.h | 170 + .../uos/amd64/include/libavcodec/dirac.h | 131 + .../uos/amd64/include/libavcodec/dv_profile.h | 82 + .../uos/amd64/include/libavcodec/dxva2.h | 93 + .../ffmpeg/uos/amd64/include/libavcodec/jni.h | 46 + .../uos/amd64/include/libavcodec/mediacodec.h | 101 + .../uos/amd64/include/libavcodec/packet.h | 731 ++++ .../ffmpeg/uos/amd64/include/libavcodec/qsv.h | 107 + .../uos/amd64/include/libavcodec/vdpau.h | 157 + .../uos/amd64/include/libavcodec/version.h | 45 + .../amd64/include/libavcodec/version_major.h | 54 + .../amd64/include/libavcodec/videotoolbox.h | 127 + .../amd64/include/libavcodec/vorbis_parser.h | 74 + .../uos/amd64/include/libavcodec/xvmc.h | 171 + .../uos/amd64/include/libavdevice/avdevice.h | 527 +++ .../uos/amd64/include/libavdevice/version.h | 45 + .../amd64/include/libavdevice/version_major.h | 37 + .../uos/amd64/include/libavfilter/avfilter.h | 1196 +++++++ .../amd64/include/libavfilter/buffersink.h | 209 ++ .../uos/amd64/include/libavfilter/buffersrc.h | 218 ++ .../uos/amd64/include/libavfilter/version.h | 48 + .../amd64/include/libavfilter/version_major.h | 42 + .../uos/amd64/include/libavformat/avformat.h | 2907 +++++++++++++++ .../uos/amd64/include/libavformat/avio.h | 842 +++++ .../uos/amd64/include/libavformat/version.h | 47 + .../amd64/include/libavformat/version_major.h | 53 + .../uos/amd64/include/libavutil/adler32.h | 63 + .../ffmpeg/uos/amd64/include/libavutil/aes.h | 64 + .../uos/amd64/include/libavutil/aes_ctr.h | 87 + .../uos/amd64/include/libavutil/attributes.h | 173 + .../uos/amd64/include/libavutil/audio_fifo.h | 186 + .../uos/amd64/include/libavutil/avassert.h | 75 + .../uos/amd64/include/libavutil/avconfig.h | 6 + .../uos/amd64/include/libavutil/avstring.h | 437 +++ .../uos/amd64/include/libavutil/avutil.h | 371 ++ .../uos/amd64/include/libavutil/base64.h | 72 + .../uos/amd64/include/libavutil/blowfish.h | 82 + .../uos/amd64/include/libavutil/bprint.h | 219 ++ .../uos/amd64/include/libavutil/bswap.h | 109 + .../uos/amd64/include/libavutil/buffer.h | 322 ++ .../uos/amd64/include/libavutil/camellia.h | 70 + .../uos/amd64/include/libavutil/cast5.h | 80 + .../amd64/include/libavutil/channel_layout.h | 749 ++++ .../uos/amd64/include/libavutil/common.h | 578 +++ .../ffmpeg/uos/amd64/include/libavutil/cpu.h | 124 + .../ffmpeg/uos/amd64/include/libavutil/crc.h | 99 + .../ffmpeg/uos/amd64/include/libavutil/csp.h | 106 + .../ffmpeg/uos/amd64/include/libavutil/des.h | 77 + .../amd64/include/libavutil/detection_bbox.h | 107 + .../ffmpeg/uos/amd64/include/libavutil/dict.h | 198 + .../uos/amd64/include/libavutil/display.h | 113 + .../uos/amd64/include/libavutil/dovi_meta.h | 236 ++ .../amd64/include/libavutil/downmix_info.h | 115 + .../amd64/include/libavutil/encryption_info.h | 205 ++ .../uos/amd64/include/libavutil/error.h | 128 + .../ffmpeg/uos/amd64/include/libavutil/eval.h | 135 + .../uos/amd64/include/libavutil/ffversion.h | 5 + .../ffmpeg/uos/amd64/include/libavutil/fifo.h | 426 +++ .../ffmpeg/uos/amd64/include/libavutil/file.h | 72 + .../include/libavutil/film_grain_params.h | 260 ++ .../uos/amd64/include/libavutil/frame.h | 958 +++++ .../ffmpeg/uos/amd64/include/libavutil/hash.h | 264 ++ .../include/libavutil/hdr_dynamic_metadata.h | 343 ++ .../libavutil/hdr_dynamic_vivid_metadata.h | 285 ++ .../ffmpeg/uos/amd64/include/libavutil/hmac.h | 99 + .../uos/amd64/include/libavutil/hwcontext.h | 609 ++++ .../amd64/include/libavutil/hwcontext_cuda.h | 69 + .../include/libavutil/hwcontext_d3d11va.h | 178 + .../amd64/include/libavutil/hwcontext_drm.h | 169 + .../amd64/include/libavutil/hwcontext_dxva2.h | 75 + .../include/libavutil/hwcontext_mediacodec.h | 36 + .../include/libavutil/hwcontext_opencl.h | 100 + .../amd64/include/libavutil/hwcontext_qsv.h | 53 + .../amd64/include/libavutil/hwcontext_vaapi.h | 117 + .../amd64/include/libavutil/hwcontext_vdpau.h | 44 + .../libavutil/hwcontext_videotoolbox.h | 96 + .../include/libavutil/hwcontext_vulkan.h | 281 ++ .../uos/amd64/include/libavutil/imgutils.h | 311 ++ .../uos/amd64/include/libavutil/intfloat.h | 77 + .../amd64/include/libavutil/intreadwrite.h | 644 ++++ .../ffmpeg/uos/amd64/include/libavutil/lfg.h | 80 + .../ffmpeg/uos/amd64/include/libavutil/log.h | 387 ++ .../ffmpeg/uos/amd64/include/libavutil/lzo.h | 66 + .../uos/amd64/include/libavutil/macros.h | 80 + .../libavutil/mastering_display_metadata.h | 128 + .../uos/amd64/include/libavutil/mathematics.h | 243 ++ .../ffmpeg/uos/amd64/include/libavutil/md5.h | 89 + .../ffmpeg/uos/amd64/include/libavutil/mem.h | 696 ++++ .../amd64/include/libavutil/motion_vector.h | 57 + .../uos/amd64/include/libavutil/murmur3.h | 115 + .../ffmpeg/uos/amd64/include/libavutil/opt.h | 891 +++++ .../uos/amd64/include/libavutil/parseutils.h | 193 + .../uos/amd64/include/libavutil/pixdesc.h | 410 +++ .../uos/amd64/include/libavutil/pixelutils.h | 51 + .../uos/amd64/include/libavutil/pixfmt.h | 631 ++++ .../uos/amd64/include/libavutil/random_seed.h | 43 + .../uos/amd64/include/libavutil/rational.h | 220 ++ .../ffmpeg/uos/amd64/include/libavutil/rc4.h | 66 + .../uos/amd64/include/libavutil/replaygain.h | 50 + .../uos/amd64/include/libavutil/ripemd.h | 83 + .../uos/amd64/include/libavutil/samplefmt.h | 268 ++ .../ffmpeg/uos/amd64/include/libavutil/sha.h | 90 + .../uos/amd64/include/libavutil/sha512.h | 92 + .../uos/amd64/include/libavutil/spherical.h | 232 ++ .../uos/amd64/include/libavutil/stereo3d.h | 233 ++ .../ffmpeg/uos/amd64/include/libavutil/tea.h | 71 + .../amd64/include/libavutil/threadmessage.h | 115 + .../ffmpeg/uos/amd64/include/libavutil/time.h | 56 + .../uos/amd64/include/libavutil/timecode.h | 199 ++ .../uos/amd64/include/libavutil/timestamp.h | 78 + .../ffmpeg/uos/amd64/include/libavutil/tree.h | 137 + .../uos/amd64/include/libavutil/twofish.h | 70 + .../ffmpeg/uos/amd64/include/libavutil/tx.h | 161 + .../ffmpeg/uos/amd64/include/libavutil/uuid.h | 147 + .../uos/amd64/include/libavutil/version.h | 124 + .../include/libavutil/video_enc_params.h | 171 + .../ffmpeg/uos/amd64/include/libavutil/xtea.h | 94 + .../amd64/include/libswresample/swresample.h | 650 ++++ .../uos/amd64/include/libswresample/version.h | 46 + .../include/libswresample/version_major.h | 31 + .../uos/amd64/include/libswscale/swscale.h | 431 +++ .../uos/amd64/include/libswscale/version.h | 44 + .../amd64/include/libswscale/version_major.h | 35 + .../ffmpeg/uos/amd64/lib/libavcodec.so | 1 + .../ffmpeg/uos/amd64/lib/libavcodec.so.59 | 1 + .../uos/amd64/lib/libavcodec.so.59.42.100 | Bin 0 -> 11856176 bytes .../ffmpeg/uos/amd64/lib/libavdevice.so | 1 + .../ffmpeg/uos/amd64/lib/libavdevice.so.59 | 1 + .../uos/amd64/lib/libavdevice.so.59.8.101 | Bin 0 -> 76952 bytes .../ffmpeg/uos/amd64/lib/libavfilter.so | 1 + .../ffmpeg/uos/amd64/lib/libavfilter.so.8 | 1 + .../uos/amd64/lib/libavfilter.so.8.46.101 | Bin 0 -> 3888008 bytes .../ffmpeg/uos/amd64/lib/libavformat.so | 1 + .../ffmpeg/uos/amd64/lib/libavformat.so.59 | 1 + .../uos/amd64/lib/libavformat.so.59.30.100 | Bin 0 -> 2516640 bytes third_party/ffmpeg/uos/amd64/lib/libavutil.so | 1 + .../ffmpeg/uos/amd64/lib/libavutil.so.57 | 1 + .../uos/amd64/lib/libavutil.so.57.32.101 | Bin 0 -> 668032 bytes .../ffmpeg/uos/amd64/lib/libswresample.so | 1 + .../ffmpeg/uos/amd64/lib/libswresample.so.4 | 1 + .../uos/amd64/lib/libswresample.so.4.8.100 | Bin 0 -> 92520 bytes .../ffmpeg/uos/amd64/lib/libswscale.so | 1 + .../ffmpeg/uos/amd64/lib/libswscale.so.6 | 1 + .../uos/amd64/lib/libswscale.so.6.8.102 | Bin 0 -> 489872 bytes .../uos/amd64/lib/pkgconfig/libavcodec.pc | 14 + .../uos/amd64/lib/pkgconfig/libavdevice.pc | 14 + .../uos/amd64/lib/pkgconfig/libavfilter.pc | 14 + .../uos/amd64/lib/pkgconfig/libavformat.pc | 14 + .../uos/amd64/lib/pkgconfig/libavutil.pc | 14 + .../uos/amd64/lib/pkgconfig/libswresample.pc | 14 + .../uos/amd64/lib/pkgconfig/libswscale.pc | 14 + 162 files changed, 32787 insertions(+) create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/ac3_parser.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/adts_parser.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/avcodec.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/avdct.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/avfft.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/bsf.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/codec.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/codec_desc.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/codec_id.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/codec_par.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/d3d11va.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/defs.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/dirac.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/dv_profile.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/dxva2.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/jni.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/mediacodec.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/packet.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/qsv.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/vdpau.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/version.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/version_major.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/videotoolbox.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/vorbis_parser.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavcodec/xvmc.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavdevice/avdevice.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavdevice/version.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavdevice/version_major.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavfilter/avfilter.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavfilter/buffersink.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavfilter/buffersrc.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavfilter/version.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavfilter/version_major.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavformat/avformat.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavformat/avio.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavformat/version.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavformat/version_major.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/adler32.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/aes.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/aes_ctr.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/attributes.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/audio_fifo.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/avassert.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/avconfig.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/avstring.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/avutil.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/base64.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/blowfish.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/bprint.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/bswap.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/buffer.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/camellia.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/cast5.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/channel_layout.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/common.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/cpu.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/crc.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/csp.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/des.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/detection_bbox.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/dict.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/display.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/dovi_meta.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/downmix_info.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/encryption_info.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/error.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/eval.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/ffversion.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/fifo.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/file.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/film_grain_params.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/frame.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hash.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hdr_dynamic_metadata.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hdr_dynamic_vivid_metadata.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hmac.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_cuda.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_d3d11va.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_drm.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_dxva2.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_mediacodec.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_opencl.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_qsv.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vaapi.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vdpau.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_videotoolbox.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vulkan.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/imgutils.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/intfloat.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/intreadwrite.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/lfg.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/log.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/lzo.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/macros.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/mastering_display_metadata.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/mathematics.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/md5.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/mem.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/motion_vector.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/murmur3.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/opt.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/parseutils.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/pixdesc.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/pixelutils.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/pixfmt.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/random_seed.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/rational.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/rc4.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/replaygain.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/ripemd.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/samplefmt.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/sha.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/sha512.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/spherical.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/stereo3d.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/tea.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/threadmessage.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/time.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/timecode.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/timestamp.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/tree.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/twofish.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/tx.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/uuid.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/version.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/video_enc_params.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libavutil/xtea.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libswresample/swresample.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libswresample/version.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libswresample/version_major.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libswscale/swscale.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libswscale/version.h create mode 100644 third_party/ffmpeg/uos/amd64/include/libswscale/version_major.h create mode 120000 third_party/ffmpeg/uos/amd64/lib/libavcodec.so create mode 120000 third_party/ffmpeg/uos/amd64/lib/libavcodec.so.59 create mode 100755 third_party/ffmpeg/uos/amd64/lib/libavcodec.so.59.42.100 create mode 120000 third_party/ffmpeg/uos/amd64/lib/libavdevice.so create mode 120000 third_party/ffmpeg/uos/amd64/lib/libavdevice.so.59 create mode 100755 third_party/ffmpeg/uos/amd64/lib/libavdevice.so.59.8.101 create mode 120000 third_party/ffmpeg/uos/amd64/lib/libavfilter.so create mode 120000 third_party/ffmpeg/uos/amd64/lib/libavfilter.so.8 create mode 100755 third_party/ffmpeg/uos/amd64/lib/libavfilter.so.8.46.101 create mode 120000 third_party/ffmpeg/uos/amd64/lib/libavformat.so create mode 120000 third_party/ffmpeg/uos/amd64/lib/libavformat.so.59 create mode 100755 third_party/ffmpeg/uos/amd64/lib/libavformat.so.59.30.100 create mode 120000 third_party/ffmpeg/uos/amd64/lib/libavutil.so create mode 120000 third_party/ffmpeg/uos/amd64/lib/libavutil.so.57 create mode 100755 third_party/ffmpeg/uos/amd64/lib/libavutil.so.57.32.101 create mode 120000 third_party/ffmpeg/uos/amd64/lib/libswresample.so create mode 120000 third_party/ffmpeg/uos/amd64/lib/libswresample.so.4 create mode 100755 third_party/ffmpeg/uos/amd64/lib/libswresample.so.4.8.100 create mode 120000 third_party/ffmpeg/uos/amd64/lib/libswscale.so create mode 120000 third_party/ffmpeg/uos/amd64/lib/libswscale.so.6 create mode 100755 third_party/ffmpeg/uos/amd64/lib/libswscale.so.6.8.102 create mode 100644 third_party/ffmpeg/uos/amd64/lib/pkgconfig/libavcodec.pc create mode 100644 third_party/ffmpeg/uos/amd64/lib/pkgconfig/libavdevice.pc create mode 100644 third_party/ffmpeg/uos/amd64/lib/pkgconfig/libavfilter.pc create mode 100644 third_party/ffmpeg/uos/amd64/lib/pkgconfig/libavformat.pc create mode 100644 third_party/ffmpeg/uos/amd64/lib/pkgconfig/libavutil.pc create mode 100644 third_party/ffmpeg/uos/amd64/lib/pkgconfig/libswresample.pc create mode 100644 third_party/ffmpeg/uos/amd64/lib/pkgconfig/libswscale.pc diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/ac3_parser.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/ac3_parser.h new file mode 100644 index 00000000..ff8cc4cf --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/ac3_parser.h @@ -0,0 +1,36 @@ +/* + * AC-3 parser prototypes + * Copyright (c) 2003 Fabrice Bellard + * Copyright (c) 2003 Michael Niedermayer + * + * 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_AC3_PARSER_H +#define AVCODEC_AC3_PARSER_H + +#include +#include + +/** + * Extract the bitstream ID and the frame size from AC-3 data. + */ +int av_ac3_parse_header(const uint8_t *buf, size_t size, + uint8_t *bitstream_id, uint16_t *frame_size); + + +#endif /* AVCODEC_AC3_PARSER_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/adts_parser.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/adts_parser.h new file mode 100644 index 00000000..f85becd1 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/adts_parser.h @@ -0,0 +1,37 @@ +/* + * 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_ADTS_PARSER_H +#define AVCODEC_ADTS_PARSER_H + +#include +#include + +#define AV_AAC_ADTS_HEADER_SIZE 7 + +/** + * Extract the number of samples and frames from AAC data. + * @param[in] buf pointer to AAC data buffer + * @param[out] samples Pointer to where number of samples is written + * @param[out] frames Pointer to where number of frames is written + * @return Returns 0 on success, error code on failure. + */ +int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, + uint8_t *frames); + +#endif /* AVCODEC_ADTS_PARSER_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/avcodec.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/avcodec.h new file mode 100644 index 00000000..65c85353 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/avcodec.h @@ -0,0 +1,3180 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * 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_AVCODEC_H +#define AVCODEC_AVCODEC_H + +/** + * @file + * @ingroup libavc + * Libavcodec external API header + */ + +#include "libavutil/samplefmt.h" +#include "libavutil/attributes.h" +#include "libavutil/avutil.h" +#include "libavutil/buffer.h" +#include "libavutil/dict.h" +#include "libavutil/frame.h" +#include "libavutil/log.h" +#include "libavutil/pixfmt.h" +#include "libavutil/rational.h" + +#include "codec.h" +#include "codec_desc.h" +#include "codec_par.h" +#include "codec_id.h" +#include "defs.h" +#include "packet.h" +#include "version_major.h" +#ifndef HAVE_AV_CONFIG_H +/* When included as part of the ffmpeg build, only include the major version + * to avoid unnecessary rebuilds. When included externally, keep including + * the full version information. */ +#include "version.h" +#endif + +/** + * @defgroup libavc libavcodec + * Encoding/Decoding Library + * + * @{ + * + * @defgroup lavc_decoding Decoding + * @{ + * @} + * + * @defgroup lavc_encoding Encoding + * @{ + * @} + * + * @defgroup lavc_codec Codecs + * @{ + * @defgroup lavc_codec_native Native Codecs + * @{ + * @} + * @defgroup lavc_codec_wrappers External library wrappers + * @{ + * @} + * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge + * @{ + * @} + * @} + * @defgroup lavc_internal Internal + * @{ + * @} + * @} + */ + +/** + * @ingroup libavc + * @defgroup lavc_encdec send/receive encoding and decoding API overview + * @{ + * + * The avcodec_send_packet()/avcodec_receive_frame()/avcodec_send_frame()/ + * avcodec_receive_packet() functions provide an encode/decode API, which + * decouples input and output. + * + * The API is very similar for encoding/decoding and audio/video, and works as + * follows: + * - Set up and open the AVCodecContext as usual. + * - Send valid input: + * - For decoding, call avcodec_send_packet() to give the decoder raw + * compressed data in an AVPacket. + * - For encoding, call avcodec_send_frame() to give the encoder an AVFrame + * containing uncompressed audio or video. + * + * In both cases, it is recommended that AVPackets and AVFrames are + * refcounted, or libavcodec might have to copy the input data. (libavformat + * always returns refcounted AVPackets, and av_frame_get_buffer() allocates + * refcounted AVFrames.) + * - Receive output in a loop. Periodically call one of the avcodec_receive_*() + * functions and process their output: + * - For decoding, call avcodec_receive_frame(). On success, it will return + * an AVFrame containing uncompressed audio or video data. + * - For encoding, call avcodec_receive_packet(). On success, it will return + * an AVPacket with a compressed frame. + * + * Repeat this call until it returns AVERROR(EAGAIN) or an error. The + * AVERROR(EAGAIN) return value means that new input data is required to + * return new output. In this case, continue with sending input. For each + * input frame/packet, the codec will typically return 1 output frame/packet, + * but it can also be 0 or more than 1. + * + * At the beginning of decoding or encoding, the codec might accept multiple + * input frames/packets without returning a frame, until its internal buffers + * are filled. This situation is handled transparently if you follow the steps + * outlined above. + * + * In theory, sending input can result in EAGAIN - this should happen only if + * not all output was received. You can use this to structure alternative decode + * or encode loops other than the one suggested above. For example, you could + * try sending new input on each iteration, and try to receive output if that + * returns EAGAIN. + * + * End of stream situations. These require "flushing" (aka draining) the codec, + * as the codec might buffer multiple frames or packets internally for + * performance or out of necessity (consider B-frames). + * This is handled as follows: + * - Instead of valid input, send NULL to the avcodec_send_packet() (decoding) + * or avcodec_send_frame() (encoding) functions. This will enter draining + * mode. + * - Call avcodec_receive_frame() (decoding) or avcodec_receive_packet() + * (encoding) in a loop until AVERROR_EOF is returned. The functions will + * not return AVERROR(EAGAIN), unless you forgot to enter draining mode. + * - Before decoding can be resumed again, the codec has to be reset with + * avcodec_flush_buffers(). + * + * Using the API as outlined above is highly recommended. But it is also + * possible to call functions outside of this rigid schema. For example, you can + * call avcodec_send_packet() repeatedly without calling + * avcodec_receive_frame(). In this case, avcodec_send_packet() will succeed + * until the codec's internal buffer has been filled up (which is typically of + * size 1 per output frame, after initial input), and then reject input with + * AVERROR(EAGAIN). Once it starts rejecting input, you have no choice but to + * read at least some output. + * + * Not all codecs will follow a rigid and predictable dataflow; the only + * guarantee is that an AVERROR(EAGAIN) return value on a send/receive call on + * one end implies that a receive/send call on the other end will succeed, or + * at least will not fail with AVERROR(EAGAIN). In general, no codec will + * permit unlimited buffering of input or output. + * + * A codec is not allowed to return AVERROR(EAGAIN) for both sending and receiving. This + * would be an invalid state, which could put the codec user into an endless + * loop. The API has no concept of time either: it cannot happen that trying to + * do avcodec_send_packet() results in AVERROR(EAGAIN), but a repeated call 1 second + * later accepts the packet (with no other receive/flush API calls involved). + * The API is a strict state machine, and the passage of time is not supposed + * to influence it. Some timing-dependent behavior might still be deemed + * acceptable in certain cases. But it must never result in both send/receive + * returning EAGAIN at the same time at any point. It must also absolutely be + * avoided that the current state is "unstable" and can "flip-flop" between + * the send/receive APIs allowing progress. For example, it's not allowed that + * the codec randomly decides that it actually wants to consume a packet now + * instead of returning a frame, after it just returned AVERROR(EAGAIN) on an + * avcodec_send_packet() call. + * @} + */ + +/** + * @defgroup lavc_core Core functions/structures. + * @ingroup libavc + * + * Basic definitions, functions for querying libavcodec capabilities, + * allocating core structures, etc. + * @{ + */ + +/** + * @ingroup lavc_encoding + * minimum encoding buffer size + * Used to avoid some checks during header writing. + */ +#define AV_INPUT_BUFFER_MIN_SIZE 16384 + +/** + * @ingroup lavc_encoding + */ +typedef struct RcOverride{ + int start_frame; + int end_frame; + int qscale; // If this is 0 then quality_factor will be used instead. + float quality_factor; +} RcOverride; + +/* encoding support + These flags can be passed in AVCodecContext.flags before initialization. + Note: Not everything is supported yet. +*/ + +/** + * Allow decoders to produce frames with data planes that are not aligned + * to CPU requirements (e.g. due to cropping). + */ +#define AV_CODEC_FLAG_UNALIGNED (1 << 0) +/** + * Use fixed qscale. + */ +#define AV_CODEC_FLAG_QSCALE (1 << 1) +/** + * 4 MV per MB allowed / advanced prediction for H.263. + */ +#define AV_CODEC_FLAG_4MV (1 << 2) +/** + * Output even those frames that might be corrupted. + */ +#define AV_CODEC_FLAG_OUTPUT_CORRUPT (1 << 3) +/** + * Use qpel MC. + */ +#define AV_CODEC_FLAG_QPEL (1 << 4) +/** + * Don't output frames whose parameters differ from first + * decoded frame in stream. + */ +#define AV_CODEC_FLAG_DROPCHANGED (1 << 5) +/** + * Request the encoder to output reconstructed frames, i.e. frames that would be + * produced by decoding the encoded bistream. These frames may be retrieved by + * calling avcodec_receive_frame() immediately after a successful call to + * avcodec_receive_packet(). + * + * Should only be used with encoders flagged with the + * AV_CODEC_CAP_ENCODER_RECON_FRAME capability. + */ +#define AV_CODEC_FLAG_RECON_FRAME (1 << 6) +/** + * Use internal 2pass ratecontrol in first pass mode. + */ +#define AV_CODEC_FLAG_PASS1 (1 << 9) +/** + * Use internal 2pass ratecontrol in second pass mode. + */ +#define AV_CODEC_FLAG_PASS2 (1 << 10) +/** + * loop filter. + */ +#define AV_CODEC_FLAG_LOOP_FILTER (1 << 11) +/** + * Only decode/encode grayscale. + */ +#define AV_CODEC_FLAG_GRAY (1 << 13) +/** + * error[?] variables will be set during encoding. + */ +#define AV_CODEC_FLAG_PSNR (1 << 15) +#if FF_API_FLAG_TRUNCATED +/** + * Input bitstream might be truncated at a random location + * instead of only at frame boundaries. + * + * @deprecated use codec parsers for packetizing input + */ +#define AV_CODEC_FLAG_TRUNCATED (1 << 16) +#endif +/** + * Use interlaced DCT. + */ +#define AV_CODEC_FLAG_INTERLACED_DCT (1 << 18) +/** + * Force low delay. + */ +#define AV_CODEC_FLAG_LOW_DELAY (1 << 19) +/** + * Place global headers in extradata instead of every keyframe. + */ +#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22) +/** + * Use only bitexact stuff (except (I)DCT). + */ +#define AV_CODEC_FLAG_BITEXACT (1 << 23) +/* Fx : Flag for H.263+ extra options */ +/** + * H.263 advanced intra coding / MPEG-4 AC prediction + */ +#define AV_CODEC_FLAG_AC_PRED (1 << 24) +/** + * interlaced motion estimation + */ +#define AV_CODEC_FLAG_INTERLACED_ME (1 << 29) +#define AV_CODEC_FLAG_CLOSED_GOP (1U << 31) + +/** + * Allow non spec compliant speedup tricks. + */ +#define AV_CODEC_FLAG2_FAST (1 << 0) +/** + * Skip bitstream encoding. + */ +#define AV_CODEC_FLAG2_NO_OUTPUT (1 << 2) +/** + * Place global headers at every keyframe instead of in extradata. + */ +#define AV_CODEC_FLAG2_LOCAL_HEADER (1 << 3) + +/** + * timecode is in drop frame format. DEPRECATED!!!! + */ +#define AV_CODEC_FLAG2_DROP_FRAME_TIMECODE (1 << 13) + +/** + * Input bitstream might be truncated at a packet boundaries + * instead of only at frame boundaries. + */ +#define AV_CODEC_FLAG2_CHUNKS (1 << 15) +/** + * Discard cropping information from SPS. + */ +#define AV_CODEC_FLAG2_IGNORE_CROP (1 << 16) + +/** + * Show all frames before the first keyframe + */ +#define AV_CODEC_FLAG2_SHOW_ALL (1 << 22) +/** + * Export motion vectors through frame side data + */ +#define AV_CODEC_FLAG2_EXPORT_MVS (1 << 28) +/** + * Do not skip samples and export skip information as frame side data + */ +#define AV_CODEC_FLAG2_SKIP_MANUAL (1 << 29) +/** + * Do not reset ASS ReadOrder field on flush (subtitles decoding) + */ +#define AV_CODEC_FLAG2_RO_FLUSH_NOOP (1 << 30) +/** + * Generate/parse ICC profiles on encode/decode, as appropriate for the type of + * file. No effect on codecs which cannot contain embedded ICC profiles, or + * when compiled without support for lcms2. + */ +#define AV_CODEC_FLAG2_ICC_PROFILES (1U << 31) + +/* Exported side data. + These flags can be passed in AVCodecContext.export_side_data before initialization. +*/ +/** + * Export motion vectors through frame side data + */ +#define AV_CODEC_EXPORT_DATA_MVS (1 << 0) +/** + * Export encoder Producer Reference Time through packet side data + */ +#define AV_CODEC_EXPORT_DATA_PRFT (1 << 1) +/** + * Decoding only. + * Export the AVVideoEncParams structure through frame side data. + */ +#define AV_CODEC_EXPORT_DATA_VIDEO_ENC_PARAMS (1 << 2) +/** + * Decoding only. + * Do not apply film grain, export it instead. + */ +#define AV_CODEC_EXPORT_DATA_FILM_GRAIN (1 << 3) + +/** + * The decoder will keep a reference to the frame and may reuse it later. + */ +#define AV_GET_BUFFER_FLAG_REF (1 << 0) + +/** + * The encoder will keep a reference to the packet and may reuse it later. + */ +#define AV_GET_ENCODE_BUFFER_FLAG_REF (1 << 0) + +struct AVCodecInternal; + +/** + * main external API structure. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user + * applications. + * The name string for AVOptions options matches the associated command line + * parameter name and can be found in libavcodec/options_table.h + * The AVOption/command line parameter names differ in some cases from the C + * structure field names for historic reasons or brevity. + * sizeof(AVCodecContext) must not be used outside libav*. + */ +typedef struct AVCodecContext { + /** + * information on struct for av_log + * - set by avcodec_alloc_context3 + */ + const AVClass *av_class; + int log_level_offset; + + enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */ + const struct AVCodec *codec; + enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */ + + /** + * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A'). + * This is used to work around some encoder bugs. + * A demuxer should set this to what is stored in the field used to identify the codec. + * If there are multiple such fields in a container then the demuxer should choose the one + * which maximizes the information about the used codec. + * If the codec tag field in a container is larger than 32 bits then the demuxer should + * remap the longer ID to 32 bits with a table or other structure. Alternatively a new + * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated + * first. + * - encoding: Set by user, if not then the default based on codec_id will be used. + * - decoding: Set by user, will be converted to uppercase by libavcodec during init. + */ + unsigned int codec_tag; + + void *priv_data; + + /** + * Private context used for internal data. + * + * Unlike priv_data, this is not codec-specific. It is used in general + * libavcodec functions. + */ + struct AVCodecInternal *internal; + + /** + * Private data of the user, can be used to carry app specific stuff. + * - encoding: Set by user. + * - decoding: Set by user. + */ + void *opaque; + + /** + * the average bitrate + * - encoding: Set by user; unused for constant quantizer encoding. + * - decoding: Set by user, may be overwritten by libavcodec + * if this info is available in the stream + */ + int64_t bit_rate; + + /** + * number of bits the bitstream is allowed to diverge from the reference. + * the reference can be CBR (for CBR pass1) or VBR (for pass2) + * - encoding: Set by user; unused for constant quantizer encoding. + * - decoding: unused + */ + int bit_rate_tolerance; + + /** + * Global quality for codecs which cannot change it per frame. + * This should be proportional to MPEG-1/2/4 qscale. + * - encoding: Set by user. + * - decoding: unused + */ + int global_quality; + + /** + * - encoding: Set by user. + * - decoding: unused + */ + int compression_level; +#define FF_COMPRESSION_DEFAULT -1 + + /** + * AV_CODEC_FLAG_*. + * - encoding: Set by user. + * - decoding: Set by user. + */ + int flags; + + /** + * AV_CODEC_FLAG2_* + * - encoding: Set by user. + * - decoding: Set by user. + */ + int flags2; + + /** + * some codecs need / can use extradata like Huffman tables. + * MJPEG: Huffman tables + * rv10: additional flags + * MPEG-4: global headers (they can be in the bitstream or here) + * The allocated memory should be AV_INPUT_BUFFER_PADDING_SIZE bytes larger + * than extradata_size to avoid problems if it is read with the bitstream reader. + * The bytewise contents of extradata must not depend on the architecture or CPU endianness. + * Must be allocated with the av_malloc() family of functions. + * - encoding: Set/allocated/freed by libavcodec. + * - decoding: Set/allocated/freed by user. + */ + uint8_t *extradata; + int extradata_size; + + /** + * This is the fundamental unit of time (in seconds) in terms + * of which frame timestamps are represented. For fixed-fps content, + * timebase should be 1/framerate and timestamp increments should be + * identically 1. + * This often, but not always is the inverse of the frame rate or field rate + * for video. 1/time_base is not the average frame rate if the frame rate is not + * constant. + * + * Like containers, elementary streams also can store timestamps, 1/time_base + * is the unit in which these timestamps are specified. + * As example of such codec time base see ISO/IEC 14496-2:2001(E) + * vop_time_increment_resolution and fixed_vop_rate + * (fixed_vop_rate == 0 implies that it is different from the framerate) + * + * - encoding: MUST be set by user. + * - decoding: the use of this field for decoding is deprecated. + * Use framerate instead. + */ + AVRational time_base; + + /** + * For some codecs, the time base is closer to the field rate than the frame rate. + * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration + * if no telecine is used ... + * + * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2. + */ + int ticks_per_frame; + + /** + * Codec delay. + * + * Encoding: Number of frames delay there will be from the encoder input to + * the decoder output. (we assume the decoder matches the spec) + * Decoding: Number of frames delay in addition to what a standard decoder + * as specified in the spec would produce. + * + * Video: + * Number of frames the decoded output will be delayed relative to the + * encoded input. + * + * Audio: + * For encoding, this field is unused (see initial_padding). + * + * For decoding, this is the number of samples the decoder needs to + * output before the decoder's output is valid. When seeking, you should + * start decoding this many samples prior to your desired seek point. + * + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + int delay; + + + /* video only */ + /** + * picture width / height. + * + * @note Those fields may not match the values of the last + * AVFrame output by avcodec_receive_frame() due frame + * reordering. + * + * - encoding: MUST be set by user. + * - decoding: May be set by the user before opening the decoder if known e.g. + * from the container. Some decoders will require the dimensions + * to be set by the caller. During decoding, the decoder may + * overwrite those values as required while parsing the data. + */ + int width, height; + + /** + * Bitstream width / height, may be different from width/height e.g. when + * the decoded frame is cropped before being output or lowres is enabled. + * + * @note Those field may not match the value of the last + * AVFrame output by avcodec_receive_frame() due frame + * reordering. + * + * - encoding: unused + * - decoding: May be set by the user before opening the decoder if known + * e.g. from the container. During decoding, the decoder may + * overwrite those values as required while parsing the data. + */ + int coded_width, coded_height; + + /** + * the number of pictures in a group of pictures, or 0 for intra_only + * - encoding: Set by user. + * - decoding: unused + */ + int gop_size; + + /** + * Pixel format, see AV_PIX_FMT_xxx. + * May be set by the demuxer if known from headers. + * May be overridden by the decoder if it knows better. + * + * @note This field may not match the value of the last + * AVFrame output by avcodec_receive_frame() due frame + * reordering. + * + * - encoding: Set by user. + * - decoding: Set by user if known, overridden by libavcodec while + * parsing the data. + */ + enum AVPixelFormat pix_fmt; + + /** + * If non NULL, 'draw_horiz_band' is called by the libavcodec + * decoder to draw a horizontal band. It improves cache usage. Not + * all codecs can do that. You must check the codec capabilities + * beforehand. + * When multithreading is used, it may be called from multiple threads + * at the same time; threads might draw different parts of the same AVFrame, + * or multiple AVFrames, and there is no guarantee that slices will be drawn + * in order. + * The function is also used by hardware acceleration APIs. + * It is called at least once during frame decoding to pass + * the data needed for hardware render. + * In that mode instead of pixel data, AVFrame points to + * a structure specific to the acceleration API. The application + * reads the structure and can change some fields to indicate progress + * or mark state. + * - encoding: unused + * - decoding: Set by user. + * @param height the height of the slice + * @param y the y position of the slice + * @param type 1->top field, 2->bottom field, 3->frame + * @param offset offset into the AVFrame.data from which the slice should be read + */ + void (*draw_horiz_band)(struct AVCodecContext *s, + const AVFrame *src, int offset[AV_NUM_DATA_POINTERS], + int y, int type, int height); + + /** + * Callback to negotiate the pixel format. Decoding only, may be set by the + * caller before avcodec_open2(). + * + * Called by some decoders to select the pixel format that will be used for + * the output frames. This is mainly used to set up hardware acceleration, + * then the provided format list contains the corresponding hwaccel pixel + * formats alongside the "software" one. The software pixel format may also + * be retrieved from \ref sw_pix_fmt. + * + * This callback will be called when the coded frame properties (such as + * resolution, pixel format, etc.) change and more than one output format is + * supported for those new properties. If a hardware pixel format is chosen + * and initialization for it fails, the callback may be called again + * immediately. + * + * This callback may be called from different threads if the decoder is + * multi-threaded, but not from more than one thread simultaneously. + * + * @param fmt list of formats which may be used in the current + * configuration, terminated by AV_PIX_FMT_NONE. + * @warning Behavior is undefined if the callback returns a value other + * than one of the formats in fmt or AV_PIX_FMT_NONE. + * @return the chosen format or AV_PIX_FMT_NONE + */ + enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt); + + /** + * maximum number of B-frames between non-B-frames + * Note: The output will be delayed by max_b_frames+1 relative to the input. + * - encoding: Set by user. + * - decoding: unused + */ + int max_b_frames; + + /** + * qscale factor between IP and B-frames + * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset). + * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). + * - encoding: Set by user. + * - decoding: unused + */ + float b_quant_factor; + + /** + * qscale offset between IP and B-frames + * - encoding: Set by user. + * - decoding: unused + */ + float b_quant_offset; + + /** + * Size of the frame reordering buffer in the decoder. + * For MPEG-2 it is 1 IPB or 0 low delay IP. + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + int has_b_frames; + + /** + * qscale factor between P- and I-frames + * If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset). + * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset). + * - encoding: Set by user. + * - decoding: unused + */ + float i_quant_factor; + + /** + * qscale offset between P and I-frames + * - encoding: Set by user. + * - decoding: unused + */ + float i_quant_offset; + + /** + * luminance masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float lumi_masking; + + /** + * temporary complexity masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float temporal_cplx_masking; + + /** + * spatial complexity masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float spatial_cplx_masking; + + /** + * p block masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float p_masking; + + /** + * darkness masking (0-> disabled) + * - encoding: Set by user. + * - decoding: unused + */ + float dark_masking; + + /** + * slice count + * - encoding: Set by libavcodec. + * - decoding: Set by user (or 0). + */ + int slice_count; + + /** + * slice offsets in the frame in bytes + * - encoding: Set/allocated by libavcodec. + * - decoding: Set/allocated by user (or NULL). + */ + int *slice_offset; + + /** + * sample aspect ratio (0 if unknown) + * That is the width of a pixel divided by the height of the pixel. + * Numerator and denominator must be relatively prime and smaller than 256 for some video standards. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + AVRational sample_aspect_ratio; + + /** + * motion estimation comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int me_cmp; + /** + * subpixel motion estimation comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int me_sub_cmp; + /** + * macroblock comparison function (not supported yet) + * - encoding: Set by user. + * - decoding: unused + */ + int mb_cmp; + /** + * interlaced DCT comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int ildct_cmp; +#define FF_CMP_SAD 0 +#define FF_CMP_SSE 1 +#define FF_CMP_SATD 2 +#define FF_CMP_DCT 3 +#define FF_CMP_PSNR 4 +#define FF_CMP_BIT 5 +#define FF_CMP_RD 6 +#define FF_CMP_ZERO 7 +#define FF_CMP_VSAD 8 +#define FF_CMP_VSSE 9 +#define FF_CMP_NSSE 10 +#define FF_CMP_W53 11 +#define FF_CMP_W97 12 +#define FF_CMP_DCTMAX 13 +#define FF_CMP_DCT264 14 +#define FF_CMP_MEDIAN_SAD 15 +#define FF_CMP_CHROMA 256 + + /** + * ME diamond size & shape + * - encoding: Set by user. + * - decoding: unused + */ + int dia_size; + + /** + * amount of previous MV predictors (2a+1 x 2a+1 square) + * - encoding: Set by user. + * - decoding: unused + */ + int last_predictor_count; + + /** + * motion estimation prepass comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int me_pre_cmp; + + /** + * ME prepass diamond size & shape + * - encoding: Set by user. + * - decoding: unused + */ + int pre_dia_size; + + /** + * subpel ME quality + * - encoding: Set by user. + * - decoding: unused + */ + int me_subpel_quality; + + /** + * maximum motion estimation search range in subpel units + * If 0 then no limit. + * + * - encoding: Set by user. + * - decoding: unused + */ + int me_range; + + /** + * slice flags + * - encoding: unused + * - decoding: Set by user. + */ + int slice_flags; +#define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display +#define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG-2 field pics) +#define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) + + /** + * macroblock decision mode + * - encoding: Set by user. + * - decoding: unused + */ + int mb_decision; +#define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp +#define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits +#define FF_MB_DECISION_RD 2 ///< rate distortion + + /** + * custom intra quantization matrix + * Must be allocated with the av_malloc() family of functions, and will be freed in + * avcodec_free_context(). + * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL. + * - decoding: Set/allocated/freed by libavcodec. + */ + uint16_t *intra_matrix; + + /** + * custom inter quantization matrix + * Must be allocated with the av_malloc() family of functions, and will be freed in + * avcodec_free_context(). + * - encoding: Set/allocated by user, freed by libavcodec. Can be NULL. + * - decoding: Set/allocated/freed by libavcodec. + */ + uint16_t *inter_matrix; + + /** + * precision of the intra DC coefficient - 8 + * - encoding: Set by user. + * - decoding: Set by libavcodec + */ + int intra_dc_precision; + + /** + * Number of macroblock rows at the top which are skipped. + * - encoding: unused + * - decoding: Set by user. + */ + int skip_top; + + /** + * Number of macroblock rows at the bottom which are skipped. + * - encoding: unused + * - decoding: Set by user. + */ + int skip_bottom; + + /** + * minimum MB Lagrange multiplier + * - encoding: Set by user. + * - decoding: unused + */ + int mb_lmin; + + /** + * maximum MB Lagrange multiplier + * - encoding: Set by user. + * - decoding: unused + */ + int mb_lmax; + + /** + * - encoding: Set by user. + * - decoding: unused + */ + int bidir_refine; + + /** + * minimum GOP size + * - encoding: Set by user. + * - decoding: unused + */ + int keyint_min; + + /** + * number of reference frames + * - encoding: Set by user. + * - decoding: Set by lavc. + */ + int refs; + + /** + * Note: Value depends upon the compare function used for fullpel ME. + * - encoding: Set by user. + * - decoding: unused + */ + int mv0_threshold; + + /** + * Chromaticity coordinates of the source primaries. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorPrimaries color_primaries; + + /** + * Color Transfer Characteristic. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorTransferCharacteristic color_trc; + + /** + * YUV colorspace type. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorSpace colorspace; + + /** + * MPEG vs JPEG YUV range. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorRange color_range; + + /** + * This defines the location of chroma samples. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVChromaLocation chroma_sample_location; + + /** + * Number of slices. + * Indicates number of picture subdivisions. Used for parallelized + * decoding. + * - encoding: Set by user + * - decoding: unused + */ + int slices; + + /** Field order + * - encoding: set by libavcodec + * - decoding: Set by user. + */ + enum AVFieldOrder field_order; + + /* audio only */ + int sample_rate; ///< samples per second + +#if FF_API_OLD_CHANNEL_LAYOUT + /** + * number of audio channels + * @deprecated use ch_layout.nb_channels + */ + attribute_deprecated + int channels; +#endif + + /** + * audio sample format + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + enum AVSampleFormat sample_fmt; ///< sample format + + /* The following data should not be initialized. */ + /** + * Number of samples per channel in an audio frame. + * + * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame + * except the last must contain exactly frame_size samples per channel. + * May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the + * frame size is not restricted. + * - decoding: may be set by some decoders to indicate constant frame size + */ + int frame_size; + + /** + * Frame counter, set by libavcodec. + * + * - decoding: total number of frames returned from the decoder so far. + * - encoding: total number of frames passed to the encoder so far. + * + * @note the counter is not incremented if encoding/decoding resulted in + * an error. + */ + int frame_number; + + /** + * number of bytes per packet if constant and known or 0 + * Used by some WAV based audio codecs. + */ + int block_align; + + /** + * Audio cutoff bandwidth (0 means "automatic") + * - encoding: Set by user. + * - decoding: unused + */ + int cutoff; + +#if FF_API_OLD_CHANNEL_LAYOUT + /** + * Audio channel layout. + * - encoding: set by user. + * - decoding: set by user, may be overwritten by libavcodec. + * @deprecated use ch_layout + */ + attribute_deprecated + uint64_t channel_layout; + + /** + * Request decoder to use this channel layout if it can (0 for default) + * - encoding: unused + * - decoding: Set by user. + * @deprecated use "downmix" codec private option + */ + attribute_deprecated + uint64_t request_channel_layout; +#endif + + /** + * Type of service that the audio stream conveys. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + enum AVAudioServiceType audio_service_type; + + /** + * desired sample format + * - encoding: Not used. + * - decoding: Set by user. + * Decoder will decode to this format if it can. + */ + enum AVSampleFormat request_sample_fmt; + + /** + * This callback is called at the beginning of each frame to get data + * buffer(s) for it. There may be one contiguous buffer for all the data or + * there may be a buffer per each data plane or anything in between. What + * this means is, you may set however many entries in buf[] you feel necessary. + * Each buffer must be reference-counted using the AVBuffer API (see description + * of buf[] below). + * + * The following fields will be set in the frame before this callback is + * called: + * - format + * - width, height (video only) + * - sample_rate, channel_layout, nb_samples (audio only) + * Their values may differ from the corresponding values in + * AVCodecContext. This callback must use the frame values, not the codec + * context values, to calculate the required buffer size. + * + * This callback must fill the following fields in the frame: + * - data[] + * - linesize[] + * - extended_data: + * * if the data is planar audio with more than 8 channels, then this + * callback must allocate and fill extended_data to contain all pointers + * to all data planes. data[] must hold as many pointers as it can. + * extended_data must be allocated with av_malloc() and will be freed in + * av_frame_unref(). + * * otherwise extended_data must point to data + * - buf[] must contain one or more pointers to AVBufferRef structures. Each of + * the frame's data and extended_data pointers must be contained in these. That + * is, one AVBufferRef for each allocated chunk of memory, not necessarily one + * AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(), + * and av_buffer_ref(). + * - extended_buf and nb_extended_buf must be allocated with av_malloc() by + * this callback and filled with the extra buffers if there are more + * buffers than buf[] can hold. extended_buf will be freed in + * av_frame_unref(). + * + * If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call + * avcodec_default_get_buffer2() instead of providing buffers allocated by + * some other means. + * + * Each data plane must be aligned to the maximum required by the target + * CPU. + * + * @see avcodec_default_get_buffer2() + * + * Video: + * + * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused + * (read and/or written to if it is writable) later by libavcodec. + * + * avcodec_align_dimensions2() should be used to find the required width and + * height, as they normally need to be rounded up to the next multiple of 16. + * + * Some decoders do not support linesizes changing between frames. + * + * If frame multithreading is used, this callback may be called from a + * different thread, but not from more than one at once. Does not need to be + * reentrant. + * + * @see avcodec_align_dimensions2() + * + * Audio: + * + * Decoders request a buffer of a particular size by setting + * AVFrame.nb_samples prior to calling get_buffer2(). The decoder may, + * however, utilize only part of the buffer by setting AVFrame.nb_samples + * to a smaller value in the output frame. + * + * As a convenience, av_samples_get_buffer_size() and + * av_samples_fill_arrays() in libavutil may be used by custom get_buffer2() + * functions to find the required data size and to fill data pointers and + * linesize. In AVFrame.linesize, only linesize[0] may be set for audio + * since all planes must be the same size. + * + * @see av_samples_get_buffer_size(), av_samples_fill_arrays() + * + * - encoding: unused + * - decoding: Set by libavcodec, user can override. + */ + int (*get_buffer2)(struct AVCodecContext *s, AVFrame *frame, int flags); + + /* - encoding parameters */ + float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0) + float qblur; ///< amount of qscale smoothing over time (0.0-1.0) + + /** + * minimum quantizer + * - encoding: Set by user. + * - decoding: unused + */ + int qmin; + + /** + * maximum quantizer + * - encoding: Set by user. + * - decoding: unused + */ + int qmax; + + /** + * maximum quantizer difference between frames + * - encoding: Set by user. + * - decoding: unused + */ + int max_qdiff; + + /** + * decoder bitstream buffer size + * - encoding: Set by user. + * - decoding: unused + */ + int rc_buffer_size; + + /** + * ratecontrol override, see RcOverride + * - encoding: Allocated/set/freed by user. + * - decoding: unused + */ + int rc_override_count; + RcOverride *rc_override; + + /** + * maximum bitrate + * - encoding: Set by user. + * - decoding: Set by user, may be overwritten by libavcodec. + */ + int64_t rc_max_rate; + + /** + * minimum bitrate + * - encoding: Set by user. + * - decoding: unused + */ + int64_t rc_min_rate; + + /** + * Ratecontrol attempt to use, at maximum, of what can be used without an underflow. + * - encoding: Set by user. + * - decoding: unused. + */ + float rc_max_available_vbv_use; + + /** + * Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow. + * - encoding: Set by user. + * - decoding: unused. + */ + float rc_min_vbv_overflow_use; + + /** + * Number of bits which should be loaded into the rc buffer before decoding starts. + * - encoding: Set by user. + * - decoding: unused + */ + int rc_initial_buffer_occupancy; + + /** + * trellis RD quantization + * - encoding: Set by user. + * - decoding: unused + */ + int trellis; + + /** + * pass1 encoding statistics output buffer + * - encoding: Set by libavcodec. + * - decoding: unused + */ + char *stats_out; + + /** + * pass2 encoding statistics input buffer + * Concatenated stuff from stats_out of pass1 should be placed here. + * - encoding: Allocated/set/freed by user. + * - decoding: unused + */ + char *stats_in; + + /** + * Work around bugs in encoders which sometimes cannot be detected automatically. + * - encoding: Set by user + * - decoding: Set by user + */ + int workaround_bugs; +#define FF_BUG_AUTODETECT 1 ///< autodetection +#define FF_BUG_XVID_ILACE 4 +#define FF_BUG_UMP4 8 +#define FF_BUG_NO_PADDING 16 +#define FF_BUG_AMV 32 +#define FF_BUG_QPEL_CHROMA 64 +#define FF_BUG_STD_QPEL 128 +#define FF_BUG_QPEL_CHROMA2 256 +#define FF_BUG_DIRECT_BLOCKSIZE 512 +#define FF_BUG_EDGE 1024 +#define FF_BUG_HPEL_CHROMA 2048 +#define FF_BUG_DC_CLIP 4096 +#define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders. +#define FF_BUG_TRUNCATED 16384 +#define FF_BUG_IEDGE 32768 + + /** + * strictly follow the standard (MPEG-4, ...). + * - encoding: Set by user. + * - decoding: Set by user. + * Setting this to STRICT or higher means the encoder and decoder will + * generally do stupid things, whereas setting it to unofficial or lower + * will mean the encoder might produce output that is not supported by all + * spec-compliant decoders. Decoders don't differentiate between normal, + * unofficial and experimental (that is, they always try to decode things + * when they can) unless they are explicitly asked to behave stupidly + * (=strictly conform to the specs) + */ + int strict_std_compliance; +#define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software. +#define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences. +#define FF_COMPLIANCE_NORMAL 0 +#define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions +#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things. + + /** + * error concealment flags + * - encoding: unused + * - decoding: Set by user. + */ + int error_concealment; +#define FF_EC_GUESS_MVS 1 +#define FF_EC_DEBLOCK 2 +#define FF_EC_FAVOR_INTER 256 + + /** + * debug + * - encoding: Set by user. + * - decoding: Set by user. + */ + int debug; +#define FF_DEBUG_PICT_INFO 1 +#define FF_DEBUG_RC 2 +#define FF_DEBUG_BITSTREAM 4 +#define FF_DEBUG_MB_TYPE 8 +#define FF_DEBUG_QP 16 +#define FF_DEBUG_DCT_COEFF 0x00000040 +#define FF_DEBUG_SKIP 0x00000080 +#define FF_DEBUG_STARTCODE 0x00000100 +#define FF_DEBUG_ER 0x00000400 +#define FF_DEBUG_MMCO 0x00000800 +#define FF_DEBUG_BUGS 0x00001000 +#define FF_DEBUG_BUFFERS 0x00008000 +#define FF_DEBUG_THREADS 0x00010000 +#define FF_DEBUG_GREEN_MD 0x00800000 +#define FF_DEBUG_NOMC 0x01000000 + + /** + * Error recognition; may misdetect some more or less valid parts as errors. + * - encoding: Set by user. + * - decoding: Set by user. + */ + int err_recognition; + +/** + * Verify checksums embedded in the bitstream (could be of either encoded or + * decoded data, depending on the codec) and print an error message on mismatch. + * If AV_EF_EXPLODE is also set, a mismatching checksum will result in the + * decoder returning an error. + */ +#define AV_EF_CRCCHECK (1<<0) +#define AV_EF_BITSTREAM (1<<1) ///< detect bitstream specification deviations +#define AV_EF_BUFFER (1<<2) ///< detect improper bitstream length +#define AV_EF_EXPLODE (1<<3) ///< abort decoding on minor error detection + +#define AV_EF_IGNORE_ERR (1<<15) ///< ignore errors and continue +#define AV_EF_CAREFUL (1<<16) ///< consider things that violate the spec, are fast to calculate and have not been seen in the wild as errors +#define AV_EF_COMPLIANT (1<<17) ///< consider all spec non compliances as errors +#define AV_EF_AGGRESSIVE (1<<18) ///< consider things that a sane encoder should not do as an error + + + /** + * opaque 64-bit number (generally a PTS) that will be reordered and + * output in AVFrame.reordered_opaque + * - encoding: Set by libavcodec to the reordered_opaque of the input + * frame corresponding to the last returned packet. Only + * supported by encoders with the + * AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE capability. + * - decoding: Set by user. + */ + int64_t reordered_opaque; + + /** + * Hardware accelerator in use + * - encoding: unused. + * - decoding: Set by libavcodec + */ + const struct AVHWAccel *hwaccel; + + /** + * Hardware accelerator context. + * For some hardware accelerators, a global context needs to be + * provided by the user. In that case, this holds display-dependent + * data FFmpeg cannot instantiate itself. Please refer to the + * FFmpeg HW accelerator documentation to know how to fill this. + * - encoding: unused + * - decoding: Set by user + */ + void *hwaccel_context; + + /** + * error + * - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR. + * - decoding: unused + */ + uint64_t error[AV_NUM_DATA_POINTERS]; + + /** + * DCT algorithm, see FF_DCT_* below + * - encoding: Set by user. + * - decoding: unused + */ + int dct_algo; +#define FF_DCT_AUTO 0 +#define FF_DCT_FASTINT 1 +#define FF_DCT_INT 2 +#define FF_DCT_MMX 3 +#define FF_DCT_ALTIVEC 5 +#define FF_DCT_FAAN 6 + + /** + * IDCT algorithm, see FF_IDCT_* below. + * - encoding: Set by user. + * - decoding: Set by user. + */ + int idct_algo; +#define FF_IDCT_AUTO 0 +#define FF_IDCT_INT 1 +#define FF_IDCT_SIMPLE 2 +#define FF_IDCT_SIMPLEMMX 3 +#define FF_IDCT_ARM 7 +#define FF_IDCT_ALTIVEC 8 +#define FF_IDCT_SIMPLEARM 10 +#define FF_IDCT_XVID 14 +#define FF_IDCT_SIMPLEARMV5TE 16 +#define FF_IDCT_SIMPLEARMV6 17 +#define FF_IDCT_FAAN 20 +#define FF_IDCT_SIMPLENEON 22 +#if FF_API_IDCT_NONE +// formerly used by xvmc +#define FF_IDCT_NONE 24 +#endif +#define FF_IDCT_SIMPLEAUTO 128 + + /** + * bits per sample/pixel from the demuxer (needed for huffyuv). + * - encoding: Set by libavcodec. + * - decoding: Set by user. + */ + int bits_per_coded_sample; + + /** + * Bits per sample/pixel of internal libavcodec pixel/sample format. + * - encoding: set by user. + * - decoding: set by libavcodec. + */ + int bits_per_raw_sample; + + /** + * low resolution decoding, 1-> 1/2 size, 2->1/4 size + * - encoding: unused + * - decoding: Set by user. + */ + int lowres; + + /** + * thread count + * is used to decide how many independent tasks should be passed to execute() + * - encoding: Set by user. + * - decoding: Set by user. + */ + int thread_count; + + /** + * Which multithreading methods to use. + * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread, + * so clients which cannot provide future frames should not use it. + * + * - encoding: Set by user, otherwise the default is used. + * - decoding: Set by user, otherwise the default is used. + */ + int thread_type; +#define FF_THREAD_FRAME 1 ///< Decode more than one frame at once +#define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once + + /** + * Which multithreading methods are in use by the codec. + * - encoding: Set by libavcodec. + * - decoding: Set by libavcodec. + */ + int active_thread_type; + +#if FF_API_THREAD_SAFE_CALLBACKS + /** + * Set by the client if its custom get_buffer() callback can be called + * synchronously from another thread, which allows faster multithreaded decoding. + * draw_horiz_band() will be called from other threads regardless of this setting. + * Ignored if the default get_buffer() is used. + * - encoding: Set by user. + * - decoding: Set by user. + * + * @deprecated the custom get_buffer2() callback should always be + * thread-safe. Thread-unsafe get_buffer2() implementations will be + * invalid starting with LIBAVCODEC_VERSION_MAJOR=60; in other words, + * libavcodec will behave as if this field was always set to 1. + * Callers that want to be forward compatible with future libavcodec + * versions should wrap access to this field in + * #if LIBAVCODEC_VERSION_MAJOR < 60 + */ + attribute_deprecated + int thread_safe_callbacks; +#endif + + /** + * The codec may call this to execute several independent things. + * It will return only after finishing all tasks. + * The user may replace this with some multithreaded implementation, + * the default implementation will execute the parts serially. + * @param count the number of things to execute + * - encoding: Set by libavcodec, user can override. + * - decoding: Set by libavcodec, user can override. + */ + int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size); + + /** + * The codec may call this to execute several independent things. + * It will return only after finishing all tasks. + * The user may replace this with some multithreaded implementation, + * the default implementation will execute the parts serially. + * @param c context passed also to func + * @param count the number of things to execute + * @param arg2 argument passed unchanged to func + * @param ret return values of executed functions, must have space for "count" values. May be NULL. + * @param func function that will be called count times, with jobnr from 0 to count-1. + * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no + * two instances of func executing at the same time will have the same threadnr. + * @return always 0 currently, but code should handle a future improvement where when any call to func + * returns < 0 no further calls to func may be done and < 0 is returned. + * - encoding: Set by libavcodec, user can override. + * - decoding: Set by libavcodec, user can override. + */ + int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count); + + /** + * noise vs. sse weight for the nsse comparison function + * - encoding: Set by user. + * - decoding: unused + */ + int nsse_weight; + + /** + * profile + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int profile; +#define FF_PROFILE_UNKNOWN -99 +#define FF_PROFILE_RESERVED -100 + +#define FF_PROFILE_AAC_MAIN 0 +#define FF_PROFILE_AAC_LOW 1 +#define FF_PROFILE_AAC_SSR 2 +#define FF_PROFILE_AAC_LTP 3 +#define FF_PROFILE_AAC_HE 4 +#define FF_PROFILE_AAC_HE_V2 28 +#define FF_PROFILE_AAC_LD 22 +#define FF_PROFILE_AAC_ELD 38 +#define FF_PROFILE_MPEG2_AAC_LOW 128 +#define FF_PROFILE_MPEG2_AAC_HE 131 + +#define FF_PROFILE_DNXHD 0 +#define FF_PROFILE_DNXHR_LB 1 +#define FF_PROFILE_DNXHR_SQ 2 +#define FF_PROFILE_DNXHR_HQ 3 +#define FF_PROFILE_DNXHR_HQX 4 +#define FF_PROFILE_DNXHR_444 5 + +#define FF_PROFILE_DTS 20 +#define FF_PROFILE_DTS_ES 30 +#define FF_PROFILE_DTS_96_24 40 +#define FF_PROFILE_DTS_HD_HRA 50 +#define FF_PROFILE_DTS_HD_MA 60 +#define FF_PROFILE_DTS_EXPRESS 70 + +#define FF_PROFILE_MPEG2_422 0 +#define FF_PROFILE_MPEG2_HIGH 1 +#define FF_PROFILE_MPEG2_SS 2 +#define FF_PROFILE_MPEG2_SNR_SCALABLE 3 +#define FF_PROFILE_MPEG2_MAIN 4 +#define FF_PROFILE_MPEG2_SIMPLE 5 + +#define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag +#define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag + +#define FF_PROFILE_H264_BASELINE 66 +#define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED) +#define FF_PROFILE_H264_MAIN 77 +#define FF_PROFILE_H264_EXTENDED 88 +#define FF_PROFILE_H264_HIGH 100 +#define FF_PROFILE_H264_HIGH_10 110 +#define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_MULTIVIEW_HIGH 118 +#define FF_PROFILE_H264_HIGH_422 122 +#define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_STEREO_HIGH 128 +#define FF_PROFILE_H264_HIGH_444 144 +#define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244 +#define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA) +#define FF_PROFILE_H264_CAVLC_444 44 + +#define FF_PROFILE_VC1_SIMPLE 0 +#define FF_PROFILE_VC1_MAIN 1 +#define FF_PROFILE_VC1_COMPLEX 2 +#define FF_PROFILE_VC1_ADVANCED 3 + +#define FF_PROFILE_MPEG4_SIMPLE 0 +#define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1 +#define FF_PROFILE_MPEG4_CORE 2 +#define FF_PROFILE_MPEG4_MAIN 3 +#define FF_PROFILE_MPEG4_N_BIT 4 +#define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5 +#define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6 +#define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7 +#define FF_PROFILE_MPEG4_HYBRID 8 +#define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9 +#define FF_PROFILE_MPEG4_CORE_SCALABLE 10 +#define FF_PROFILE_MPEG4_ADVANCED_CODING 11 +#define FF_PROFILE_MPEG4_ADVANCED_CORE 12 +#define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13 +#define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14 +#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15 + +#define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 1 +#define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 2 +#define FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 32768 +#define FF_PROFILE_JPEG2000_DCINEMA_2K 3 +#define FF_PROFILE_JPEG2000_DCINEMA_4K 4 + +#define FF_PROFILE_VP9_0 0 +#define FF_PROFILE_VP9_1 1 +#define FF_PROFILE_VP9_2 2 +#define FF_PROFILE_VP9_3 3 + +#define FF_PROFILE_HEVC_MAIN 1 +#define FF_PROFILE_HEVC_MAIN_10 2 +#define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3 +#define FF_PROFILE_HEVC_REXT 4 + +#define FF_PROFILE_VVC_MAIN_10 1 +#define FF_PROFILE_VVC_MAIN_10_444 33 + +#define FF_PROFILE_AV1_MAIN 0 +#define FF_PROFILE_AV1_HIGH 1 +#define FF_PROFILE_AV1_PROFESSIONAL 2 + +#define FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0 +#define FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1 +#define FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2 +#define FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS 0xc3 +#define FF_PROFILE_MJPEG_JPEG_LS 0xf7 + +#define FF_PROFILE_SBC_MSBC 1 + +#define FF_PROFILE_PRORES_PROXY 0 +#define FF_PROFILE_PRORES_LT 1 +#define FF_PROFILE_PRORES_STANDARD 2 +#define FF_PROFILE_PRORES_HQ 3 +#define FF_PROFILE_PRORES_4444 4 +#define FF_PROFILE_PRORES_XQ 5 + +#define FF_PROFILE_ARIB_PROFILE_A 0 +#define FF_PROFILE_ARIB_PROFILE_C 1 + +#define FF_PROFILE_KLVA_SYNC 0 +#define FF_PROFILE_KLVA_ASYNC 1 + + /** + * level + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + int level; +#define FF_LEVEL_UNKNOWN -99 + + /** + * Skip loop filtering for selected frames. + * - encoding: unused + * - decoding: Set by user. + */ + enum AVDiscard skip_loop_filter; + + /** + * Skip IDCT/dequantization for selected frames. + * - encoding: unused + * - decoding: Set by user. + */ + enum AVDiscard skip_idct; + + /** + * Skip decoding for selected frames. + * - encoding: unused + * - decoding: Set by user. + */ + enum AVDiscard skip_frame; + + /** + * Header containing style information for text subtitles. + * For SUBTITLE_ASS subtitle type, it should contain the whole ASS + * [Script Info] and [V4+ Styles] section, plus the [Events] line and + * the Format line following. It shouldn't include any Dialogue line. + * - encoding: Set/allocated/freed by user (before avcodec_open2()) + * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2()) + */ + uint8_t *subtitle_header; + int subtitle_header_size; + + /** + * Audio only. The number of "priming" samples (padding) inserted by the + * encoder at the beginning of the audio. I.e. this number of leading + * decoded samples must be discarded by the caller to get the original audio + * without leading padding. + * + * - decoding: unused + * - encoding: Set by libavcodec. The timestamps on the output packets are + * adjusted by the encoder so that they always refer to the + * first sample of the data actually contained in the packet, + * including any added padding. E.g. if the timebase is + * 1/samplerate and the timestamp of the first input sample is + * 0, the timestamp of the first output packet will be + * -initial_padding. + */ + int initial_padding; + + /** + * - decoding: For codecs that store a framerate value in the compressed + * bitstream, the decoder may export it here. { 0, 1} when + * unknown. + * - encoding: May be used to signal the framerate of CFR content to an + * encoder. + */ + AVRational framerate; + + /** + * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx. + * - encoding: unused. + * - decoding: Set by libavcodec before calling get_format() + */ + enum AVPixelFormat sw_pix_fmt; + + /** + * Timebase in which pkt_dts/pts and AVPacket.dts/pts are. + * - encoding unused. + * - decoding set by user. + */ + AVRational pkt_timebase; + + /** + * AVCodecDescriptor + * - encoding: unused. + * - decoding: set by libavcodec. + */ + const AVCodecDescriptor *codec_descriptor; + + /** + * Current statistics for PTS correction. + * - decoding: maintained and used by libavcodec, not intended to be used by user apps + * - encoding: unused + */ + int64_t pts_correction_num_faulty_pts; /// Number of incorrect PTS values so far + int64_t pts_correction_num_faulty_dts; /// Number of incorrect DTS values so far + int64_t pts_correction_last_pts; /// PTS of the last frame + int64_t pts_correction_last_dts; /// DTS of the last frame + + /** + * Character encoding of the input subtitles file. + * - decoding: set by user + * - encoding: unused + */ + char *sub_charenc; + + /** + * Subtitles character encoding mode. Formats or codecs might be adjusting + * this setting (if they are doing the conversion themselves for instance). + * - decoding: set by libavcodec + * - encoding: unused + */ + int sub_charenc_mode; +#define FF_SUB_CHARENC_MODE_DO_NOTHING -1 ///< do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for instance) +#define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself +#define FF_SUB_CHARENC_MODE_PRE_DECODER 1 ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv +#define FF_SUB_CHARENC_MODE_IGNORE 2 ///< neither convert the subtitles, nor check them for valid UTF-8 + + /** + * Skip processing alpha if supported by codec. + * Note that if the format uses pre-multiplied alpha (common with VP6, + * and recommended due to better video quality/compression) + * the image will look as if alpha-blended onto a black background. + * However for formats that do not use pre-multiplied alpha + * there might be serious artefacts (though e.g. libswscale currently + * assumes pre-multiplied alpha anyway). + * + * - decoding: set by user + * - encoding: unused + */ + int skip_alpha; + + /** + * Number of samples to skip after a discontinuity + * - decoding: unused + * - encoding: set by libavcodec + */ + int seek_preroll; + +#if FF_API_DEBUG_MV + /** + * @deprecated unused + */ + attribute_deprecated + int debug_mv; +#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames +#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames +#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames +#endif + + /** + * custom intra quantization matrix + * - encoding: Set by user, can be NULL. + * - decoding: unused. + */ + uint16_t *chroma_intra_matrix; + + /** + * dump format separator. + * can be ", " or "\n " or anything else + * - encoding: Set by user. + * - decoding: Set by user. + */ + uint8_t *dump_separator; + + /** + * ',' separated list of allowed decoders. + * If NULL then all are allowed + * - encoding: unused + * - decoding: set by user + */ + char *codec_whitelist; + + /** + * Properties of the stream that gets decoded + * - encoding: unused + * - decoding: set by libavcodec + */ + unsigned properties; +#define FF_CODEC_PROPERTY_LOSSLESS 0x00000001 +#define FF_CODEC_PROPERTY_CLOSED_CAPTIONS 0x00000002 +#define FF_CODEC_PROPERTY_FILM_GRAIN 0x00000004 + + /** + * Additional data associated with the entire coded stream. + * + * - decoding: unused + * - encoding: may be set by libavcodec after avcodec_open2(). + */ + AVPacketSideData *coded_side_data; + int nb_coded_side_data; + + /** + * A reference to the AVHWFramesContext describing the input (for encoding) + * or output (decoding) frames. The reference is set by the caller and + * afterwards owned (and freed) by libavcodec - it should never be read by + * the caller after being set. + * + * - decoding: This field should be set by the caller from the get_format() + * callback. The previous reference (if any) will always be + * unreffed by libavcodec before the get_format() call. + * + * If the default get_buffer2() is used with a hwaccel pixel + * format, then this AVHWFramesContext will be used for + * allocating the frame buffers. + * + * - encoding: For hardware encoders configured to use a hwaccel pixel + * format, this field should be set by the caller to a reference + * to the AVHWFramesContext describing input frames. + * AVHWFramesContext.format must be equal to + * AVCodecContext.pix_fmt. + * + * This field should be set before avcodec_open2() is called. + */ + AVBufferRef *hw_frames_ctx; + +#if FF_API_SUB_TEXT_FORMAT + /** + * @deprecated unused + */ + attribute_deprecated + int sub_text_format; +#define FF_SUB_TEXT_FMT_ASS 0 +#endif + + /** + * Audio only. The amount of padding (in samples) appended by the encoder to + * the end of the audio. I.e. this number of decoded samples must be + * discarded by the caller from the end of the stream to get the original + * audio without any trailing padding. + * + * - decoding: unused + * - encoding: unused + */ + int trailing_padding; + + /** + * The number of pixels per image to maximally accept. + * + * - decoding: set by user + * - encoding: set by user + */ + int64_t max_pixels; + + /** + * A reference to the AVHWDeviceContext describing the device which will + * be used by a hardware encoder/decoder. The reference is set by the + * caller and afterwards owned (and freed) by libavcodec. + * + * This should be used if either the codec device does not require + * hardware frames or any that are used are to be allocated internally by + * libavcodec. If the user wishes to supply any of the frames used as + * encoder input or decoder output then hw_frames_ctx should be used + * instead. When hw_frames_ctx is set in get_format() for a decoder, this + * field will be ignored while decoding the associated stream segment, but + * may again be used on a following one after another get_format() call. + * + * For both encoders and decoders this field should be set before + * avcodec_open2() is called and must not be written to thereafter. + * + * Note that some decoders may require this field to be set initially in + * order to support hw_frames_ctx at all - in that case, all frames + * contexts used must be created on the same device. + */ + AVBufferRef *hw_device_ctx; + + /** + * Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated + * decoding (if active). + * - encoding: unused + * - decoding: Set by user (either before avcodec_open2(), or in the + * AVCodecContext.get_format callback) + */ + int hwaccel_flags; + + /** + * Video decoding only. Certain video codecs support cropping, meaning that + * only a sub-rectangle of the decoded frame is intended for display. This + * option controls how cropping is handled by libavcodec. + * + * When set to 1 (the default), libavcodec will apply cropping internally. + * I.e. it will modify the output frame width/height fields and offset the + * data pointers (only by as much as possible while preserving alignment, or + * by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that + * the frames output by the decoder refer only to the cropped area. The + * crop_* fields of the output frames will be zero. + * + * When set to 0, the width/height fields of the output frames will be set + * to the coded dimensions and the crop_* fields will describe the cropping + * rectangle. Applying the cropping is left to the caller. + * + * @warning When hardware acceleration with opaque output frames is used, + * libavcodec is unable to apply cropping from the top/left border. + * + * @note when this option is set to zero, the width/height fields of the + * AVCodecContext and output AVFrames have different meanings. The codec + * context fields store display dimensions (with the coded dimensions in + * coded_width/height), while the frame fields store the coded dimensions + * (with the display dimensions being determined by the crop_* fields). + */ + int apply_cropping; + + /* + * Video decoding only. Sets the number of extra hardware frames which + * the decoder will allocate for use by the caller. This must be set + * before avcodec_open2() is called. + * + * Some hardware decoders require all frames that they will use for + * output to be defined in advance before decoding starts. For such + * decoders, the hardware frame pool must therefore be of a fixed size. + * The extra frames set here are on top of any number that the decoder + * needs internally in order to operate normally (for example, frames + * used as reference pictures). + */ + int extra_hw_frames; + + /** + * The percentage of damaged samples to discard a frame. + * + * - decoding: set by user + * - encoding: unused + */ + int discard_damaged_percentage; + + /** + * The number of samples per frame to maximally accept. + * + * - decoding: set by user + * - encoding: set by user + */ + int64_t max_samples; + + /** + * Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of + * metadata exported in frame, packet, or coded stream side data by + * decoders and encoders. + * + * - decoding: set by user + * - encoding: set by user + */ + int export_side_data; + + /** + * This callback is called at the beginning of each packet to get a data + * buffer for it. + * + * The following field will be set in the packet before this callback is + * called: + * - size + * This callback must use the above value to calculate the required buffer size, + * which must padded by at least AV_INPUT_BUFFER_PADDING_SIZE bytes. + * + * In some specific cases, the encoder may not use the entire buffer allocated by this + * callback. This will be reflected in the size value in the packet once returned by + * avcodec_receive_packet(). + * + * This callback must fill the following fields in the packet: + * - data: alignment requirements for AVPacket apply, if any. Some architectures and + * encoders may benefit from having aligned data. + * - buf: must contain a pointer to an AVBufferRef structure. The packet's + * data pointer must be contained in it. See: av_buffer_create(), av_buffer_alloc(), + * and av_buffer_ref(). + * + * If AV_CODEC_CAP_DR1 is not set then get_encode_buffer() must call + * avcodec_default_get_encode_buffer() instead of providing a buffer allocated by + * some other means. + * + * The flags field may contain a combination of AV_GET_ENCODE_BUFFER_FLAG_ flags. + * They may be used for example to hint what use the buffer may get after being + * created. + * Implementations of this callback may ignore flags they don't understand. + * If AV_GET_ENCODE_BUFFER_FLAG_REF is set in flags then the packet may be reused + * (read and/or written to if it is writable) later by libavcodec. + * + * This callback must be thread-safe, as when frame threading is used, it may + * be called from multiple threads simultaneously. + * + * @see avcodec_default_get_encode_buffer() + * + * - encoding: Set by libavcodec, user can override. + * - decoding: unused + */ + int (*get_encode_buffer)(struct AVCodecContext *s, AVPacket *pkt, int flags); + + /** + * Audio channel layout. + * - encoding: must be set by the caller, to one of AVCodec.ch_layouts. + * - decoding: may be set by the caller if known e.g. from the container. + * The decoder can then override during decoding as needed. + */ + AVChannelLayout ch_layout; +} AVCodecContext; + +/** + * @defgroup lavc_hwaccel AVHWAccel + * + * @note Nothing in this structure should be accessed by the user. At some + * point in future it will not be externally visible at all. + * + * @{ + */ +typedef struct AVHWAccel { + /** + * Name of the hardware accelerated codec. + * The name is globally unique among encoders and among decoders (but an + * encoder and a decoder can share the same name). + */ + const char *name; + + /** + * Type of codec implemented by the hardware accelerator. + * + * See AVMEDIA_TYPE_xxx + */ + enum AVMediaType type; + + /** + * Codec implemented by the hardware accelerator. + * + * See AV_CODEC_ID_xxx + */ + enum AVCodecID id; + + /** + * Supported pixel format. + * + * Only hardware accelerated formats are supported here. + */ + enum AVPixelFormat pix_fmt; + + /** + * Hardware accelerated codec capabilities. + * see AV_HWACCEL_CODEC_CAP_* + */ + int capabilities; + + /***************************************************************** + * 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. + ***************************************************************** + */ + + /** + * Allocate a custom buffer + */ + int (*alloc_frame)(AVCodecContext *avctx, AVFrame *frame); + + /** + * Called at the beginning of each frame or field picture. + * + * Meaningful frame information (codec specific) is guaranteed to + * be parsed at this point. This function is mandatory. + * + * Note that buf can be NULL along with buf_size set to 0. + * Otherwise, this means the whole frame is available at this point. + * + * @param avctx the codec context + * @param buf the frame data buffer base + * @param buf_size the size of the frame in bytes + * @return zero if successful, a negative value otherwise + */ + int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); + + /** + * Callback for parameter data (SPS/PPS/VPS etc). + * + * Useful for hardware decoders which keep persistent state about the + * video parameters, and need to receive any changes to update that state. + * + * @param avctx the codec context + * @param type the nal unit type + * @param buf the nal unit data buffer + * @param buf_size the size of the nal unit in bytes + * @return zero if successful, a negative value otherwise + */ + int (*decode_params)(AVCodecContext *avctx, int type, const uint8_t *buf, uint32_t buf_size); + + /** + * Callback for each slice. + * + * Meaningful slice information (codec specific) is guaranteed to + * be parsed at this point. This function is mandatory. + * + * @param avctx the codec context + * @param buf the slice data buffer base + * @param buf_size the size of the slice in bytes + * @return zero if successful, a negative value otherwise + */ + int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size); + + /** + * Called at the end of each frame or field picture. + * + * The whole picture is parsed at this point and can now be sent + * to the hardware accelerator. This function is mandatory. + * + * @param avctx the codec context + * @return zero if successful, a negative value otherwise + */ + int (*end_frame)(AVCodecContext *avctx); + + /** + * Size of per-frame hardware accelerator private data. + * + * Private data is allocated with av_mallocz() before + * AVCodecContext.get_buffer() and deallocated after + * AVCodecContext.release_buffer(). + */ + int frame_priv_data_size; + + /** + * Initialize the hwaccel private data. + * + * This will be called from ff_get_format(), after hwaccel and + * hwaccel_context are set and the hwaccel private data in AVCodecInternal + * is allocated. + */ + int (*init)(AVCodecContext *avctx); + + /** + * Uninitialize the hwaccel private data. + * + * This will be called from get_format() or avcodec_close(), after hwaccel + * and hwaccel_context are already uninitialized. + */ + int (*uninit)(AVCodecContext *avctx); + + /** + * Size of the private data to allocate in + * AVCodecInternal.hwaccel_priv_data. + */ + int priv_data_size; + + /** + * Internal hwaccel capabilities. + */ + int caps_internal; + + /** + * Fill the given hw_frames context with current codec parameters. Called + * from get_format. Refer to avcodec_get_hw_frames_parameters() for + * details. + * + * This CAN be called before AVHWAccel.init is called, and you must assume + * that avctx->hwaccel_priv_data is invalid. + */ + int (*frame_params)(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx); +} AVHWAccel; + +/** + * HWAccel is experimental and is thus avoided in favor of non experimental + * codecs + */ +#define AV_HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200 + +/** + * Hardware acceleration should be used for decoding even if the codec level + * used is unknown or higher than the maximum supported level reported by the + * hardware driver. + * + * It's generally a good idea to pass this flag unless you have a specific + * reason not to, as hardware tends to under-report supported levels. + */ +#define AV_HWACCEL_FLAG_IGNORE_LEVEL (1 << 0) + +/** + * Hardware acceleration can output YUV pixel formats with a different chroma + * sampling than 4:2:0 and/or other than 8 bits per component. + */ +#define AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH (1 << 1) + +/** + * Hardware acceleration should still be attempted for decoding when the + * codec profile does not match the reported capabilities of the hardware. + * + * For example, this can be used to try to decode baseline profile H.264 + * streams in hardware - it will often succeed, because many streams marked + * as baseline profile actually conform to constrained baseline profile. + * + * @warning If the stream is actually not supported then the behaviour is + * undefined, and may include returning entirely incorrect output + * while indicating success. + */ +#define AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH (1 << 2) + +/** + * @} + */ + +enum AVSubtitleType { + SUBTITLE_NONE, + + SUBTITLE_BITMAP, ///< A bitmap, pict will be set + + /** + * Plain text, the text field must be set by the decoder and is + * authoritative. ass and pict fields may contain approximations. + */ + SUBTITLE_TEXT, + + /** + * Formatted text, the ass field must be set by the decoder and is + * authoritative. pict and text fields may contain approximations. + */ + SUBTITLE_ASS, +}; + +#define AV_SUBTITLE_FLAG_FORCED 0x00000001 + +typedef struct AVSubtitleRect { + int x; ///< top left corner of pict, undefined when pict is not set + int y; ///< top left corner of pict, undefined when pict is not set + int w; ///< width of pict, undefined when pict is not set + int h; ///< height of pict, undefined when pict is not set + int nb_colors; ///< number of colors in pict, undefined when pict is not set + + /** + * data+linesize for the bitmap of this subtitle. + * Can be set for text/ass as well once they are rendered. + */ + uint8_t *data[4]; + int linesize[4]; + + enum AVSubtitleType type; + + char *text; ///< 0 terminated plain UTF-8 text + + /** + * 0 terminated ASS/SSA compatible event line. + * The presentation of this is unaffected by the other values in this + * struct. + */ + char *ass; + + int flags; +} AVSubtitleRect; + +typedef struct AVSubtitle { + uint16_t format; /* 0 = graphics */ + uint32_t start_display_time; /* relative to packet pts, in ms */ + uint32_t end_display_time; /* relative to packet pts, in ms */ + unsigned num_rects; + AVSubtitleRect **rects; + int64_t pts; ///< Same as packet pts, in AV_TIME_BASE +} AVSubtitle; + +/** + * Return the LIBAVCODEC_VERSION_INT constant. + */ +unsigned avcodec_version(void); + +/** + * Return the libavcodec build-time configuration. + */ +const char *avcodec_configuration(void); + +/** + * Return the libavcodec license. + */ +const char *avcodec_license(void); + +/** + * Allocate an AVCodecContext and set its fields to default values. The + * resulting struct should be freed with avcodec_free_context(). + * + * @param codec if non-NULL, allocate private data and initialize defaults + * for the given codec. It is illegal to then call avcodec_open2() + * with a different codec. + * If NULL, then the codec-specific defaults won't be initialized, + * which may result in suboptimal default settings (this is + * important mainly for encoders, e.g. libx264). + * + * @return An AVCodecContext filled with default values or NULL on failure. + */ +AVCodecContext *avcodec_alloc_context3(const AVCodec *codec); + +/** + * Free the codec context and everything associated with it and write NULL to + * the provided pointer. + */ +void avcodec_free_context(AVCodecContext **avctx); + +/** + * Get the AVClass for AVCodecContext. It can be used in combination with + * AV_OPT_SEARCH_FAKE_OBJ for examining options. + * + * @see av_opt_find(). + */ +const AVClass *avcodec_get_class(void); + +#if FF_API_GET_FRAME_CLASS +/** + * @deprecated This function should not be used. + */ +attribute_deprecated +const AVClass *avcodec_get_frame_class(void); +#endif + +/** + * Get the AVClass for AVSubtitleRect. It can be used in combination with + * AV_OPT_SEARCH_FAKE_OBJ for examining options. + * + * @see av_opt_find(). + */ +const AVClass *avcodec_get_subtitle_rect_class(void); + +/** + * Fill the parameters struct based on the values from the supplied codec + * context. Any allocated fields in par are freed and replaced with duplicates + * of the corresponding fields in codec. + * + * @return >= 0 on success, a negative AVERROR code on failure + */ +int avcodec_parameters_from_context(AVCodecParameters *par, + const AVCodecContext *codec); + +/** + * Fill the codec context based on the values from the supplied codec + * parameters. Any allocated fields in codec that have a corresponding field in + * par are freed and replaced with duplicates of the corresponding field in par. + * Fields in codec that do not have a counterpart in par are not touched. + * + * @return >= 0 on success, a negative AVERROR code on failure. + */ +int avcodec_parameters_to_context(AVCodecContext *codec, + const AVCodecParameters *par); + +/** + * Initialize the AVCodecContext to use the given AVCodec. Prior to using this + * function the context has to be allocated with avcodec_alloc_context3(). + * + * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), + * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for + * retrieving a codec. + * + * @note Always call this function before using decoding routines (such as + * @ref avcodec_receive_frame()). + * + * @code + * av_dict_set(&opts, "b", "2.5M", 0); + * codec = avcodec_find_decoder(AV_CODEC_ID_H264); + * if (!codec) + * exit(1); + * + * context = avcodec_alloc_context3(codec); + * + * if (avcodec_open2(context, codec, opts) < 0) + * exit(1); + * @endcode + * + * @param avctx The context to initialize. + * @param codec The codec to open this context for. If a non-NULL codec has been + * previously passed to avcodec_alloc_context3() or + * for this context, then this parameter MUST be either NULL or + * equal to the previously passed codec. + * @param options A dictionary filled with AVCodecContext and codec-private options. + * On return this object will be filled with options that were not found. + * + * @return zero on success, a negative value on error + * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(), + * av_dict_set(), av_opt_find(). + */ +int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options); + +/** + * Close a given AVCodecContext and free all the data associated with it + * (but not the AVCodecContext itself). + * + * Calling this function on an AVCodecContext that hasn't been opened will free + * the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL + * codec. Subsequent calls will do nothing. + * + * @note Do not use this function. Use avcodec_free_context() to destroy a + * codec context (either open or closed). Opening and closing a codec context + * multiple times is not supported anymore -- use multiple codec contexts + * instead. + */ +int avcodec_close(AVCodecContext *avctx); + +/** + * Free all allocated data in the given subtitle struct. + * + * @param sub AVSubtitle to free. + */ +void avsubtitle_free(AVSubtitle *sub); + +/** + * @} + */ + +/** + * @addtogroup lavc_decoding + * @{ + */ + +/** + * The default callback for AVCodecContext.get_buffer2(). It is made public so + * it can be called by custom get_buffer2() implementations for decoders without + * AV_CODEC_CAP_DR1 set. + */ +int avcodec_default_get_buffer2(AVCodecContext *s, AVFrame *frame, int flags); + +/** + * The default callback for AVCodecContext.get_encode_buffer(). It is made public so + * it can be called by custom get_encode_buffer() implementations for encoders without + * AV_CODEC_CAP_DR1 set. + */ +int avcodec_default_get_encode_buffer(AVCodecContext *s, AVPacket *pkt, int flags); + +/** + * Modify width and height values so that they will result in a memory + * buffer that is acceptable for the codec if you do not use any horizontal + * padding. + * + * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened. + */ +void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height); + +/** + * Modify width and height values so that they will result in a memory + * buffer that is acceptable for the codec if you also ensure that all + * line sizes are a multiple of the respective linesize_align[i]. + * + * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened. + */ +void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height, + int linesize_align[AV_NUM_DATA_POINTERS]); + +/** + * Converts AVChromaLocation to swscale x/y chroma position. + * + * The positions represent the chroma (0,0) position in a coordinates system + * with luma (0,0) representing the origin and luma(1,1) representing 256,256 + * + * @param xpos horizontal chroma sample position + * @param ypos vertical chroma sample position + */ +int avcodec_enum_to_chroma_pos(int *xpos, int *ypos, enum AVChromaLocation pos); + +/** + * Converts swscale x/y chroma position to AVChromaLocation. + * + * The positions represent the chroma (0,0) position in a coordinates system + * with luma (0,0) representing the origin and luma(1,1) representing 256,256 + * + * @param xpos horizontal chroma sample position + * @param ypos vertical chroma sample position + */ +enum AVChromaLocation avcodec_chroma_pos_to_enum(int xpos, int ypos); + +/** + * Decode a subtitle message. + * Return a negative value on error, otherwise return the number of bytes used. + * If no subtitle could be decompressed, got_sub_ptr is zero. + * Otherwise, the subtitle is stored in *sub. + * Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for + * simplicity, because the performance difference is expected to be negligible + * and reusing a get_buffer written for video codecs would probably perform badly + * due to a potentially very different allocation pattern. + * + * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input + * and output. This means that for some packets they will not immediately + * produce decoded output and need to be flushed at the end of decoding to get + * all the decoded data. Flushing is done by calling this function with packets + * with avpkt->data set to NULL and avpkt->size set to 0 until it stops + * returning subtitles. It is safe to flush even those decoders that are not + * marked with AV_CODEC_CAP_DELAY, then no subtitles will be returned. + * + * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() + * before packets may be fed to the decoder. + * + * @param avctx the codec context + * @param[out] sub The preallocated AVSubtitle in which the decoded subtitle will be stored, + * must be freed with avsubtitle_free if *got_sub_ptr is set. + * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero. + * @param[in] avpkt The input AVPacket containing the input buffer. + */ +int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, + int *got_sub_ptr, + AVPacket *avpkt); + +/** + * Supply raw packet data as input to a decoder. + * + * Internally, this call will copy relevant AVCodecContext fields, which can + * influence decoding per-packet, and apply them when the packet is actually + * decoded. (For example AVCodecContext.skip_frame, which might direct the + * decoder to drop the frame contained by the packet sent with this function.) + * + * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE + * larger than the actual read bytes because some optimized bitstream + * readers read 32 or 64 bits at once and could read over the end. + * + * @note The AVCodecContext MUST have been opened with @ref avcodec_open2() + * before packets may be fed to the decoder. + * + * @param avctx codec context + * @param[in] avpkt The input AVPacket. Usually, this will be a single video + * frame, or several complete audio frames. + * Ownership of the packet remains with the caller, and the + * decoder will not write to the packet. The decoder may create + * a reference to the packet data (or copy it if the packet is + * not reference-counted). + * Unlike with older APIs, the packet is always fully consumed, + * and if it contains multiple frames (e.g. some audio codecs), + * will require you to call avcodec_receive_frame() multiple + * times afterwards before you can send a new packet. + * It can be NULL (or an AVPacket with data set to NULL and + * size set to 0); in this case, it is considered a flush + * packet, which signals the end of the stream. Sending the + * first flush packet will return success. Subsequent ones are + * unnecessary and will return AVERROR_EOF. If the decoder + * still has frames buffered, it will return them after sending + * a flush packet. + * + * @return 0 on success, otherwise negative error code: + * AVERROR(EAGAIN): input is not accepted in the current state - user + * must read output with avcodec_receive_frame() (once + * all output is read, the packet should be resent, and + * the call will not fail with EAGAIN). + * AVERROR_EOF: the decoder has been flushed, and no new packets can + * be sent to it (also returned if more than 1 flush + * packet is sent) + * AVERROR(EINVAL): codec not opened, it is an encoder, or requires flush + * AVERROR(ENOMEM): failed to add packet to internal queue, or similar + * other errors: legitimate decoding errors + */ +int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt); + +/** + * Return decoded output data from a decoder or encoder (when the + * AV_CODEC_FLAG_RECON_FRAME flag is used). + * + * @param avctx codec context + * @param frame This will be set to a reference-counted video or audio + * frame (depending on the decoder type) allocated by the + * codec. Note that the function will always call + * av_frame_unref(frame) before doing anything else. + * + * @return + * 0: success, a frame was returned + * AVERROR(EAGAIN): output is not available in this state - user must try + * to send new input + * AVERROR_EOF: the codec has been fully flushed, and there will be + * no more output frames + * AVERROR(EINVAL): codec not opened, or it is an encoder without + * the AV_CODEC_FLAG_RECON_FRAME flag enabled + * AVERROR_INPUT_CHANGED: current decoded frame has changed parameters + * with respect to first decoded frame. Applicable + * when flag AV_CODEC_FLAG_DROPCHANGED is set. + * other negative values: legitimate decoding errors + */ +int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame); + +/** + * Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet() + * to retrieve buffered output packets. + * + * @param avctx codec context + * @param[in] frame AVFrame containing the raw audio or video frame to be encoded. + * Ownership of the frame remains with the caller, and the + * encoder will not write to the frame. The encoder may create + * a reference to the frame data (or copy it if the frame is + * not reference-counted). + * It can be NULL, in which case it is considered a flush + * packet. This signals the end of the stream. If the encoder + * still has packets buffered, it will return them after this + * call. Once flushing mode has been entered, additional flush + * packets are ignored, and sending frames will return + * AVERROR_EOF. + * + * For audio: + * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame + * can have any number of samples. + * If it is not set, frame->nb_samples must be equal to + * avctx->frame_size for all frames except the last. + * The final frame may be smaller than avctx->frame_size. + * @return 0 on success, otherwise negative error code: + * AVERROR(EAGAIN): input is not accepted in the current state - user + * must read output with avcodec_receive_packet() (once + * all output is read, the packet should be resent, and + * the call will not fail with EAGAIN). + * AVERROR_EOF: the encoder has been flushed, and no new frames can + * be sent to it + * AVERROR(EINVAL): codec not opened, it is a decoder, or requires flush + * AVERROR(ENOMEM): failed to add packet to internal queue, or similar + * other errors: legitimate encoding errors + */ +int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame); + +/** + * Read encoded data from the encoder. + * + * @param avctx codec context + * @param avpkt This will be set to a reference-counted packet allocated by the + * encoder. Note that the function will always call + * av_packet_unref(avpkt) before doing anything else. + * @return 0 on success, otherwise negative error code: + * AVERROR(EAGAIN): output is not available in the current state - user + * must try to send input + * AVERROR_EOF: the encoder has been fully flushed, and there will be + * no more output packets + * AVERROR(EINVAL): codec not opened, or it is a decoder + * other errors: legitimate encoding errors + */ +int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt); + +/** + * Create and return a AVHWFramesContext with values adequate for hardware + * decoding. This is meant to get called from the get_format callback, and is + * a helper for preparing a AVHWFramesContext for AVCodecContext.hw_frames_ctx. + * This API is for decoding with certain hardware acceleration modes/APIs only. + * + * The returned AVHWFramesContext is not initialized. The caller must do this + * with av_hwframe_ctx_init(). + * + * Calling this function is not a requirement, but makes it simpler to avoid + * codec or hardware API specific details when manually allocating frames. + * + * Alternatively to this, an API user can set AVCodecContext.hw_device_ctx, + * which sets up AVCodecContext.hw_frames_ctx fully automatically, and makes + * it unnecessary to call this function or having to care about + * AVHWFramesContext initialization at all. + * + * There are a number of requirements for calling this function: + * + * - It must be called from get_format with the same avctx parameter that was + * passed to get_format. Calling it outside of get_format is not allowed, and + * can trigger undefined behavior. + * - The function is not always supported (see description of return values). + * Even if this function returns successfully, hwaccel initialization could + * fail later. (The degree to which implementations check whether the stream + * is actually supported varies. Some do this check only after the user's + * get_format callback returns.) + * - The hw_pix_fmt must be one of the choices suggested by get_format. If the + * user decides to use a AVHWFramesContext prepared with this API function, + * the user must return the same hw_pix_fmt from get_format. + * - The device_ref passed to this function must support the given hw_pix_fmt. + * - After calling this API function, it is the user's responsibility to + * initialize the AVHWFramesContext (returned by the out_frames_ref parameter), + * and to set AVCodecContext.hw_frames_ctx to it. If done, this must be done + * before returning from get_format (this is implied by the normal + * AVCodecContext.hw_frames_ctx API rules). + * - The AVHWFramesContext parameters may change every time time get_format is + * called. Also, AVCodecContext.hw_frames_ctx is reset before get_format. So + * you are inherently required to go through this process again on every + * get_format call. + * - It is perfectly possible to call this function without actually using + * the resulting AVHWFramesContext. One use-case might be trying to reuse a + * previously initialized AVHWFramesContext, and calling this API function + * only to test whether the required frame parameters have changed. + * - Fields that use dynamically allocated values of any kind must not be set + * by the user unless setting them is explicitly allowed by the documentation. + * If the user sets AVHWFramesContext.free and AVHWFramesContext.user_opaque, + * the new free callback must call the potentially set previous free callback. + * This API call may set any dynamically allocated fields, including the free + * callback. + * + * The function will set at least the following fields on AVHWFramesContext + * (potentially more, depending on hwaccel API): + * + * - All fields set by av_hwframe_ctx_alloc(). + * - Set the format field to hw_pix_fmt. + * - Set the sw_format field to the most suited and most versatile format. (An + * implication is that this will prefer generic formats over opaque formats + * with arbitrary restrictions, if possible.) + * - Set the width/height fields to the coded frame size, rounded up to the + * API-specific minimum alignment. + * - Only _if_ the hwaccel requires a pre-allocated pool: set the initial_pool_size + * field to the number of maximum reference surfaces possible with the codec, + * plus 1 surface for the user to work (meaning the user can safely reference + * at most 1 decoded surface at a time), plus additional buffering introduced + * by frame threading. If the hwaccel does not require pre-allocation, the + * field is left to 0, and the decoder will allocate new surfaces on demand + * during decoding. + * - Possibly AVHWFramesContext.hwctx fields, depending on the underlying + * hardware API. + * + * Essentially, out_frames_ref returns the same as av_hwframe_ctx_alloc(), but + * with basic frame parameters set. + * + * The function is stateless, and does not change the AVCodecContext or the + * device_ref AVHWDeviceContext. + * + * @param avctx The context which is currently calling get_format, and which + * implicitly contains all state needed for filling the returned + * AVHWFramesContext properly. + * @param device_ref A reference to the AVHWDeviceContext describing the device + * which will be used by the hardware decoder. + * @param hw_pix_fmt The hwaccel format you are going to return from get_format. + * @param out_frames_ref On success, set to a reference to an _uninitialized_ + * AVHWFramesContext, created from the given device_ref. + * Fields will be set to values required for decoding. + * Not changed if an error is returned. + * @return zero on success, a negative value on error. The following error codes + * have special semantics: + * AVERROR(ENOENT): the decoder does not support this functionality. Setup + * is always manual, or it is a decoder which does not + * support setting AVCodecContext.hw_frames_ctx at all, + * or it is a software format. + * AVERROR(EINVAL): it is known that hardware decoding is not supported for + * this configuration, or the device_ref is not supported + * for the hwaccel referenced by hw_pix_fmt. + */ +int avcodec_get_hw_frames_parameters(AVCodecContext *avctx, + AVBufferRef *device_ref, + enum AVPixelFormat hw_pix_fmt, + AVBufferRef **out_frames_ref); + + + +/** + * @defgroup lavc_parsing Frame parsing + * @{ + */ + +enum AVPictureStructure { + AV_PICTURE_STRUCTURE_UNKNOWN, //< unknown + AV_PICTURE_STRUCTURE_TOP_FIELD, //< coded as top field + AV_PICTURE_STRUCTURE_BOTTOM_FIELD, //< coded as bottom field + AV_PICTURE_STRUCTURE_FRAME, //< coded as frame +}; + +typedef struct AVCodecParserContext { + void *priv_data; + const struct AVCodecParser *parser; + int64_t frame_offset; /* offset of the current frame */ + int64_t cur_offset; /* current offset + (incremented by each av_parser_parse()) */ + int64_t next_frame_offset; /* offset of the next frame */ + /* video info */ + int pict_type; /* XXX: Put it back in AVCodecContext. */ + /** + * This field is used for proper frame duration computation in lavf. + * It signals, how much longer the frame duration of the current frame + * is compared to normal frame duration. + * + * frame_duration = (1 + repeat_pict) * time_base + * + * It is used by codecs like H.264 to display telecined material. + */ + int repeat_pict; /* XXX: Put it back in AVCodecContext. */ + int64_t pts; /* pts of the current frame */ + int64_t dts; /* dts of the current frame */ + + /* private data */ + int64_t last_pts; + int64_t last_dts; + int fetch_timestamp; + +#define AV_PARSER_PTS_NB 4 + int cur_frame_start_index; + int64_t cur_frame_offset[AV_PARSER_PTS_NB]; + int64_t cur_frame_pts[AV_PARSER_PTS_NB]; + int64_t cur_frame_dts[AV_PARSER_PTS_NB]; + + int flags; +#define PARSER_FLAG_COMPLETE_FRAMES 0x0001 +#define PARSER_FLAG_ONCE 0x0002 +/// Set if the parser has a valid file offset +#define PARSER_FLAG_FETCHED_OFFSET 0x0004 +#define PARSER_FLAG_USE_CODEC_TS 0x1000 + + int64_t offset; ///< byte offset from starting packet start + int64_t cur_frame_end[AV_PARSER_PTS_NB]; + + /** + * Set by parser to 1 for key frames and 0 for non-key frames. + * It is initialized to -1, so if the parser doesn't set this flag, + * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames + * will be used. + */ + int key_frame; + + // Timestamp generation support: + /** + * Synchronization point for start of timestamp generation. + * + * Set to >0 for sync point, 0 for no sync point and <0 for undefined + * (default). + * + * For example, this corresponds to presence of H.264 buffering period + * SEI message. + */ + int dts_sync_point; + + /** + * Offset of the current timestamp against last timestamp sync point in + * units of AVCodecContext.time_base. + * + * Set to INT_MIN when dts_sync_point unused. Otherwise, it must + * contain a valid timestamp offset. + * + * Note that the timestamp of sync point has usually a nonzero + * dts_ref_dts_delta, which refers to the previous sync point. Offset of + * the next frame after timestamp sync point will be usually 1. + * + * For example, this corresponds to H.264 cpb_removal_delay. + */ + int dts_ref_dts_delta; + + /** + * Presentation delay of current frame in units of AVCodecContext.time_base. + * + * Set to INT_MIN when dts_sync_point unused. Otherwise, it must + * contain valid non-negative timestamp delta (presentation time of a frame + * must not lie in the past). + * + * This delay represents the difference between decoding and presentation + * time of the frame. + * + * For example, this corresponds to H.264 dpb_output_delay. + */ + int pts_dts_delta; + + /** + * Position of the packet in file. + * + * Analogous to cur_frame_pts/dts + */ + int64_t cur_frame_pos[AV_PARSER_PTS_NB]; + + /** + * Byte position of currently parsed frame in stream. + */ + int64_t pos; + + /** + * Previous frame byte position. + */ + int64_t last_pos; + + /** + * Duration of the current frame. + * For audio, this is in units of 1 / AVCodecContext.sample_rate. + * For all other types, this is in units of AVCodecContext.time_base. + */ + int duration; + + enum AVFieldOrder field_order; + + /** + * Indicate whether a picture is coded as a frame, top field or bottom field. + * + * For example, H.264 field_pic_flag equal to 0 corresponds to + * AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag + * equal to 1 and bottom_field_flag equal to 0 corresponds to + * AV_PICTURE_STRUCTURE_TOP_FIELD. + */ + enum AVPictureStructure picture_structure; + + /** + * Picture number incremented in presentation or output order. + * This field may be reinitialized at the first picture of a new sequence. + * + * For example, this corresponds to H.264 PicOrderCnt. + */ + int output_picture_number; + + /** + * Dimensions of the decoded video intended for presentation. + */ + int width; + int height; + + /** + * Dimensions of the coded video. + */ + int coded_width; + int coded_height; + + /** + * The format of the coded data, corresponds to enum AVPixelFormat for video + * and for enum AVSampleFormat for audio. + * + * Note that a decoder can have considerable freedom in how exactly it + * decodes the data, so the format reported here might be different from the + * one returned by a decoder. + */ + int format; +} AVCodecParserContext; + +typedef struct AVCodecParser { + int codec_ids[7]; /* several codec IDs are permitted */ + int priv_data_size; + int (*parser_init)(AVCodecParserContext *s); + /* This callback never returns an error, a negative value means that + * the frame start was in a previous packet. */ + int (*parser_parse)(AVCodecParserContext *s, + AVCodecContext *avctx, + const uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size); + void (*parser_close)(AVCodecParserContext *s); + int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size); +} AVCodecParser; + +/** + * Iterate over all registered codec parsers. + * + * @param opaque a pointer where libavcodec will store the iteration state. Must + * point to NULL to start the iteration. + * + * @return the next registered codec parser or NULL when the iteration is + * finished + */ +const AVCodecParser *av_parser_iterate(void **opaque); + +AVCodecParserContext *av_parser_init(int codec_id); + +/** + * Parse a packet. + * + * @param s parser context. + * @param avctx codec context. + * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished. + * @param poutbuf_size set to size of parsed buffer or zero if not yet finished. + * @param buf input buffer. + * @param buf_size buffer size in bytes without the padding. I.e. the full buffer + size is assumed to be buf_size + AV_INPUT_BUFFER_PADDING_SIZE. + To signal EOF, this should be 0 (so that the last frame + can be output). + * @param pts input presentation timestamp. + * @param dts input decoding timestamp. + * @param pos input byte position in stream. + * @return the number of bytes of the input bitstream used. + * + * Example: + * @code + * while(in_len){ + * len = av_parser_parse2(myparser, AVCodecContext, &data, &size, + * in_data, in_len, + * pts, dts, pos); + * in_data += len; + * in_len -= len; + * + * if(size) + * decode_frame(data, size); + * } + * @endcode + */ +int av_parser_parse2(AVCodecParserContext *s, + AVCodecContext *avctx, + uint8_t **poutbuf, int *poutbuf_size, + const uint8_t *buf, int buf_size, + int64_t pts, int64_t dts, + int64_t pos); + +void av_parser_close(AVCodecParserContext *s); + +/** + * @} + * @} + */ + +/** + * @addtogroup lavc_encoding + * @{ + */ + +int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size, + const AVSubtitle *sub); + + +/** + * @} + */ + +/** + * @defgroup lavc_misc Utility functions + * @ingroup libavc + * + * Miscellaneous utility functions related to both encoding and decoding + * (or neither). + * @{ + */ + +/** + * @defgroup lavc_misc_pixfmt Pixel formats + * + * Functions for working with pixel formats. + * @{ + */ + +/** + * Return a value representing the fourCC code associated to the + * pixel format pix_fmt, or 0 if no associated fourCC code can be + * found. + */ +unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt); + +/** + * Find the best pixel format to convert to given a certain source pixel + * format. When converting from one pixel format to another, information loss + * may occur. For example, when converting from RGB24 to GRAY, the color + * information will be lost. Similarly, other losses occur when converting from + * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of + * the given pixel formats should be used to suffer the least amount of loss. + * The pixel formats from which it chooses one, are determined by the + * pix_fmt_list parameter. + * + * + * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from + * @param[in] src_pix_fmt source pixel format + * @param[in] has_alpha Whether the source pixel format alpha channel is used. + * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur. + * @return The best pixel format to convert to or -1 if none was found. + */ +enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list, + enum AVPixelFormat src_pix_fmt, + int has_alpha, int *loss_ptr); + +enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt); + +/** + * @} + */ + +void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); + +int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); +int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); +//FIXME func typedef + +/** + * Fill AVFrame audio data and linesize pointers. + * + * The buffer buf must be a preallocated buffer with a size big enough + * to contain the specified samples amount. The filled AVFrame data + * pointers will point to this buffer. + * + * AVFrame extended_data channel pointers are allocated if necessary for + * planar audio. + * + * @param frame the AVFrame + * frame->nb_samples must be set prior to calling the + * function. This function fills in frame->data, + * frame->extended_data, frame->linesize[0]. + * @param nb_channels channel count + * @param sample_fmt sample format + * @param buf buffer to use for frame data + * @param buf_size size of buffer + * @param align plane size sample alignment (0 = default) + * @return >=0 on success, negative error code on failure + * @todo return the size in bytes required to store the samples in + * case of success, at the next libavutil bump + */ +int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels, + enum AVSampleFormat sample_fmt, const uint8_t *buf, + int buf_size, int align); + +/** + * Reset the internal codec state / flush internal buffers. Should be called + * e.g. when seeking or when switching to a different stream. + * + * @note for decoders, this function just releases any references the decoder + * might keep internally, but the caller's references remain valid. + * + * @note for encoders, this function will only do something if the encoder + * declares support for AV_CODEC_CAP_ENCODER_FLUSH. When called, the encoder + * will drain any remaining packets, and can then be re-used for a different + * stream (as opposed to sending a null frame which will leave the encoder + * in a permanent EOF state after draining). This can be desirable if the + * cost of tearing down and replacing the encoder instance is high. + */ +void avcodec_flush_buffers(AVCodecContext *avctx); + +/** + * Return audio frame duration. + * + * @param avctx codec context + * @param frame_bytes size of the frame, or 0 if unknown + * @return frame duration, in samples, if known. 0 if not able to + * determine. + */ +int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes); + +/* memory */ + +/** + * Same behaviour av_fast_malloc but the buffer has additional + * AV_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0. + * + * In addition the whole buffer will initially and after resizes + * be 0-initialized so that no uninitialized data will ever appear. + */ +void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size); + +/** + * Same behaviour av_fast_padded_malloc except that buffer will always + * be 0-initialized after call. + */ +void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size); + +/** + * @return a positive value if s is open (i.e. avcodec_open2() was called on it + * with no corresponding avcodec_close()), 0 otherwise. + */ +int avcodec_is_open(AVCodecContext *s); + +/** + * @} + */ + +#endif /* AVCODEC_AVCODEC_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/avdct.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/avdct.h new file mode 100644 index 00000000..6411fab6 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/avdct.h @@ -0,0 +1,88 @@ +/* + * 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_AVDCT_H +#define AVCODEC_AVDCT_H + +#include "libavutil/opt.h" + +/** + * AVDCT context. + * @note function pointers can be NULL if the specific features have been + * disabled at build time. + */ +typedef struct AVDCT { + const AVClass *av_class; + + void (*idct)(int16_t *block /* align 16 */); + + /** + * IDCT input permutation. + * Several optimized IDCTs need a permutated input (relative to the + * normal order of the reference IDCT). + * This permutation must be performed before the idct_put/add. + * Note, normally this can be merged with the zigzag/alternate scan
+ * An example to avoid confusion: + * - (->decode coeffs -> zigzag reorder -> dequant -> reference IDCT -> ...) + * - (x -> reference DCT -> reference IDCT -> x) + * - (x -> reference DCT -> simple_mmx_perm = idct_permutation + * -> simple_idct_mmx -> x) + * - (-> decode coeffs -> zigzag reorder -> simple_mmx_perm -> dequant + * -> simple_idct_mmx -> ...) + */ + uint8_t idct_permutation[64]; + + void (*fdct)(int16_t *block /* align 16 */); + + + /** + * DCT algorithm. + * must use AVOptions to set this field. + */ + int dct_algo; + + /** + * IDCT algorithm. + * must use AVOptions to set this field. + */ + int idct_algo; + + void (*get_pixels)(int16_t *block /* align 16 */, + const uint8_t *pixels /* align 8 */, + ptrdiff_t line_size); + + int bits_per_sample; + + void (*get_pixels_unaligned)(int16_t *block /* align 16 */, + const uint8_t *pixels, + ptrdiff_t line_size); +} AVDCT; + +/** + * Allocates a AVDCT context. + * This needs to be initialized with avcodec_dct_init() after optionally + * configuring it with AVOptions. + * + * To free it use av_free() + */ +AVDCT *avcodec_dct_alloc(void); +int avcodec_dct_init(AVDCT *); + +const AVClass *avcodec_dct_get_class(void); + +#endif /* AVCODEC_AVDCT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/avfft.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/avfft.h new file mode 100644 index 00000000..0c0f9b8d --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/avfft.h @@ -0,0 +1,118 @@ +/* + * 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_AVFFT_H +#define AVCODEC_AVFFT_H + +/** + * @file + * @ingroup lavc_fft + * FFT functions + */ + +/** + * @defgroup lavc_fft FFT functions + * @ingroup lavc_misc + * + * @{ + */ + +typedef float FFTSample; + +typedef struct FFTComplex { + FFTSample re, im; +} FFTComplex; + +typedef struct FFTContext FFTContext; + +/** + * Set up a complex FFT. + * @param nbits log2 of the length of the input array + * @param inverse if 0 perform the forward transform, if 1 perform the inverse + */ +FFTContext *av_fft_init(int nbits, int inverse); + +/** + * Do the permutation needed BEFORE calling ff_fft_calc(). + */ +void av_fft_permute(FFTContext *s, FFTComplex *z); + +/** + * Do a complex FFT with the parameters defined in av_fft_init(). The + * input data must be permuted before. No 1.0/sqrt(n) normalization is done. + */ +void av_fft_calc(FFTContext *s, FFTComplex *z); + +void av_fft_end(FFTContext *s); + +FFTContext *av_mdct_init(int nbits, int inverse, double scale); +void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); +void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input); +void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); +void av_mdct_end(FFTContext *s); + +/* Real Discrete Fourier Transform */ + +enum RDFTransformType { + DFT_R2C, + IDFT_C2R, + IDFT_R2C, + DFT_C2R, +}; + +typedef struct RDFTContext RDFTContext; + +/** + * Set up a real FFT. + * @param nbits log2 of the length of the input array + * @param trans the type of transform + */ +RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans); +void av_rdft_calc(RDFTContext *s, FFTSample *data); +void av_rdft_end(RDFTContext *s); + +/* Discrete Cosine Transform */ + +typedef struct DCTContext DCTContext; + +enum DCTTransformType { + DCT_II = 0, + DCT_III, + DCT_I, + DST_I, +}; + +/** + * Set up DCT. + * + * @param nbits size of the input array: + * (1 << nbits) for DCT-II, DCT-III and DST-I + * (1 << nbits) + 1 for DCT-I + * @param type the type of transform + * + * @note the first element of the input of DST-I is ignored + */ +DCTContext *av_dct_init(int nbits, enum DCTTransformType type); +void av_dct_calc(DCTContext *s, FFTSample *data); +void av_dct_end (DCTContext *s); + +/** + * @} + */ + +#endif /* AVCODEC_AVFFT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/bsf.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/bsf.h new file mode 100644 index 00000000..69d91a16 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/bsf.h @@ -0,0 +1,328 @@ +/* + * Bitstream filters public API + * + * 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_BSF_H +#define AVCODEC_BSF_H + +#include "libavutil/dict.h" +#include "libavutil/log.h" +#include "libavutil/rational.h" + +#include "codec_id.h" +#include "codec_par.h" +#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(). + * @{ + */ + +/** + * The bitstream filter state. + * + * This struct must be allocated with av_bsf_alloc() and freed with + * av_bsf_free(). + * + * The fields in the struct will only be changed (by the caller or by the + * filter) as described in their documentation, and are to be considered + * immutable otherwise. + */ +typedef struct AVBSFContext { + /** + * A class for logging and AVOptions + */ + const AVClass *av_class; + + /** + * The bitstream filter this context is an instance of. + */ + const struct AVBitStreamFilter *filter; + + /** + * Opaque filter-specific private data. If filter->priv_class is non-NULL, + * this is an AVOptions-enabled struct. + */ + void *priv_data; + + /** + * Parameters of the input stream. This field is allocated in + * av_bsf_alloc(), it needs to be filled by the caller before + * av_bsf_init(). + */ + AVCodecParameters *par_in; + + /** + * Parameters of the output stream. This field is allocated in + * av_bsf_alloc(), it is set by the filter in av_bsf_init(). + */ + AVCodecParameters *par_out; + + /** + * The timebase used for the timestamps of the input packets. Set by the + * caller before av_bsf_init(). + */ + AVRational time_base_in; + + /** + * The timebase used for the timestamps of the output packets. Set by the + * filter in av_bsf_init(). + */ + AVRational time_base_out; +} AVBSFContext; + +typedef struct AVBitStreamFilter { + const char *name; + + /** + * A list of codec ids supported by the filter, terminated by + * AV_CODEC_ID_NONE. + * May be NULL, in that case the bitstream filter works with any codec id. + */ + const enum AVCodecID *codec_ids; + + /** + * A class for the private data, used to declare bitstream filter private + * AVOptions. This field is NULL for bitstream filters that do not declare + * any options. + * + * If this field is non-NULL, the first member of the filter private data + * must be a pointer to AVClass, which will be set by libavcodec generic + * code to this class. + */ + const AVClass *priv_class; +} AVBitStreamFilter; + +/** + * @return a bitstream filter with the specified name or NULL if no such + * bitstream filter exists. + */ +const AVBitStreamFilter *av_bsf_get_by_name(const char *name); + +/** + * Iterate over all registered bitstream filters. + * + * @param opaque a pointer where libavcodec will store the iteration state. Must + * point to NULL to start the iteration. + * + * @return the next registered bitstream filter or NULL when the iteration is + * finished + */ +const AVBitStreamFilter *av_bsf_iterate(void **opaque); + +/** + * Allocate a context for a given bitstream filter. The caller must fill in the + * context parameters as described in the documentation and then call + * 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. + * + * @return 0 on success, a negative AVERROR code on failure + */ +int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **ctx); + +/** + * Prepare the filter for use, after all the parameters and options have been + * set. + */ +int av_bsf_init(AVBSFContext *ctx); + +/** + * Submit a packet for filtering. + * + * After sending each packet, the filter must be completely drained by calling + * av_bsf_receive_packet() repeatedly until it returns AVERROR(EAGAIN) or + * AVERROR_EOF. + * + * @param pkt the packet to filter. The bitstream filter will take ownership of + * the packet and reset the contents of pkt. pkt is not touched if an error occurs. + * If pkt is empty (i.e. NULL, or pkt->data is NULL and pkt->side_data_elems zero), + * it signals the end of the stream (i.e. no more non-empty packets will be sent; + * 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. + */ +int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt); + +/** + * Retrieve a filtered packet. + * + * @param[out] pkt this struct will be filled with the contents of the filtered + * packet. It is owned by the caller and must be freed using + * av_packet_unref() when it is no longer needed. + * This parameter should be "clean" (i.e. freshly allocated + * with av_packet_alloc() or unreffed with av_packet_unref()) + * when this function is called. If this function returns + * successfully, the contents of pkt will be completely + * 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. + * + * @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 + * repeatedly until it stops returning 0. It is also possible for a filter to + * output fewer packets than were sent to it, so this function may return + * AVERROR(EAGAIN) immediately after a successful av_bsf_send_packet() call. + */ +int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt); + +/** + * Reset the internal bitstream filter state. Should be called e.g. when seeking. + */ +void av_bsf_flush(AVBSFContext *ctx); + +/** + * Free a bitstream filter context and everything associated with it; write NULL + * into the supplied pointer. + */ +void av_bsf_free(AVBSFContext **ctx); + +/** + * Get the AVClass for AVBSFContext. It can be used in combination with + * AV_OPT_SEARCH_FAKE_OBJ for examining options. + * + * @see av_opt_find(). + */ +const AVClass *av_bsf_get_class(void); + +/** + * Structure for chain/list of bitstream filters. + * Empty list can be allocated by av_bsf_list_alloc(). + */ +typedef struct AVBSFList AVBSFList; + +/** + * Allocate empty list of bitstream filters. + * The list must be later freed by av_bsf_list_free() + * or finalized by av_bsf_list_finalize(). + * + * @return Pointer to @ref AVBSFList on success, NULL in case of failure + */ +AVBSFList *av_bsf_list_alloc(void); + +/** + * Free list of bitstream filters. + * + * @param lst Pointer to pointer returned by av_bsf_list_alloc() + */ +void av_bsf_list_free(AVBSFList **lst); + +/** + * Append bitstream filter to the list of bitstream filters. + * + * @param lst List to append to + * @param bsf Filter context to be appended + * + * @return >=0 on success, negative AVERROR in case of failure + */ +int av_bsf_list_append(AVBSFList *lst, AVBSFContext *bsf); + +/** + * Construct new bitstream filter context given it's name and options + * and append it to the list of bitstream filters. + * + * @param lst List to append to + * @param bsf_name Name of the bitstream filter + * @param options Options for the bitstream filter, can be set to NULL + * + * @return >=0 on success, negative AVERROR in case of failure + */ +int av_bsf_list_append2(AVBSFList *lst, const char * bsf_name, AVDictionary **options); +/** + * Finalize list of bitstream filters. + * + * This function will transform @ref AVBSFList to single @ref AVBSFContext, + * so the whole chain of bitstream filters can be treated as single filter + * freshly allocated by av_bsf_alloc(). + * If the call is successful, @ref AVBSFList structure is freed and lst + * will be set to NULL. In case of failure, caller is responsible for + * freeing the structure by av_bsf_list_free() + * + * @param lst Filter list structure to be transformed + * @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure + * representing the chain of bitstream filters + * + * @return >=0 on success, negative AVERROR in case of failure + */ +int av_bsf_list_finalize(AVBSFList **lst, AVBSFContext **bsf); + +/** + * Parse string describing list of bitstream filters and create single + * @ref AVBSFContext describing the whole chain of bitstream filters. + * Resulting @ref AVBSFContext can be treated as any other @ref AVBSFContext freshly + * allocated by av_bsf_alloc(). + * + * @param str String describing chain of bitstream filters in format + * `bsf1[=opt1=val1:opt2=val2][,bsf2]` + * @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure + * representing the chain of bitstream filters + * + * @return >=0 on success, negative AVERROR in case of failure + */ +int av_bsf_list_parse_str(const char *str, AVBSFContext **bsf); + +/** + * Get null/pass-through bitstream filter. + * + * @param[out] bsf Pointer to be set to new instance of pass-through bitstream filter + * + * @return + */ +int av_bsf_get_null_filter(AVBSFContext **bsf); + +/** + * @} + */ + +#endif // AVCODEC_BSF_H diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/codec.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/codec.h new file mode 100644 index 00000000..77a1a3f5 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/codec.h @@ -0,0 +1,395 @@ +/* + * AVCodec public API + * + * 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_H +#define AVCODEC_CODEC_H + +#include + +#include "libavutil/avutil.h" +#include "libavutil/hwcontext.h" +#include "libavutil/log.h" +#include "libavutil/pixfmt.h" +#include "libavutil/rational.h" +#include "libavutil/samplefmt.h" + +#include "libavcodec/codec_id.h" +#include "libavcodec/version_major.h" + +/** + * @addtogroup lavc_core + * @{ + */ + +/** + * Decoder can use draw_horiz_band callback. + */ +#define AV_CODEC_CAP_DRAW_HORIZ_BAND (1 << 0) +/** + * Codec uses get_buffer() or get_encode_buffer() for allocating buffers and + * supports custom allocators. + * If not set, it might not use get_buffer() or get_encode_buffer() at all, or + * use operations that assume the buffer was allocated by + * 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. + * + * NOTE: If this flag is not set, the codec is guaranteed to never be fed with + * with NULL data. The user can still send NULL data to the public encode + * or decode function, but libavcodec will not pass it along to the codec + * unless this flag is set. + * + * Decoders: + * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL, + * avpkt->size=0 at the end to get the delayed data until the decoder no longer + * returns frames. + * + * Encoders: + * The encoder needs to be fed with NULL data at the end of encoding until the + * encoder no longer returns data. + * + * NOTE: For encoders implementing the AVCodec.encode2() function, setting this + * flag also means that the encoder must set the pts and duration for + * each output packet. If this flag is not set, the pts and duration will + * be determined by libavcodec from the input frame. + */ +#define AV_CODEC_CAP_DELAY (1 << 5) +/** + * Codec can be fed a final frame with a smaller size. + * This can be used to prevent truncation of the last audio samples. + */ +#define AV_CODEC_CAP_SMALL_LAST_FRAME (1 << 6) + +/** + * Codec can output multiple frames per AVPacket + * Normally demuxers return one frame at a time, demuxers which do not do + * are connected to a parser to split what they return into proper frames. + * This flag is reserved to the very rare category of codecs which have a + * bitstream that cannot be split into frames without timeconsuming + * operations like full decoding. Demuxers carrying such bitstreams thus + * may return multiple frames in a packet. This has many disadvantages like + * prohibiting stream copy in many cases thus it should only be considered + * as a last resort. + */ +#define AV_CODEC_CAP_SUBFRAMES (1 << 8) +/** + * Codec is experimental and is thus avoided in favor of non experimental + * encoders + */ +#define AV_CODEC_CAP_EXPERIMENTAL (1 << 9) +/** + * Codec should fill in channel configuration and samplerate instead of container + */ +#define AV_CODEC_CAP_CHANNEL_CONF (1 << 10) +/** + * Codec supports frame-level multithreading. + */ +#define AV_CODEC_CAP_FRAME_THREADS (1 << 12) +/** + * Codec supports slice-based (or partition-based) multithreading. + */ +#define AV_CODEC_CAP_SLICE_THREADS (1 << 13) +/** + * Codec supports changed parameters at any point. + */ +#define AV_CODEC_CAP_PARAM_CHANGE (1 << 14) +/** + * Codec supports multithreading through a method other than slice- or + * frame-level multithreading. Typically this marks wrappers around + * multithreading-capable external libraries. + */ +#define AV_CODEC_CAP_OTHER_THREADS (1 << 15) +#if FF_API_AUTO_THREADS +#define AV_CODEC_CAP_AUTO_THREADS AV_CODEC_CAP_OTHER_THREADS +#endif +/** + * Audio encoder supports receiving a different number of samples in each call. + */ +#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE (1 << 16) +/** + * Decoder is not a preferred choice for probing. + * This indicates that the decoder is not a good choice for probing. + * It could for example be an expensive to spin up hardware decoder, + * or it could simply not provide a lot of useful information about + * the stream. + * A decoder marked with this flag should only be used as last resort + * choice for probing. + */ +#define AV_CODEC_CAP_AVOID_PROBING (1 << 17) + +#if FF_API_UNUSED_CODEC_CAPS +/** + * Deprecated and unused. Use AVCodecDescriptor.props instead + */ +#define AV_CODEC_CAP_INTRA_ONLY 0x40000000 +/** + * Deprecated and unused. Use AVCodecDescriptor.props instead + */ +#define AV_CODEC_CAP_LOSSLESS 0x80000000 +#endif + +/** + * Codec is backed by a hardware implementation. Typically used to + * identify a non-hwaccel hardware decoder. For information about hwaccels, use + * avcodec_get_hw_config() instead. + */ +#define AV_CODEC_CAP_HARDWARE (1 << 18) + +/** + * Codec is potentially backed by a hardware implementation, but not + * necessarily. This is used instead of AV_CODEC_CAP_HARDWARE, if the + * implementation provides some sort of internal fallback. + */ +#define AV_CODEC_CAP_HYBRID (1 << 19) + +/** + * This codec takes the reordered_opaque field from input AVFrames + * and returns it in the corresponding field in AVCodecContext after + * encoding. + */ +#define AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE (1 << 20) + +/** + * This encoder can be flushed using avcodec_flush_buffers(). If this flag is + * not set, the encoder must be closed and reopened to ensure that no frames + * remain pending. + */ +#define AV_CODEC_CAP_ENCODER_FLUSH (1 << 21) + +/** + * The encoder is able to output reconstructed frame data, i.e. raw frames that + * would be produced by decoding the encoded bitstream. + * + * Reconstructed frame output is enabled by the AV_CODEC_FLAG_RECON_FRAME flag. + */ +#define AV_CODEC_CAP_ENCODER_RECON_FRAME (1 << 22) + +/** + * AVProfile. + */ +typedef struct AVProfile { + int profile; + const char *name; ///< short name for the profile +} AVProfile; + +/** + * AVCodec. + */ +typedef struct AVCodec { + /** + * Name of the codec implementation. + * The name is globally unique among encoders and among decoders (but an + * encoder and a decoder can share the same name). + * This is the primary way to find a codec from the user perspective. + */ + const char *name; + /** + * Descriptive name for the codec, meant to be more human readable than name. + * You should use the NULL_IF_CONFIG_SMALL() macro to define it. + */ + const char *long_name; + enum AVMediaType type; + enum AVCodecID id; + /** + * Codec capabilities. + * 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 + 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} + + /** + * Group name of the codec implementation. + * This is a short symbolic name of the wrapper backing this codec. A + * wrapper uses some kind of external implementation for the codec, such + * as an external library, or a codec implementation provided by the OS or + * the hardware. + * If this field is NULL, this is a builtin, libavcodec native codec. + * If non-NULL, this will be the suffix in AVCodec.name in most cases + * (usually AVCodec.name will be of the form "_"). + */ + const char *wrapper_name; + + /** + * Array of supported channel layouts, terminated with a zeroed layout. + */ + const AVChannelLayout *ch_layouts; +} AVCodec; + +/** + * Iterate over all registered codecs. + * + * @param opaque a pointer where libavcodec will store the iteration state. Must + * point to NULL to start the iteration. + * + * @return the next registered codec or NULL when the iteration is + * finished + */ +const AVCodec *av_codec_iterate(void **opaque); + +/** + * Find a registered decoder with a matching codec ID. + * + * @param id AVCodecID of the requested decoder + * @return A decoder if one was found, NULL otherwise. + */ +const AVCodec *avcodec_find_decoder(enum AVCodecID id); + +/** + * Find a registered decoder with the specified name. + * + * @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); + +/** + * Find a registered encoder with a matching codec ID. + * + * @param id AVCodecID of the requested encoder + * @return An encoder if one was found, NULL otherwise. + */ +const AVCodec *avcodec_find_encoder(enum AVCodecID id); + +/** + * Find a registered encoder with the specified name. + * + * @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); +/** + * @return a non-zero number if codec is an encoder, zero otherwise + */ +int av_codec_is_encoder(const AVCodec *codec); + +/** + * @return a non-zero number if codec is a decoder, zero otherwise + */ +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. + * + * When selecting this format, AVCodecContext.hw_device_ctx should + * have been set to a device of the specified type before calling + * avcodec_open2(). + */ + AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX = 0x01, + /** + * The codec supports this format via the hw_frames_ctx interface. + * + * When selecting this format for a decoder, + * AVCodecContext.hw_frames_ctx should be set to a suitable frames + * context inside the get_format() callback. The frames context + * must have been created on a device of the specified type. + * + * When selecting this format for an encoder, + * AVCodecContext.hw_frames_ctx should be set to the context which + * will be used for the input frames before calling avcodec_open2(). + */ + AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX = 0x02, + /** + * The codec supports this format by some internal method. + * + * This format can be selected without any additional configuration - + * no device or frames context is required. + */ + AV_CODEC_HW_CONFIG_METHOD_INTERNAL = 0x04, + /** + * The codec supports this format by some ad-hoc method. + * + * Additional settings and/or function calls are required. See the + * codec-specific documentation for details. (Methods requiring + * this sort of configuration are deprecated and others should be + * used in preference.) + */ + AV_CODEC_HW_CONFIG_METHOD_AD_HOC = 0x08, +}; + +typedef struct AVCodecHWConfig { + /** + * For decoders, a hardware pixel format which that decoder may be + * able to decode to if suitable hardware is available. + * + * For encoders, a pixel format which the encoder may be able to + * accept. If set to AV_PIX_FMT_NONE, this applies to all pixel + * formats supported by the codec. + */ + enum AVPixelFormat pix_fmt; + /** + * Bit set of AV_CODEC_HW_CONFIG_METHOD_* flags, describing the possible + * setup methods which can be used with this configuration. + */ + int methods; + /** + * The device type associated with the configuration. + * + * Must be set for AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX and + * AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX, otherwise unused. + */ + enum AVHWDeviceType device_type; +} AVCodecHWConfig; + +/** + * Retrieve supported hardware configurations for a codec. + * + * Values of index from zero to some maximum return the indexed configuration + * descriptor; all other values return NULL. If the codec does not support + * any hardware configurations then it will always return NULL. + */ +const AVCodecHWConfig *avcodec_get_hw_config(const AVCodec *codec, int index); + +/** + * @} + */ + +#endif /* AVCODEC_CODEC_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/codec_desc.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/codec_desc.h new file mode 100644 index 00000000..126b52df --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/codec_desc.h @@ -0,0 +1,128 @@ +/* + * Codec descriptors public API + * + * 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_DESC_H +#define AVCODEC_CODEC_DESC_H + +#include "libavutil/avutil.h" + +#include "codec_id.h" + +/** + * @addtogroup lavc_core + * @{ + */ + +/** + * This struct describes the properties of a single codec described by an + * AVCodecID. + * @see avcodec_descriptor_get() + */ +typedef struct AVCodecDescriptor { + enum AVCodecID id; + enum AVMediaType type; + /** + * Name of the codec described by this descriptor. It is non-empty and + * unique for each codec descriptor. It should contain alphanumeric + * characters and '_' only. + */ + const char *name; + /** + * A more descriptive name for this codec. May be NULL. + */ + const char *long_name; + /** + * Codec properties, a combination of AV_CODEC_PROP_* flags. + */ + int props; + /** + * MIME type(s) associated with the codec. + * May be NULL; if not, a NULL-terminated array of MIME types. + * The first item is always non-NULL and is the preferred MIME type. + */ + const char *const *mime_types; + /** + * If non-NULL, an array of profiles recognized for this codec. + * Terminated with FF_PROFILE_UNKNOWN. + */ + const struct AVProfile *profiles; +} AVCodecDescriptor; + +/** + * Codec uses only intra compression. + * Video and audio codecs only. + */ +#define AV_CODEC_PROP_INTRA_ONLY (1 << 0) +/** + * Codec supports lossy compression. Audio and video codecs only. + * @note a codec may support both lossy and lossless + * compression modes + */ +#define AV_CODEC_PROP_LOSSY (1 << 1) +/** + * Codec supports lossless compression. Audio and video codecs only. + */ +#define AV_CODEC_PROP_LOSSLESS (1 << 2) +/** + * Codec supports frame reordering. That is, the coded order (the order in which + * the encoded packets are output by the encoders / stored / input to the + * decoders) may be different from the presentation order of the corresponding + * frames. + * + * For codecs that do not have this property set, PTS and DTS should always be + * equal. + */ +#define AV_CODEC_PROP_REORDER (1 << 3) +/** + * Subtitle codec is bitmap based + * Decoded AVSubtitle data can be read from the AVSubtitleRect->pict field. + */ +#define AV_CODEC_PROP_BITMAP_SUB (1 << 16) +/** + * Subtitle codec is text based. + * Decoded AVSubtitle data can be read from the AVSubtitleRect->ass field. + */ +#define AV_CODEC_PROP_TEXT_SUB (1 << 17) + +/** + * @return descriptor for given codec ID or NULL if no descriptor exists. + */ +const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id); + +/** + * Iterate over all codec descriptors known to libavcodec. + * + * @param prev previous descriptor. NULL to get the first descriptor. + * + * @return next descriptor or NULL after the last descriptor + */ +const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev); + +/** + * @return codec descriptor with the given name or NULL if no such descriptor + * exists. + */ +const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name); + +/** + * @} + */ + +#endif // AVCODEC_CODEC_DESC_H diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/codec_id.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/codec_id.h new file mode 100644 index 00000000..386a00a7 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/codec_id.h @@ -0,0 +1,636 @@ +/* + * Codec IDs + * + * 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_ID_H +#define AVCODEC_CODEC_ID_H + +#include "libavutil/avutil.h" +#include "libavutil/samplefmt.h" + +/** + * @addtogroup lavc_core + * @{ + */ + +/** + * Identify the syntax and semantics of the bitstream. + * The principle is roughly: + * Two decoders with the same ID can decode the same streams. + * Two encoders with the same ID can encode compatible streams. + * There may be slight deviations from the principle due to implementation + * details. + * + * If you add a codec ID to this list, add it so that + * 1. no value of an existing codec ID changes (that would break ABI), + * 2. it is as close as possible to similar codecs + * + * After adding new codec IDs, do not forget to add an entry to the codec + * descriptor list and bump libavcodec minor version. + */ +enum AVCodecID { + AV_CODEC_ID_NONE, + + /* video codecs */ + AV_CODEC_ID_MPEG1VIDEO, + AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding + AV_CODEC_ID_H261, + AV_CODEC_ID_H263, + AV_CODEC_ID_RV10, + AV_CODEC_ID_RV20, + AV_CODEC_ID_MJPEG, + AV_CODEC_ID_MJPEGB, + AV_CODEC_ID_LJPEG, + AV_CODEC_ID_SP5X, + AV_CODEC_ID_JPEGLS, + AV_CODEC_ID_MPEG4, + AV_CODEC_ID_RAWVIDEO, + AV_CODEC_ID_MSMPEG4V1, + AV_CODEC_ID_MSMPEG4V2, + AV_CODEC_ID_MSMPEG4V3, + AV_CODEC_ID_WMV1, + AV_CODEC_ID_WMV2, + AV_CODEC_ID_H263P, + AV_CODEC_ID_H263I, + AV_CODEC_ID_FLV1, + AV_CODEC_ID_SVQ1, + AV_CODEC_ID_SVQ3, + AV_CODEC_ID_DVVIDEO, + AV_CODEC_ID_HUFFYUV, + AV_CODEC_ID_CYUV, + AV_CODEC_ID_H264, + AV_CODEC_ID_INDEO3, + AV_CODEC_ID_VP3, + AV_CODEC_ID_THEORA, + AV_CODEC_ID_ASV1, + AV_CODEC_ID_ASV2, + AV_CODEC_ID_FFV1, + AV_CODEC_ID_4XM, + AV_CODEC_ID_VCR1, + AV_CODEC_ID_CLJR, + AV_CODEC_ID_MDEC, + AV_CODEC_ID_ROQ, + AV_CODEC_ID_INTERPLAY_VIDEO, + AV_CODEC_ID_XAN_WC3, + AV_CODEC_ID_XAN_WC4, + AV_CODEC_ID_RPZA, + AV_CODEC_ID_CINEPAK, + AV_CODEC_ID_WS_VQA, + AV_CODEC_ID_MSRLE, + AV_CODEC_ID_MSVIDEO1, + AV_CODEC_ID_IDCIN, + AV_CODEC_ID_8BPS, + AV_CODEC_ID_SMC, + AV_CODEC_ID_FLIC, + AV_CODEC_ID_TRUEMOTION1, + AV_CODEC_ID_VMDVIDEO, + AV_CODEC_ID_MSZH, + AV_CODEC_ID_ZLIB, + AV_CODEC_ID_QTRLE, + AV_CODEC_ID_TSCC, + AV_CODEC_ID_ULTI, + AV_CODEC_ID_QDRAW, + AV_CODEC_ID_VIXL, + AV_CODEC_ID_QPEG, + AV_CODEC_ID_PNG, + AV_CODEC_ID_PPM, + AV_CODEC_ID_PBM, + AV_CODEC_ID_PGM, + AV_CODEC_ID_PGMYUV, + AV_CODEC_ID_PAM, + AV_CODEC_ID_FFVHUFF, + AV_CODEC_ID_RV30, + AV_CODEC_ID_RV40, + AV_CODEC_ID_VC1, + AV_CODEC_ID_WMV3, + AV_CODEC_ID_LOCO, + AV_CODEC_ID_WNV1, + AV_CODEC_ID_AASC, + AV_CODEC_ID_INDEO2, + AV_CODEC_ID_FRAPS, + AV_CODEC_ID_TRUEMOTION2, + AV_CODEC_ID_BMP, + AV_CODEC_ID_CSCD, + AV_CODEC_ID_MMVIDEO, + AV_CODEC_ID_ZMBV, + AV_CODEC_ID_AVS, + AV_CODEC_ID_SMACKVIDEO, + AV_CODEC_ID_NUV, + AV_CODEC_ID_KMVC, + AV_CODEC_ID_FLASHSV, + AV_CODEC_ID_CAVS, + AV_CODEC_ID_JPEG2000, + AV_CODEC_ID_VMNC, + AV_CODEC_ID_VP5, + AV_CODEC_ID_VP6, + AV_CODEC_ID_VP6F, + AV_CODEC_ID_TARGA, + AV_CODEC_ID_DSICINVIDEO, + AV_CODEC_ID_TIERTEXSEQVIDEO, + AV_CODEC_ID_TIFF, + AV_CODEC_ID_GIF, + AV_CODEC_ID_DXA, + AV_CODEC_ID_DNXHD, + AV_CODEC_ID_THP, + AV_CODEC_ID_SGI, + AV_CODEC_ID_C93, + AV_CODEC_ID_BETHSOFTVID, + AV_CODEC_ID_PTX, + AV_CODEC_ID_TXD, + AV_CODEC_ID_VP6A, + AV_CODEC_ID_AMV, + AV_CODEC_ID_VB, + AV_CODEC_ID_PCX, + AV_CODEC_ID_SUNRAST, + AV_CODEC_ID_INDEO4, + AV_CODEC_ID_INDEO5, + AV_CODEC_ID_MIMIC, + AV_CODEC_ID_RL2, + AV_CODEC_ID_ESCAPE124, + AV_CODEC_ID_DIRAC, + AV_CODEC_ID_BFI, + AV_CODEC_ID_CMV, + AV_CODEC_ID_MOTIONPIXELS, + AV_CODEC_ID_TGV, + AV_CODEC_ID_TGQ, + AV_CODEC_ID_TQI, + AV_CODEC_ID_AURA, + AV_CODEC_ID_AURA2, + AV_CODEC_ID_V210X, + AV_CODEC_ID_TMV, + AV_CODEC_ID_V210, + AV_CODEC_ID_DPX, + AV_CODEC_ID_MAD, + AV_CODEC_ID_FRWU, + AV_CODEC_ID_FLASHSV2, + AV_CODEC_ID_CDGRAPHICS, + AV_CODEC_ID_R210, + AV_CODEC_ID_ANM, + AV_CODEC_ID_BINKVIDEO, + AV_CODEC_ID_IFF_ILBM, +#define AV_CODEC_ID_IFF_BYTERUN1 AV_CODEC_ID_IFF_ILBM + AV_CODEC_ID_KGV1, + AV_CODEC_ID_YOP, + AV_CODEC_ID_VP8, + AV_CODEC_ID_PICTOR, + AV_CODEC_ID_ANSI, + AV_CODEC_ID_A64_MULTI, + AV_CODEC_ID_A64_MULTI5, + AV_CODEC_ID_R10K, + AV_CODEC_ID_MXPEG, + AV_CODEC_ID_LAGARITH, + AV_CODEC_ID_PRORES, + AV_CODEC_ID_JV, + AV_CODEC_ID_DFA, + AV_CODEC_ID_WMV3IMAGE, + AV_CODEC_ID_VC1IMAGE, + AV_CODEC_ID_UTVIDEO, + AV_CODEC_ID_BMV_VIDEO, + AV_CODEC_ID_VBLE, + AV_CODEC_ID_DXTORY, + AV_CODEC_ID_V410, + AV_CODEC_ID_XWD, + AV_CODEC_ID_CDXL, + AV_CODEC_ID_XBM, + AV_CODEC_ID_ZEROCODEC, + AV_CODEC_ID_MSS1, + AV_CODEC_ID_MSA1, + AV_CODEC_ID_TSCC2, + AV_CODEC_ID_MTS2, + AV_CODEC_ID_CLLC, + AV_CODEC_ID_MSS2, + AV_CODEC_ID_VP9, + AV_CODEC_ID_AIC, + AV_CODEC_ID_ESCAPE130, + AV_CODEC_ID_G2M, + AV_CODEC_ID_WEBP, + AV_CODEC_ID_HNM4_VIDEO, + AV_CODEC_ID_HEVC, +#define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC + AV_CODEC_ID_FIC, + AV_CODEC_ID_ALIAS_PIX, + AV_CODEC_ID_BRENDER_PIX, + AV_CODEC_ID_PAF_VIDEO, + AV_CODEC_ID_EXR, + AV_CODEC_ID_VP7, + AV_CODEC_ID_SANM, + AV_CODEC_ID_SGIRLE, + AV_CODEC_ID_MVC1, + AV_CODEC_ID_MVC2, + AV_CODEC_ID_HQX, + AV_CODEC_ID_TDSC, + AV_CODEC_ID_HQ_HQA, + AV_CODEC_ID_HAP, + AV_CODEC_ID_DDS, + AV_CODEC_ID_DXV, + AV_CODEC_ID_SCREENPRESSO, + AV_CODEC_ID_RSCC, + AV_CODEC_ID_AVS2, + AV_CODEC_ID_PGX, + AV_CODEC_ID_AVS3, + AV_CODEC_ID_MSP2, + AV_CODEC_ID_VVC, +#define AV_CODEC_ID_H266 AV_CODEC_ID_VVC + AV_CODEC_ID_Y41P, + AV_CODEC_ID_AVRP, + AV_CODEC_ID_012V, + AV_CODEC_ID_AVUI, + AV_CODEC_ID_AYUV, + AV_CODEC_ID_TARGA_Y216, + AV_CODEC_ID_V308, + AV_CODEC_ID_V408, + AV_CODEC_ID_YUV4, + AV_CODEC_ID_AVRN, + AV_CODEC_ID_CPIA, + AV_CODEC_ID_XFACE, + AV_CODEC_ID_SNOW, + AV_CODEC_ID_SMVJPEG, + AV_CODEC_ID_APNG, + AV_CODEC_ID_DAALA, + AV_CODEC_ID_CFHD, + AV_CODEC_ID_TRUEMOTION2RT, + AV_CODEC_ID_M101, + AV_CODEC_ID_MAGICYUV, + AV_CODEC_ID_SHEERVIDEO, + AV_CODEC_ID_YLC, + AV_CODEC_ID_PSD, + AV_CODEC_ID_PIXLET, + AV_CODEC_ID_SPEEDHQ, + AV_CODEC_ID_FMVC, + AV_CODEC_ID_SCPR, + AV_CODEC_ID_CLEARVIDEO, + AV_CODEC_ID_XPM, + AV_CODEC_ID_AV1, + AV_CODEC_ID_BITPACKED, + AV_CODEC_ID_MSCC, + AV_CODEC_ID_SRGC, + AV_CODEC_ID_SVG, + AV_CODEC_ID_GDV, + AV_CODEC_ID_FITS, + AV_CODEC_ID_IMM4, + AV_CODEC_ID_PROSUMER, + AV_CODEC_ID_MWSC, + AV_CODEC_ID_WCMV, + AV_CODEC_ID_RASC, + AV_CODEC_ID_HYMT, + AV_CODEC_ID_ARBC, + AV_CODEC_ID_AGM, + AV_CODEC_ID_LSCR, + AV_CODEC_ID_VP4, + AV_CODEC_ID_IMM5, + AV_CODEC_ID_MVDV, + AV_CODEC_ID_MVHA, + AV_CODEC_ID_CDTOONS, + AV_CODEC_ID_MV30, + AV_CODEC_ID_NOTCHLC, + AV_CODEC_ID_PFM, + AV_CODEC_ID_MOBICLIP, + AV_CODEC_ID_PHOTOCD, + AV_CODEC_ID_IPU, + AV_CODEC_ID_ARGO, + AV_CODEC_ID_CRI, + 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, + AV_CODEC_ID_PHM, + AV_CODEC_ID_RADIANCE_HDR, + AV_CODEC_ID_WBMP, + + /* various PCM "codecs" */ + AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs + AV_CODEC_ID_PCM_S16LE = 0x10000, + AV_CODEC_ID_PCM_S16BE, + AV_CODEC_ID_PCM_U16LE, + AV_CODEC_ID_PCM_U16BE, + AV_CODEC_ID_PCM_S8, + AV_CODEC_ID_PCM_U8, + AV_CODEC_ID_PCM_MULAW, + AV_CODEC_ID_PCM_ALAW, + AV_CODEC_ID_PCM_S32LE, + AV_CODEC_ID_PCM_S32BE, + AV_CODEC_ID_PCM_U32LE, + AV_CODEC_ID_PCM_U32BE, + AV_CODEC_ID_PCM_S24LE, + AV_CODEC_ID_PCM_S24BE, + AV_CODEC_ID_PCM_U24LE, + AV_CODEC_ID_PCM_U24BE, + AV_CODEC_ID_PCM_S24DAUD, + AV_CODEC_ID_PCM_ZORK, + AV_CODEC_ID_PCM_S16LE_PLANAR, + AV_CODEC_ID_PCM_DVD, + AV_CODEC_ID_PCM_F32BE, + AV_CODEC_ID_PCM_F32LE, + AV_CODEC_ID_PCM_F64BE, + AV_CODEC_ID_PCM_F64LE, + AV_CODEC_ID_PCM_BLURAY, + AV_CODEC_ID_PCM_LXF, + AV_CODEC_ID_S302M, + AV_CODEC_ID_PCM_S8_PLANAR, + AV_CODEC_ID_PCM_S24LE_PLANAR, + AV_CODEC_ID_PCM_S32LE_PLANAR, + AV_CODEC_ID_PCM_S16BE_PLANAR, + AV_CODEC_ID_PCM_S64LE, + AV_CODEC_ID_PCM_S64BE, + AV_CODEC_ID_PCM_F16LE, + AV_CODEC_ID_PCM_F24LE, + AV_CODEC_ID_PCM_VIDC, + AV_CODEC_ID_PCM_SGA, + + /* various ADPCM codecs */ + AV_CODEC_ID_ADPCM_IMA_QT = 0x11000, + AV_CODEC_ID_ADPCM_IMA_WAV, + AV_CODEC_ID_ADPCM_IMA_DK3, + AV_CODEC_ID_ADPCM_IMA_DK4, + AV_CODEC_ID_ADPCM_IMA_WS, + AV_CODEC_ID_ADPCM_IMA_SMJPEG, + AV_CODEC_ID_ADPCM_MS, + AV_CODEC_ID_ADPCM_4XM, + AV_CODEC_ID_ADPCM_XA, + AV_CODEC_ID_ADPCM_ADX, + AV_CODEC_ID_ADPCM_EA, + AV_CODEC_ID_ADPCM_G726, + AV_CODEC_ID_ADPCM_CT, + AV_CODEC_ID_ADPCM_SWF, + AV_CODEC_ID_ADPCM_YAMAHA, + AV_CODEC_ID_ADPCM_SBPRO_4, + AV_CODEC_ID_ADPCM_SBPRO_3, + AV_CODEC_ID_ADPCM_SBPRO_2, + AV_CODEC_ID_ADPCM_THP, + AV_CODEC_ID_ADPCM_IMA_AMV, + AV_CODEC_ID_ADPCM_EA_R1, + AV_CODEC_ID_ADPCM_EA_R3, + AV_CODEC_ID_ADPCM_EA_R2, + AV_CODEC_ID_ADPCM_IMA_EA_SEAD, + AV_CODEC_ID_ADPCM_IMA_EA_EACS, + AV_CODEC_ID_ADPCM_EA_XAS, + AV_CODEC_ID_ADPCM_EA_MAXIS_XA, + AV_CODEC_ID_ADPCM_IMA_ISS, + AV_CODEC_ID_ADPCM_G722, + AV_CODEC_ID_ADPCM_IMA_APC, + AV_CODEC_ID_ADPCM_VIMA, + AV_CODEC_ID_ADPCM_AFC, + AV_CODEC_ID_ADPCM_IMA_OKI, + AV_CODEC_ID_ADPCM_DTK, + AV_CODEC_ID_ADPCM_IMA_RAD, + AV_CODEC_ID_ADPCM_G726LE, + AV_CODEC_ID_ADPCM_THP_LE, + AV_CODEC_ID_ADPCM_PSX, + AV_CODEC_ID_ADPCM_AICA, + AV_CODEC_ID_ADPCM_IMA_DAT4, + AV_CODEC_ID_ADPCM_MTAF, + AV_CODEC_ID_ADPCM_AGM, + AV_CODEC_ID_ADPCM_ARGO, + AV_CODEC_ID_ADPCM_IMA_SSI, + AV_CODEC_ID_ADPCM_ZORK, + AV_CODEC_ID_ADPCM_IMA_APM, + AV_CODEC_ID_ADPCM_IMA_ALP, + AV_CODEC_ID_ADPCM_IMA_MTF, + AV_CODEC_ID_ADPCM_IMA_CUNNING, + AV_CODEC_ID_ADPCM_IMA_MOFLEX, + AV_CODEC_ID_ADPCM_IMA_ACORN, + + /* AMR */ + AV_CODEC_ID_AMR_NB = 0x12000, + AV_CODEC_ID_AMR_WB, + + /* RealAudio codecs*/ + AV_CODEC_ID_RA_144 = 0x13000, + AV_CODEC_ID_RA_288, + + /* various DPCM codecs */ + AV_CODEC_ID_ROQ_DPCM = 0x14000, + AV_CODEC_ID_INTERPLAY_DPCM, + AV_CODEC_ID_XAN_DPCM, + AV_CODEC_ID_SOL_DPCM, + AV_CODEC_ID_SDX2_DPCM, + AV_CODEC_ID_GREMLIN_DPCM, + AV_CODEC_ID_DERF_DPCM, + + /* audio codecs */ + AV_CODEC_ID_MP2 = 0x15000, + AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3 + AV_CODEC_ID_AAC, + AV_CODEC_ID_AC3, + AV_CODEC_ID_DTS, + AV_CODEC_ID_VORBIS, + AV_CODEC_ID_DVAUDIO, + AV_CODEC_ID_WMAV1, + AV_CODEC_ID_WMAV2, + AV_CODEC_ID_MACE3, + AV_CODEC_ID_MACE6, + AV_CODEC_ID_VMDAUDIO, + AV_CODEC_ID_FLAC, + AV_CODEC_ID_MP3ADU, + AV_CODEC_ID_MP3ON4, + AV_CODEC_ID_SHORTEN, + AV_CODEC_ID_ALAC, + AV_CODEC_ID_WESTWOOD_SND1, + AV_CODEC_ID_GSM, ///< as in Berlin toast format + AV_CODEC_ID_QDM2, + AV_CODEC_ID_COOK, + AV_CODEC_ID_TRUESPEECH, + AV_CODEC_ID_TTA, + AV_CODEC_ID_SMACKAUDIO, + AV_CODEC_ID_QCELP, + AV_CODEC_ID_WAVPACK, + AV_CODEC_ID_DSICINAUDIO, + AV_CODEC_ID_IMC, + AV_CODEC_ID_MUSEPACK7, + AV_CODEC_ID_MLP, + AV_CODEC_ID_GSM_MS, /* as found in WAV */ + AV_CODEC_ID_ATRAC3, + AV_CODEC_ID_APE, + AV_CODEC_ID_NELLYMOSER, + AV_CODEC_ID_MUSEPACK8, + AV_CODEC_ID_SPEEX, + AV_CODEC_ID_WMAVOICE, + AV_CODEC_ID_WMAPRO, + AV_CODEC_ID_WMALOSSLESS, + AV_CODEC_ID_ATRAC3P, + AV_CODEC_ID_EAC3, + AV_CODEC_ID_SIPR, + AV_CODEC_ID_MP1, + AV_CODEC_ID_TWINVQ, + AV_CODEC_ID_TRUEHD, + AV_CODEC_ID_MP4ALS, + AV_CODEC_ID_ATRAC1, + AV_CODEC_ID_BINKAUDIO_RDFT, + AV_CODEC_ID_BINKAUDIO_DCT, + AV_CODEC_ID_AAC_LATM, + AV_CODEC_ID_QDMC, + AV_CODEC_ID_CELT, + AV_CODEC_ID_G723_1, + AV_CODEC_ID_G729, + AV_CODEC_ID_8SVX_EXP, + AV_CODEC_ID_8SVX_FIB, + AV_CODEC_ID_BMV_AUDIO, + AV_CODEC_ID_RALF, + AV_CODEC_ID_IAC, + AV_CODEC_ID_ILBC, + AV_CODEC_ID_OPUS, + AV_CODEC_ID_COMFORT_NOISE, + AV_CODEC_ID_TAK, + AV_CODEC_ID_METASOUND, + AV_CODEC_ID_PAF_AUDIO, + AV_CODEC_ID_ON2AVC, + AV_CODEC_ID_DSS_SP, + AV_CODEC_ID_CODEC2, + AV_CODEC_ID_FFWAVESYNTH, + AV_CODEC_ID_SONIC, + AV_CODEC_ID_SONIC_LS, + AV_CODEC_ID_EVRC, + AV_CODEC_ID_SMV, + AV_CODEC_ID_DSD_LSBF, + AV_CODEC_ID_DSD_MSBF, + AV_CODEC_ID_DSD_LSBF_PLANAR, + AV_CODEC_ID_DSD_MSBF_PLANAR, + AV_CODEC_ID_4GV, + AV_CODEC_ID_INTERPLAY_ACM, + AV_CODEC_ID_XMA1, + AV_CODEC_ID_XMA2, + AV_CODEC_ID_DST, + AV_CODEC_ID_ATRAC3AL, + AV_CODEC_ID_ATRAC3PAL, + AV_CODEC_ID_DOLBY_E, + AV_CODEC_ID_APTX, + AV_CODEC_ID_APTX_HD, + AV_CODEC_ID_SBC, + AV_CODEC_ID_ATRAC9, + AV_CODEC_ID_HCOM, + AV_CODEC_ID_ACELP_KELVIN, + AV_CODEC_ID_MPEGH_3D_AUDIO, + AV_CODEC_ID_SIREN, + 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. + AV_CODEC_ID_DVD_SUBTITLE = 0x17000, + AV_CODEC_ID_DVB_SUBTITLE, + AV_CODEC_ID_TEXT, ///< raw UTF-8 text + AV_CODEC_ID_XSUB, + AV_CODEC_ID_SSA, + AV_CODEC_ID_MOV_TEXT, + AV_CODEC_ID_HDMV_PGS_SUBTITLE, + AV_CODEC_ID_DVB_TELETEXT, + AV_CODEC_ID_SRT, + AV_CODEC_ID_MICRODVD, + AV_CODEC_ID_EIA_608, + AV_CODEC_ID_JACOSUB, + AV_CODEC_ID_SAMI, + AV_CODEC_ID_REALTEXT, + AV_CODEC_ID_STL, + AV_CODEC_ID_SUBVIEWER1, + AV_CODEC_ID_SUBVIEWER, + AV_CODEC_ID_SUBRIP, + AV_CODEC_ID_WEBVTT, + AV_CODEC_ID_MPL2, + AV_CODEC_ID_VPLAYER, + AV_CODEC_ID_PJS, + AV_CODEC_ID_ASS, + AV_CODEC_ID_HDMV_TEXT_SUBTITLE, + AV_CODEC_ID_TTML, + AV_CODEC_ID_ARIB_CAPTION, + + /* other specific kind of codecs (generally used for attachments) */ + AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs. + AV_CODEC_ID_TTF = 0x18000, + + AV_CODEC_ID_SCTE_35, ///< Contain timestamp estimated through PCR of program stream. + AV_CODEC_ID_EPG, + AV_CODEC_ID_BINTEXT, + AV_CODEC_ID_XBIN, + AV_CODEC_ID_IDF, + AV_CODEC_ID_OTF, + AV_CODEC_ID_SMPTE_KLV, + AV_CODEC_ID_DVD_NAV, + AV_CODEC_ID_TIMED_ID3, + AV_CODEC_ID_BIN_DATA, + + + AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it + + AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS + * stream (only used by libavformat) */ + AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems + * stream (only used by libavformat) */ + AV_CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information. + AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001, ///< Passthrough codec, AVFrames wrapped in AVPacket +}; + +/** + * Get the type of the given codec. + */ +enum AVMediaType avcodec_get_type(enum AVCodecID codec_id); + +/** + * Get the name of a codec. + * @return a static string identifying the codec; never NULL + */ +const char *avcodec_get_name(enum AVCodecID id); + +/** + * Return codec bits per sample. + * + * @param[in] codec_id the codec + * @return Number of bits per sample or zero if unknown for the given codec. + */ +int av_get_bits_per_sample(enum AVCodecID codec_id); + +/** + * Return codec bits per sample. + * Only return non-zero if the bits per sample is exactly correct, not an + * approximation. + * + * @param[in] codec_id the codec + * @return Number of bits per sample or zero if unknown for the given codec. + */ +int av_get_exact_bits_per_sample(enum AVCodecID codec_id); + +/** + * Return a name for the specified profile, if available. + * + * @param codec_id the ID of the codec to which the requested profile belongs + * @param profile the profile value for which a name is requested + * @return A name for the profile if found, NULL otherwise. + * + * @note unlike av_get_profile_name(), which searches a list of profiles + * supported by a specific decoder or encoder implementation, this + * function searches the list of profiles from the AVCodecDescriptor + */ +const char *avcodec_profile_name(enum AVCodecID codec_id, int profile); + +/** + * Return the PCM codec associated with a sample format. + * @param be endianness, 0 for little, 1 for big, + * -1 (or anything else) for native + * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE + */ +enum AVCodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be); + +/** + * @} + */ + +#endif // AVCODEC_CODEC_ID_H diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/codec_par.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/codec_par.h new file mode 100644 index 00000000..7660791a --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/codec_par.h @@ -0,0 +1,246 @@ +/* + * Codec parameters public API + * + * 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_PAR_H +#define AVCODEC_CODEC_PAR_H + +#include + +#include "libavutil/avutil.h" +#include "libavutil/channel_layout.h" +#include "libavutil/rational.h" +#include "libavutil/pixfmt.h" + +#include "codec_id.h" + +/** + * @addtogroup lavc_core + */ + +enum AVFieldOrder { + AV_FIELD_UNKNOWN, + AV_FIELD_PROGRESSIVE, + AV_FIELD_TT, //< Top coded_first, top displayed first + AV_FIELD_BB, //< Bottom coded first, bottom displayed first + AV_FIELD_TB, //< Top coded first, bottom displayed first + AV_FIELD_BT, //< Bottom coded first, top displayed first +}; + +/** + * This struct describes the properties of an encoded stream. + * + * sizeof(AVCodecParameters) is not a part of the public ABI, this struct must + * be allocated with avcodec_parameters_alloc() and freed with + * avcodec_parameters_free(). + */ +typedef struct AVCodecParameters { + /** + * General type of the encoded data. + */ + enum AVMediaType codec_type; + /** + * Specific type of the encoded data (the codec used). + */ + enum AVCodecID codec_id; + /** + * Additional information about the codec (corresponds to the AVI FOURCC). + */ + uint32_t codec_tag; + + /** + * Extra binary data needed for initializing the decoder, codec-dependent. + * + * Must be allocated with av_malloc() and will be freed by + * avcodec_parameters_free(). The allocated size of extradata must be at + * least extradata_size + AV_INPUT_BUFFER_PADDING_SIZE, with the padding + * bytes zeroed. + */ + uint8_t *extradata; + /** + * Size of the extradata content in bytes. + */ + int extradata_size; + + /** + * - video: the pixel format, the value corresponds to enum AVPixelFormat. + * - audio: the sample format, the value corresponds to enum AVSampleFormat. + */ + int format; + + /** + * The average bitrate of the encoded data (in bits per second). + */ + int64_t bit_rate; + + /** + * The number of bits per sample in the codedwords. + * + * This is basically the bitrate per sample. It is mandatory for a bunch of + * formats to actually decode them. It's the number of bits for one sample in + * the actual coded bitstream. + * + * This could be for example 4 for ADPCM + * For PCM formats this matches bits_per_raw_sample + * Can be 0 + */ + int bits_per_coded_sample; + + /** + * This is the number of valid bits in each output sample. If the + * sample format has more bits, the least significant bits are additional + * padding bits, which are always 0. Use right shifts to reduce the sample + * to its actual size. For example, audio formats with 24 bit samples will + * have bits_per_raw_sample set to 24, and format set to AV_SAMPLE_FMT_S32. + * To get the original sample use "(int32_t)sample >> 8"." + * + * For ADPCM this might be 12 or 16 or similar + * Can be 0 + */ + int bits_per_raw_sample; + + /** + * Codec-specific bitstream restrictions that the stream conforms to. + */ + int profile; + int level; + + /** + * Video only. The dimensions of the video frame in pixels. + */ + int width; + int height; + + /** + * Video only. The aspect ratio (width / height) which a single pixel + * should have when displayed. + * + * When the aspect ratio is unknown / undefined, the numerator should be + * set to 0 (the denominator may have any value). + */ + AVRational sample_aspect_ratio; + + /** + * Video only. The order of the fields in interlaced video. + */ + enum AVFieldOrder field_order; + + /** + * Video only. Additional colorspace characteristics. + */ + enum AVColorRange color_range; + enum AVColorPrimaries color_primaries; + enum AVColorTransferCharacteristic color_trc; + enum AVColorSpace color_space; + enum AVChromaLocation chroma_location; + + /** + * Video only. Number of delayed frames. + */ + 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. + */ + int sample_rate; + /** + * Audio only. The number of bytes per coded audio frame, required by some + * formats. + * + * Corresponds to nBlockAlign in WAVEFORMATEX. + */ + int block_align; + /** + * Audio only. Audio frame size, if known. Required by some formats to be static. + */ + int frame_size; + + /** + * Audio only. The amount of padding (in samples) inserted by the encoder at + * the beginning of the audio. I.e. this number of leading decoded samples + * must be discarded by the caller to get the original audio without leading + * padding. + */ + int initial_padding; + /** + * Audio only. The amount of padding (in samples) appended by the encoder to + * the end of the audio. I.e. this number of decoded samples must be + * discarded by the caller from the end of the stream to get the original + * audio without any trailing padding. + */ + int trailing_padding; + /** + * 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; + +/** + * Allocate a new AVCodecParameters and set its fields to default values + * (unknown/invalid/0). The returned struct must be freed with + * avcodec_parameters_free(). + */ +AVCodecParameters *avcodec_parameters_alloc(void); + +/** + * Free an AVCodecParameters instance and everything associated with it and + * write NULL to the supplied pointer. + */ +void avcodec_parameters_free(AVCodecParameters **par); + +/** + * Copy the contents of src to dst. Any allocated fields in dst are freed and + * replaced with newly allocated duplicates of the corresponding fields in src. + * + * @return >= 0 on success, a negative AVERROR code on failure. + */ +int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src); + +/** + * This function is the same as av_get_audio_frame_duration(), except it works + * with AVCodecParameters instead of an AVCodecContext. + */ +int av_get_audio_frame_duration2(AVCodecParameters *par, int frame_bytes); + +/** + * @} + */ + +#endif // AVCODEC_CODEC_PAR_H diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/d3d11va.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/d3d11va.h new file mode 100644 index 00000000..6816b6c1 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/d3d11va.h @@ -0,0 +1,112 @@ +/* + * Direct3D11 HW acceleration + * + * copyright (c) 2009 Laurent Aimar + * copyright (c) 2015 Steve Lhomme + * + * 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_D3D11VA_H +#define AVCODEC_D3D11VA_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_d3d11va + * Public libavcodec D3D11VA header. + */ + +#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602 +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0602 +#endif + +#include +#include + +/** + * @defgroup lavc_codec_hwaccel_d3d11va Direct3D11 + * @ingroup lavc_codec_hwaccel + * + * @{ + */ + +#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for Direct3D11 and old UVD/UVD+ ATI video cards +#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for Direct3D11 and old Intel GPUs with ClearVideo interface + +/** + * This structure is used to provides the necessary configurations and data + * to the Direct3D11 FFmpeg HWAccel implementation. + * + * The application must make it available as AVCodecContext.hwaccel_context. + * + * Use av_d3d11va_alloc_context() exclusively to allocate an AVD3D11VAContext. + */ +typedef struct AVD3D11VAContext { + /** + * D3D11 decoder object + */ + ID3D11VideoDecoder *decoder; + + /** + * D3D11 VideoContext + */ + ID3D11VideoContext *video_context; + + /** + * D3D11 configuration used to create the decoder + */ + D3D11_VIDEO_DECODER_CONFIG *cfg; + + /** + * The number of surface in the surface array + */ + unsigned surface_count; + + /** + * The array of Direct3D surfaces used to create the decoder + */ + ID3D11VideoDecoderOutputView **surface; + + /** + * A bit field configuring the workarounds needed for using the decoder + */ + uint64_t workaround; + + /** + * Private to the FFmpeg AVHWAccel implementation + */ + unsigned report_id; + + /** + * Mutex to access video_context + */ + HANDLE context_mutex; +} AVD3D11VAContext; + +/** + * Allocate an AVD3D11VAContext. + * + * @return Newly-allocated AVD3D11VAContext or NULL on failure. + */ +AVD3D11VAContext *av_d3d11va_alloc_context(void); + +/** + * @} + */ + +#endif /* AVCODEC_D3D11VA_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/defs.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/defs.h new file mode 100644 index 00000000..420a042b --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/defs.h @@ -0,0 +1,170 @@ +/* + * + * 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 +#include + +/** + * @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.
+ * 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 diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/dirac.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/dirac.h new file mode 100644 index 00000000..e6d9d346 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/dirac.h @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2007 Marco Gerards + * Copyright (C) 2009 David Conrad + * Copyright (C) 2011 Jordi Ortiz + * + * 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_DIRAC_H +#define AVCODEC_DIRAC_H + +/** + * @file + * Interface to Dirac Decoder/Encoder + * @author Marco Gerards + * @author David Conrad + * @author Jordi Ortiz + */ + +#include "avcodec.h" + +/** + * The spec limits the number of wavelet decompositions to 4 for both + * level 1 (VC-2) and 128 (long-gop default). + * 5 decompositions is the maximum before >16-bit buffers are needed. + * Schroedinger allows this for DD 9,7 and 13,7 wavelets only, limiting + * the others to 4 decompositions (or 3 for the fidelity filter). + * + * We use this instead of MAX_DECOMPOSITIONS to save some memory. + */ +#define MAX_DWT_LEVELS 5 + +/** + * Parse code values: + * + * Dirac Specification -> + * 9.6.1 Table 9.1 + * + * VC-2 Specification -> + * 10.4.1 Table 10.1 + */ + +enum DiracParseCodes { + DIRAC_PCODE_SEQ_HEADER = 0x00, + DIRAC_PCODE_END_SEQ = 0x10, + DIRAC_PCODE_AUX = 0x20, + DIRAC_PCODE_PAD = 0x30, + DIRAC_PCODE_PICTURE_CODED = 0x08, + DIRAC_PCODE_PICTURE_RAW = 0x48, + DIRAC_PCODE_PICTURE_LOW_DEL = 0xC8, + DIRAC_PCODE_PICTURE_HQ = 0xE8, + DIRAC_PCODE_INTER_NOREF_CO1 = 0x0A, + DIRAC_PCODE_INTER_NOREF_CO2 = 0x09, + DIRAC_PCODE_INTER_REF_CO1 = 0x0D, + DIRAC_PCODE_INTER_REF_CO2 = 0x0E, + DIRAC_PCODE_INTRA_REF_CO = 0x0C, + DIRAC_PCODE_INTRA_REF_RAW = 0x4C, + DIRAC_PCODE_INTRA_REF_PICT = 0xCC, + DIRAC_PCODE_MAGIC = 0x42424344, +}; + +typedef struct DiracVersionInfo { + int major; + int minor; +} DiracVersionInfo; + +typedef struct AVDiracSeqHeader { + unsigned width; + unsigned height; + uint8_t chroma_format; ///< 0: 444 1: 422 2: 420 + + uint8_t interlaced; + uint8_t top_field_first; + + uint8_t frame_rate_index; ///< index into dirac_frame_rate[] + uint8_t aspect_ratio_index; ///< index into dirac_aspect_ratio[] + + uint16_t clean_width; + uint16_t clean_height; + uint16_t clean_left_offset; + uint16_t clean_right_offset; + + uint8_t pixel_range_index; ///< index into dirac_pixel_range_presets[] + uint8_t color_spec_index; ///< index into dirac_color_spec_presets[] + + int profile; + int level; + + AVRational framerate; + AVRational sample_aspect_ratio; + + enum AVPixelFormat pix_fmt; + enum AVColorRange color_range; + enum AVColorPrimaries color_primaries; + enum AVColorTransferCharacteristic color_trc; + enum AVColorSpace colorspace; + + DiracVersionInfo version; + int bit_depth; +} AVDiracSeqHeader; + +/** + * Parse a Dirac sequence header. + * + * @param dsh this function will allocate and fill an AVDiracSeqHeader struct + * and write it into this pointer. The caller must free it with + * av_free(). + * @param buf the data buffer + * @param buf_size the size of the data buffer in bytes + * @param log_ctx if non-NULL, this function will log errors here + * @return 0 on success, a negative AVERROR code on failure + */ +int av_dirac_parse_sequence_header(AVDiracSeqHeader **dsh, + const uint8_t *buf, size_t buf_size, + void *log_ctx); + +#endif /* AVCODEC_DIRAC_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/dv_profile.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/dv_profile.h new file mode 100644 index 00000000..4365f1b4 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/dv_profile.h @@ -0,0 +1,82 @@ +/* + * 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_DV_PROFILE_H +#define AVCODEC_DV_PROFILE_H + +#include + +#include "libavutil/pixfmt.h" +#include "libavutil/rational.h" + +/* minimum number of bytes to read from a DV stream in order to + * determine the profile */ +#define DV_PROFILE_BYTES (6 * 80) /* 6 DIF blocks */ + + +/* + * AVDVProfile is used to express the differences between various + * DV flavors. For now it's primarily used for differentiating + * 525/60 and 625/50, but the plans are to use it for various + * DV specs as well (e.g. SMPTE314M vs. IEC 61834). + */ +typedef struct AVDVProfile { + int dsf; /* value of the dsf in the DV header */ + int video_stype; /* stype for VAUX source pack */ + int frame_size; /* total size of one frame in bytes */ + int difseg_size; /* number of DIF segments per DIF channel */ + int n_difchan; /* number of DIF channels per frame */ + AVRational time_base; /* 1/framerate */ + int ltc_divisor; /* FPS from the LTS standpoint */ + int height; /* picture height in pixels */ + int width; /* picture width in pixels */ + AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */ + enum AVPixelFormat pix_fmt; /* picture pixel format */ + int bpm; /* blocks per macroblock */ + const uint8_t *block_sizes; /* AC block sizes, in bits */ + int audio_stride; /* size of audio_shuffle table */ + int audio_min_samples[3]; /* min amount of audio samples */ + /* for 48kHz, 44.1kHz and 32kHz */ + int audio_samples_dist[5]; /* how many samples are supposed to be */ + /* in each frame in a 5 frames window */ + const uint8_t (*audio_shuffle)[9]; /* PCM shuffling table */ +} AVDVProfile; + +/** + * Get a DV profile for the provided compressed frame. + * + * @param sys the profile used for the previous frame, may be NULL + * @param frame the compressed data buffer + * @param buf_size size of the buffer in bytes + * @return the DV profile for the supplied data or NULL on failure + */ +const AVDVProfile *av_dv_frame_profile(const AVDVProfile *sys, + const uint8_t *frame, unsigned buf_size); + +/** + * Get a DV profile for the provided stream parameters. + */ +const AVDVProfile *av_dv_codec_profile(int width, int height, enum AVPixelFormat pix_fmt); + +/** + * Get a DV profile for the provided stream parameters. + * The frame rate is used as a best-effort parameter. + */ +const AVDVProfile *av_dv_codec_profile2(int width, int height, enum AVPixelFormat pix_fmt, AVRational frame_rate); + +#endif /* AVCODEC_DV_PROFILE_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/dxva2.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/dxva2.h new file mode 100644 index 00000000..22c93992 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/dxva2.h @@ -0,0 +1,93 @@ +/* + * DXVA2 HW acceleration + * + * copyright (c) 2009 Laurent Aimar + * + * 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_DXVA2_H +#define AVCODEC_DXVA2_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_dxva2 + * Public libavcodec DXVA2 header. + */ + +#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602 +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x0602 +#endif + +#include +#include +#include + +/** + * @defgroup lavc_codec_hwaccel_dxva2 DXVA2 + * @ingroup lavc_codec_hwaccel + * + * @{ + */ + +#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards +#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface + +/** + * This structure is used to provides the necessary configurations and data + * to the DXVA2 FFmpeg HWAccel implementation. + * + * The application must make it available as AVCodecContext.hwaccel_context. + */ +struct dxva_context { + /** + * DXVA2 decoder object + */ + IDirectXVideoDecoder *decoder; + + /** + * DXVA2 configuration used to create the decoder + */ + const DXVA2_ConfigPictureDecode *cfg; + + /** + * The number of surface in the surface array + */ + unsigned surface_count; + + /** + * The array of Direct3D surfaces used to create the decoder + */ + LPDIRECT3DSURFACE9 *surface; + + /** + * A bit field configuring the workarounds needed for using the decoder + */ + uint64_t workaround; + + /** + * Private to the FFmpeg AVHWAccel implementation + */ + unsigned report_id; +}; + +/** + * @} + */ + +#endif /* AVCODEC_DXVA2_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/jni.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/jni.h new file mode 100644 index 00000000..dd99e926 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/jni.h @@ -0,0 +1,46 @@ +/* + * JNI public API functions + * + * Copyright (c) 2015-2016 Matthieu Bouron + * + * 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_JNI_H +#define AVCODEC_JNI_H + +/* + * Manually set a Java virtual machine which will be used to retrieve the JNI + * environment. Once a Java VM is set it cannot be changed afterwards, meaning + * you can call multiple times av_jni_set_java_vm with the same Java VM pointer + * however it will error out if you try to set a different Java VM. + * + * @param vm Java virtual machine + * @param log_ctx context used for logging, can be NULL + * @return 0 on success, < 0 otherwise + */ +int av_jni_set_java_vm(void *vm, void *log_ctx); + +/* + * Get the Java virtual machine which has been set with av_jni_set_java_vm. + * + * @param vm Java virtual machine + * @return a pointer to the Java virtual machine + */ +void *av_jni_get_java_vm(void *log_ctx); + +#endif /* AVCODEC_JNI_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/mediacodec.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/mediacodec.h new file mode 100644 index 00000000..4c8545df --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/mediacodec.h @@ -0,0 +1,101 @@ +/* + * Android MediaCodec public API + * + * Copyright (c) 2016 Matthieu Bouron + * + * 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_MEDIACODEC_H +#define AVCODEC_MEDIACODEC_H + +#include "libavcodec/avcodec.h" + +/** + * This structure holds a reference to a android/view/Surface object that will + * be used as output by the decoder. + * + */ +typedef struct AVMediaCodecContext { + + /** + * android/view/Surface object reference. + */ + void *surface; + +} AVMediaCodecContext; + +/** + * Allocate and initialize a MediaCodec context. + * + * When decoding with MediaCodec is finished, the caller must free the + * MediaCodec context with av_mediacodec_default_free. + * + * @return a pointer to a newly allocated AVMediaCodecContext on success, NULL otherwise + */ +AVMediaCodecContext *av_mediacodec_alloc_context(void); + +/** + * Convenience function that sets up the MediaCodec context. + * + * @param avctx codec context + * @param ctx MediaCodec context to initialize + * @param surface reference to an android/view/Surface + * @return 0 on success, < 0 otherwise + */ +int av_mediacodec_default_init(AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface); + +/** + * This function must be called to free the MediaCodec context initialized with + * av_mediacodec_default_init(). + * + * @param avctx codec context + */ +void av_mediacodec_default_free(AVCodecContext *avctx); + +/** + * Opaque structure representing a MediaCodec buffer to render. + */ +typedef struct MediaCodecBuffer AVMediaCodecBuffer; + +/** + * Release a MediaCodec buffer and render it to the surface that is associated + * with the decoder. This function should only be called once on a given + * buffer, once released the underlying buffer returns to the codec, thus + * subsequent calls to this function will have no effect. + * + * @param buffer the buffer to render + * @param render 1 to release and render the buffer to the surface or 0 to + * discard the buffer + * @return 0 on success, < 0 otherwise + */ +int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render); + +/** + * Release a MediaCodec buffer and render it at the given time to the surface + * that is associated with the decoder. The timestamp must be within one second + * of the current java/lang/System#nanoTime() (which is implemented using + * CLOCK_MONOTONIC on Android). See the Android MediaCodec documentation + * of android/media/MediaCodec#releaseOutputBuffer(int,long) for more details. + * + * @param buffer the buffer to render + * @param time timestamp in nanoseconds of when to render the buffer + * @return 0 on success, < 0 otherwise + */ +int av_mediacodec_render_buffer_at_time(AVMediaCodecBuffer *buffer, int64_t time); + +#endif /* AVCODEC_MEDIACODEC_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/packet.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/packet.h new file mode 100644 index 00000000..404d5200 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/packet.h @@ -0,0 +1,731 @@ +/* + * AVPacket public API + * + * 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_PACKET_H +#define AVCODEC_PACKET_H + +#include +#include + +#include "libavutil/attributes.h" +#include "libavutil/buffer.h" +#include "libavutil/dict.h" +#include "libavutil/rational.h" +#include "libavutil/version.h" + +#include "libavcodec/version_major.h" + +/** + * @defgroup lavc_packet AVPacket + * + * Types and functions for working with AVPacket. + * @{ + */ +enum AVPacketSideDataType { + /** + * An AV_PKT_DATA_PALETTE side data packet contains exactly AVPALETTE_SIZE + * bytes worth of palette. This side data signals that a new palette is + * present. + */ + AV_PKT_DATA_PALETTE, + + /** + * The AV_PKT_DATA_NEW_EXTRADATA is used to notify the codec or the format + * that the extradata buffer was changed and the receiving side should + * act upon it appropriately. The new extradata is embedded in the side + * data buffer and should be immediately used for processing the current + * frame or packet. + */ + AV_PKT_DATA_NEW_EXTRADATA, + + /** + * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows: + * @code + * u32le param_flags + * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT) + * s32le channel_count + * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT) + * u64le channel_layout + * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE) + * s32le sample_rate + * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS) + * s32le width + * s32le height + * @endcode + */ + AV_PKT_DATA_PARAM_CHANGE, + + /** + * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of + * structures with info about macroblocks relevant to splitting the + * packet into smaller packets on macroblock edges (e.g. as for RFC 2190). + * That is, it does not necessarily contain info about all macroblocks, + * as long as the distance between macroblocks in the info is smaller + * than the target payload size. + * Each MB info structure is 12 bytes, and is laid out as follows: + * @code + * u32le bit offset from the start of the packet + * u8 current quantizer at the start of the macroblock + * u8 GOB number + * u16le macroblock address within the GOB + * u8 horizontal MV predictor + * u8 vertical MV predictor + * u8 horizontal MV predictor for block number 3 + * u8 vertical MV predictor for block number 3 + * @endcode + */ + AV_PKT_DATA_H263_MB_INFO, + + /** + * This side data should be associated with an audio stream and contains + * ReplayGain information in form of the AVReplayGain struct. + */ + AV_PKT_DATA_REPLAYGAIN, + + /** + * This side data contains a 3x3 transformation matrix describing an affine + * transformation that needs to be applied to the decoded video frames for + * correct presentation. + * + * See libavutil/display.h for a detailed description of the data. + */ + AV_PKT_DATA_DISPLAYMATRIX, + + /** + * This side data should be associated with a video stream and contains + * Stereoscopic 3D information in form of the AVStereo3D struct. + */ + AV_PKT_DATA_STEREO3D, + + /** + * This side data should be associated with an audio stream and corresponds + * to enum AVAudioServiceType. + */ + AV_PKT_DATA_AUDIO_SERVICE_TYPE, + + /** + * This side data contains quality related information from the encoder. + * @code + * u32le quality factor of the compressed frame. Allowed range is between 1 (good) and FF_LAMBDA_MAX (bad). + * u8 picture type + * u8 error count + * u16 reserved + * u64le[error count] sum of squared differences between encoder in and output + * @endcode + */ + AV_PKT_DATA_QUALITY_STATS, + + /** + * This side data contains an integer value representing the stream index + * of a "fallback" track. A fallback track indicates an alternate + * track to use when the current track can not be decoded for some reason. + * e.g. no decoder available for codec. + */ + AV_PKT_DATA_FALLBACK_TRACK, + + /** + * This side data corresponds to the AVCPBProperties struct. + */ + AV_PKT_DATA_CPB_PROPERTIES, + + /** + * Recommmends skipping the specified number of samples + * @code + * u32le number of samples to skip from start of this packet + * u32le number of samples to skip from end of this packet + * u8 reason for start skip + * u8 reason for end skip (0=padding silence, 1=convergence) + * @endcode + */ + AV_PKT_DATA_SKIP_SAMPLES, + + /** + * An AV_PKT_DATA_JP_DUALMONO side data packet indicates that + * the packet may contain "dual mono" audio specific to Japanese DTV + * and if it is true, recommends only the selected channel to be used. + * @code + * u8 selected channels (0=mail/left, 1=sub/right, 2=both) + * @endcode + */ + AV_PKT_DATA_JP_DUALMONO, + + /** + * A list of zero terminated key/value strings. There is no end marker for + * the list, so it is required to rely on the side data size to stop. + */ + AV_PKT_DATA_STRINGS_METADATA, + + /** + * Subtitle event position + * @code + * u32le x1 + * u32le y1 + * u32le x2 + * u32le y2 + * @endcode + */ + AV_PKT_DATA_SUBTITLE_POSITION, + + /** + * Data found in BlockAdditional element of matroska container. There is + * no end marker for the data, so it is required to rely on the side data + * size to recognize the end. 8 byte id (as found in BlockAddId) followed + * by data. + */ + AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, + + /** + * The optional first identifier line of a WebVTT cue. + */ + AV_PKT_DATA_WEBVTT_IDENTIFIER, + + /** + * The optional settings (rendering instructions) that immediately + * follow the timestamp specifier of a WebVTT cue. + */ + AV_PKT_DATA_WEBVTT_SETTINGS, + + /** + * A list of zero terminated key/value strings. There is no end marker for + * the list, so it is required to rely on the side data size to stop. This + * side data includes updated metadata which appeared in the stream. + */ + AV_PKT_DATA_METADATA_UPDATE, + + /** + * MPEGTS stream ID as uint8_t, this is required to pass the stream ID + * information from the demuxer to the corresponding muxer. + */ + AV_PKT_DATA_MPEGTS_STREAM_ID, + + /** + * Mastering display metadata (based on SMPTE-2086:2014). This metadata + * should be associated with a video stream and contains data in the form + * of the AVMasteringDisplayMetadata struct. + */ + AV_PKT_DATA_MASTERING_DISPLAY_METADATA, + + /** + * This side data should be associated with a video stream and corresponds + * to the AVSphericalMapping structure. + */ + AV_PKT_DATA_SPHERICAL, + + /** + * Content light level (based on CTA-861.3). This metadata should be + * associated with a video stream and contains data in the form of the + * AVContentLightMetadata struct. + */ + AV_PKT_DATA_CONTENT_LIGHT_LEVEL, + + /** + * ATSC A53 Part 4 Closed Captions. This metadata should be associated with + * a video stream. A53 CC bitstream is stored as uint8_t in AVPacketSideData.data. + * The number of bytes of CC data is AVPacketSideData.size. + */ + AV_PKT_DATA_A53_CC, + + /** + * This side data is encryption initialization data. + * The format is not part of ABI, use av_encryption_init_info_* methods to + * access. + */ + AV_PKT_DATA_ENCRYPTION_INIT_INFO, + + /** + * This side data contains encryption info for how to decrypt the packet. + * The format is not part of ABI, use av_encryption_info_* methods to access. + */ + AV_PKT_DATA_ENCRYPTION_INFO, + + /** + * Active Format Description data consisting of a single byte as specified + * in ETSI TS 101 154 using AVActiveFormatDescription enum. + */ + AV_PKT_DATA_AFD, + + /** + * Producer Reference Time data corresponding to the AVProducerReferenceTime struct, + * usually exported by some encoders (on demand through the prft flag set in the + * AVCodecContext export_side_data field). + */ + AV_PKT_DATA_PRFT, + + /** + * ICC profile data consisting of an opaque octet buffer following the + * format described by ISO 15076-1. + */ + AV_PKT_DATA_ICC_PROFILE, + + /** + * DOVI configuration + * ref: + * dolby-vision-bitstreams-within-the-iso-base-media-file-format-v2.1.2, section 2.2 + * dolby-vision-bitstreams-in-mpeg-2-transport-stream-multiplex-v1.2, section 3.3 + * Tags are stored in struct AVDOVIDecoderConfigurationRecord. + */ + AV_PKT_DATA_DOVI_CONF, + + /** + * Timecode which conforms to SMPTE ST 12-1:2014. The data is an array of 4 uint32_t + * where the first uint32_t describes how many (1-3) of the other timecodes are used. + * The timecode format is described in the documentation of av_timecode_get_smpte_from_framenum() + * function in libavutil/timecode.h. + */ + AV_PKT_DATA_S12M_TIMECODE, + + /** + * HDR10+ dynamic metadata associated with a video frame. The metadata is in + * the form of the AVDynamicHDRPlus struct and contains + * information for color volume transform - application 4 of + * SMPTE 2094-40:2016 standard. + */ + AV_PKT_DATA_DYNAMIC_HDR10_PLUS, + + /** + * The number of side data types. + * This is not part of the public API/ABI in the sense that it may + * change when new side data types are added. + * This must stay the last enum value. + * If its value becomes huge, some code using it + * needs to be updated as it assumes it to be smaller than other limits. + */ + AV_PKT_DATA_NB +}; + +#define AV_PKT_DATA_QUALITY_FACTOR AV_PKT_DATA_QUALITY_STATS //DEPRECATED + +typedef struct AVPacketSideData { + uint8_t *data; + size_t size; + enum AVPacketSideDataType type; +} AVPacketSideData; + +/** + * This structure stores compressed data. It is typically exported by demuxers + * and then passed as input to decoders, or received as output from encoders and + * then passed to muxers. + * + * For video, it should typically contain one compressed frame. For audio it may + * contain several compressed frames. Encoders are allowed to output empty + * packets, with no compressed data, containing only side data + * (e.g. to update some stream parameters at the end of encoding). + * + * The semantics of data ownership depends on the buf field. + * If it is set, the packet data is dynamically allocated and is + * valid indefinitely until a call to av_packet_unref() reduces the + * reference count to 0. + * + * If the buf field is not set av_packet_ref() would make a copy instead + * of increasing the reference count. + * + * The side data is always allocated with av_malloc(), copied by + * av_packet_ref() and freed by av_packet_unref(). + * + * sizeof(AVPacket) being a part of the public ABI is deprecated. once + * av_init_packet() is removed, new packets will only be able to be allocated + * with av_packet_alloc(), and new fields may be added to the end of the struct + * with a minor bump. + * + * @see av_packet_alloc + * @see av_packet_ref + * @see av_packet_unref + */ +typedef struct AVPacket { + /** + * A reference to the reference-counted buffer where the packet data is + * stored. + * May be NULL, then the packet data is not reference-counted. + */ + AVBufferRef *buf; + /** + * Presentation timestamp in AVStream->time_base units; the time at which + * the decompressed packet will be presented to the user. + * Can be AV_NOPTS_VALUE if it is not stored in the file. + * pts MUST be larger or equal to dts as presentation cannot happen before + * decompression, unless one wants to view hex dumps. Some formats misuse + * the terms dts and pts/cts to mean something different. Such timestamps + * must be converted to true pts/dts before they are stored in AVPacket. + */ + int64_t pts; + /** + * Decompression timestamp in AVStream->time_base units; the time at which + * the packet is decompressed. + * Can be AV_NOPTS_VALUE if it is not stored in the file. + */ + int64_t dts; + uint8_t *data; + int size; + int stream_index; + /** + * A combination of AV_PKT_FLAG values + */ + int flags; + /** + * Additional packet data that can be provided by the container. + * Packet can contain several types of side information. + */ + AVPacketSideData *side_data; + int side_data_elems; + + /** + * Duration of this packet in AVStream->time_base units, 0 if unknown. + * Equals next_pts - this_pts in presentation order. + */ + int64_t duration; + + int64_t pos; ///< byte position in stream, -1 if unknown + + /** + * for some private data of the user + */ + void *opaque; + + /** + * AVBufferRef for free use by the API user. FFmpeg will never check the + * contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when + * the packet is unreferenced. av_packet_copy_props() calls create a new + * reference with av_buffer_ref() for the target packet's opaque_ref field. + * + * This is unrelated to the opaque field, although it serves a similar + * purpose. + */ + AVBufferRef *opaque_ref; + + /** + * Time base of the packet's timestamps. + * In the future, this field may be set on packets output by encoders or + * demuxers, but its value will be by default ignored on input to decoders + * or muxers. + */ + AVRational time_base; +} AVPacket; + +#if FF_API_INIT_PACKET +attribute_deprecated +typedef struct AVPacketList { + AVPacket pkt; + struct AVPacketList *next; +} AVPacketList; +#endif + +#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe +#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted +/** + * Flag is used to discard packets which are required to maintain valid + * decoder state but are not required for output and should be dropped + * after decoding. + **/ +#define AV_PKT_FLAG_DISCARD 0x0004 +/** + * The packet comes from a trusted source. + * + * Otherwise-unsafe constructs such as arbitrary pointers to data + * outside the packet may be followed. + */ +#define AV_PKT_FLAG_TRUSTED 0x0008 +/** + * Flag is used to indicate packets that contain frames that can + * be discarded by the decoder. I.e. Non-reference frames. + */ +#define AV_PKT_FLAG_DISPOSABLE 0x0010 + +enum AVSideDataParamChangeFlags { +#if FF_API_OLD_CHANNEL_LAYOUT + /** + * @deprecated those are not used by any decoder + */ + AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001, + AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = 0x0002, +#endif + AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004, + AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008, +}; + +/** + * Allocate an AVPacket and set its fields to default values. The resulting + * struct must be freed using av_packet_free(). + * + * @return An AVPacket filled with default values or NULL on failure. + * + * @note this only allocates the AVPacket itself, not the data buffers. Those + * must be allocated through other means such as av_new_packet. + * + * @see av_new_packet + */ +AVPacket *av_packet_alloc(void); + +/** + * Create a new packet that references the same data as src. + * + * This is a shortcut for av_packet_alloc()+av_packet_ref(). + * + * @return newly created AVPacket on success, NULL on error. + * + * @see av_packet_alloc + * @see av_packet_ref + */ +AVPacket *av_packet_clone(const AVPacket *src); + +/** + * Free the packet, if the packet is reference counted, it will be + * unreferenced first. + * + * @param pkt packet to be freed. The pointer will be set to NULL. + * @note passing NULL is a no-op. + */ +void av_packet_free(AVPacket **pkt); + +#if FF_API_INIT_PACKET +/** + * Initialize optional fields of a packet with default values. + * + * Note, this does not touch the data and size members, which have to be + * initialized separately. + * + * @param pkt packet + * + * @see av_packet_alloc + * @see av_packet_unref + * + * @deprecated This function is deprecated. Once it's removed, + sizeof(AVPacket) will not be a part of the ABI anymore. + */ +attribute_deprecated +void av_init_packet(AVPacket *pkt); +#endif + +/** + * Allocate the payload of a packet and initialize its fields with + * default values. + * + * @param pkt packet + * @param size wanted payload size + * @return 0 if OK, AVERROR_xxx otherwise + */ +int av_new_packet(AVPacket *pkt, int size); + +/** + * Reduce packet size, correctly zeroing padding + * + * @param pkt packet + * @param size new size + */ +void av_shrink_packet(AVPacket *pkt, int size); + +/** + * Increase packet size, correctly zeroing padding + * + * @param pkt packet + * @param grow_by number of bytes by which to increase the size of the packet + */ +int av_grow_packet(AVPacket *pkt, int grow_by); + +/** + * Initialize a reference-counted packet from av_malloc()ed data. + * + * @param pkt packet to be initialized. This function will set the data, size, + * and buf fields, all others are left untouched. + * @param data Data allocated by av_malloc() to be used as packet data. If this + * function returns successfully, the data is owned by the underlying AVBuffer. + * The caller may not access the data through other means. + * @param size size of data in bytes, without the padding. I.e. the full buffer + * size is assumed to be size + AV_INPUT_BUFFER_PADDING_SIZE. + * + * @return 0 on success, a negative AVERROR on error + */ +int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size); + +/** + * Allocate new information of a packet. + * + * @param pkt packet + * @param type side information type + * @param size side information size + * @return pointer to fresh allocated data or NULL otherwise + */ +uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, + size_t size); + +/** + * Wrap an existing array as a packet side data. + * + * @param pkt packet + * @param type side information type + * @param data the side data array. It must be allocated with the av_malloc() + * family of functions. The ownership of the data is transferred to + * pkt. + * @param size side information size + * @return a non-negative number on success, a negative AVERROR code on + * failure. On failure, the packet is unchanged and the data remains + * owned by the caller. + */ +int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type, + uint8_t *data, size_t size); + +/** + * Shrink the already allocated side data buffer + * + * @param pkt packet + * @param type side information type + * @param size new side information size + * @return 0 on success, < 0 on failure + */ +int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type, + size_t size); + +/** + * Get side information from packet. + * + * @param pkt packet + * @param type desired side information type + * @param size If supplied, *size will be set to the size of the side data + * or to zero if the desired side data is not present. + * @return pointer to data if present or NULL otherwise + */ +uint8_t* av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type, + size_t *size); + +const char *av_packet_side_data_name(enum AVPacketSideDataType type); + +/** + * Pack a dictionary for use in side_data. + * + * @param dict The dictionary to pack. + * @param size pointer to store the size of the returned data + * @return pointer to data if successful, NULL otherwise + */ +uint8_t *av_packet_pack_dictionary(AVDictionary *dict, size_t *size); +/** + * Unpack a dictionary from side_data. + * + * @param data data from side_data + * @param size size of the data + * @param dict the metadata storage dictionary + * @return 0 on success, < 0 on failure + */ +int av_packet_unpack_dictionary(const uint8_t *data, size_t size, + AVDictionary **dict); + +/** + * Convenience function to free all the side data stored. + * All the other fields stay untouched. + * + * @param pkt packet + */ +void av_packet_free_side_data(AVPacket *pkt); + +/** + * Setup a new reference to the data described by a given packet + * + * If src is reference-counted, setup dst as a new reference to the + * buffer in src. Otherwise allocate a new buffer in dst and copy the + * data from src into it. + * + * All the other fields are copied from src. + * + * @see av_packet_unref + * + * @param dst Destination packet. Will be completely overwritten. + * @param src Source packet + * + * @return 0 on success, a negative AVERROR on error. On error, dst + * will be blank (as if returned by av_packet_alloc()). + */ +int av_packet_ref(AVPacket *dst, const AVPacket *src); + +/** + * Wipe the packet. + * + * Unreference the buffer referenced by the packet and reset the + * remaining packet fields to their default values. + * + * @param pkt The packet to be unreferenced. + */ +void av_packet_unref(AVPacket *pkt); + +/** + * Move every field in src to dst and reset src. + * + * @see av_packet_unref + * + * @param src Source packet, will be reset + * @param dst Destination packet + */ +void av_packet_move_ref(AVPacket *dst, AVPacket *src); + +/** + * Copy only "properties" fields from src to dst. + * + * Properties for the purpose of this function are all the fields + * beside those related to the packet data (buf, data, size) + * + * @param dst Destination packet + * @param src Source packet + * + * @return 0 on success AVERROR on failure. + */ +int av_packet_copy_props(AVPacket *dst, const AVPacket *src); + +/** + * Ensure the data described by a given packet is reference counted. + * + * @note This function does not ensure that the reference will be writable. + * Use av_packet_make_writable instead for that purpose. + * + * @see av_packet_ref + * @see av_packet_make_writable + * + * @param pkt packet whose data should be made reference counted. + * + * @return 0 on success, a negative AVERROR on error. On failure, the + * packet is unchanged. + */ +int av_packet_make_refcounted(AVPacket *pkt); + +/** + * Create a writable reference for the data described by a given packet, + * avoiding data copy if possible. + * + * @param pkt Packet whose data should be made writable. + * + * @return 0 on success, a negative AVERROR on failure. On failure, the + * packet is unchanged. + */ +int av_packet_make_writable(AVPacket *pkt); + +/** + * Convert valid timing fields (timestamps / durations) in a packet from one + * timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be + * ignored. + * + * @param pkt packet on which the conversion will be performed + * @param tb_src source timebase, in which the timing fields in pkt are + * expressed + * @param tb_dst destination timebase, to which the timing fields will be + * converted + */ +void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst); + +/** + * @} + */ + +#endif // AVCODEC_PACKET_H diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/qsv.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/qsv.h new file mode 100644 index 00000000..b77158ec --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/qsv.h @@ -0,0 +1,107 @@ +/* + * Intel MediaSDK QSV public API + * + * 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_QSV_H +#define AVCODEC_QSV_H + +#include + +#include "libavutil/buffer.h" + +/** + * This struct is used for communicating QSV parameters between libavcodec and + * the caller. It is managed by the caller and must be assigned to + * AVCodecContext.hwaccel_context. + * - decoding: hwaccel_context must be set on return from the get_format() + * callback + * - encoding: hwaccel_context must be set before avcodec_open2() + */ +typedef struct AVQSVContext { + /** + * If non-NULL, the session to use for encoding or decoding. + * Otherwise, libavcodec will try to create an internal session. + */ + mfxSession session; + + /** + * The IO pattern to use. + */ + int iopattern; + + /** + * Extra buffers to pass to encoder or decoder initialization. + */ + mfxExtBuffer **ext_buffers; + int nb_ext_buffers; + + /** + * Encoding only. If this field is set to non-zero by the caller, libavcodec + * will create an mfxExtOpaqueSurfaceAlloc extended buffer and pass it to + * the encoder initialization. This only makes sense if iopattern is also + * set to MFX_IOPATTERN_IN_OPAQUE_MEMORY. + * + * The number of allocated opaque surfaces will be the sum of the number + * required by the encoder and the user-provided value nb_opaque_surfaces. + * The array of the opaque surfaces will be exported to the caller through + * the opaque_surfaces field. + */ + int opaque_alloc; + + /** + * Encoding only, and only if opaque_alloc is set to non-zero. Before + * calling avcodec_open2(), the caller should set this field to the number + * of extra opaque surfaces to allocate beyond what is required by the + * encoder. + * + * On return from avcodec_open2(), this field will be set by libavcodec to + * the total number of allocated opaque surfaces. + */ + int nb_opaque_surfaces; + + /** + * Encoding only, and only if opaque_alloc is set to non-zero. On return + * from avcodec_open2(), this field will be used by libavcodec to export the + * array of the allocated opaque surfaces to the caller, so they can be + * passed to other parts of the pipeline. + * + * The buffer reference exported here is owned and managed by libavcodec, + * the callers should make their own reference with av_buffer_ref() and free + * it with av_buffer_unref() when it is no longer needed. + * + * The buffer data is an nb_opaque_surfaces-sized array of mfxFrameSurface1. + */ + AVBufferRef *opaque_surfaces; + + /** + * Encoding only, and only if opaque_alloc is set to non-zero. On return + * from avcodec_open2(), this field will be set to the surface type used in + * the opaque allocation request. + */ + int opaque_alloc_type; +} AVQSVContext; + +/** + * Allocate a new context. + * + * It must be freed by the caller with av_free(). + */ +AVQSVContext *av_qsv_alloc_context(void); + +#endif /* AVCODEC_QSV_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/vdpau.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/vdpau.h new file mode 100644 index 00000000..3010094d --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/vdpau.h @@ -0,0 +1,157 @@ +/* + * The Video Decode and Presentation API for UNIX (VDPAU) is used for + * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1. + * + * Copyright (C) 2008 NVIDIA + * + * 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_VDPAU_H +#define AVCODEC_VDPAU_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_vdpau + * Public libavcodec VDPAU header. + */ + + +/** + * @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer + * @ingroup lavc_codec_hwaccel + * + * VDPAU hardware acceleration has two modules + * - VDPAU decoding + * - VDPAU presentation + * + * The VDPAU decoding module parses all headers using FFmpeg + * parsing mechanisms and uses VDPAU for the actual decoding. + * + * As per the current implementation, the actual decoding + * and rendering (API calls) are done as part of the VDPAU + * presentation (vo_vdpau.c) module. + * + * @{ + */ + +#include + +#include "libavutil/avconfig.h" +#include "libavutil/attributes.h" + +#include "avcodec.h" + +struct AVCodecContext; +struct AVFrame; + +typedef int (*AVVDPAU_Render2)(struct AVCodecContext *, struct AVFrame *, + const VdpPictureInfo *, uint32_t, + const VdpBitstreamBuffer *); + +/** + * This structure is used to share data between the libavcodec library and + * the client video application. + * The user shall allocate the structure via the av_alloc_vdpau_hwaccel + * function and make it available as + * AVCodecContext.hwaccel_context. Members can be set by the user once + * during initialization or through each AVCodecContext.get_buffer() + * function call. In any case, they must be valid prior to calling + * decoding functions. + * + * The size of this structure is not a part of the public ABI and must not + * be used outside of libavcodec. Use av_vdpau_alloc_context() to allocate an + * AVVDPAUContext. + */ +typedef struct AVVDPAUContext { + /** + * VDPAU decoder handle + * + * Set by user. + */ + VdpDecoder decoder; + + /** + * VDPAU decoder render callback + * + * Set by the user. + */ + VdpDecoderRender *render; + + AVVDPAU_Render2 render2; +} AVVDPAUContext; + +/** + * @brief allocation function for AVVDPAUContext + * + * Allows extending the struct without breaking API/ABI + */ +AVVDPAUContext *av_alloc_vdpaucontext(void); + +AVVDPAU_Render2 av_vdpau_hwaccel_get_render2(const AVVDPAUContext *); +void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2); + +/** + * Associate a VDPAU device with a codec context for hardware acceleration. + * This function is meant to be called from the get_format() codec callback, + * or earlier. It can also be called after avcodec_flush_buffers() to change + * the underlying VDPAU device mid-stream (e.g. to recover from non-transparent + * display preemption). + * + * @note get_format() must return AV_PIX_FMT_VDPAU if this function completes + * successfully. + * + * @param avctx decoding context whose get_format() callback is invoked + * @param device VDPAU device handle to use for hardware acceleration + * @param get_proc_address VDPAU device driver + * @param flags zero of more OR'd AV_HWACCEL_FLAG_* flags + * + * @return 0 on success, an AVERROR code on failure. + */ +int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device, + VdpGetProcAddress *get_proc_address, unsigned flags); + +/** + * Gets the parameters to create an adequate VDPAU video surface for the codec + * context using VDPAU hardware decoding acceleration. + * + * @note Behavior is undefined if the context was not successfully bound to a + * VDPAU device using av_vdpau_bind_context(). + * + * @param avctx the codec context being used for decoding the stream + * @param type storage space for the VDPAU video surface chroma type + * (or NULL to ignore) + * @param width storage space for the VDPAU video surface pixel width + * (or NULL to ignore) + * @param height storage space for the VDPAU video surface pixel height + * (or NULL to ignore) + * + * @return 0 on success, a negative AVERROR code on failure. + */ +int av_vdpau_get_surface_parameters(AVCodecContext *avctx, VdpChromaType *type, + uint32_t *width, uint32_t *height); + +/** + * Allocate an AVVDPAUContext. + * + * @return Newly-allocated AVVDPAUContext or NULL on failure. + */ +AVVDPAUContext *av_vdpau_alloc_context(void); + +/* @}*/ + +#endif /* AVCODEC_VDPAU_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/version.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/version.h new file mode 100644 index 00000000..e488eee3 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/version.h @@ -0,0 +1,45 @@ +/* + * 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_VERSION_H +#define AVCODEC_VERSION_H + +/** + * @file + * @ingroup libavc + * Libavcodec version macros. + */ + +#include "libavutil/version.h" + +#include "version_major.h" + +#define LIBAVCODEC_VERSION_MINOR 42 +#define LIBAVCODEC_VERSION_MICRO 100 + +#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ + LIBAVCODEC_VERSION_MINOR, \ + LIBAVCODEC_VERSION_MICRO) +#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \ + LIBAVCODEC_VERSION_MINOR, \ + LIBAVCODEC_VERSION_MICRO) +#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT + +#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION) + +#endif /* AVCODEC_VERSION_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/version_major.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/version_major.h new file mode 100644 index 00000000..1e23ed5e --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/version_major.h @@ -0,0 +1,54 @@ +/* + * 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_VERSION_MAJOR_H +#define AVCODEC_VERSION_MAJOR_H + +/** + * @file + * @ingroup libavc + * Libavcodec version macros. + */ + +#define LIBAVCODEC_VERSION_MAJOR 59 + +/** + * FF_API_* defines may be placed below to indicate public API that will be + * dropped at a future version bump. The defines themselves are not part of + * the public API and may change, break or disappear at any time. + * + * @note, when bumping the major version it is recommended to manually + * disable each FF_API_* in its own commit instead of disabling them all + * at once through the bump. This improves the git bisect-ability of the change. + */ + +#define FF_API_OPENH264_SLICE_MODE (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_OPENH264_CABAC (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_UNUSED_CODEC_CAPS (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_THREAD_SAFE_CALLBACKS (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_DEBUG_MV (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_GET_FRAME_CLASS (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_AUTO_THREADS (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_INIT_PACKET (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_AVCTX_TIMEBASE (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_FLAG_TRUNCATED (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_SUB_TEXT_FORMAT (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_IDCT_NONE (LIBAVCODEC_VERSION_MAJOR < 60) +#define FF_API_SVTAV1_OPTS (LIBAVCODEC_VERSION_MAJOR < 60) + +#endif /* AVCODEC_VERSION_MAJOR_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/videotoolbox.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/videotoolbox.h new file mode 100644 index 00000000..af2db0d5 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/videotoolbox.h @@ -0,0 +1,127 @@ +/* + * Videotoolbox hardware acceleration + * + * copyright (c) 2012 Sebastien Zwickert + * + * 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_VIDEOTOOLBOX_H +#define AVCODEC_VIDEOTOOLBOX_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_videotoolbox + * Public libavcodec Videotoolbox header. + */ + +#include + +#define Picture QuickdrawPicture +#include +#undef Picture + +#include "libavcodec/avcodec.h" + +/** + * This struct holds all the information that needs to be passed + * between the caller and libavcodec for initializing Videotoolbox decoding. + * Its size is not a part of the public ABI, it must be allocated with + * av_videotoolbox_alloc_context() and freed with av_free(). + */ +typedef struct AVVideotoolboxContext { + /** + * Videotoolbox decompression session object. + * Created and freed the caller. + */ + VTDecompressionSessionRef session; + + /** + * The output callback that must be passed to the session. + * Set by av_videottoolbox_default_init() + */ + VTDecompressionOutputCallback output_callback; + + /** + * CVPixelBuffer Format Type that Videotoolbox will use for decoded frames. + * set by the caller. If this is set to 0, then no specific format is + * requested from the decoder, and its native format is output. + */ + OSType cv_pix_fmt_type; + + /** + * CoreMedia Format Description that Videotoolbox will use to create the decompression session. + * Set by the caller. + */ + CMVideoFormatDescriptionRef cm_fmt_desc; + + /** + * CoreMedia codec type that Videotoolbox will use to create the decompression session. + * Set by the caller. + */ + int cm_codec_type; +} AVVideotoolboxContext; + +/** + * Allocate and initialize a Videotoolbox context. + * + * This function should be called from the get_format() callback when the caller + * selects the AV_PIX_FMT_VIDETOOLBOX format. The caller must then create + * the decoder object (using the output callback provided by libavcodec) that + * will be used for Videotoolbox-accelerated decoding. + * + * When decoding with Videotoolbox is finished, the caller must destroy the decoder + * object and free the Videotoolbox context using av_free(). + * + * @return the newly allocated context or NULL on failure + */ +AVVideotoolboxContext *av_videotoolbox_alloc_context(void); + +/** + * This is a convenience function that creates and sets up the Videotoolbox context using + * an internal implementation. + * + * @param avctx the corresponding codec context + * + * @return >= 0 on success, a negative AVERROR code on failure + */ +int av_videotoolbox_default_init(AVCodecContext *avctx); + +/** + * This is a convenience function that creates and sets up the Videotoolbox context using + * an internal implementation. + * + * @param avctx the corresponding codec context + * @param vtctx the Videotoolbox context to use + * + * @return >= 0 on success, a negative AVERROR code on failure + */ +int av_videotoolbox_default_init2(AVCodecContext *avctx, AVVideotoolboxContext *vtctx); + +/** + * This function must be called to free the Videotoolbox context initialized with + * av_videotoolbox_default_init(). + * + * @param avctx the corresponding codec context + */ +void av_videotoolbox_default_free(AVCodecContext *avctx); + +/** + * @} + */ + +#endif /* AVCODEC_VIDEOTOOLBOX_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/vorbis_parser.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/vorbis_parser.h new file mode 100644 index 00000000..789932ac --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/vorbis_parser.h @@ -0,0 +1,74 @@ +/* + * 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 + */ + +/** + * @file + * A public API for Vorbis parsing + * + * Determines the duration for each packet. + */ + +#ifndef AVCODEC_VORBIS_PARSER_H +#define AVCODEC_VORBIS_PARSER_H + +#include + +typedef struct AVVorbisParseContext AVVorbisParseContext; + +/** + * Allocate and initialize the Vorbis parser using headers in the extradata. + */ +AVVorbisParseContext *av_vorbis_parse_init(const uint8_t *extradata, + int extradata_size); + +/** + * Free the parser and everything associated with it. + */ +void av_vorbis_parse_free(AVVorbisParseContext **s); + +#define VORBIS_FLAG_HEADER 0x00000001 +#define VORBIS_FLAG_COMMENT 0x00000002 +#define VORBIS_FLAG_SETUP 0x00000004 + +/** + * Get the duration for a Vorbis packet. + * + * If @p flags is @c NULL, + * special frames are considered invalid. + * + * @param s Vorbis parser context + * @param buf buffer containing a Vorbis frame + * @param buf_size size of the buffer + * @param flags flags for special frames + */ +int av_vorbis_parse_frame_flags(AVVorbisParseContext *s, const uint8_t *buf, + int buf_size, int *flags); + +/** + * Get the duration for a Vorbis packet. + * + * @param s Vorbis parser context + * @param buf buffer containing a Vorbis frame + * @param buf_size size of the buffer + */ +int av_vorbis_parse_frame(AVVorbisParseContext *s, const uint8_t *buf, + int buf_size); + +void av_vorbis_parse_reset(AVVorbisParseContext *s); + +#endif /* AVCODEC_VORBIS_PARSER_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavcodec/xvmc.h b/third_party/ffmpeg/uos/amd64/include/libavcodec/xvmc.h new file mode 100644 index 00000000..52e70c0d --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavcodec/xvmc.h @@ -0,0 +1,171 @@ +/* + * Copyright (C) 2003 Ivan Kalvachev + * + * 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_XVMC_H +#define AVCODEC_XVMC_H + +/** + * @file + * @ingroup lavc_codec_hwaccel_xvmc + * Public libavcodec XvMC header. + */ + +#pragma message("XvMC is no longer supported; this header is deprecated and will be removed") + +#include + +#include "libavutil/attributes.h" +#include "avcodec.h" + +/** + * @defgroup lavc_codec_hwaccel_xvmc XvMC + * @ingroup lavc_codec_hwaccel + * + * @{ + */ + +#define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct + the number is 1337 speak for the letters IDCT MCo (motion compensation) */ + +struct attribute_deprecated xvmc_pix_fmt { + /** The field contains the special constant value AV_XVMC_ID. + It is used as a test that the application correctly uses the API, + and that there is no corruption caused by pixel routines. + - application - set during initialization + - libavcodec - unchanged + */ + int xvmc_id; + + /** Pointer to the block array allocated by XvMCCreateBlocks(). + The array has to be freed by XvMCDestroyBlocks(). + Each group of 64 values represents one data block of differential + pixel information (in MoCo mode) or coefficients for IDCT. + - application - set the pointer during initialization + - libavcodec - fills coefficients/pixel data into the array + */ + short* data_blocks; + + /** Pointer to the macroblock description array allocated by + XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks(). + - application - set the pointer during initialization + - libavcodec - fills description data into the array + */ + XvMCMacroBlock* mv_blocks; + + /** Number of macroblock descriptions that can be stored in the mv_blocks + array. + - application - set during initialization + - libavcodec - unchanged + */ + int allocated_mv_blocks; + + /** Number of blocks that can be stored at once in the data_blocks array. + - application - set during initialization + - libavcodec - unchanged + */ + int allocated_data_blocks; + + /** Indicate that the hardware would interpret data_blocks as IDCT + coefficients and perform IDCT on them. + - application - set during initialization + - libavcodec - unchanged + */ + int idct; + + /** In MoCo mode it indicates that intra macroblocks are assumed to be in + unsigned format; same as the XVMC_INTRA_UNSIGNED flag. + - application - set during initialization + - libavcodec - unchanged + */ + int unsigned_intra; + + /** Pointer to the surface allocated by XvMCCreateSurface(). + It has to be freed by XvMCDestroySurface() on application exit. + It identifies the frame and its state on the video hardware. + - application - set during initialization + - libavcodec - unchanged + */ + XvMCSurface* p_surface; + +/** Set by the decoder before calling ff_draw_horiz_band(), + needed by the XvMCRenderSurface function. */ +//@{ + /** Pointer to the surface used as past reference + - application - unchanged + - libavcodec - set + */ + XvMCSurface* p_past_surface; + + /** Pointer to the surface used as future reference + - application - unchanged + - libavcodec - set + */ + XvMCSurface* p_future_surface; + + /** top/bottom field or frame + - application - unchanged + - libavcodec - set + */ + unsigned int picture_structure; + + /** XVMC_SECOND_FIELD - 1st or 2nd field in the sequence + - application - unchanged + - libavcodec - set + */ + unsigned int flags; +//}@ + + /** Number of macroblock descriptions in the mv_blocks array + that have already been passed to the hardware. + - application - zeroes it on get_buffer(). + A successful ff_draw_horiz_band() may increment it + with filled_mb_block_num or zero both. + - libavcodec - unchanged + */ + int start_mv_blocks_num; + + /** Number of new macroblock descriptions in the mv_blocks array (after + start_mv_blocks_num) that are filled by libavcodec and have to be + passed to the hardware. + - application - zeroes it on get_buffer() or after successful + ff_draw_horiz_band(). + - libavcodec - increment with one of each stored MB + */ + int filled_mv_blocks_num; + + /** Number of the next free data block; one data block consists of + 64 short values in the data_blocks array. + All blocks before this one have already been claimed by placing their + position into the corresponding block description structure field, + that are part of the mv_blocks array. + - application - zeroes it on get_buffer(). + A successful ff_draw_horiz_band() may zero it together + with start_mb_blocks_num. + - libavcodec - each decoded macroblock increases it by the number + of coded blocks it contains. + */ + int next_free_data_block_num; +}; + +/** + * @} + */ + +#endif /* AVCODEC_XVMC_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavdevice/avdevice.h b/third_party/ffmpeg/uos/amd64/include/libavdevice/avdevice.h new file mode 100644 index 00000000..0b32e59f --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavdevice/avdevice.h @@ -0,0 +1,527 @@ +/* + * 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 AVDEVICE_AVDEVICE_H +#define AVDEVICE_AVDEVICE_H + +#include "version_major.h" +#ifndef HAVE_AV_CONFIG_H +/* When included as part of the ffmpeg build, only include the major version + * to avoid unnecessary rebuilds. When included externally, keep including + * the full version information. */ +#include "version.h" +#endif + +/** + * @file + * @ingroup lavd + * Main libavdevice API header + */ + +/** + * @defgroup lavd libavdevice + * Special devices muxing/demuxing library. + * + * Libavdevice is a complementary library to @ref libavf "libavformat". It + * provides various "special" platform-specific muxers and demuxers, e.g. for + * grabbing devices, audio capture and playback etc. As a consequence, the + * (de)muxers in libavdevice are of the AVFMT_NOFILE type (they use their own + * I/O functions). The filename passed to avformat_open_input() often does not + * refer to an actually existing file, but has some special device-specific + * meaning - e.g. for xcbgrab it is the display name. + * + * To use libavdevice, simply call avdevice_register_all() to register all + * compiled muxers and demuxers. They all use standard libavformat API. + * + * @{ + */ + +#include "libavutil/log.h" +#include "libavutil/opt.h" +#include "libavutil/dict.h" +#include "libavformat/avformat.h" + +/** + * Return the LIBAVDEVICE_VERSION_INT constant. + */ +unsigned avdevice_version(void); + +/** + * Return the libavdevice build-time configuration. + */ +const char *avdevice_configuration(void); + +/** + * Return the libavdevice license. + */ +const char *avdevice_license(void); + +/** + * Initialize libavdevice and register all the input and output devices. + */ +void avdevice_register_all(void); + +/** + * Audio input devices iterator. + * + * If d is NULL, returns the first registered input audio/video device, + * if d is non-NULL, returns the next registered input audio/video device after d + * or NULL if d is the last one. + */ +const AVInputFormat *av_input_audio_device_next(const AVInputFormat *d); + +/** + * Video input devices iterator. + * + * If d is NULL, returns the first registered input audio/video device, + * if d is non-NULL, returns the next registered input audio/video device after d + * or NULL if d is the last one. + */ +const AVInputFormat *av_input_video_device_next(const AVInputFormat *d); + +/** + * Audio output devices iterator. + * + * If d is NULL, returns the first registered output audio/video device, + * if d is non-NULL, returns the next registered output audio/video device after d + * or NULL if d is the last one. + */ +const AVOutputFormat *av_output_audio_device_next(const AVOutputFormat *d); + +/** + * Video output devices iterator. + * + * If d is NULL, returns the first registered output audio/video device, + * if d is non-NULL, returns the next registered output audio/video device after d + * or NULL if d is the last one. + */ +const AVOutputFormat *av_output_video_device_next(const AVOutputFormat *d); + +typedef struct AVDeviceRect { + int x; /**< x coordinate of top left corner */ + int y; /**< y coordinate of top left corner */ + int width; /**< width */ + int height; /**< height */ +} AVDeviceRect; + +/** + * Message types used by avdevice_app_to_dev_control_message(). + */ +enum AVAppToDevMessageType { + /** + * Dummy message. + */ + AV_APP_TO_DEV_NONE = MKBETAG('N','O','N','E'), + + /** + * Window size change message. + * + * Message is sent to the device every time the application changes the size + * of the window device renders to. + * Message should also be sent right after window is created. + * + * data: AVDeviceRect: new window size. + */ + AV_APP_TO_DEV_WINDOW_SIZE = MKBETAG('G','E','O','M'), + + /** + * Repaint request message. + * + * Message is sent to the device when window has to be repainted. + * + * data: AVDeviceRect: area required to be repainted. + * NULL: whole area is required to be repainted. + */ + AV_APP_TO_DEV_WINDOW_REPAINT = MKBETAG('R','E','P','A'), + + /** + * Request pause/play. + * + * Application requests pause/unpause playback. + * Mostly usable with devices that have internal buffer. + * By default devices are not paused. + * + * data: NULL + */ + AV_APP_TO_DEV_PAUSE = MKBETAG('P', 'A', 'U', ' '), + AV_APP_TO_DEV_PLAY = MKBETAG('P', 'L', 'A', 'Y'), + AV_APP_TO_DEV_TOGGLE_PAUSE = MKBETAG('P', 'A', 'U', 'T'), + + /** + * Volume control message. + * + * Set volume level. It may be device-dependent if volume + * is changed per stream or system wide. Per stream volume + * change is expected when possible. + * + * data: double: new volume with range of 0.0 - 1.0. + */ + AV_APP_TO_DEV_SET_VOLUME = MKBETAG('S', 'V', 'O', 'L'), + + /** + * Mute control messages. + * + * Change mute state. It may be device-dependent if mute status + * is changed per stream or system wide. Per stream mute status + * change is expected when possible. + * + * data: NULL. + */ + AV_APP_TO_DEV_MUTE = MKBETAG(' ', 'M', 'U', 'T'), + AV_APP_TO_DEV_UNMUTE = MKBETAG('U', 'M', 'U', 'T'), + AV_APP_TO_DEV_TOGGLE_MUTE = MKBETAG('T', 'M', 'U', 'T'), + + /** + * Get volume/mute messages. + * + * Force the device to send AV_DEV_TO_APP_VOLUME_LEVEL_CHANGED or + * AV_DEV_TO_APP_MUTE_STATE_CHANGED command respectively. + * + * data: NULL. + */ + AV_APP_TO_DEV_GET_VOLUME = MKBETAG('G', 'V', 'O', 'L'), + AV_APP_TO_DEV_GET_MUTE = MKBETAG('G', 'M', 'U', 'T'), +}; + +/** + * Message types used by avdevice_dev_to_app_control_message(). + */ +enum AVDevToAppMessageType { + /** + * Dummy message. + */ + AV_DEV_TO_APP_NONE = MKBETAG('N','O','N','E'), + + /** + * Create window buffer message. + * + * Device requests to create a window buffer. Exact meaning is device- + * and application-dependent. Message is sent before rendering first + * frame and all one-shot initializations should be done here. + * Application is allowed to ignore preferred window buffer size. + * + * @note: Application is obligated to inform about window buffer size + * with AV_APP_TO_DEV_WINDOW_SIZE message. + * + * data: AVDeviceRect: preferred size of the window buffer. + * NULL: no preferred size of the window buffer. + */ + AV_DEV_TO_APP_CREATE_WINDOW_BUFFER = MKBETAG('B','C','R','E'), + + /** + * Prepare window buffer message. + * + * Device requests to prepare a window buffer for rendering. + * Exact meaning is device- and application-dependent. + * Message is sent before rendering of each frame. + * + * data: NULL. + */ + AV_DEV_TO_APP_PREPARE_WINDOW_BUFFER = MKBETAG('B','P','R','E'), + + /** + * Display window buffer message. + * + * Device requests to display a window buffer. + * Message is sent when new frame is ready to be displayed. + * Usually buffers need to be swapped in handler of this message. + * + * data: NULL. + */ + AV_DEV_TO_APP_DISPLAY_WINDOW_BUFFER = MKBETAG('B','D','I','S'), + + /** + * Destroy window buffer message. + * + * Device requests to destroy a window buffer. + * Message is sent when device is about to be destroyed and window + * buffer is not required anymore. + * + * data: NULL. + */ + AV_DEV_TO_APP_DESTROY_WINDOW_BUFFER = MKBETAG('B','D','E','S'), + + /** + * Buffer fullness status messages. + * + * Device signals buffer overflow/underflow. + * + * data: NULL. + */ + AV_DEV_TO_APP_BUFFER_OVERFLOW = MKBETAG('B','O','F','L'), + AV_DEV_TO_APP_BUFFER_UNDERFLOW = MKBETAG('B','U','F','L'), + + /** + * Buffer readable/writable. + * + * Device informs that buffer is readable/writable. + * When possible, device informs how many bytes can be read/write. + * + * @warning Device may not inform when number of bytes than can be read/write changes. + * + * data: int64_t: amount of bytes available to read/write. + * NULL: amount of bytes available to read/write is not known. + */ + AV_DEV_TO_APP_BUFFER_READABLE = MKBETAG('B','R','D',' '), + AV_DEV_TO_APP_BUFFER_WRITABLE = MKBETAG('B','W','R',' '), + + /** + * Mute state change message. + * + * Device informs that mute state has changed. + * + * data: int: 0 for not muted state, non-zero for muted state. + */ + AV_DEV_TO_APP_MUTE_STATE_CHANGED = MKBETAG('C','M','U','T'), + + /** + * Volume level change message. + * + * Device informs that volume level has changed. + * + * data: double: new volume with range of 0.0 - 1.0. + */ + AV_DEV_TO_APP_VOLUME_LEVEL_CHANGED = MKBETAG('C','V','O','L'), +}; + +/** + * Send control message from application to device. + * + * @param s device context. + * @param type message type. + * @param data message data. Exact type depends on message type. + * @param data_size size of message data. + * @return >= 0 on success, negative on error. + * AVERROR(ENOSYS) when device doesn't implement handler of the message. + */ +int avdevice_app_to_dev_control_message(struct AVFormatContext *s, + enum AVAppToDevMessageType type, + void *data, size_t data_size); + +/** + * Send control message from device to application. + * + * @param s device context. + * @param type message type. + * @param data message data. Can be NULL. + * @param data_size size of message data. + * @return >= 0 on success, negative on error. + * AVERROR(ENOSYS) when application doesn't implement handler of the message. + */ +int avdevice_dev_to_app_control_message(struct AVFormatContext *s, + enum AVDevToAppMessageType type, + void *data, size_t data_size); + +#if FF_API_DEVICE_CAPABILITIES +/** + * Following API allows user to probe device capabilities (supported codecs, + * pixel formats, sample formats, resolutions, channel counts, etc). + * It is build on top op AVOption API. + * Queried capabilities make it possible to set up converters of video or audio + * parameters that fit to the device. + * + * List of capabilities that can be queried: + * - Capabilities valid for both audio and video devices: + * - codec: supported audio/video codecs. + * type: AV_OPT_TYPE_INT (AVCodecID value) + * - Capabilities valid for audio devices: + * - sample_format: supported sample formats. + * type: AV_OPT_TYPE_INT (AVSampleFormat value) + * - sample_rate: supported sample rates. + * type: AV_OPT_TYPE_INT + * - channels: supported number of channels. + * type: AV_OPT_TYPE_INT + * - channel_layout: supported channel layouts. + * type: AV_OPT_TYPE_INT64 + * - Capabilities valid for video devices: + * - pixel_format: supported pixel formats. + * type: AV_OPT_TYPE_INT (AVPixelFormat value) + * - window_size: supported window sizes (describes size of the window size presented to the user). + * type: AV_OPT_TYPE_IMAGE_SIZE + * - frame_size: supported frame sizes (describes size of provided video frames). + * type: AV_OPT_TYPE_IMAGE_SIZE + * - fps: supported fps values + * type: AV_OPT_TYPE_RATIONAL + * + * Value of the capability may be set by user using av_opt_set() function + * and AVDeviceCapabilitiesQuery object. Following queries will + * limit results to the values matching already set capabilities. + * For example, setting a codec may impact number of formats or fps values + * returned during next query. Setting invalid value may limit results to zero. + * + * Example of the usage basing on opengl output device: + * + * @code + * AVFormatContext *oc = NULL; + * AVDeviceCapabilitiesQuery *caps = NULL; + * AVOptionRanges *ranges; + * int ret; + * + * if ((ret = avformat_alloc_output_context2(&oc, NULL, "opengl", NULL)) < 0) + * goto fail; + * if (avdevice_capabilities_create(&caps, oc, NULL) < 0) + * goto fail; + * + * //query codecs + * if (av_opt_query_ranges(&ranges, caps, "codec", AV_OPT_MULTI_COMPONENT_RANGE)) < 0) + * goto fail; + * //pick codec here and set it + * av_opt_set(caps, "codec", AV_CODEC_ID_RAWVIDEO, 0); + * + * //query format + * if (av_opt_query_ranges(&ranges, caps, "pixel_format", AV_OPT_MULTI_COMPONENT_RANGE)) < 0) + * goto fail; + * //pick format here and set it + * av_opt_set(caps, "pixel_format", AV_PIX_FMT_YUV420P, 0); + * + * //query and set more capabilities + * + * fail: + * //clean up code + * avdevice_capabilities_free(&query, oc); + * avformat_free_context(oc); + * @endcode + */ + +/** + * Structure describes device capabilities. + * + * It is used by devices in conjunction with av_device_capabilities AVOption table + * to implement capabilities probing API based on AVOption API. Should not be used directly. + */ +typedef struct AVDeviceCapabilitiesQuery { + const AVClass *av_class; + AVFormatContext *device_context; + enum AVCodecID codec; + enum AVSampleFormat sample_format; + enum AVPixelFormat pixel_format; + int sample_rate; + int channels; + int64_t channel_layout; + int window_width; + int window_height; + int frame_width; + int frame_height; + AVRational fps; +} AVDeviceCapabilitiesQuery; + +/** + * AVOption table used by devices to implement device capabilities API. Should not be used by a user. + */ +attribute_deprecated +extern const AVOption av_device_capabilities[]; + +/** + * Initialize capabilities probing API based on AVOption API. + * + * avdevice_capabilities_free() must be called when query capabilities API is + * not used anymore. + * + * @param[out] caps Device capabilities data. Pointer to a NULL pointer must be passed. + * @param s Context of the device. + * @param device_options An AVDictionary filled with device-private options. + * On return this parameter will be destroyed and replaced with a dict + * containing options that were not found. May be NULL. + * The same options must be passed later to avformat_write_header() for output + * devices or avformat_open_input() for input devices, or at any other place + * that affects device-private options. + * + * @return >= 0 on success, negative otherwise. + */ +attribute_deprecated +int avdevice_capabilities_create(AVDeviceCapabilitiesQuery **caps, AVFormatContext *s, + AVDictionary **device_options); + +/** + * Free resources created by avdevice_capabilities_create() + * + * @param caps Device capabilities data to be freed. + * @param s Context of the device. + */ +attribute_deprecated +void avdevice_capabilities_free(AVDeviceCapabilitiesQuery **caps, AVFormatContext *s); +#endif + +/** + * Structure describes basic parameters of the device. + */ +typedef struct AVDeviceInfo { + char *device_name; /**< device name, format depends on device */ + char *device_description; /**< human friendly name */ + enum AVMediaType *media_types; /**< array indicating what media types(s), if any, a device can provide. If null, cannot provide any */ + int nb_media_types; /**< length of media_types array, 0 if device cannot provide any media types */ +} AVDeviceInfo; + +/** + * List of devices. + */ +typedef struct AVDeviceInfoList { + AVDeviceInfo **devices; /**< list of autodetected devices */ + int nb_devices; /**< number of autodetected devices */ + int default_device; /**< index of default device or -1 if no default */ +} AVDeviceInfoList; + +/** + * List devices. + * + * Returns available device names and their parameters. + * + * @note: Some devices may accept system-dependent device names that cannot be + * autodetected. The list returned by this function cannot be assumed to + * be always completed. + * + * @param s device context. + * @param[out] device_list list of autodetected devices. + * @return count of autodetected devices, negative on error. + */ +int avdevice_list_devices(struct AVFormatContext *s, AVDeviceInfoList **device_list); + +/** + * Convenient function to free result of avdevice_list_devices(). + * + * @param devices device list to be freed. + */ +void avdevice_free_list_devices(AVDeviceInfoList **device_list); + +/** + * List devices. + * + * Returns available device names and their parameters. + * These are convinient wrappers for avdevice_list_devices(). + * Device context is allocated and deallocated internally. + * + * @param device device format. May be NULL if device name is set. + * @param device_name device name. May be NULL if device format is set. + * @param device_options An AVDictionary filled with device-private options. May be NULL. + * The same options must be passed later to avformat_write_header() for output + * devices or avformat_open_input() for input devices, or at any other place + * that affects device-private options. + * @param[out] device_list list of autodetected devices + * @return count of autodetected devices, negative on error. + * @note device argument takes precedence over device_name when both are set. + */ +int avdevice_list_input_sources(const AVInputFormat *device, const char *device_name, + AVDictionary *device_options, AVDeviceInfoList **device_list); +int avdevice_list_output_sinks(const AVOutputFormat *device, const char *device_name, + AVDictionary *device_options, AVDeviceInfoList **device_list); + +/** + * @} + */ + +#endif /* AVDEVICE_AVDEVICE_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavdevice/version.h b/third_party/ffmpeg/uos/amd64/include/libavdevice/version.h new file mode 100644 index 00000000..3e654fff --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavdevice/version.h @@ -0,0 +1,45 @@ +/* + * 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 AVDEVICE_VERSION_H +#define AVDEVICE_VERSION_H + +/** + * @file + * @ingroup lavd + * Libavdevice version macros + */ + +#include "libavutil/version.h" + +#include "version_major.h" + +#define LIBAVDEVICE_VERSION_MINOR 8 +#define LIBAVDEVICE_VERSION_MICRO 101 + +#define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \ + LIBAVDEVICE_VERSION_MINOR, \ + LIBAVDEVICE_VERSION_MICRO) +#define LIBAVDEVICE_VERSION AV_VERSION(LIBAVDEVICE_VERSION_MAJOR, \ + LIBAVDEVICE_VERSION_MINOR, \ + LIBAVDEVICE_VERSION_MICRO) +#define LIBAVDEVICE_BUILD LIBAVDEVICE_VERSION_INT + +#define LIBAVDEVICE_IDENT "Lavd" AV_STRINGIFY(LIBAVDEVICE_VERSION) + +#endif /* AVDEVICE_VERSION_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavdevice/version_major.h b/third_party/ffmpeg/uos/amd64/include/libavdevice/version_major.h new file mode 100644 index 00000000..d255ff69 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavdevice/version_major.h @@ -0,0 +1,37 @@ +/* + * 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 AVDEVICE_VERSION_MAJOR_H +#define AVDEVICE_VERSION_MAJOR_H + +/** + * @file + * @ingroup lavd + * Libavdevice version macros + */ + +#define LIBAVDEVICE_VERSION_MAJOR 59 + +/** + * FF_API_* defines may be placed below to indicate public API that will be + * dropped at a future version bump. The defines themselves are not part of + * the public API and may change, break or disappear at any time. + */ +#define FF_API_DEVICE_CAPABILITIES (LIBAVDEVICE_VERSION_MAJOR < 60) + +#endif /* AVDEVICE_VERSION_MAJOR_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavfilter/avfilter.h b/third_party/ffmpeg/uos/amd64/include/libavfilter/avfilter.h new file mode 100644 index 00000000..2e8197c9 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavfilter/avfilter.h @@ -0,0 +1,1196 @@ +/* + * filter layer + * Copyright (c) 2007 Bobby Bingham + * + * 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 AVFILTER_AVFILTER_H +#define AVFILTER_AVFILTER_H + +/** + * @file + * @ingroup lavfi + * Main libavfilter public API header + */ + +/** + * @defgroup lavfi libavfilter + * Graph-based frame editing library. + * + * @{ + */ + +#include + +#include "libavutil/attributes.h" +#include "libavutil/avutil.h" +#include "libavutil/buffer.h" +#include "libavutil/dict.h" +#include "libavutil/frame.h" +#include "libavutil/log.h" +#include "libavutil/samplefmt.h" +#include "libavutil/pixfmt.h" +#include "libavutil/rational.h" + +#include "libavfilter/version_major.h" +#ifndef HAVE_AV_CONFIG_H +/* When included as part of the ffmpeg build, only include the major version + * to avoid unnecessary rebuilds. When included externally, keep including + * the full version information. */ +#include "libavfilter/version.h" +#endif + +/** + * Return the LIBAVFILTER_VERSION_INT constant. + */ +unsigned avfilter_version(void); + +/** + * Return the libavfilter build-time configuration. + */ +const char *avfilter_configuration(void); + +/** + * Return the libavfilter license. + */ +const char *avfilter_license(void); + +typedef struct AVFilterContext AVFilterContext; +typedef struct AVFilterLink AVFilterLink; +typedef struct AVFilterPad AVFilterPad; +typedef struct AVFilterFormats AVFilterFormats; +typedef struct AVFilterChannelLayouts AVFilterChannelLayouts; + +#if FF_API_PAD_COUNT +/** + * Get the number of elements in an AVFilter's inputs or outputs array. + * + * @deprecated Use avfilter_filter_pad_count() instead. + */ +attribute_deprecated +int avfilter_pad_count(const AVFilterPad *pads); +#endif + +/** + * Get the name of an AVFilterPad. + * + * @param pads an array of AVFilterPads + * @param pad_idx index of the pad in the array; it is the caller's + * responsibility to ensure the index is valid + * + * @return name of the pad_idx'th pad in pads + */ +const char *avfilter_pad_get_name(const AVFilterPad *pads, int pad_idx); + +/** + * Get the type of an AVFilterPad. + * + * @param pads an array of AVFilterPads + * @param pad_idx index of the pad in the array; it is the caller's + * responsibility to ensure the index is valid + * + * @return type of the pad_idx'th pad in pads + */ +enum AVMediaType avfilter_pad_get_type(const AVFilterPad *pads, int pad_idx); + +/** + * The number of the filter inputs is not determined just by AVFilter.inputs. + * The filter might add additional inputs during initialization depending on the + * options supplied to it. + */ +#define AVFILTER_FLAG_DYNAMIC_INPUTS (1 << 0) +/** + * The number of the filter outputs is not determined just by AVFilter.outputs. + * The filter might add additional outputs during initialization depending on + * the options supplied to it. + */ +#define AVFILTER_FLAG_DYNAMIC_OUTPUTS (1 << 1) +/** + * The filter supports multithreading by splitting frames into multiple parts + * and processing them concurrently. + */ +#define AVFILTER_FLAG_SLICE_THREADS (1 << 2) +/** + * The filter is a "metadata" filter - it does not modify the frame data in any + * way. It may only affect the metadata (i.e. those fields copied by + * av_frame_copy_props()). + * + * More precisely, this means: + * - video: the data of any frame output by the filter must be exactly equal to + * some frame that is received on one of its inputs. Furthermore, all frames + * produced on a given output must correspond to frames received on the same + * input and their order must be unchanged. Note that the filter may still + * drop or duplicate the frames. + * - audio: the data produced by the filter on any of its outputs (viewed e.g. + * as an array of interleaved samples) must be exactly equal to the data + * received by the filter on one of its inputs. + */ +#define AVFILTER_FLAG_METADATA_ONLY (1 << 3) +/** + * Some filters support a generic "enable" expression option that can be used + * to enable or disable a filter in the timeline. Filters supporting this + * option have this flag set. When the enable expression is false, the default + * no-op filter_frame() function is called in place of the filter_frame() + * callback defined on each input pad, thus the frame is passed unchanged to + * the next filters. + */ +#define AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC (1 << 16) +/** + * Same as AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, except that the filter will + * have its filter_frame() callback(s) called as usual even when the enable + * expression is false. The filter will disable filtering within the + * filter_frame() callback(s) itself, for example executing code depending on + * the AVFilterContext->is_disabled value. + */ +#define AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL (1 << 17) +/** + * Handy mask to test whether the filter supports or no the timeline feature + * (internally or generically). + */ +#define AVFILTER_FLAG_SUPPORT_TIMELINE (AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL) + +/** + * Filter definition. This defines the pads a filter contains, and all the + * callback functions used to interact with the filter. + */ +typedef struct AVFilter { + /** + * Filter name. Must be non-NULL and unique among filters. + */ + const char *name; + + /** + * A description of the filter. May be NULL. + * + * You should use the NULL_IF_CONFIG_SMALL() macro to define it. + */ + const char *description; + + /** + * List of static inputs. + * + * NULL if there are no (static) inputs. Instances of filters with + * AVFILTER_FLAG_DYNAMIC_INPUTS set may have more inputs than present in + * this list. + */ + const AVFilterPad *inputs; + + /** + * List of static outputs. + * + * NULL if there are no (static) outputs. Instances of filters with + * AVFILTER_FLAG_DYNAMIC_OUTPUTS set may have more outputs than present in + * this list. + */ + const AVFilterPad *outputs; + + /** + * A class for the private data, used to declare filter private AVOptions. + * This field is NULL for filters that do not declare any options. + * + * If this field is non-NULL, the first member of the filter private data + * must be a pointer to AVClass, which will be set by libavfilter generic + * code to this class. + */ + const AVClass *priv_class; + + /** + * A combination of AVFILTER_FLAG_* + */ + int flags; + + /***************************************************************** + * All fields below this line are not part of the public API. They + * may not be used outside of libavfilter and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + + /** + * The number of entries in the list of inputs. + */ + uint8_t nb_inputs; + + /** + * The number of entries in the list of outputs. + */ + uint8_t nb_outputs; + + /** + * This field determines the state of the formats union. + * It is an enum FilterFormatsState value. + */ + uint8_t formats_state; + + /** + * Filter pre-initialization function + * + * This callback will be called immediately after the filter context is + * allocated, to allow allocating and initing sub-objects. + * + * If this callback is not NULL, the uninit callback will be called on + * allocation failure. + * + * @return 0 on success, + * AVERROR code on failure (but the code will be + * dropped and treated as ENOMEM by the calling code) + */ + int (*preinit)(AVFilterContext *ctx); + + /** + * Filter initialization function. + * + * This callback will be called only once during the filter lifetime, after + * all the options have been set, but before links between filters are + * established and format negotiation is done. + * + * Basic filter initialization should be done here. Filters with dynamic + * inputs and/or outputs should create those inputs/outputs here based on + * provided options. No more changes to this filter's inputs/outputs can be + * done after this callback. + * + * This callback must not assume that the filter links exist or frame + * parameters are known. + * + * @ref AVFilter.uninit "uninit" is guaranteed to be called even if + * initialization fails, so this callback does not have to clean up on + * failure. + * + * @return 0 on success, a negative AVERROR on failure + */ + int (*init)(AVFilterContext *ctx); + + /** + * Should be set instead of @ref AVFilter.init "init" by the filters that + * want to pass a dictionary of AVOptions to nested contexts that are + * allocated during init. + * + * On return, the options dict should be freed and replaced with one that + * contains all the options which could not be processed by this filter (or + * with NULL if all the options were processed). + * + * Otherwise the semantics is the same as for @ref AVFilter.init "init". + */ + int (*init_dict)(AVFilterContext *ctx, AVDictionary **options); + + /** + * Filter uninitialization function. + * + * Called only once right before the filter is freed. Should deallocate any + * memory held by the filter, release any buffer references, etc. It does + * not need to deallocate the AVFilterContext.priv memory itself. + * + * This callback may be called even if @ref AVFilter.init "init" was not + * called or failed, so it must be prepared to handle such a situation. + */ + void (*uninit)(AVFilterContext *ctx); + + /** + * The state of the following union is determined by formats_state. + * See the documentation of enum FilterFormatsState in internal.h. + */ + union { + /** + * Query formats supported by the filter on its inputs and outputs. + * + * This callback is called after the filter is initialized (so the inputs + * and outputs are fixed), shortly before the format negotiation. This + * callback may be called more than once. + * + * This callback must set AVFilterLink.outcfg.formats on every input link + * and AVFilterLink.incfg.formats on every output link to a list of + * pixel/sample formats that the filter supports on that link. For audio + * links, this filter must also set @ref AVFilterLink.incfg.samplerates + * "in_samplerates" / @ref AVFilterLink.outcfg.samplerates "out_samplerates" + * and @ref AVFilterLink.incfg.channel_layouts "in_channel_layouts" / + * @ref AVFilterLink.outcfg.channel_layouts "out_channel_layouts" analogously. + * + * This callback must never be NULL if the union is in this state. + * + * @return zero on success, a negative value corresponding to an + * AVERROR code otherwise + */ + int (*query_func)(AVFilterContext *); + /** + * A pointer to an array of admissible pixel formats delimited + * by AV_PIX_FMT_NONE. The generic code will use this list + * to indicate that this filter supports each of these pixel formats, + * provided that all inputs and outputs use the same pixel format. + * + * This list must never be NULL if the union is in this state. + * The type of all inputs and outputs of filters using this must + * be AVMEDIA_TYPE_VIDEO. + */ + const enum AVPixelFormat *pixels_list; + /** + * Analogous to pixels, but delimited by AV_SAMPLE_FMT_NONE + * and restricted to filters that only have AVMEDIA_TYPE_AUDIO + * inputs and outputs. + * + * In addition to that the generic code will mark all inputs + * and all outputs as supporting all sample rates and every + * channel count and channel layout, as long as all inputs + * and outputs use the same sample rate and channel count/layout. + */ + const enum AVSampleFormat *samples_list; + /** + * Equivalent to { pix_fmt, AV_PIX_FMT_NONE } as pixels_list. + */ + enum AVPixelFormat pix_fmt; + /** + * Equivalent to { sample_fmt, AV_SAMPLE_FMT_NONE } as samples_list. + */ + enum AVSampleFormat sample_fmt; + } formats; + + int priv_size; ///< size of private data to allocate for the filter + + int flags_internal; ///< Additional flags for avfilter internal use only. + + /** + * Make the filter instance process a command. + * + * @param cmd the command to process, for handling simplicity all commands must be alphanumeric only + * @param arg the argument for the command + * @param res a buffer with size res_size where the filter(s) can return a response. This must not change when the command is not supported. + * @param flags if AVFILTER_CMD_FLAG_FAST is set and the command would be + * time consuming then a filter should treat it like an unsupported command + * + * @returns >=0 on success otherwise an error code. + * AVERROR(ENOSYS) on unsupported commands + */ + int (*process_command)(AVFilterContext *, const char *cmd, const char *arg, char *res, int res_len, int flags); + + /** + * Filter activation function. + * + * Called when any processing is needed from the filter, instead of any + * filter_frame and request_frame on pads. + * + * The function must examine inlinks and outlinks and perform a single + * step of processing. If there is nothing to do, the function must do + * nothing and not return an error. If more steps are or may be + * possible, it must use ff_filter_set_ready() to schedule another + * activation. + */ + int (*activate)(AVFilterContext *ctx); +} AVFilter; + +/** + * Get the number of elements in an AVFilter's inputs or outputs array. + */ +unsigned avfilter_filter_pad_count(const AVFilter *filter, int is_output); + +/** + * Process multiple parts of the frame concurrently. + */ +#define AVFILTER_THREAD_SLICE (1 << 0) + +typedef struct AVFilterInternal AVFilterInternal; + +/** An instance of a filter */ +struct AVFilterContext { + const AVClass *av_class; ///< needed for av_log() and filters common options + + const AVFilter *filter; ///< the AVFilter of which this is an instance + + char *name; ///< name of this filter instance + + AVFilterPad *input_pads; ///< array of input pads + AVFilterLink **inputs; ///< array of pointers to input links + unsigned nb_inputs; ///< number of input pads + + AVFilterPad *output_pads; ///< array of output pads + AVFilterLink **outputs; ///< array of pointers to output links + unsigned nb_outputs; ///< number of output pads + + void *priv; ///< private data for use by the filter + + struct AVFilterGraph *graph; ///< filtergraph this filter belongs to + + /** + * Type of multithreading being allowed/used. A combination of + * AVFILTER_THREAD_* flags. + * + * May be set by the caller before initializing the filter to forbid some + * or all kinds of multithreading for this filter. The default is allowing + * everything. + * + * When the filter is initialized, this field is combined using bit AND with + * AVFilterGraph.thread_type to get the final mask used for determining + * allowed threading types. I.e. a threading type needs to be set in both + * to be allowed. + * + * After the filter is initialized, libavfilter sets this field to the + * threading type that is actually used (0 for no multithreading). + */ + int thread_type; + + /** + * An opaque struct for libavfilter internal use. + */ + AVFilterInternal *internal; + + struct AVFilterCommand *command_queue; + + char *enable_str; ///< enable expression string + void *enable; ///< parsed expression (AVExpr*) + double *var_values; ///< variable values for the enable expression + int is_disabled; ///< the enabled state from the last expression evaluation + + /** + * For filters which will create hardware frames, sets the device the + * filter should create them in. All other filters will ignore this field: + * in particular, a filter which consumes or processes hardware frames will + * instead use the hw_frames_ctx field in AVFilterLink to carry the + * hardware context information. + */ + AVBufferRef *hw_device_ctx; + + /** + * Max number of threads allowed in this filter instance. + * If <= 0, its value is ignored. + * Overrides global number of threads set per filter graph. + */ + int nb_threads; + + /** + * Ready status of the filter. + * A non-0 value means that the filter needs activating; + * a higher value suggests a more urgent activation. + */ + unsigned ready; + + /** + * Sets the number of extra hardware frames which the filter will + * allocate on its output links for use in following filters or by + * the caller. + * + * Some hardware filters require all frames that they will use for + * output to be defined in advance before filtering starts. For such + * filters, any hardware frame pools used for output must therefore be + * of fixed size. The extra frames set here are on top of any number + * that the filter needs internally in order to operate normally. + * + * This field must be set before the graph containing this filter is + * configured. + */ + int extra_hw_frames; +}; + +/** + * Lists of formats / etc. supported by an end of a link. + * + * This structure is directly part of AVFilterLink, in two copies: + * one for the source filter, one for the destination filter. + + * These lists are used for negotiating the format to actually be used, + * which will be loaded into the format and channel_layout members of + * AVFilterLink, when chosen. + */ +typedef struct AVFilterFormatsConfig { + + /** + * List of supported formats (pixel or sample). + */ + AVFilterFormats *formats; + + /** + * Lists of supported sample rates, only for audio. + */ + AVFilterFormats *samplerates; + + /** + * Lists of supported channel layouts, only for audio. + */ + AVFilterChannelLayouts *channel_layouts; + +} AVFilterFormatsConfig; + +/** + * A link between two filters. This contains pointers to the source and + * destination filters between which this link exists, and the indexes of + * the pads involved. In addition, this link also contains the parameters + * which have been negotiated and agreed upon between the filter, such as + * image dimensions, format, etc. + * + * Applications must not normally access the link structure directly. + * Use the buffersrc and buffersink API instead. + * In the future, access to the header may be reserved for filters + * implementation. + */ +struct AVFilterLink { + AVFilterContext *src; ///< source filter + AVFilterPad *srcpad; ///< output pad on the source filter + + AVFilterContext *dst; ///< dest filter + AVFilterPad *dstpad; ///< input pad on the dest filter + + enum AVMediaType type; ///< filter media type + + /* These parameters apply only to video */ + int w; ///< agreed upon image width + int h; ///< agreed upon image height + AVRational sample_aspect_ratio; ///< agreed upon sample aspect ratio + /* These parameters apply only to audio */ +#if FF_API_OLD_CHANNEL_LAYOUT + /** + * channel layout of current buffer (see libavutil/channel_layout.h) + * @deprecated use ch_layout + */ + attribute_deprecated + uint64_t channel_layout; +#endif + int sample_rate; ///< samples per second + + int format; ///< agreed upon media format + + /** + * Define the time base used by the PTS of the frames/samples + * which will pass through this link. + * During the configuration stage, each filter is supposed to + * change only the output timebase, while the timebase of the + * input link is assumed to be an unchangeable property. + */ + AVRational time_base; + + AVChannelLayout ch_layout; ///< channel layout of current buffer (see libavutil/channel_layout.h) + + /***************************************************************** + * All fields below this line are not part of the public API. They + * may not be used outside of libavfilter and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + + /** + * Lists of supported formats / etc. supported by the input filter. + */ + AVFilterFormatsConfig incfg; + + /** + * Lists of supported formats / etc. supported by the output filter. + */ + AVFilterFormatsConfig outcfg; + + /** stage of the initialization of the link properties (dimensions, etc) */ + enum { + AVLINK_UNINIT = 0, ///< not started + AVLINK_STARTINIT, ///< started, but incomplete + AVLINK_INIT ///< complete + } init_state; + + /** + * Graph the filter belongs to. + */ + struct AVFilterGraph *graph; + + /** + * Current timestamp of the link, as defined by the most recent + * frame(s), in link time_base units. + */ + int64_t current_pts; + + /** + * Current timestamp of the link, as defined by the most recent + * frame(s), in AV_TIME_BASE units. + */ + int64_t current_pts_us; + + /** + * Index in the age array. + */ + int age_index; + + /** + * Frame rate of the stream on the link, or 1/0 if unknown or variable; + * if left to 0/0, will be automatically copied from the first input + * of the source filter if it exists. + * + * Sources should set it to the best estimation of the real frame rate. + * If the source frame rate is unknown or variable, set this to 1/0. + * Filters should update it if necessary depending on their function. + * Sinks can use it to set a default output frame rate. + * It is similar to the r_frame_rate field in AVStream. + */ + AVRational frame_rate; + + /** + * Minimum number of samples to filter at once. If filter_frame() is + * called with fewer samples, it will accumulate them in fifo. + * This field and the related ones must not be changed after filtering + * has started. + * If 0, all related fields are ignored. + */ + int min_samples; + + /** + * Maximum number of samples to filter at once. If filter_frame() is + * called with more samples, it will split them. + */ + int max_samples; + + /** + * Number of past frames sent through the link. + */ + int64_t frame_count_in, frame_count_out; + + /** + * Number of past samples sent through the link. + */ + int64_t sample_count_in, sample_count_out; + + /** + * A pointer to a FFFramePool struct. + */ + void *frame_pool; + + /** + * True if a frame is currently wanted on the output of this filter. + * Set when ff_request_frame() is called by the output, + * cleared when a frame is filtered. + */ + int frame_wanted_out; + + /** + * For hwaccel pixel formats, this should be a reference to the + * AVHWFramesContext describing the frames. + */ + AVBufferRef *hw_frames_ctx; + +#ifndef FF_INTERNAL_FIELDS + + /** + * Internal structure members. + * The fields below this limit are internal for libavfilter's use + * and must in no way be accessed by applications. + */ + char reserved[0xF000]; + +#else /* FF_INTERNAL_FIELDS */ + + /** + * Queue of frames waiting to be filtered. + */ + FFFrameQueue fifo; + + /** + * If set, the source filter can not generate a frame as is. + * The goal is to avoid repeatedly calling the request_frame() method on + * the same link. + */ + int frame_blocked_in; + + /** + * Link input status. + * If not zero, all attempts of filter_frame will fail with the + * corresponding code. + */ + int status_in; + + /** + * Timestamp of the input status change. + */ + int64_t status_in_pts; + + /** + * Link output status. + * If not zero, all attempts of request_frame will fail with the + * corresponding code. + */ + int status_out; + +#endif /* FF_INTERNAL_FIELDS */ + +}; + +/** + * Link two filters together. + * + * @param src the source filter + * @param srcpad index of the output pad on the source filter + * @param dst the destination filter + * @param dstpad index of the input pad on the destination filter + * @return zero on success + */ +int avfilter_link(AVFilterContext *src, unsigned srcpad, + AVFilterContext *dst, unsigned dstpad); + +/** + * Free the link in *link, and set its pointer to NULL. + */ +void avfilter_link_free(AVFilterLink **link); + +/** + * Negotiate the media format, dimensions, etc of all inputs to a filter. + * + * @param filter the filter to negotiate the properties for its inputs + * @return zero on successful negotiation + */ +int avfilter_config_links(AVFilterContext *filter); + +#define AVFILTER_CMD_FLAG_ONE 1 ///< Stop once a filter understood the command (for target=all for example), fast filters are favored automatically +#define AVFILTER_CMD_FLAG_FAST 2 ///< Only execute command when its fast (like a video out that supports contrast adjustment in hw) + +/** + * Make the filter instance process a command. + * It is recommended to use avfilter_graph_send_command(). + */ +int avfilter_process_command(AVFilterContext *filter, const char *cmd, const char *arg, char *res, int res_len, int flags); + +/** + * Iterate over all registered filters. + * + * @param opaque a pointer where libavfilter will store the iteration state. Must + * point to NULL to start the iteration. + * + * @return the next registered filter or NULL when the iteration is + * finished + */ +const AVFilter *av_filter_iterate(void **opaque); + +/** + * Get a filter definition matching the given name. + * + * @param name the filter name to find + * @return the filter definition, if any matching one is registered. + * NULL if none found. + */ +const AVFilter *avfilter_get_by_name(const char *name); + + +/** + * Initialize a filter with the supplied parameters. + * + * @param ctx uninitialized filter context to initialize + * @param args Options to initialize the filter with. This must be a + * ':'-separated list of options in the 'key=value' form. + * May be NULL if the options have been set directly using the + * AVOptions API or there are no options that need to be set. + * @return 0 on success, a negative AVERROR on failure + */ +int avfilter_init_str(AVFilterContext *ctx, const char *args); + +/** + * Initialize a filter with the supplied dictionary of options. + * + * @param ctx uninitialized filter context to initialize + * @param options An AVDictionary filled with options for this filter. On + * return this parameter will be destroyed and replaced with + * a dict containing options that were not found. This dictionary + * must be freed by the caller. + * May be NULL, then this function is equivalent to + * avfilter_init_str() with the second parameter set to NULL. + * @return 0 on success, a negative AVERROR on failure + * + * @note This function and avfilter_init_str() do essentially the same thing, + * the difference is in manner in which the options are passed. It is up to the + * calling code to choose whichever is more preferable. The two functions also + * behave differently when some of the provided options are not declared as + * supported by the filter. In such a case, avfilter_init_str() will fail, but + * this function will leave those extra options in the options AVDictionary and + * continue as usual. + */ +int avfilter_init_dict(AVFilterContext *ctx, AVDictionary **options); + +/** + * Free a filter context. This will also remove the filter from its + * filtergraph's list of filters. + * + * @param filter the filter to free + */ +void avfilter_free(AVFilterContext *filter); + +/** + * Insert a filter in the middle of an existing link. + * + * @param link the link into which the filter should be inserted + * @param filt the filter to be inserted + * @param filt_srcpad_idx the input pad on the filter to connect + * @param filt_dstpad_idx the output pad on the filter to connect + * @return zero on success + */ +int avfilter_insert_filter(AVFilterLink *link, AVFilterContext *filt, + unsigned filt_srcpad_idx, unsigned filt_dstpad_idx); + +/** + * @return AVClass for AVFilterContext. + * + * @see av_opt_find(). + */ +const AVClass *avfilter_get_class(void); + +typedef struct AVFilterGraphInternal AVFilterGraphInternal; + +/** + * A function pointer passed to the @ref AVFilterGraph.execute callback to be + * executed multiple times, possibly in parallel. + * + * @param ctx the filter context the job belongs to + * @param arg an opaque parameter passed through from @ref + * AVFilterGraph.execute + * @param jobnr the index of the job being executed + * @param nb_jobs the total number of jobs + * + * @return 0 on success, a negative AVERROR on error + */ +typedef int (avfilter_action_func)(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs); + +/** + * A function executing multiple jobs, possibly in parallel. + * + * @param ctx the filter context to which the jobs belong + * @param func the function to be called multiple times + * @param arg the argument to be passed to func + * @param ret a nb_jobs-sized array to be filled with return values from each + * invocation of func + * @param nb_jobs the number of jobs to execute + * + * @return 0 on success, a negative AVERROR on error + */ +typedef int (avfilter_execute_func)(AVFilterContext *ctx, avfilter_action_func *func, + void *arg, int *ret, int nb_jobs); + +typedef struct AVFilterGraph { + const AVClass *av_class; + AVFilterContext **filters; + unsigned nb_filters; + + char *scale_sws_opts; ///< sws options to use for the auto-inserted scale filters + + /** + * Type of multithreading allowed for filters in this graph. A combination + * of AVFILTER_THREAD_* flags. + * + * May be set by the caller at any point, the setting will apply to all + * filters initialized after that. The default is allowing everything. + * + * When a filter in this graph is initialized, this field is combined using + * bit AND with AVFilterContext.thread_type to get the final mask used for + * determining allowed threading types. I.e. a threading type needs to be + * set in both to be allowed. + */ + int thread_type; + + /** + * Maximum number of threads used by filters in this graph. May be set by + * the caller before adding any filters to the filtergraph. Zero (the + * default) means that the number of threads is determined automatically. + */ + int nb_threads; + + /** + * Opaque object for libavfilter internal use. + */ + AVFilterGraphInternal *internal; + + /** + * Opaque user data. May be set by the caller to an arbitrary value, e.g. to + * be used from callbacks like @ref AVFilterGraph.execute. + * Libavfilter will not touch this field in any way. + */ + void *opaque; + + /** + * This callback may be set by the caller immediately after allocating the + * graph and before adding any filters to it, to provide a custom + * multithreading implementation. + * + * If set, filters with slice threading capability will call this callback + * to execute multiple jobs in parallel. + * + * If this field is left unset, libavfilter will use its internal + * implementation, which may or may not be multithreaded depending on the + * platform and build options. + */ + avfilter_execute_func *execute; + + char *aresample_swr_opts; ///< swr options to use for the auto-inserted aresample filters, Access ONLY through AVOptions + + /** + * Private fields + * + * The following fields are for internal use only. + * Their type, offset, number and semantic can change without notice. + */ + + AVFilterLink **sink_links; + int sink_links_count; + + unsigned disable_auto_convert; +} AVFilterGraph; + +/** + * Allocate a filter graph. + * + * @return the allocated filter graph on success or NULL. + */ +AVFilterGraph *avfilter_graph_alloc(void); + +/** + * Create a new filter instance in a filter graph. + * + * @param graph graph in which the new filter will be used + * @param filter the filter to create an instance of + * @param name Name to give to the new instance (will be copied to + * AVFilterContext.name). This may be used by the caller to identify + * different filters, libavfilter itself assigns no semantics to + * this parameter. May be NULL. + * + * @return the context of the newly created filter instance (note that it is + * also retrievable directly through AVFilterGraph.filters or with + * avfilter_graph_get_filter()) on success or NULL on failure. + */ +AVFilterContext *avfilter_graph_alloc_filter(AVFilterGraph *graph, + const AVFilter *filter, + const char *name); + +/** + * Get a filter instance identified by instance name from graph. + * + * @param graph filter graph to search through. + * @param name filter instance name (should be unique in the graph). + * @return the pointer to the found filter instance or NULL if it + * cannot be found. + */ +AVFilterContext *avfilter_graph_get_filter(AVFilterGraph *graph, const char *name); + +/** + * Create and add a filter instance into an existing graph. + * The filter instance is created from the filter filt and inited + * with the parameter args. opaque is currently ignored. + * + * In case of success put in *filt_ctx the pointer to the created + * filter instance, otherwise set *filt_ctx to NULL. + * + * @param name the instance name to give to the created filter instance + * @param graph_ctx the filter graph + * @return a negative AVERROR error code in case of failure, a non + * negative value otherwise + */ +int avfilter_graph_create_filter(AVFilterContext **filt_ctx, const AVFilter *filt, + const char *name, const char *args, void *opaque, + AVFilterGraph *graph_ctx); + +/** + * Enable or disable automatic format conversion inside the graph. + * + * Note that format conversion can still happen inside explicitly inserted + * scale and aresample filters. + * + * @param flags any of the AVFILTER_AUTO_CONVERT_* constants + */ +void avfilter_graph_set_auto_convert(AVFilterGraph *graph, unsigned flags); + +enum { + AVFILTER_AUTO_CONVERT_ALL = 0, /**< all automatic conversions enabled */ + AVFILTER_AUTO_CONVERT_NONE = -1, /**< all automatic conversions disabled */ +}; + +/** + * Check validity and configure all the links and formats in the graph. + * + * @param graphctx the filter graph + * @param log_ctx context used for logging + * @return >= 0 in case of success, a negative AVERROR code otherwise + */ +int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx); + +/** + * Free a graph, destroy its links, and set *graph to NULL. + * If *graph is NULL, do nothing. + */ +void avfilter_graph_free(AVFilterGraph **graph); + +/** + * A linked-list of the inputs/outputs of the filter chain. + * + * This is mainly useful for avfilter_graph_parse() / avfilter_graph_parse2(), + * where it is used to communicate open (unlinked) inputs and outputs from and + * to the caller. + * This struct specifies, per each not connected pad contained in the graph, the + * filter context and the pad index required for establishing a link. + */ +typedef struct AVFilterInOut { + /** unique name for this input/output in the list */ + char *name; + + /** filter context associated to this input/output */ + AVFilterContext *filter_ctx; + + /** index of the filt_ctx pad to use for linking */ + int pad_idx; + + /** next input/input in the list, NULL if this is the last */ + struct AVFilterInOut *next; +} AVFilterInOut; + +/** + * Allocate a single AVFilterInOut entry. + * Must be freed with avfilter_inout_free(). + * @return allocated AVFilterInOut on success, NULL on failure. + */ +AVFilterInOut *avfilter_inout_alloc(void); + +/** + * Free the supplied list of AVFilterInOut and set *inout to NULL. + * If *inout is NULL, do nothing. + */ +void avfilter_inout_free(AVFilterInOut **inout); + +/** + * Add a graph described by a string to a graph. + * + * @note The caller must provide the lists of inputs and outputs, + * which therefore must be known before calling the function. + * + * @note The inputs parameter describes inputs of the already existing + * part of the graph; i.e. from the point of view of the newly created + * part, they are outputs. Similarly the outputs parameter describes + * outputs of the already existing filters, which are provided as + * inputs to the parsed filters. + * + * @param graph the filter graph where to link the parsed graph context + * @param filters string to be parsed + * @param inputs linked list to the inputs of the graph + * @param outputs linked list to the outputs of the graph + * @return zero on success, a negative AVERROR code on error + */ +int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, + AVFilterInOut *inputs, AVFilterInOut *outputs, + void *log_ctx); + +/** + * Add a graph described by a string to a graph. + * + * In the graph filters description, if the input label of the first + * filter is not specified, "in" is assumed; if the output label of + * the last filter is not specified, "out" is assumed. + * + * @param graph the filter graph where to link the parsed graph context + * @param filters string to be parsed + * @param inputs pointer to a linked list to the inputs of the graph, may be NULL. + * If non-NULL, *inputs is updated to contain the list of open inputs + * after the parsing, should be freed with avfilter_inout_free(). + * @param outputs pointer to a linked list to the outputs of the graph, may be NULL. + * If non-NULL, *outputs is updated to contain the list of open outputs + * after the parsing, should be freed with avfilter_inout_free(). + * @return non negative on success, a negative AVERROR code on error + */ +int avfilter_graph_parse_ptr(AVFilterGraph *graph, const char *filters, + AVFilterInOut **inputs, AVFilterInOut **outputs, + void *log_ctx); + +/** + * Add a graph described by a string to a graph. + * + * @param[in] graph the filter graph where to link the parsed graph context + * @param[in] filters string to be parsed + * @param[out] inputs a linked list of all free (unlinked) inputs of the + * parsed graph will be returned here. It is to be freed + * by the caller using avfilter_inout_free(). + * @param[out] outputs a linked list of all free (unlinked) outputs of the + * parsed graph will be returned here. It is to be freed by the + * caller using avfilter_inout_free(). + * @return zero on success, a negative AVERROR code on error + * + * @note This function returns the inputs and outputs that are left + * unlinked after parsing the graph and the caller then deals with + * them. + * @note This function makes no reference whatsoever to already + * existing parts of the graph and the inputs parameter will on return + * contain inputs of the newly parsed part of the graph. Analogously + * the outputs parameter will contain outputs of the newly created + * filters. + */ +int avfilter_graph_parse2(AVFilterGraph *graph, const char *filters, + AVFilterInOut **inputs, + AVFilterInOut **outputs); + +/** + * Send a command to one or more filter instances. + * + * @param graph the filter graph + * @param target the filter(s) to which the command should be sent + * "all" sends to all filters + * otherwise it can be a filter or filter instance name + * which will send the command to all matching filters. + * @param cmd the command to send, for handling simplicity all commands must be alphanumeric only + * @param arg the argument for the command + * @param res a buffer with size res_size where the filter(s) can return a response. + * + * @returns >=0 on success otherwise an error code. + * AVERROR(ENOSYS) on unsupported commands + */ +int avfilter_graph_send_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, char *res, int res_len, int flags); + +/** + * Queue a command for one or more filter instances. + * + * @param graph the filter graph + * @param target the filter(s) to which the command should be sent + * "all" sends to all filters + * otherwise it can be a filter or filter instance name + * which will send the command to all matching filters. + * @param cmd the command to sent, for handling simplicity all commands must be alphanumeric only + * @param arg the argument for the command + * @param ts time at which the command should be sent to the filter + * + * @note As this executes commands after this function returns, no return code + * from the filter is provided, also AVFILTER_CMD_FLAG_ONE is not supported. + */ +int avfilter_graph_queue_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, int flags, double ts); + + +/** + * Dump a graph into a human-readable string representation. + * + * @param graph the graph to dump + * @param options formatting options; currently ignored + * @return a string, or NULL in case of memory allocation failure; + * the string must be freed using av_free + */ +char *avfilter_graph_dump(AVFilterGraph *graph, const char *options); + +/** + * Request a frame on the oldest sink link. + * + * If the request returns AVERROR_EOF, try the next. + * + * Note that this function is not meant to be the sole scheduling mechanism + * of a filtergraph, only a convenience function to help drain a filtergraph + * in a balanced way under normal circumstances. + * + * Also note that AVERROR_EOF does not mean that frames did not arrive on + * some of the sinks during the process. + * When there are multiple sink links, in case the requested link + * returns an EOF, this may cause a filter to flush pending frames + * which are sent to another sink link, although unrequested. + * + * @return the return value of ff_request_frame(), + * or AVERROR_EOF if all links returned AVERROR_EOF + */ +int avfilter_graph_request_oldest(AVFilterGraph *graph); + +/** + * @} + */ + +#endif /* AVFILTER_AVFILTER_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavfilter/buffersink.h b/third_party/ffmpeg/uos/amd64/include/libavfilter/buffersink.h new file mode 100644 index 00000000..01e7c747 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavfilter/buffersink.h @@ -0,0 +1,209 @@ +/* + * 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 AVFILTER_BUFFERSINK_H +#define AVFILTER_BUFFERSINK_H + +/** + * @file + * @ingroup lavfi_buffersink + * memory buffer sink API for audio and video + */ + +#include "avfilter.h" + +/** + * @defgroup lavfi_buffersink Buffer sink API + * @ingroup lavfi + * @{ + * + * The buffersink and abuffersink filters are there to connect filter graphs + * to applications. They have a single input, connected to the graph, and no + * output. Frames must be extracted using av_buffersink_get_frame() or + * av_buffersink_get_samples(). + * + * The format negotiated by the graph during configuration can be obtained + * using the accessor functions: + * - av_buffersink_get_time_base(), + * - av_buffersink_get_format(), + * - av_buffersink_get_frame_rate(), + * - av_buffersink_get_w(), + * - av_buffersink_get_h(), + * - av_buffersink_get_sample_aspect_ratio(), + * - av_buffersink_get_channels(), + * - av_buffersink_get_ch_layout(), + * - av_buffersink_get_sample_rate(). + * + * The layout returned by av_buffersink_get_ch_layout() must de uninitialized + * by the caller. + * + * The format can be constrained by setting options, using av_opt_set() and + * related functions with the AV_OPT_SEARCH_CHILDREN flag. + * - pix_fmts (int list), + * - sample_fmts (int list), + * - sample_rates (int list), + * - ch_layouts (string), + * - channel_counts (int list), + * - all_channel_counts (bool). + * Most of these options are of type binary, and should be set using + * av_opt_set_int_list() or av_opt_set_bin(). If they are not set, all + * corresponding formats are accepted. + * + * As a special case, if ch_layouts is not set, all valid channel layouts are + * accepted except for UNSPEC layouts, unless all_channel_counts is set. + */ + +/** + * Get a frame with filtered data from sink and put it in frame. + * + * @param ctx pointer to a buffersink or abuffersink filter context. + * @param frame pointer to an allocated frame that will be filled with data. + * The data must be freed using av_frame_unref() / av_frame_free() + * @param flags a combination of AV_BUFFERSINK_FLAG_* flags + * + * @return >= 0 in for success, a negative AVERROR code for failure. + */ +int av_buffersink_get_frame_flags(AVFilterContext *ctx, AVFrame *frame, int flags); + +/** + * Tell av_buffersink_get_buffer_ref() to read video/samples buffer + * reference, but not remove it from the buffer. This is useful if you + * need only to read a video/samples buffer, without to fetch it. + */ +#define AV_BUFFERSINK_FLAG_PEEK 1 + +/** + * Tell av_buffersink_get_buffer_ref() not to request a frame from its input. + * If a frame is already buffered, it is read (and removed from the buffer), + * but if no frame is present, return AVERROR(EAGAIN). + */ +#define AV_BUFFERSINK_FLAG_NO_REQUEST 2 + +#if FF_API_BUFFERSINK_ALLOC +/** + * Deprecated and unused struct to use for initializing a buffersink context. + */ +typedef struct AVBufferSinkParams { + const enum AVPixelFormat *pixel_fmts; ///< list of allowed pixel formats, terminated by AV_PIX_FMT_NONE +} AVBufferSinkParams; + +/** + * Create an AVBufferSinkParams structure. + * + * Must be freed with av_free(). + */ +attribute_deprecated +AVBufferSinkParams *av_buffersink_params_alloc(void); + +/** + * Deprecated and unused struct to use for initializing an abuffersink context. + */ +typedef struct AVABufferSinkParams { + const enum AVSampleFormat *sample_fmts; ///< list of allowed sample formats, terminated by AV_SAMPLE_FMT_NONE + const int64_t *channel_layouts; ///< list of allowed channel layouts, terminated by -1 + const int *channel_counts; ///< list of allowed channel counts, terminated by -1 + int all_channel_counts; ///< if not 0, accept any channel count or layout + int *sample_rates; ///< list of allowed sample rates, terminated by -1 +} AVABufferSinkParams; + +/** + * Create an AVABufferSinkParams structure. + * + * Must be freed with av_free(). + */ +attribute_deprecated +AVABufferSinkParams *av_abuffersink_params_alloc(void); +#endif + +/** + * Set the frame size for an audio buffer sink. + * + * All calls to av_buffersink_get_buffer_ref will return a buffer with + * exactly the specified number of samples, or AVERROR(EAGAIN) if there is + * not enough. The last buffer at EOF will be padded with 0. + */ +void av_buffersink_set_frame_size(AVFilterContext *ctx, unsigned frame_size); + +/** + * @defgroup lavfi_buffersink_accessors Buffer sink accessors + * Get the properties of the stream + * @{ + */ + +enum AVMediaType av_buffersink_get_type (const AVFilterContext *ctx); +AVRational av_buffersink_get_time_base (const AVFilterContext *ctx); +int av_buffersink_get_format (const AVFilterContext *ctx); + +AVRational av_buffersink_get_frame_rate (const AVFilterContext *ctx); +int av_buffersink_get_w (const AVFilterContext *ctx); +int av_buffersink_get_h (const AVFilterContext *ctx); +AVRational av_buffersink_get_sample_aspect_ratio (const AVFilterContext *ctx); + +int av_buffersink_get_channels (const AVFilterContext *ctx); +#if FF_API_OLD_CHANNEL_LAYOUT +attribute_deprecated +uint64_t av_buffersink_get_channel_layout (const AVFilterContext *ctx); +#endif +int av_buffersink_get_ch_layout (const AVFilterContext *ctx, + AVChannelLayout *ch_layout); +int av_buffersink_get_sample_rate (const AVFilterContext *ctx); + +AVBufferRef * av_buffersink_get_hw_frames_ctx (const AVFilterContext *ctx); + +/** @} */ + +/** + * Get a frame with filtered data from sink and put it in frame. + * + * @param ctx pointer to a context of a buffersink or abuffersink AVFilter. + * @param frame pointer to an allocated frame that will be filled with data. + * The data must be freed using av_frame_unref() / av_frame_free() + * + * @return + * - >= 0 if a frame was successfully returned. + * - AVERROR(EAGAIN) if no frames are available at this point; more + * input frames must be added to the filtergraph to get more output. + * - AVERROR_EOF if there will be no more output frames on this sink. + * - A different negative AVERROR code in other failure cases. + */ +int av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame); + +/** + * Same as av_buffersink_get_frame(), but with the ability to specify the number + * of samples read. This function is less efficient than + * av_buffersink_get_frame(), because it copies the data around. + * + * @param ctx pointer to a context of the abuffersink AVFilter. + * @param frame pointer to an allocated frame that will be filled with data. + * The data must be freed using av_frame_unref() / av_frame_free() + * frame will contain exactly nb_samples audio samples, except at + * the end of stream, when it can contain less than nb_samples. + * + * @return The return codes have the same meaning as for + * av_buffersink_get_frame(). + * + * @warning do not mix this function with av_buffersink_get_frame(). Use only one or + * the other with a single sink, not both. + */ +int av_buffersink_get_samples(AVFilterContext *ctx, AVFrame *frame, int nb_samples); + +/** + * @} + */ + +#endif /* AVFILTER_BUFFERSINK_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavfilter/buffersrc.h b/third_party/ffmpeg/uos/amd64/include/libavfilter/buffersrc.h new file mode 100644 index 00000000..3b248b37 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavfilter/buffersrc.h @@ -0,0 +1,218 @@ +/* + * 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 AVFILTER_BUFFERSRC_H +#define AVFILTER_BUFFERSRC_H + +/** + * @file + * @ingroup lavfi_buffersrc + * Memory buffer source API. + */ + +#include "avfilter.h" + +/** + * @defgroup lavfi_buffersrc Buffer source API + * @ingroup lavfi + * @{ + */ + +enum { + + /** + * Do not check for format changes. + */ + AV_BUFFERSRC_FLAG_NO_CHECK_FORMAT = 1, + + /** + * Immediately push the frame to the output. + */ + AV_BUFFERSRC_FLAG_PUSH = 4, + + /** + * Keep a reference to the frame. + * If the frame if reference-counted, create a new reference; otherwise + * copy the frame data. + */ + AV_BUFFERSRC_FLAG_KEEP_REF = 8, + +}; + +/** + * Get the number of failed requests. + * + * A failed request is when the request_frame method is called while no + * frame is present in the buffer. + * The number is reset when a frame is added. + */ +unsigned av_buffersrc_get_nb_failed_requests(AVFilterContext *buffer_src); + +/** + * This structure contains the parameters describing the frames that will be + * passed to this filter. + * + * It should be allocated with av_buffersrc_parameters_alloc() and freed with + * av_free(). All the allocated fields in it remain owned by the caller. + */ +typedef struct AVBufferSrcParameters { + /** + * video: the pixel format, value corresponds to enum AVPixelFormat + * audio: the sample format, value corresponds to enum AVSampleFormat + */ + int format; + /** + * The timebase to be used for the timestamps on the input frames. + */ + AVRational time_base; + + /** + * Video only, the display dimensions of the input frames. + */ + int width, height; + + /** + * Video only, the sample (pixel) aspect ratio. + */ + AVRational sample_aspect_ratio; + + /** + * Video only, the frame rate of the input video. This field must only be + * set to a non-zero value if input stream has a known constant framerate + * and should be left at its initial value if the framerate is variable or + * unknown. + */ + AVRational frame_rate; + + /** + * Video with a hwaccel pixel format only. This should be a reference to an + * AVHWFramesContext instance describing the input frames. + */ + AVBufferRef *hw_frames_ctx; + + /** + * Audio only, the audio sampling rate in samples per second. + */ + int sample_rate; + +#if FF_API_OLD_CHANNEL_LAYOUT + /** + * Audio only, the audio channel layout + * @deprecated use ch_layout + */ + attribute_deprecated + uint64_t channel_layout; +#endif + + /** + * Audio only, the audio channel layout + */ + AVChannelLayout ch_layout; +} AVBufferSrcParameters; + +/** + * Allocate a new AVBufferSrcParameters instance. It should be freed by the + * caller with av_free(). + */ +AVBufferSrcParameters *av_buffersrc_parameters_alloc(void); + +/** + * Initialize the buffersrc or abuffersrc filter with the provided parameters. + * This function may be called multiple times, the later calls override the + * previous ones. Some of the parameters may also be set through AVOptions, then + * whatever method is used last takes precedence. + * + * @param ctx an instance of the buffersrc or abuffersrc filter + * @param param the stream parameters. The frames later passed to this filter + * must conform to those parameters. All the allocated fields in + * param remain owned by the caller, libavfilter will make internal + * copies or references when necessary. + * @return 0 on success, a negative AVERROR code on failure. + */ +int av_buffersrc_parameters_set(AVFilterContext *ctx, AVBufferSrcParameters *param); + +/** + * Add a frame to the buffer source. + * + * @param ctx an instance of the buffersrc filter + * @param frame frame to be added. If the frame is reference counted, this + * function will make a new reference to it. Otherwise the frame data will be + * copied. + * + * @return 0 on success, a negative AVERROR on error + * + * This function is equivalent to av_buffersrc_add_frame_flags() with the + * AV_BUFFERSRC_FLAG_KEEP_REF flag. + */ +av_warn_unused_result +int av_buffersrc_write_frame(AVFilterContext *ctx, const AVFrame *frame); + +/** + * Add a frame to the buffer source. + * + * @param ctx an instance of the buffersrc filter + * @param frame frame to be added. If the frame is reference counted, this + * function will take ownership of the reference(s) and reset the frame. + * Otherwise the frame data will be copied. If this function returns an error, + * the input frame is not touched. + * + * @return 0 on success, a negative AVERROR on error. + * + * @note the difference between this function and av_buffersrc_write_frame() is + * that av_buffersrc_write_frame() creates a new reference to the input frame, + * while this function takes ownership of the reference passed to it. + * + * This function is equivalent to av_buffersrc_add_frame_flags() without the + * AV_BUFFERSRC_FLAG_KEEP_REF flag. + */ +av_warn_unused_result +int av_buffersrc_add_frame(AVFilterContext *ctx, AVFrame *frame); + +/** + * Add a frame to the buffer source. + * + * By default, if the frame is reference-counted, this function will take + * ownership of the reference(s) and reset the frame. This can be controlled + * using the flags. + * + * If this function returns an error, the input frame is not touched. + * + * @param buffer_src pointer to a buffer source context + * @param frame a frame, or NULL to mark EOF + * @param flags a combination of AV_BUFFERSRC_FLAG_* + * @return >= 0 in case of success, a negative AVERROR code + * in case of failure + */ +av_warn_unused_result +int av_buffersrc_add_frame_flags(AVFilterContext *buffer_src, + AVFrame *frame, int flags); + +/** + * Close the buffer source after EOF. + * + * This is similar to passing NULL to av_buffersrc_add_frame_flags() + * except it takes the timestamp of the EOF, i.e. the timestamp of the end + * of the last frame. + */ +int av_buffersrc_close(AVFilterContext *ctx, int64_t pts, unsigned flags); + +/** + * @} + */ + +#endif /* AVFILTER_BUFFERSRC_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavfilter/version.h b/third_party/ffmpeg/uos/amd64/include/libavfilter/version.h new file mode 100644 index 00000000..19a009c1 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavfilter/version.h @@ -0,0 +1,48 @@ +/* + * Version macros. + * + * 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 AVFILTER_VERSION_H +#define AVFILTER_VERSION_H + +/** + * @file + * @ingroup lavfi + * Libavfilter version macros + */ + +#include "libavutil/version.h" + +#include "version_major.h" + +#define LIBAVFILTER_VERSION_MINOR 46 +#define LIBAVFILTER_VERSION_MICRO 101 + + +#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ + LIBAVFILTER_VERSION_MINOR, \ + LIBAVFILTER_VERSION_MICRO) +#define LIBAVFILTER_VERSION AV_VERSION(LIBAVFILTER_VERSION_MAJOR, \ + LIBAVFILTER_VERSION_MINOR, \ + LIBAVFILTER_VERSION_MICRO) +#define LIBAVFILTER_BUILD LIBAVFILTER_VERSION_INT + +#define LIBAVFILTER_IDENT "Lavfi" AV_STRINGIFY(LIBAVFILTER_VERSION) + +#endif /* AVFILTER_VERSION_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavfilter/version_major.h b/third_party/ffmpeg/uos/amd64/include/libavfilter/version_major.h new file mode 100644 index 00000000..de0cf6e9 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavfilter/version_major.h @@ -0,0 +1,42 @@ +/* + * Version macros. + * + * 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 AVFILTER_VERSION_MAJOR_H +#define AVFILTER_VERSION_MAJOR_H + +/** + * @file + * @ingroup lavfi + * Libavfilter version macros + */ + +#define LIBAVFILTER_VERSION_MAJOR 8 + +/** + * FF_API_* defines may be placed below to indicate public API that will be + * dropped at a future version bump. The defines themselves are not part of + * the public API and may change, break or disappear at any time. + */ + +#define FF_API_SWS_PARAM_OPTION (LIBAVFILTER_VERSION_MAJOR < 9) +#define FF_API_BUFFERSINK_ALLOC (LIBAVFILTER_VERSION_MAJOR < 9) +#define FF_API_PAD_COUNT (LIBAVFILTER_VERSION_MAJOR < 9) + +#endif /* AVFILTER_VERSION_MAJOR_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavformat/avformat.h b/third_party/ffmpeg/uos/amd64/include/libavformat/avformat.h new file mode 100644 index 00000000..f12fa7d9 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavformat/avformat.h @@ -0,0 +1,2907 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * 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 AVFORMAT_AVFORMAT_H +#define AVFORMAT_AVFORMAT_H + +/** + * @file + * @ingroup libavf + * Main libavformat public API header + */ + +/** + * @defgroup libavf libavformat + * I/O and Muxing/Demuxing Library + * + * Libavformat (lavf) is a library for dealing with various media container + * formats. Its main two purposes are demuxing - i.e. splitting a media file + * into component streams, and the reverse process of muxing - writing supplied + * data in a specified container format. It also has an @ref lavf_io + * "I/O module" which supports a number of protocols for accessing the data (e.g. + * file, tcp, http and others). + * Unless you are absolutely sure you won't use libavformat's network + * capabilities, you should also call avformat_network_init(). + * + * A supported input format is described by an AVInputFormat struct, conversely + * an output format is described by AVOutputFormat. You can iterate over all + * input/output formats using the av_demuxer_iterate / av_muxer_iterate() functions. + * The protocols layer is not part of the public API, so you can only get the names + * of supported protocols with the avio_enum_protocols() function. + * + * Main lavf structure used for both muxing and demuxing is AVFormatContext, + * which exports all information about the file being read or written. As with + * most Libavformat structures, its size is not part of public ABI, so it cannot be + * allocated on stack or directly with av_malloc(). To create an + * AVFormatContext, use avformat_alloc_context() (some functions, like + * avformat_open_input() might do that for you). + * + * Most importantly an AVFormatContext contains: + * @li the @ref AVFormatContext.iformat "input" or @ref AVFormatContext.oformat + * "output" format. It is either autodetected or set by user for input; + * always set by user for output. + * @li an @ref AVFormatContext.streams "array" of AVStreams, which describe all + * elementary streams stored in the file. AVStreams are typically referred to + * using their index in this array. + * @li an @ref AVFormatContext.pb "I/O context". It is either opened by lavf or + * set by user for input, always set by user for output (unless you are dealing + * with an AVFMT_NOFILE format). + * + * @section lavf_options Passing options to (de)muxers + * It is possible to configure lavf muxers and demuxers using the @ref avoptions + * mechanism. Generic (format-independent) libavformat options are provided by + * AVFormatContext, they can be examined from a user program by calling + * av_opt_next() / av_opt_find() on an allocated AVFormatContext (or its AVClass + * from avformat_get_class()). Private (format-specific) options are provided by + * AVFormatContext.priv_data if and only if AVInputFormat.priv_class / + * AVOutputFormat.priv_class of the corresponding format struct is non-NULL. + * Further options may be provided by the @ref AVFormatContext.pb "I/O context", + * if its AVClass is non-NULL, and the protocols layer. See the discussion on + * nesting in @ref avoptions documentation to learn how to access those. + * + * @section urls + * URL strings in libavformat are made of a scheme/protocol, a ':', and a + * scheme specific string. URLs without a scheme and ':' used for local files + * are supported but deprecated. "file:" should be used for local files. + * + * It is important that the scheme string is not taken from untrusted + * sources without checks. + * + * Note that some schemes/protocols are quite powerful, allowing access to + * both local and remote files, parts of them, concatenations of them, local + * audio and video devices and so on. + * + * @{ + * + * @defgroup lavf_decoding Demuxing + * @{ + * Demuxers read a media file and split it into chunks of data (@em packets). A + * @ref AVPacket "packet" contains one or more encoded frames which belongs to a + * single elementary stream. In the lavf API this process is represented by the + * avformat_open_input() function for opening a file, av_read_frame() for + * reading a single packet and finally avformat_close_input(), which does the + * cleanup. + * + * @section lavf_decoding_open Opening a media file + * The minimum information required to open a file is its URL, which + * is passed to avformat_open_input(), as in the following code: + * @code + * const char *url = "file:in.mp3"; + * AVFormatContext *s = NULL; + * int ret = avformat_open_input(&s, url, NULL, NULL); + * if (ret < 0) + * abort(); + * @endcode + * The above code attempts to allocate an AVFormatContext, open the + * specified file (autodetecting the format) and read the header, exporting the + * information stored there into s. Some formats do not have a header or do not + * store enough information there, so it is recommended that you call the + * avformat_find_stream_info() function which tries to read and decode a few + * frames to find missing information. + * + * In some cases you might want to preallocate an AVFormatContext yourself with + * avformat_alloc_context() and do some tweaking on it before passing it to + * avformat_open_input(). One such case is when you want to use custom functions + * for reading input data instead of lavf internal I/O layer. + * To do that, create your own AVIOContext with avio_alloc_context(), passing + * your reading callbacks to it. Then set the @em pb field of your + * AVFormatContext to newly created AVIOContext. + * + * Since the format of the opened file is in general not known until after + * avformat_open_input() has returned, it is not possible to set demuxer private + * options on a preallocated context. Instead, the options should be passed to + * avformat_open_input() wrapped in an AVDictionary: + * @code + * AVDictionary *options = NULL; + * av_dict_set(&options, "video_size", "640x480", 0); + * av_dict_set(&options, "pixel_format", "rgb24", 0); + * + * if (avformat_open_input(&s, url, NULL, &options) < 0) + * abort(); + * av_dict_free(&options); + * @endcode + * This code passes the private options 'video_size' and 'pixel_format' to the + * demuxer. They would be necessary for e.g. the rawvideo demuxer, since it + * cannot know how to interpret raw video data otherwise. If the format turns + * out to be something different than raw video, those options will not be + * recognized by the demuxer and therefore will not be applied. Such unrecognized + * options are then returned in the options dictionary (recognized options are + * consumed). The calling program can handle such unrecognized options as it + * wishes, e.g. + * @code + * AVDictionaryEntry *e; + * if (e = av_dict_get(options, "", NULL, AV_DICT_IGNORE_SUFFIX)) { + * fprintf(stderr, "Option %s not recognized by the demuxer.\n", e->key); + * abort(); + * } + * @endcode + * + * After you have finished reading the file, you must close it with + * avformat_close_input(). It will free everything associated with the file. + * + * @section lavf_decoding_read Reading from an opened file + * Reading data from an opened AVFormatContext is done by repeatedly calling + * av_read_frame() on it. Each call, if successful, will return an AVPacket + * containing encoded data for one AVStream, identified by + * AVPacket.stream_index. This packet may be passed straight into the libavcodec + * decoding functions avcodec_send_packet() or avcodec_decode_subtitle2() if the + * caller wishes to decode the data. + * + * AVPacket.pts, AVPacket.dts and AVPacket.duration timing information will be + * set if known. They may also be unset (i.e. AV_NOPTS_VALUE for + * pts/dts, 0 for duration) if the stream does not provide them. The timing + * information will be in AVStream.time_base units, i.e. it has to be + * multiplied by the timebase to convert them to seconds. + * + * A packet returned by av_read_frame() is always reference-counted, + * i.e. AVPacket.buf is set and the user may keep it indefinitely. + * The packet must be freed with av_packet_unref() when it is no + * longer needed. + * + * @section lavf_decoding_seek Seeking + * @} + * + * @defgroup lavf_encoding Muxing + * @{ + * Muxers take encoded data in the form of @ref AVPacket "AVPackets" and write + * it into files or other output bytestreams in the specified container format. + * + * The main API functions for muxing are avformat_write_header() for writing the + * file header, av_write_frame() / av_interleaved_write_frame() for writing the + * packets and av_write_trailer() for finalizing the file. + * + * At the beginning of the muxing process, the caller must first call + * avformat_alloc_context() to create a muxing context. The caller then sets up + * the muxer by filling the various fields in this context: + * + * - The @ref AVFormatContext.oformat "oformat" field must be set to select the + * muxer that will be used. + * - Unless the format is of the AVFMT_NOFILE type, the @ref AVFormatContext.pb + * "pb" field must be set to an opened IO context, either returned from + * avio_open2() or a custom one. + * - Unless the format is of the AVFMT_NOSTREAMS type, at least one stream must + * be created with the avformat_new_stream() function. The caller should fill + * the @ref AVStream.codecpar "stream codec parameters" information, such as the + * codec @ref AVCodecParameters.codec_type "type", @ref AVCodecParameters.codec_id + * "id" and other parameters (e.g. width / height, the pixel or sample format, + * etc.) as known. The @ref AVStream.time_base "stream timebase" should + * be set to the timebase that the caller desires to use for this stream (note + * that the timebase actually used by the muxer can be different, as will be + * described later). + * - It is advised to manually initialize only the relevant fields in + * AVCodecParameters, rather than using @ref avcodec_parameters_copy() during + * remuxing: there is no guarantee that the codec context values remain valid + * for both input and output format contexts. + * - The caller may fill in additional information, such as @ref + * AVFormatContext.metadata "global" or @ref AVStream.metadata "per-stream" + * metadata, @ref AVFormatContext.chapters "chapters", @ref + * AVFormatContext.programs "programs", etc. as described in the + * AVFormatContext documentation. Whether such information will actually be + * stored in the output depends on what the container format and the muxer + * support. + * + * When the muxing context is fully set up, the caller must call + * avformat_write_header() to initialize the muxer internals and write the file + * header. Whether anything actually is written to the IO context at this step + * depends on the muxer, but this function must always be called. Any muxer + * private options must be passed in the options parameter to this function. + * + * The data is then sent to the muxer by repeatedly calling av_write_frame() or + * av_interleaved_write_frame() (consult those functions' documentation for + * discussion on the difference between them; only one of them may be used with + * a single muxing context, they should not be mixed). Do note that the timing + * information on the packets sent to the muxer must be in the corresponding + * AVStream's timebase. That timebase is set by the muxer (in the + * avformat_write_header() step) and may be different from the timebase + * requested by the caller. + * + * Once all the data has been written, the caller must call av_write_trailer() + * to flush any buffered packets and finalize the output file, then close the IO + * context (if any) and finally free the muxing context with + * avformat_free_context(). + * @} + * + * @defgroup lavf_io I/O Read/Write + * @{ + * @section lavf_io_dirlist Directory listing + * The directory listing API makes it possible to list files on remote servers. + * + * Some of possible use cases: + * - an "open file" dialog to choose files from a remote location, + * - a recursive media finder providing a player with an ability to play all + * files from a given directory. + * + * @subsection lavf_io_dirlist_open Opening a directory + * At first, a directory needs to be opened by calling avio_open_dir() + * supplied with a URL and, optionally, ::AVDictionary containing + * protocol-specific parameters. The function returns zero or positive + * integer and allocates AVIODirContext on success. + * + * @code + * AVIODirContext *ctx = NULL; + * if (avio_open_dir(&ctx, "smb://example.com/some_dir", NULL) < 0) { + * fprintf(stderr, "Cannot open directory.\n"); + * abort(); + * } + * @endcode + * + * This code tries to open a sample directory using smb protocol without + * any additional parameters. + * + * @subsection lavf_io_dirlist_read Reading entries + * Each directory's entry (i.e. file, another directory, anything else + * within ::AVIODirEntryType) is represented by AVIODirEntry. + * Reading consecutive entries from an opened AVIODirContext is done by + * repeatedly calling avio_read_dir() on it. Each call returns zero or + * positive integer if successful. Reading can be stopped right after the + * NULL entry has been read -- it means there are no entries left to be + * read. The following code reads all entries from a directory associated + * with ctx and prints their names to standard output. + * @code + * AVIODirEntry *entry = NULL; + * for (;;) { + * if (avio_read_dir(ctx, &entry) < 0) { + * fprintf(stderr, "Cannot list directory.\n"); + * abort(); + * } + * if (!entry) + * break; + * printf("%s\n", entry->name); + * avio_free_directory_entry(&entry); + * } + * @endcode + * @} + * + * @defgroup lavf_codec Demuxers + * @{ + * @defgroup lavf_codec_native Native Demuxers + * @{ + * @} + * @defgroup lavf_codec_wrappers External library wrappers + * @{ + * @} + * @} + * @defgroup lavf_protos I/O Protocols + * @{ + * @} + * @defgroup lavf_internal Internal + * @{ + * @} + * @} + */ + +#include +#include /* FILE */ + +#include "libavcodec/codec.h" +#include "libavcodec/codec_par.h" +#include "libavcodec/defs.h" +#include "libavcodec/packet.h" + +#include "libavutil/dict.h" +#include "libavutil/log.h" + +#include "avio.h" +#include "libavformat/version_major.h" +#ifndef HAVE_AV_CONFIG_H +/* When included as part of the ffmpeg build, only include the major version + * to avoid unnecessary rebuilds. When included externally, keep including + * the full version information. */ +#include "libavformat/version.h" +#endif + +struct AVFormatContext; +struct AVStream; + +struct AVDeviceInfoList; +struct AVDeviceCapabilitiesQuery; + +/** + * @defgroup metadata_api Public Metadata API + * @{ + * @ingroup libavf + * The metadata API allows libavformat to export metadata tags to a client + * application when demuxing. Conversely it allows a client application to + * set metadata when muxing. + * + * Metadata is exported or set as pairs of key/value strings in the 'metadata' + * fields of the AVFormatContext, AVStream, AVChapter and AVProgram structs + * using the @ref lavu_dict "AVDictionary" API. Like all strings in FFmpeg, + * metadata is assumed to be UTF-8 encoded Unicode. Note that metadata + * exported by demuxers isn't checked to be valid UTF-8 in most cases. + * + * Important concepts to keep in mind: + * - Keys are unique; there can never be 2 tags with the same key. This is + * also meant semantically, i.e., a demuxer should not knowingly produce + * several keys that are literally different but semantically identical. + * E.g., key=Author5, key=Author6. In this example, all authors must be + * placed in the same tag. + * - Metadata is flat, not hierarchical; there are no subtags. If you + * want to store, e.g., the email address of the child of producer Alice + * and actor Bob, that could have key=alice_and_bobs_childs_email_address. + * - Several modifiers can be applied to the tag name. This is done by + * appending a dash character ('-') and the modifier name in the order + * they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng. + * - language -- a tag whose value is localized for a particular language + * is appended with the ISO 639-2/B 3-letter language code. + * For example: Author-ger=Michael, Author-eng=Mike + * The original/default language is in the unqualified "Author" tag. + * A demuxer should set a default if it sets any translated tag. + * - sorting -- a modified version of a tag that should be used for + * sorting will have '-sort' appended. E.g. artist="The Beatles", + * artist-sort="Beatles, The". + * - Some protocols and demuxers support metadata updates. After a successful + * call to av_read_frame(), AVFormatContext.event_flags or AVStream.event_flags + * will be updated to indicate if metadata changed. In order to detect metadata + * changes on a stream, you need to loop through all streams in the AVFormatContext + * and check their individual event_flags. + * + * - Demuxers attempt to export metadata in a generic format, however tags + * with no generic equivalents are left as they are stored in the container. + * Follows a list of generic tag names: + * + @verbatim + album -- name of the set this work belongs to + album_artist -- main creator of the set/album, if different from artist. + e.g. "Various Artists" for compilation albums. + artist -- main creator of the work + comment -- any additional description of the file. + composer -- who composed the work, if different from artist. + copyright -- name of copyright holder. + creation_time-- date when the file was created, preferably in ISO 8601. + date -- date when the work was created, preferably in ISO 8601. + disc -- number of a subset, e.g. disc in a multi-disc collection. + encoder -- name/settings of the software/hardware that produced the file. + encoded_by -- person/group who created the file. + filename -- original name of the file. + genre -- . + language -- main language in which the work is performed, preferably + in ISO 639-2 format. Multiple languages can be specified by + separating them with commas. + performer -- artist who performed the work, if different from artist. + E.g for "Also sprach Zarathustra", artist would be "Richard + Strauss" and performer "London Philharmonic Orchestra". + publisher -- name of the label/publisher. + service_name -- name of the service in broadcasting (channel name). + service_provider -- name of the service provider in broadcasting. + title -- name of the work. + track -- number of this work in the set, can be in form current/total. + variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of + @endverbatim + * + * Look in the examples section for an application example how to use the Metadata API. + * + * @} + */ + +/* packet functions */ + + +/** + * Allocate and read the payload of a packet and initialize its + * fields with default values. + * + * @param s associated IO context + * @param pkt packet + * @param size desired payload size + * @return >0 (read size) if OK, AVERROR_xxx otherwise + */ +int av_get_packet(AVIOContext *s, AVPacket *pkt, int size); + + +/** + * Read data and append it to the current content of the AVPacket. + * If pkt->size is 0 this is identical to av_get_packet. + * Note that this uses av_grow_packet and thus involves a realloc + * which is inefficient. Thus this function should only be used + * when there is no reasonable way to know (an upper bound of) + * the final size. + * + * @param s associated IO context + * @param pkt packet + * @param size amount of data to read + * @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data + * will not be lost even if an error occurs. + */ +int av_append_packet(AVIOContext *s, AVPacket *pkt, int size); + +/*************************************************/ +/* input/output formats */ + +struct AVCodecTag; + +/** + * This structure contains the data a format has to probe a file. + */ +typedef struct AVProbeData { + const char *filename; + unsigned char *buf; /**< Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. */ + int buf_size; /**< Size of buf except extra allocated bytes */ + const char *mime_type; /**< mime_type, when known. */ +} AVProbeData; + +#define AVPROBE_SCORE_RETRY (AVPROBE_SCORE_MAX/4) +#define AVPROBE_SCORE_STREAM_RETRY (AVPROBE_SCORE_MAX/4-1) + +#define AVPROBE_SCORE_EXTENSION 50 ///< score for file extension +#define AVPROBE_SCORE_MIME 75 ///< score for file mime type +#define AVPROBE_SCORE_MAX 100 ///< maximum score + +#define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer + +/// Demuxer will use avio_open, no opened file should be provided by the caller. +#define AVFMT_NOFILE 0x0001 +#define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */ +/** + * The muxer/demuxer is experimental and should be used with caution. + * + * - demuxers: will not be selected automatically by probing, must be specified + * explicitly. + */ +#define AVFMT_EXPERIMENTAL 0x0004 +#define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */ +#define AVFMT_GLOBALHEADER 0x0040 /**< Format wants global header. */ +#define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */ +#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */ +#define AVFMT_TS_DISCONT 0x0200 /**< Format allows timestamp discontinuities. Note, muxers always require valid (monotone) timestamps */ +#define AVFMT_VARIABLE_FPS 0x0400 /**< Format allows variable fps. */ +#define AVFMT_NODIMENSIONS 0x0800 /**< Format does not need width/height */ +#define AVFMT_NOSTREAMS 0x1000 /**< Format does not require any streams */ +#define AVFMT_NOBINSEARCH 0x2000 /**< Format does not allow to fall back on binary search via read_timestamp */ +#define AVFMT_NOGENSEARCH 0x4000 /**< Format does not allow to fall back on generic search */ +#define AVFMT_NO_BYTE_SEEK 0x8000 /**< Format does not allow seeking by bytes */ +#define AVFMT_ALLOW_FLUSH 0x10000 /**< Format allows flushing. If not set, the muxer will not receive a NULL packet in the write_packet function. */ +#define AVFMT_TS_NONSTRICT 0x20000 /**< Format does not require strictly + increasing timestamps, but they must + still be monotonic */ +#define AVFMT_TS_NEGATIVE 0x40000 /**< Format allows muxing negative + timestamps. If not set the timestamp + will be shifted in av_write_frame and + av_interleaved_write_frame so they + start from 0. + The user or muxer can override this through + AVFormatContext.avoid_negative_ts + */ + +#define AVFMT_SEEK_TO_PTS 0x4000000 /**< Seeking is based on PTS */ + +/** + * @addtogroup lavf_encoding + * @{ + */ +typedef struct AVOutputFormat { + const char *name; + /** + * Descriptive name for the format, meant to be more human-readable + * than name. You should use the NULL_IF_CONFIG_SMALL() macro + * to define it. + */ + const char *long_name; + const char *mime_type; + const char *extensions; /**< comma-separated filename extensions */ + /* output support */ + enum AVCodecID audio_codec; /**< default audio codec */ + enum AVCodecID video_codec; /**< default video codec */ + enum AVCodecID subtitle_codec; /**< default subtitle codec */ + /** + * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, + * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, + * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH, + * AVFMT_TS_NONSTRICT, AVFMT_TS_NEGATIVE + */ + int flags; + + /** + * List of supported codec_id-codec_tag pairs, ordered by "better + * choice first". The arrays are all terminated by AV_CODEC_ID_NONE. + */ + const struct AVCodecTag * const *codec_tag; + + + const AVClass *priv_class; ///< AVClass for the private context + + /***************************************************************** + * No fields below this line are part of the public API. They + * may not be used outside of libavformat and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + /** + * size of private data so that it can be allocated in the wrapper + */ + int priv_data_size; + + /** + * Internal flags. See FF_FMT_FLAG_* in internal.h. + */ + int flags_internal; + + int (*write_header)(struct AVFormatContext *); + /** + * Write a packet. If AVFMT_ALLOW_FLUSH is set in flags, + * pkt can be NULL in order to flush data buffered in the muxer. + * When flushing, return 0 if there still is more data to flush, + * or 1 if everything was flushed and there is no more buffered + * data. + */ + int (*write_packet)(struct AVFormatContext *, AVPacket *pkt); + int (*write_trailer)(struct AVFormatContext *); + /** + * A format-specific function for interleavement. + * If unset, packets will be interleaved by dts. + * + * @param s An AVFormatContext for output. pkt will be added to + * resp. taken from its packet buffer. + * @param[in,out] pkt A packet to be interleaved if has_packet is set; + * also used to return packets. If no packet is returned + * (e.g. on error), pkt is blank on return. + * @param flush 1 if no further packets are available as input and + * all remaining packets should be output. + * @param has_packet If set, pkt contains a packet to be interleaved + * on input; otherwise pkt is blank on input. + * @return 1 if a packet was output, 0 if no packet could be output, + * < 0 if an error occurred + */ + int (*interleave_packet)(struct AVFormatContext *s, AVPacket *pkt, + int flush, int has_packet); + /** + * Test if the given codec can be stored in this container. + * + * @return 1 if the codec is supported, 0 if it is not. + * A negative number if unknown. + * MKTAG('A', 'P', 'I', 'C') if the codec is only supported as AV_DISPOSITION_ATTACHED_PIC + */ + int (*query_codec)(enum AVCodecID id, int std_compliance); + + void (*get_output_timestamp)(struct AVFormatContext *s, int stream, + int64_t *dts, int64_t *wall); + /** + * Allows sending messages from application to device. + */ + int (*control_message)(struct AVFormatContext *s, int type, + void *data, size_t data_size); + + /** + * Write an uncoded AVFrame. + * + * See av_write_uncoded_frame() for details. + * + * The library will free *frame afterwards, but the muxer can prevent it + * by setting the pointer to NULL. + */ + int (*write_uncoded_frame)(struct AVFormatContext *, int stream_index, + AVFrame **frame, unsigned flags); + /** + * Returns device list with it properties. + * @see avdevice_list_devices() for more details. + */ + int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list); + enum AVCodecID data_codec; /**< default data codec */ + /** + * Initialize format. May allocate data here, and set any AVFormatContext or + * AVStream parameters that need to be set before packets are sent. + * This method must not write output. + * + * Return 0 if streams were fully configured, 1 if not, negative AVERROR on failure + * + * Any allocations made here must be freed in deinit(). + */ + int (*init)(struct AVFormatContext *); + /** + * Deinitialize format. If present, this is called whenever the muxer is being + * destroyed, regardless of whether or not the header has been written. + * + * If a trailer is being written, this is called after write_trailer(). + * + * This is called if init() fails as well. + */ + void (*deinit)(struct AVFormatContext *); + /** + * Set up any necessary bitstream filtering and extract any extra data needed + * for the global header. + * + * @note pkt might have been directly forwarded by a meta-muxer; therefore + * pkt->stream_index as well as the pkt's timebase might be invalid. + * Return 0 if more packets from this stream must be checked; 1 if not. + */ + int (*check_bitstream)(struct AVFormatContext *s, struct AVStream *st, + const AVPacket *pkt); +} AVOutputFormat; +/** + * @} + */ + +/** + * @addtogroup lavf_decoding + * @{ + */ +typedef struct AVInputFormat { + /** + * A comma separated list of short names for the format. New names + * may be appended with a minor bump. + */ + const char *name; + + /** + * Descriptive name for the format, meant to be more human-readable + * than name. You should use the NULL_IF_CONFIG_SMALL() macro + * to define it. + */ + const char *long_name; + + /** + * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, + * AVFMT_NOTIMESTAMPS, AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, + * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS. + */ + int flags; + + /** + * If extensions are defined, then no probe is done. You should + * usually not use extension format guessing because it is not + * reliable enough + */ + const char *extensions; + + const struct AVCodecTag * const *codec_tag; + + const AVClass *priv_class; ///< AVClass for the private context + + /** + * Comma-separated list of mime types. + * It is used check for matching mime types while probing. + * @see av_probe_input_format2 + */ + const char *mime_type; + + /***************************************************************** + * No fields below this line are part of the public API. They + * may not be used outside of libavformat and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + /** + * Raw demuxers store their codec ID here. + */ + int raw_codec_id; + + /** + * Size of private data so that it can be allocated in the wrapper. + */ + int priv_data_size; + + /** + * Internal flags. See FF_FMT_FLAG_* in internal.h. + */ + int flags_internal; + + /** + * Tell if a given file has a chance of being parsed as this format. + * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes + * big so you do not have to check for that unless you need more. + */ + int (*read_probe)(const AVProbeData *); + + /** + * Read the format header and initialize the AVFormatContext + * structure. Return 0 if OK. 'avformat_new_stream' should be + * called to create new streams. + */ + int (*read_header)(struct AVFormatContext *); + + /** + * Read one packet and put it in 'pkt'. pts and flags are also + * set. 'avformat_new_stream' can be called only if the flag + * AVFMTCTX_NOHEADER is used and only in the calling thread (not in a + * background thread). + * @return 0 on success, < 0 on error. + * Upon returning an error, pkt must be unreferenced by the caller. + */ + int (*read_packet)(struct AVFormatContext *, AVPacket *pkt); + + /** + * Close the stream. The AVFormatContext and AVStreams are not + * freed by this function + */ + int (*read_close)(struct AVFormatContext *); + + /** + * Seek to a given timestamp relative to the frames in + * stream component stream_index. + * @param stream_index Must not be -1. + * @param flags Selects which direction should be preferred if no exact + * match is available. + * @return >= 0 on success (but not necessarily the new offset) + */ + int (*read_seek)(struct AVFormatContext *, + int stream_index, int64_t timestamp, int flags); + + /** + * Get the next timestamp in stream[stream_index].time_base units. + * @return the timestamp or AV_NOPTS_VALUE if an error occurred + */ + int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index, + int64_t *pos, int64_t pos_limit); + + /** + * Start/resume playing - only meaningful if using a network-based format + * (RTSP). + */ + int (*read_play)(struct AVFormatContext *); + + /** + * Pause playing - only meaningful if using a network-based format + * (RTSP). + */ + int (*read_pause)(struct AVFormatContext *); + + /** + * Seek to timestamp ts. + * Seeking will be done so that the point from which all active streams + * can be presented successfully will be closest to ts and within min/max_ts. + * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. + */ + int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); + + /** + * Returns device list with it properties. + * @see avdevice_list_devices() for more details. + */ + int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list); + +} AVInputFormat; +/** + * @} + */ + +enum AVStreamParseType { + AVSTREAM_PARSE_NONE, + AVSTREAM_PARSE_FULL, /**< full parsing and repack */ + AVSTREAM_PARSE_HEADERS, /**< Only parse headers, do not repack. */ + AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps for frames not starting on a packet boundary */ + AVSTREAM_PARSE_FULL_ONCE, /**< full parsing and repack of the first frame only, only implemented for H.264 currently */ + AVSTREAM_PARSE_FULL_RAW, /**< full parsing and repack with timestamp and position generation by parser for raw + this assumes that each packet in the file contains no demuxer level headers and + just codec level data, otherwise position generation would fail */ +}; + +typedef struct AVIndexEntry { + int64_t pos; + int64_t timestamp; /**< + * Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are available + * when seeking to this entry. That means preferable PTS on keyframe based formats. + * But demuxers can choose to store a different timestamp, if it is more convenient for the implementation or nothing better + * is known + */ +#define AVINDEX_KEYFRAME 0x0001 +#define AVINDEX_DISCARD_FRAME 0x0002 /** + * Flag is used to indicate which frame should be discarded after decoding. + */ + int flags:2; + int size:30; //Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment). + int min_distance; /**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. */ +} AVIndexEntry; + +/** + * The stream should be chosen by default among other streams of the same type, + * unless the user has explicitly specified otherwise. + */ +#define AV_DISPOSITION_DEFAULT (1 << 0) +/** + * The stream is not in original language. + * + * @note AV_DISPOSITION_ORIGINAL is the inverse of this disposition. At most + * one of them should be set in properly tagged streams. + * @note This disposition may apply to any stream type, not just audio. + */ +#define AV_DISPOSITION_DUB (1 << 1) +/** + * The stream is in original language. + * + * @see the notes for AV_DISPOSITION_DUB + */ +#define AV_DISPOSITION_ORIGINAL (1 << 2) +/** + * The stream is a commentary track. + */ +#define AV_DISPOSITION_COMMENT (1 << 3) +/** + * The stream contains song lyrics. + */ +#define AV_DISPOSITION_LYRICS (1 << 4) +/** + * The stream contains karaoke audio. + */ +#define AV_DISPOSITION_KARAOKE (1 << 5) + +/** + * Track should be used during playback by default. + * Useful for subtitle track that should be displayed + * even when user did not explicitly ask for subtitles. + */ +#define AV_DISPOSITION_FORCED (1 << 6) +/** + * The stream is intended for hearing impaired audiences. + */ +#define AV_DISPOSITION_HEARING_IMPAIRED (1 << 7) +/** + * The stream is intended for visually impaired audiences. + */ +#define AV_DISPOSITION_VISUAL_IMPAIRED (1 << 8) +/** + * The audio stream contains music and sound effects without voice. + */ +#define AV_DISPOSITION_CLEAN_EFFECTS (1 << 9) +/** + * The stream is stored in the file as an attached picture/"cover art" (e.g. + * APIC frame in ID3v2). The first (usually only) packet associated with it + * will be returned among the first few packets read from the file unless + * seeking takes place. It can also be accessed at any time in + * AVStream.attached_pic. + */ +#define AV_DISPOSITION_ATTACHED_PIC (1 << 10) +/** + * The stream is sparse, and contains thumbnail images, often corresponding + * to chapter markers. Only ever used with AV_DISPOSITION_ATTACHED_PIC. + */ +#define AV_DISPOSITION_TIMED_THUMBNAILS (1 << 11) + +/** + * The stream is intended to be mixed with a spatial audio track. For example, + * it could be used for narration or stereo music, and may remain unchanged by + * listener head rotation. + */ +#define AV_DISPOSITION_NON_DIEGETIC (1 << 12) + +/** + * The subtitle stream contains captions, providing a transcription and possibly + * a translation of audio. Typically intended for hearing-impaired audiences. + */ +#define AV_DISPOSITION_CAPTIONS (1 << 16) +/** + * The subtitle stream contains a textual description of the video content. + * Typically intended for visually-impaired audiences or for the cases where the + * video cannot be seen. + */ +#define AV_DISPOSITION_DESCRIPTIONS (1 << 17) +/** + * The subtitle stream contains time-aligned metadata that is not intended to be + * directly presented to the user. + */ +#define AV_DISPOSITION_METADATA (1 << 18) +/** + * The audio stream is intended to be mixed with another stream before + * presentation. + * Corresponds to mix_type=0 in mpegts. + */ +#define AV_DISPOSITION_DEPENDENT (1 << 19) +/** + * The video stream contains still images. + */ +#define AV_DISPOSITION_STILL_IMAGE (1 << 20) + +/** + * @return The AV_DISPOSITION_* flag corresponding to disp or a negative error + * code if disp does not correspond to a known stream disposition. + */ +int av_disposition_from_string(const char *disp); + +/** + * @param disposition a combination of AV_DISPOSITION_* values + * @return The string description corresponding to the lowest set bit in + * disposition. NULL when the lowest set bit does not correspond + * to a known disposition or when disposition is 0. + */ +const char *av_disposition_to_string(int disposition); + +/** + * Options for behavior on timestamp wrap detection. + */ +#define AV_PTS_WRAP_IGNORE 0 ///< ignore the wrap +#define AV_PTS_WRAP_ADD_OFFSET 1 ///< add the format specific offset on wrap detection +#define AV_PTS_WRAP_SUB_OFFSET -1 ///< subtract the format specific offset on wrap detection + +/** + * Stream structure. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVStream) must not be used outside libav*. + */ +typedef struct AVStream { +#if FF_API_AVSTREAM_CLASS + /** + * A class for @ref avoptions. Set on stream creation. + */ + const AVClass *av_class; +#endif + + int index; /**< stream index in AVFormatContext */ + /** + * Format-specific stream ID. + * decoding: set by libavformat + * encoding: set by the user, replaced by libavformat if left unset + */ + int id; + + void *priv_data; + + /** + * This is the fundamental unit of time (in seconds) in terms + * of which frame timestamps are represented. + * + * decoding: set by libavformat + * encoding: May be set by the caller before avformat_write_header() to + * provide a hint to the muxer about the desired timebase. In + * avformat_write_header(), the muxer will overwrite this field + * with the timebase that will actually be used for the timestamps + * written into the file (which may or may not be related to the + * user-provided one, depending on the format). + */ + AVRational time_base; + + /** + * Decoding: pts of the first frame of the stream in presentation order, in stream time base. + * Only set this if you are absolutely 100% sure that the value you set + * it to really is the pts of the first frame. + * This may be undefined (AV_NOPTS_VALUE). + * @note The ASF header does NOT contain a correct start_time the ASF + * demuxer must NOT set this. + */ + int64_t start_time; + + /** + * Decoding: duration of the stream, in stream time base. + * If a source file does not specify a duration, but does specify + * a bitrate, this value will be estimated from bitrate and file size. + * + * Encoding: May be set by the caller before avformat_write_header() to + * provide a hint to the muxer about the estimated duration. + */ + int64_t duration; + + int64_t nb_frames; ///< number of frames in this stream if known or 0 + + /** + * Stream disposition - a combination of AV_DISPOSITION_* flags. + * - demuxing: set by libavformat when creating the stream or in + * avformat_find_stream_info(). + * - muxing: may be set by the caller before avformat_write_header(). + */ + int disposition; + + enum AVDiscard discard; ///< Selects which packets can be discarded at will and do not need to be demuxed. + + /** + * sample aspect ratio (0 if unknown) + * - encoding: Set by user. + * - decoding: Set by libavformat. + */ + AVRational sample_aspect_ratio; + + AVDictionary *metadata; + + /** + * Average framerate + * + * - demuxing: May be set by libavformat when creating the stream or in + * avformat_find_stream_info(). + * - muxing: May be set by the caller before avformat_write_header(). + */ + AVRational avg_frame_rate; + + /** + * For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet + * will contain the attached picture. + * + * decoding: set by libavformat, must not be modified by the caller. + * encoding: unused + */ + AVPacket attached_pic; + + /** + * An array of side data that applies to the whole stream (i.e. the + * container does not allow it to change between packets). + * + * There may be no overlap between the side data in this array and side data + * in the packets. I.e. a given side data is either exported by the muxer + * (demuxing) / set by the caller (muxing) in this array, then it never + * appears in the packets, or the side data is exported / sent through + * the packets (always in the first packet where the value becomes known or + * changes), then it does not appear in this array. + * + * - demuxing: Set by libavformat when the stream is created. + * - muxing: May be set by the caller before avformat_write_header(). + * + * Freed by libavformat in avformat_free_context(). + * + * @see av_format_inject_global_side_data() + */ + AVPacketSideData *side_data; + /** + * The number of elements in the AVStream.side_data array. + */ + int nb_side_data; + + /** + * Flags indicating events happening on the stream, a combination of + * AVSTREAM_EVENT_FLAG_*. + * + * - demuxing: may be set by the demuxer in avformat_open_input(), + * avformat_find_stream_info() and av_read_frame(). Flags must be cleared + * by the user once the event has been handled. + * - muxing: may be set by the user after avformat_write_header(). to + * indicate a user-triggered event. The muxer will clear the flags for + * events it has handled in av_[interleaved]_write_frame(). + */ + int event_flags; +/** + * - demuxing: the demuxer read new metadata from the file and updated + * AVStream.metadata accordingly + * - muxing: the user updated AVStream.metadata and wishes the muxer to write + * it into the file + */ +#define AVSTREAM_EVENT_FLAG_METADATA_UPDATED 0x0001 +/** + * - demuxing: new packets for this stream were read from the file. This + * event is informational only and does not guarantee that new packets + * for this stream will necessarily be returned from av_read_frame(). + */ +#define AVSTREAM_EVENT_FLAG_NEW_PACKETS (1 << 1) + + /** + * Real base framerate of the stream. + * This is the lowest framerate with which all timestamps can be + * represented accurately (it is the least common multiple of all + * framerates in the stream). Note, this value is just a guess! + * For example, if the time base is 1/90000 and all frames have either + * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. + */ + AVRational r_frame_rate; + + /** + * Codec parameters associated with this stream. Allocated and freed by + * libavformat in avformat_new_stream() and avformat_free_context() + * respectively. + * + * - demuxing: filled by libavformat on stream creation or in + * avformat_find_stream_info() + * - muxing: filled by the caller before avformat_write_header() + */ + AVCodecParameters *codecpar; + + /** + * Number of bits in timestamps. Used for wrapping control. + * + * - demuxing: set by libavformat + * - muxing: set by libavformat + * + */ + int pts_wrap_bits; +} AVStream; + +struct AVCodecParserContext *av_stream_get_parser(const AVStream *s); + +/** + * Returns the pts of the last muxed packet + its duration + * + * the retuned value is undefined when used with a demuxer. + */ +int64_t av_stream_get_end_pts(const AVStream *st); + +#define AV_PROGRAM_RUNNING 1 + +/** + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVProgram) must not be used outside libav*. + */ +typedef struct AVProgram { + int id; + int flags; + enum AVDiscard discard; ///< selects which program to discard and which to feed to the caller + unsigned int *stream_index; + unsigned int nb_stream_indexes; + AVDictionary *metadata; + + int program_num; + int pmt_pid; + int pcr_pid; + int pmt_version; + + /***************************************************************** + * All fields below this line are not part of the public API. They + * may not be used outside of libavformat and can be changed and + * removed at will. + * New public fields should be added right above. + ***************************************************************** + */ + int64_t start_time; + int64_t end_time; + + int64_t pts_wrap_reference; ///< reference dts for wrap detection + int pts_wrap_behavior; ///< behavior on wrap detection +} AVProgram; + +#define AVFMTCTX_NOHEADER 0x0001 /**< signal that no header is present + (streams are added dynamically) */ +#define AVFMTCTX_UNSEEKABLE 0x0002 /**< signal that the stream is definitely + not seekable, and attempts to call the + seek function will fail. For some + network protocols (e.g. HLS), this can + change dynamically at runtime. */ + +typedef struct AVChapter { + int64_t id; ///< unique ID to identify the chapter + AVRational time_base; ///< time base in which the start/end timestamps are specified + int64_t start, end; ///< chapter start/end time in time_base units + AVDictionary *metadata; +} AVChapter; + + +/** + * Callback used by devices to communicate with application. + */ +typedef int (*av_format_control_message)(struct AVFormatContext *s, int type, + void *data, size_t data_size); + +typedef int (*AVOpenCallback)(struct AVFormatContext *s, AVIOContext **pb, const char *url, int flags, + const AVIOInterruptCB *int_cb, AVDictionary **options); + +/** + * The duration of a video can be estimated through various ways, and this enum can be used + * to know how the duration was estimated. + */ +enum AVDurationEstimationMethod { + AVFMT_DURATION_FROM_PTS, ///< Duration accurately estimated from PTSes + AVFMT_DURATION_FROM_STREAM, ///< Duration estimated from a stream with a known duration + AVFMT_DURATION_FROM_BITRATE ///< Duration estimated from bitrate (less accurate) +}; + +/** + * Format I/O context. + * New fields can be added to the end with minor version bumps. + * Removal, reordering and changes to existing fields require a major + * version bump. + * sizeof(AVFormatContext) must not be used outside libav*, use + * avformat_alloc_context() to create an AVFormatContext. + * + * Fields can be accessed through AVOptions (av_opt*), + * the name string used matches the associated command line parameter name and + * can be found in libavformat/options_table.h. + * The AVOption/command line parameter names differ in some cases from the C + * structure field names for historic reasons or brevity. + */ +typedef struct AVFormatContext { + /** + * A class for logging and @ref avoptions. Set by avformat_alloc_context(). + * Exports (de)muxer private options if they exist. + */ + const AVClass *av_class; + + /** + * The input container format. + * + * Demuxing only, set by avformat_open_input(). + */ + const struct AVInputFormat *iformat; + + /** + * The output container format. + * + * Muxing only, must be set by the caller before avformat_write_header(). + */ + const struct AVOutputFormat *oformat; + + /** + * Format private data. This is an AVOptions-enabled struct + * if and only if iformat/oformat.priv_class is not NULL. + * + * - muxing: set by avformat_write_header() + * - demuxing: set by avformat_open_input() + */ + void *priv_data; + + /** + * I/O context. + * + * - demuxing: either set by the user before avformat_open_input() (then + * the user must close it manually) or set by avformat_open_input(). + * - muxing: set by the user before avformat_write_header(). The caller must + * take care of closing / freeing the IO context. + * + * Do NOT set this field if AVFMT_NOFILE flag is set in + * iformat/oformat.flags. In such a case, the (de)muxer will handle + * I/O in some other way and this field will be NULL. + */ + AVIOContext *pb; + + /* stream info */ + /** + * Flags signalling stream properties. A combination of AVFMTCTX_*. + * Set by libavformat. + */ + int ctx_flags; + + /** + * Number of elements in AVFormatContext.streams. + * + * Set by avformat_new_stream(), must not be modified by any other code. + */ + unsigned int nb_streams; + /** + * A list of all streams in the file. New streams are created with + * avformat_new_stream(). + * + * - demuxing: streams are created by libavformat in avformat_open_input(). + * If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also + * appear in av_read_frame(). + * - muxing: streams are created by the user before avformat_write_header(). + * + * Freed by libavformat in avformat_free_context(). + */ + AVStream **streams; + + /** + * input or output URL. Unlike the old filename field, this field has no + * length restriction. + * + * - demuxing: set by avformat_open_input(), initialized to an empty + * string if url parameter was NULL in avformat_open_input(). + * - muxing: may be set by the caller before calling avformat_write_header() + * (or avformat_init_output() if that is called first) to a string + * which is freeable by av_free(). Set to an empty string if it + * was NULL in avformat_init_output(). + * + * Freed by libavformat in avformat_free_context(). + */ + char *url; + + /** + * Position of the first frame of the component, in + * AV_TIME_BASE fractional seconds. NEVER set this value directly: + * It is deduced from the AVStream values. + * + * Demuxing only, set by libavformat. + */ + int64_t start_time; + + /** + * Duration of the stream, in AV_TIME_BASE fractional + * seconds. Only set this value if you know none of the individual stream + * durations and also do not set any of them. This is deduced from the + * AVStream values if not set. + * + * Demuxing only, set by libavformat. + */ + int64_t duration; + + /** + * Total stream bitrate in bit/s, 0 if not + * available. Never set it directly if the file_size and the + * duration are known as FFmpeg can compute it automatically. + */ + int64_t bit_rate; + + unsigned int packet_size; + int max_delay; + + /** + * Flags modifying the (de)muxer behaviour. A combination of AVFMT_FLAG_*. + * Set by the user before avformat_open_input() / avformat_write_header(). + */ + int flags; +#define AVFMT_FLAG_GENPTS 0x0001 ///< Generate missing pts even if it requires parsing future frames. +#define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index. +#define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets from input. +#define AVFMT_FLAG_IGNDTS 0x0008 ///< Ignore DTS on frames that contain both DTS & PTS +#define AVFMT_FLAG_NOFILLIN 0x0010 ///< Do not infer any values from other values, just return what is stored in the container +#define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled +#define AVFMT_FLAG_NOBUFFER 0x0040 ///< Do not buffer frames when possible +#define AVFMT_FLAG_CUSTOM_IO 0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it. +#define AVFMT_FLAG_DISCARD_CORRUPT 0x0100 ///< Discard frames marked corrupted +#define AVFMT_FLAG_FLUSH_PACKETS 0x0200 ///< Flush the AVIOContext every packet. +/** + * When muxing, try to avoid writing any random/volatile data to the output. + * This includes any random IDs, real-time timestamps/dates, muxer version, etc. + * + * This flag is mainly intended for testing. + */ +#define AVFMT_FLAG_BITEXACT 0x0400 +#define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down) +#if FF_API_LAVF_PRIV_OPT +#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (deprecated, does nothing) +#endif +#define AVFMT_FLAG_FAST_SEEK 0x80000 ///< Enable fast, but inaccurate seeks for some formats +#define AVFMT_FLAG_SHORTEST 0x100000 ///< Stop muxing when the shortest stream stops. +#define AVFMT_FLAG_AUTO_BSF 0x200000 ///< Add bitstream filters as requested by the muxer + + /** + * Maximum number of bytes read from input in order to determine stream + * properties. Used when reading the global header and in + * avformat_find_stream_info(). + * + * Demuxing only, set by the caller before avformat_open_input(). + * + * @note this is \e not used for determining the \ref AVInputFormat + * "input format" + * @sa format_probesize + */ + int64_t probesize; + + /** + * Maximum duration (in AV_TIME_BASE units) of the data read + * from input in avformat_find_stream_info(). + * Demuxing only, set by the caller before avformat_find_stream_info(). + * Can be set to 0 to let avformat choose using a heuristic. + */ + int64_t max_analyze_duration; + + const uint8_t *key; + int keylen; + + unsigned int nb_programs; + AVProgram **programs; + + /** + * Forced video codec_id. + * Demuxing: Set by user. + */ + enum AVCodecID video_codec_id; + + /** + * Forced audio codec_id. + * Demuxing: Set by user. + */ + enum AVCodecID audio_codec_id; + + /** + * Forced subtitle codec_id. + * Demuxing: Set by user. + */ + enum AVCodecID subtitle_codec_id; + + /** + * Maximum amount of memory in bytes to use for the index of each stream. + * If the index exceeds this size, entries will be discarded as + * needed to maintain a smaller size. This can lead to slower or less + * accurate seeking (depends on demuxer). + * Demuxers for which a full in-memory index is mandatory will ignore + * this. + * - muxing: unused + * - demuxing: set by user + */ + unsigned int max_index_size; + + /** + * Maximum amount of memory in bytes to use for buffering frames + * obtained from realtime capture devices. + */ + unsigned int max_picture_buffer; + + /** + * Number of chapters in AVChapter array. + * When muxing, chapters are normally written in the file header, + * so nb_chapters should normally be initialized before write_header + * is called. Some muxers (e.g. mov and mkv) can also write chapters + * in the trailer. To write chapters in the trailer, nb_chapters + * must be zero when write_header is called and non-zero when + * write_trailer is called. + * - muxing: set by user + * - demuxing: set by libavformat + */ + unsigned int nb_chapters; + AVChapter **chapters; + + /** + * Metadata that applies to the whole file. + * + * - demuxing: set by libavformat in avformat_open_input() + * - muxing: may be set by the caller before avformat_write_header() + * + * Freed by libavformat in avformat_free_context(). + */ + AVDictionary *metadata; + + /** + * Start time of the stream in real world time, in microseconds + * since the Unix epoch (00:00 1st January 1970). That is, pts=0 in the + * stream was captured at this real world time. + * - muxing: Set by the caller before avformat_write_header(). If set to + * either 0 or AV_NOPTS_VALUE, then the current wall-time will + * be used. + * - demuxing: Set by libavformat. AV_NOPTS_VALUE if unknown. Note that + * the value may become known after some number of frames + * have been received. + */ + int64_t start_time_realtime; + + /** + * The number of frames used for determining the framerate in + * avformat_find_stream_info(). + * Demuxing only, set by the caller before avformat_find_stream_info(). + */ + int fps_probe_size; + + /** + * Error recognition; higher values will detect more errors but may + * misdetect some more or less valid parts as errors. + * Demuxing only, set by the caller before avformat_open_input(). + */ + int error_recognition; + + /** + * Custom interrupt callbacks for the I/O layer. + * + * demuxing: set by the user before avformat_open_input(). + * muxing: set by the user before avformat_write_header() + * (mainly useful for AVFMT_NOFILE formats). The callback + * should also be passed to avio_open2() if it's used to + * open the file. + */ + AVIOInterruptCB interrupt_callback; + + /** + * Flags to enable debugging. + */ + int debug; +#define FF_FDEBUG_TS 0x0001 + + /** + * Maximum buffering duration for interleaving. + * + * To ensure all the streams are interleaved correctly, + * av_interleaved_write_frame() will wait until it has at least one packet + * for each stream before actually writing any packets to the output file. + * When some streams are "sparse" (i.e. there are large gaps between + * successive packets), this can result in excessive buffering. + * + * This field specifies the maximum difference between the timestamps of the + * first and the last packet in the muxing queue, above which libavformat + * will output a packet regardless of whether it has queued a packet for all + * the streams. + * + * Muxing only, set by the caller before avformat_write_header(). + */ + int64_t max_interleave_delta; + + /** + * Allow non-standard and experimental extension + * @see AVCodecContext.strict_std_compliance + */ + int strict_std_compliance; + + /** + * Flags indicating events happening on the file, a combination of + * AVFMT_EVENT_FLAG_*. + * + * - demuxing: may be set by the demuxer in avformat_open_input(), + * avformat_find_stream_info() and av_read_frame(). Flags must be cleared + * by the user once the event has been handled. + * - muxing: may be set by the user after avformat_write_header() to + * indicate a user-triggered event. The muxer will clear the flags for + * events it has handled in av_[interleaved]_write_frame(). + */ + int event_flags; +/** + * - demuxing: the demuxer read new metadata from the file and updated + * AVFormatContext.metadata accordingly + * - muxing: the user updated AVFormatContext.metadata and wishes the muxer to + * write it into the file + */ +#define AVFMT_EVENT_FLAG_METADATA_UPDATED 0x0001 + + /** + * Maximum number of packets to read while waiting for the first timestamp. + * Decoding only. + */ + int max_ts_probe; + + /** + * Avoid negative timestamps during muxing. + * Any value of the AVFMT_AVOID_NEG_TS_* constants. + * Note, this works better when using av_interleaved_write_frame(). + * - muxing: Set by user + * - demuxing: unused + */ + int avoid_negative_ts; +#define AVFMT_AVOID_NEG_TS_AUTO -1 ///< Enabled when required by target format +#define AVFMT_AVOID_NEG_TS_DISABLED 0 ///< Do not shift timestamps even when they are negative. +#define AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE 1 ///< Shift timestamps so they are non negative +#define AVFMT_AVOID_NEG_TS_MAKE_ZERO 2 ///< Shift timestamps so that they start at 0 + + /** + * Transport stream id. + * This will be moved into demuxer private options. Thus no API/ABI compatibility + */ + int ts_id; + + /** + * Audio preload in microseconds. + * Note, not all formats support this and unpredictable things may happen if it is used when not supported. + * - encoding: Set by user + * - decoding: unused + */ + int audio_preload; + + /** + * Max chunk time in microseconds. + * Note, not all formats support this and unpredictable things may happen if it is used when not supported. + * - encoding: Set by user + * - decoding: unused + */ + int max_chunk_duration; + + /** + * Max chunk size in bytes + * Note, not all formats support this and unpredictable things may happen if it is used when not supported. + * - encoding: Set by user + * - decoding: unused + */ + int max_chunk_size; + + /** + * forces the use of wallclock timestamps as pts/dts of packets + * This has undefined results in the presence of B frames. + * - encoding: unused + * - decoding: Set by user + */ + int use_wallclock_as_timestamps; + + /** + * avio flags, used to force AVIO_FLAG_DIRECT. + * - encoding: unused + * - decoding: Set by user + */ + int avio_flags; + + /** + * The duration field can be estimated through various ways, and this field can be used + * to know how the duration was estimated. + * - encoding: unused + * - decoding: Read by user + */ + enum AVDurationEstimationMethod duration_estimation_method; + + /** + * Skip initial bytes when opening stream + * - encoding: unused + * - decoding: Set by user + */ + int64_t skip_initial_bytes; + + /** + * Correct single timestamp overflows + * - encoding: unused + * - decoding: Set by user + */ + unsigned int correct_ts_overflow; + + /** + * Force seeking to any (also non key) frames. + * - encoding: unused + * - decoding: Set by user + */ + int seek2any; + + /** + * Flush the I/O context after each packet. + * - encoding: Set by user + * - decoding: unused + */ + int flush_packets; + + /** + * format probing score. + * The maximal score is AVPROBE_SCORE_MAX, its set when the demuxer probes + * the format. + * - encoding: unused + * - decoding: set by avformat, read by user + */ + int probe_score; + + /** + * Maximum number of bytes read from input in order to identify the + * \ref AVInputFormat "input format". Only used when the format is not set + * explicitly by the caller. + * + * Demuxing only, set by the caller before avformat_open_input(). + * + * @sa probesize + */ + int format_probesize; + + /** + * ',' separated list of allowed decoders. + * If NULL then all are allowed + * - encoding: unused + * - decoding: set by user + */ + char *codec_whitelist; + + /** + * ',' separated list of allowed demuxers. + * If NULL then all are allowed + * - encoding: unused + * - decoding: set by user + */ + char *format_whitelist; + + /** + * IO repositioned flag. + * This is set by avformat when the underlaying IO context read pointer + * is repositioned, for example when doing byte based seeking. + * Demuxers can use the flag to detect such changes. + */ + int io_repositioned; + + /** + * Forced video codec. + * This allows forcing a specific decoder, even when there are multiple with + * the same codec_id. + * Demuxing: Set by user + */ + const AVCodec *video_codec; + + /** + * Forced audio codec. + * This allows forcing a specific decoder, even when there are multiple with + * the same codec_id. + * Demuxing: Set by user + */ + const AVCodec *audio_codec; + + /** + * Forced subtitle codec. + * This allows forcing a specific decoder, even when there are multiple with + * the same codec_id. + * Demuxing: Set by user + */ + const AVCodec *subtitle_codec; + + /** + * Forced data codec. + * This allows forcing a specific decoder, even when there are multiple with + * the same codec_id. + * Demuxing: Set by user + */ + const AVCodec *data_codec; + + /** + * Number of bytes to be written as padding in a metadata header. + * Demuxing: Unused. + * Muxing: Set by user via av_format_set_metadata_header_padding. + */ + int metadata_header_padding; + + /** + * User data. + * This is a place for some private data of the user. + */ + void *opaque; + + /** + * Callback used by devices to communicate with application. + */ + av_format_control_message control_message_cb; + + /** + * Output timestamp offset, in microseconds. + * Muxing: set by user + */ + int64_t output_ts_offset; + + /** + * dump format separator. + * can be ", " or "\n " or anything else + * - muxing: Set by user. + * - demuxing: Set by user. + */ + uint8_t *dump_separator; + + /** + * Forced Data codec_id. + * Demuxing: Set by user. + */ + enum AVCodecID data_codec_id; + + /** + * ',' separated list of allowed protocols. + * - encoding: unused + * - decoding: set by user + */ + char *protocol_whitelist; + + /** + * A callback for opening new IO streams. + * + * Whenever a muxer or a demuxer needs to open an IO stream (typically from + * avformat_open_input() for demuxers, but for certain formats can happen at + * other times as well), it will call this callback to obtain an IO context. + * + * @param s the format context + * @param pb on success, the newly opened IO context should be returned here + * @param url the url to open + * @param flags a combination of AVIO_FLAG_* + * @param options a dictionary of additional options, with the same + * semantics as in avio_open2() + * @return 0 on success, a negative AVERROR code on failure + * + * @note Certain muxers and demuxers do nesting, i.e. they open one or more + * additional internal format contexts. Thus the AVFormatContext pointer + * passed to this callback may be different from the one facing the caller. + * It will, however, have the same 'opaque' field. + */ + int (*io_open)(struct AVFormatContext *s, AVIOContext **pb, const char *url, + int flags, AVDictionary **options); + + /** + * A callback for closing the streams opened with AVFormatContext.io_open(). + */ + void (*io_close)(struct AVFormatContext *s, AVIOContext *pb); + + /** + * ',' separated list of disallowed protocols. + * - encoding: unused + * - decoding: set by user + */ + char *protocol_blacklist; + + /** + * The maximum number of streams. + * - encoding: unused + * - decoding: set by user + */ + int max_streams; + + /** + * Skip duration calcuation in estimate_timings_from_pts. + * - encoding: unused + * - decoding: set by user + */ + int skip_estimate_duration_from_pts; + + /** + * Maximum number of packets that can be probed + * - encoding: unused + * - decoding: set by user + */ + int max_probe_packets; + + /** + * A callback for closing the streams opened with AVFormatContext.io_open(). + * + * Using this is preferred over io_close, because this can return an error. + * Therefore this callback is used instead of io_close by the generic + * libavformat code if io_close is NULL or the default. + * + * @param s the format context + * @param pb IO context to be closed and freed + * @return 0 on success, a negative AVERROR code on failure + */ + int (*io_close2)(struct AVFormatContext *s, AVIOContext *pb); +} AVFormatContext; + +/** + * This function will cause global side data to be injected in the next packet + * of each stream as well as after any subsequent seek. + */ +void av_format_inject_global_side_data(AVFormatContext *s); + +/** + * Returns the method used to set ctx->duration. + * + * @return AVFMT_DURATION_FROM_PTS, AVFMT_DURATION_FROM_STREAM, or AVFMT_DURATION_FROM_BITRATE. + */ +enum AVDurationEstimationMethod av_fmt_ctx_get_duration_estimation_method(const AVFormatContext* ctx); + +/** + * @defgroup lavf_core Core functions + * @ingroup libavf + * + * Functions for querying libavformat capabilities, allocating core structures, + * etc. + * @{ + */ + +/** + * Return the LIBAVFORMAT_VERSION_INT constant. + */ +unsigned avformat_version(void); + +/** + * Return the libavformat build-time configuration. + */ +const char *avformat_configuration(void); + +/** + * Return the libavformat license. + */ +const char *avformat_license(void); + +/** + * Do global initialization of network libraries. This is optional, + * and not recommended anymore. + * + * This functions only exists to work around thread-safety issues + * with older GnuTLS or OpenSSL libraries. If libavformat is linked + * to newer versions of those libraries, or if you do not use them, + * calling this function is unnecessary. Otherwise, you need to call + * this function before any other threads using them are started. + * + * This function will be deprecated once support for older GnuTLS and + * OpenSSL libraries is removed, and this function has no purpose + * anymore. + */ +int avformat_network_init(void); + +/** + * Undo the initialization done by avformat_network_init. Call it only + * once for each time you called avformat_network_init. + */ +int avformat_network_deinit(void); + +/** + * Iterate over all registered muxers. + * + * @param opaque a pointer where libavformat will store the iteration state. Must + * point to NULL to start the iteration. + * + * @return the next registered muxer or NULL when the iteration is + * finished + */ +const AVOutputFormat *av_muxer_iterate(void **opaque); + +/** + * Iterate over all registered demuxers. + * + * @param opaque a pointer where libavformat will store the iteration state. Must + * point to NULL to start the iteration. + * + * @return the next registered demuxer or NULL when the iteration is + * finished + */ +const AVInputFormat *av_demuxer_iterate(void **opaque); + +/** + * Allocate an AVFormatContext. + * avformat_free_context() can be used to free the context and everything + * allocated by the framework within it. + */ +AVFormatContext *avformat_alloc_context(void); + +/** + * Free an AVFormatContext and all its streams. + * @param s context to free + */ +void avformat_free_context(AVFormatContext *s); + +/** + * Get the AVClass for AVFormatContext. It can be used in combination with + * AV_OPT_SEARCH_FAKE_OBJ for examining options. + * + * @see av_opt_find(). + */ +const AVClass *avformat_get_class(void); + +/** + * Get the AVClass for AVStream. It can be used in combination with + * AV_OPT_SEARCH_FAKE_OBJ for examining options. + * + * @see av_opt_find(). + */ +const AVClass *av_stream_get_class(void); + +/** + * Add a new stream to a media file. + * + * When demuxing, it is called by the demuxer in read_header(). If the + * flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also + * be called in read_packet(). + * + * When muxing, should be called by the user before avformat_write_header(). + * + * User is required to call avformat_free_context() to clean up the allocation + * by avformat_new_stream(). + * + * @param s media file handle + * @param c unused, does nothing + * + * @return newly created stream or NULL on error. + */ +AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c); + +/** + * Wrap an existing array as stream side data. + * + * @param st stream + * @param type side information type + * @param data the side data array. It must be allocated with the av_malloc() + * family of functions. The ownership of the data is transferred to + * st. + * @param size side information size + * @return zero on success, a negative AVERROR code on failure. On failure, + * the stream is unchanged and the data remains owned by the caller. + */ +int av_stream_add_side_data(AVStream *st, enum AVPacketSideDataType type, + uint8_t *data, size_t size); + +/** + * Allocate new information from stream. + * + * @param stream stream + * @param type desired side information type + * @param size side information size + * @return pointer to fresh allocated data or NULL otherwise + */ +uint8_t *av_stream_new_side_data(AVStream *stream, + enum AVPacketSideDataType type, size_t size); +/** + * Get side information from stream. + * + * @param stream stream + * @param type desired side information type + * @param size If supplied, *size will be set to the size of the side data + * or to zero if the desired side data is not present. + * @return pointer to data if present or NULL otherwise + */ +uint8_t *av_stream_get_side_data(const AVStream *stream, + enum AVPacketSideDataType type, size_t *size); + +AVProgram *av_new_program(AVFormatContext *s, int id); + +/** + * @} + */ + + +/** + * Allocate an AVFormatContext for an output format. + * avformat_free_context() can be used to free the context and + * everything allocated by the framework within it. + * + * @param *ctx is set to the created format context, or to NULL in + * case of failure + * @param oformat format to use for allocating the context, if NULL + * format_name and filename are used instead + * @param format_name the name of output format to use for allocating the + * context, if NULL filename is used instead + * @param filename the name of the filename to use for allocating the + * context, may be NULL + * @return >= 0 in case of success, a negative AVERROR code in case of + * failure + */ +int avformat_alloc_output_context2(AVFormatContext **ctx, const AVOutputFormat *oformat, + const char *format_name, const char *filename); + +/** + * @addtogroup lavf_decoding + * @{ + */ + +/** + * Find AVInputFormat based on the short name of the input format. + */ +const AVInputFormat *av_find_input_format(const char *short_name); + +/** + * Guess the file format. + * + * @param pd data to be probed + * @param is_opened Whether the file is already opened; determines whether + * demuxers with or without AVFMT_NOFILE are probed. + */ +const AVInputFormat *av_probe_input_format(const AVProbeData *pd, int is_opened); + +/** + * Guess the file format. + * + * @param pd data to be probed + * @param is_opened Whether the file is already opened; determines whether + * demuxers with or without AVFMT_NOFILE are probed. + * @param score_max A probe score larger that this is required to accept a + * detection, the variable is set to the actual detection + * score afterwards. + * If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended + * to retry with a larger probe buffer. + */ +const AVInputFormat *av_probe_input_format2(const AVProbeData *pd, + int is_opened, int *score_max); + +/** + * Guess the file format. + * + * @param is_opened Whether the file is already opened; determines whether + * demuxers with or without AVFMT_NOFILE are probed. + * @param score_ret The score of the best detection. + */ +const AVInputFormat *av_probe_input_format3(const AVProbeData *pd, + int is_opened, int *score_ret); + +/** + * Probe a bytestream to determine the input format. Each time a probe returns + * with a score that is too low, the probe buffer size is increased and another + * attempt is made. When the maximum probe size is reached, the input format + * with the highest score is returned. + * + * @param pb the bytestream to probe + * @param fmt the input format is put here + * @param url the url of the stream + * @param logctx the log context + * @param offset the offset within the bytestream to probe from + * @param max_probe_size the maximum probe buffer size (zero for default) + * @return the score in case of success, a negative value corresponding to an + * the maximal score is AVPROBE_SCORE_MAX + * AVERROR code otherwise + */ +int av_probe_input_buffer2(AVIOContext *pb, const AVInputFormat **fmt, + const char *url, void *logctx, + unsigned int offset, unsigned int max_probe_size); + +/** + * Like av_probe_input_buffer2() but returns 0 on success + */ +int av_probe_input_buffer(AVIOContext *pb, const AVInputFormat **fmt, + const char *url, void *logctx, + unsigned int offset, unsigned int max_probe_size); + +/** + * Open an input stream and read the header. The codecs are not opened. + * The stream must be closed with avformat_close_input(). + * + * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context). + * May be a pointer to NULL, in which case an AVFormatContext is allocated by this + * function and written into ps. + * Note that a user-supplied AVFormatContext will be freed on failure. + * @param url URL of the stream to open. + * @param fmt If non-NULL, this parameter forces a specific input format. + * Otherwise the format is autodetected. + * @param options A dictionary filled with AVFormatContext and demuxer-private options. + * On return this parameter will be destroyed and replaced with a dict containing + * options that were not found. May be NULL. + * + * @return 0 on success, a negative AVERROR on failure. + * + * @note If you want to use custom IO, preallocate the format context and set its pb field. + */ +int avformat_open_input(AVFormatContext **ps, const char *url, + const AVInputFormat *fmt, AVDictionary **options); + +/** + * Read packets of a media file to get stream information. This + * is useful for file formats with no headers such as MPEG. This + * function also computes the real framerate in case of MPEG-2 repeat + * frame mode. + * The logical file position is not changed by this function; + * examined packets may be buffered for later processing. + * + * @param ic media file handle + * @param options If non-NULL, an ic.nb_streams long array of pointers to + * dictionaries, where i-th member contains options for + * codec corresponding to i-th stream. + * On return each dictionary will be filled with options that were not found. + * @return >=0 if OK, AVERROR_xxx on error + * + * @note this function isn't guaranteed to open all the codecs, so + * options being non-empty at return is a perfectly normal behavior. + * + * @todo Let the user decide somehow what information is needed so that + * we do not waste time getting stuff the user does not need. + */ +int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options); + +/** + * Find the programs which belong to a given stream. + * + * @param ic media file handle + * @param last the last found program, the search will start after this + * program, or from the beginning if it is NULL + * @param s stream index + * @return the next program which belongs to s, NULL if no program is found or + * the last program is not among the programs of ic. + */ +AVProgram *av_find_program_from_stream(AVFormatContext *ic, AVProgram *last, int s); + +void av_program_add_stream_index(AVFormatContext *ac, int progid, unsigned int idx); + +/** + * Find the "best" stream in the file. + * The best stream is determined according to various heuristics as the most + * likely to be what the user expects. + * If the decoder parameter is non-NULL, av_find_best_stream will find the + * default decoder for the stream's codec; streams for which no decoder can + * be found are ignored. + * + * @param ic media file handle + * @param type stream type: video, audio, subtitles, etc. + * @param wanted_stream_nb user-requested stream number, + * or -1 for automatic selection + * @param related_stream try to find a stream related (eg. in the same + * program) to this one, or -1 if none + * @param decoder_ret if non-NULL, returns the decoder for the + * selected stream + * @param flags flags; none are currently defined + * @return the non-negative stream number in case of success, + * AVERROR_STREAM_NOT_FOUND if no stream with the requested type + * could be found, + * AVERROR_DECODER_NOT_FOUND if streams were found but no decoder + * @note If av_find_best_stream returns successfully and decoder_ret is not + * NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec. + */ +int av_find_best_stream(AVFormatContext *ic, + enum AVMediaType type, + int wanted_stream_nb, + int related_stream, + const AVCodec **decoder_ret, + int flags); + +/** + * Return the next frame of a stream. + * This function returns what is stored in the file, and does not validate + * that what is there are valid frames for the decoder. It will split what is + * stored in the file into frames and return one for each call. It will not + * omit invalid data between valid frames so as to give the decoder the maximum + * information possible for decoding. + * + * On success, the returned packet is reference-counted (pkt->buf is set) and + * valid indefinitely. The packet must be freed with av_packet_unref() when + * it is no longer needed. For video, the packet contains exactly one frame. + * For audio, it contains an integer number of frames if each frame has + * a known fixed size (e.g. PCM or ADPCM data). If the audio frames have + * a variable size (e.g. MPEG audio), then it contains one frame. + * + * pkt->pts, pkt->dts and pkt->duration are always set to correct + * values in AVStream.time_base units (and guessed if the format cannot + * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format + * has B-frames, so it is better to rely on pkt->dts if you do not + * decompress the payload. + * + * @return 0 if OK, < 0 on error or end of file. On error, pkt will be blank + * (as if it came from av_packet_alloc()). + * + * @note pkt will be initialized, so it may be uninitialized, but it must not + * contain data that needs to be freed. + */ +int av_read_frame(AVFormatContext *s, AVPacket *pkt); + +/** + * Seek to the keyframe at timestamp. + * 'timestamp' in 'stream_index'. + * + * @param s media file handle + * @param stream_index If stream_index is (-1), a default + * stream is selected, and timestamp is automatically converted + * from AV_TIME_BASE units to the stream specific time_base. + * @param timestamp Timestamp in AVStream.time_base units + * or, if no stream is specified, in AV_TIME_BASE units. + * @param flags flags which select direction and seeking mode + * @return >= 0 on success + */ +int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, + int flags); + +/** + * Seek to timestamp ts. + * Seeking will be done so that the point from which all active streams + * can be presented successfully will be closest to ts and within min/max_ts. + * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. + * + * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and + * are the file position (this may not be supported by all demuxers). + * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames + * in the stream with stream_index (this may not be supported by all demuxers). + * Otherwise all timestamps are in units of the stream selected by stream_index + * or if stream_index is -1, in AV_TIME_BASE units. + * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as + * keyframes (this may not be supported by all demuxers). + * If flags contain AVSEEK_FLAG_BACKWARD, it is ignored. + * + * @param s media file handle + * @param stream_index index of the stream which is used as time base reference + * @param min_ts smallest acceptable timestamp + * @param ts target timestamp + * @param max_ts largest acceptable timestamp + * @param flags flags + * @return >=0 on success, error code otherwise + * + * @note This is part of the new seek API which is still under construction. + */ +int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags); + +/** + * Discard all internally buffered data. This can be useful when dealing with + * discontinuities in the byte stream. Generally works only with formats that + * can resync. This includes headerless formats like MPEG-TS/TS but should also + * work with NUT, Ogg and in a limited way AVI for example. + * + * The set of streams, the detected duration, stream parameters and codecs do + * not change when calling this function. If you want a complete reset, it's + * better to open a new AVFormatContext. + * + * This does not flush the AVIOContext (s->pb). If necessary, call + * avio_flush(s->pb) before calling this function. + * + * @param s media file handle + * @return >=0 on success, error code otherwise + */ +int avformat_flush(AVFormatContext *s); + +/** + * Start playing a network-based stream (e.g. RTSP stream) at the + * current position. + */ +int av_read_play(AVFormatContext *s); + +/** + * Pause a network-based stream (e.g. RTSP stream). + * + * Use av_read_play() to resume it. + */ +int av_read_pause(AVFormatContext *s); + +/** + * Close an opened input AVFormatContext. Free it and all its contents + * and set *s to NULL. + */ +void avformat_close_input(AVFormatContext **s); +/** + * @} + */ + +#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward +#define AVSEEK_FLAG_BYTE 2 ///< seeking based on position in bytes +#define AVSEEK_FLAG_ANY 4 ///< seek to any frame, even non-keyframes +#define AVSEEK_FLAG_FRAME 8 ///< seeking based on frame number + +/** + * @addtogroup lavf_encoding + * @{ + */ + +#define AVSTREAM_INIT_IN_WRITE_HEADER 0 ///< stream parameters initialized in avformat_write_header +#define AVSTREAM_INIT_IN_INIT_OUTPUT 1 ///< stream parameters initialized in avformat_init_output + +/** + * Allocate the stream private data and write the stream header to + * an output media file. + * + * @param s Media file handle, must be allocated with avformat_alloc_context(). + * Its oformat field must be set to the desired output format; + * Its pb field must be set to an already opened AVIOContext. + * @param options An AVDictionary filled with AVFormatContext and muxer-private options. + * On return this parameter will be destroyed and replaced with a dict containing + * options that were not found. May be NULL. + * + * @return AVSTREAM_INIT_IN_WRITE_HEADER on success if the codec had not already been fully initialized in avformat_init, + * AVSTREAM_INIT_IN_INIT_OUTPUT on success if the codec had already been fully initialized in avformat_init, + * negative AVERROR on failure. + * + * @see av_opt_find, av_dict_set, avio_open, av_oformat_next, avformat_init_output. + */ +av_warn_unused_result +int avformat_write_header(AVFormatContext *s, AVDictionary **options); + +/** + * Allocate the stream private data and initialize the codec, but do not write the header. + * May optionally be used before avformat_write_header to initialize stream parameters + * before actually writing the header. + * If using this function, do not pass the same options to avformat_write_header. + * + * @param s Media file handle, must be allocated with avformat_alloc_context(). + * Its oformat field must be set to the desired output format; + * Its pb field must be set to an already opened AVIOContext. + * @param options An AVDictionary filled with AVFormatContext and muxer-private options. + * On return this parameter will be destroyed and replaced with a dict containing + * options that were not found. May be NULL. + * + * @return AVSTREAM_INIT_IN_WRITE_HEADER on success if the codec requires avformat_write_header to fully initialize, + * AVSTREAM_INIT_IN_INIT_OUTPUT on success if the codec has been fully initialized, + * negative AVERROR on failure. + * + * @see av_opt_find, av_dict_set, avio_open, av_oformat_next, avformat_write_header. + */ +av_warn_unused_result +int avformat_init_output(AVFormatContext *s, AVDictionary **options); + +/** + * Write a packet to an output media file. + * + * This function passes the packet directly to the muxer, without any buffering + * or reordering. The caller is responsible for correctly interleaving the + * packets if the format requires it. Callers that want libavformat to handle + * the interleaving should call av_interleaved_write_frame() instead of this + * function. + * + * @param s media file handle + * @param pkt The packet containing the data to be written. Note that unlike + * av_interleaved_write_frame(), this function does not take + * ownership of the packet passed to it (though some muxers may make + * an internal reference to the input packet). + *
+ * This parameter can be NULL (at any time, not just at the end), in + * order to immediately flush data buffered within the muxer, for + * muxers that buffer up data internally before writing it to the + * output. + *
+ * Packet's @ref AVPacket.stream_index "stream_index" field must be + * set to the index of the corresponding stream in @ref + * AVFormatContext.streams "s->streams". + *
+ * The timestamps (@ref AVPacket.pts "pts", @ref AVPacket.dts "dts") + * must be set to correct values in the stream's timebase (unless the + * output format is flagged with the AVFMT_NOTIMESTAMPS flag, then + * they can be set to AV_NOPTS_VALUE). + * The dts for subsequent packets passed to this function must be strictly + * increasing when compared in their respective timebases (unless the + * output format is flagged with the AVFMT_TS_NONSTRICT, then they + * merely have to be nondecreasing). @ref AVPacket.duration + * "duration") should also be set if known. + * @return < 0 on error, = 0 if OK, 1 if flushed and there is no more data to flush + * + * @see av_interleaved_write_frame() + */ +int av_write_frame(AVFormatContext *s, AVPacket *pkt); + +/** + * Write a packet to an output media file ensuring correct interleaving. + * + * This function will buffer the packets internally as needed to make sure the + * packets in the output file are properly interleaved, usually ordered by + * increasing dts. Callers doing their own interleaving should call + * av_write_frame() instead of this function. + * + * Using this function instead of av_write_frame() can give muxers advance + * knowledge of future packets, improving e.g. the behaviour of the mp4 + * muxer for VFR content in fragmenting mode. + * + * @param s media file handle + * @param pkt The packet containing the data to be written. + *
+ * If the packet is reference-counted, this function will take + * ownership of this reference and unreference it later when it sees + * fit. If the packet is not reference-counted, libavformat will + * make a copy. + * The returned packet will be blank (as if returned from + * av_packet_alloc()), even on error. + *
+ * This parameter can be NULL (at any time, not just at the end), to + * flush the interleaving queues. + *
+ * Packet's @ref AVPacket.stream_index "stream_index" field must be + * set to the index of the corresponding stream in @ref + * AVFormatContext.streams "s->streams". + *
+ * The timestamps (@ref AVPacket.pts "pts", @ref AVPacket.dts "dts") + * must be set to correct values in the stream's timebase (unless the + * output format is flagged with the AVFMT_NOTIMESTAMPS flag, then + * they can be set to AV_NOPTS_VALUE). + * The dts for subsequent packets in one stream must be strictly + * increasing (unless the output format is flagged with the + * AVFMT_TS_NONSTRICT, then they merely have to be nondecreasing). + * @ref AVPacket.duration "duration" should also be set if known. + * + * @return 0 on success, a negative AVERROR on error. + * + * @see av_write_frame(), AVFormatContext.max_interleave_delta + */ +int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); + +/** + * Write an uncoded frame to an output media file. + * + * The frame must be correctly interleaved according to the container + * specification; if not, av_interleaved_write_uncoded_frame() must be used. + * + * See av_interleaved_write_uncoded_frame() for details. + */ +int av_write_uncoded_frame(AVFormatContext *s, int stream_index, + AVFrame *frame); + +/** + * Write an uncoded frame to an output media file. + * + * If the muxer supports it, this function makes it possible to write an AVFrame + * structure directly, without encoding it into a packet. + * It is mostly useful for devices and similar special muxers that use raw + * video or PCM data and will not serialize it into a byte stream. + * + * To test whether it is possible to use it with a given muxer and stream, + * use av_write_uncoded_frame_query(). + * + * The caller gives up ownership of the frame and must not access it + * afterwards. + * + * @return >=0 for success, a negative code on error + */ +int av_interleaved_write_uncoded_frame(AVFormatContext *s, int stream_index, + AVFrame *frame); + +/** + * Test whether a muxer supports uncoded frame. + * + * @return >=0 if an uncoded frame can be written to that muxer and stream, + * <0 if not + */ +int av_write_uncoded_frame_query(AVFormatContext *s, int stream_index); + +/** + * Write the stream trailer to an output media file and free the + * file private data. + * + * May only be called after a successful call to avformat_write_header. + * + * @param s media file handle + * @return 0 if OK, AVERROR_xxx on error + */ +int av_write_trailer(AVFormatContext *s); + +/** + * Return the output format in the list of registered output formats + * which best matches the provided parameters, or return NULL if + * there is no match. + * + * @param short_name if non-NULL checks if short_name matches with the + * names of the registered formats + * @param filename if non-NULL checks if filename terminates with the + * extensions of the registered formats + * @param mime_type if non-NULL checks if mime_type matches with the + * MIME type of the registered formats + */ +const AVOutputFormat *av_guess_format(const char *short_name, + const char *filename, + const char *mime_type); + +/** + * Guess the codec ID based upon muxer and filename. + */ +enum AVCodecID av_guess_codec(const AVOutputFormat *fmt, const char *short_name, + const char *filename, const char *mime_type, + enum AVMediaType type); + +/** + * Get timing information for the data currently output. + * The exact meaning of "currently output" depends on the format. + * It is mostly relevant for devices that have an internal buffer and/or + * work in real time. + * @param s media file handle + * @param stream stream in the media file + * @param[out] dts DTS of the last packet output for the stream, in stream + * time_base units + * @param[out] wall absolute time when that packet whas output, + * in microsecond + * @return 0 if OK, AVERROR(ENOSYS) if the format does not support it + * Note: some formats or devices may not allow to measure dts and wall + * atomically. + */ +int av_get_output_timestamp(struct AVFormatContext *s, int stream, + int64_t *dts, int64_t *wall); + + +/** + * @} + */ + + +/** + * @defgroup lavf_misc Utility functions + * @ingroup libavf + * @{ + * + * Miscellaneous utility functions related to both muxing and demuxing + * (or neither). + */ + +/** + * Send a nice hexadecimal dump of a buffer to the specified file stream. + * + * @param f The file stream pointer where the dump should be sent to. + * @param buf buffer + * @param size buffer size + * + * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2 + */ +void av_hex_dump(FILE *f, const uint8_t *buf, int size); + +/** + * Send a nice hexadecimal dump of a buffer to the log. + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct. + * @param level The importance level of the message, lower values signifying + * higher importance. + * @param buf buffer + * @param size buffer size + * + * @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2 + */ +void av_hex_dump_log(void *avcl, int level, const uint8_t *buf, int size); + +/** + * Send a nice dump of a packet to the specified file stream. + * + * @param f The file stream pointer where the dump should be sent to. + * @param pkt packet to dump + * @param dump_payload True if the payload must be displayed, too. + * @param st AVStream that the packet belongs to + */ +void av_pkt_dump2(FILE *f, const AVPacket *pkt, int dump_payload, const AVStream *st); + + +/** + * Send a nice dump of a packet to the log. + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct. + * @param level The importance level of the message, lower values signifying + * higher importance. + * @param pkt packet to dump + * @param dump_payload True if the payload must be displayed, too. + * @param st AVStream that the packet belongs to + */ +void av_pkt_dump_log2(void *avcl, int level, const AVPacket *pkt, int dump_payload, + const AVStream *st); + +/** + * Get the AVCodecID for the given codec tag tag. + * If no codec id is found returns AV_CODEC_ID_NONE. + * + * @param tags list of supported codec_id-codec_tag pairs, as stored + * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + * @param tag codec tag to match to a codec ID + */ +enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag); + +/** + * Get the codec tag for the given codec id id. + * If no codec tag is found returns 0. + * + * @param tags list of supported codec_id-codec_tag pairs, as stored + * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + * @param id codec ID to match to a codec tag + */ +unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id); + +/** + * Get the codec tag for the given codec id. + * + * @param tags list of supported codec_id - codec_tag pairs, as stored + * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag + * @param id codec id that should be searched for in the list + * @param tag A pointer to the found tag + * @return 0 if id was not found in tags, > 0 if it was found + */ +int av_codec_get_tag2(const struct AVCodecTag * const *tags, enum AVCodecID id, + unsigned int *tag); + +int av_find_default_stream_index(AVFormatContext *s); + +/** + * Get the index for a specific timestamp. + * + * @param st stream that the timestamp belongs to + * @param timestamp timestamp to retrieve the index for + * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond + * to the timestamp which is <= the requested one, if backward + * is 0, then it will be >= + * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise + * @return < 0 if no such timestamp could be found + */ +int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags); + +/** + * Get the index entry count for the given AVStream. + * + * @param st stream + * @return the number of index entries in the stream + */ +int avformat_index_get_entries_count(const AVStream *st); + +/** + * Get the AVIndexEntry corresponding to the given index. + * + * @param st Stream containing the requested AVIndexEntry. + * @param idx The desired index. + * @return A pointer to the requested AVIndexEntry if it exists, NULL otherwise. + * + * @note The pointer returned by this function is only guaranteed to be valid + * until any function that takes the stream or the parent AVFormatContext + * as input argument is called. + */ +const AVIndexEntry *avformat_index_get_entry(AVStream *st, int idx); + +/** + * Get the AVIndexEntry corresponding to the given timestamp. + * + * @param st Stream containing the requested AVIndexEntry. + * @param timestamp Timestamp to retrieve the index entry for. + * @param flags If AVSEEK_FLAG_BACKWARD then the returned entry will correspond + * to the timestamp which is <= the requested one, if backward + * is 0, then it will be >= + * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise. + * @return A pointer to the requested AVIndexEntry if it exists, NULL otherwise. + * + * @note The pointer returned by this function is only guaranteed to be valid + * until any function that takes the stream or the parent AVFormatContext + * as input argument is called. + */ +const AVIndexEntry *avformat_index_get_entry_from_timestamp(AVStream *st, + int64_t wanted_timestamp, + int flags); +/** + * Add an index entry into a sorted list. Update the entry if the list + * already contains it. + * + * @param timestamp timestamp in the time base of the given stream + */ +int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp, + int size, int distance, int flags); + + +/** + * Split a URL string into components. + * + * The pointers to buffers for storing individual components may be null, + * in order to ignore that component. Buffers for components not found are + * set to empty strings. If the port is not found, it is set to a negative + * value. + * + * @param proto the buffer for the protocol + * @param proto_size the size of the proto buffer + * @param authorization the buffer for the authorization + * @param authorization_size the size of the authorization buffer + * @param hostname the buffer for the host name + * @param hostname_size the size of the hostname buffer + * @param port_ptr a pointer to store the port number in + * @param path the buffer for the path + * @param path_size the size of the path buffer + * @param url the URL to split + */ +void av_url_split(char *proto, int proto_size, + char *authorization, int authorization_size, + char *hostname, int hostname_size, + int *port_ptr, + char *path, int path_size, + const char *url); + + +/** + * Print detailed information about the input or output format, such as + * duration, bitrate, streams, container, programs, metadata, side data, + * codec and time base. + * + * @param ic the context to analyze + * @param index index of the stream to dump information about + * @param url the URL to print, such as source or destination file + * @param is_output Select whether the specified context is an input(0) or output(1) + */ +void av_dump_format(AVFormatContext *ic, + int index, + const char *url, + int is_output); + + +#define AV_FRAME_FILENAME_FLAGS_MULTIPLE 1 ///< Allow multiple %d + +/** + * Return in 'buf' the path with '%d' replaced by a number. + * + * Also handles the '%0nd' format where 'n' is the total number + * of digits and '%%'. + * + * @param buf destination buffer + * @param buf_size destination buffer size + * @param path numbered sequence string + * @param number frame number + * @param flags AV_FRAME_FILENAME_FLAGS_* + * @return 0 if OK, -1 on format error + */ +int av_get_frame_filename2(char *buf, int buf_size, + const char *path, int number, int flags); + +int av_get_frame_filename(char *buf, int buf_size, + const char *path, int number); + +/** + * Check whether filename actually is a numbered sequence generator. + * + * @param filename possible numbered sequence string + * @return 1 if a valid numbered sequence string, 0 otherwise + */ +int av_filename_number_test(const char *filename); + +/** + * Generate an SDP for an RTP session. + * + * Note, this overwrites the id values of AVStreams in the muxer contexts + * for getting unique dynamic payload types. + * + * @param ac array of AVFormatContexts describing the RTP streams. If the + * array is composed by only one context, such context can contain + * multiple AVStreams (one AVStream per RTP stream). Otherwise, + * all the contexts in the array (an AVCodecContext per RTP stream) + * must contain only one AVStream. + * @param n_files number of AVCodecContexts contained in ac + * @param buf buffer where the SDP will be stored (must be allocated by + * the caller) + * @param size the size of the buffer + * @return 0 if OK, AVERROR_xxx on error + */ +int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size); + +/** + * Return a positive value if the given filename has one of the given + * extensions, 0 otherwise. + * + * @param filename file name to check against the given extensions + * @param extensions a comma-separated list of filename extensions + */ +int av_match_ext(const char *filename, const char *extensions); + +/** + * Test if the given container can store a codec. + * + * @param ofmt container to check for compatibility + * @param codec_id codec to potentially store in container + * @param std_compliance standards compliance level, one of FF_COMPLIANCE_* + * + * @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot. + * A negative number if this information is not available. + */ +int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id, + int std_compliance); + +/** + * @defgroup riff_fourcc RIFF FourCCs + * @{ + * Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs. The tables are + * meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the + * following code: + * @code + * uint32_t tag = MKTAG('H', '2', '6', '4'); + * const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 }; + * enum AVCodecID id = av_codec_get_id(table, tag); + * @endcode + */ +/** + * @return the table mapping RIFF FourCCs for video to libavcodec AVCodecID. + */ +const struct AVCodecTag *avformat_get_riff_video_tags(void); +/** + * @return the table mapping RIFF FourCCs for audio to AVCodecID. + */ +const struct AVCodecTag *avformat_get_riff_audio_tags(void); +/** + * @return the table mapping MOV FourCCs for video to libavcodec AVCodecID. + */ +const struct AVCodecTag *avformat_get_mov_video_tags(void); +/** + * @return the table mapping MOV FourCCs for audio to AVCodecID. + */ +const struct AVCodecTag *avformat_get_mov_audio_tags(void); + +/** + * @} + */ + +/** + * Guess the sample aspect ratio of a frame, based on both the stream and the + * frame aspect ratio. + * + * Since the frame aspect ratio is set by the codec but the stream aspect ratio + * is set by the demuxer, these two may not be equal. This function tries to + * return the value that you should use if you would like to display the frame. + * + * Basic logic is to use the stream aspect ratio if it is set to something sane + * otherwise use the frame aspect ratio. This way a container setting, which is + * usually easy to modify can override the coded value in the frames. + * + * @param format the format context which the stream is part of + * @param stream the stream which the frame is part of + * @param frame the frame with the aspect ratio to be determined + * @return the guessed (valid) sample_aspect_ratio, 0/1 if no idea + */ +AVRational av_guess_sample_aspect_ratio(AVFormatContext *format, AVStream *stream, AVFrame *frame); + +/** + * Guess the frame rate, based on both the container and codec information. + * + * @param ctx the format context which the stream is part of + * @param stream the stream which the frame is part of + * @param frame the frame for which the frame rate should be determined, may be NULL + * @return the guessed (valid) frame rate, 0/1 if no idea + */ +AVRational av_guess_frame_rate(AVFormatContext *ctx, AVStream *stream, AVFrame *frame); + +/** + * Check if the stream st contained in s is matched by the stream specifier + * spec. + * + * See the "stream specifiers" chapter in the documentation for the syntax + * of spec. + * + * @return >0 if st is matched by spec; + * 0 if st is not matched by spec; + * AVERROR code if spec is invalid + * + * @note A stream specifier can match several streams in the format. + */ +int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st, + const char *spec); + +int avformat_queue_attached_pictures(AVFormatContext *s); + +enum AVTimebaseSource { + AVFMT_TBCF_AUTO = -1, + AVFMT_TBCF_DECODER, + AVFMT_TBCF_DEMUXER, +#if FF_API_R_FRAME_RATE + AVFMT_TBCF_R_FRAMERATE, +#endif +}; + +/** + * Transfer internal timing information from one stream to another. + * + * This function is useful when doing stream copy. + * + * @param ofmt target output format for ost + * @param ost output stream which needs timings copy and adjustments + * @param ist reference input stream to copy timings from + * @param copy_tb define from where the stream codec timebase needs to be imported + */ +int avformat_transfer_internal_stream_timing_info(const AVOutputFormat *ofmt, + AVStream *ost, const AVStream *ist, + enum AVTimebaseSource copy_tb); + +/** + * Get the internal codec timebase from a stream. + * + * @param st input stream to extract the timebase from + */ +AVRational av_stream_get_codec_timebase(const AVStream *st); + +/** + * @} + */ + +#endif /* AVFORMAT_AVFORMAT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavformat/avio.h b/third_party/ffmpeg/uos/amd64/include/libavformat/avio.h new file mode 100644 index 00000000..36c3d7b4 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavformat/avio.h @@ -0,0 +1,842 @@ +/* + * copyright (c) 2001 Fabrice Bellard + * + * 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 AVFORMAT_AVIO_H +#define AVFORMAT_AVIO_H + +/** + * @file + * @ingroup lavf_io + * Buffered I/O operations + */ + +#include +#include + +#include "libavutil/attributes.h" +#include "libavutil/dict.h" +#include "libavutil/log.h" + +#include "libavformat/version_major.h" + +/** + * Seeking works like for a local file. + */ +#define AVIO_SEEKABLE_NORMAL (1 << 0) + +/** + * Seeking by timestamp with avio_seek_time() is possible. + */ +#define AVIO_SEEKABLE_TIME (1 << 1) + +/** + * Callback for checking whether to abort blocking functions. + * AVERROR_EXIT is returned in this case by the interrupted + * function. During blocking operations, callback is called with + * opaque as parameter. If the callback returns 1, the + * blocking operation will be aborted. + * + * No members can be added to this struct without a major bump, if + * new elements have been added after this struct in AVFormatContext + * or AVIOContext. + */ +typedef struct AVIOInterruptCB { + int (*callback)(void*); + void *opaque; +} AVIOInterruptCB; + +/** + * Directory entry types. + */ +enum AVIODirEntryType { + AVIO_ENTRY_UNKNOWN, + AVIO_ENTRY_BLOCK_DEVICE, + AVIO_ENTRY_CHARACTER_DEVICE, + AVIO_ENTRY_DIRECTORY, + AVIO_ENTRY_NAMED_PIPE, + AVIO_ENTRY_SYMBOLIC_LINK, + AVIO_ENTRY_SOCKET, + AVIO_ENTRY_FILE, + AVIO_ENTRY_SERVER, + AVIO_ENTRY_SHARE, + AVIO_ENTRY_WORKGROUP, +}; + +/** + * Describes single entry of the directory. + * + * Only name and type fields are guaranteed be set. + * Rest of fields are protocol or/and platform dependent and might be unknown. + */ +typedef struct AVIODirEntry { + char *name; /**< Filename */ + int type; /**< Type of the entry */ + int utf8; /**< Set to 1 when name is encoded with UTF-8, 0 otherwise. + Name can be encoded with UTF-8 even though 0 is set. */ + int64_t size; /**< File size in bytes, -1 if unknown. */ + int64_t modification_timestamp; /**< Time of last modification in microseconds since unix + epoch, -1 if unknown. */ + int64_t access_timestamp; /**< Time of last access in microseconds since unix epoch, + -1 if unknown. */ + int64_t status_change_timestamp; /**< Time of last status change in microseconds since unix + epoch, -1 if unknown. */ + int64_t user_id; /**< User ID of owner, -1 if unknown. */ + int64_t group_id; /**< Group ID of owner, -1 if unknown. */ + int64_t filemode; /**< Unix file mode, -1 if unknown. */ +} AVIODirEntry; + +typedef struct AVIODirContext { + struct URLContext *url_context; +} AVIODirContext; + +/** + * Different data types that can be returned via the AVIO + * write_data_type callback. + */ +enum AVIODataMarkerType { + /** + * Header data; this needs to be present for the stream to be decodeable. + */ + AVIO_DATA_MARKER_HEADER, + /** + * A point in the output bytestream where a decoder can start decoding + * (i.e. a keyframe). A demuxer/decoder given the data flagged with + * AVIO_DATA_MARKER_HEADER, followed by any AVIO_DATA_MARKER_SYNC_POINT, + * should give decodeable results. + */ + AVIO_DATA_MARKER_SYNC_POINT, + /** + * A point in the output bytestream where a demuxer can start parsing + * (for non self synchronizing bytestream formats). That is, any + * non-keyframe packet start point. + */ + AVIO_DATA_MARKER_BOUNDARY_POINT, + /** + * This is any, unlabelled data. It can either be a muxer not marking + * any positions at all, it can be an actual boundary/sync point + * that the muxer chooses not to mark, or a later part of a packet/fragment + * that is cut into multiple write callbacks due to limited IO buffer size. + */ + AVIO_DATA_MARKER_UNKNOWN, + /** + * Trailer data, which doesn't contain actual content, but only for + * finalizing the output file. + */ + AVIO_DATA_MARKER_TRAILER, + /** + * A point in the output bytestream where the underlying AVIOContext might + * flush the buffer depending on latency or buffering requirements. Typically + * means the end of a packet. + */ + AVIO_DATA_MARKER_FLUSH_POINT, +}; + +/** + * Bytestream IO Context. + * New public fields can be added with minor version bumps. + * Removal, reordering and changes to existing public fields require + * a major version bump. + * sizeof(AVIOContext) must not be used outside libav*. + * + * @note None of the function pointers in AVIOContext should be called + * directly, they should only be set by the client application + * when implementing custom I/O. Normally these are set to the + * function pointers specified in avio_alloc_context() + */ +typedef struct AVIOContext { + /** + * A class for private options. + * + * If this AVIOContext is created by avio_open2(), av_class is set and + * passes the options down to protocols. + * + * If this AVIOContext is manually allocated, then av_class may be set by + * the caller. + * + * warning -- this field can be NULL, be sure to not pass this AVIOContext + * to any av_opt_* functions in that case. + */ + const AVClass *av_class; + + /* + * The following shows the relationship between buffer, buf_ptr, + * buf_ptr_max, buf_end, buf_size, and pos, when reading and when writing + * (since AVIOContext is used for both): + * + ********************************************************************************** + * READING + ********************************************************************************** + * + * | buffer_size | + * |---------------------------------------| + * | | + * + * buffer buf_ptr buf_end + * +---------------+-----------------------+ + * |/ / / / / / / /|/ / / / / / /| | + * read buffer: |/ / consumed / | to be read /| | + * |/ / / / / / / /|/ / / / / / /| | + * +---------------+-----------------------+ + * + * pos + * +-------------------------------------------+-----------------+ + * input file: | | | + * +-------------------------------------------+-----------------+ + * + * + ********************************************************************************** + * WRITING + ********************************************************************************** + * + * | buffer_size | + * |--------------------------------------| + * | | + * + * buf_ptr_max + * buffer (buf_ptr) buf_end + * +-----------------------+--------------+ + * |/ / / / / / / / / / / /| | + * write buffer: | / / to be flushed / / | | + * |/ / / / / / / / / / / /| | + * +-----------------------+--------------+ + * buf_ptr can be in this + * due to a backward seek + * + * pos + * +-------------+----------------------------------------------+ + * output file: | | | + * +-------------+----------------------------------------------+ + * + */ + unsigned char *buffer; /**< Start of the buffer. */ + int buffer_size; /**< Maximum buffer size */ + unsigned char *buf_ptr; /**< Current position in the buffer */ + unsigned char *buf_end; /**< End of the data, may be less than + buffer+buffer_size if the read function returned + less data than requested, e.g. for streams where + no more data has been received yet. */ + void *opaque; /**< A private pointer, passed to the read/write/seek/... + functions. */ + int (*read_packet)(void *opaque, uint8_t *buf, int buf_size); + int (*write_packet)(void *opaque, uint8_t *buf, int buf_size); + int64_t (*seek)(void *opaque, int64_t offset, int whence); + int64_t pos; /**< position in the file of the current buffer */ + int eof_reached; /**< true if was unable to read due to error or eof */ + int error; /**< contains the error code or 0 if no error happened */ + int write_flag; /**< true if open for writing */ + int max_packet_size; + int min_packet_size; /**< Try to buffer at least this amount of data + before flushing it. */ + unsigned long checksum; + unsigned char *checksum_ptr; + unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size); + /** + * Pause or resume playback for network streaming protocols - e.g. MMS. + */ + int (*read_pause)(void *opaque, int pause); + /** + * Seek to a given timestamp in stream with the specified stream_index. + * Needed for some network streaming protocols which don't support seeking + * to byte position. + */ + int64_t (*read_seek)(void *opaque, int stream_index, + int64_t timestamp, int flags); + /** + * A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable. + */ + int seekable; + + /** + * avio_read and avio_write should if possible be satisfied directly + * instead of going through a buffer, and avio_seek will always + * call the underlying seek function directly. + */ + int direct; + + /** + * ',' separated list of allowed protocols. + */ + const char *protocol_whitelist; + + /** + * ',' separated list of disallowed protocols. + */ + const char *protocol_blacklist; + + /** + * A callback that is used instead of write_packet. + */ + int (*write_data_type)(void *opaque, uint8_t *buf, int buf_size, + enum AVIODataMarkerType type, int64_t time); + /** + * If set, don't call write_data_type separately for AVIO_DATA_MARKER_BOUNDARY_POINT, + * but ignore them and treat them as AVIO_DATA_MARKER_UNKNOWN (to avoid needlessly + * small chunks of data returned from the callback). + */ + int ignore_boundary_point; + +#if FF_API_AVIOCONTEXT_WRITTEN + /** + * @deprecated field utilized privately by libavformat. For a public + * statistic of how many bytes were written out, see + * AVIOContext::bytes_written. + */ + attribute_deprecated + int64_t written; +#endif + + /** + * Maximum reached position before a backward seek in the write buffer, + * used keeping track of already written data for a later flush. + */ + unsigned char *buf_ptr_max; + + /** + * Read-only statistic of bytes read for this AVIOContext. + */ + int64_t bytes_read; + + /** + * Read-only statistic of bytes written for this AVIOContext. + */ + int64_t bytes_written; +} AVIOContext; + +/** + * Return the name of the protocol that will handle the passed URL. + * + * NULL is returned if no protocol could be found for the given URL. + * + * @return Name of the protocol or NULL. + */ +const char *avio_find_protocol_name(const char *url); + +/** + * Return AVIO_FLAG_* access flags corresponding to the access permissions + * of the resource in url, or a negative value corresponding to an + * AVERROR code in case of failure. The returned access flags are + * masked by the value in flags. + * + * @note This function is intrinsically unsafe, in the sense that the + * checked resource may change its existence or permission status from + * one call to another. Thus you should not trust the returned value, + * unless you are sure that no other processes are accessing the + * checked resource. + */ +int avio_check(const char *url, int flags); + +/** + * Open directory for reading. + * + * @param s directory read context. Pointer to a NULL pointer must be passed. + * @param url directory to be listed. + * @param options A dictionary filled with protocol-private options. On return + * this parameter will be destroyed and replaced with a dictionary + * containing options that were not found. May be NULL. + * @return >=0 on success or negative on error. + */ +int avio_open_dir(AVIODirContext **s, const char *url, AVDictionary **options); + +/** + * Get next directory entry. + * + * Returned entry must be freed with avio_free_directory_entry(). In particular + * it may outlive AVIODirContext. + * + * @param s directory read context. + * @param[out] next next entry or NULL when no more entries. + * @return >=0 on success or negative on error. End of list is not considered an + * error. + */ +int avio_read_dir(AVIODirContext *s, AVIODirEntry **next); + +/** + * Close directory. + * + * @note Entries created using avio_read_dir() are not deleted and must be + * freeded with avio_free_directory_entry(). + * + * @param s directory read context. + * @return >=0 on success or negative on error. + */ +int avio_close_dir(AVIODirContext **s); + +/** + * Free entry allocated by avio_read_dir(). + * + * @param entry entry to be freed. + */ +void avio_free_directory_entry(AVIODirEntry **entry); + +/** + * Allocate and initialize an AVIOContext for buffered I/O. It must be later + * freed with avio_context_free(). + * + * @param buffer Memory block for input/output operations via AVIOContext. + * The buffer must be allocated with av_malloc() and friends. + * It may be freed and replaced with a new buffer by libavformat. + * AVIOContext.buffer holds the buffer currently in use, + * which must be later freed with av_free(). + * @param buffer_size The buffer size is very important for performance. + * For protocols with fixed blocksize it should be set to this blocksize. + * For others a typical size is a cache page, e.g. 4kb. + * @param write_flag Set to 1 if the buffer should be writable, 0 otherwise. + * @param opaque An opaque pointer to user-specific data. + * @param read_packet A function for refilling the buffer, may be NULL. + * For stream protocols, must never return 0 but rather + * a proper AVERROR code. + * @param write_packet A function for writing the buffer contents, may be NULL. + * The function may not change the input buffers content. + * @param seek A function for seeking to specified byte position, may be NULL. + * + * @return Allocated AVIOContext or NULL on failure. + */ +AVIOContext *avio_alloc_context( + unsigned char *buffer, + int buffer_size, + int write_flag, + void *opaque, + int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), + int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), + int64_t (*seek)(void *opaque, int64_t offset, int whence)); + +/** + * Free the supplied IO context and everything associated with it. + * + * @param s Double pointer to the IO context. This function will write NULL + * into s. + */ +void avio_context_free(AVIOContext **s); + +void avio_w8(AVIOContext *s, int b); +void avio_write(AVIOContext *s, const unsigned char *buf, int size); +void avio_wl64(AVIOContext *s, uint64_t val); +void avio_wb64(AVIOContext *s, uint64_t val); +void avio_wl32(AVIOContext *s, unsigned int val); +void avio_wb32(AVIOContext *s, unsigned int val); +void avio_wl24(AVIOContext *s, unsigned int val); +void avio_wb24(AVIOContext *s, unsigned int val); +void avio_wl16(AVIOContext *s, unsigned int val); +void avio_wb16(AVIOContext *s, unsigned int val); + +/** + * Write a NULL-terminated string. + * @return number of bytes written. + */ +int avio_put_str(AVIOContext *s, const char *str); + +/** + * Convert an UTF-8 string to UTF-16LE and write it. + * @param s the AVIOContext + * @param str NULL-terminated UTF-8 string + * + * @return number of bytes written. + */ +int avio_put_str16le(AVIOContext *s, const char *str); + +/** + * Convert an UTF-8 string to UTF-16BE and write it. + * @param s the AVIOContext + * @param str NULL-terminated UTF-8 string + * + * @return number of bytes written. + */ +int avio_put_str16be(AVIOContext *s, const char *str); + +/** + * Mark the written bytestream as a specific type. + * + * Zero-length ranges are omitted from the output. + * + * @param time the stream time the current bytestream pos corresponds to + * (in AV_TIME_BASE units), or AV_NOPTS_VALUE if unknown or not + * applicable + * @param type the kind of data written starting at the current pos + */ +void avio_write_marker(AVIOContext *s, int64_t time, enum AVIODataMarkerType type); + +/** + * ORing this as the "whence" parameter to a seek function causes it to + * return the filesize without seeking anywhere. Supporting this is optional. + * If it is not supported then the seek function will return <0. + */ +#define AVSEEK_SIZE 0x10000 + +/** + * Passing this flag as the "whence" parameter to a seek function causes it to + * seek by any means (like reopening and linear reading) or other normally unreasonable + * means that can be extremely slow. + * This may be ignored by the seek code. + */ +#define AVSEEK_FORCE 0x20000 + +/** + * fseek() equivalent for AVIOContext. + * @return new position or AVERROR. + */ +int64_t avio_seek(AVIOContext *s, int64_t offset, int whence); + +/** + * Skip given number of bytes forward + * @return new position or AVERROR. + */ +int64_t avio_skip(AVIOContext *s, int64_t offset); + +/** + * ftell() equivalent for AVIOContext. + * @return position or AVERROR. + */ +static av_always_inline int64_t avio_tell(AVIOContext *s) +{ + return avio_seek(s, 0, SEEK_CUR); +} + +/** + * Get the filesize. + * @return filesize or AVERROR + */ +int64_t avio_size(AVIOContext *s); + +/** + * Similar to feof() but also returns nonzero on read errors. + * @return non zero if and only if at end of file or a read error happened when reading. + */ +int avio_feof(AVIOContext *s); + +/** + * Writes a formatted string to the context taking a va_list. + * @return number of bytes written, < 0 on error. + */ +int avio_vprintf(AVIOContext *s, const char *fmt, va_list ap); + +/** + * Writes a formatted string to the context. + * @return number of bytes written, < 0 on error. + */ +int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3); + +/** + * Write a NULL terminated array of strings to the context. + * Usually you don't need to use this function directly but its macro wrapper, + * avio_print. + */ +void avio_print_string_array(AVIOContext *s, const char *strings[]); + +/** + * Write strings (const char *) to the context. + * This is a convenience macro around avio_print_string_array and it + * automatically creates the string array from the variable argument list. + * For simple string concatenations this function is more performant than using + * avio_printf since it does not need a temporary buffer. + */ +#define avio_print(s, ...) \ + avio_print_string_array(s, (const char*[]){__VA_ARGS__, NULL}) + +/** + * Force flushing of buffered data. + * + * For write streams, force the buffered data to be immediately written to the output, + * without to wait to fill the internal buffer. + * + * For read streams, discard all currently buffered data, and advance the + * reported file position to that of the underlying stream. This does not + * read new data, and does not perform any seeks. + */ +void avio_flush(AVIOContext *s); + +/** + * Read size bytes from AVIOContext into buf. + * @return number of bytes read or AVERROR + */ +int avio_read(AVIOContext *s, unsigned char *buf, int size); + +/** + * Read size bytes from AVIOContext into buf. Unlike avio_read(), this is allowed + * to read fewer bytes than requested. The missing bytes can be read in the next + * call. This always tries to read at least 1 byte. + * Useful to reduce latency in certain cases. + * @return number of bytes read or AVERROR + */ +int avio_read_partial(AVIOContext *s, unsigned char *buf, int size); + +/** + * @name Functions for reading from AVIOContext + * @{ + * + * @note return 0 if EOF, so you cannot use it if EOF handling is + * necessary + */ +int avio_r8 (AVIOContext *s); +unsigned int avio_rl16(AVIOContext *s); +unsigned int avio_rl24(AVIOContext *s); +unsigned int avio_rl32(AVIOContext *s); +uint64_t avio_rl64(AVIOContext *s); +unsigned int avio_rb16(AVIOContext *s); +unsigned int avio_rb24(AVIOContext *s); +unsigned int avio_rb32(AVIOContext *s); +uint64_t avio_rb64(AVIOContext *s); +/** + * @} + */ + +/** + * Read a string from pb into buf. The reading will terminate when either + * a NULL character was encountered, maxlen bytes have been read, or nothing + * more can be read from pb. The result is guaranteed to be NULL-terminated, it + * will be truncated if buf is too small. + * Note that the string is not interpreted or validated in any way, it + * might get truncated in the middle of a sequence for multi-byte encodings. + * + * @return number of bytes read (is always <= maxlen). + * If reading ends on EOF or error, the return value will be one more than + * bytes actually read. + */ +int avio_get_str(AVIOContext *pb, int maxlen, char *buf, int buflen); + +/** + * Read a UTF-16 string from pb and convert it to UTF-8. + * The reading will terminate when either a null or invalid character was + * encountered or maxlen bytes have been read. + * @return number of bytes read (is always <= maxlen) + */ +int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen); +int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen); + + +/** + * @name URL open modes + * The flags argument to avio_open must be one of the following + * constants, optionally ORed with other flags. + * @{ + */ +#define AVIO_FLAG_READ 1 /**< read-only */ +#define AVIO_FLAG_WRITE 2 /**< write-only */ +#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) /**< read-write pseudo flag */ +/** + * @} + */ + +/** + * Use non-blocking mode. + * If this flag is set, operations on the context will return + * AVERROR(EAGAIN) if they can not be performed immediately. + * If this flag is not set, operations on the context will never return + * AVERROR(EAGAIN). + * Note that this flag does not affect the opening/connecting of the + * context. Connecting a protocol will always block if necessary (e.g. on + * network protocols) but never hang (e.g. on busy devices). + * Warning: non-blocking protocols is work-in-progress; this flag may be + * silently ignored. + */ +#define AVIO_FLAG_NONBLOCK 8 + +/** + * Use direct mode. + * avio_read and avio_write should if possible be satisfied directly + * instead of going through a buffer, and avio_seek will always + * call the underlying seek function directly. + */ +#define AVIO_FLAG_DIRECT 0x8000 + +/** + * Create and initialize a AVIOContext for accessing the + * resource indicated by url. + * @note When the resource indicated by url has been opened in + * read+write mode, the AVIOContext can be used only for writing. + * + * @param s Used to return the pointer to the created AVIOContext. + * In case of failure the pointed to value is set to NULL. + * @param url resource to access + * @param flags flags which control how the resource indicated by url + * is to be opened + * @return >= 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure + */ +int avio_open(AVIOContext **s, const char *url, int flags); + +/** + * Create and initialize a AVIOContext for accessing the + * resource indicated by url. + * @note When the resource indicated by url has been opened in + * read+write mode, the AVIOContext can be used only for writing. + * + * @param s Used to return the pointer to the created AVIOContext. + * In case of failure the pointed to value is set to NULL. + * @param url resource to access + * @param flags flags which control how the resource indicated by url + * is to be opened + * @param int_cb an interrupt callback to be used at the protocols level + * @param options A dictionary filled with protocol-private options. On return + * this parameter will be destroyed and replaced with a dict containing options + * that were not found. May be NULL. + * @return >= 0 in case of success, a negative value corresponding to an + * AVERROR code in case of failure + */ +int avio_open2(AVIOContext **s, const char *url, int flags, + const AVIOInterruptCB *int_cb, AVDictionary **options); + +/** + * Close the resource accessed by the AVIOContext s and free it. + * This function can only be used if s was opened by avio_open(). + * + * The internal buffer is automatically flushed before closing the + * resource. + * + * @return 0 on success, an AVERROR < 0 on error. + * @see avio_closep + */ +int avio_close(AVIOContext *s); + +/** + * Close the resource accessed by the AVIOContext *s, free it + * and set the pointer pointing to it to NULL. + * This function can only be used if s was opened by avio_open(). + * + * The internal buffer is automatically flushed before closing the + * resource. + * + * @return 0 on success, an AVERROR < 0 on error. + * @see avio_close + */ +int avio_closep(AVIOContext **s); + + +/** + * Open a write only memory stream. + * + * @param s new IO context + * @return zero if no error. + */ +int avio_open_dyn_buf(AVIOContext **s); + +/** + * Return the written size and a pointer to the buffer. + * The AVIOContext stream is left intact. + * The buffer must NOT be freed. + * No padding is added to the buffer. + * + * @param s IO context + * @param pbuffer pointer to a byte buffer + * @return the length of the byte buffer + */ +int avio_get_dyn_buf(AVIOContext *s, uint8_t **pbuffer); + +/** + * Return the written size and a pointer to the buffer. The buffer + * must be freed with av_free(). + * Padding of AV_INPUT_BUFFER_PADDING_SIZE is added to the buffer. + * + * @param s IO context + * @param pbuffer pointer to a byte buffer + * @return the length of the byte buffer + */ +int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer); + +/** + * Iterate through names of available protocols. + * + * @param opaque A private pointer representing current protocol. + * It must be a pointer to NULL on first iteration and will + * be updated by successive calls to avio_enum_protocols. + * @param output If set to 1, iterate over output protocols, + * otherwise over input protocols. + * + * @return A static string containing the name of current protocol or NULL + */ +const char *avio_enum_protocols(void **opaque, int output); + +/** + * Get AVClass by names of available protocols. + * + * @return A AVClass of input protocol name or NULL + */ +const AVClass *avio_protocol_get_class(const char *name); + +/** + * Pause and resume playing - only meaningful if using a network streaming + * protocol (e.g. MMS). + * + * @param h IO context from which to call the read_pause function pointer + * @param pause 1 for pause, 0 for resume + */ +int avio_pause(AVIOContext *h, int pause); + +/** + * Seek to a given timestamp relative to some component stream. + * Only meaningful if using a network streaming protocol (e.g. MMS.). + * + * @param h IO context from which to call the seek function pointers + * @param stream_index The stream index that the timestamp is relative to. + * If stream_index is (-1) the timestamp should be in AV_TIME_BASE + * units from the beginning of the presentation. + * If a stream_index >= 0 is used and the protocol does not support + * seeking based on component streams, the call will fail. + * @param timestamp timestamp in AVStream.time_base units + * or if there is no stream specified then in AV_TIME_BASE units. + * @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE + * and AVSEEK_FLAG_ANY. The protocol may silently ignore + * AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will + * fail if used and not supported. + * @return >= 0 on success + * @see AVInputFormat::read_seek + */ +int64_t avio_seek_time(AVIOContext *h, int stream_index, + int64_t timestamp, int flags); + +/* Avoid a warning. The header can not be included because it breaks c++. */ +struct AVBPrint; + +/** + * Read contents of h into print buffer, up to max_size bytes, or up to EOF. + * + * @return 0 for success (max_size bytes read or EOF reached), negative error + * code otherwise + */ +int avio_read_to_bprint(AVIOContext *h, struct AVBPrint *pb, size_t max_size); + +/** + * Accept and allocate a client context on a server context. + * @param s the server context + * @param c the client context, must be unallocated + * @return >= 0 on success or a negative value corresponding + * to an AVERROR on failure + */ +int avio_accept(AVIOContext *s, AVIOContext **c); + +/** + * Perform one step of the protocol handshake to accept a new client. + * This function must be called on a client returned by avio_accept() before + * using it as a read/write context. + * It is separate from avio_accept() because it may block. + * A step of the handshake is defined by places where the application may + * decide to change the proceedings. + * For example, on a protocol with a request header and a reply header, each + * one can constitute a step because the application may use the parameters + * from the request to change parameters in the reply; or each individual + * chunk of the request can constitute a step. + * If the handshake is already finished, avio_handshake() does nothing and + * returns 0 immediately. + * + * @param c the client context to perform the handshake on + * @return 0 on a complete and successful handshake + * > 0 if the handshake progressed, but is not complete + * < 0 for an AVERROR code + */ +int avio_handshake(AVIOContext *c); +#endif /* AVFORMAT_AVIO_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavformat/version.h b/third_party/ffmpeg/uos/amd64/include/libavformat/version.h new file mode 100644 index 00000000..7b414039 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavformat/version.h @@ -0,0 +1,47 @@ +/* + * Version macros. + * + * 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 AVFORMAT_VERSION_H +#define AVFORMAT_VERSION_H + +/** + * @file + * @ingroup libavf + * Libavformat version macros + */ + +#include "libavutil/version.h" + +#include "version_major.h" + +#define LIBAVFORMAT_VERSION_MINOR 30 +#define LIBAVFORMAT_VERSION_MICRO 100 + +#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ + LIBAVFORMAT_VERSION_MINOR, \ + LIBAVFORMAT_VERSION_MICRO) +#define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \ + LIBAVFORMAT_VERSION_MINOR, \ + LIBAVFORMAT_VERSION_MICRO) +#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT + +#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION) + +#endif /* AVFORMAT_VERSION_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavformat/version_major.h b/third_party/ffmpeg/uos/amd64/include/libavformat/version_major.h new file mode 100644 index 00000000..5f71298b --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavformat/version_major.h @@ -0,0 +1,53 @@ +/* + * Version macros. + * + * 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 AVFORMAT_VERSION_MAJOR_H +#define AVFORMAT_VERSION_MAJOR_H + +/** + * @file + * @ingroup libavf + * Libavformat version macros + */ + +// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) +// Also please add any ticket numbers that you believe might be affected here +#define LIBAVFORMAT_VERSION_MAJOR 59 + +/** + * FF_API_* defines may be placed below to indicate public API that will be + * dropped at a future version bump. The defines themselves are not part of + * the public API and may change, break or disappear at any time. + * + * @note, when bumping the major version it is recommended to manually + * disable each FF_API_* in its own commit instead of disabling them all + * at once through the bump. This improves the git bisect-ability of the change. + * + */ +#define FF_API_LAVF_PRIV_OPT (LIBAVFORMAT_VERSION_MAJOR < 60) +#define FF_API_COMPUTE_PKT_FIELDS2 (LIBAVFORMAT_VERSION_MAJOR < 60) +#define FF_API_AVIOCONTEXT_WRITTEN (LIBAVFORMAT_VERSION_MAJOR < 60) +#define FF_HLS_TS_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 60) +#define FF_API_AVSTREAM_CLASS (LIBAVFORMAT_VERSION_MAJOR > 59) + + +#define FF_API_R_FRAME_RATE 1 + +#endif /* AVFORMAT_VERSION_MAJOR_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/adler32.h b/third_party/ffmpeg/uos/amd64/include/libavutil/adler32.h new file mode 100644 index 00000000..232d07f5 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/adler32.h @@ -0,0 +1,63 @@ +/* + * copyright (c) 2006 Mans Rullgard + * + * 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 + */ + +/** + * @file + * @ingroup lavu_adler32 + * Public header for Adler-32 hash function implementation. + */ + +#ifndef AVUTIL_ADLER32_H +#define AVUTIL_ADLER32_H + +#include +#include +#include "attributes.h" + +/** + * @defgroup lavu_adler32 Adler-32 + * @ingroup lavu_hash + * Adler-32 hash function implementation. + * + * @{ + */ + +typedef uint32_t AVAdler; + +/** + * Calculate the Adler32 checksum of a buffer. + * + * Passing the return value to a subsequent av_adler32_update() call + * allows the checksum of multiple buffers to be calculated as though + * they were concatenated. + * + * @param adler initial checksum value + * @param buf pointer to input buffer + * @param len size of input buffer + * @return updated checksum + */ +AVAdler av_adler32_update(AVAdler adler, const uint8_t *buf, + size_t len) av_pure; + +/** + * @} + */ + +#endif /* AVUTIL_ADLER32_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/aes.h b/third_party/ffmpeg/uos/amd64/include/libavutil/aes.h new file mode 100644 index 00000000..d243286c --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/aes.h @@ -0,0 +1,64 @@ +/* + * copyright (c) 2007 Michael Niedermayer + * + * 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 AVUTIL_AES_H +#define AVUTIL_AES_H + +#include + +#include "attributes.h" + +/** + * @defgroup lavu_aes AES + * @ingroup lavu_crypto + * @{ + */ + +extern const int av_aes_size; + +struct AVAES; + +/** + * Allocate an AVAES context. + */ +struct AVAES *av_aes_alloc(void); + +/** + * Initialize an AVAES context. + * @param key_bits 128, 192 or 256 + * @param decrypt 0 for encryption, 1 for decryption + */ +int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * @param count number of 16 byte blocks + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param iv initialization vector for CBC mode, if NULL then ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); + +/** + * @} + */ + +#endif /* AVUTIL_AES_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/aes_ctr.h b/third_party/ffmpeg/uos/amd64/include/libavutil/aes_ctr.h new file mode 100644 index 00000000..4e9fda7a --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/aes_ctr.h @@ -0,0 +1,87 @@ +/* + * AES-CTR cipher + * Copyright (c) 2015 Eran Kornblau + * + * 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 AVUTIL_AES_CTR_H +#define AVUTIL_AES_CTR_H + +#include + +#include "attributes.h" + +#define AES_CTR_KEY_SIZE (16) +#define AES_CTR_IV_SIZE (8) + +struct AVAESCTR; + +/** + * Allocate an AVAESCTR context. + */ +struct AVAESCTR *av_aes_ctr_alloc(void); + +/** + * Initialize an AVAESCTR context. + * @param key encryption key, must have a length of AES_CTR_KEY_SIZE + */ +int av_aes_ctr_init(struct AVAESCTR *a, const uint8_t *key); + +/** + * Release an AVAESCTR context. + */ +void av_aes_ctr_free(struct AVAESCTR *a); + +/** + * Process a buffer using a previously initialized context. + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param size the size of src and dst + */ +void av_aes_ctr_crypt(struct AVAESCTR *a, uint8_t *dst, const uint8_t *src, int size); + +/** + * Get the current iv + */ +const uint8_t* av_aes_ctr_get_iv(struct AVAESCTR *a); + +/** + * Generate a random iv + */ +void av_aes_ctr_set_random_iv(struct AVAESCTR *a); + +/** + * Forcefully change the 8-byte iv + */ +void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t* iv); + +/** + * Forcefully change the "full" 16-byte iv, including the counter + */ +void av_aes_ctr_set_full_iv(struct AVAESCTR *a, const uint8_t* iv); + +/** + * Increment the top 64 bit of the iv (performed after each frame) + */ +void av_aes_ctr_increment_iv(struct AVAESCTR *a); + +/** + * @} + */ + +#endif /* AVUTIL_AES_CTR_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/attributes.h b/third_party/ffmpeg/uos/amd64/include/libavutil/attributes.h new file mode 100644 index 00000000..04c615c9 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/attributes.h @@ -0,0 +1,173 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * Macro definitions for various function/variable attributes + */ + +#ifndef AVUTIL_ATTRIBUTES_H +#define AVUTIL_ATTRIBUTES_H + +#ifdef __GNUC__ +# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > (x) || __GNUC__ == (x) && __GNUC_MINOR__ >= (y)) +# define AV_GCC_VERSION_AT_MOST(x,y) (__GNUC__ < (x) || __GNUC__ == (x) && __GNUC_MINOR__ <= (y)) +#else +# define AV_GCC_VERSION_AT_LEAST(x,y) 0 +# define AV_GCC_VERSION_AT_MOST(x,y) 0 +#endif + +#ifdef __has_builtin +# define AV_HAS_BUILTIN(x) __has_builtin(x) +#else +# define AV_HAS_BUILTIN(x) 0 +#endif + +#ifndef av_always_inline +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_always_inline __attribute__((always_inline)) inline +#elif defined(_MSC_VER) +# define av_always_inline __forceinline +#else +# define av_always_inline inline +#endif +#endif + +#ifndef av_extern_inline +#if defined(__ICL) && __ICL >= 1210 || defined(__GNUC_STDC_INLINE__) +# define av_extern_inline extern inline +#else +# define av_extern_inline inline +#endif +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,4) +# define av_warn_unused_result __attribute__((warn_unused_result)) +#else +# define av_warn_unused_result +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_noinline __attribute__((noinline)) +#elif defined(_MSC_VER) +# define av_noinline __declspec(noinline) +#else +# define av_noinline +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__) +# define av_pure __attribute__((pure)) +#else +# define av_pure +#endif + +#if AV_GCC_VERSION_AT_LEAST(2,6) || defined(__clang__) +# define av_const __attribute__((const)) +#else +# define av_const +#endif + +#if AV_GCC_VERSION_AT_LEAST(4,3) || defined(__clang__) +# define av_cold __attribute__((cold)) +#else +# define av_cold +#endif + +#if AV_GCC_VERSION_AT_LEAST(4,1) && !defined(__llvm__) +# define av_flatten __attribute__((flatten)) +#else +# define av_flatten +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define attribute_deprecated __attribute__((deprecated)) +#elif defined(_MSC_VER) +# define attribute_deprecated __declspec(deprecated) +#else +# define attribute_deprecated +#endif + +/** + * Disable warnings about deprecated features + * This is useful for sections of code kept for backward compatibility and + * scheduled for removal. + */ +#ifndef AV_NOWARN_DEPRECATED +#if AV_GCC_VERSION_AT_LEAST(4,6) || defined(__clang__) +# define AV_NOWARN_DEPRECATED(code) \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \ + code \ + _Pragma("GCC diagnostic pop") +#elif defined(_MSC_VER) +# define AV_NOWARN_DEPRECATED(code) \ + __pragma(warning(push)) \ + __pragma(warning(disable : 4996)) \ + code; \ + __pragma(warning(pop)) +#else +# define AV_NOWARN_DEPRECATED(code) code +#endif +#endif + +#if defined(__GNUC__) || defined(__clang__) +# define av_unused __attribute__((unused)) +#else +# define av_unused +#endif + +/** + * Mark a variable as used and prevent the compiler from optimizing it + * away. This is useful for variables accessed only from inline + * assembler without the compiler being aware. + */ +#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__) +# define av_used __attribute__((used)) +#else +# define av_used +#endif + +#if AV_GCC_VERSION_AT_LEAST(3,3) || defined(__clang__) +# define av_alias __attribute__((may_alias)) +#else +# define av_alias +#endif + +#if (defined(__GNUC__) || defined(__clang__)) && !defined(__INTEL_COMPILER) +# define av_uninit(x) x=x +#else +# define av_uninit(x) x +#endif + +#if defined(__GNUC__) || defined(__clang__) +# define av_builtin_constant_p __builtin_constant_p +# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos))) +#else +# define av_builtin_constant_p(x) 0 +# define av_printf_format(fmtpos, attrpos) +#endif + +#if AV_GCC_VERSION_AT_LEAST(2,5) || defined(__clang__) +# define av_noreturn __attribute__((noreturn)) +#else +# define av_noreturn +#endif + +#endif /* AVUTIL_ATTRIBUTES_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/audio_fifo.h b/third_party/ffmpeg/uos/amd64/include/libavutil/audio_fifo.h new file mode 100644 index 00000000..d1e4c856 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/audio_fifo.h @@ -0,0 +1,186 @@ +/* + * Audio FIFO + * Copyright (c) 2012 Justin Ruggles + * + * 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 + */ + +/** + * @file + * Audio FIFO Buffer + */ + +#ifndef AVUTIL_AUDIO_FIFO_H +#define AVUTIL_AUDIO_FIFO_H + +#include "attributes.h" +#include "samplefmt.h" + +/** + * @addtogroup lavu_audio + * @{ + * + * @defgroup lavu_audiofifo Audio FIFO Buffer + * @{ + */ + +/** + * Context for an Audio FIFO Buffer. + * + * - Operates at the sample level rather than the byte level. + * - Supports multiple channels with either planar or packed sample format. + * - Automatic reallocation when writing to a full buffer. + */ +typedef struct AVAudioFifo AVAudioFifo; + +/** + * Free an AVAudioFifo. + * + * @param af AVAudioFifo to free + */ +void av_audio_fifo_free(AVAudioFifo *af); + +/** + * Allocate an AVAudioFifo. + * + * @param sample_fmt sample format + * @param channels number of channels + * @param nb_samples initial allocation size, in samples + * @return newly allocated AVAudioFifo, or NULL on error + */ +AVAudioFifo *av_audio_fifo_alloc(enum AVSampleFormat sample_fmt, int channels, + int nb_samples); + +/** + * Reallocate an AVAudioFifo. + * + * @param af AVAudioFifo to reallocate + * @param nb_samples new allocation size, in samples + * @return 0 if OK, or negative AVERROR code on failure + */ +av_warn_unused_result +int av_audio_fifo_realloc(AVAudioFifo *af, int nb_samples); + +/** + * Write data to an AVAudioFifo. + * + * The AVAudioFifo will be reallocated automatically if the available space + * is less than nb_samples. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param af AVAudioFifo to write to + * @param data audio data plane pointers + * @param nb_samples number of samples to write + * @return number of samples actually written, or negative AVERROR + * code on failure. If successful, the number of samples + * actually written will always be nb_samples. + */ +int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples); + +/** + * Peek data from an AVAudioFifo. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param af AVAudioFifo to read from + * @param data audio data plane pointers + * @param nb_samples number of samples to peek + * @return number of samples actually peek, or negative AVERROR code + * on failure. The number of samples actually peek will not + * be greater than nb_samples, and will only be less than + * nb_samples if av_audio_fifo_size is less than nb_samples. + */ +int av_audio_fifo_peek(AVAudioFifo *af, void **data, int nb_samples); + +/** + * Peek data from an AVAudioFifo. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param af AVAudioFifo to read from + * @param data audio data plane pointers + * @param nb_samples number of samples to peek + * @param offset offset from current read position + * @return number of samples actually peek, or negative AVERROR code + * on failure. The number of samples actually peek will not + * be greater than nb_samples, and will only be less than + * nb_samples if av_audio_fifo_size is less than nb_samples. + */ +int av_audio_fifo_peek_at(AVAudioFifo *af, void **data, int nb_samples, int offset); + +/** + * Read data from an AVAudioFifo. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param af AVAudioFifo to read from + * @param data audio data plane pointers + * @param nb_samples number of samples to read + * @return number of samples actually read, or negative AVERROR code + * on failure. The number of samples actually read will not + * be greater than nb_samples, and will only be less than + * nb_samples if av_audio_fifo_size is less than nb_samples. + */ +int av_audio_fifo_read(AVAudioFifo *af, void **data, int nb_samples); + +/** + * Drain data from an AVAudioFifo. + * + * Removes the data without reading it. + * + * @param af AVAudioFifo to drain + * @param nb_samples number of samples to drain + * @return 0 if OK, or negative AVERROR code on failure + */ +int av_audio_fifo_drain(AVAudioFifo *af, int nb_samples); + +/** + * Reset the AVAudioFifo buffer. + * + * This empties all data in the buffer. + * + * @param af AVAudioFifo to reset + */ +void av_audio_fifo_reset(AVAudioFifo *af); + +/** + * Get the current number of samples in the AVAudioFifo available for reading. + * + * @param af the AVAudioFifo to query + * @return number of samples available for reading + */ +int av_audio_fifo_size(AVAudioFifo *af); + +/** + * Get the current number of samples in the AVAudioFifo available for writing. + * + * @param af the AVAudioFifo to query + * @return number of samples available for writing + */ +int av_audio_fifo_space(AVAudioFifo *af); + +/** + * @} + * @} + */ + +#endif /* AVUTIL_AUDIO_FIFO_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/avassert.h b/third_party/ffmpeg/uos/amd64/include/libavutil/avassert.h new file mode 100644 index 00000000..51e462bb --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/avassert.h @@ -0,0 +1,75 @@ +/* + * copyright (c) 2010 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * simple assert() macros that are a bit more flexible than ISO C assert(). + * @author Michael Niedermayer + */ + +#ifndef AVUTIL_AVASSERT_H +#define AVUTIL_AVASSERT_H + +#include +#include "log.h" +#include "macros.h" + +/** + * assert() equivalent, that is always enabled. + */ +#define av_assert0(cond) do { \ + if (!(cond)) { \ + av_log(NULL, AV_LOG_PANIC, "Assertion %s failed at %s:%d\n", \ + AV_STRINGIFY(cond), __FILE__, __LINE__); \ + abort(); \ + } \ +} while (0) + + +/** + * assert() equivalent, that does not lie in speed critical code. + * These asserts() thus can be enabled without fearing speed loss. + */ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0 +#define av_assert1(cond) av_assert0(cond) +#else +#define av_assert1(cond) ((void)0) +#endif + + +/** + * assert() equivalent, that does lie in speed critical code. + */ +#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1 +#define av_assert2(cond) av_assert0(cond) +#define av_assert2_fpu() av_assert0_fpu() +#else +#define av_assert2(cond) ((void)0) +#define av_assert2_fpu() ((void)0) +#endif + +/** + * Assert that floating point operations can be executed. + * + * This will av_assert0() that the cpu is not in MMX state on X86 + */ +void av_assert0_fpu(void); + +#endif /* AVUTIL_AVASSERT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/avconfig.h b/third_party/ffmpeg/uos/amd64/include/libavutil/avconfig.h new file mode 100644 index 00000000..c289fbb5 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/avconfig.h @@ -0,0 +1,6 @@ +/* Generated by ffmpeg configure */ +#ifndef AVUTIL_AVCONFIG_H +#define AVUTIL_AVCONFIG_H +#define AV_HAVE_BIGENDIAN 0 +#define AV_HAVE_FAST_UNALIGNED 1 +#endif /* AVUTIL_AVCONFIG_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/avstring.h b/third_party/ffmpeg/uos/amd64/include/libavutil/avstring.h new file mode 100644 index 00000000..fae446c3 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/avstring.h @@ -0,0 +1,437 @@ +/* + * Copyright (c) 2007 Mans Rullgard + * + * 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 AVUTIL_AVSTRING_H +#define AVUTIL_AVSTRING_H + +#include +#include +#include "attributes.h" +#include "version.h" + +/** + * @addtogroup lavu_string + * @{ + */ + +/** + * Return non-zero if pfx is a prefix of str. If it is, *ptr is set to + * the address of the first character in str after the prefix. + * + * @param str input string + * @param pfx prefix to test + * @param ptr updated if the prefix is matched inside str + * @return non-zero if the prefix matches, zero otherwise + */ +int av_strstart(const char *str, const char *pfx, const char **ptr); + +/** + * Return non-zero if pfx is a prefix of str independent of case. If + * it is, *ptr is set to the address of the first character in str + * after the prefix. + * + * @param str input string + * @param pfx prefix to test + * @param ptr updated if the prefix is matched inside str + * @return non-zero if the prefix matches, zero otherwise + */ +int av_stristart(const char *str, const char *pfx, const char **ptr); + +/** + * Locate the first case-independent occurrence in the string haystack + * of the string needle. A zero-length string needle is considered to + * match at the start of haystack. + * + * This function is a case-insensitive version of the standard strstr(). + * + * @param haystack string to search in + * @param needle string to search for + * @return pointer to the located match within haystack + * or a null pointer if no match + */ +char *av_stristr(const char *haystack, const char *needle); + +/** + * Locate the first occurrence of the string needle in the string haystack + * where not more than hay_length characters are searched. A zero-length + * string needle is considered to match at the start of haystack. + * + * This function is a length-limited version of the standard strstr(). + * + * @param haystack string to search in + * @param needle string to search for + * @param hay_length length of string to search in + * @return pointer to the located match within haystack + * or a null pointer if no match + */ +char *av_strnstr(const char *haystack, const char *needle, size_t hay_length); + +/** + * Copy the string src to dst, but no more than size - 1 bytes, and + * null-terminate dst. + * + * This function is the same as BSD strlcpy(). + * + * @param dst destination buffer + * @param src source string + * @param size size of destination buffer + * @return the length of src + * + * @warning since the return value is the length of src, src absolutely + * _must_ be a properly 0-terminated string, otherwise this will read beyond + * the end of the buffer and possibly crash. + */ +size_t av_strlcpy(char *dst, const char *src, size_t size); + +/** + * Append the string src to the string dst, but to a total length of + * no more than size - 1 bytes, and null-terminate dst. + * + * This function is similar to BSD strlcat(), but differs when + * size <= strlen(dst). + * + * @param dst destination buffer + * @param src source string + * @param size size of destination buffer + * @return the total length of src and dst + * + * @warning since the return value use the length of src and dst, these + * absolutely _must_ be a properly 0-terminated strings, otherwise this + * will read beyond the end of the buffer and possibly crash. + */ +size_t av_strlcat(char *dst, const char *src, size_t size); + +/** + * Append output to a string, according to a format. Never write out of + * the destination buffer, and always put a terminating 0 within + * the buffer. + * @param dst destination buffer (string to which the output is + * appended) + * @param size total size of the destination buffer + * @param fmt printf-compatible format string, specifying how the + * following parameters are used + * @return the length of the string that would have been generated + * if enough space had been available + */ +size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) av_printf_format(3, 4); + +/** + * Get the count of continuous non zero chars starting from the beginning. + * + * @param len maximum number of characters to check in the string, that + * is the maximum value which is returned by the function + */ +static inline size_t av_strnlen(const char *s, size_t len) +{ + size_t i; + for (i = 0; i < len && s[i]; i++) + ; + return i; +} + +/** + * Print arguments following specified format into a large enough auto + * allocated buffer. It is similar to GNU asprintf(). + * @param fmt printf-compatible format string, specifying how the + * following parameters are used. + * @return the allocated string + * @note You have to free the string yourself with av_free(). + */ +char *av_asprintf(const char *fmt, ...) av_printf_format(1, 2); + +#if FF_API_D2STR +/** + * Convert a number to an av_malloced string. + * @deprecated use av_asprintf() with "%f" or a more specific format + */ +attribute_deprecated +char *av_d2str(double d); +#endif + +/** + * Unescape the given string until a non escaped terminating char, + * and return the token corresponding to the unescaped string. + * + * The normal \ and ' escaping is supported. Leading and trailing + * whitespaces are removed, unless they are escaped with '\' or are + * enclosed between ''. + * + * @param buf the buffer to parse, buf will be updated to point to the + * terminating char + * @param term a 0-terminated list of terminating chars + * @return the malloced unescaped string, which must be av_freed by + * the user, NULL in case of allocation failure + */ +char *av_get_token(const char **buf, const char *term); + +/** + * Split the string into several tokens which can be accessed by + * successive calls to av_strtok(). + * + * A token is defined as a sequence of characters not belonging to the + * set specified in delim. + * + * On the first call to av_strtok(), s should point to the string to + * parse, and the value of saveptr is ignored. In subsequent calls, s + * should be NULL, and saveptr should be unchanged since the previous + * call. + * + * This function is similar to strtok_r() defined in POSIX.1. + * + * @param s the string to parse, may be NULL + * @param delim 0-terminated list of token delimiters, must be non-NULL + * @param saveptr user-provided pointer which points to stored + * information necessary for av_strtok() to continue scanning the same + * string. saveptr is updated to point to the next character after the + * first delimiter found, or to NULL if the string was terminated + * @return the found token, or NULL when no token is found + */ +char *av_strtok(char *s, const char *delim, char **saveptr); + +/** + * Locale-independent conversion of ASCII isdigit. + */ +static inline av_const int av_isdigit(int c) +{ + return c >= '0' && c <= '9'; +} + +/** + * Locale-independent conversion of ASCII isgraph. + */ +static inline av_const int av_isgraph(int c) +{ + return c > 32 && c < 127; +} + +/** + * Locale-independent conversion of ASCII isspace. + */ +static inline av_const int av_isspace(int c) +{ + return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || + c == '\v'; +} + +/** + * Locale-independent conversion of ASCII characters to uppercase. + */ +static inline av_const int av_toupper(int c) +{ + if (c >= 'a' && c <= 'z') + c ^= 0x20; + return c; +} + +/** + * Locale-independent conversion of ASCII characters to lowercase. + */ +static inline av_const int av_tolower(int c) +{ + if (c >= 'A' && c <= 'Z') + c ^= 0x20; + return c; +} + +/** + * Locale-independent conversion of ASCII isxdigit. + */ +static inline av_const int av_isxdigit(int c) +{ + c = av_tolower(c); + return av_isdigit(c) || (c >= 'a' && c <= 'f'); +} + +/** + * Locale-independent case-insensitive compare. + * @note This means only ASCII-range characters are case-insensitive + */ +int av_strcasecmp(const char *a, const char *b); + +/** + * Locale-independent case-insensitive compare. + * @note This means only ASCII-range characters are case-insensitive + */ +int av_strncasecmp(const char *a, const char *b, size_t n); + +/** + * Locale-independent strings replace. + * @note This means only ASCII-range characters are replace + */ +char *av_strireplace(const char *str, const char *from, const char *to); + +/** + * Thread safe basename. + * @param path the string to parse, on DOS both \ and / are considered separators. + * @return pointer to the basename substring. + * If path does not contain a slash, the function returns a copy of path. + * If path is a NULL pointer or points to an empty string, a pointer + * to a string "." is returned. + */ +const char *av_basename(const char *path); + +/** + * Thread safe dirname. + * @param path the string to parse, on DOS both \ and / are considered separators. + * @return A pointer to a string that's the parent directory of path. + * If path is a NULL pointer or points to an empty string, a pointer + * to a string "." is returned. + * @note the function may modify the contents of the path, so copies should be passed. + */ +const char *av_dirname(char *path); + +/** + * Match instances of a name in a comma-separated list of names. + * List entries are checked from the start to the end of the names list, + * the first match ends further processing. If an entry prefixed with '-' + * matches, then 0 is returned. The "ALL" list entry is considered to + * match all names. + * + * @param name Name to look for. + * @param names List of names. + * @return 1 on match, 0 otherwise. + */ +int av_match_name(const char *name, const char *names); + +/** + * Append path component to the existing path. + * Path separator '/' is placed between when needed. + * Resulting string have to be freed with av_free(). + * @param path base path + * @param component component to be appended + * @return new path or NULL on error. + */ +char *av_append_path_component(const char *path, const char *component); + +enum AVEscapeMode { + AV_ESCAPE_MODE_AUTO, ///< Use auto-selected escaping mode. + AV_ESCAPE_MODE_BACKSLASH, ///< Use backslash escaping. + AV_ESCAPE_MODE_QUOTE, ///< Use single-quote escaping. + AV_ESCAPE_MODE_XML, ///< Use XML non-markup character data escaping. +}; + +/** + * Consider spaces special and escape them even in the middle of the + * string. + * + * This is equivalent to adding the whitespace characters to the special + * characters lists, except it is guaranteed to use the exact same list + * of whitespace characters as the rest of libavutil. + */ +#define AV_ESCAPE_FLAG_WHITESPACE (1 << 0) + +/** + * Escape only specified special characters. + * Without this flag, escape also any characters that may be considered + * special by av_get_token(), such as the single quote. + */ +#define AV_ESCAPE_FLAG_STRICT (1 << 1) + +/** + * Within AV_ESCAPE_MODE_XML, additionally escape single quotes for single + * quoted attributes. + */ +#define AV_ESCAPE_FLAG_XML_SINGLE_QUOTES (1 << 2) + +/** + * Within AV_ESCAPE_MODE_XML, additionally escape double quotes for double + * quoted attributes. + */ +#define AV_ESCAPE_FLAG_XML_DOUBLE_QUOTES (1 << 3) + + +/** + * Escape string in src, and put the escaped string in an allocated + * string in *dst, which must be freed with av_free(). + * + * @param dst pointer where an allocated string is put + * @param src string to escape, must be non-NULL + * @param special_chars string containing the special characters which + * need to be escaped, can be NULL + * @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros. + * Any unknown value for mode will be considered equivalent to + * AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without + * notice. + * @param flags flags which control how to escape, see AV_ESCAPE_FLAG_ macros + * @return the length of the allocated string, or a negative error code in case of error + * @see av_bprint_escape() + */ +av_warn_unused_result +int av_escape(char **dst, const char *src, const char *special_chars, + enum AVEscapeMode mode, int flags); + +#define AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES 1 ///< accept codepoints over 0x10FFFF +#define AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS 2 ///< accept non-characters - 0xFFFE and 0xFFFF +#define AV_UTF8_FLAG_ACCEPT_SURROGATES 4 ///< accept UTF-16 surrogates codes +#define AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES 8 ///< exclude control codes not accepted by XML + +#define AV_UTF8_FLAG_ACCEPT_ALL \ + AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES|AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS|AV_UTF8_FLAG_ACCEPT_SURROGATES + +/** + * Read and decode a single UTF-8 code point (character) from the + * buffer in *buf, and update *buf to point to the next byte to + * decode. + * + * In case of an invalid byte sequence, the pointer will be updated to + * the next byte after the invalid sequence and the function will + * return an error code. + * + * Depending on the specified flags, the function will also fail in + * case the decoded code point does not belong to a valid range. + * + * @note For speed-relevant code a carefully implemented use of + * GET_UTF8() may be preferred. + * + * @param codep pointer used to return the parsed code in case of success. + * The value in *codep is set even in case the range check fails. + * @param bufp pointer to the address the first byte of the sequence + * to decode, updated by the function to point to the + * byte next after the decoded sequence + * @param buf_end pointer to the end of the buffer, points to the next + * byte past the last in the buffer. This is used to + * avoid buffer overreads (in case of an unfinished + * UTF-8 sequence towards the end of the buffer). + * @param flags a collection of AV_UTF8_FLAG_* flags + * @return >= 0 in case a sequence was successfully read, a negative + * value in case of invalid sequence + */ +av_warn_unused_result +int av_utf8_decode(int32_t *codep, const uint8_t **bufp, const uint8_t *buf_end, + unsigned int flags); + +/** + * Check if a name is in a list. + * @returns 0 if not found, or the 1 based index where it has been found in the + * list. + */ +int av_match_list(const char *name, const char *list, char separator); + +/** + * See libc sscanf manual for more information. + * Locale-independent sscanf implementation. + */ +int av_sscanf(const char *string, const char *format, ...); + +/** + * @} + */ + +#endif /* AVUTIL_AVSTRING_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/avutil.h b/third_party/ffmpeg/uos/amd64/include/libavutil/avutil.h new file mode 100644 index 00000000..64b68bdb --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/avutil.h @@ -0,0 +1,371 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * 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 AVUTIL_AVUTIL_H +#define AVUTIL_AVUTIL_H + +/** + * @file + * @ingroup lavu + * Convenience header that includes @ref lavu "libavutil"'s core. + */ + +/** + * @mainpage + * + * @section ffmpeg_intro Introduction + * + * This document describes the usage of the different libraries + * provided by FFmpeg. + * + * @li @ref libavc "libavcodec" encoding/decoding library + * @li @ref lavfi "libavfilter" graph-based frame editing library + * @li @ref libavf "libavformat" I/O and muxing/demuxing library + * @li @ref lavd "libavdevice" special devices muxing/demuxing library + * @li @ref lavu "libavutil" common utility library + * @li @ref lswr "libswresample" audio resampling, format conversion and mixing + * @li @ref lpp "libpostproc" post processing library + * @li @ref libsws "libswscale" color conversion and scaling library + * + * @section ffmpeg_versioning Versioning and compatibility + * + * Each of the FFmpeg libraries contains a version.h header, which defines a + * major, minor and micro version number with the + * LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO} macros. The major version + * number is incremented with backward incompatible changes - e.g. removing + * parts of the public API, reordering public struct members, etc. The minor + * version number is incremented for backward compatible API changes or major + * new features - e.g. adding a new public function or a new decoder. The micro + * version number is incremented for smaller changes that a calling program + * might still want to check for - e.g. changing behavior in a previously + * unspecified situation. + * + * FFmpeg guarantees backward API and ABI compatibility for each library as long + * as its major version number is unchanged. This means that no public symbols + * will be removed or renamed. Types and names of the public struct members and + * values of public macros and enums will remain the same (unless they were + * explicitly declared as not part of the public API). Documented behavior will + * not change. + * + * In other words, any correct program that works with a given FFmpeg snapshot + * should work just as well without any changes with any later snapshot with the + * same major versions. This applies to both rebuilding the program against new + * FFmpeg versions or to replacing the dynamic FFmpeg libraries that a program + * links against. + * + * However, new public symbols may be added and new members may be appended to + * public structs whose size is not part of public ABI (most public structs in + * FFmpeg). New macros and enum values may be added. Behavior in undocumented + * situations may change slightly (and be documented). All those are accompanied + * by an entry in doc/APIchanges and incrementing either the minor or micro + * version number. + */ + +/** + * @defgroup lavu libavutil + * Common code shared across all FFmpeg libraries. + * + * @note + * libavutil is designed to be modular. In most cases, in order to use the + * functions provided by one component of libavutil you must explicitly include + * the specific header containing that feature. If you are only using + * media-related components, you could simply include libavutil/avutil.h, which + * brings in most of the "core" components. + * + * @{ + * + * @defgroup lavu_crypto Crypto and Hashing + * + * @{ + * @} + * + * @defgroup lavu_math Mathematics + * @{ + * + * @} + * + * @defgroup lavu_string String Manipulation + * + * @{ + * + * @} + * + * @defgroup lavu_mem Memory Management + * + * @{ + * + * @} + * + * @defgroup lavu_data Data Structures + * @{ + * + * @} + * + * @defgroup lavu_video Video related + * + * @{ + * + * @} + * + * @defgroup lavu_audio Audio related + * + * @{ + * + * @} + * + * @defgroup lavu_error Error Codes + * + * @{ + * + * @} + * + * @defgroup lavu_log Logging Facility + * + * @{ + * + * @} + * + * @defgroup lavu_misc Other + * + * @{ + * + * @defgroup preproc_misc Preprocessor String Macros + * + * @{ + * + * @} + * + * @defgroup version_utils Library Version Macros + * + * @{ + * + * @} + */ + + +/** + * @addtogroup lavu_ver + * @{ + */ + +/** + * Return the LIBAVUTIL_VERSION_INT constant. + */ +unsigned avutil_version(void); + +/** + * Return an informative version string. This usually is the actual release + * version number or a git commit description. This string has no fixed format + * and can change any time. It should never be parsed by code. + */ +const char *av_version_info(void); + +/** + * Return the libavutil build-time configuration. + */ +const char *avutil_configuration(void); + +/** + * Return the libavutil license. + */ +const char *avutil_license(void); + +/** + * @} + */ + +/** + * @addtogroup lavu_media Media Type + * @brief Media Type + */ + +enum AVMediaType { + AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA + AVMEDIA_TYPE_VIDEO, + AVMEDIA_TYPE_AUDIO, + AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous + AVMEDIA_TYPE_SUBTITLE, + AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse + AVMEDIA_TYPE_NB +}; + +/** + * Return a string describing the media_type enum, NULL if media_type + * is unknown. + */ +const char *av_get_media_type_string(enum AVMediaType media_type); + +/** + * @defgroup lavu_const Constants + * @{ + * + * @defgroup lavu_enc Encoding specific + * + * @note those definition should move to avcodec + * @{ + */ + +#define FF_LAMBDA_SHIFT 7 +#define FF_LAMBDA_SCALE (1< + +/** + * @defgroup lavu_base64 Base64 + * @ingroup lavu_crypto + * @{ + */ + +/** + * Decode a base64-encoded string. + * + * @param out buffer for decoded data + * @param in null-terminated input string + * @param out_size size in bytes of the out buffer, must be at + * least 3/4 of the length of in, that is AV_BASE64_DECODE_SIZE(strlen(in)) + * @return number of bytes written, or a negative value in case of + * invalid input + */ +int av_base64_decode(uint8_t *out, const char *in, int out_size); + +/** + * Calculate the output size in bytes needed to decode a base64 string + * with length x to a data buffer. + */ +#define AV_BASE64_DECODE_SIZE(x) ((x) * 3LL / 4) + +/** + * Encode data to base64 and null-terminate. + * + * @param out buffer for encoded data + * @param out_size size in bytes of the out buffer (including the + * null terminator), must be at least AV_BASE64_SIZE(in_size) + * @param in input buffer containing the data to encode + * @param in_size size in bytes of the in buffer + * @return out or NULL in case of error + */ +char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size); + +/** + * Calculate the output size needed to base64-encode x bytes to a + * null-terminated string. + */ +#define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1) + + /** + * @} + */ + +#endif /* AVUTIL_BASE64_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/blowfish.h b/third_party/ffmpeg/uos/amd64/include/libavutil/blowfish.h new file mode 100644 index 00000000..9e289a40 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/blowfish.h @@ -0,0 +1,82 @@ +/* + * Blowfish algorithm + * Copyright (c) 2012 Samuel Pitoiset + * + * 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 AVUTIL_BLOWFISH_H +#define AVUTIL_BLOWFISH_H + +#include + +/** + * @defgroup lavu_blowfish Blowfish + * @ingroup lavu_crypto + * @{ + */ + +#define AV_BF_ROUNDS 16 + +typedef struct AVBlowfish { + uint32_t p[AV_BF_ROUNDS + 2]; + uint32_t s[4][256]; +} AVBlowfish; + +/** + * Allocate an AVBlowfish context. + */ +AVBlowfish *av_blowfish_alloc(void); + +/** + * Initialize an AVBlowfish context. + * + * @param ctx an AVBlowfish context + * @param key a key + * @param key_len length of the key + */ +void av_blowfish_init(struct AVBlowfish *ctx, const uint8_t *key, int key_len); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * + * @param ctx an AVBlowfish context + * @param xl left four bytes halves of input to be encrypted + * @param xr right four bytes halves of input to be encrypted + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_blowfish_crypt_ecb(struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr, + int decrypt); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * + * @param ctx an AVBlowfish context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 8 byte blocks + * @param iv initialization vector for CBC mode, if NULL ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_blowfish_crypt(struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, + int count, uint8_t *iv, int decrypt); + +/** + * @} + */ + +#endif /* AVUTIL_BLOWFISH_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/bprint.h b/third_party/ffmpeg/uos/amd64/include/libavutil/bprint.h new file mode 100644 index 00000000..c09b1ac1 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/bprint.h @@ -0,0 +1,219 @@ +/* + * Copyright (c) 2012 Nicolas George + * + * 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 AVUTIL_BPRINT_H +#define AVUTIL_BPRINT_H + +#include + +#include "attributes.h" +#include "avstring.h" + +/** + * Define a structure with extra padding to a fixed size + * This helps ensuring binary compatibility with future versions. + */ + +#define FF_PAD_STRUCTURE(name, size, ...) \ +struct ff_pad_helper_##name { __VA_ARGS__ }; \ +typedef struct name { \ + __VA_ARGS__ \ + char reserved_padding[size - sizeof(struct ff_pad_helper_##name)]; \ +} name; + +/** + * Buffer to print data progressively + * + * The string buffer grows as necessary and is always 0-terminated. + * The content of the string is never accessed, and thus is + * encoding-agnostic and can even hold binary data. + * + * Small buffers are kept in the structure itself, and thus require no + * memory allocation at all (unless the contents of the buffer is needed + * after the structure goes out of scope). This is almost as lightweight as + * declaring a local "char buf[512]". + * + * The length of the string can go beyond the allocated size: the buffer is + * then truncated, but the functions still keep account of the actual total + * length. + * + * In other words, buf->len can be greater than buf->size and records the + * total length of what would have been to the buffer if there had been + * enough memory. + * + * Append operations do not need to be tested for failure: if a memory + * allocation fails, data stop being appended to the buffer, but the length + * is still updated. This situation can be tested with + * av_bprint_is_complete(). + * + * The size_max field determines several possible behaviours: + * + * size_max = -1 (= UINT_MAX) or any large value will let the buffer be + * reallocated as necessary, with an amortized linear cost. + * + * size_max = 0 prevents writing anything to the buffer: only the total + * length is computed. The write operations can then possibly be repeated in + * a buffer with exactly the necessary size + * (using size_init = size_max = len + 1). + * + * size_max = 1 is automatically replaced by the exact size available in the + * structure itself, thus ensuring no dynamic memory allocation. The + * internal buffer is large enough to hold a reasonable paragraph of text, + * such as the current paragraph. + */ + +FF_PAD_STRUCTURE(AVBPrint, 1024, + char *str; /**< string so far */ + unsigned len; /**< length so far */ + unsigned size; /**< allocated memory */ + unsigned size_max; /**< maximum allocated memory */ + char reserved_internal_buffer[1]; +) + +/** + * Convenience macros for special values for av_bprint_init() size_max + * parameter. + */ +#define AV_BPRINT_SIZE_UNLIMITED ((unsigned)-1) +#define AV_BPRINT_SIZE_AUTOMATIC 1 +#define AV_BPRINT_SIZE_COUNT_ONLY 0 + +/** + * Init a print buffer. + * + * @param buf buffer to init + * @param size_init initial size (including the final 0) + * @param size_max maximum size; + * 0 means do not write anything, just count the length; + * 1 is replaced by the maximum value for automatic storage; + * any large value means that the internal buffer will be + * reallocated as needed up to that limit; -1 is converted to + * UINT_MAX, the largest limit possible. + * Check also AV_BPRINT_SIZE_* macros. + */ +void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max); + +/** + * Init a print buffer using a pre-existing buffer. + * + * The buffer will not be reallocated. + * + * @param buf buffer structure to init + * @param buffer byte buffer to use for the string data + * @param size size of buffer + */ +void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size); + +/** + * Append a formatted string to a print buffer. + */ +void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_printf_format(2, 3); + +/** + * Append a formatted string to a print buffer. + */ +void av_vbprintf(AVBPrint *buf, const char *fmt, va_list vl_arg); + +/** + * Append char c n times to a print buffer. + */ +void av_bprint_chars(AVBPrint *buf, char c, unsigned n); + +/** + * Append data to a print buffer. + * + * param buf bprint buffer to use + * param data pointer to data + * param size size of data + */ +void av_bprint_append_data(AVBPrint *buf, const char *data, unsigned size); + +struct tm; +/** + * Append a formatted date and time to a print buffer. + * + * param buf bprint buffer to use + * param fmt date and time format string, see strftime() + * param tm broken-down time structure to translate + * + * @note due to poor design of the standard strftime function, it may + * produce poor results if the format string expands to a very long text and + * the bprint buffer is near the limit stated by the size_max option. + */ +void av_bprint_strftime(AVBPrint *buf, const char *fmt, const struct tm *tm); + +/** + * Allocate bytes in the buffer for external use. + * + * @param[in] buf buffer structure + * @param[in] size required size + * @param[out] mem pointer to the memory area + * @param[out] actual_size size of the memory area after allocation; + * can be larger or smaller than size + */ +void av_bprint_get_buffer(AVBPrint *buf, unsigned size, + unsigned char **mem, unsigned *actual_size); + +/** + * Reset the string to "" but keep internal allocated data. + */ +void av_bprint_clear(AVBPrint *buf); + +/** + * Test if the print buffer is complete (not truncated). + * + * It may have been truncated due to a memory allocation failure + * or the size_max limit (compare size and size_max if necessary). + */ +static inline int av_bprint_is_complete(const AVBPrint *buf) +{ + return buf->len < buf->size; +} + +/** + * Finalize a print buffer. + * + * The print buffer can no longer be used afterwards, + * but the len and size fields are still valid. + * + * @arg[out] ret_str if not NULL, used to return a permanent copy of the + * buffer contents, or NULL if memory allocation fails; + * if NULL, the buffer is discarded and freed + * @return 0 for success or error code (probably AVERROR(ENOMEM)) + */ +int av_bprint_finalize(AVBPrint *buf, char **ret_str); + +/** + * Escape the content in src and append it to dstbuf. + * + * @param dstbuf already inited destination bprint buffer + * @param src string containing the text to escape + * @param special_chars string containing the special characters which + * need to be escaped, can be NULL + * @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros. + * Any unknown value for mode will be considered equivalent to + * AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without + * notice. + * @param flags flags which control how to escape, see AV_ESCAPE_FLAG_* macros + */ +void av_bprint_escape(AVBPrint *dstbuf, const char *src, const char *special_chars, + enum AVEscapeMode mode, int flags); + +#endif /* AVUTIL_BPRINT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/bswap.h b/third_party/ffmpeg/uos/amd64/include/libavutil/bswap.h new file mode 100644 index 00000000..91cb7953 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/bswap.h @@ -0,0 +1,109 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * byte swapping routines + */ + +#ifndef AVUTIL_BSWAP_H +#define AVUTIL_BSWAP_H + +#include +#include "libavutil/avconfig.h" +#include "attributes.h" + +#ifdef HAVE_AV_CONFIG_H + +#include "config.h" + +#if ARCH_AARCH64 +# include "aarch64/bswap.h" +#elif ARCH_ARM +# include "arm/bswap.h" +#elif ARCH_AVR32 +# include "avr32/bswap.h" +#elif ARCH_SH4 +# include "sh4/bswap.h" +#elif ARCH_X86 +# include "x86/bswap.h" +#endif + +#endif /* HAVE_AV_CONFIG_H */ + +#define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff)) +#define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16)) +#define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32)) + +#define AV_BSWAPC(s, x) AV_BSWAP##s##C(x) + +#ifndef av_bswap16 +static av_always_inline av_const uint16_t av_bswap16(uint16_t x) +{ + x= (x>>8) | (x<<8); + return x; +} +#endif + +#ifndef av_bswap32 +static av_always_inline av_const uint32_t av_bswap32(uint32_t x) +{ + return AV_BSWAP32C(x); +} +#endif + +#ifndef av_bswap64 +static inline uint64_t av_const av_bswap64(uint64_t x) +{ + return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32); +} +#endif + +// be2ne ... big-endian to native-endian +// le2ne ... little-endian to native-endian + +#if AV_HAVE_BIGENDIAN +#define av_be2ne16(x) (x) +#define av_be2ne32(x) (x) +#define av_be2ne64(x) (x) +#define av_le2ne16(x) av_bswap16(x) +#define av_le2ne32(x) av_bswap32(x) +#define av_le2ne64(x) av_bswap64(x) +#define AV_BE2NEC(s, x) (x) +#define AV_LE2NEC(s, x) AV_BSWAPC(s, x) +#else +#define av_be2ne16(x) av_bswap16(x) +#define av_be2ne32(x) av_bswap32(x) +#define av_be2ne64(x) av_bswap64(x) +#define av_le2ne16(x) (x) +#define av_le2ne32(x) (x) +#define av_le2ne64(x) (x) +#define AV_BE2NEC(s, x) AV_BSWAPC(s, x) +#define AV_LE2NEC(s, x) (x) +#endif + +#define AV_BE2NE16C(x) AV_BE2NEC(16, x) +#define AV_BE2NE32C(x) AV_BE2NEC(32, x) +#define AV_BE2NE64C(x) AV_BE2NEC(64, x) +#define AV_LE2NE16C(x) AV_LE2NEC(16, x) +#define AV_LE2NE32C(x) AV_LE2NEC(32, x) +#define AV_LE2NE64C(x) AV_LE2NEC(64, x) + +#endif /* AVUTIL_BSWAP_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/buffer.h b/third_party/ffmpeg/uos/amd64/include/libavutil/buffer.h new file mode 100644 index 00000000..e1ef5b7f --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/buffer.h @@ -0,0 +1,322 @@ +/* + * 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 + */ + +/** + * @file + * @ingroup lavu_buffer + * refcounted data buffer API + */ + +#ifndef AVUTIL_BUFFER_H +#define AVUTIL_BUFFER_H + +#include +#include + +/** + * @defgroup lavu_buffer AVBuffer + * @ingroup lavu_data + * + * @{ + * AVBuffer is an API for reference-counted data buffers. + * + * There are two core objects in this API -- AVBuffer and AVBufferRef. AVBuffer + * represents the data buffer itself; it is opaque and not meant to be accessed + * by the caller directly, but only through AVBufferRef. However, the caller may + * e.g. compare two AVBuffer pointers to check whether two different references + * are describing the same data buffer. AVBufferRef represents a single + * reference to an AVBuffer and it is the object that may be manipulated by the + * caller directly. + * + * There are two functions provided for creating a new AVBuffer with a single + * reference -- av_buffer_alloc() to just allocate a new buffer, and + * av_buffer_create() to wrap an existing array in an AVBuffer. From an existing + * reference, additional references may be created with av_buffer_ref(). + * Use av_buffer_unref() to free a reference (this will automatically free the + * data once all the references are freed). + * + * The convention throughout this API and the rest of FFmpeg is such that the + * buffer is considered writable if there exists only one reference to it (and + * it has not been marked as read-only). The av_buffer_is_writable() function is + * provided to check whether this is true and av_buffer_make_writable() will + * automatically create a new writable buffer when necessary. + * Of course nothing prevents the calling code from violating this convention, + * however that is safe only when all the existing references are under its + * control. + * + * @note Referencing and unreferencing the buffers is thread-safe and thus + * may be done from multiple threads simultaneously without any need for + * additional locking. + * + * @note Two different references to the same buffer can point to different + * parts of the buffer (i.e. their AVBufferRef.data will not be equal). + */ + +/** + * A reference counted buffer type. It is opaque and is meant to be used through + * references (AVBufferRef). + */ +typedef struct AVBuffer AVBuffer; + +/** + * A reference to a data buffer. + * + * The size of this struct is not a part of the public ABI and it is not meant + * to be allocated directly. + */ +typedef struct AVBufferRef { + AVBuffer *buffer; + + /** + * The data buffer. It is considered writable if and only if + * this is the only reference to the buffer, in which case + * av_buffer_is_writable() returns 1. + */ + uint8_t *data; + /** + * Size of data in bytes. + */ + size_t size; +} AVBufferRef; + +/** + * Allocate an AVBuffer of the given size using av_malloc(). + * + * @return an AVBufferRef of given size or NULL when out of memory + */ +AVBufferRef *av_buffer_alloc(size_t size); + +/** + * Same as av_buffer_alloc(), except the returned buffer will be initialized + * to zero. + */ +AVBufferRef *av_buffer_allocz(size_t size); + +/** + * Always treat the buffer as read-only, even when it has only one + * reference. + */ +#define AV_BUFFER_FLAG_READONLY (1 << 0) + +/** + * Create an AVBuffer from an existing array. + * + * If this function is successful, data is owned by the AVBuffer. The caller may + * only access data through the returned AVBufferRef and references derived from + * it. + * If this function fails, data is left untouched. + * @param data data array + * @param size size of data in bytes + * @param free a callback for freeing this buffer's data + * @param opaque parameter to be got for processing or passed to free + * @param flags a combination of AV_BUFFER_FLAG_* + * + * @return an AVBufferRef referring to data on success, NULL on failure. + */ +AVBufferRef *av_buffer_create(uint8_t *data, size_t size, + void (*free)(void *opaque, uint8_t *data), + void *opaque, int flags); + +/** + * Default free callback, which calls av_free() on the buffer data. + * This function is meant to be passed to av_buffer_create(), not called + * directly. + */ +void av_buffer_default_free(void *opaque, uint8_t *data); + +/** + * Create a new reference to an AVBuffer. + * + * @return a new AVBufferRef referring to the same AVBuffer as buf or NULL on + * failure. + */ +AVBufferRef *av_buffer_ref(const AVBufferRef *buf); + +/** + * Free a given reference and automatically free the buffer if there are no more + * references to it. + * + * @param buf the reference to be freed. The pointer is set to NULL on return. + */ +void av_buffer_unref(AVBufferRef **buf); + +/** + * @return 1 if the caller may write to the data referred to by buf (which is + * true if and only if buf is the only reference to the underlying AVBuffer). + * Return 0 otherwise. + * A positive answer is valid until av_buffer_ref() is called on buf. + */ +int av_buffer_is_writable(const AVBufferRef *buf); + +/** + * @return the opaque parameter set by av_buffer_create. + */ +void *av_buffer_get_opaque(const AVBufferRef *buf); + +int av_buffer_get_ref_count(const AVBufferRef *buf); + +/** + * Create a writable reference from a given buffer reference, avoiding data copy + * if possible. + * + * @param buf buffer reference to make writable. On success, buf is either left + * untouched, or it is unreferenced and a new writable AVBufferRef is + * written in its place. On failure, buf is left untouched. + * @return 0 on success, a negative AVERROR on failure. + */ +int av_buffer_make_writable(AVBufferRef **buf); + +/** + * Reallocate a given buffer. + * + * @param buf a buffer reference to reallocate. On success, buf will be + * unreferenced and a new reference with the required size will be + * written in its place. On failure buf will be left untouched. *buf + * may be NULL, then a new buffer is allocated. + * @param size required new buffer size. + * @return 0 on success, a negative AVERROR on failure. + * + * @note the buffer is actually reallocated with av_realloc() only if it was + * initially allocated through av_buffer_realloc(NULL) and there is only one + * reference to it (i.e. the one passed to this function). In all other cases + * a new buffer is allocated and the data is copied. + */ +int av_buffer_realloc(AVBufferRef **buf, size_t size); + +/** + * Ensure dst refers to the same data as src. + * + * When *dst is already equivalent to src, do nothing. Otherwise unreference dst + * and replace it with a new reference to src. + * + * @param dst Pointer to either a valid buffer reference or NULL. On success, + * this will point to a buffer reference equivalent to src. On + * failure, dst will be left untouched. + * @param src A buffer reference to replace dst with. May be NULL, then this + * function is equivalent to av_buffer_unref(dst). + * @return 0 on success + * AVERROR(ENOMEM) on memory allocation failure. + */ +int av_buffer_replace(AVBufferRef **dst, const AVBufferRef *src); + +/** + * @} + */ + +/** + * @defgroup lavu_bufferpool AVBufferPool + * @ingroup lavu_data + * + * @{ + * AVBufferPool is an API for a lock-free thread-safe pool of AVBuffers. + * + * Frequently allocating and freeing large buffers may be slow. AVBufferPool is + * meant to solve this in cases when the caller needs a set of buffers of the + * same size (the most obvious use case being buffers for raw video or audio + * frames). + * + * At the beginning, the user must call av_buffer_pool_init() to create the + * buffer pool. Then whenever a buffer is needed, call av_buffer_pool_get() to + * get a reference to a new buffer, similar to av_buffer_alloc(). This new + * reference works in all aspects the same way as the one created by + * av_buffer_alloc(). However, when the last reference to this buffer is + * unreferenced, it is returned to the pool instead of being freed and will be + * reused for subsequent av_buffer_pool_get() calls. + * + * When the caller is done with the pool and no longer needs to allocate any new + * buffers, av_buffer_pool_uninit() must be called to mark the pool as freeable. + * Once all the buffers are released, it will automatically be freed. + * + * Allocating and releasing buffers with this API is thread-safe as long as + * either the default alloc callback is used, or the user-supplied one is + * thread-safe. + */ + +/** + * The buffer pool. This structure is opaque and not meant to be accessed + * directly. It is allocated with av_buffer_pool_init() and freed with + * av_buffer_pool_uninit(). + */ +typedef struct AVBufferPool AVBufferPool; + +/** + * Allocate and initialize a buffer pool. + * + * @param size size of each buffer in this pool + * @param alloc a function that will be used to allocate new buffers when the + * pool is empty. May be NULL, then the default allocator will be used + * (av_buffer_alloc()). + * @return newly created buffer pool on success, NULL on error. + */ +AVBufferPool *av_buffer_pool_init(size_t size, AVBufferRef* (*alloc)(size_t size)); + +/** + * Allocate and initialize a buffer pool with a more complex allocator. + * + * @param size size of each buffer in this pool + * @param opaque arbitrary user data used by the allocator + * @param alloc a function that will be used to allocate new buffers when the + * pool is empty. May be NULL, then the default allocator will be + * used (av_buffer_alloc()). + * @param pool_free a function that will be called immediately before the pool + * is freed. I.e. after av_buffer_pool_uninit() is called + * by the caller and all the frames are returned to the pool + * and freed. It is intended to uninitialize the user opaque + * data. May be NULL. + * @return newly created buffer pool on success, NULL on error. + */ +AVBufferPool *av_buffer_pool_init2(size_t size, void *opaque, + AVBufferRef* (*alloc)(void *opaque, size_t size), + void (*pool_free)(void *opaque)); + +/** + * Mark the pool as being available for freeing. It will actually be freed only + * once all the allocated buffers associated with the pool are released. Thus it + * is safe to call this function while some of the allocated buffers are still + * in use. + * + * @param pool pointer to the pool to be freed. It will be set to NULL. + */ +void av_buffer_pool_uninit(AVBufferPool **pool); + +/** + * Allocate a new AVBuffer, reusing an old buffer from the pool when available. + * This function may be called simultaneously from multiple threads. + * + * @return a reference to the new buffer on success, NULL on error. + */ +AVBufferRef *av_buffer_pool_get(AVBufferPool *pool); + +/** + * Query the original opaque parameter of an allocated buffer in the pool. + * + * @param ref a buffer reference to a buffer returned by av_buffer_pool_get. + * @return the opaque parameter set by the buffer allocator function of the + * buffer pool. + * + * @note the opaque parameter of ref is used by the buffer pool implementation, + * therefore you have to use this function to access the original opaque + * parameter of an allocated buffer. + */ +void *av_buffer_pool_buffer_get_opaque(const AVBufferRef *ref); + +/** + * @} + */ + +#endif /* AVUTIL_BUFFER_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/camellia.h b/third_party/ffmpeg/uos/amd64/include/libavutil/camellia.h new file mode 100644 index 00000000..e674c9b9 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/camellia.h @@ -0,0 +1,70 @@ +/* + * An implementation of the CAMELLIA algorithm as mentioned in RFC3713 + * Copyright (c) 2014 Supraja Meedinti + * + * 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 AVUTIL_CAMELLIA_H +#define AVUTIL_CAMELLIA_H + +#include + + +/** + * @file + * @brief Public header for libavutil CAMELLIA algorithm + * @defgroup lavu_camellia CAMELLIA + * @ingroup lavu_crypto + * @{ + */ + +extern const int av_camellia_size; + +struct AVCAMELLIA; + +/** + * Allocate an AVCAMELLIA context + * To free the struct: av_free(ptr) + */ +struct AVCAMELLIA *av_camellia_alloc(void); + +/** + * Initialize an AVCAMELLIA context. + * + * @param ctx an AVCAMELLIA context + * @param key a key of 16, 24, 32 bytes used for encryption/decryption + * @param key_bits number of keybits: possible are 128, 192, 256 + */ +int av_camellia_init(struct AVCAMELLIA *ctx, const uint8_t *key, int key_bits); + +/** + * Encrypt or decrypt a buffer using a previously initialized context + * + * @param ctx an AVCAMELLIA context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 16 byte blocks + * @paran iv initialization vector for CBC mode, NULL for ECB mode + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_camellia_crypt(struct AVCAMELLIA *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t* iv, int decrypt); + +/** + * @} + */ +#endif /* AVUTIL_CAMELLIA_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/cast5.h b/third_party/ffmpeg/uos/amd64/include/libavutil/cast5.h new file mode 100644 index 00000000..ad5b347e --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/cast5.h @@ -0,0 +1,80 @@ +/* + * An implementation of the CAST128 algorithm as mentioned in RFC2144 + * Copyright (c) 2014 Supraja Meedinti + * + * 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 AVUTIL_CAST5_H +#define AVUTIL_CAST5_H + +#include + + +/** + * @file + * @brief Public header for libavutil CAST5 algorithm + * @defgroup lavu_cast5 CAST5 + * @ingroup lavu_crypto + * @{ + */ + +extern const int av_cast5_size; + +struct AVCAST5; + +/** + * Allocate an AVCAST5 context + * To free the struct: av_free(ptr) + */ +struct AVCAST5 *av_cast5_alloc(void); +/** + * Initialize an AVCAST5 context. + * + * @param ctx an AVCAST5 context + * @param key a key of 5,6,...16 bytes used for encryption/decryption + * @param key_bits number of keybits: possible are 40,48,...,128 + * @return 0 on success, less than 0 on failure + */ +int av_cast5_init(struct AVCAST5 *ctx, const uint8_t *key, int key_bits); + +/** + * Encrypt or decrypt a buffer using a previously initialized context, ECB mode only + * + * @param ctx an AVCAST5 context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 8 byte blocks + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_cast5_crypt(struct AVCAST5 *ctx, uint8_t *dst, const uint8_t *src, int count, int decrypt); + +/** + * Encrypt or decrypt a buffer using a previously initialized context + * + * @param ctx an AVCAST5 context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 8 byte blocks + * @param iv initialization vector for CBC mode, NULL for ECB mode + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_cast5_crypt2(struct AVCAST5 *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); +/** + * @} + */ +#endif /* AVUTIL_CAST5_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/channel_layout.h b/third_party/ffmpeg/uos/amd64/include/libavutil/channel_layout.h new file mode 100644 index 00000000..4dd6614d --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/channel_layout.h @@ -0,0 +1,749 @@ +/* + * Copyright (c) 2006 Michael Niedermayer + * Copyright (c) 2008 Peter Ross + * + * 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 AVUTIL_CHANNEL_LAYOUT_H +#define AVUTIL_CHANNEL_LAYOUT_H + +#include +#include + +#include "version.h" +#include "attributes.h" + +/** + * @file + * audio channel layout utility functions + */ + +/** + * @addtogroup lavu_audio + * @{ + */ + +enum AVChannel { + ///< Invalid channel index + AV_CHAN_NONE = -1, + AV_CHAN_FRONT_LEFT, + AV_CHAN_FRONT_RIGHT, + AV_CHAN_FRONT_CENTER, + AV_CHAN_LOW_FREQUENCY, + AV_CHAN_BACK_LEFT, + AV_CHAN_BACK_RIGHT, + AV_CHAN_FRONT_LEFT_OF_CENTER, + AV_CHAN_FRONT_RIGHT_OF_CENTER, + AV_CHAN_BACK_CENTER, + AV_CHAN_SIDE_LEFT, + AV_CHAN_SIDE_RIGHT, + AV_CHAN_TOP_CENTER, + AV_CHAN_TOP_FRONT_LEFT, + AV_CHAN_TOP_FRONT_CENTER, + AV_CHAN_TOP_FRONT_RIGHT, + AV_CHAN_TOP_BACK_LEFT, + AV_CHAN_TOP_BACK_CENTER, + AV_CHAN_TOP_BACK_RIGHT, + /** Stereo downmix. */ + AV_CHAN_STEREO_LEFT = 29, + /** See above. */ + AV_CHAN_STEREO_RIGHT, + AV_CHAN_WIDE_LEFT, + AV_CHAN_WIDE_RIGHT, + AV_CHAN_SURROUND_DIRECT_LEFT, + AV_CHAN_SURROUND_DIRECT_RIGHT, + AV_CHAN_LOW_FREQUENCY_2, + AV_CHAN_TOP_SIDE_LEFT, + AV_CHAN_TOP_SIDE_RIGHT, + AV_CHAN_BOTTOM_FRONT_CENTER, + AV_CHAN_BOTTOM_FRONT_LEFT, + AV_CHAN_BOTTOM_FRONT_RIGHT, + + /** Channel is empty can be safely skipped. */ + AV_CHAN_UNUSED = 0x200, + + /** Channel contains data, but its position is unknown. */ + AV_CHAN_UNKNOWN = 0x300, + + /** + * Range of channels between AV_CHAN_AMBISONIC_BASE and + * AV_CHAN_AMBISONIC_END represent Ambisonic components using the ACN system. + * + * Given a channel id between AV_CHAN_AMBISONIC_BASE and + * AV_CHAN_AMBISONIC_END (inclusive), the ACN index of the channel is + * = - AV_CHAN_AMBISONIC_BASE. + * + * @note these values are only used for AV_CHANNEL_ORDER_CUSTOM channel + * orderings, the AV_CHANNEL_ORDER_AMBISONIC ordering orders the channels + * implicitly by their position in the stream. + */ + AV_CHAN_AMBISONIC_BASE = 0x400, + // leave space for 1024 ids, which correspond to maximum order-32 harmonics, + // which should be enough for the foreseeable use cases + AV_CHAN_AMBISONIC_END = 0x7ff, +}; + +enum AVChannelOrder { + /** + * Only the channel count is specified, without any further information + * about the channel order. + */ + AV_CHANNEL_ORDER_UNSPEC, + /** + * The native channel order, i.e. the channels are in the same order in + * which they are defined in the AVChannel enum. This supports up to 63 + * different channels. + */ + AV_CHANNEL_ORDER_NATIVE, + /** + * The channel order does not correspond to any other predefined order and + * is stored as an explicit map. For example, this could be used to support + * layouts with 64 or more channels, or with empty/skipped (AV_CHAN_SILENCE) + * channels at arbitrary positions. + */ + AV_CHANNEL_ORDER_CUSTOM, + /** + * The audio is represented as the decomposition of the sound field into + * spherical harmonics. Each channel corresponds to a single expansion + * component. Channels are ordered according to ACN (Ambisonic Channel + * Number). + * + * The channel with the index n in the stream contains the spherical + * harmonic of degree l and order m given by + * @code{.unparsed} + * l = floor(sqrt(n)), + * m = n - l * (l + 1). + * @endcode + * + * Conversely given a spherical harmonic of degree l and order m, the + * corresponding channel index n is given by + * @code{.unparsed} + * n = l * (l + 1) + m. + * @endcode + * + * Normalization is assumed to be SN3D (Schmidt Semi-Normalization) + * as defined in AmbiX format $ 2.1. + */ + AV_CHANNEL_ORDER_AMBISONIC, +}; + + +/** + * @defgroup channel_masks Audio channel masks + * + * A channel layout is a 64-bits integer with a bit set for every channel. + * The number of bits set must be equal to the number of channels. + * The value 0 means that the channel layout is not known. + * @note this data structure is not powerful enough to handle channels + * combinations that have the same channel multiple times, such as + * dual-mono. + * + * @{ + */ +#define AV_CH_FRONT_LEFT (1ULL << AV_CHAN_FRONT_LEFT ) +#define AV_CH_FRONT_RIGHT (1ULL << AV_CHAN_FRONT_RIGHT ) +#define AV_CH_FRONT_CENTER (1ULL << AV_CHAN_FRONT_CENTER ) +#define AV_CH_LOW_FREQUENCY (1ULL << AV_CHAN_LOW_FREQUENCY ) +#define AV_CH_BACK_LEFT (1ULL << AV_CHAN_BACK_LEFT ) +#define AV_CH_BACK_RIGHT (1ULL << AV_CHAN_BACK_RIGHT ) +#define AV_CH_FRONT_LEFT_OF_CENTER (1ULL << AV_CHAN_FRONT_LEFT_OF_CENTER ) +#define AV_CH_FRONT_RIGHT_OF_CENTER (1ULL << AV_CHAN_FRONT_RIGHT_OF_CENTER) +#define AV_CH_BACK_CENTER (1ULL << AV_CHAN_BACK_CENTER ) +#define AV_CH_SIDE_LEFT (1ULL << AV_CHAN_SIDE_LEFT ) +#define AV_CH_SIDE_RIGHT (1ULL << AV_CHAN_SIDE_RIGHT ) +#define AV_CH_TOP_CENTER (1ULL << AV_CHAN_TOP_CENTER ) +#define AV_CH_TOP_FRONT_LEFT (1ULL << AV_CHAN_TOP_FRONT_LEFT ) +#define AV_CH_TOP_FRONT_CENTER (1ULL << AV_CHAN_TOP_FRONT_CENTER ) +#define AV_CH_TOP_FRONT_RIGHT (1ULL << AV_CHAN_TOP_FRONT_RIGHT ) +#define AV_CH_TOP_BACK_LEFT (1ULL << AV_CHAN_TOP_BACK_LEFT ) +#define AV_CH_TOP_BACK_CENTER (1ULL << AV_CHAN_TOP_BACK_CENTER ) +#define AV_CH_TOP_BACK_RIGHT (1ULL << AV_CHAN_TOP_BACK_RIGHT ) +#define AV_CH_STEREO_LEFT (1ULL << AV_CHAN_STEREO_LEFT ) +#define AV_CH_STEREO_RIGHT (1ULL << AV_CHAN_STEREO_RIGHT ) +#define AV_CH_WIDE_LEFT (1ULL << AV_CHAN_WIDE_LEFT ) +#define AV_CH_WIDE_RIGHT (1ULL << AV_CHAN_WIDE_RIGHT ) +#define AV_CH_SURROUND_DIRECT_LEFT (1ULL << AV_CHAN_SURROUND_DIRECT_LEFT ) +#define AV_CH_SURROUND_DIRECT_RIGHT (1ULL << AV_CHAN_SURROUND_DIRECT_RIGHT) +#define AV_CH_LOW_FREQUENCY_2 (1ULL << AV_CHAN_LOW_FREQUENCY_2 ) +#define AV_CH_TOP_SIDE_LEFT (1ULL << AV_CHAN_TOP_SIDE_LEFT ) +#define AV_CH_TOP_SIDE_RIGHT (1ULL << AV_CHAN_TOP_SIDE_RIGHT ) +#define AV_CH_BOTTOM_FRONT_CENTER (1ULL << AV_CHAN_BOTTOM_FRONT_CENTER ) +#define AV_CH_BOTTOM_FRONT_LEFT (1ULL << AV_CHAN_BOTTOM_FRONT_LEFT ) +#define AV_CH_BOTTOM_FRONT_RIGHT (1ULL << AV_CHAN_BOTTOM_FRONT_RIGHT ) + +#if FF_API_OLD_CHANNEL_LAYOUT +/** Channel mask value used for AVCodecContext.request_channel_layout + to indicate that the user requests the channel order of the decoder output + to be the native codec channel order. + @deprecated channel order is now indicated in a special field in + AVChannelLayout + */ +#define AV_CH_LAYOUT_NATIVE 0x8000000000000000ULL +#endif + +/** + * @} + * @defgroup channel_mask_c Audio channel layouts + * @{ + * */ +#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER) +#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT) +#define AV_CH_LAYOUT_2POINT1 (AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER) +#define AV_CH_LAYOUT_3POINT1 (AV_CH_LAYOUT_SURROUND|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_4POINT1 (AV_CH_LAYOUT_4POINT0|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) +#define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT) +#define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_6POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_6POINT0_FRONT (AV_CH_LAYOUT_2_2|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) +#define AV_CH_LAYOUT_HEXAGONAL (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_6POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_6POINT1_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER) +#define AV_CH_LAYOUT_6POINT1_FRONT (AV_CH_LAYOUT_6POINT0_FRONT|AV_CH_LOW_FREQUENCY) +#define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_7POINT0_FRONT (AV_CH_LAYOUT_5POINT0|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) +#define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) +#define AV_CH_LAYOUT_7POINT1_WIDE_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER) +#define AV_CH_LAYOUT_OCTAGONAL (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_CENTER|AV_CH_BACK_RIGHT) +#define AV_CH_LAYOUT_HEXADECAGONAL (AV_CH_LAYOUT_OCTAGONAL|AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT|AV_CH_TOP_BACK_CENTER|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT) +#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT) +#define AV_CH_LAYOUT_22POINT2 (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER|AV_CH_BACK_CENTER|AV_CH_LOW_FREQUENCY_2|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_CENTER|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT|AV_CH_TOP_SIDE_LEFT|AV_CH_TOP_SIDE_RIGHT|AV_CH_TOP_BACK_CENTER|AV_CH_BOTTOM_FRONT_CENTER|AV_CH_BOTTOM_FRONT_LEFT|AV_CH_BOTTOM_FRONT_RIGHT) + +enum AVMatrixEncoding { + AV_MATRIX_ENCODING_NONE, + AV_MATRIX_ENCODING_DOLBY, + AV_MATRIX_ENCODING_DPLII, + AV_MATRIX_ENCODING_DPLIIX, + AV_MATRIX_ENCODING_DPLIIZ, + AV_MATRIX_ENCODING_DOLBYEX, + AV_MATRIX_ENCODING_DOLBYHEADPHONE, + AV_MATRIX_ENCODING_NB +}; + +/** + * @} + */ + +/** + * An AVChannelCustom defines a single channel within a custom order layout + * + * Unlike most structures in FFmpeg, sizeof(AVChannelCustom) is a part of the + * public ABI. + * + * No new fields may be added to it without a major version bump. + */ +typedef struct AVChannelCustom { + enum AVChannel id; + char name[16]; + void *opaque; +} AVChannelCustom; + +/** + * An AVChannelLayout holds information about the channel layout of audio data. + * + * A channel layout here is defined as a set of channels ordered in a specific + * way (unless the channel order is AV_CHANNEL_ORDER_UNSPEC, in which case an + * AVChannelLayout carries only the channel count). + * + * Unlike most structures in Libav, sizeof(AVChannelLayout) is a part of the + * public ABI and may be used by the caller. E.g. it may be allocated on stack + * or embedded in caller-defined structs. + * + * AVChannelLayout can be initialized as follows: + * - default initialization with {0}, followed by setting all used fields + * correctly; + * - by assigning one of the predefined AV_CHANNEL_LAYOUT_* initializers; + * - with a constructor function, such as av_channel_layout_default(), + * av_channel_layout_from_mask() or av_channel_layout_from_string(). + * + * The channel layout must be unitialized with av_channel_layout_uninit() + * + * Copying an AVChannelLayout via assigning is forbidden, + * av_channel_layout_copy() must be used instead (and its return value should + * be checked) + * + * No new fields may be added to it without a major version bump, except for + * new elements of the union fitting in sizeof(uint64_t). + */ +typedef struct AVChannelLayout { + /** + * Channel order used in this layout. + * This is a mandatory field. + */ + enum AVChannelOrder order; + + /** + * Number of channels in this layout. Mandatory field. + */ + int nb_channels; + + /** + * Details about which channels are present in this layout. + * For AV_CHANNEL_ORDER_UNSPEC, this field is undefined and must not be + * used. + */ + union { + /** + * This member must be used for AV_CHANNEL_ORDER_NATIVE, and may be used + * for AV_CHANNEL_ORDER_AMBISONIC to signal non-diegetic channels. + * It is a bitmask, where the position of each set bit means that the + * AVChannel with the corresponding value is present. + * + * I.e. when (mask & (1 << AV_CHAN_FOO)) is non-zero, then AV_CHAN_FOO + * is present in the layout. Otherwise it is not present. + * + * @note when a channel layout using a bitmask is constructed or + * modified manually (i.e. not using any of the av_channel_layout_* + * functions), the code doing it must ensure that the number of set bits + * is equal to nb_channels. + */ + uint64_t mask; + /** + * This member must be used when the channel order is + * AV_CHANNEL_ORDER_CUSTOM. It is a nb_channels-sized array, with each + * element signalling the presence of the AVChannel with the + * corresponding value in map[i].id. + * + * I.e. when map[i].id is equal to AV_CHAN_FOO, then AV_CH_FOO is the + * i-th channel in the audio data. + * + * When map[i].id is in the range between AV_CHAN_AMBISONIC_BASE and + * AV_CHAN_AMBISONIC_END (inclusive), the channel contains an ambisonic + * component with ACN index (as defined above) + * n = map[i].id - AV_CHAN_AMBISONIC_BASE. + * + * map[i].name may be filled with a 0-terminated string, in which case + * it will be used for the purpose of identifying the channel with the + * convenience functions below. Otherise it must be zeroed. + */ + AVChannelCustom *map; + } u; + + /** + * For some private data of the user. + */ + void *opaque; +} AVChannelLayout; + +#define AV_CHANNEL_LAYOUT_MASK(nb, m) \ + { .order = AV_CHANNEL_ORDER_NATIVE, .nb_channels = (nb), .u = { .mask = (m) }} + +#define AV_CHANNEL_LAYOUT_MONO AV_CHANNEL_LAYOUT_MASK(1, AV_CH_LAYOUT_MONO) +#define AV_CHANNEL_LAYOUT_STEREO AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO) +#define AV_CHANNEL_LAYOUT_2POINT1 AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2POINT1) +#define AV_CHANNEL_LAYOUT_2_1 AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2_1) +#define AV_CHANNEL_LAYOUT_SURROUND AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_SURROUND) +#define AV_CHANNEL_LAYOUT_3POINT1 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_3POINT1) +#define AV_CHANNEL_LAYOUT_4POINT0 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_4POINT0) +#define AV_CHANNEL_LAYOUT_4POINT1 AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_4POINT1) +#define AV_CHANNEL_LAYOUT_2_2 AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_2_2) +#define AV_CHANNEL_LAYOUT_QUAD AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_QUAD) +#define AV_CHANNEL_LAYOUT_5POINT0 AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0) +#define AV_CHANNEL_LAYOUT_5POINT1 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1) +#define AV_CHANNEL_LAYOUT_5POINT0_BACK AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0_BACK) +#define AV_CHANNEL_LAYOUT_5POINT1_BACK AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1_BACK) +#define AV_CHANNEL_LAYOUT_6POINT0 AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0) +#define AV_CHANNEL_LAYOUT_6POINT0_FRONT AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0_FRONT) +#define AV_CHANNEL_LAYOUT_HEXAGONAL AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_HEXAGONAL) +#define AV_CHANNEL_LAYOUT_6POINT1 AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1) +#define AV_CHANNEL_LAYOUT_6POINT1_BACK AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_BACK) +#define AV_CHANNEL_LAYOUT_6POINT1_FRONT AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_FRONT) +#define AV_CHANNEL_LAYOUT_7POINT0 AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0) +#define AV_CHANNEL_LAYOUT_7POINT0_FRONT AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0_FRONT) +#define AV_CHANNEL_LAYOUT_7POINT1 AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1) +#define AV_CHANNEL_LAYOUT_7POINT1_WIDE AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE) +#define AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE_BACK) +#define AV_CHANNEL_LAYOUT_OCTAGONAL AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_OCTAGONAL) +#define AV_CHANNEL_LAYOUT_HEXADECAGONAL AV_CHANNEL_LAYOUT_MASK(16, AV_CH_LAYOUT_HEXADECAGONAL) +#define AV_CHANNEL_LAYOUT_STEREO_DOWNMIX AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO_DOWNMIX) +#define AV_CHANNEL_LAYOUT_22POINT2 AV_CHANNEL_LAYOUT_MASK(24, AV_CH_LAYOUT_22POINT2) +#define AV_CHANNEL_LAYOUT_AMBISONIC_FIRST_ORDER \ + { .order = AV_CHANNEL_ORDER_AMBISONIC, .nb_channels = 4, .u = { .mask = 0 }} + +struct AVBPrint; + +#if FF_API_OLD_CHANNEL_LAYOUT +/** + * Return a channel layout id that matches name, or 0 if no match is found. + * + * name can be one or several of the following notations, + * separated by '+' or '|': + * - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0, + * 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix); + * - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC, + * SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR); + * - a number of channels, in decimal, followed by 'c', yielding + * the default channel layout for that number of channels (@see + * av_get_default_channel_layout); + * - a channel layout mask, in hexadecimal starting with "0x" (see the + * AV_CH_* macros). + * + * Example: "stereo+FC" = "2c+FC" = "2c+1c" = "0x7" + * + * @deprecated use av_channel_layout_from_string() + */ +attribute_deprecated +uint64_t av_get_channel_layout(const char *name); + +/** + * Return a channel layout and the number of channels based on the specified name. + * + * This function is similar to (@see av_get_channel_layout), but can also parse + * unknown channel layout specifications. + * + * @param[in] name channel layout specification string + * @param[out] channel_layout parsed channel layout (0 if unknown) + * @param[out] nb_channels number of channels + * + * @return 0 on success, AVERROR(EINVAL) if the parsing fails. + * @deprecated use av_channel_layout_from_string() + */ +attribute_deprecated +int av_get_extended_channel_layout(const char *name, uint64_t* channel_layout, int* nb_channels); + +/** + * Return a description of a channel layout. + * If nb_channels is <= 0, it is guessed from the channel_layout. + * + * @param buf put here the string containing the channel layout + * @param buf_size size in bytes of the buffer + * @deprecated use av_channel_layout_describe() + */ +attribute_deprecated +void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout); + +/** + * Append a description of a channel layout to a bprint buffer. + * @deprecated use av_channel_layout_describe() + */ +attribute_deprecated +void av_bprint_channel_layout(struct AVBPrint *bp, int nb_channels, uint64_t channel_layout); + +/** + * Return the number of channels in the channel layout. + * @deprecated use AVChannelLayout.nb_channels + */ +attribute_deprecated +int av_get_channel_layout_nb_channels(uint64_t channel_layout); + +/** + * Return default channel layout for a given number of channels. + * + * @deprecated use av_channel_layout_default() + */ +attribute_deprecated +int64_t av_get_default_channel_layout(int nb_channels); + +/** + * Get the index of a channel in channel_layout. + * + * @param channel a channel layout describing exactly one channel which must be + * present in channel_layout. + * + * @return index of channel in channel_layout on success, a negative AVERROR + * on error. + * + * @deprecated use av_channel_layout_index_from_channel() + */ +attribute_deprecated +int av_get_channel_layout_channel_index(uint64_t channel_layout, + uint64_t channel); + +/** + * Get the channel with the given index in channel_layout. + * @deprecated use av_channel_layout_channel_from_index() + */ +attribute_deprecated +uint64_t av_channel_layout_extract_channel(uint64_t channel_layout, int index); + +/** + * Get the name of a given channel. + * + * @return channel name on success, NULL on error. + * + * @deprecated use av_channel_name() + */ +attribute_deprecated +const char *av_get_channel_name(uint64_t channel); + +/** + * Get the description of a given channel. + * + * @param channel a channel layout with a single channel + * @return channel description on success, NULL on error + * @deprecated use av_channel_description() + */ +attribute_deprecated +const char *av_get_channel_description(uint64_t channel); + +/** + * Get the value and name of a standard channel layout. + * + * @param[in] index index in an internal list, starting at 0 + * @param[out] layout channel layout mask + * @param[out] name name of the layout + * @return 0 if the layout exists, + * <0 if index is beyond the limits + * @deprecated use av_channel_layout_standard() + */ +attribute_deprecated +int av_get_standard_channel_layout(unsigned index, uint64_t *layout, + const char **name); +#endif + +/** + * Get a human readable string in an abbreviated form describing a given channel. + * This is the inverse function of @ref av_channel_from_string(). + * + * @param buf pre-allocated buffer where to put the generated string + * @param buf_size size in bytes of the buffer. + * @return amount of bytes needed to hold the output string, or a negative AVERROR + * on failure. If the returned value is bigger than buf_size, then the + * string was truncated. + */ +int av_channel_name(char *buf, size_t buf_size, enum AVChannel channel); + +/** + * bprint variant of av_channel_name(). + * + * @note the string will be appended to the bprint buffer. + */ +void av_channel_name_bprint(struct AVBPrint *bp, enum AVChannel channel_id); + +/** + * Get a human readable string describing a given channel. + * + * @param buf pre-allocated buffer where to put the generated string + * @param buf_size size in bytes of the buffer. + * @return amount of bytes needed to hold the output string, or a negative AVERROR + * on failure. If the returned value is bigger than buf_size, then the + * string was truncated. + */ +int av_channel_description(char *buf, size_t buf_size, enum AVChannel channel); + +/** + * bprint variant of av_channel_description(). + * + * @note the string will be appended to the bprint buffer. + */ +void av_channel_description_bprint(struct AVBPrint *bp, enum AVChannel channel_id); + +/** + * This is the inverse function of @ref av_channel_name(). + * + * @return the channel with the given name + * AV_CHAN_NONE when name does not identify a known channel + */ +enum AVChannel av_channel_from_string(const char *name); + +/** + * Initialize a native channel layout from a bitmask indicating which channels + * are present. + * + * @param channel_layout the layout structure to be initialized + * @param mask bitmask describing the channel layout + * + * @return 0 on success + * AVERROR(EINVAL) for invalid mask values + */ +int av_channel_layout_from_mask(AVChannelLayout *channel_layout, uint64_t mask); + +/** + * Initialize a channel layout from a given string description. + * The input string can be represented by: + * - the formal channel layout name (returned by av_channel_layout_describe()) + * - single or multiple channel names (returned by av_channel_name(), eg. "FL", + * or concatenated with "+", each optionally containing a custom name after + * a "@", eg. "FL@Left+FR@Right+LFE") + * - a decimal or hexadecimal value of a native channel layout (eg. "4" or "0x4") + * - the number of channels with default layout (eg. "4c") + * - the number of unordered channels (eg. "4C" or "4 channels") + * - the ambisonic order followed by optional non-diegetic channels (eg. + * "ambisonic 2+stereo") + * + * @param channel_layout input channel layout + * @param str string describing the channel layout + * @return 0 channel layout was detected, AVERROR_INVALIDATATA otherwise + */ +int av_channel_layout_from_string(AVChannelLayout *channel_layout, + const char *str); + +/** + * Get the default channel layout for a given number of channels. + * + * @param channel_layout the layout structure to be initialized + * @param nb_channels number of channels + */ +void av_channel_layout_default(AVChannelLayout *ch_layout, int nb_channels); + +/** + * Iterate over all standard channel layouts. + * + * @param opaque a pointer where libavutil will store the iteration state. Must + * point to NULL to start the iteration. + * + * @return the standard channel layout or NULL when the iteration is + * finished + */ +const AVChannelLayout *av_channel_layout_standard(void **opaque); + +/** + * Free any allocated data in the channel layout and reset the channel + * count to 0. + * + * @param channel_layout the layout structure to be uninitialized + */ +void av_channel_layout_uninit(AVChannelLayout *channel_layout); + +/** + * Make a copy of a channel layout. This differs from just assigning src to dst + * in that it allocates and copies the map for AV_CHANNEL_ORDER_CUSTOM. + * + * @note the destination channel_layout will be always uninitialized before copy. + * + * @param dst destination channel layout + * @param src source channel layout + * @return 0 on success, a negative AVERROR on error. + */ +int av_channel_layout_copy(AVChannelLayout *dst, const AVChannelLayout *src); + +/** + * Get a human-readable string describing the channel layout properties. + * The string will be in the same format that is accepted by + * @ref av_channel_layout_from_string(), allowing to rebuild the same + * channel layout, except for opaque pointers. + * + * @param channel_layout channel layout to be described + * @param buf pre-allocated buffer where to put the generated string + * @param buf_size size in bytes of the buffer. + * @return amount of bytes needed to hold the output string, or a negative AVERROR + * on failure. If the returned value is bigger than buf_size, then the + * string was truncated. + */ +int av_channel_layout_describe(const AVChannelLayout *channel_layout, + char *buf, size_t buf_size); + +/** + * bprint variant of av_channel_layout_describe(). + * + * @note the string will be appended to the bprint buffer. + * @return 0 on success, or a negative AVERROR value on failure. + */ +int av_channel_layout_describe_bprint(const AVChannelLayout *channel_layout, + struct AVBPrint *bp); + +/** + * Get the channel with the given index in a channel layout. + * + * @param channel_layout input channel layout + * @return channel with the index idx in channel_layout on success or + * AV_CHAN_NONE on failure (if idx is not valid or the channel order is + * unspecified) + */ +enum AVChannel +av_channel_layout_channel_from_index(const AVChannelLayout *channel_layout, unsigned int idx); + +/** + * Get the index of a given channel in a channel layout. In case multiple + * channels are found, only the first match will be returned. + * + * @param channel_layout input channel layout + * @return index of channel in channel_layout on success or a negative number if + * channel is not present in channel_layout. + */ +int av_channel_layout_index_from_channel(const AVChannelLayout *channel_layout, + enum AVChannel channel); + +/** + * Get the index in a channel layout of a channel described by the given string. + * In case multiple channels are found, only the first match will be returned. + * + * This function accepts channel names in the same format as + * @ref av_channel_from_string(). + * + * @param channel_layout input channel layout + * @return a channel index described by the given string, or a negative AVERROR + * value. + */ +int av_channel_layout_index_from_string(const AVChannelLayout *channel_layout, + const char *name); + +/** + * Get a channel described by the given string. + * + * This function accepts channel names in the same format as + * @ref av_channel_from_string(). + * + * @param channel_layout input channel layout + * @return a channel described by the given string in channel_layout on success + * or AV_CHAN_NONE on failure (if the string is not valid or the channel + * order is unspecified) + */ +enum AVChannel +av_channel_layout_channel_from_string(const AVChannelLayout *channel_layout, + const char *name); + +/** + * Find out what channels from a given set are present in a channel layout, + * without regard for their positions. + * + * @param channel_layout input channel layout + * @param mask a combination of AV_CH_* representing a set of channels + * @return a bitfield representing all the channels from mask that are present + * in channel_layout + */ +uint64_t av_channel_layout_subset(const AVChannelLayout *channel_layout, + uint64_t mask); + +/** + * Check whether a channel layout is valid, i.e. can possibly describe audio + * data. + * + * @param channel_layout input channel layout + * @return 1 if channel_layout is valid, 0 otherwise. + */ +int av_channel_layout_check(const AVChannelLayout *channel_layout); + +/** + * Check whether two channel layouts are semantically the same, i.e. the same + * channels are present on the same positions in both. + * + * If one of the channel layouts is AV_CHANNEL_ORDER_UNSPEC, while the other is + * not, they are considered to be unequal. If both are AV_CHANNEL_ORDER_UNSPEC, + * they are considered equal iff the channel counts are the same in both. + * + * @param chl input channel layout + * @param chl1 input channel layout + * @return 0 if chl and chl1 are equal, 1 if they are not equal. A negative + * AVERROR code if one or both are invalid. + */ +int av_channel_layout_compare(const AVChannelLayout *chl, const AVChannelLayout *chl1); + +/** + * @} + * @} + */ + +#endif /* AVUTIL_CHANNEL_LAYOUT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/common.h b/third_party/ffmpeg/uos/amd64/include/libavutil/common.h new file mode 100644 index 00000000..fd1404be --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/common.h @@ -0,0 +1,578 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * common internal and external API header + */ + +#ifndef AVUTIL_COMMON_H +#define AVUTIL_COMMON_H + +#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) && !defined(UINT64_C) +#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS +#endif + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "attributes.h" +#include "macros.h" + +//rounded division & shift +#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) +/* assume b>0 */ +#define ROUNDED_DIV(a,b) (((a)>=0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) +/* Fast a/(1<=0 and b>=0 */ +#define AV_CEIL_RSHIFT(a,b) (!av_builtin_constant_p(b) ? -((-(a)) >> (b)) \ + : ((a) + (1<<(b)) - 1) >> (b)) +/* Backwards compat. */ +#define FF_CEIL_RSHIFT AV_CEIL_RSHIFT + +#define FFUDIV(a,b) (((a)>0 ?(a):(a)-(b)+1) / (b)) +#define FFUMOD(a,b) ((a)-(b)*FFUDIV(a,b)) + +/** + * Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they + * are not representable as absolute values of their type. This is the same + * as with *abs() + * @see FFNABS() + */ +#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) +#define FFSIGN(a) ((a) > 0 ? 1 : -1) + +/** + * Negative Absolute value. + * this works for all integers of all types. + * As with many macros, this evaluates its argument twice, it thus must not have + * a sideeffect, that is FFNABS(x++) has undefined behavior. + */ +#define FFNABS(a) ((a) <= 0 ? (a) : (-(a))) + +/** + * Unsigned Absolute value. + * This takes the absolute value of a signed int and returns it as a unsigned. + * This also works with INT_MIN which would otherwise not be representable + * As with many macros, this evaluates its argument twice. + */ +#define FFABSU(a) ((a) <= 0 ? -(unsigned)(a) : (unsigned)(a)) +#define FFABS64U(a) ((a) <= 0 ? -(uint64_t)(a) : (uint64_t)(a)) + +/* misc math functions */ + +#ifdef HAVE_AV_CONFIG_H +# include "config.h" +# include "intmath.h" +#endif + +#ifndef av_ceil_log2 +# define av_ceil_log2 av_ceil_log2_c +#endif +#ifndef av_clip +# define av_clip av_clip_c +#endif +#ifndef av_clip64 +# define av_clip64 av_clip64_c +#endif +#ifndef av_clip_uint8 +# define av_clip_uint8 av_clip_uint8_c +#endif +#ifndef av_clip_int8 +# define av_clip_int8 av_clip_int8_c +#endif +#ifndef av_clip_uint16 +# define av_clip_uint16 av_clip_uint16_c +#endif +#ifndef av_clip_int16 +# define av_clip_int16 av_clip_int16_c +#endif +#ifndef av_clipl_int32 +# define av_clipl_int32 av_clipl_int32_c +#endif +#ifndef av_clip_intp2 +# define av_clip_intp2 av_clip_intp2_c +#endif +#ifndef av_clip_uintp2 +# define av_clip_uintp2 av_clip_uintp2_c +#endif +#ifndef av_mod_uintp2 +# define av_mod_uintp2 av_mod_uintp2_c +#endif +#ifndef av_sat_add32 +# define av_sat_add32 av_sat_add32_c +#endif +#ifndef av_sat_dadd32 +# define av_sat_dadd32 av_sat_dadd32_c +#endif +#ifndef av_sat_sub32 +# define av_sat_sub32 av_sat_sub32_c +#endif +#ifndef av_sat_dsub32 +# define av_sat_dsub32 av_sat_dsub32_c +#endif +#ifndef av_sat_add64 +# define av_sat_add64 av_sat_add64_c +#endif +#ifndef av_sat_sub64 +# define av_sat_sub64 av_sat_sub64_c +#endif +#ifndef av_clipf +# define av_clipf av_clipf_c +#endif +#ifndef av_clipd +# define av_clipd av_clipd_c +#endif +#ifndef av_popcount +# define av_popcount av_popcount_c +#endif +#ifndef av_popcount64 +# define av_popcount64 av_popcount64_c +#endif +#ifndef av_parity +# define av_parity av_parity_c +#endif + +#ifndef av_log2 +av_const int av_log2(unsigned v); +#endif + +#ifndef av_log2_16bit +av_const int av_log2_16bit(unsigned v); +#endif + +/** + * Clip a signed integer value into the amin-amax range. + * @param a value to clip + * @param amin minimum value of the clip range + * @param amax maximum value of the clip range + * @return clipped value + */ +static av_always_inline av_const int av_clip_c(int a, int amin, int amax) +{ +#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 + if (amin > amax) abort(); +#endif + if (a < amin) return amin; + else if (a > amax) return amax; + else return a; +} + +/** + * Clip a signed 64bit integer value into the amin-amax range. + * @param a value to clip + * @param amin minimum value of the clip range + * @param amax maximum value of the clip range + * @return clipped value + */ +static av_always_inline av_const int64_t av_clip64_c(int64_t a, int64_t amin, int64_t amax) +{ +#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 + if (amin > amax) abort(); +#endif + if (a < amin) return amin; + else if (a > amax) return amax; + else return a; +} + +/** + * Clip a signed integer value into the 0-255 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const uint8_t av_clip_uint8_c(int a) +{ + if (a&(~0xFF)) return (~a)>>31; + else return a; +} + +/** + * Clip a signed integer value into the -128,127 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const int8_t av_clip_int8_c(int a) +{ + if ((a+0x80U) & ~0xFF) return (a>>31) ^ 0x7F; + else return a; +} + +/** + * Clip a signed integer value into the 0-65535 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const uint16_t av_clip_uint16_c(int a) +{ + if (a&(~0xFFFF)) return (~a)>>31; + else return a; +} + +/** + * Clip a signed integer value into the -32768,32767 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const int16_t av_clip_int16_c(int a) +{ + if ((a+0x8000U) & ~0xFFFF) return (a>>31) ^ 0x7FFF; + else return a; +} + +/** + * Clip a signed 64-bit integer value into the -2147483648,2147483647 range. + * @param a value to clip + * @return clipped value + */ +static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a) +{ + if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (int32_t)((a>>63) ^ 0x7FFFFFFF); + else return (int32_t)a; +} + +/** + * Clip a signed integer into the -(2^p),(2^p-1) range. + * @param a value to clip + * @param p bit position to clip at + * @return clipped value + */ +static av_always_inline av_const int av_clip_intp2_c(int a, int p) +{ + if (((unsigned)a + (1 << p)) & ~((2 << p) - 1)) + return (a >> 31) ^ ((1 << p) - 1); + else + return a; +} + +/** + * Clip a signed integer to an unsigned power of two range. + * @param a value to clip + * @param p bit position to clip at + * @return clipped value + */ +static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) +{ + if (a & ~((1<> 31 & ((1<= 0) + return INT64_MAX ^ (b >> 63); + return s; +#endif +} + +/** + * Subtract two signed 64-bit values with saturation. + * + * @param a one value + * @param b another value + * @return difference with signed saturation + */ +static av_always_inline int64_t av_sat_sub64_c(int64_t a, int64_t b) { +#if (!defined(__INTEL_COMPILER) && AV_GCC_VERSION_AT_LEAST(5,1)) || AV_HAS_BUILTIN(__builtin_sub_overflow) + int64_t tmp; + return !__builtin_sub_overflow(a, b, &tmp) ? tmp : (tmp < 0 ? INT64_MAX : INT64_MIN); +#else + if (b <= 0 && a >= INT64_MAX + b) + return INT64_MAX; + if (b >= 0 && a <= INT64_MIN + b) + return INT64_MIN; + return a - b; +#endif +} + +/** + * Clip a float value into the amin-amax range. + * If a is nan or -inf amin will be returned. + * If a is +inf amax will be returned. + * @param a value to clip + * @param amin minimum value of the clip range + * @param amax maximum value of the clip range + * @return clipped value + */ +static av_always_inline av_const float av_clipf_c(float a, float amin, float amax) +{ +#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 + if (amin > amax) abort(); +#endif + return FFMIN(FFMAX(a, amin), amax); +} + +/** + * Clip a double value into the amin-amax range. + * If a is nan or -inf amin will be returned. + * If a is +inf amax will be returned. + * @param a value to clip + * @param amin minimum value of the clip range + * @param amax maximum value of the clip range + * @return clipped value + */ +static av_always_inline av_const double av_clipd_c(double a, double amin, double amax) +{ +#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2 + if (amin > amax) abort(); +#endif + return FFMIN(FFMAX(a, amin), amax); +} + +/** Compute ceil(log2(x)). + * @param x value used to compute ceil(log2(x)) + * @return computed ceiling of log2(x) + */ +static av_always_inline av_const int av_ceil_log2_c(int x) +{ + return av_log2((x - 1U) << 1); +} + +/** + * Count number of bits set to one in x + * @param x value to count bits of + * @return the number of bits set to one in x + */ +static av_always_inline av_const int av_popcount_c(uint32_t x) +{ + x -= (x >> 1) & 0x55555555; + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + x = (x + (x >> 4)) & 0x0F0F0F0F; + x += x >> 8; + return (x + (x >> 16)) & 0x3F; +} + +/** + * Count number of bits set to one in x + * @param x value to count bits of + * @return the number of bits set to one in x + */ +static av_always_inline av_const int av_popcount64_c(uint64_t x) +{ + return av_popcount((uint32_t)x) + av_popcount((uint32_t)(x >> 32)); +} + +static av_always_inline av_const int av_parity_c(uint32_t v) +{ + return av_popcount(v) & 1; +} + +/** + * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. + * + * @param val Output value, must be an lvalue of type uint32_t. + * @param GET_BYTE Expression reading one byte from the input. + * Evaluated up to 7 times (4 for the currently + * assigned Unicode range). With a memory buffer + * input, this could be *ptr++, or if you want to make sure + * that *ptr stops at the end of a NULL terminated string then + * *ptr ? *ptr++ : 0 + * @param ERROR Expression to be evaluated on invalid input, + * typically a goto statement. + * + * @warning ERROR should not contain a loop control statement which + * could interact with the internal while loop, and should force an + * exit from the macro code (e.g. through a goto or a return) in order + * to prevent undefined results. + */ +#define GET_UTF8(val, GET_BYTE, ERROR)\ + val= (GET_BYTE);\ + {\ + uint32_t top = (val & 128) >> 1;\ + if ((val & 0xc0) == 0x80 || val >= 0xFE)\ + {ERROR}\ + while (val & top) {\ + unsigned int tmp = (GET_BYTE) - 128;\ + if(tmp>>6)\ + {ERROR}\ + val= (val<<6) + tmp;\ + top <<= 5;\ + }\ + val &= (top << 1) - 1;\ + } + +/** + * Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. + * + * @param val Output value, must be an lvalue of type uint32_t. + * @param GET_16BIT Expression returning two bytes of UTF-16 data converted + * to native byte order. Evaluated one or two times. + * @param ERROR Expression to be evaluated on invalid input, + * typically a goto statement. + */ +#define GET_UTF16(val, GET_16BIT, ERROR)\ + val = (GET_16BIT);\ + {\ + unsigned int hi = val - 0xD800;\ + if (hi < 0x800) {\ + val = (GET_16BIT) - 0xDC00;\ + if (val > 0x3FFU || hi > 0x3FFU)\ + {ERROR}\ + val += (hi<<10) + 0x10000;\ + }\ + }\ + +/** + * @def PUT_UTF8(val, tmp, PUT_BYTE) + * Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). + * @param val is an input-only argument and should be of type uint32_t. It holds + * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If + * val is given as a function it is executed only once. + * @param tmp is a temporary variable and should be of type uint8_t. It + * represents an intermediate value during conversion that is to be + * output by PUT_BYTE. + * @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. + * It could be a function or a statement, and uses tmp as the input byte. + * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be + * executed up to 4 times for values in the valid UTF-8 range and up to + * 7 times in the general case, depending on the length of the converted + * Unicode character. + */ +#define PUT_UTF8(val, tmp, PUT_BYTE)\ + {\ + int bytes, shift;\ + uint32_t in = val;\ + if (in < 0x80) {\ + tmp = in;\ + PUT_BYTE\ + } else {\ + bytes = (av_log2(in) + 4) / 5;\ + shift = (bytes - 1) * 6;\ + tmp = (256 - (256 >> bytes)) | (in >> shift);\ + PUT_BYTE\ + while (shift >= 6) {\ + shift -= 6;\ + tmp = 0x80 | ((in >> shift) & 0x3f);\ + PUT_BYTE\ + }\ + }\ + } + +/** + * @def PUT_UTF16(val, tmp, PUT_16BIT) + * Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). + * @param val is an input-only argument and should be of type uint32_t. It holds + * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If + * val is given as a function it is executed only once. + * @param tmp is a temporary variable and should be of type uint16_t. It + * represents an intermediate value during conversion that is to be + * output by PUT_16BIT. + * @param PUT_16BIT writes the converted UTF-16 data to any proper destination + * in desired endianness. It could be a function or a statement, and uses tmp + * as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" + * PUT_BYTE will be executed 1 or 2 times depending on input character. + */ +#define PUT_UTF16(val, tmp, PUT_16BIT)\ + {\ + uint32_t in = val;\ + if (in < 0x10000) {\ + tmp = in;\ + PUT_16BIT\ + } else {\ + tmp = 0xD800 | ((in - 0x10000) >> 10);\ + PUT_16BIT\ + tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\ + PUT_16BIT\ + }\ + }\ + + + +#include "mem.h" + +#ifdef HAVE_AV_CONFIG_H +# include "internal.h" +#endif /* HAVE_AV_CONFIG_H */ + +#endif /* AVUTIL_COMMON_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/cpu.h b/third_party/ffmpeg/uos/amd64/include/libavutil/cpu.h new file mode 100644 index 00000000..9711e574 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/cpu.h @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2000, 2001, 2002 Fabrice Bellard + * + * 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 AVUTIL_CPU_H +#define AVUTIL_CPU_H + +#include + +#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */ + + /* lower 16 bits - CPU features */ +#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX +#define AV_CPU_FLAG_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext +#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext +#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW +#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions +#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions +#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster + ///< than regular MMX/SSE (e.g. Core1) +#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt +#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions +#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster + ///< than regular MMX/SSE (e.g. Core1) +#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions +#define AV_CPU_FLAG_SSSE3SLOW 0x4000000 ///< SSSE3 supported, but usually not faster +#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower +#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions +#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions +#define AV_CPU_FLAG_AESNI 0x80000 ///< Advanced Encryption Standard functions +#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used +#define AV_CPU_FLAG_AVXSLOW 0x8000000 ///< AVX supported, but slow when using YMM registers (e.g. Bulldozer) +#define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions +#define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions +#define AV_CPU_FLAG_CMOV 0x1000 ///< supports cmov instruction +#define AV_CPU_FLAG_AVX2 0x8000 ///< AVX2 functions: requires OS support even if YMM registers aren't used +#define AV_CPU_FLAG_FMA3 0x10000 ///< Haswell FMA3 functions +#define AV_CPU_FLAG_BMI1 0x20000 ///< Bit Manipulation Instruction Set 1 +#define AV_CPU_FLAG_BMI2 0x40000 ///< Bit Manipulation Instruction Set 2 +#define AV_CPU_FLAG_AVX512 0x100000 ///< AVX-512 functions: requires OS support even if YMM/ZMM registers aren't used +#define AV_CPU_FLAG_AVX512ICL 0x200000 ///< F/CD/BW/DQ/VL/VNNI/IFMA/VBMI/VBMI2/VPOPCNTDQ/BITALG/GFNI/VAES/VPCLMULQDQ +#define AV_CPU_FLAG_SLOW_GATHER 0x2000000 ///< CPU has slow gathers. + +#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard +#define AV_CPU_FLAG_VSX 0x0002 ///< ISA 2.06 +#define AV_CPU_FLAG_POWER8 0x0004 ///< ISA 2.07 + +#define AV_CPU_FLAG_ARMV5TE (1 << 0) +#define AV_CPU_FLAG_ARMV6 (1 << 1) +#define AV_CPU_FLAG_ARMV6T2 (1 << 2) +#define AV_CPU_FLAG_VFP (1 << 3) +#define AV_CPU_FLAG_VFPV3 (1 << 4) +#define AV_CPU_FLAG_NEON (1 << 5) +#define AV_CPU_FLAG_ARMV8 (1 << 6) +#define AV_CPU_FLAG_VFP_VM (1 << 7) ///< VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations +#define AV_CPU_FLAG_SETEND (1 <<16) + +#define AV_CPU_FLAG_MMI (1 << 0) +#define AV_CPU_FLAG_MSA (1 << 1) + +//Loongarch SIMD extension. +#define AV_CPU_FLAG_LSX (1 << 0) +#define AV_CPU_FLAG_LASX (1 << 1) + +/** + * Return the flags which specify extensions supported by the CPU. + * The returned value is affected by av_force_cpu_flags() if that was used + * before. So av_get_cpu_flags() can easily be used in an application to + * detect the enabled cpu flags. + */ +int av_get_cpu_flags(void); + +/** + * Disables cpu detection and forces the specified flags. + * -1 is a special case that disables forcing of specific flags. + */ +void av_force_cpu_flags(int flags); + +/** + * Parse CPU caps from a string and update the given AV_CPU_* flags based on that. + * + * @return negative on error. + */ +int av_parse_cpu_caps(unsigned *flags, const char *s); + +/** + * @return the number of logical CPU cores present. + */ +int av_cpu_count(void); + +/** + * Overrides cpu count detection and forces the specified count. + * Count < 1 disables forcing of specific count. + */ +void av_cpu_force_count(int count); + +/** + * Get the maximum data alignment that may be required by FFmpeg. + * + * Note that this is affected by the build configuration and the CPU flags mask, + * so e.g. if the CPU supports AVX, but libavutil has been built with + * --disable-avx or the AV_CPU_FLAG_AVX flag has been disabled through + * av_set_cpu_flags_mask(), then this function will behave as if AVX is not + * present. + */ +size_t av_cpu_max_align(void); + +#endif /* AVUTIL_CPU_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/crc.h b/third_party/ffmpeg/uos/amd64/include/libavutil/crc.h new file mode 100644 index 00000000..24a2e3ca --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/crc.h @@ -0,0 +1,99 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * @ingroup lavu_crc32 + * Public header for CRC hash function implementation. + */ + +#ifndef AVUTIL_CRC_H +#define AVUTIL_CRC_H + +#include +#include +#include "attributes.h" + +/** + * @defgroup lavu_crc32 CRC + * @ingroup lavu_hash + * CRC (Cyclic Redundancy Check) hash function implementation. + * + * This module supports numerous CRC polynomials, in addition to the most + * widely used CRC-32-IEEE. See @ref AVCRCId for a list of available + * polynomials. + * + * @{ + */ + +typedef uint32_t AVCRC; + +typedef enum { + AV_CRC_8_ATM, + AV_CRC_16_ANSI, + AV_CRC_16_CCITT, + AV_CRC_32_IEEE, + AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */ + AV_CRC_16_ANSI_LE, /*< reversed bitorder version of AV_CRC_16_ANSI */ + AV_CRC_24_IEEE, + AV_CRC_8_EBU, + AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */ +}AVCRCId; + +/** + * Initialize a CRC table. + * @param ctx must be an array of size sizeof(AVCRC)*257 or sizeof(AVCRC)*1024 + * @param le If 1, the lowest bit represents the coefficient for the highest + * exponent of the corresponding polynomial (both for poly and + * actual CRC). + * If 0, you must swap the CRC parameter and the result of av_crc + * if you need the standard representation (can be simplified in + * most cases to e.g. bswap16): + * av_bswap32(crc << (32-bits)) + * @param bits number of bits for the CRC + * @param poly generator polynomial without the x**bits coefficient, in the + * representation as specified by le + * @param ctx_size size of ctx in bytes + * @return <0 on failure + */ +int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size); + +/** + * Get an initialized standard CRC table. + * @param crc_id ID of a standard CRC + * @return a pointer to the CRC table or NULL on failure + */ +const AVCRC *av_crc_get_table(AVCRCId crc_id); + +/** + * Calculate the CRC of a block. + * @param crc CRC of previous blocks if any or initial value for CRC + * @return CRC updated with the data from the given block + * + * @see av_crc_init() "le" parameter + */ +uint32_t av_crc(const AVCRC *ctx, uint32_t crc, + const uint8_t *buffer, size_t length) av_pure; + +/** + * @} + */ + +#endif /* AVUTIL_CRC_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/csp.h b/third_party/ffmpeg/uos/amd64/include/libavutil/csp.h new file mode 100644 index 00000000..37544449 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/csp.h @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2016 Ronald S. Bultje + * 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 AVUTIL_CSP_H +#define AVUTIL_CSP_H + +#include "pixfmt.h" +#include "rational.h" + +/** + * @file Colorspace value utility functions for libavutil. + * @author Ronald S. Bultje + * @author Leo Izen + * @defgroup lavu_math_csp Colorspace Utility + * @ingroup lavu_math + * @{ + */ + +/** + * Struct containing luma coefficients to be used for RGB to YUV/YCoCg, or similar + * calculations. + */ +typedef struct AVLumaCoefficients { + AVRational cr, cg, cb; +} AVLumaCoefficients; + +/** + * Struct containing chromaticity x and y values for the standard CIE 1931 + * chromaticity definition. + */ +typedef struct AVCIExy { + AVRational x, y; +} AVCIExy; + +/** + * Struct defining the red, green, and blue primary locations in terms of CIE + * 1931 chromaticity x and y. + */ +typedef struct AVPrimaryCoefficients { + AVCIExy r, g, b; +} AVPrimaryCoefficients; + +/** + * Struct defining white point location in terms of CIE 1931 chromaticity x + * and y. + */ +typedef AVCIExy AVWhitepointCoefficients; + +/** + * Struct that contains both white point location and primaries location, providing + * the complete description of a color gamut. + */ +typedef struct AVColorPrimariesDesc { + AVWhitepointCoefficients wp; + AVPrimaryCoefficients prim; +} AVColorPrimariesDesc; + +/** + * Retrieves the Luma coefficients necessary to construct a conversion matrix + * from an enum constant describing the colorspace. + * @param csp An enum constant indicating YUV or similar colorspace. + * @return The Luma coefficients associated with that colorspace, or NULL + * if the constant is unknown to libavutil. + */ +const AVLumaCoefficients *av_csp_luma_coeffs_from_avcsp(enum AVColorSpace csp); + +/** + * Retrieves a complete gamut description from an enum constant describing the + * color primaries. + * @param prm An enum constant indicating primaries + * @return A description of the colorspace gamut associated with that enum + * constant, or NULL if the constant is unknown to libavutil. + */ +const AVColorPrimariesDesc *av_csp_primaries_desc_from_id(enum AVColorPrimaries prm); + +/** + * Detects which enum AVColorPrimaries constant corresponds to the given complete + * gamut description. + * @see enum AVColorPrimaries + * @param prm A description of the colorspace gamut + * @return The enum constant associated with this gamut, or + * AVCOL_PRI_UNSPECIFIED if no clear match can be idenitified. + */ +enum AVColorPrimaries av_csp_primaries_id_from_desc(const AVColorPrimariesDesc *prm); + +/** + * @} + */ + +#endif /* AVUTIL_CSP_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/des.h b/third_party/ffmpeg/uos/amd64/include/libavutil/des.h new file mode 100644 index 00000000..4cf11f5b --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/des.h @@ -0,0 +1,77 @@ +/* + * DES encryption/decryption + * Copyright (c) 2007 Reimar Doeffinger + * + * 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 AVUTIL_DES_H +#define AVUTIL_DES_H + +#include + +/** + * @defgroup lavu_des DES + * @ingroup lavu_crypto + * @{ + */ + +typedef struct AVDES { + uint64_t round_keys[3][16]; + int triple_des; +} AVDES; + +/** + * Allocate an AVDES context. + */ +AVDES *av_des_alloc(void); + +/** + * @brief Initializes an AVDES context. + * + * @param key_bits must be 64 or 192 + * @param decrypt 0 for encryption/CBC-MAC, 1 for decryption + * @return zero on success, negative value otherwise + */ +int av_des_init(struct AVDES *d, const uint8_t *key, int key_bits, int decrypt); + +/** + * @brief Encrypts / decrypts using the DES algorithm. + * + * @param count number of 8 byte blocks + * @param dst destination array, can be equal to src, must be 8-byte aligned + * @param src source array, can be equal to dst, must be 8-byte aligned, may be NULL + * @param iv initialization vector for CBC mode, if NULL then ECB will be used, + * must be 8-byte aligned + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_des_crypt(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); + +/** + * @brief Calculates CBC-MAC using the DES algorithm. + * + * @param count number of 8 byte blocks + * @param dst destination array, can be equal to src, must be 8-byte aligned + * @param src source array, can be equal to dst, must be 8-byte aligned, may be NULL + */ +void av_des_mac(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count); + +/** + * @} + */ + +#endif /* AVUTIL_DES_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/detection_bbox.h b/third_party/ffmpeg/uos/amd64/include/libavutil/detection_bbox.h new file mode 100644 index 00000000..c20c204a --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/detection_bbox.h @@ -0,0 +1,107 @@ +/* + * 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 AVUTIL_DETECTION_BBOX_H +#define AVUTIL_DETECTION_BBOX_H + +#include "rational.h" +#include "avassert.h" +#include "frame.h" + +typedef struct AVDetectionBBox { + /** + * Distance in pixels from the left/top edge of the frame, + * together with width and height, defining the bounding box. + */ + int x; + int y; + int w; + int h; + +#define AV_DETECTION_BBOX_LABEL_NAME_MAX_SIZE 64 + + /** + * Detect result with confidence + */ + char detect_label[AV_DETECTION_BBOX_LABEL_NAME_MAX_SIZE]; + AVRational detect_confidence; + + /** + * At most 4 classifications based on the detected bounding box. + * For example, we can get max 4 different attributes with 4 different + * DNN models on one bounding box. + * classify_count is zero if no classification. + */ +#define AV_NUM_DETECTION_BBOX_CLASSIFY 4 + uint32_t classify_count; + char classify_labels[AV_NUM_DETECTION_BBOX_CLASSIFY][AV_DETECTION_BBOX_LABEL_NAME_MAX_SIZE]; + AVRational classify_confidences[AV_NUM_DETECTION_BBOX_CLASSIFY]; +} AVDetectionBBox; + +typedef struct AVDetectionBBoxHeader { + /** + * Information about how the bounding box is generated. + * for example, the DNN model name. + */ + char source[256]; + + /** + * Number of bounding boxes in the array. + */ + uint32_t nb_bboxes; + + /** + * Offset in bytes from the beginning of this structure at which + * the array of bounding boxes starts. + */ + size_t bboxes_offset; + + /** + * Size of each bounding box in bytes. + */ + size_t bbox_size; +} AVDetectionBBoxHeader; + +/* + * Get the bounding box at the specified {@code idx}. Must be between 0 and nb_bboxes. + */ +static av_always_inline AVDetectionBBox * +av_get_detection_bbox(const AVDetectionBBoxHeader *header, unsigned int idx) +{ + av_assert0(idx < header->nb_bboxes); + return (AVDetectionBBox *)((uint8_t *)header + header->bboxes_offset + + idx * header->bbox_size); +} + +/** + * Allocates memory for AVDetectionBBoxHeader, plus an array of {@code nb_bboxes} + * AVDetectionBBox, and initializes the variables. + * Can be freed with a normal av_free() call. + * + * @param out_size if non-NULL, the size in bytes of the resulting data array is + * written here. + */ +AVDetectionBBoxHeader *av_detection_bbox_alloc(uint32_t nb_bboxes, size_t *out_size); + +/** + * Allocates memory for AVDetectionBBoxHeader, plus an array of {@code nb_bboxes} + * AVDetectionBBox, in the given AVFrame {@code frame} as AVFrameSideData of type + * AV_FRAME_DATA_DETECTION_BBOXES and initializes the variables. + */ +AVDetectionBBoxHeader *av_detection_bbox_create_side_data(AVFrame *frame, uint32_t nb_bboxes); +#endif diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/dict.h b/third_party/ffmpeg/uos/amd64/include/libavutil/dict.h new file mode 100644 index 00000000..0d1afc6c --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/dict.h @@ -0,0 +1,198 @@ +/* + * 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 + */ + +/** + * @file + * Public dictionary API. + * @deprecated + * AVDictionary is provided for compatibility with libav. It is both in + * implementation as well as API inefficient. It does not scale and is + * extremely slow with large dictionaries. + * It is recommended that new code uses our tree container from tree.c/h + * where applicable, which uses AVL trees to achieve O(log n) performance. + */ + +#ifndef AVUTIL_DICT_H +#define AVUTIL_DICT_H + +#include + +/** + * @addtogroup lavu_dict AVDictionary + * @ingroup lavu_data + * + * @brief Simple key:value store + * + * @{ + * Dictionaries are used for storing key:value pairs. To create + * an AVDictionary, simply pass an address of a NULL pointer to + * av_dict_set(). NULL can be used as an empty dictionary wherever + * a pointer to an AVDictionary is required. + * Use av_dict_get() to retrieve an entry or iterate over all + * entries and finally av_dict_free() to free the dictionary + * and all its contents. + * + @code + AVDictionary *d = NULL; // "create" an empty dictionary + AVDictionaryEntry *t = NULL; + + av_dict_set(&d, "foo", "bar", 0); // add an entry + + char *k = av_strdup("key"); // if your strings are already allocated, + char *v = av_strdup("value"); // you can avoid copying them like this + av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL); + + while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) { + <....> // iterate over all entries in d + } + av_dict_free(&d); + @endcode + */ + +#define AV_DICT_MATCH_CASE 1 /**< Only get an entry with exact-case key match. Only relevant in av_dict_get(). */ +#define AV_DICT_IGNORE_SUFFIX 2 /**< Return first entry in a dictionary whose first part corresponds to the search key, + ignoring the suffix of the found key string. Only relevant in av_dict_get(). */ +#define AV_DICT_DONT_STRDUP_KEY 4 /**< Take ownership of a key that's been + allocated with av_malloc() or another memory allocation function. */ +#define AV_DICT_DONT_STRDUP_VAL 8 /**< Take ownership of a value that's been + allocated with av_malloc() or another memory allocation function. */ +#define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries. +#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no + delimiter is added, the strings are simply concatenated. */ +#define AV_DICT_MULTIKEY 64 /**< Allow to store several equal keys in the dictionary */ + +typedef struct AVDictionaryEntry { + char *key; + char *value; +} AVDictionaryEntry; + +typedef struct AVDictionary AVDictionary; + +/** + * Get a dictionary entry with matching key. + * + * The returned entry key or value must not be changed, or it will + * cause undefined behavior. + * + * To iterate through all the dictionary entries, you can set the matching key + * to the null string "" and set the AV_DICT_IGNORE_SUFFIX flag. + * + * @param prev Set to the previous matching element to find the next. + * If set to NULL the first matching element is returned. + * @param key matching key + * @param flags a collection of AV_DICT_* flags controlling how the entry is retrieved + * @return found entry or NULL in case no matching entry was found in the dictionary + */ +AVDictionaryEntry *av_dict_get(const AVDictionary *m, const char *key, + const AVDictionaryEntry *prev, int flags); + +/** + * Get number of entries in dictionary. + * + * @param m dictionary + * @return number of entries in dictionary + */ +int av_dict_count(const AVDictionary *m); + +/** + * Set the given entry in *pm, overwriting an existing entry. + * + * Note: If AV_DICT_DONT_STRDUP_KEY or AV_DICT_DONT_STRDUP_VAL is set, + * these arguments will be freed on error. + * + * Warning: Adding a new entry to a dictionary invalidates all existing entries + * previously returned with av_dict_get. + * + * @param pm pointer to a pointer to a dictionary struct. If *pm is NULL + * a dictionary struct is allocated and put in *pm. + * @param key entry key to add to *pm (will either be av_strduped or added as a new key depending on flags) + * @param value entry value to add to *pm (will be av_strduped or added as a new key depending on flags). + * Passing a NULL value will cause an existing entry to be deleted. + * @return >= 0 on success otherwise an error code <0 + */ +int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags); + +/** + * Convenience wrapper for av_dict_set that converts the value to a string + * and stores it. + * + * Note: If AV_DICT_DONT_STRDUP_KEY is set, key will be freed on error. + */ +int av_dict_set_int(AVDictionary **pm, const char *key, int64_t value, int flags); + +/** + * Parse the key/value pairs list and add the parsed entries to a dictionary. + * + * In case of failure, all the successfully set entries are stored in + * *pm. You may need to manually free the created dictionary. + * + * @param key_val_sep a 0-terminated list of characters used to separate + * key from value + * @param pairs_sep a 0-terminated list of characters used to separate + * two pairs from each other + * @param flags flags to use when adding to dictionary. + * AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL + * are ignored since the key/value tokens will always + * be duplicated. + * @return 0 on success, negative AVERROR code on failure + */ +int av_dict_parse_string(AVDictionary **pm, const char *str, + const char *key_val_sep, const char *pairs_sep, + int flags); + +/** + * Copy entries from one AVDictionary struct into another. + * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, + * this function will allocate a struct for you and put it in *dst + * @param src pointer to source AVDictionary struct + * @param flags flags to use when setting entries in *dst + * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag + * @return 0 on success, negative AVERROR code on failure. If dst was allocated + * by this function, callers should free the associated memory. + */ +int av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags); + +/** + * Free all the memory allocated for an AVDictionary struct + * and all keys and values. + */ +void av_dict_free(AVDictionary **m); + +/** + * Get dictionary entries as a string. + * + * Create a string containing dictionary's entries. + * Such string may be passed back to av_dict_parse_string(). + * @note String is escaped with backslashes ('\'). + * + * @param[in] m dictionary + * @param[out] buffer Pointer to buffer that will be allocated with string containg entries. + * Buffer must be freed by the caller when is no longer needed. + * @param[in] key_val_sep character used to separate key from value + * @param[in] pairs_sep character used to separate two pairs from each other + * @return >= 0 on success, negative on error + * @warning Separators cannot be neither '\\' nor '\0'. They also cannot be the same. + */ +int av_dict_get_string(const AVDictionary *m, char **buffer, + const char key_val_sep, const char pairs_sep); + +/** + * @} + */ + +#endif /* AVUTIL_DICT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/display.h b/third_party/ffmpeg/uos/amd64/include/libavutil/display.h new file mode 100644 index 00000000..31d8bef3 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/display.h @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2014 Vittorio Giovara + * + * 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 + */ + +/** + * @file + * Display matrix + */ + +#ifndef AVUTIL_DISPLAY_H +#define AVUTIL_DISPLAY_H + +#include + +/** + * @addtogroup lavu_video + * @{ + * + * @defgroup lavu_video_display Display transformation matrix functions + * @{ + */ + +/** + * @addtogroup lavu_video_display + * The display transformation matrix specifies an affine transformation that + * should be applied to video frames for correct presentation. It is compatible + * with the matrices stored in the ISO/IEC 14496-12 container format. + * + * The data is a 3x3 matrix represented as a 9-element array: + * + * @code{.unparsed} + * | a b u | + * (a, b, u, c, d, v, x, y, w) -> | c d v | + * | x y w | + * @endcode + * + * All numbers are stored in native endianness, as 16.16 fixed-point values, + * except for u, v and w, which are stored as 2.30 fixed-point values. + * + * The transformation maps a point (p, q) in the source (pre-transformation) + * frame to the point (p', q') in the destination (post-transformation) frame as + * follows: + * + * @code{.unparsed} + * | a b u | + * (p, q, 1) . | c d v | = z * (p', q', 1) + * | x y w | + * @endcode + * + * The transformation can also be more explicitly written in components as + * follows: + * + * @code{.unparsed} + * p' = (a * p + c * q + x) / z; + * q' = (b * p + d * q + y) / z; + * z = u * p + v * q + w + * @endcode + */ + +/** + * Extract the rotation component of the transformation matrix. + * + * @param matrix the transformation matrix + * @return the angle (in degrees) by which the transformation rotates the frame + * counterclockwise. The angle will be in range [-180.0, 180.0], + * or NaN if the matrix is singular. + * + * @note floating point numbers are inherently inexact, so callers are + * recommended to round the return value to nearest integer before use. + */ +double av_display_rotation_get(const int32_t matrix[9]); + +/** + * Initialize a transformation matrix describing a pure clockwise + * rotation by the specified angle (in degrees). + * + * @param matrix an allocated transformation matrix (will be fully overwritten + * by this function) + * @param angle rotation angle in degrees. + */ +void av_display_rotation_set(int32_t matrix[9], double angle); + +/** + * Flip the input matrix horizontally and/or vertically. + * + * @param matrix an allocated transformation matrix + * @param hflip whether the matrix should be flipped horizontally + * @param vflip whether the matrix should be flipped vertically + */ +void av_display_matrix_flip(int32_t matrix[9], int hflip, int vflip); + +/** + * @} + * @} + */ + +#endif /* AVUTIL_DISPLAY_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/dovi_meta.h b/third_party/ffmpeg/uos/amd64/include/libavutil/dovi_meta.h new file mode 100644 index 00000000..3d11e02b --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/dovi_meta.h @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2020 Vacing Fang + * + * 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 + */ + +/** + * @file + * DOVI configuration + */ + + +#ifndef AVUTIL_DOVI_META_H +#define AVUTIL_DOVI_META_H + +#include +#include +#include "rational.h" + +/* + * DOVI configuration + * ref: dolby-vision-bitstreams-within-the-iso-base-media-file-format-v2.1.2 + dolby-vision-bitstreams-in-mpeg-2-transport-stream-multiplex-v1.2 + * @code + * uint8_t dv_version_major, the major version number that the stream complies with + * uint8_t dv_version_minor, the minor version number that the stream complies with + * uint8_t dv_profile, the Dolby Vision profile + * uint8_t dv_level, the Dolby Vision level + * uint8_t rpu_present_flag + * uint8_t el_present_flag + * uint8_t bl_present_flag + * uint8_t dv_bl_signal_compatibility_id + * @endcode + * + * @note The struct must be allocated with av_dovi_alloc() and + * its size is not a part of the public ABI. + */ +typedef struct AVDOVIDecoderConfigurationRecord { + uint8_t dv_version_major; + uint8_t dv_version_minor; + uint8_t dv_profile; + uint8_t dv_level; + uint8_t rpu_present_flag; + uint8_t el_present_flag; + uint8_t bl_present_flag; + uint8_t dv_bl_signal_compatibility_id; +} AVDOVIDecoderConfigurationRecord; + +/** + * Allocate a AVDOVIDecoderConfigurationRecord structure and initialize its + * fields to default values. + * + * @return the newly allocated struct or NULL on failure + */ +AVDOVIDecoderConfigurationRecord *av_dovi_alloc(size_t *size); + +/** + * Dolby Vision RPU data header. + * + * @note sizeof(AVDOVIRpuDataHeader) is not part of the public ABI. + */ +typedef struct AVDOVIRpuDataHeader { + uint8_t rpu_type; + uint16_t rpu_format; + uint8_t vdr_rpu_profile; + uint8_t vdr_rpu_level; + uint8_t chroma_resampling_explicit_filter_flag; + uint8_t coef_data_type; /* informative, lavc always converts to fixed */ + uint8_t coef_log2_denom; + uint8_t vdr_rpu_normalized_idc; + uint8_t bl_video_full_range_flag; + uint8_t bl_bit_depth; /* [8, 16] */ + uint8_t el_bit_depth; /* [8, 16] */ + uint8_t vdr_bit_depth; /* [8, 16] */ + uint8_t spatial_resampling_filter_flag; + uint8_t el_spatial_resampling_filter_flag; + uint8_t disable_residual_flag; +} AVDOVIRpuDataHeader; + +enum AVDOVIMappingMethod { + AV_DOVI_MAPPING_POLYNOMIAL = 0, + AV_DOVI_MAPPING_MMR = 1, +}; + +/** + * Coefficients of a piece-wise function. The pieces of the function span the + * value ranges between two adjacent pivot values. + */ +#define AV_DOVI_MAX_PIECES 8 +typedef struct AVDOVIReshapingCurve { + uint8_t num_pivots; /* [2, 9] */ + uint16_t pivots[AV_DOVI_MAX_PIECES + 1]; /* sorted ascending */ + enum AVDOVIMappingMethod mapping_idc[AV_DOVI_MAX_PIECES]; + /* AV_DOVI_MAPPING_POLYNOMIAL */ + uint8_t poly_order[AV_DOVI_MAX_PIECES]; /* [1, 2] */ + int64_t poly_coef[AV_DOVI_MAX_PIECES][3]; /* x^0, x^1, x^2 */ + /* AV_DOVI_MAPPING_MMR */ + uint8_t mmr_order[AV_DOVI_MAX_PIECES]; /* [1, 3] */ + int64_t mmr_constant[AV_DOVI_MAX_PIECES]; + int64_t mmr_coef[AV_DOVI_MAX_PIECES][3/* order - 1 */][7]; +} AVDOVIReshapingCurve; + +enum AVDOVINLQMethod { + AV_DOVI_NLQ_NONE = -1, + AV_DOVI_NLQ_LINEAR_DZ = 0, +}; + +/** + * Coefficients of the non-linear inverse quantization. For the interpretation + * of these, see ETSI GS CCM 001. + */ +typedef struct AVDOVINLQParams { + uint16_t nlq_offset; + uint64_t vdr_in_max; + /* AV_DOVI_NLQ_LINEAR_DZ */ + uint64_t linear_deadzone_slope; + uint64_t linear_deadzone_threshold; +} AVDOVINLQParams; + +/** + * Dolby Vision RPU data mapping parameters. + * + * @note sizeof(AVDOVIDataMapping) is not part of the public ABI. + */ +typedef struct AVDOVIDataMapping { + uint8_t vdr_rpu_id; + uint8_t mapping_color_space; + uint8_t mapping_chroma_format_idc; + AVDOVIReshapingCurve curves[3]; /* per component */ + + /* Non-linear inverse quantization */ + enum AVDOVINLQMethod nlq_method_idc; + uint32_t num_x_partitions; + uint32_t num_y_partitions; + AVDOVINLQParams nlq[3]; /* per component */ +} AVDOVIDataMapping; + +/** + * Dolby Vision RPU colorspace metadata parameters. + * + * @note sizeof(AVDOVIColorMetadata) is not part of the public ABI. + */ +typedef struct AVDOVIColorMetadata { + uint8_t dm_metadata_id; + uint8_t scene_refresh_flag; + + /** + * Coefficients of the custom Dolby Vision IPT-PQ matrices. These are to be + * used instead of the matrices indicated by the frame's colorspace tags. + * The output of rgb_to_lms_matrix is to be fed into a BT.2020 LMS->RGB + * matrix based on a Hunt-Pointer-Estevez transform, but without any + * crosstalk. (See the definition of the ICtCp colorspace for more + * information.) + */ + AVRational ycc_to_rgb_matrix[9]; /* before PQ linearization */ + AVRational ycc_to_rgb_offset[3]; /* input offset of neutral value */ + AVRational rgb_to_lms_matrix[9]; /* after PQ linearization */ + + /** + * Extra signal metadata (see Dolby patents for more info). + */ + uint16_t signal_eotf; + uint16_t signal_eotf_param0; + uint16_t signal_eotf_param1; + uint32_t signal_eotf_param2; + uint8_t signal_bit_depth; + uint8_t signal_color_space; + uint8_t signal_chroma_format; + uint8_t signal_full_range_flag; /* [0, 3] */ + uint16_t source_min_pq; + uint16_t source_max_pq; + uint16_t source_diagonal; +} AVDOVIColorMetadata; + +/** + * Combined struct representing a combination of header, mapping and color + * metadata, for attaching to frames as side data. + * + * @note The struct must be allocated with av_dovi_metadata_alloc() and + * its size is not a part of the public ABI. + */ + +typedef struct AVDOVIMetadata { + /** + * Offset in bytes from the beginning of this structure at which the + * respective structs start. + */ + size_t header_offset; /* AVDOVIRpuDataHeader */ + size_t mapping_offset; /* AVDOVIDataMapping */ + size_t color_offset; /* AVDOVIColorMetadata */ +} AVDOVIMetadata; + +static av_always_inline AVDOVIRpuDataHeader * +av_dovi_get_header(const AVDOVIMetadata *data) +{ + return (AVDOVIRpuDataHeader *)((uint8_t *) data + data->header_offset); +} + +static av_always_inline AVDOVIDataMapping * +av_dovi_get_mapping(const AVDOVIMetadata *data) +{ + return (AVDOVIDataMapping *)((uint8_t *) data + data->mapping_offset); +} + +static av_always_inline AVDOVIColorMetadata * +av_dovi_get_color(const AVDOVIMetadata *data) +{ + return (AVDOVIColorMetadata *)((uint8_t *) data + data->color_offset); +} + +/** + * Allocate an AVDOVIMetadata structure and initialize its + * fields to default values. + * + * @param size If this parameter is non-NULL, the size in bytes of the + * allocated struct will be written here on success + * + * @return the newly allocated struct or NULL on failure + */ +AVDOVIMetadata *av_dovi_metadata_alloc(size_t *size); + +#endif /* AVUTIL_DOVI_META_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/downmix_info.h b/third_party/ffmpeg/uos/amd64/include/libavutil/downmix_info.h new file mode 100644 index 00000000..221cf5bf --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/downmix_info.h @@ -0,0 +1,115 @@ +/* + * Copyright (c) 2014 Tim Walker + * + * 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 AVUTIL_DOWNMIX_INFO_H +#define AVUTIL_DOWNMIX_INFO_H + +#include "frame.h" + +/** + * @file + * audio downmix medatata + */ + +/** + * @addtogroup lavu_audio + * @{ + */ + +/** + * @defgroup downmix_info Audio downmix metadata + * @{ + */ + +/** + * Possible downmix types. + */ +enum AVDownmixType { + AV_DOWNMIX_TYPE_UNKNOWN, /**< Not indicated. */ + AV_DOWNMIX_TYPE_LORO, /**< Lo/Ro 2-channel downmix (Stereo). */ + AV_DOWNMIX_TYPE_LTRT, /**< Lt/Rt 2-channel downmix, Dolby Surround compatible. */ + AV_DOWNMIX_TYPE_DPLII, /**< Lt/Rt 2-channel downmix, Dolby Pro Logic II compatible. */ + AV_DOWNMIX_TYPE_NB /**< Number of downmix types. Not part of ABI. */ +}; + +/** + * This structure describes optional metadata relevant to a downmix procedure. + * + * All fields are set by the decoder to the value indicated in the audio + * bitstream (if present), or to a "sane" default otherwise. + */ +typedef struct AVDownmixInfo { + /** + * Type of downmix preferred by the mastering engineer. + */ + enum AVDownmixType preferred_downmix_type; + + /** + * Absolute scale factor representing the nominal level of the center + * channel during a regular downmix. + */ + double center_mix_level; + + /** + * Absolute scale factor representing the nominal level of the center + * channel during an Lt/Rt compatible downmix. + */ + double center_mix_level_ltrt; + + /** + * Absolute scale factor representing the nominal level of the surround + * channels during a regular downmix. + */ + double surround_mix_level; + + /** + * Absolute scale factor representing the nominal level of the surround + * channels during an Lt/Rt compatible downmix. + */ + double surround_mix_level_ltrt; + + /** + * Absolute scale factor representing the level at which the LFE data is + * mixed into L/R channels during downmixing. + */ + double lfe_mix_level; +} AVDownmixInfo; + +/** + * Get a frame's AV_FRAME_DATA_DOWNMIX_INFO side data for editing. + * + * If the side data is absent, it is created and added to the frame. + * + * @param frame the frame for which the side data is to be obtained or created + * + * @return the AVDownmixInfo structure to be edited by the caller, or NULL if + * the structure cannot be allocated. + */ +AVDownmixInfo *av_downmix_info_update_side_data(AVFrame *frame); + +/** + * @} + */ + +/** + * @} + */ + +#endif /* AVUTIL_DOWNMIX_INFO_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/encryption_info.h b/third_party/ffmpeg/uos/amd64/include/libavutil/encryption_info.h new file mode 100644 index 00000000..8fe7ebfe --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/encryption_info.h @@ -0,0 +1,205 @@ +/** + * 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 AVUTIL_ENCRYPTION_INFO_H +#define AVUTIL_ENCRYPTION_INFO_H + +#include +#include + +typedef struct AVSubsampleEncryptionInfo { + /** The number of bytes that are clear. */ + unsigned int bytes_of_clear_data; + + /** + * The number of bytes that are protected. If using pattern encryption, + * the pattern applies to only the protected bytes; if not using pattern + * encryption, all these bytes are encrypted. + */ + unsigned int bytes_of_protected_data; +} AVSubsampleEncryptionInfo; + +/** + * This describes encryption info for a packet. This contains frame-specific + * info for how to decrypt the packet before passing it to the decoder. + * + * The size of this struct is not part of the public ABI. + */ +typedef struct AVEncryptionInfo { + /** The fourcc encryption scheme, in big-endian byte order. */ + uint32_t scheme; + + /** + * Only used for pattern encryption. This is the number of 16-byte blocks + * that are encrypted. + */ + uint32_t crypt_byte_block; + + /** + * Only used for pattern encryption. This is the number of 16-byte blocks + * that are clear. + */ + uint32_t skip_byte_block; + + /** + * The ID of the key used to encrypt the packet. This should always be + * 16 bytes long, but may be changed in the future. + */ + uint8_t *key_id; + uint32_t key_id_size; + + /** + * The initialization vector. This may have been zero-filled to be the + * correct block size. This should always be 16 bytes long, but may be + * changed in the future. + */ + uint8_t *iv; + uint32_t iv_size; + + /** + * An array of subsample encryption info specifying how parts of the sample + * are encrypted. If there are no subsamples, then the whole sample is + * encrypted. + */ + AVSubsampleEncryptionInfo *subsamples; + uint32_t subsample_count; +} AVEncryptionInfo; + +/** + * This describes info used to initialize an encryption key system. + * + * The size of this struct is not part of the public ABI. + */ +typedef struct AVEncryptionInitInfo { + /** + * A unique identifier for the key system this is for, can be NULL if it + * is not known. This should always be 16 bytes, but may change in the + * future. + */ + uint8_t* system_id; + uint32_t system_id_size; + + /** + * An array of key IDs this initialization data is for. All IDs are the + * same length. Can be NULL if there are no known key IDs. + */ + uint8_t** key_ids; + /** The number of key IDs. */ + uint32_t num_key_ids; + /** + * The number of bytes in each key ID. This should always be 16, but may + * change in the future. + */ + uint32_t key_id_size; + + /** + * Key-system specific initialization data. This data is copied directly + * from the file and the format depends on the specific key system. This + * can be NULL if there is no initialization data; in that case, there + * will be at least one key ID. + */ + uint8_t* data; + uint32_t data_size; + + /** + * An optional pointer to the next initialization info in the list. + */ + struct AVEncryptionInitInfo *next; +} AVEncryptionInitInfo; + +/** + * Allocates an AVEncryptionInfo structure and sub-pointers to hold the given + * number of subsamples. This will allocate pointers for the key ID, IV, + * and subsample entries, set the size members, and zero-initialize the rest. + * + * @param subsample_count The number of subsamples. + * @param key_id_size The number of bytes in the key ID, should be 16. + * @param iv_size The number of bytes in the IV, should be 16. + * + * @return The new AVEncryptionInfo structure, or NULL on error. + */ +AVEncryptionInfo *av_encryption_info_alloc(uint32_t subsample_count, uint32_t key_id_size, uint32_t iv_size); + +/** + * Allocates an AVEncryptionInfo structure with a copy of the given data. + * @return The new AVEncryptionInfo structure, or NULL on error. + */ +AVEncryptionInfo *av_encryption_info_clone(const AVEncryptionInfo *info); + +/** + * Frees the given encryption info object. This MUST NOT be used to free the + * side-data data pointer, that should use normal side-data methods. + */ +void av_encryption_info_free(AVEncryptionInfo *info); + +/** + * Creates a copy of the AVEncryptionInfo that is contained in the given side + * data. The resulting object should be passed to av_encryption_info_free() + * when done. + * + * @return The new AVEncryptionInfo structure, or NULL on error. + */ +AVEncryptionInfo *av_encryption_info_get_side_data(const uint8_t *side_data, size_t side_data_size); + +/** + * Allocates and initializes side data that holds a copy of the given encryption + * info. The resulting pointer should be either freed using av_free or given + * to av_packet_add_side_data(). + * + * @return The new side-data pointer, or NULL. + */ +uint8_t *av_encryption_info_add_side_data( + const AVEncryptionInfo *info, size_t *side_data_size); + + +/** + * Allocates an AVEncryptionInitInfo structure and sub-pointers to hold the + * given sizes. This will allocate pointers and set all the fields. + * + * @return The new AVEncryptionInitInfo structure, or NULL on error. + */ +AVEncryptionInitInfo *av_encryption_init_info_alloc( + uint32_t system_id_size, uint32_t num_key_ids, uint32_t key_id_size, uint32_t data_size); + +/** + * Frees the given encryption init info object. This MUST NOT be used to free + * the side-data data pointer, that should use normal side-data methods. + */ +void av_encryption_init_info_free(AVEncryptionInitInfo* info); + +/** + * Creates a copy of the AVEncryptionInitInfo that is contained in the given + * side data. The resulting object should be passed to + * av_encryption_init_info_free() when done. + * + * @return The new AVEncryptionInitInfo structure, or NULL on error. + */ +AVEncryptionInitInfo *av_encryption_init_info_get_side_data( + const uint8_t* side_data, size_t side_data_size); + +/** + * Allocates and initializes side data that holds a copy of the given encryption + * init info. The resulting pointer should be either freed using av_free or + * given to av_packet_add_side_data(). + * + * @return The new side-data pointer, or NULL. + */ +uint8_t *av_encryption_init_info_add_side_data( + const AVEncryptionInitInfo *info, size_t *side_data_size); + +#endif /* AVUTIL_ENCRYPTION_INFO_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/error.h b/third_party/ffmpeg/uos/amd64/include/libavutil/error.h new file mode 100644 index 00000000..0d3269aa --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/error.h @@ -0,0 +1,128 @@ +/* + * 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 + */ + +/** + * @file + * error code definitions + */ + +#ifndef AVUTIL_ERROR_H +#define AVUTIL_ERROR_H + +#include +#include + +#include "macros.h" + +/** + * @addtogroup lavu_error + * + * @{ + */ + + +/* error handling */ +#if EDOM > 0 +#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions. +#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value. +#else +/* Some platforms have E* and errno already negated. */ +#define AVERROR(e) (e) +#define AVUNERROR(e) (e) +#endif + +#define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d)) + +#define AVERROR_BSF_NOT_FOUND FFERRTAG(0xF8,'B','S','F') ///< Bitstream filter not found +#define AVERROR_BUG FFERRTAG( 'B','U','G','!') ///< Internal bug, also see AVERROR_BUG2 +#define AVERROR_BUFFER_TOO_SMALL FFERRTAG( 'B','U','F','S') ///< Buffer too small +#define AVERROR_DECODER_NOT_FOUND FFERRTAG(0xF8,'D','E','C') ///< Decoder not found +#define AVERROR_DEMUXER_NOT_FOUND FFERRTAG(0xF8,'D','E','M') ///< Demuxer not found +#define AVERROR_ENCODER_NOT_FOUND FFERRTAG(0xF8,'E','N','C') ///< Encoder not found +#define AVERROR_EOF FFERRTAG( 'E','O','F',' ') ///< End of file +#define AVERROR_EXIT FFERRTAG( 'E','X','I','T') ///< Immediate exit was requested; the called function should not be restarted +#define AVERROR_EXTERNAL FFERRTAG( 'E','X','T',' ') ///< Generic error in an external library +#define AVERROR_FILTER_NOT_FOUND FFERRTAG(0xF8,'F','I','L') ///< Filter not found +#define AVERROR_INVALIDDATA FFERRTAG( 'I','N','D','A') ///< Invalid data found when processing input +#define AVERROR_MUXER_NOT_FOUND FFERRTAG(0xF8,'M','U','X') ///< Muxer not found +#define AVERROR_OPTION_NOT_FOUND FFERRTAG(0xF8,'O','P','T') ///< Option not found +#define AVERROR_PATCHWELCOME FFERRTAG( 'P','A','W','E') ///< Not yet implemented in FFmpeg, patches welcome +#define AVERROR_PROTOCOL_NOT_FOUND FFERRTAG(0xF8,'P','R','O') ///< Protocol not found + +#define AVERROR_STREAM_NOT_FOUND FFERRTAG(0xF8,'S','T','R') ///< Stream not found +/** + * This is semantically identical to AVERROR_BUG + * it has been introduced in Libav after our AVERROR_BUG and with a modified value. + */ +#define AVERROR_BUG2 FFERRTAG( 'B','U','G',' ') +#define AVERROR_UNKNOWN FFERRTAG( 'U','N','K','N') ///< Unknown error, typically from an external library +#define AVERROR_EXPERIMENTAL (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it. +#define AVERROR_INPUT_CHANGED (-0x636e6701) ///< Input changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_OUTPUT_CHANGED) +#define AVERROR_OUTPUT_CHANGED (-0x636e6702) ///< Output changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_INPUT_CHANGED) +/* HTTP & RTSP errors */ +#define AVERROR_HTTP_BAD_REQUEST FFERRTAG(0xF8,'4','0','0') +#define AVERROR_HTTP_UNAUTHORIZED FFERRTAG(0xF8,'4','0','1') +#define AVERROR_HTTP_FORBIDDEN FFERRTAG(0xF8,'4','0','3') +#define AVERROR_HTTP_NOT_FOUND FFERRTAG(0xF8,'4','0','4') +#define AVERROR_HTTP_OTHER_4XX FFERRTAG(0xF8,'4','X','X') +#define AVERROR_HTTP_SERVER_ERROR FFERRTAG(0xF8,'5','X','X') + +#define AV_ERROR_MAX_STRING_SIZE 64 + +/** + * Put a description of the AVERROR code errnum in errbuf. + * In case of failure the global variable errno is set to indicate the + * error. Even in case of failure av_strerror() will print a generic + * error message indicating the errnum provided to errbuf. + * + * @param errnum error code to describe + * @param errbuf buffer to which description is written + * @param errbuf_size the size in bytes of errbuf + * @return 0 on success, a negative value if a description for errnum + * cannot be found + */ +int av_strerror(int errnum, char *errbuf, size_t errbuf_size); + +/** + * Fill the provided buffer with a string containing an error string + * corresponding to the AVERROR code errnum. + * + * @param errbuf a buffer + * @param errbuf_size size in bytes of errbuf + * @param errnum error code to describe + * @return the buffer in input, filled with the error description + * @see av_strerror() + */ +static inline char *av_make_error_string(char *errbuf, size_t errbuf_size, int errnum) +{ + av_strerror(errnum, errbuf, errbuf_size); + return errbuf; +} + +/** + * Convenience macro, the return value should be used only directly in + * function arguments but never stand-alone. + */ +#define av_err2str(errnum) \ + av_make_error_string((char[AV_ERROR_MAX_STRING_SIZE]){0}, AV_ERROR_MAX_STRING_SIZE, errnum) + +/** + * @} + */ + +#endif /* AVUTIL_ERROR_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/eval.h b/third_party/ffmpeg/uos/amd64/include/libavutil/eval.h new file mode 100644 index 00000000..57afc2d5 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/eval.h @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2002 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * simple arithmetic expression evaluator + */ + +#ifndef AVUTIL_EVAL_H +#define AVUTIL_EVAL_H + +typedef struct AVExpr AVExpr; + +/** + * Parse and evaluate an expression. + * Note, this is significantly slower than av_expr_eval(). + * + * @param res a pointer to a double where is put the result value of + * the expression, or NAN in case of error + * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" + * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} + * @param const_values a zero terminated array of values for the identifiers from const_names + * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers + * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument + * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers + * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments + * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 + * @param log_ctx parent logging context + * @return >= 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_expr_parse_and_eval(double *res, const char *s, + const char * const *const_names, const double *const_values, + const char * const *func1_names, double (* const *funcs1)(void *, double), + const char * const *func2_names, double (* const *funcs2)(void *, double, double), + void *opaque, int log_offset, void *log_ctx); + +/** + * Parse an expression. + * + * @param expr a pointer where is put an AVExpr containing the parsed + * value in case of successful parsing, or NULL otherwise. + * The pointed to AVExpr must be freed with av_expr_free() by the user + * when it is not needed anymore. + * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" + * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} + * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers + * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument + * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers + * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments + * @param log_ctx parent logging context + * @return >= 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_expr_parse(AVExpr **expr, const char *s, + const char * const *const_names, + const char * const *func1_names, double (* const *funcs1)(void *, double), + const char * const *func2_names, double (* const *funcs2)(void *, double, double), + int log_offset, void *log_ctx); + +/** + * Evaluate a previously parsed expression. + * + * @param const_values a zero terminated array of values for the identifiers from av_expr_parse() const_names + * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 + * @return the value of the expression + */ +double av_expr_eval(AVExpr *e, const double *const_values, void *opaque); + +/** + * Track the presence of variables and their number of occurrences in a parsed expression + * + * @param counter a zero-initialized array where the count of each variable will be stored + * @param size size of array + * @return 0 on success, a negative value indicates that no expression or array was passed + * or size was zero + */ +int av_expr_count_vars(AVExpr *e, unsigned *counter, int size); + +/** + * Track the presence of user provided functions and their number of occurrences + * in a parsed expression. + * + * @param counter a zero-initialized array where the count of each function will be stored + * if you passed 5 functions with 2 arguments to av_expr_parse() + * then for arg=2 this will use upto 5 entries. + * @param size size of array + * @param arg number of arguments the counted functions have + * @return 0 on success, a negative value indicates that no expression or array was passed + * or size was zero + */ +int av_expr_count_func(AVExpr *e, unsigned *counter, int size, int arg); + +/** + * Free a parsed expression previously created with av_expr_parse(). + */ +void av_expr_free(AVExpr *e); + +/** + * Parse the string in numstr and return its value as a double. If + * the string is empty, contains only whitespaces, or does not contain + * an initial substring that has the expected syntax for a + * floating-point number, no conversion is performed. In this case, + * returns a value of zero and the value returned in tail is the value + * of numstr. + * + * @param numstr a string representing a number, may contain one of + * the International System number postfixes, for example 'K', 'M', + * 'G'. If 'i' is appended after the postfix, powers of 2 are used + * instead of powers of 10. The 'B' postfix multiplies the value by + * 8, and can be appended after another postfix or used alone. This + * allows using for example 'KB', 'MiB', 'G' and 'B' as postfix. + * @param tail if non-NULL puts here the pointer to the char next + * after the last parsed character + */ +double av_strtod(const char *numstr, char **tail); + +#endif /* AVUTIL_EVAL_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/ffversion.h b/third_party/ffmpeg/uos/amd64/include/libavutil/ffversion.h new file mode 100644 index 00000000..fa716392 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/ffversion.h @@ -0,0 +1,5 @@ +/* Automatically generated by version.sh, do not manually edit! */ +#ifndef AVUTIL_FFVERSION_H +#define AVUTIL_FFVERSION_H +#define FFMPEG_VERSION "N-107736-g9e029dc265" +#endif /* AVUTIL_FFVERSION_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/fifo.h b/third_party/ffmpeg/uos/amd64/include/libavutil/fifo.h new file mode 100644 index 00000000..4eed364a --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/fifo.h @@ -0,0 +1,426 @@ +/* + * 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 + */ + +/** + * @file + * a very simple circular buffer FIFO implementation + */ + +#ifndef AVUTIL_FIFO_H +#define AVUTIL_FIFO_H + +#include +#include + +#include "attributes.h" +#include "version.h" + +typedef struct AVFifo AVFifo; + +/** + * Callback for writing or reading from a FIFO, passed to (and invoked from) the + * av_fifo_*_cb() functions. It may be invoked multiple times from a single + * av_fifo_*_cb() call and may process less data than the maximum size indicated + * by nb_elems. + * + * @param opaque the opaque pointer provided to the av_fifo_*_cb() function + * @param buf the buffer for reading or writing the data, depending on which + * av_fifo_*_cb function is called + * @param nb_elems On entry contains the maximum number of elements that can be + * read from / written into buf. On success, the callback should + * update it to contain the number of elements actually written. + * + * @return 0 on success, a negative error code on failure (will be returned from + * the invoking av_fifo_*_cb() function) + */ +typedef int AVFifoCB(void *opaque, void *buf, size_t *nb_elems); + +/** + * Automatically resize the FIFO on writes, so that the data fits. This + * automatic resizing happens up to a limit that can be modified with + * av_fifo_auto_grow_limit(). + */ +#define AV_FIFO_FLAG_AUTO_GROW (1 << 0) + +/** + * Allocate and initialize an AVFifo with a given element size. + * + * @param elems initial number of elements that can be stored in the FIFO + * @param elem_size Size in bytes of a single element. Further operations on + * the returned FIFO will implicitly use this element size. + * @param flags a combination of AV_FIFO_FLAG_* + * + * @return newly-allocated AVFifo on success, a negative error code on failure + */ +AVFifo *av_fifo_alloc2(size_t elems, size_t elem_size, + unsigned int flags); + +/** + * @return Element size for FIFO operations. This element size is set at + * FIFO allocation and remains constant during its lifetime + */ +size_t av_fifo_elem_size(const AVFifo *f); + +/** + * Set the maximum size (in elements) to which the FIFO can be resized + * automatically. Has no effect unless AV_FIFO_FLAG_AUTO_GROW is used. + */ +void av_fifo_auto_grow_limit(AVFifo *f, size_t max_elems); + +/** + * @return number of elements available for reading from the given FIFO. + */ +size_t av_fifo_can_read(const AVFifo *f); + +/** + * @return number of elements that can be written into the given FIFO. + */ +size_t av_fifo_can_write(const AVFifo *f); + +/** + * Enlarge an AVFifo. + * + * On success, the FIFO will be large enough to hold exactly + * inc + av_fifo_can_read() + av_fifo_can_write() + * elements. In case of failure, the old FIFO is kept unchanged. + * + * @param f AVFifo to resize + * @param inc number of elements to allocate for, in addition to the current + * allocated size + * @return a non-negative number on success, a negative error code on failure + */ +int av_fifo_grow2(AVFifo *f, size_t inc); + +/** + * Write data into a FIFO. + * + * In case nb_elems > av_fifo_can_write(f), nothing is written and an error + * is returned. + * + * @param f the FIFO buffer + * @param buf Data to be written. nb_elems * av_fifo_elem_size(f) bytes will be + * read from buf on success. + * @param nb_elems number of elements to write into FIFO + * + * @return a non-negative number on success, a negative error code on failure + */ +int av_fifo_write(AVFifo *f, const void *buf, size_t nb_elems); + +/** + * Write data from a user-provided callback into a FIFO. + * + * @param f the FIFO buffer + * @param read_cb Callback supplying the data to the FIFO. May be called + * multiple times. + * @param opaque opaque user data to be provided to read_cb + * @param nb_elems Should point to the maximum number of elements that can be + * written. Will be updated to contain the number of elements + * actually written. + * + * @return non-negative number on success, a negative error code on failure + */ +int av_fifo_write_from_cb(AVFifo *f, AVFifoCB read_cb, + void *opaque, size_t *nb_elems); + +/** + * Read data from a FIFO. + * + * In case nb_elems > av_fifo_can_read(f), nothing is read and an error + * is returned. + * + * @param f the FIFO buffer + * @param buf Buffer to store the data. nb_elems * av_fifo_elem_size(f) bytes + * will be written into buf on success. + * @param nb_elems number of elements to read from FIFO + * + * @return a non-negative number on success, a negative error code on failure + */ +int av_fifo_read(AVFifo *f, void *buf, size_t nb_elems); + +/** + * Feed data from a FIFO into a user-provided callback. + * + * @param f the FIFO buffer + * @param write_cb Callback the data will be supplied to. May be called + * multiple times. + * @param opaque opaque user data to be provided to write_cb + * @param nb_elems Should point to the maximum number of elements that can be + * read. Will be updated to contain the total number of elements + * actually sent to the callback. + * + * @return non-negative number on success, a negative error code on failure + */ +int av_fifo_read_to_cb(AVFifo *f, AVFifoCB write_cb, + void *opaque, size_t *nb_elems); + +/** + * Read data from a FIFO without modifying FIFO state. + * + * Returns an error if an attempt is made to peek to nonexistent elements + * (i.e. if offset + nb_elems is larger than av_fifo_can_read(f)). + * + * @param f the FIFO buffer + * @param buf Buffer to store the data. nb_elems * av_fifo_elem_size(f) bytes + * will be written into buf. + * @param nb_elems number of elements to read from FIFO + * @param offset number of initial elements to skip. + * + * @return a non-negative number on success, a negative error code on failure + */ +int av_fifo_peek(AVFifo *f, void *buf, size_t nb_elems, size_t offset); + +/** + * Feed data from a FIFO into a user-provided callback. + * + * @param f the FIFO buffer + * @param write_cb Callback the data will be supplied to. May be called + * multiple times. + * @param opaque opaque user data to be provided to write_cb + * @param nb_elems Should point to the maximum number of elements that can be + * read. Will be updated to contain the total number of elements + * actually sent to the callback. + * @param offset number of initial elements to skip; offset + *nb_elems must not + * be larger than av_fifo_can_read(f). + * + * @return a non-negative number on success, a negative error code on failure + */ +int av_fifo_peek_to_cb(AVFifo *f, AVFifoCB write_cb, void *opaque, + size_t *nb_elems, size_t offset); + +/** + * Discard the specified amount of data from an AVFifo. + * @param size number of elements to discard, MUST NOT be larger than + * av_fifo_can_read(f) + */ +void av_fifo_drain2(AVFifo *f, size_t size); + +/* + * Empty the AVFifo. + * @param f AVFifo to reset + */ +void av_fifo_reset2(AVFifo *f); + +/** + * Free an AVFifo and reset pointer to NULL. + * @param f Pointer to an AVFifo to free. *f == NULL is allowed. + */ +void av_fifo_freep2(AVFifo **f); + + +#if FF_API_FIFO_OLD_API +typedef struct AVFifoBuffer { + uint8_t *buffer; + uint8_t *rptr, *wptr, *end; + uint32_t rndx, wndx; +} AVFifoBuffer; + +/** + * Initialize an AVFifoBuffer. + * @param size of FIFO + * @return AVFifoBuffer or NULL in case of memory allocation failure + * @deprecated use av_fifo_alloc2() + */ +attribute_deprecated +AVFifoBuffer *av_fifo_alloc(unsigned int size); + +/** + * Initialize an AVFifoBuffer. + * @param nmemb number of elements + * @param size size of the single element + * @return AVFifoBuffer or NULL in case of memory allocation failure + * @deprecated use av_fifo_alloc2() + */ +attribute_deprecated +AVFifoBuffer *av_fifo_alloc_array(size_t nmemb, size_t size); + +/** + * Free an AVFifoBuffer. + * @param f AVFifoBuffer to free + * @deprecated use the AVFifo API with av_fifo_freep2() + */ +attribute_deprecated +void av_fifo_free(AVFifoBuffer *f); + +/** + * Free an AVFifoBuffer and reset pointer to NULL. + * @param f AVFifoBuffer to free + * @deprecated use the AVFifo API with av_fifo_freep2() + */ +attribute_deprecated +void av_fifo_freep(AVFifoBuffer **f); + +/** + * Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied. + * @param f AVFifoBuffer to reset + * @deprecated use av_fifo_reset2() with the new AVFifo-API + */ +attribute_deprecated +void av_fifo_reset(AVFifoBuffer *f); + +/** + * Return the amount of data in bytes in the AVFifoBuffer, that is the + * amount of data you can read from it. + * @param f AVFifoBuffer to read from + * @return size + * @deprecated use av_fifo_can_read() with the new AVFifo-API + */ +attribute_deprecated +int av_fifo_size(const AVFifoBuffer *f); + +/** + * Return the amount of space in bytes in the AVFifoBuffer, that is the + * amount of data you can write into it. + * @param f AVFifoBuffer to write into + * @return size + * @deprecated use av_fifo_can_write() with the new AVFifo-API + */ +attribute_deprecated +int av_fifo_space(const AVFifoBuffer *f); + +/** + * Feed data at specific position from an AVFifoBuffer to a user-supplied callback. + * Similar as av_fifo_gereric_read but without discarding data. + * @param f AVFifoBuffer to read from + * @param offset offset from current read position + * @param buf_size number of bytes to read + * @param func generic read function + * @param dest data destination + * + * @return a non-negative number on success, a negative error code on failure + * + * @deprecated use the new AVFifo-API with av_fifo_peek() when func == NULL, + * av_fifo_peek_to_cb() otherwise + */ +attribute_deprecated +int av_fifo_generic_peek_at(AVFifoBuffer *f, void *dest, int offset, int buf_size, void (*func)(void*, void*, int)); + +/** + * Feed data from an AVFifoBuffer to a user-supplied callback. + * Similar as av_fifo_gereric_read but without discarding data. + * @param f AVFifoBuffer to read from + * @param buf_size number of bytes to read + * @param func generic read function + * @param dest data destination + * + * @return a non-negative number on success, a negative error code on failure + * + * @deprecated use the new AVFifo-API with av_fifo_peek() when func == NULL, + * av_fifo_peek_to_cb() otherwise + */ +attribute_deprecated +int av_fifo_generic_peek(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)); + +/** + * Feed data from an AVFifoBuffer to a user-supplied callback. + * @param f AVFifoBuffer to read from + * @param buf_size number of bytes to read + * @param func generic read function + * @param dest data destination + * + * @return a non-negative number on success, a negative error code on failure + * + * @deprecated use the new AVFifo-API with av_fifo_read() when func == NULL, + * av_fifo_read_to_cb() otherwise + */ +attribute_deprecated +int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)); + +/** + * Feed data from a user-supplied callback to an AVFifoBuffer. + * @param f AVFifoBuffer to write to + * @param src data source; non-const since it may be used as a + * modifiable context by the function defined in func + * @param size number of bytes to write + * @param func generic write function; the first parameter is src, + * the second is dest_buf, the third is dest_buf_size. + * func must return the number of bytes written to dest_buf, or <= 0 to + * indicate no more data available to write. + * If func is NULL, src is interpreted as a simple byte array for source data. + * @return the number of bytes written to the FIFO or a negative error code on failure + * + * @deprecated use the new AVFifo-API with av_fifo_write() when func == NULL, + * av_fifo_write_from_cb() otherwise + */ +attribute_deprecated +int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int)); + +/** + * Resize an AVFifoBuffer. + * In case of reallocation failure, the old FIFO is kept unchanged. + * + * @param f AVFifoBuffer to resize + * @param size new AVFifoBuffer size in bytes + * @return <0 for failure, >=0 otherwise + * + * @deprecated use the new AVFifo-API with av_fifo_grow2() to increase FIFO size, + * decreasing FIFO size is not supported + */ +attribute_deprecated +int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size); + +/** + * Enlarge an AVFifoBuffer. + * In case of reallocation failure, the old FIFO is kept unchanged. + * The new fifo size may be larger than the requested size. + * + * @param f AVFifoBuffer to resize + * @param additional_space the amount of space in bytes to allocate in addition to av_fifo_size() + * @return <0 for failure, >=0 otherwise + * + * @deprecated use the new AVFifo-API with av_fifo_grow2(); note that unlike + * this function it adds to the allocated size, rather than to the used size + */ +attribute_deprecated +int av_fifo_grow(AVFifoBuffer *f, unsigned int additional_space); + +/** + * Read and discard the specified amount of data from an AVFifoBuffer. + * @param f AVFifoBuffer to read from + * @param size amount of data to read in bytes + * + * @deprecated use the new AVFifo-API with av_fifo_drain2() + */ +attribute_deprecated +void av_fifo_drain(AVFifoBuffer *f, int size); + +#if FF_API_FIFO_PEEK2 +/** + * Return a pointer to the data stored in a FIFO buffer at a certain offset. + * The FIFO buffer is not modified. + * + * @param f AVFifoBuffer to peek at, f must be non-NULL + * @param offs an offset in bytes, its absolute value must be less + * than the used buffer size or the returned pointer will + * point outside to the buffer data. + * The used buffer size can be checked with av_fifo_size(). + * @deprecated use the new AVFifo-API with av_fifo_peek() or av_fifo_peek_to_cb() + */ +attribute_deprecated +static inline uint8_t *av_fifo_peek2(const AVFifoBuffer *f, int offs) +{ + uint8_t *ptr = f->rptr + offs; + if (ptr >= f->end) + ptr = f->buffer + (ptr - f->end); + else if (ptr < f->buffer) + ptr = f->end - (f->buffer - ptr); + return ptr; +} +#endif +#endif + +#endif /* AVUTIL_FIFO_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/file.h b/third_party/ffmpeg/uos/amd64/include/libavutil/file.h new file mode 100644 index 00000000..8ec210e7 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/file.h @@ -0,0 +1,72 @@ +/* + * 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 AVUTIL_FILE_H +#define AVUTIL_FILE_H + +#include +#include + +#include "attributes.h" + +/** + * @file + * Misc file utilities. + */ + +/** + * Read the file with name filename, and put its content in a newly + * allocated buffer or map it with mmap() when available. + * In case of success set *bufptr to the read or mmapped buffer, and + * *size to the size in bytes of the buffer in *bufptr. + * Unlike mmap this function succeeds with zero sized files, in this + * case *bufptr will be set to NULL and *size will be set to 0. + * The returned buffer must be released with av_file_unmap(). + * + * @param log_offset loglevel offset used for logging + * @param log_ctx context used for logging + * @return a non negative number in case of success, a negative value + * corresponding to an AVERROR error code in case of failure + */ +av_warn_unused_result +int av_file_map(const char *filename, uint8_t **bufptr, size_t *size, + int log_offset, void *log_ctx); + +/** + * Unmap or free the buffer bufptr created by av_file_map(). + * + * @param size size in bytes of bufptr, must be the same as returned + * by av_file_map() + */ +void av_file_unmap(uint8_t *bufptr, size_t size); + +/** + * Wrapper to work around the lack of mkstemp() on mingw. + * Also, tries to create file in /tmp first, if possible. + * *prefix can be a character constant; *filename will be allocated internally. + * @return file descriptor of opened file (or negative value corresponding to an + * AVERROR code on error) + * and opened file name in **filename. + * @note On very old libcs it is necessary to set a secure umask before + * calling this, av_tempfile() can't call umask itself as it is used in + * libraries and could interfere with the calling application. + * @deprecated as fd numbers cannot be passed saftely between libs on some platforms + */ +int av_tempfile(const char *prefix, char **filename, int log_offset, void *log_ctx); + +#endif /* AVUTIL_FILE_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/film_grain_params.h b/third_party/ffmpeg/uos/amd64/include/libavutil/film_grain_params.h new file mode 100644 index 00000000..f3bd0a4a --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/film_grain_params.h @@ -0,0 +1,260 @@ +/* + * 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 AVUTIL_FILM_GRAIN_PARAMS_H +#define AVUTIL_FILM_GRAIN_PARAMS_H + +#include "frame.h" + +enum AVFilmGrainParamsType { + AV_FILM_GRAIN_PARAMS_NONE = 0, + + /** + * The union is valid when interpreted as AVFilmGrainAOMParams (codec.aom) + */ + AV_FILM_GRAIN_PARAMS_AV1, + + /** + * The union is valid when interpreted as AVFilmGrainH274Params (codec.h274) + */ + AV_FILM_GRAIN_PARAMS_H274, +}; + +/** + * This structure describes how to handle film grain synthesis for AOM codecs. + * + * @note The struct must be allocated as part of AVFilmGrainParams using + * av_film_grain_params_alloc(). Its size is not a part of the public ABI. + */ +typedef struct AVFilmGrainAOMParams { + /** + * Number of points, and the scale and value for each point of the + * piecewise linear scaling function for the uma plane. + */ + int num_y_points; + uint8_t y_points[14][2 /* value, scaling */]; + + /** + * Signals whether to derive the chroma scaling function from the luma. + * Not equivalent to copying the luma values and scales. + */ + int chroma_scaling_from_luma; + + /** + * If chroma_scaling_from_luma is set to 0, signals the chroma scaling + * function parameters. + */ + int num_uv_points[2 /* cb, cr */]; + uint8_t uv_points[2 /* cb, cr */][10][2 /* value, scaling */]; + + /** + * Specifies the shift applied to the chroma components. For AV1, its within + * [8; 11] and determines the range and quantization of the film grain. + */ + int scaling_shift; + + /** + * Specifies the auto-regression lag. + */ + int ar_coeff_lag; + + /** + * Luma auto-regression coefficients. The number of coefficients is given by + * 2 * ar_coeff_lag * (ar_coeff_lag + 1). + */ + int8_t ar_coeffs_y[24]; + + /** + * Chroma auto-regression coefficients. The number of coefficients is given by + * 2 * ar_coeff_lag * (ar_coeff_lag + 1) + !!num_y_points. + */ + int8_t ar_coeffs_uv[2 /* cb, cr */][25]; + + /** + * Specifies the range of the auto-regressive coefficients. Values of 6, + * 7, 8 and so on represent a range of [-2, 2), [-1, 1), [-0.5, 0.5) and + * so on. For AV1 must be between 6 and 9. + */ + int ar_coeff_shift; + + /** + * Signals the down shift applied to the generated gaussian numbers during + * synthesis. + */ + int grain_scale_shift; + + /** + * Specifies the luma/chroma multipliers for the index to the component + * scaling function. + */ + int uv_mult[2 /* cb, cr */]; + int uv_mult_luma[2 /* cb, cr */]; + + /** + * Offset used for component scaling function. For AV1 its a 9-bit value + * with a range [-256, 255] + */ + int uv_offset[2 /* cb, cr */]; + + /** + * Signals whether to overlap film grain blocks. + */ + int overlap_flag; + + /** + * Signals to clip to limited color levels after film grain application. + */ + int limit_output_range; +} AVFilmGrainAOMParams; + +/** + * This structure describes how to handle film grain synthesis for codecs using + * the ITU-T H.274 Versatile suplemental enhancement information message. + * + * @note The struct must be allocated as part of AVFilmGrainParams using + * av_film_grain_params_alloc(). Its size is not a part of the public ABI. + */ +typedef struct AVFilmGrainH274Params { + /** + * Specifies the film grain simulation mode. + * 0 = Frequency filtering, 1 = Auto-regression + */ + int model_id; + + /** + * Specifies the bit depth used for the luma component. + */ + int bit_depth_luma; + + /** + * Specifies the bit depth used for the chroma components. + */ + int bit_depth_chroma; + + enum AVColorRange color_range; + enum AVColorPrimaries color_primaries; + enum AVColorTransferCharacteristic color_trc; + enum AVColorSpace color_space; + + /** + * Specifies the blending mode used to blend the simulated film grain + * with the decoded images. + * + * 0 = Additive, 1 = Multiplicative + */ + int blending_mode_id; + + /** + * Specifies a scale factor used in the film grain characterization equations. + */ + int log2_scale_factor; + + /** + * Indicates if the modelling of film grain for a given component is present. + */ + int component_model_present[3 /* y, cb, cr */]; + + /** + * Specifies the number of intensity intervals for which a specific set of + * model values has been estimated, with a range of [1, 256]. + */ + uint16_t num_intensity_intervals[3 /* y, cb, cr */]; + + /** + * Specifies the number of model values present for each intensity interval + * in which the film grain has been modelled, with a range of [1, 6]. + */ + uint8_t num_model_values[3 /* y, cb, cr */]; + + /** + * Specifies the lower ounds of each intensity interval for whichthe set of + * model values applies for the component. + */ + uint8_t intensity_interval_lower_bound[3 /* y, cb, cr */][256 /* intensity interval */]; + + /** + * Specifies the upper bound of each intensity interval for which the set of + * model values applies for the component. + */ + uint8_t intensity_interval_upper_bound[3 /* y, cb, cr */][256 /* intensity interval */]; + + /** + * Specifies the model values for the component for each intensity interval. + * - When model_id == 0, the following applies: + * For comp_model_value[y], the range of values is [0, 2^bit_depth_luma - 1] + * For comp_model_value[cb..cr], the range of values is [0, 2^bit_depth_chroma - 1] + * - Otherwise, the following applies: + * For comp_model_value[y], the range of values is [-2^(bit_depth_luma - 1), 2^(bit_depth_luma - 1) - 1] + * For comp_model_value[cb..cr], the range of values is [-2^(bit_depth_chroma - 1), 2^(bit_depth_chroma - 1) - 1] + */ + int16_t comp_model_value[3 /* y, cb, cr */][256 /* intensity interval */][6 /* model value */]; +} AVFilmGrainH274Params; + +/** + * This structure describes how to handle film grain synthesis in video + * for specific codecs. Must be present on every frame where film grain is + * meant to be synthesised for correct presentation. + * + * @note The struct must be allocated with av_film_grain_params_alloc() and + * its size is not a part of the public ABI. + */ +typedef struct AVFilmGrainParams { + /** + * Specifies the codec for which this structure is valid. + */ + enum AVFilmGrainParamsType type; + + /** + * Seed to use for the synthesis process, if the codec allows for it. + * + * @note For H.264, this refers to `pic_offset` as defined in + * SMPTE RDD 5-2006. + */ + uint64_t seed; + + /** + * Additional fields may be added both here and in any structure included. + * If a codec's film grain structure differs slightly over another + * codec's, fields within may change meaning depending on the type. + */ + union { + AVFilmGrainAOMParams aom; + AVFilmGrainH274Params h274; + } codec; +} AVFilmGrainParams; + +/** + * Allocate an AVFilmGrainParams structure and set its fields to + * default values. The resulting struct can be freed using av_freep(). + * If size is not NULL it will be set to the number of bytes allocated. + * + * @return An AVFilmGrainParams filled with default values or NULL + * on failure. + */ +AVFilmGrainParams *av_film_grain_params_alloc(size_t *size); + +/** + * Allocate a complete AVFilmGrainParams and add it to the frame. + * + * @param frame The frame which side data is added to. + * + * @return The AVFilmGrainParams structure to be filled by caller. + */ +AVFilmGrainParams *av_film_grain_params_create_side_data(AVFrame *frame); + +#endif /* AVUTIL_FILM_GRAIN_PARAMS_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/frame.h b/third_party/ffmpeg/uos/amd64/include/libavutil/frame.h new file mode 100644 index 00000000..6d9563bc --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/frame.h @@ -0,0 +1,958 @@ +/* + * 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 + */ + +/** + * @file + * @ingroup lavu_frame + * reference-counted frame API + */ + +#ifndef AVUTIL_FRAME_H +#define AVUTIL_FRAME_H + +#include +#include + +#include "avutil.h" +#include "buffer.h" +#include "channel_layout.h" +#include "dict.h" +#include "rational.h" +#include "samplefmt.h" +#include "pixfmt.h" +#include "version.h" + + +/** + * @defgroup lavu_frame AVFrame + * @ingroup lavu_data + * + * @{ + * AVFrame is an abstraction for reference-counted raw multimedia data. + */ + +enum AVFrameSideDataType { + /** + * The data is the AVPanScan struct defined in libavcodec. + */ + AV_FRAME_DATA_PANSCAN, + /** + * ATSC A53 Part 4 Closed Captions. + * A53 CC bitstream is stored as uint8_t in AVFrameSideData.data. + * The number of bytes of CC data is AVFrameSideData.size. + */ + AV_FRAME_DATA_A53_CC, + /** + * Stereoscopic 3d metadata. + * The data is the AVStereo3D struct defined in libavutil/stereo3d.h. + */ + AV_FRAME_DATA_STEREO3D, + /** + * The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h. + */ + AV_FRAME_DATA_MATRIXENCODING, + /** + * Metadata relevant to a downmix procedure. + * The data is the AVDownmixInfo struct defined in libavutil/downmix_info.h. + */ + AV_FRAME_DATA_DOWNMIX_INFO, + /** + * ReplayGain information in the form of the AVReplayGain struct. + */ + AV_FRAME_DATA_REPLAYGAIN, + /** + * This side data contains a 3x3 transformation matrix describing an affine + * transformation that needs to be applied to the frame for correct + * presentation. + * + * See libavutil/display.h for a detailed description of the data. + */ + AV_FRAME_DATA_DISPLAYMATRIX, + /** + * Active Format Description data consisting of a single byte as specified + * in ETSI TS 101 154 using AVActiveFormatDescription enum. + */ + AV_FRAME_DATA_AFD, + /** + * Motion vectors exported by some codecs (on demand through the export_mvs + * flag set in the libavcodec AVCodecContext flags2 option). + * The data is the AVMotionVector struct defined in + * libavutil/motion_vector.h. + */ + AV_FRAME_DATA_MOTION_VECTORS, + /** + * Recommmends skipping the specified number of samples. This is exported + * only if the "skip_manual" AVOption is set in libavcodec. + * This has the same format as AV_PKT_DATA_SKIP_SAMPLES. + * @code + * u32le number of samples to skip from start of this packet + * u32le number of samples to skip from end of this packet + * u8 reason for start skip + * u8 reason for end skip (0=padding silence, 1=convergence) + * @endcode + */ + AV_FRAME_DATA_SKIP_SAMPLES, + /** + * This side data must be associated with an audio frame and corresponds to + * enum AVAudioServiceType defined in avcodec.h. + */ + AV_FRAME_DATA_AUDIO_SERVICE_TYPE, + /** + * Mastering display metadata associated with a video frame. The payload is + * an AVMasteringDisplayMetadata type and contains information about the + * mastering display color volume. + */ + AV_FRAME_DATA_MASTERING_DISPLAY_METADATA, + /** + * The GOP timecode in 25 bit timecode format. Data format is 64-bit integer. + * This is set on the first frame of a GOP that has a temporal reference of 0. + */ + AV_FRAME_DATA_GOP_TIMECODE, + + /** + * The data represents the AVSphericalMapping structure defined in + * libavutil/spherical.h. + */ + AV_FRAME_DATA_SPHERICAL, + + /** + * Content light level (based on CTA-861.3). This payload contains data in + * the form of the AVContentLightMetadata struct. + */ + AV_FRAME_DATA_CONTENT_LIGHT_LEVEL, + + /** + * The data contains an ICC profile as an opaque octet buffer following the + * format described by ISO 15076-1 with an optional name defined in the + * metadata key entry "name". + */ + AV_FRAME_DATA_ICC_PROFILE, + + /** + * Timecode which conforms to SMPTE ST 12-1. The data is an array of 4 uint32_t + * where the first uint32_t describes how many (1-3) of the other timecodes are used. + * The timecode format is described in the documentation of av_timecode_get_smpte_from_framenum() + * function in libavutil/timecode.h. + */ + AV_FRAME_DATA_S12M_TIMECODE, + + /** + * HDR dynamic metadata associated with a video frame. The payload is + * an AVDynamicHDRPlus type and contains information for color + * volume transform - application 4 of SMPTE 2094-40:2016 standard. + */ + AV_FRAME_DATA_DYNAMIC_HDR_PLUS, + + /** + * Regions Of Interest, the data is an array of AVRegionOfInterest type, the number of + * array element is implied by AVFrameSideData.size / AVRegionOfInterest.self_size. + */ + AV_FRAME_DATA_REGIONS_OF_INTEREST, + + /** + * Encoding parameters for a video frame, as described by AVVideoEncParams. + */ + AV_FRAME_DATA_VIDEO_ENC_PARAMS, + + /** + * User data unregistered metadata associated with a video frame. + * This is the H.26[45] UDU SEI message, and shouldn't be used for any other purpose + * The data is stored as uint8_t in AVFrameSideData.data which is 16 bytes of + * uuid_iso_iec_11578 followed by AVFrameSideData.size - 16 bytes of user_data_payload_byte. + */ + AV_FRAME_DATA_SEI_UNREGISTERED, + + /** + * Film grain parameters for a frame, described by AVFilmGrainParams. + * Must be present for every frame which should have film grain applied. + */ + AV_FRAME_DATA_FILM_GRAIN_PARAMS, + + /** + * Bounding boxes for object detection and classification, + * as described by AVDetectionBBoxHeader. + */ + AV_FRAME_DATA_DETECTION_BBOXES, + + /** + * Dolby Vision RPU raw data, suitable for passing to x265 + * or other libraries. Array of uint8_t, with NAL emulation + * bytes intact. + */ + AV_FRAME_DATA_DOVI_RPU_BUFFER, + + /** + * Parsed Dolby Vision metadata, suitable for passing to a software + * implementation. The payload is the AVDOVIMetadata struct defined in + * libavutil/dovi_meta.h. + */ + AV_FRAME_DATA_DOVI_METADATA, + + /** + * HDR Vivid dynamic metadata associated with a video frame. The payload is + * an AVDynamicHDRVivid type and contains information for color + * volume transform - CUVA 005.1-2021. + */ + AV_FRAME_DATA_DYNAMIC_HDR_VIVID, +}; + +enum AVActiveFormatDescription { + AV_AFD_SAME = 8, + AV_AFD_4_3 = 9, + AV_AFD_16_9 = 10, + AV_AFD_14_9 = 11, + AV_AFD_4_3_SP_14_9 = 13, + AV_AFD_16_9_SP_14_9 = 14, + AV_AFD_SP_4_3 = 15, +}; + + +/** + * Structure to hold side data for an AVFrame. + * + * sizeof(AVFrameSideData) is not a part of the public ABI, so new fields may be added + * to the end with a minor bump. + */ +typedef struct AVFrameSideData { + enum AVFrameSideDataType type; + uint8_t *data; + size_t size; + AVDictionary *metadata; + AVBufferRef *buf; +} AVFrameSideData; + +/** + * Structure describing a single Region Of Interest. + * + * When multiple regions are defined in a single side-data block, they + * should be ordered from most to least important - some encoders are only + * capable of supporting a limited number of distinct regions, so will have + * to truncate the list. + * + * When overlapping regions are defined, the first region containing a given + * area of the frame applies. + */ +typedef struct AVRegionOfInterest { + /** + * Must be set to the size of this data structure (that is, + * sizeof(AVRegionOfInterest)). + */ + uint32_t self_size; + /** + * Distance in pixels from the top edge of the frame to the top and + * bottom edges and from the left edge of the frame to the left and + * right edges of the rectangle defining this region of interest. + * + * The constraints on a region are encoder dependent, so the region + * actually affected may be slightly larger for alignment or other + * reasons. + */ + int top; + int bottom; + int left; + int right; + /** + * Quantisation offset. + * + * Must be in the range -1 to +1. A value of zero indicates no quality + * change. A negative value asks for better quality (less quantisation), + * while a positive value asks for worse quality (greater quantisation). + * + * The range is calibrated so that the extreme values indicate the + * largest possible offset - if the rest of the frame is encoded with the + * worst possible quality, an offset of -1 indicates that this region + * should be encoded with the best possible quality anyway. Intermediate + * values are then interpolated in some codec-dependent way. + * + * For example, in 10-bit H.264 the quantisation parameter varies between + * -12 and 51. A typical qoffset value of -1/10 therefore indicates that + * this region should be encoded with a QP around one-tenth of the full + * range better than the rest of the frame. So, if most of the frame + * were to be encoded with a QP of around 30, this region would get a QP + * of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3). + * An extreme value of -1 would indicate that this region should be + * encoded with the best possible quality regardless of the treatment of + * the rest of the frame - that is, should be encoded at a QP of -12. + */ + AVRational qoffset; +} AVRegionOfInterest; + +/** + * This structure describes decoded (raw) audio or video data. + * + * AVFrame must be allocated using av_frame_alloc(). Note that this only + * allocates the AVFrame itself, the buffers for the data must be managed + * through other means (see below). + * AVFrame must be freed with av_frame_free(). + * + * AVFrame is typically allocated once and then reused multiple times to hold + * different data (e.g. a single AVFrame to hold frames received from a + * decoder). In such a case, av_frame_unref() will free any references held by + * the frame and reset it to its original clean state before it + * is reused again. + * + * The data described by an AVFrame is usually reference counted through the + * AVBuffer API. The underlying buffer references are stored in AVFrame.buf / + * AVFrame.extended_buf. An AVFrame is considered to be reference counted if at + * least one reference is set, i.e. if AVFrame.buf[0] != NULL. In such a case, + * every single data plane must be contained in one of the buffers in + * AVFrame.buf or AVFrame.extended_buf. + * There may be a single buffer for all the data, or one separate buffer for + * each plane, or anything in between. + * + * sizeof(AVFrame) is not a part of the public ABI, so new fields may be added + * to the end with a minor bump. + * + * Fields can be accessed through AVOptions, the name string used, matches the + * C structure field name for fields accessible through AVOptions. The AVClass + * for AVFrame can be obtained from avcodec_get_frame_class() + */ +typedef struct AVFrame { +#define AV_NUM_DATA_POINTERS 8 + /** + * pointer to the picture/channel planes. + * This might be different from the first allocated byte. For video, + * it could even point to the end of the image data. + * + * All pointers in data and extended_data must point into one of the + * AVBufferRef in buf or extended_buf. + * + * Some decoders access areas outside 0,0 - width,height, please + * see avcodec_align_dimensions2(). Some filters and swscale can read + * up to 16 bytes beyond the planes, if these filters are to be used, + * then 16 extra bytes must be allocated. + * + * NOTE: Pointers not needed by the format MUST be set to NULL. + * + * @attention In case of video, the data[] pointers can point to the + * end of image data in order to reverse line order, when used in + * combination with negative values in the linesize[] array. + */ + uint8_t *data[AV_NUM_DATA_POINTERS]; + + /** + * For video, a positive or negative value, which is typically indicating + * the size in bytes of each picture line, but it can also be: + * - the negative byte size of lines for vertical flipping + * (with data[n] pointing to the end of the data + * - a positive or negative multiple of the byte size as for accessing + * even and odd fields of a frame (possibly flipped) + * + * For audio, only linesize[0] may be set. For planar audio, each channel + * plane must be the same size. + * + * For video the linesizes should be multiples of the CPUs alignment + * preference, this is 16 or 32 for modern desktop CPUs. + * Some code requires such alignment other code can be slower without + * correct alignment, for yet other it makes no difference. + * + * @note The linesize may be larger than the size of usable data -- there + * may be extra padding present for performance reasons. + * + * @attention In case of video, line size values can be negative to achieve + * a vertically inverted iteration over image lines. + */ + int linesize[AV_NUM_DATA_POINTERS]; + + /** + * pointers to the data planes/channels. + * + * For video, this should simply point to data[]. + * + * For planar audio, each channel has a separate data pointer, and + * linesize[0] contains the size of each channel buffer. + * For packed audio, there is just one data pointer, and linesize[0] + * contains the total size of the buffer for all channels. + * + * Note: Both data and extended_data should always be set in a valid frame, + * but for planar audio with more channels that can fit in data, + * extended_data must be used in order to access all channels. + */ + uint8_t **extended_data; + + /** + * @name Video dimensions + * Video frames only. The coded dimensions (in pixels) of the video frame, + * i.e. the size of the rectangle that contains some well-defined values. + * + * @note The part of the frame intended for display/presentation is further + * restricted by the @ref cropping "Cropping rectangle". + * @{ + */ + int width, height; + /** + * @} + */ + + /** + * number of audio samples (per channel) described by this frame + */ + int nb_samples; + + /** + * format of the frame, -1 if unknown or unset + * Values correspond to enum AVPixelFormat for video frames, + * enum AVSampleFormat for audio) + */ + int format; + + /** + * 1 -> keyframe, 0-> not + */ + int key_frame; + + /** + * Picture type of the frame. + */ + enum AVPictureType pict_type; + + /** + * Sample aspect ratio for the video frame, 0/1 if unknown/unspecified. + */ + AVRational sample_aspect_ratio; + + /** + * Presentation timestamp in time_base units (time when frame should be shown to user). + */ + int64_t pts; + + /** + * DTS copied from the AVPacket that triggered returning this frame. (if frame threading isn't used) + * This is also the Presentation time of this AVFrame calculated from + * only AVPacket.dts values without pts values. + */ + int64_t pkt_dts; + + /** + * Time base for the timestamps in this frame. + * In the future, this field may be set on frames output by decoders or + * filters, but its value will be by default ignored on input to encoders + * or filters. + */ + AVRational time_base; + + /** + * picture number in bitstream order + */ + int coded_picture_number; + /** + * picture number in display order + */ + int display_picture_number; + + /** + * quality (between 1 (good) and FF_LAMBDA_MAX (bad)) + */ + int quality; + + /** + * for some private data of the user + */ + void *opaque; + + /** + * When decoding, this signals how much the picture must be delayed. + * extra_delay = repeat_pict / (2*fps) + */ + int repeat_pict; + + /** + * The content of the picture is interlaced. + */ + int interlaced_frame; + + /** + * If the content is interlaced, is top field displayed first. + */ + int top_field_first; + + /** + * Tell user application that palette has changed from previous frame. + */ + int palette_has_changed; + + /** + * reordered opaque 64 bits (generally an integer or a double precision float + * PTS but can be anything). + * The user sets AVCodecContext.reordered_opaque to represent the input at + * that time, + * the decoder reorders values as needed and sets AVFrame.reordered_opaque + * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque + */ + int64_t reordered_opaque; + + /** + * Sample rate of the audio data. + */ + int sample_rate; + +#if FF_API_OLD_CHANNEL_LAYOUT + /** + * Channel layout of the audio data. + * @deprecated use ch_layout instead + */ + attribute_deprecated + uint64_t channel_layout; +#endif + + /** + * AVBuffer references backing the data for this frame. All the pointers in + * data and extended_data must point inside one of the buffers in buf or + * extended_buf. This array must be filled contiguously -- if buf[i] is + * non-NULL then buf[j] must also be non-NULL for all j < i. + * + * There may be at most one AVBuffer per data plane, so for video this array + * always contains all the references. For planar audio with more than + * AV_NUM_DATA_POINTERS channels, there may be more buffers than can fit in + * this array. Then the extra AVBufferRef pointers are stored in the + * extended_buf array. + */ + AVBufferRef *buf[AV_NUM_DATA_POINTERS]; + + /** + * For planar audio which requires more than AV_NUM_DATA_POINTERS + * AVBufferRef pointers, this array will hold all the references which + * cannot fit into AVFrame.buf. + * + * Note that this is different from AVFrame.extended_data, which always + * contains all the pointers. This array only contains the extra pointers, + * which cannot fit into AVFrame.buf. + * + * This array is always allocated using av_malloc() by whoever constructs + * the frame. It is freed in av_frame_unref(). + */ + AVBufferRef **extended_buf; + /** + * Number of elements in extended_buf. + */ + int nb_extended_buf; + + AVFrameSideData **side_data; + int nb_side_data; + +/** + * @defgroup lavu_frame_flags AV_FRAME_FLAGS + * @ingroup lavu_frame + * Flags describing additional frame properties. + * + * @{ + */ + +/** + * The frame data may be corrupted, e.g. due to decoding errors. + */ +#define AV_FRAME_FLAG_CORRUPT (1 << 0) +/** + * A flag to mark the frames which need to be decoded, but shouldn't be output. + */ +#define AV_FRAME_FLAG_DISCARD (1 << 2) +/** + * @} + */ + + /** + * Frame flags, a combination of @ref lavu_frame_flags + */ + int flags; + + /** + * MPEG vs JPEG YUV range. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorRange color_range; + + enum AVColorPrimaries color_primaries; + + enum AVColorTransferCharacteristic color_trc; + + /** + * YUV colorspace type. + * - encoding: Set by user + * - decoding: Set by libavcodec + */ + enum AVColorSpace colorspace; + + enum AVChromaLocation chroma_location; + + /** + * frame timestamp estimated using various heuristics, in stream time base + * - encoding: unused + * - decoding: set by libavcodec, read by user. + */ + int64_t best_effort_timestamp; + + /** + * reordered pos from the last AVPacket that has been input into the decoder + * - encoding: unused + * - decoding: Read by user. + */ + int64_t pkt_pos; + +#if FF_API_PKT_DURATION + /** + * duration of the corresponding packet, expressed in + * AVStream->time_base units, 0 if unknown. + * - encoding: unused + * - decoding: Read by user. + * + * @deprecated use duration instead + */ + attribute_deprecated + int64_t pkt_duration; +#endif + + /** + * metadata. + * - encoding: Set by user. + * - decoding: Set by libavcodec. + */ + AVDictionary *metadata; + + /** + * decode error flags of the frame, set to a combination of + * FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there + * were errors during the decoding. + * - encoding: unused + * - decoding: set by libavcodec, read by user. + */ + int decode_error_flags; +#define FF_DECODE_ERROR_INVALID_BITSTREAM 1 +#define FF_DECODE_ERROR_MISSING_REFERENCE 2 +#define FF_DECODE_ERROR_CONCEALMENT_ACTIVE 4 +#define FF_DECODE_ERROR_DECODE_SLICES 8 + +#if FF_API_OLD_CHANNEL_LAYOUT + /** + * number of audio channels, only used for audio. + * - encoding: unused + * - decoding: Read by user. + * @deprecated use ch_layout instead + */ + attribute_deprecated + int channels; +#endif + + /** + * size of the corresponding packet containing the compressed + * frame. + * It is set to a negative value if unknown. + * - encoding: unused + * - decoding: set by libavcodec, read by user. + */ + int pkt_size; + + /** + * For hwaccel-format frames, this should be a reference to the + * AVHWFramesContext describing the frame. + */ + AVBufferRef *hw_frames_ctx; + + /** + * AVBufferRef for free use by the API user. FFmpeg will never check the + * contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when + * the frame is unreferenced. av_frame_copy_props() calls create a new + * reference with av_buffer_ref() for the target frame's opaque_ref field. + * + * This is unrelated to the opaque field, although it serves a similar + * purpose. + */ + AVBufferRef *opaque_ref; + + /** + * @anchor cropping + * @name Cropping + * Video frames only. The number of pixels to discard from the the + * top/bottom/left/right border of the frame to obtain the sub-rectangle of + * the frame intended for presentation. + * @{ + */ + size_t crop_top; + size_t crop_bottom; + size_t crop_left; + size_t crop_right; + /** + * @} + */ + + /** + * AVBufferRef for internal use by a single libav* library. + * Must not be used to transfer data between libraries. + * Has to be NULL when ownership of the frame leaves the respective library. + * + * Code outside the FFmpeg libs should never check or change the contents of the buffer ref. + * + * FFmpeg calls av_buffer_unref() on it when the frame is unreferenced. + * av_frame_copy_props() calls create a new reference with av_buffer_ref() + * for the target frame's private_ref field. + */ + AVBufferRef *private_ref; + + /** + * Channel layout of the audio data. + */ + AVChannelLayout ch_layout; + + /** + * Duration of the frame, in the same units as pts. 0 if unknown. + */ + int64_t duration; +} AVFrame; + + +#if FF_API_COLORSPACE_NAME +/** + * Get the name of a colorspace. + * @return a static string identifying the colorspace; can be NULL. + * @deprecated use av_color_space_name() + */ +attribute_deprecated +const char *av_get_colorspace_name(enum AVColorSpace val); +#endif +/** + * Allocate an AVFrame and set its fields to default values. The resulting + * struct must be freed using av_frame_free(). + * + * @return An AVFrame filled with default values or NULL on failure. + * + * @note this only allocates the AVFrame itself, not the data buffers. Those + * must be allocated through other means, e.g. with av_frame_get_buffer() or + * manually. + */ +AVFrame *av_frame_alloc(void); + +/** + * Free the frame and any dynamically allocated objects in it, + * e.g. extended_data. If the frame is reference counted, it will be + * unreferenced first. + * + * @param frame frame to be freed. The pointer will be set to NULL. + */ +void av_frame_free(AVFrame **frame); + +/** + * Set up a new reference to the data described by the source frame. + * + * Copy frame properties from src to dst and create a new reference for each + * AVBufferRef from src. + * + * If src is not reference counted, new buffers are allocated and the data is + * copied. + * + * @warning: dst MUST have been either unreferenced with av_frame_unref(dst), + * or newly allocated with av_frame_alloc() before calling this + * function, or undefined behavior will occur. + * + * @return 0 on success, a negative AVERROR on error + */ +int av_frame_ref(AVFrame *dst, const AVFrame *src); + +/** + * Create a new frame that references the same data as src. + * + * This is a shortcut for av_frame_alloc()+av_frame_ref(). + * + * @return newly created AVFrame on success, NULL on error. + */ +AVFrame *av_frame_clone(const AVFrame *src); + +/** + * Unreference all the buffers referenced by frame and reset the frame fields. + */ +void av_frame_unref(AVFrame *frame); + +/** + * Move everything contained in src to dst and reset src. + * + * @warning: dst is not unreferenced, but directly overwritten without reading + * or deallocating its contents. Call av_frame_unref(dst) manually + * before calling this function to ensure that no memory is leaked. + */ +void av_frame_move_ref(AVFrame *dst, AVFrame *src); + +/** + * Allocate new buffer(s) for audio or video data. + * + * The following fields must be set on frame before calling this function: + * - format (pixel format for video, sample format for audio) + * - width and height for video + * - nb_samples and ch_layout for audio + * + * This function will fill AVFrame.data and AVFrame.buf arrays and, if + * necessary, allocate and fill AVFrame.extended_data and AVFrame.extended_buf. + * For planar formats, one buffer will be allocated for each plane. + * + * @warning: if frame already has been allocated, calling this function will + * leak memory. In addition, undefined behavior can occur in certain + * cases. + * + * @param frame frame in which to store the new buffers. + * @param align Required buffer size alignment. If equal to 0, alignment will be + * chosen automatically for the current CPU. It is highly + * recommended to pass 0 here unless you know what you are doing. + * + * @return 0 on success, a negative AVERROR on error. + */ +int av_frame_get_buffer(AVFrame *frame, int align); + +/** + * Check if the frame data is writable. + * + * @return A positive value if the frame data is writable (which is true if and + * only if each of the underlying buffers has only one reference, namely the one + * stored in this frame). Return 0 otherwise. + * + * If 1 is returned the answer is valid until av_buffer_ref() is called on any + * of the underlying AVBufferRefs (e.g. through av_frame_ref() or directly). + * + * @see av_frame_make_writable(), av_buffer_is_writable() + */ +int av_frame_is_writable(AVFrame *frame); + +/** + * Ensure that the frame data is writable, avoiding data copy if possible. + * + * Do nothing if the frame is writable, allocate new buffers and copy the data + * if it is not. Non-refcounted frames behave as non-writable, i.e. a copy + * is always made. + * + * @return 0 on success, a negative AVERROR on error. + * + * @see av_frame_is_writable(), av_buffer_is_writable(), + * av_buffer_make_writable() + */ +int av_frame_make_writable(AVFrame *frame); + +/** + * Copy the frame data from src to dst. + * + * This function does not allocate anything, dst must be already initialized and + * allocated with the same parameters as src. + * + * This function only copies the frame data (i.e. the contents of the data / + * extended data arrays), not any other properties. + * + * @return >= 0 on success, a negative AVERROR on error. + */ +int av_frame_copy(AVFrame *dst, const AVFrame *src); + +/** + * Copy only "metadata" fields from src to dst. + * + * Metadata for the purpose of this function are those fields that do not affect + * the data layout in the buffers. E.g. pts, sample rate (for audio) or sample + * aspect ratio (for video), but not width/height or channel layout. + * Side data is also copied. + */ +int av_frame_copy_props(AVFrame *dst, const AVFrame *src); + +/** + * Get the buffer reference a given data plane is stored in. + * + * @param plane index of the data plane of interest in frame->extended_data. + * + * @return the buffer reference that contains the plane or NULL if the input + * frame is not valid. + */ +AVBufferRef *av_frame_get_plane_buffer(AVFrame *frame, int plane); + +/** + * Add a new side data to a frame. + * + * @param frame a frame to which the side data should be added + * @param type type of the added side data + * @param size size of the side data + * + * @return newly added side data on success, NULL on error + */ +AVFrameSideData *av_frame_new_side_data(AVFrame *frame, + enum AVFrameSideDataType type, + size_t size); + +/** + * Add a new side data to a frame from an existing AVBufferRef + * + * @param frame a frame to which the side data should be added + * @param type the type of the added side data + * @param buf an AVBufferRef to add as side data. The ownership of + * the reference is transferred to the frame. + * + * @return newly added side data on success, NULL on error. On failure + * the frame is unchanged and the AVBufferRef remains owned by + * the caller. + */ +AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame, + enum AVFrameSideDataType type, + AVBufferRef *buf); + +/** + * @return a pointer to the side data of a given type on success, NULL if there + * is no side data with such type in this frame. + */ +AVFrameSideData *av_frame_get_side_data(const AVFrame *frame, + enum AVFrameSideDataType type); + +/** + * Remove and free all side data instances of the given type. + */ +void av_frame_remove_side_data(AVFrame *frame, enum AVFrameSideDataType type); + + +/** + * Flags for frame cropping. + */ +enum { + /** + * Apply the maximum possible cropping, even if it requires setting the + * AVFrame.data[] entries to unaligned pointers. Passing unaligned data + * to FFmpeg API is generally not allowed, and causes undefined behavior + * (such as crashes). You can pass unaligned data only to FFmpeg APIs that + * are explicitly documented to accept it. Use this flag only if you + * absolutely know what you are doing. + */ + AV_FRAME_CROP_UNALIGNED = 1 << 0, +}; + +/** + * Crop the given video AVFrame according to its crop_left/crop_top/crop_right/ + * crop_bottom fields. If cropping is successful, the function will adjust the + * data pointers and the width/height fields, and set the crop fields to 0. + * + * In all cases, the cropping boundaries will be rounded to the inherent + * alignment of the pixel format. In some cases, such as for opaque hwaccel + * formats, the left/top cropping is ignored. The crop fields are set to 0 even + * if the cropping was rounded or ignored. + * + * @param frame the frame which should be cropped + * @param flags Some combination of AV_FRAME_CROP_* flags, or 0. + * + * @return >= 0 on success, a negative AVERROR on error. If the cropping fields + * were invalid, AVERROR(ERANGE) is returned, and nothing is changed. + */ +int av_frame_apply_cropping(AVFrame *frame, int flags); + +/** + * @return a string identifying the side data type + */ +const char *av_frame_side_data_name(enum AVFrameSideDataType type); + +/** + * @} + */ + +#endif /* AVUTIL_FRAME_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hash.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hash.h new file mode 100644 index 00000000..94151ded --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hash.h @@ -0,0 +1,264 @@ +/* + * Copyright (C) 2013 Reimar Döffinger + * + * 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 + */ + +/** + * @file + * @ingroup lavu_hash_generic + * Generic hashing API + */ + +#ifndef AVUTIL_HASH_H +#define AVUTIL_HASH_H + +#include +#include + +/** + * @defgroup lavu_hash Hash Functions + * @ingroup lavu_crypto + * Hash functions useful in multimedia. + * + * Hash functions are widely used in multimedia, from error checking and + * concealment to internal regression testing. libavutil has efficient + * implementations of a variety of hash functions that may be useful for + * FFmpeg and other multimedia applications. + * + * @{ + * + * @defgroup lavu_hash_generic Generic Hashing API + * An abstraction layer for all hash functions supported by libavutil. + * + * If your application needs to support a wide range of different hash + * functions, then the Generic Hashing API is for you. It provides a generic, + * reusable API for @ref lavu_hash "all hash functions" implemented in libavutil. + * If you just need to use one particular hash function, use the @ref lavu_hash + * "individual hash" directly. + * + * @section Sample Code + * + * A basic template for using the Generic Hashing API follows: + * + * @code + * struct AVHashContext *ctx = NULL; + * const char *hash_name = NULL; + * uint8_t *output_buf = NULL; + * + * // Select from a string returned by av_hash_names() + * hash_name = ...; + * + * // Allocate a hash context + * ret = av_hash_alloc(&ctx, hash_name); + * if (ret < 0) + * return ret; + * + * // Initialize the hash context + * av_hash_init(ctx); + * + * // Update the hash context with data + * while (data_left) { + * av_hash_update(ctx, data, size); + * } + * + * // Now we have no more data, so it is time to finalize the hash and get the + * // output. But we need to first allocate an output buffer. Note that you can + * // use any memory allocation function, including malloc(), not just + * // av_malloc(). + * output_buf = av_malloc(av_hash_get_size(ctx)); + * if (!output_buf) + * return AVERROR(ENOMEM); + * + * // Finalize the hash context. + * // You can use any of the av_hash_final*() functions provided, for other + * // output formats. If you do so, be sure to adjust the memory allocation + * // above. See the function documentation below for the exact amount of extra + * // memory needed. + * av_hash_final(ctx, output_buffer); + * + * // Free the context + * av_hash_freep(&ctx); + * @endcode + * + * @section Hash Function-Specific Information + * If the CRC32 hash is selected, the #AV_CRC_32_IEEE polynomial will be + * used. + * + * If the Murmur3 hash is selected, the default seed will be used. See @ref + * lavu_murmur3_seedinfo "Murmur3" for more information. + * + * @{ + */ + +/** + * @example ffhash.c + * This example is a simple command line application that takes one or more + * arguments. It demonstrates a typical use of the hashing API with allocation, + * initialization, updating, and finalizing. + */ + +struct AVHashContext; + +/** + * Allocate a hash context for the algorithm specified by name. + * + * @return >= 0 for success, a negative error code for failure + * + * @note The context is not initialized after a call to this function; you must + * call av_hash_init() to do so. + */ +int av_hash_alloc(struct AVHashContext **ctx, const char *name); + +/** + * Get the names of available hash algorithms. + * + * This function can be used to enumerate the algorithms. + * + * @param[in] i Index of the hash algorithm, starting from 0 + * @return Pointer to a static string or `NULL` if `i` is out of range + */ +const char *av_hash_names(int i); + +/** + * Get the name of the algorithm corresponding to the given hash context. + */ +const char *av_hash_get_name(const struct AVHashContext *ctx); + +/** + * Maximum value that av_hash_get_size() will currently return. + * + * You can use this if you absolutely want or need to use static allocation for + * the output buffer and are fine with not supporting hashes newly added to + * libavutil without recompilation. + * + * @warning + * Adding new hashes with larger sizes, and increasing the macro while doing + * so, will not be considered an ABI change. To prevent your code from + * overflowing a buffer, either dynamically allocate the output buffer with + * av_hash_get_size(), or limit your use of the Hashing API to hashes that are + * already in FFmpeg during the time of compilation. + */ +#define AV_HASH_MAX_SIZE 64 + +/** + * Get the size of the resulting hash value in bytes. + * + * The maximum value this function will currently return is available as macro + * #AV_HASH_MAX_SIZE. + * + * @param[in] ctx Hash context + * @return Size of the hash value in bytes + */ +int av_hash_get_size(const struct AVHashContext *ctx); + +/** + * Initialize or reset a hash context. + * + * @param[in,out] ctx Hash context + */ +void av_hash_init(struct AVHashContext *ctx); + +/** + * Update a hash context with additional data. + * + * @param[in,out] ctx Hash context + * @param[in] src Data to be added to the hash context + * @param[in] len Size of the additional data + */ +void av_hash_update(struct AVHashContext *ctx, const uint8_t *src, size_t len); + +/** + * Finalize a hash context and compute the actual hash value. + * + * The minimum size of `dst` buffer is given by av_hash_get_size() or + * #AV_HASH_MAX_SIZE. The use of the latter macro is discouraged. + * + * It is not safe to update or finalize a hash context again, if it has already + * been finalized. + * + * @param[in,out] ctx Hash context + * @param[out] dst Where the final hash value will be stored + * + * @see av_hash_final_bin() provides an alternative API + */ +void av_hash_final(struct AVHashContext *ctx, uint8_t *dst); + +/** + * Finalize a hash context and store the actual hash value in a buffer. + * + * It is not safe to update or finalize a hash context again, if it has already + * been finalized. + * + * If `size` is smaller than the hash size (given by av_hash_get_size()), the + * hash is truncated; if size is larger, the buffer is padded with 0. + * + * @param[in,out] ctx Hash context + * @param[out] dst Where the final hash value will be stored + * @param[in] size Number of bytes to write to `dst` + */ +void av_hash_final_bin(struct AVHashContext *ctx, uint8_t *dst, int size); + +/** + * Finalize a hash context and store the hexadecimal representation of the + * actual hash value as a string. + * + * It is not safe to update or finalize a hash context again, if it has already + * been finalized. + * + * The string is always 0-terminated. + * + * If `size` is smaller than `2 * hash_size + 1`, where `hash_size` is the + * value returned by av_hash_get_size(), the string will be truncated. + * + * @param[in,out] ctx Hash context + * @param[out] dst Where the string will be stored + * @param[in] size Maximum number of bytes to write to `dst` + */ +void av_hash_final_hex(struct AVHashContext *ctx, uint8_t *dst, int size); + +/** + * Finalize a hash context and store the Base64 representation of the + * actual hash value as a string. + * + * It is not safe to update or finalize a hash context again, if it has already + * been finalized. + * + * The string is always 0-terminated. + * + * If `size` is smaller than AV_BASE64_SIZE(hash_size), where `hash_size` is + * the value returned by av_hash_get_size(), the string will be truncated. + * + * @param[in,out] ctx Hash context + * @param[out] dst Where the final hash value will be stored + * @param[in] size Maximum number of bytes to write to `dst` + */ +void av_hash_final_b64(struct AVHashContext *ctx, uint8_t *dst, int size); + +/** + * Free hash context and set hash context pointer to `NULL`. + * + * @param[in,out] ctx Pointer to hash context + */ +void av_hash_freep(struct AVHashContext **ctx); + +/** + * @} + * @} + */ + +#endif /* AVUTIL_HASH_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hdr_dynamic_metadata.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hdr_dynamic_metadata.h new file mode 100644 index 00000000..2d72de56 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hdr_dynamic_metadata.h @@ -0,0 +1,343 @@ +/* + * Copyright (c) 2018 Mohammad Izadi + * + * 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 AVUTIL_HDR_DYNAMIC_METADATA_H +#define AVUTIL_HDR_DYNAMIC_METADATA_H + +#include "frame.h" +#include "rational.h" + +/** + * Option for overlapping elliptical pixel selectors in an image. + */ +enum AVHDRPlusOverlapProcessOption { + AV_HDR_PLUS_OVERLAP_PROCESS_WEIGHTED_AVERAGING = 0, + AV_HDR_PLUS_OVERLAP_PROCESS_LAYERING = 1, +}; + +/** + * Represents the percentile at a specific percentage in + * a distribution. + */ +typedef struct AVHDRPlusPercentile { + /** + * The percentage value corresponding to a specific percentile linearized + * RGB value in the processing window in the scene. The value shall be in + * the range of 0 to100, inclusive. + */ + uint8_t percentage; + + /** + * The linearized maxRGB value at a specific percentile in the processing + * window in the scene. The value shall be in the range of 0 to 1, inclusive + * and in multiples of 0.00001. + */ + AVRational percentile; +} AVHDRPlusPercentile; + +/** + * Color transform parameters at a processing window in a dynamic metadata for + * SMPTE 2094-40. + */ +typedef struct AVHDRPlusColorTransformParams { + /** + * The relative x coordinate of the top left pixel of the processing + * window. The value shall be in the range of 0 and 1, inclusive and + * in multiples of 1/(width of Picture - 1). The value 1 corresponds + * to the absolute coordinate of width of Picture - 1. The value for + * first processing window shall be 0. + */ + AVRational window_upper_left_corner_x; + + /** + * The relative y coordinate of the top left pixel of the processing + * window. The value shall be in the range of 0 and 1, inclusive and + * in multiples of 1/(height of Picture - 1). The value 1 corresponds + * to the absolute coordinate of height of Picture - 1. The value for + * first processing window shall be 0. + */ + AVRational window_upper_left_corner_y; + + /** + * The relative x coordinate of the bottom right pixel of the processing + * window. The value shall be in the range of 0 and 1, inclusive and + * in multiples of 1/(width of Picture - 1). The value 1 corresponds + * to the absolute coordinate of width of Picture - 1. The value for + * first processing window shall be 1. + */ + AVRational window_lower_right_corner_x; + + /** + * The relative y coordinate of the bottom right pixel of the processing + * window. The value shall be in the range of 0 and 1, inclusive and + * in multiples of 1/(height of Picture - 1). The value 1 corresponds + * to the absolute coordinate of height of Picture - 1. The value for + * first processing window shall be 1. + */ + AVRational window_lower_right_corner_y; + + /** + * The x coordinate of the center position of the concentric internal and + * external ellipses of the elliptical pixel selector in the processing + * window. The value shall be in the range of 0 to (width of Picture - 1), + * inclusive and in multiples of 1 pixel. + */ + uint16_t center_of_ellipse_x; + + /** + * The y coordinate of the center position of the concentric internal and + * external ellipses of the elliptical pixel selector in the processing + * window. The value shall be in the range of 0 to (height of Picture - 1), + * inclusive and in multiples of 1 pixel. + */ + uint16_t center_of_ellipse_y; + + /** + * The clockwise rotation angle in degree of arc with respect to the + * positive direction of the x-axis of the concentric internal and external + * ellipses of the elliptical pixel selector in the processing window. The + * value shall be in the range of 0 to 180, inclusive and in multiples of 1. + */ + uint8_t rotation_angle; + + /** + * The semi-major axis value of the internal ellipse of the elliptical pixel + * selector in amount of pixels in the processing window. The value shall be + * in the range of 1 to 65535, inclusive and in multiples of 1 pixel. + */ + uint16_t semimajor_axis_internal_ellipse; + + /** + * The semi-major axis value of the external ellipse of the elliptical pixel + * selector in amount of pixels in the processing window. The value + * shall not be less than semimajor_axis_internal_ellipse of the current + * processing window. The value shall be in the range of 1 to 65535, + * inclusive and in multiples of 1 pixel. + */ + uint16_t semimajor_axis_external_ellipse; + + /** + * The semi-minor axis value of the external ellipse of the elliptical pixel + * selector in amount of pixels in the processing window. The value shall be + * in the range of 1 to 65535, inclusive and in multiples of 1 pixel. + */ + uint16_t semiminor_axis_external_ellipse; + + /** + * Overlap process option indicates one of the two methods of combining + * rendered pixels in the processing window in an image with at least one + * elliptical pixel selector. For overlapping elliptical pixel selectors + * in an image, overlap_process_option shall have the same value. + */ + enum AVHDRPlusOverlapProcessOption overlap_process_option; + + /** + * The maximum of the color components of linearized RGB values in the + * processing window in the scene. The values should be in the range of 0 to + * 1, inclusive and in multiples of 0.00001. maxscl[ 0 ], maxscl[ 1 ], and + * maxscl[ 2 ] are corresponding to R, G, B color components respectively. + */ + AVRational maxscl[3]; + + /** + * The average of linearized maxRGB values in the processing window in the + * scene. The value should be in the range of 0 to 1, inclusive and in + * multiples of 0.00001. + */ + AVRational average_maxrgb; + + /** + * The number of linearized maxRGB values at given percentiles in the + * processing window in the scene. The maximum value shall be 15. + */ + uint8_t num_distribution_maxrgb_percentiles; + + /** + * The linearized maxRGB values at given percentiles in the + * processing window in the scene. + */ + AVHDRPlusPercentile distribution_maxrgb[15]; + + /** + * The fraction of selected pixels in the image that contains the brightest + * pixel in the scene. The value shall be in the range of 0 to 1, inclusive + * and in multiples of 0.001. + */ + AVRational fraction_bright_pixels; + + /** + * This flag indicates that the metadata for the tone mapping function in + * the processing window is present (for value of 1). + */ + uint8_t tone_mapping_flag; + + /** + * The x coordinate of the separation point between the linear part and the + * curved part of the tone mapping function. The value shall be in the range + * of 0 to 1, excluding 0 and in multiples of 1/4095. + */ + AVRational knee_point_x; + + /** + * The y coordinate of the separation point between the linear part and the + * curved part of the tone mapping function. The value shall be in the range + * of 0 to 1, excluding 0 and in multiples of 1/4095. + */ + AVRational knee_point_y; + + /** + * The number of the intermediate anchor parameters of the tone mapping + * function in the processing window. The maximum value shall be 15. + */ + uint8_t num_bezier_curve_anchors; + + /** + * The intermediate anchor parameters of the tone mapping function in the + * processing window in the scene. The values should be in the range of 0 + * to 1, inclusive and in multiples of 1/1023. + */ + AVRational bezier_curve_anchors[15]; + + /** + * This flag shall be equal to 0 in bitstreams conforming to this version of + * this Specification. Other values are reserved for future use. + */ + uint8_t color_saturation_mapping_flag; + + /** + * The color saturation gain in the processing window in the scene. The + * value shall be in the range of 0 to 63/8, inclusive and in multiples of + * 1/8. The default value shall be 1. + */ + AVRational color_saturation_weight; +} AVHDRPlusColorTransformParams; + +/** + * This struct represents dynamic metadata for color volume transform - + * application 4 of SMPTE 2094-40:2016 standard. + * + * To be used as payload of a AVFrameSideData or AVPacketSideData with the + * appropriate type. + * + * @note The struct should be allocated with + * av_dynamic_hdr_plus_alloc() and its size is not a part of + * the public ABI. + */ +typedef struct AVDynamicHDRPlus { + /** + * Country code by Rec. ITU-T T.35 Annex A. The value shall be 0xB5. + */ + uint8_t itu_t_t35_country_code; + + /** + * Application version in the application defining document in ST-2094 + * suite. The value shall be set to 0. + */ + uint8_t application_version; + + /** + * The number of processing windows. The value shall be in the range + * of 1 to 3, inclusive. + */ + uint8_t num_windows; + + /** + * The color transform parameters for every processing window. + */ + AVHDRPlusColorTransformParams params[3]; + + /** + * The nominal maximum display luminance of the targeted system display, + * in units of 0.0001 candelas per square metre. The value shall be in + * the range of 0 to 10000, inclusive. + */ + AVRational targeted_system_display_maximum_luminance; + + /** + * This flag shall be equal to 0 in bit streams conforming to this version + * of this Specification. The value 1 is reserved for future use. + */ + uint8_t targeted_system_display_actual_peak_luminance_flag; + + /** + * The number of rows in the targeted system_display_actual_peak_luminance + * array. The value shall be in the range of 2 to 25, inclusive. + */ + uint8_t num_rows_targeted_system_display_actual_peak_luminance; + + /** + * The number of columns in the + * targeted_system_display_actual_peak_luminance array. The value shall be + * in the range of 2 to 25, inclusive. + */ + uint8_t num_cols_targeted_system_display_actual_peak_luminance; + + /** + * The normalized actual peak luminance of the targeted system display. The + * values should be in the range of 0 to 1, inclusive and in multiples of + * 1/15. + */ + AVRational targeted_system_display_actual_peak_luminance[25][25]; + + /** + * This flag shall be equal to 0 in bitstreams conforming to this version of + * this Specification. The value 1 is reserved for future use. + */ + uint8_t mastering_display_actual_peak_luminance_flag; + + /** + * The number of rows in the mastering_display_actual_peak_luminance array. + * The value shall be in the range of 2 to 25, inclusive. + */ + uint8_t num_rows_mastering_display_actual_peak_luminance; + + /** + * The number of columns in the mastering_display_actual_peak_luminance + * array. The value shall be in the range of 2 to 25, inclusive. + */ + uint8_t num_cols_mastering_display_actual_peak_luminance; + + /** + * The normalized actual peak luminance of the mastering display used for + * mastering the image essence. The values should be in the range of 0 to 1, + * inclusive and in multiples of 1/15. + */ + AVRational mastering_display_actual_peak_luminance[25][25]; +} AVDynamicHDRPlus; + +/** + * Allocate an AVDynamicHDRPlus structure and set its fields to + * default values. The resulting struct can be freed using av_freep(). + * + * @return An AVDynamicHDRPlus filled with default values or NULL + * on failure. + */ +AVDynamicHDRPlus *av_dynamic_hdr_plus_alloc(size_t *size); + +/** + * Allocate a complete AVDynamicHDRPlus and add it to the frame. + * @param frame The frame which side data is added to. + * + * @return The AVDynamicHDRPlus structure to be filled by caller or NULL + * on failure. + */ +AVDynamicHDRPlus *av_dynamic_hdr_plus_create_side_data(AVFrame *frame); + +#endif /* AVUTIL_HDR_DYNAMIC_METADATA_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hdr_dynamic_vivid_metadata.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hdr_dynamic_vivid_metadata.h new file mode 100644 index 00000000..a34f8307 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hdr_dynamic_vivid_metadata.h @@ -0,0 +1,285 @@ +/* + * Copyright (c) 2021 Limin Wang + * + * 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 AVUTIL_HDR_DYNAMIC_VIVID_METADATA_H +#define AVUTIL_HDR_DYNAMIC_VIVID_METADATA_H + +#include "frame.h" +#include "rational.h" + +/** + * Color tone mapping parameters at a processing window in a dynamic metadata for + * CUVA 005.1:2021. + */ +typedef struct AVHDRVividColorToneMappingParams { + /** + * The nominal maximum display luminance of the targeted system display, + * in multiples of 1.0/4095 candelas per square metre. The value shall be in + * the range of 0.0 to 1.0, inclusive. + */ + AVRational targeted_system_display_maximum_luminance; + + /** + * This flag indicates that transfer the base paramter(for value of 1) + */ + int base_enable_flag; + + /** + * base_param_m_p in the base parameter, + * in multiples of 1.0/16383. The value shall be in + * the range of 0.0 to 1.0, inclusive. + */ + AVRational base_param_m_p; + + /** + * base_param_m_m in the base parameter, + * in multiples of 1.0/10. The value shall be in + * the range of 0.0 to 6.3, inclusive. + */ + AVRational base_param_m_m; + + /** + * base_param_m_a in the base parameter, + * in multiples of 1.0/1023. The value shall be in + * the range of 0.0 to 1.0 inclusive. + */ + AVRational base_param_m_a; + + /** + * base_param_m_b in the base parameter, + * in multiples of 1/1023. The value shall be in + * the range of 0.0 to 1.0, inclusive. + */ + AVRational base_param_m_b; + + /** + * base_param_m_n in the base parameter, + * in multiples of 1.0/10. The value shall be in + * the range of 0.0 to 6.3, inclusive. + */ + AVRational base_param_m_n; + + /** + * indicates k1_0 in the base parameter, + * base_param_k1 <= 1: k1_0 = base_param_k1 + * base_param_k1 > 1: reserved + */ + int base_param_k1; + + /** + * indicates k2_0 in the base parameter, + * base_param_k2 <= 1: k2_0 = base_param_k2 + * base_param_k2 > 1: reserved + */ + int base_param_k2; + + /** + * indicates k3_0 in the base parameter, + * base_param_k3 == 1: k3_0 = base_param_k3 + * base_param_k3 == 2: k3_0 = maximum_maxrgb + * base_param_k3 > 2: reserved + */ + int base_param_k3; + + /** + * This flag indicates that delta mode of base paramter(for value of 1) + */ + int base_param_Delta_enable_mode; + + /** + * base_param_Delta in the base parameter, + * in multiples of 1.0/127. The value shall be in + * the range of 0.0 to 1.0, inclusive. + */ + AVRational base_param_Delta; + + /** + * indicates 3Spline_enable_flag in the base parameter, + * This flag indicates that transfer three Spline of base paramter(for value of 1) + */ + int three_Spline_enable_flag; + + /** + * The number of three Spline. The value shall be in the range + * of 1 to 2, inclusive. + */ + int three_Spline_num; + + /** + * The mode of three Spline. the value shall be in the range + * of 0 to 3, inclusive. + */ + int three_Spline_TH_mode; + + /** + * three_Spline_TH_enable_MB is in the range of 0.0 to 1.0, inclusive + * and in multiples of 1.0/255. + * + */ + AVRational three_Spline_TH_enable_MB; + + /** + * 3Spline_TH_enable of three Spline. + * The value shall be in the range of 0.0 to 1.0, inclusive. + * and in multiples of 1.0/4095. + */ + AVRational three_Spline_TH_enable; + + /** + * 3Spline_TH_Delta1 of three Spline. + * The value shall be in the range of 0.0 to 0.25, inclusive, + * and in multiples of 0.25/1023. + */ + AVRational three_Spline_TH_Delta1; + + /** + * 3Spline_TH_Delta2 of three Spline. + * The value shall be in the range of 0.0 to 0.25, inclusive, + * and in multiples of 0.25/1023. + */ + AVRational three_Spline_TH_Delta2; + + /** + * 3Spline_enable_Strength of three Spline. + * The value shall be in the range of 0.0 to 1.0, inclusive, + * and in multiples of 1.0/255. + */ + AVRational three_Spline_enable_Strength; +} AVHDRVividColorToneMappingParams; + + +/** + * Color transform parameters at a processing window in a dynamic metadata for + * CUVA 005.1:2021. + */ +typedef struct AVHDRVividColorTransformParams { + /** + * Indicates the minimum brightness of the displayed content. + * The values should be in the range of 0.0 to 1.0, + * inclusive and in multiples of 1/4095. + */ + AVRational minimum_maxrgb; + + /** + * Indicates the average brightness of the displayed content. + * The values should be in the range of 0.0 to 1.0, + * inclusive and in multiples of 1/4095. + */ + AVRational average_maxrgb; + + /** + * Indicates the variance brightness of the displayed content. + * The values should be in the range of 0.0 to 1.0, + * inclusive and in multiples of 1/4095. + */ + AVRational variance_maxrgb; + + /** + * Indicates the maximum brightness of the displayed content. + * The values should be in the range of 0.0 to 1.0, inclusive + * and in multiples of 1/4095. + */ + AVRational maximum_maxrgb; + + /** + * This flag indicates that the metadata for the tone mapping function in + * the processing window is present (for value of 1). + */ + int tone_mapping_mode_flag; + + /** + * The number of tone mapping param. The value shall be in the range + * of 1 to 2, inclusive. + */ + int tone_mapping_param_num; + + /** + * The color tone mapping parameters. + */ + AVHDRVividColorToneMappingParams tm_params[2]; + + /** + * This flag indicates that the metadata for the color saturation mapping in + * the processing window is present (for value of 1). + */ + int color_saturation_mapping_flag; + + /** + * The number of color saturation param. The value shall be in the range + * of 0 to 7, inclusive. + */ + int color_saturation_num; + + /** + * Indicates the color correction strength parameter. + * The values should be in the range of 0.0 to 2.0, inclusive + * and in multiples of 1/128. + */ + AVRational color_saturation_gain[8]; +} AVHDRVividColorTransformParams; + +/** + * This struct represents dynamic metadata for color volume transform - + * CUVA 005.1:2021 standard + * + * To be used as payload of a AVFrameSideData or AVPacketSideData with the + * appropriate type. + * + * @note The struct should be allocated with + * av_dynamic_hdr_vivid_alloc() and its size is not a part of + * the public ABI. + */ +typedef struct AVDynamicHDRVivid { + /** + * The system start code. The value shall be set to 0x01. + */ + uint8_t system_start_code; + + /** + * The number of processing windows. The value shall be set to 0x01 + * if the system_start_code is 0x01. + */ + uint8_t num_windows; + + /** + * The color transform parameters for every processing window. + */ + AVHDRVividColorTransformParams params[3]; +} AVDynamicHDRVivid; + +/** + * Allocate an AVDynamicHDRVivid structure and set its fields to + * default values. The resulting struct can be freed using av_freep(). + * + * @return An AVDynamicHDRVivid filled with default values or NULL + * on failure. + */ +AVDynamicHDRVivid *av_dynamic_hdr_vivid_alloc(size_t *size); + +/** + * Allocate a complete AVDynamicHDRVivid and add it to the frame. + * @param frame The frame which side data is added to. + * + * @return The AVDynamicHDRVivid structure to be filled by caller or NULL + * on failure. + */ +AVDynamicHDRVivid *av_dynamic_hdr_vivid_create_side_data(AVFrame *frame); + +#endif /* AVUTIL_HDR_DYNAMIC_VIVID_METADATA_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hmac.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hmac.h new file mode 100644 index 00000000..ca4da6a6 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hmac.h @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2012 Martin Storsjo + * + * 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 AVUTIL_HMAC_H +#define AVUTIL_HMAC_H + +#include + +/** + * @defgroup lavu_hmac HMAC + * @ingroup lavu_crypto + * @{ + */ + +enum AVHMACType { + AV_HMAC_MD5, + AV_HMAC_SHA1, + AV_HMAC_SHA224, + AV_HMAC_SHA256, + AV_HMAC_SHA384, + AV_HMAC_SHA512, +}; + +typedef struct AVHMAC AVHMAC; + +/** + * Allocate an AVHMAC context. + * @param type The hash function used for the HMAC. + */ +AVHMAC *av_hmac_alloc(enum AVHMACType type); + +/** + * Free an AVHMAC context. + * @param ctx The context to free, may be NULL + */ +void av_hmac_free(AVHMAC *ctx); + +/** + * Initialize an AVHMAC context with an authentication key. + * @param ctx The HMAC context + * @param key The authentication key + * @param keylen The length of the key, in bytes + */ +void av_hmac_init(AVHMAC *ctx, const uint8_t *key, unsigned int keylen); + +/** + * Hash data with the HMAC. + * @param ctx The HMAC context + * @param data The data to hash + * @param len The length of the data, in bytes + */ +void av_hmac_update(AVHMAC *ctx, const uint8_t *data, unsigned int len); + +/** + * Finish hashing and output the HMAC digest. + * @param ctx The HMAC context + * @param out The output buffer to write the digest into + * @param outlen The length of the out buffer, in bytes + * @return The number of bytes written to out, or a negative error code. + */ +int av_hmac_final(AVHMAC *ctx, uint8_t *out, unsigned int outlen); + +/** + * Hash an array of data with a key. + * @param ctx The HMAC context + * @param data The data to hash + * @param len The length of the data, in bytes + * @param key The authentication key + * @param keylen The length of the key, in bytes + * @param out The output buffer to write the digest into + * @param outlen The length of the out buffer, in bytes + * @return The number of bytes written to out, or a negative error code. + */ +int av_hmac_calc(AVHMAC *ctx, const uint8_t *data, unsigned int len, + const uint8_t *key, unsigned int keylen, + uint8_t *out, unsigned int outlen); + +/** + * @} + */ + +#endif /* AVUTIL_HMAC_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext.h new file mode 100644 index 00000000..c18b7e1e --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext.h @@ -0,0 +1,609 @@ +/* + * 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 AVUTIL_HWCONTEXT_H +#define AVUTIL_HWCONTEXT_H + +#include "buffer.h" +#include "frame.h" +#include "log.h" +#include "pixfmt.h" + +enum AVHWDeviceType { + AV_HWDEVICE_TYPE_NONE, + AV_HWDEVICE_TYPE_VDPAU, + AV_HWDEVICE_TYPE_CUDA, + AV_HWDEVICE_TYPE_VAAPI, + AV_HWDEVICE_TYPE_DXVA2, + AV_HWDEVICE_TYPE_QSV, + AV_HWDEVICE_TYPE_VIDEOTOOLBOX, + AV_HWDEVICE_TYPE_D3D11VA, + AV_HWDEVICE_TYPE_DRM, + AV_HWDEVICE_TYPE_OPENCL, + AV_HWDEVICE_TYPE_MEDIACODEC, + AV_HWDEVICE_TYPE_VULKAN, +}; + +typedef struct AVHWDeviceInternal AVHWDeviceInternal; + +/** + * This struct aggregates all the (hardware/vendor-specific) "high-level" state, + * i.e. state that is not tied to a concrete processing configuration. + * E.g., in an API that supports hardware-accelerated encoding and decoding, + * this struct will (if possible) wrap the state that is common to both encoding + * and decoding and from which specific instances of encoders or decoders can be + * derived. + * + * This struct is reference-counted with the AVBuffer mechanism. The + * av_hwdevice_ctx_alloc() constructor yields a reference, whose data field + * points to the actual AVHWDeviceContext. Further objects derived from + * AVHWDeviceContext (such as AVHWFramesContext, describing a frame pool with + * specific properties) will hold an internal reference to it. After all the + * references are released, the AVHWDeviceContext itself will be freed, + * optionally invoking a user-specified callback for uninitializing the hardware + * state. + */ +typedef struct AVHWDeviceContext { + /** + * A class for logging. Set by av_hwdevice_ctx_alloc(). + */ + const AVClass *av_class; + + /** + * Private data used internally by libavutil. Must not be accessed in any + * way by the caller. + */ + AVHWDeviceInternal *internal; + + /** + * This field identifies the underlying API used for hardware access. + * + * This field is set when this struct is allocated and never changed + * afterwards. + */ + enum AVHWDeviceType type; + + /** + * The format-specific data, allocated and freed by libavutil along with + * this context. + * + * Should be cast by the user to the format-specific context defined in the + * corresponding header (hwcontext_*.h) and filled as described in the + * documentation before calling av_hwdevice_ctx_init(). + * + * After calling av_hwdevice_ctx_init() this struct should not be modified + * by the caller. + */ + void *hwctx; + + /** + * This field may be set by the caller before calling av_hwdevice_ctx_init(). + * + * If non-NULL, this callback will be called when the last reference to + * this context is unreferenced, immediately before it is freed. + * + * @note when other objects (e.g an AVHWFramesContext) are derived from this + * struct, this callback will be invoked after all such child objects + * are fully uninitialized and their respective destructors invoked. + */ + void (*free)(struct AVHWDeviceContext *ctx); + + /** + * Arbitrary user data, to be used e.g. by the free() callback. + */ + void *user_opaque; +} AVHWDeviceContext; + +typedef struct AVHWFramesInternal AVHWFramesInternal; + +/** + * This struct describes a set or pool of "hardware" frames (i.e. those with + * data not located in normal system memory). All the frames in the pool are + * assumed to be allocated in the same way and interchangeable. + * + * This struct is reference-counted with the AVBuffer mechanism and tied to a + * given AVHWDeviceContext instance. The av_hwframe_ctx_alloc() constructor + * yields a reference, whose data field points to the actual AVHWFramesContext + * struct. + */ +typedef struct AVHWFramesContext { + /** + * A class for logging. + */ + const AVClass *av_class; + + /** + * Private data used internally by libavutil. Must not be accessed in any + * way by the caller. + */ + AVHWFramesInternal *internal; + + /** + * A reference to the parent AVHWDeviceContext. This reference is owned and + * managed by the enclosing AVHWFramesContext, but the caller may derive + * additional references from it. + */ + AVBufferRef *device_ref; + + /** + * The parent AVHWDeviceContext. This is simply a pointer to + * device_ref->data provided for convenience. + * + * Set by libavutil in av_hwframe_ctx_init(). + */ + AVHWDeviceContext *device_ctx; + + /** + * The format-specific data, allocated and freed automatically along with + * this context. + * + * Should be cast by the user to the format-specific context defined in the + * corresponding header (hwframe_*.h) and filled as described in the + * documentation before calling av_hwframe_ctx_init(). + * + * After any frames using this context are created, the contents of this + * struct should not be modified by the caller. + */ + void *hwctx; + + /** + * This field may be set by the caller before calling av_hwframe_ctx_init(). + * + * If non-NULL, this callback will be called when the last reference to + * this context is unreferenced, immediately before it is freed. + */ + void (*free)(struct AVHWFramesContext *ctx); + + /** + * Arbitrary user data, to be used e.g. by the free() callback. + */ + void *user_opaque; + + /** + * A pool from which the frames are allocated by av_hwframe_get_buffer(). + * This field may be set by the caller before calling av_hwframe_ctx_init(). + * The buffers returned by calling av_buffer_pool_get() on this pool must + * have the properties described in the documentation in the corresponding hw + * type's header (hwcontext_*.h). The pool will be freed strictly before + * this struct's free() callback is invoked. + * + * This field may be NULL, then libavutil will attempt to allocate a pool + * internally. Note that certain device types enforce pools allocated at + * fixed size (frame count), which cannot be extended dynamically. In such a + * case, initial_pool_size must be set appropriately. + */ + AVBufferPool *pool; + + /** + * Initial size of the frame pool. If a device type does not support + * dynamically resizing the pool, then this is also the maximum pool size. + * + * May be set by the caller before calling av_hwframe_ctx_init(). Must be + * set if pool is NULL and the device type does not support dynamic pools. + */ + int initial_pool_size; + + /** + * The pixel format identifying the underlying HW surface type. + * + * Must be a hwaccel format, i.e. the corresponding descriptor must have the + * AV_PIX_FMT_FLAG_HWACCEL flag set. + * + * Must be set by the user before calling av_hwframe_ctx_init(). + */ + enum AVPixelFormat format; + + /** + * The pixel format identifying the actual data layout of the hardware + * frames. + * + * Must be set by the caller before calling av_hwframe_ctx_init(). + * + * @note when the underlying API does not provide the exact data layout, but + * only the colorspace/bit depth, this field should be set to the fully + * planar version of that format (e.g. for 8-bit 420 YUV it should be + * AV_PIX_FMT_YUV420P, not AV_PIX_FMT_NV12 or anything else). + */ + enum AVPixelFormat sw_format; + + /** + * The allocated dimensions of the frames in this pool. + * + * Must be set by the user before calling av_hwframe_ctx_init(). + */ + int width, height; +} AVHWFramesContext; + +/** + * Look up an AVHWDeviceType by name. + * + * @param name String name of the device type (case-insensitive). + * @return The type from enum AVHWDeviceType, or AV_HWDEVICE_TYPE_NONE if + * not found. + */ +enum AVHWDeviceType av_hwdevice_find_type_by_name(const char *name); + +/** Get the string name of an AVHWDeviceType. + * + * @param type Type from enum AVHWDeviceType. + * @return Pointer to a static string containing the name, or NULL if the type + * is not valid. + */ +const char *av_hwdevice_get_type_name(enum AVHWDeviceType type); + +/** + * Iterate over supported device types. + * + * @param type AV_HWDEVICE_TYPE_NONE initially, then the previous type + * returned by this function in subsequent iterations. + * @return The next usable device type from enum AVHWDeviceType, or + * AV_HWDEVICE_TYPE_NONE if there are no more. + */ +enum AVHWDeviceType av_hwdevice_iterate_types(enum AVHWDeviceType prev); + +/** + * Allocate an AVHWDeviceContext for a given hardware type. + * + * @param type the type of the hardware device to allocate. + * @return a reference to the newly created AVHWDeviceContext on success or NULL + * on failure. + */ +AVBufferRef *av_hwdevice_ctx_alloc(enum AVHWDeviceType type); + +/** + * Finalize the device context before use. This function must be called after + * the context is filled with all the required information and before it is + * used in any way. + * + * @param ref a reference to the AVHWDeviceContext + * @return 0 on success, a negative AVERROR code on failure + */ +int av_hwdevice_ctx_init(AVBufferRef *ref); + +/** + * Open a device of the specified type and create an AVHWDeviceContext for it. + * + * This is a convenience function intended to cover the simple cases. Callers + * who need to fine-tune device creation/management should open the device + * manually and then wrap it in an AVHWDeviceContext using + * av_hwdevice_ctx_alloc()/av_hwdevice_ctx_init(). + * + * The returned context is already initialized and ready for use, the caller + * should not call av_hwdevice_ctx_init() on it. The user_opaque/free fields of + * the created AVHWDeviceContext are set by this function and should not be + * touched by the caller. + * + * @param device_ctx On success, a reference to the newly-created device context + * will be written here. The reference is owned by the caller + * and must be released with av_buffer_unref() when no longer + * needed. On failure, NULL will be written to this pointer. + * @param type The type of the device to create. + * @param device A type-specific string identifying the device to open. + * @param opts A dictionary of additional (type-specific) options to use in + * opening the device. The dictionary remains owned by the caller. + * @param flags currently unused + * + * @return 0 on success, a negative AVERROR code on failure. + */ +int av_hwdevice_ctx_create(AVBufferRef **device_ctx, enum AVHWDeviceType type, + const char *device, AVDictionary *opts, int flags); + +/** + * Create a new device of the specified type from an existing device. + * + * If the source device is a device of the target type or was originally + * derived from such a device (possibly through one or more intermediate + * devices of other types), then this will return a reference to the + * existing device of the same type as is requested. + * + * Otherwise, it will attempt to derive a new device from the given source + * device. If direct derivation to the new type is not implemented, it will + * attempt the same derivation from each ancestor of the source device in + * turn looking for an implemented derivation method. + * + * @param dst_ctx On success, a reference to the newly-created + * AVHWDeviceContext. + * @param type The type of the new device to create. + * @param src_ctx A reference to an existing AVHWDeviceContext which will be + * used to create the new device. + * @param flags Currently unused; should be set to zero. + * @return Zero on success, a negative AVERROR code on failure. + */ +int av_hwdevice_ctx_create_derived(AVBufferRef **dst_ctx, + enum AVHWDeviceType type, + AVBufferRef *src_ctx, int flags); + +/** + * Create a new device of the specified type from an existing device. + * + * This function performs the same action as av_hwdevice_ctx_create_derived, + * however, it is able to set options for the new device to be derived. + * + * @param dst_ctx On success, a reference to the newly-created + * AVHWDeviceContext. + * @param type The type of the new device to create. + * @param src_ctx A reference to an existing AVHWDeviceContext which will be + * used to create the new device. + * @param options Options for the new device to create, same format as in + * av_hwdevice_ctx_create. + * @param flags Currently unused; should be set to zero. + * @return Zero on success, a negative AVERROR code on failure. + */ +int av_hwdevice_ctx_create_derived_opts(AVBufferRef **dst_ctx, + enum AVHWDeviceType type, + AVBufferRef *src_ctx, + AVDictionary *options, int flags); + +/** + * Allocate an AVHWFramesContext tied to a given device context. + * + * @param device_ctx a reference to a AVHWDeviceContext. This function will make + * a new reference for internal use, the one passed to the + * function remains owned by the caller. + * @return a reference to the newly created AVHWFramesContext on success or NULL + * on failure. + */ +AVBufferRef *av_hwframe_ctx_alloc(AVBufferRef *device_ctx); + +/** + * Finalize the context before use. This function must be called after the + * context is filled with all the required information and before it is attached + * to any frames. + * + * @param ref a reference to the AVHWFramesContext + * @return 0 on success, a negative AVERROR code on failure + */ +int av_hwframe_ctx_init(AVBufferRef *ref); + +/** + * Allocate a new frame attached to the given AVHWFramesContext. + * + * @param hwframe_ctx a reference to an AVHWFramesContext + * @param frame an empty (freshly allocated or unreffed) frame to be filled with + * newly allocated buffers. + * @param flags currently unused, should be set to zero + * @return 0 on success, a negative AVERROR code on failure + */ +int av_hwframe_get_buffer(AVBufferRef *hwframe_ctx, AVFrame *frame, int flags); + +/** + * Copy data to or from a hw surface. At least one of dst/src must have an + * AVHWFramesContext attached. + * + * If src has an AVHWFramesContext attached, then the format of dst (if set) + * must use one of the formats returned by av_hwframe_transfer_get_formats(src, + * AV_HWFRAME_TRANSFER_DIRECTION_FROM). + * If dst has an AVHWFramesContext attached, then the format of src must use one + * of the formats returned by av_hwframe_transfer_get_formats(dst, + * AV_HWFRAME_TRANSFER_DIRECTION_TO) + * + * dst may be "clean" (i.e. with data/buf pointers unset), in which case the + * data buffers will be allocated by this function using av_frame_get_buffer(). + * If dst->format is set, then this format will be used, otherwise (when + * dst->format is AV_PIX_FMT_NONE) the first acceptable format will be chosen. + * + * The two frames must have matching allocated dimensions (i.e. equal to + * AVHWFramesContext.width/height), since not all device types support + * transferring a sub-rectangle of the whole surface. The display dimensions + * (i.e. AVFrame.width/height) may be smaller than the allocated dimensions, but + * also have to be equal for both frames. When the display dimensions are + * smaller than the allocated dimensions, the content of the padding in the + * destination frame is unspecified. + * + * @param dst the destination frame. dst is not touched on failure. + * @param src the source frame. + * @param flags currently unused, should be set to zero + * @return 0 on success, a negative AVERROR error code on failure. + */ +int av_hwframe_transfer_data(AVFrame *dst, const AVFrame *src, int flags); + +enum AVHWFrameTransferDirection { + /** + * Transfer the data from the queried hw frame. + */ + AV_HWFRAME_TRANSFER_DIRECTION_FROM, + + /** + * Transfer the data to the queried hw frame. + */ + AV_HWFRAME_TRANSFER_DIRECTION_TO, +}; + +/** + * Get a list of possible source or target formats usable in + * av_hwframe_transfer_data(). + * + * @param hwframe_ctx the frame context to obtain the information for + * @param dir the direction of the transfer + * @param formats the pointer to the output format list will be written here. + * The list is terminated with AV_PIX_FMT_NONE and must be freed + * by the caller when no longer needed using av_free(). + * If this function returns successfully, the format list will + * have at least one item (not counting the terminator). + * On failure, the contents of this pointer are unspecified. + * @param flags currently unused, should be set to zero + * @return 0 on success, a negative AVERROR code on failure. + */ +int av_hwframe_transfer_get_formats(AVBufferRef *hwframe_ctx, + enum AVHWFrameTransferDirection dir, + enum AVPixelFormat **formats, int flags); + + +/** + * This struct describes the constraints on hardware frames attached to + * a given device with a hardware-specific configuration. This is returned + * by av_hwdevice_get_hwframe_constraints() and must be freed by + * av_hwframe_constraints_free() after use. + */ +typedef struct AVHWFramesConstraints { + /** + * A list of possible values for format in the hw_frames_ctx, + * terminated by AV_PIX_FMT_NONE. This member will always be filled. + */ + enum AVPixelFormat *valid_hw_formats; + + /** + * A list of possible values for sw_format in the hw_frames_ctx, + * terminated by AV_PIX_FMT_NONE. Can be NULL if this information is + * not known. + */ + enum AVPixelFormat *valid_sw_formats; + + /** + * The minimum size of frames in this hw_frames_ctx. + * (Zero if not known.) + */ + int min_width; + int min_height; + + /** + * The maximum size of frames in this hw_frames_ctx. + * (INT_MAX if not known / no limit.) + */ + int max_width; + int max_height; +} AVHWFramesConstraints; + +/** + * Allocate a HW-specific configuration structure for a given HW device. + * After use, the user must free all members as required by the specific + * hardware structure being used, then free the structure itself with + * av_free(). + * + * @param device_ctx a reference to the associated AVHWDeviceContext. + * @return The newly created HW-specific configuration structure on + * success or NULL on failure. + */ +void *av_hwdevice_hwconfig_alloc(AVBufferRef *device_ctx); + +/** + * Get the constraints on HW frames given a device and the HW-specific + * configuration to be used with that device. If no HW-specific + * configuration is provided, returns the maximum possible capabilities + * of the device. + * + * @param ref a reference to the associated AVHWDeviceContext. + * @param hwconfig a filled HW-specific configuration structure, or NULL + * to return the maximum possible capabilities of the device. + * @return AVHWFramesConstraints structure describing the constraints + * on the device, or NULL if not available. + */ +AVHWFramesConstraints *av_hwdevice_get_hwframe_constraints(AVBufferRef *ref, + const void *hwconfig); + +/** + * Free an AVHWFrameConstraints structure. + * + * @param constraints The (filled or unfilled) AVHWFrameConstraints structure. + */ +void av_hwframe_constraints_free(AVHWFramesConstraints **constraints); + + +/** + * Flags to apply to frame mappings. + */ +enum { + /** + * The mapping must be readable. + */ + AV_HWFRAME_MAP_READ = 1 << 0, + /** + * The mapping must be writeable. + */ + AV_HWFRAME_MAP_WRITE = 1 << 1, + /** + * The mapped frame will be overwritten completely in subsequent + * operations, so the current frame data need not be loaded. Any values + * which are not overwritten are unspecified. + */ + AV_HWFRAME_MAP_OVERWRITE = 1 << 2, + /** + * The mapping must be direct. That is, there must not be any copying in + * the map or unmap steps. Note that performance of direct mappings may + * be much lower than normal memory. + */ + AV_HWFRAME_MAP_DIRECT = 1 << 3, +}; + +/** + * Map a hardware frame. + * + * This has a number of different possible effects, depending on the format + * and origin of the src and dst frames. On input, src should be a usable + * frame with valid buffers and dst should be blank (typically as just created + * by av_frame_alloc()). src should have an associated hwframe context, and + * dst may optionally have a format and associated hwframe context. + * + * If src was created by mapping a frame from the hwframe context of dst, + * then this function undoes the mapping - dst is replaced by a reference to + * the frame that src was originally mapped from. + * + * If both src and dst have an associated hwframe context, then this function + * attempts to map the src frame from its hardware context to that of dst and + * then fill dst with appropriate data to be usable there. This will only be + * possible if the hwframe contexts and associated devices are compatible - + * given compatible devices, av_hwframe_ctx_create_derived() can be used to + * create a hwframe context for dst in which mapping should be possible. + * + * If src has a hwframe context but dst does not, then the src frame is + * mapped to normal memory and should thereafter be usable as a normal frame. + * If the format is set on dst, then the mapping will attempt to create dst + * with that format and fail if it is not possible. If format is unset (is + * AV_PIX_FMT_NONE) then dst will be mapped with whatever the most appropriate + * format to use is (probably the sw_format of the src hwframe context). + * + * A return value of AVERROR(ENOSYS) indicates that the mapping is not + * possible with the given arguments and hwframe setup, while other return + * values indicate that it failed somehow. + * + * On failure, the destination frame will be left blank, except for the + * hw_frames_ctx/format fields thay may have been set by the caller - those will + * be preserved as they were. + * + * @param dst Destination frame, to contain the mapping. + * @param src Source frame, to be mapped. + * @param flags Some combination of AV_HWFRAME_MAP_* flags. + * @return Zero on success, negative AVERROR code on failure. + */ +int av_hwframe_map(AVFrame *dst, const AVFrame *src, int flags); + + +/** + * Create and initialise an AVHWFramesContext as a mapping of another existing + * AVHWFramesContext on a different device. + * + * av_hwframe_ctx_init() should not be called after this. + * + * @param derived_frame_ctx On success, a reference to the newly created + * AVHWFramesContext. + * @param derived_device_ctx A reference to the device to create the new + * AVHWFramesContext on. + * @param source_frame_ctx A reference to an existing AVHWFramesContext + * which will be mapped to the derived context. + * @param flags Some combination of AV_HWFRAME_MAP_* flags, defining the + * mapping parameters to apply to frames which are allocated + * in the derived device. + * @return Zero on success, negative AVERROR code on failure. + */ +int av_hwframe_ctx_create_derived(AVBufferRef **derived_frame_ctx, + enum AVPixelFormat format, + AVBufferRef *derived_device_ctx, + AVBufferRef *source_frame_ctx, + int flags); + +#endif /* AVUTIL_HWCONTEXT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_cuda.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_cuda.h new file mode 100644 index 00000000..cefbe0ce --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_cuda.h @@ -0,0 +1,69 @@ +/* + * 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 AVUTIL_HWCONTEXT_CUDA_H +#define AVUTIL_HWCONTEXT_CUDA_H + +#ifndef CUDA_VERSION +#include +#endif + +#include "pixfmt.h" + +/** + * @file + * An API-specific header for AV_HWDEVICE_TYPE_CUDA. + * + * This API supports dynamic frame pools. AVHWFramesContext.pool must return + * AVBufferRefs whose data pointer is a CUdeviceptr. + */ + +typedef struct AVCUDADeviceContextInternal AVCUDADeviceContextInternal; + +/** + * This struct is allocated as AVHWDeviceContext.hwctx + */ +typedef struct AVCUDADeviceContext { + CUcontext cuda_ctx; + CUstream stream; + AVCUDADeviceContextInternal *internal; +} AVCUDADeviceContext; + +/** + * AVHWFramesContext.hwctx is currently not used + */ + +/** + * @defgroup hwcontext_cuda Device context creation flags + * + * Flags for av_hwdevice_ctx_create. + * + * @{ + */ + +/** + * Use primary device context instead of creating a new one. + */ +#define AV_CUDA_USE_PRIMARY_CONTEXT (1 << 0) + +/** + * @} + */ + +#endif /* AVUTIL_HWCONTEXT_CUDA_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_d3d11va.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_d3d11va.h new file mode 100644 index 00000000..77d2d72f --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_d3d11va.h @@ -0,0 +1,178 @@ +/* + * 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 AVUTIL_HWCONTEXT_D3D11VA_H +#define AVUTIL_HWCONTEXT_D3D11VA_H + +/** + * @file + * An API-specific header for AV_HWDEVICE_TYPE_D3D11VA. + * + * The default pool implementation will be fixed-size if initial_pool_size is + * set (and allocate elements from an array texture). Otherwise it will allocate + * individual textures. Be aware that decoding requires a single array texture. + * + * Using sw_format==AV_PIX_FMT_YUV420P has special semantics, and maps to + * DXGI_FORMAT_420_OPAQUE. av_hwframe_transfer_data() is not supported for + * this format. Refer to MSDN for details. + * + * av_hwdevice_ctx_create() for this device type supports a key named "debug" + * for the AVDictionary entry. If this is set to any value, the device creation + * code will try to load various supported D3D debugging layers. + */ + +#include +#include + +/** + * This struct is allocated as AVHWDeviceContext.hwctx + */ +typedef struct AVD3D11VADeviceContext { + /** + * Device used for texture creation and access. This can also be used to + * set the libavcodec decoding device. + * + * Must be set by the user. This is the only mandatory field - the other + * device context fields are set from this and are available for convenience. + * + * Deallocating the AVHWDeviceContext will always release this interface, + * and it does not matter whether it was user-allocated. + */ + ID3D11Device *device; + + /** + * If unset, this will be set from the device field on init. + * + * Deallocating the AVHWDeviceContext will always release this interface, + * and it does not matter whether it was user-allocated. + */ + ID3D11DeviceContext *device_context; + + /** + * If unset, this will be set from the device field on init. + * + * Deallocating the AVHWDeviceContext will always release this interface, + * and it does not matter whether it was user-allocated. + */ + ID3D11VideoDevice *video_device; + + /** + * If unset, this will be set from the device_context field on init. + * + * Deallocating the AVHWDeviceContext will always release this interface, + * and it does not matter whether it was user-allocated. + */ + ID3D11VideoContext *video_context; + + /** + * Callbacks for locking. They protect accesses to device_context and + * video_context calls. They also protect access to the internal staging + * texture (for av_hwframe_transfer_data() calls). They do NOT protect + * access to hwcontext or decoder state in general. + * + * If unset on init, the hwcontext implementation will set them to use an + * internal mutex. + * + * The underlying lock must be recursive. lock_ctx is for free use by the + * locking implementation. + */ + void (*lock)(void *lock_ctx); + void (*unlock)(void *lock_ctx); + void *lock_ctx; +} AVD3D11VADeviceContext; + +/** + * D3D11 frame descriptor for pool allocation. + * + * In user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs + * with the data pointer pointing at an object of this type describing the + * planes of the frame. + * + * This has no use outside of custom allocation, and AVFrame AVBufferRef do not + * necessarily point to an instance of this struct. + */ +typedef struct AVD3D11FrameDescriptor { + /** + * The texture in which the frame is located. The reference count is + * managed by the AVBufferRef, and destroying the reference will release + * the interface. + * + * Normally stored in AVFrame.data[0]. + */ + ID3D11Texture2D *texture; + + /** + * The index into the array texture element representing the frame, or 0 + * if the texture is not an array texture. + * + * Normally stored in AVFrame.data[1] (cast from intptr_t). + */ + intptr_t index; +} AVD3D11FrameDescriptor; + +/** + * This struct is allocated as AVHWFramesContext.hwctx + */ +typedef struct AVD3D11VAFramesContext { + /** + * The canonical texture used for pool allocation. If this is set to NULL + * on init, the hwframes implementation will allocate and set an array + * texture if initial_pool_size > 0. + * + * The only situation when the API user should set this is: + * - the user wants to do manual pool allocation (setting + * AVHWFramesContext.pool), instead of letting AVHWFramesContext + * allocate the pool + * - of an array texture + * - and wants it to use it for decoding + * - this has to be done before calling av_hwframe_ctx_init() + * + * Deallocating the AVHWFramesContext will always release this interface, + * and it does not matter whether it was user-allocated. + * + * This is in particular used by the libavcodec D3D11VA hwaccel, which + * requires a single array texture. It will create ID3D11VideoDecoderOutputView + * objects for each array texture element on decoder initialization. + */ + ID3D11Texture2D *texture; + + /** + * D3D11_TEXTURE2D_DESC.BindFlags used for texture creation. The user must + * at least set D3D11_BIND_DECODER if the frames context is to be used for + * video decoding. + * This field is ignored/invalid if a user-allocated texture is provided. + */ + UINT BindFlags; + + /** + * D3D11_TEXTURE2D_DESC.MiscFlags used for texture creation. + * This field is ignored/invalid if a user-allocated texture is provided. + */ + UINT MiscFlags; + + /** + * In case if texture structure member above is not NULL contains the same texture + * pointer for all elements and different indexes into the array texture. + * In case if texture structure member above is NULL, all elements contains + * pointers to separate non-array textures and 0 indexes. + * This field is ignored/invalid if a user-allocated texture is provided. + */ + AVD3D11FrameDescriptor *texture_infos; +} AVD3D11VAFramesContext; + +#endif /* AVUTIL_HWCONTEXT_D3D11VA_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_drm.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_drm.h new file mode 100644 index 00000000..42709f21 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_drm.h @@ -0,0 +1,169 @@ +/* + * 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 AVUTIL_HWCONTEXT_DRM_H +#define AVUTIL_HWCONTEXT_DRM_H + +#include +#include + +/** + * @file + * API-specific header for AV_HWDEVICE_TYPE_DRM. + * + * Internal frame allocation is not currently supported - all frames + * must be allocated by the user. Thus AVHWFramesContext is always + * NULL, though this may change if support for frame allocation is + * added in future. + */ + +enum { + /** + * The maximum number of layers/planes in a DRM frame. + */ + AV_DRM_MAX_PLANES = 4 +}; + +/** + * DRM object descriptor. + * + * Describes a single DRM object, addressing it as a PRIME file + * descriptor. + */ +typedef struct AVDRMObjectDescriptor { + /** + * DRM PRIME fd for the object. + */ + int fd; + /** + * Total size of the object. + * + * (This includes any parts not which do not contain image data.) + */ + size_t size; + /** + * Format modifier applied to the object (DRM_FORMAT_MOD_*). + * + * If the format modifier is unknown then this should be set to + * DRM_FORMAT_MOD_INVALID. + */ + uint64_t format_modifier; +} AVDRMObjectDescriptor; + +/** + * DRM plane descriptor. + * + * Describes a single plane of a layer, which is contained within + * a single object. + */ +typedef struct AVDRMPlaneDescriptor { + /** + * Index of the object containing this plane in the objects + * array of the enclosing frame descriptor. + */ + int object_index; + /** + * Offset within that object of this plane. + */ + ptrdiff_t offset; + /** + * Pitch (linesize) of this plane. + */ + ptrdiff_t pitch; +} AVDRMPlaneDescriptor; + +/** + * DRM layer descriptor. + * + * Describes a single layer within a frame. This has the structure + * defined by its format, and will contain one or more planes. + */ +typedef struct AVDRMLayerDescriptor { + /** + * Format of the layer (DRM_FORMAT_*). + */ + uint32_t format; + /** + * Number of planes in the layer. + * + * This must match the number of planes required by format. + */ + int nb_planes; + /** + * Array of planes in this layer. + */ + AVDRMPlaneDescriptor planes[AV_DRM_MAX_PLANES]; +} AVDRMLayerDescriptor; + +/** + * DRM frame descriptor. + * + * This is used as the data pointer for AV_PIX_FMT_DRM_PRIME frames. + * It is also used by user-allocated frame pools - allocating in + * AVHWFramesContext.pool must return AVBufferRefs which contain + * an object of this type. + * + * The fields of this structure should be set such it can be + * imported directly by EGL using the EGL_EXT_image_dma_buf_import + * and EGL_EXT_image_dma_buf_import_modifiers extensions. + * (Note that the exact layout of a particular format may vary between + * platforms - we only specify that the same platform should be able + * to import it.) + * + * The total number of planes must not exceed AV_DRM_MAX_PLANES, and + * the order of the planes by increasing layer index followed by + * increasing plane index must be the same as the order which would + * be used for the data pointers in the equivalent software format. + */ +typedef struct AVDRMFrameDescriptor { + /** + * Number of DRM objects making up this frame. + */ + int nb_objects; + /** + * Array of objects making up the frame. + */ + AVDRMObjectDescriptor objects[AV_DRM_MAX_PLANES]; + /** + * Number of layers in the frame. + */ + int nb_layers; + /** + * Array of layers in the frame. + */ + AVDRMLayerDescriptor layers[AV_DRM_MAX_PLANES]; +} AVDRMFrameDescriptor; + +/** + * DRM device. + * + * Allocated as AVHWDeviceContext.hwctx. + */ +typedef struct AVDRMDeviceContext { + /** + * File descriptor of DRM device. + * + * This is used as the device to create frames on, and may also be + * used in some derivation and mapping operations. + * + * If no device is required, set to -1. + */ + int fd; +} AVDRMDeviceContext; + +#endif /* AVUTIL_HWCONTEXT_DRM_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_dxva2.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_dxva2.h new file mode 100644 index 00000000..e1b79bc0 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_dxva2.h @@ -0,0 +1,75 @@ +/* + * 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 AVUTIL_HWCONTEXT_DXVA2_H +#define AVUTIL_HWCONTEXT_DXVA2_H + +/** + * @file + * An API-specific header for AV_HWDEVICE_TYPE_DXVA2. + * + * Only fixed-size pools are supported. + * + * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs + * with the data pointer set to a pointer to IDirect3DSurface9. + */ + +#include +#include + +/** + * This struct is allocated as AVHWDeviceContext.hwctx + */ +typedef struct AVDXVA2DeviceContext { + IDirect3DDeviceManager9 *devmgr; +} AVDXVA2DeviceContext; + +/** + * This struct is allocated as AVHWFramesContext.hwctx + */ +typedef struct AVDXVA2FramesContext { + /** + * The surface type (e.g. DXVA2_VideoProcessorRenderTarget or + * DXVA2_VideoDecoderRenderTarget). Must be set by the caller. + */ + DWORD surface_type; + + /** + * The surface pool. When an external pool is not provided by the caller, + * this will be managed (allocated and filled on init, freed on uninit) by + * libavutil. + */ + IDirect3DSurface9 **surfaces; + int nb_surfaces; + + /** + * Certain drivers require the decoder to be destroyed before the surfaces. + * To allow internally managed pools to work properly in such cases, this + * field is provided. + * + * If it is non-NULL, libavutil will call IDirectXVideoDecoder_Release() on + * it just before the internal surface pool is freed. + * + * This is for convenience only. Some code uses other methods to manage the + * decoder reference. + */ + IDirectXVideoDecoder *decoder_to_release; +} AVDXVA2FramesContext; + +#endif /* AVUTIL_HWCONTEXT_DXVA2_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_mediacodec.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_mediacodec.h new file mode 100644 index 00000000..101a9806 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_mediacodec.h @@ -0,0 +1,36 @@ +/* + * 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 AVUTIL_HWCONTEXT_MEDIACODEC_H +#define AVUTIL_HWCONTEXT_MEDIACODEC_H + +/** + * MediaCodec details. + * + * Allocated as AVHWDeviceContext.hwctx + */ +typedef struct AVMediaCodecDeviceContext { + /** + * android/view/Surface handle, to be filled by the user. + * + * This is the default surface used by decoders on this device. + */ + void *surface; +} AVMediaCodecDeviceContext; + +#endif /* AVUTIL_HWCONTEXT_MEDIACODEC_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_opencl.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_opencl.h new file mode 100644 index 00000000..ef54486c --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_opencl.h @@ -0,0 +1,100 @@ +/* + * 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 AVUTIL_HWCONTEXT_OPENCL_H +#define AVUTIL_HWCONTEXT_OPENCL_H + +#ifdef __APPLE__ +#include +#else +#include +#endif + +#include "frame.h" + +/** + * @file + * API-specific header for AV_HWDEVICE_TYPE_OPENCL. + * + * Pools allocated internally are always dynamic, and are primarily intended + * to be used in OpenCL-only cases. If interoperation is required, it is + * typically required to allocate frames in the other API and then map the + * frames context to OpenCL with av_hwframe_ctx_create_derived(). + */ + +/** + * OpenCL frame descriptor for pool allocation. + * + * In user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs + * with the data pointer pointing at an object of this type describing the + * planes of the frame. + */ +typedef struct AVOpenCLFrameDescriptor { + /** + * Number of planes in the frame. + */ + int nb_planes; + /** + * OpenCL image2d objects for each plane of the frame. + */ + cl_mem planes[AV_NUM_DATA_POINTERS]; +} AVOpenCLFrameDescriptor; + +/** + * OpenCL device details. + * + * Allocated as AVHWDeviceContext.hwctx + */ +typedef struct AVOpenCLDeviceContext { + /** + * The primary device ID of the device. If multiple OpenCL devices + * are associated with the context then this is the one which will + * be used for all operations internal to FFmpeg. + */ + cl_device_id device_id; + /** + * The OpenCL context which will contain all operations and frames on + * this device. + */ + cl_context context; + /** + * The default command queue for this device, which will be used by all + * frames contexts which do not have their own command queue. If not + * intialised by the user, a default queue will be created on the + * primary device. + */ + cl_command_queue command_queue; +} AVOpenCLDeviceContext; + +/** + * OpenCL-specific data associated with a frame pool. + * + * Allocated as AVHWFramesContext.hwctx. + */ +typedef struct AVOpenCLFramesContext { + /** + * The command queue used for internal asynchronous operations on this + * device (av_hwframe_transfer_data(), av_hwframe_map()). + * + * If this is not set, the command queue from the associated device is + * used instead. + */ + cl_command_queue command_queue; +} AVOpenCLFramesContext; + +#endif /* AVUTIL_HWCONTEXT_OPENCL_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_qsv.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_qsv.h new file mode 100644 index 00000000..b98d611c --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_qsv.h @@ -0,0 +1,53 @@ +/* + * 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 AVUTIL_HWCONTEXT_QSV_H +#define AVUTIL_HWCONTEXT_QSV_H + +#include + +/** + * @file + * An API-specific header for AV_HWDEVICE_TYPE_QSV. + * + * This API does not support dynamic frame pools. AVHWFramesContext.pool must + * contain AVBufferRefs whose data pointer points to an mfxFrameSurface1 struct. + */ + +/** + * This struct is allocated as AVHWDeviceContext.hwctx + */ +typedef struct AVQSVDeviceContext { + mfxSession session; +} AVQSVDeviceContext; + +/** + * This struct is allocated as AVHWFramesContext.hwctx + */ +typedef struct AVQSVFramesContext { + mfxFrameSurface1 *surfaces; + int nb_surfaces; + + /** + * A combination of MFX_MEMTYPE_* describing the frame pool. + */ + int frame_type; +} AVQSVFramesContext; + +#endif /* AVUTIL_HWCONTEXT_QSV_H */ + diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vaapi.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vaapi.h new file mode 100644 index 00000000..0b2e071c --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vaapi.h @@ -0,0 +1,117 @@ +/* + * 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 AVUTIL_HWCONTEXT_VAAPI_H +#define AVUTIL_HWCONTEXT_VAAPI_H + +#include + +/** + * @file + * API-specific header for AV_HWDEVICE_TYPE_VAAPI. + * + * Dynamic frame pools are supported, but note that any pool used as a render + * target is required to be of fixed size in order to be be usable as an + * argument to vaCreateContext(). + * + * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs + * with the data pointer set to a VASurfaceID. + */ + +enum { + /** + * The quirks field has been set by the user and should not be detected + * automatically by av_hwdevice_ctx_init(). + */ + AV_VAAPI_DRIVER_QUIRK_USER_SET = (1 << 0), + /** + * The driver does not destroy parameter buffers when they are used by + * vaRenderPicture(). Additional code will be required to destroy them + * separately afterwards. + */ + AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS = (1 << 1), + + /** + * The driver does not support the VASurfaceAttribMemoryType attribute, + * so the surface allocation code will not try to use it. + */ + AV_VAAPI_DRIVER_QUIRK_ATTRIB_MEMTYPE = (1 << 2), + + /** + * The driver does not support surface attributes at all. + * The surface allocation code will never pass them to surface allocation, + * and the results of the vaQuerySurfaceAttributes() call will be faked. + */ + AV_VAAPI_DRIVER_QUIRK_SURFACE_ATTRIBUTES = (1 << 3), +}; + +/** + * VAAPI connection details. + * + * Allocated as AVHWDeviceContext.hwctx + */ +typedef struct AVVAAPIDeviceContext { + /** + * The VADisplay handle, to be filled by the user. + */ + VADisplay display; + /** + * Driver quirks to apply - this is filled by av_hwdevice_ctx_init(), + * with reference to a table of known drivers, unless the + * AV_VAAPI_DRIVER_QUIRK_USER_SET bit is already present. The user + * may need to refer to this field when performing any later + * operations using VAAPI with the same VADisplay. + */ + unsigned int driver_quirks; +} AVVAAPIDeviceContext; + +/** + * VAAPI-specific data associated with a frame pool. + * + * Allocated as AVHWFramesContext.hwctx. + */ +typedef struct AVVAAPIFramesContext { + /** + * Set by the user to apply surface attributes to all surfaces in + * the frame pool. If null, default settings are used. + */ + VASurfaceAttrib *attributes; + int nb_attributes; + /** + * The surfaces IDs of all surfaces in the pool after creation. + * Only valid if AVHWFramesContext.initial_pool_size was positive. + * These are intended to be used as the render_targets arguments to + * vaCreateContext(). + */ + VASurfaceID *surface_ids; + int nb_surfaces; +} AVVAAPIFramesContext; + +/** + * VAAPI hardware pipeline configuration details. + * + * Allocated with av_hwdevice_hwconfig_alloc(). + */ +typedef struct AVVAAPIHWConfig { + /** + * ID of a VAAPI pipeline configuration. + */ + VAConfigID config_id; +} AVVAAPIHWConfig; + +#endif /* AVUTIL_HWCONTEXT_VAAPI_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vdpau.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vdpau.h new file mode 100644 index 00000000..1b7ea1e4 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vdpau.h @@ -0,0 +1,44 @@ +/* + * 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 AVUTIL_HWCONTEXT_VDPAU_H +#define AVUTIL_HWCONTEXT_VDPAU_H + +#include + +/** + * @file + * An API-specific header for AV_HWDEVICE_TYPE_VDPAU. + * + * This API supports dynamic frame pools. AVHWFramesContext.pool must return + * AVBufferRefs whose data pointer is a VdpVideoSurface. + */ + +/** + * This struct is allocated as AVHWDeviceContext.hwctx + */ +typedef struct AVVDPAUDeviceContext { + VdpDevice device; + VdpGetProcAddress *get_proc_address; +} AVVDPAUDeviceContext; + +/** + * AVHWFramesContext.hwctx is currently not used + */ + +#endif /* AVUTIL_HWCONTEXT_VDPAU_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_videotoolbox.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_videotoolbox.h new file mode 100644 index 00000000..25dde85d --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_videotoolbox.h @@ -0,0 +1,96 @@ +/* + * 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 AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H +#define AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H + +#include + +#include + +#include "frame.h" +#include "pixfmt.h" + +/** + * @file + * An API-specific header for AV_HWDEVICE_TYPE_VIDEOTOOLBOX. + * + * This API supports frame allocation using a native CVPixelBufferPool + * instead of an AVBufferPool. + * + * If the API user sets a custom pool, AVHWFramesContext.pool must return + * AVBufferRefs whose data pointer is a CVImageBufferRef or CVPixelBufferRef. + * Note that the underlying CVPixelBuffer could be retained by OS frameworks + * depending on application usage, so it is preferable to let CoreVideo manage + * the pool using the default implementation. + * + * Currently AVHWDeviceContext.hwctx and AVHWFramesContext.hwctx are always + * NULL. + */ + +/** + * Convert a VideoToolbox (actually CoreVideo) format to AVPixelFormat. + * Returns AV_PIX_FMT_NONE if no known equivalent was found. + */ +enum AVPixelFormat av_map_videotoolbox_format_to_pixfmt(uint32_t cv_fmt); + +/** + * Convert an AVPixelFormat to a VideoToolbox (actually CoreVideo) format. + * Returns 0 if no known equivalent was found. + */ +uint32_t av_map_videotoolbox_format_from_pixfmt(enum AVPixelFormat pix_fmt); + +/** + * Same as av_map_videotoolbox_format_from_pixfmt function, but can map and + * return full range pixel formats via a flag. + */ +uint32_t av_map_videotoolbox_format_from_pixfmt2(enum AVPixelFormat pix_fmt, bool full_range); + +/** + * Convert an AVChromaLocation to a VideoToolbox/CoreVideo chroma location string. + * Returns 0 if no known equivalent was found. + */ +CFStringRef av_map_videotoolbox_chroma_loc_from_av(enum AVChromaLocation loc); + +/** + * Convert an AVColorSpace to a VideoToolbox/CoreVideo color matrix string. + * Returns 0 if no known equivalent was found. + */ +CFStringRef av_map_videotoolbox_color_matrix_from_av(enum AVColorSpace space); + +/** + * Convert an AVColorPrimaries to a VideoToolbox/CoreVideo color primaries string. + * Returns 0 if no known equivalent was found. + */ +CFStringRef av_map_videotoolbox_color_primaries_from_av(enum AVColorPrimaries pri); + +/** + * Convert an AVColorTransferCharacteristic to a VideoToolbox/CoreVideo color transfer + * function string. + * Returns 0 if no known equivalent was found. + */ +CFStringRef av_map_videotoolbox_color_trc_from_av(enum AVColorTransferCharacteristic trc); + +/** + * Update a CVPixelBufferRef's metadata to based on an AVFrame. + * Returns 0 if no known equivalent was found. + */ +int av_vt_pixbuf_set_attachments(void *log_ctx, + CVPixelBufferRef pixbuf, const struct AVFrame *src); + +#endif /* AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vulkan.h b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vulkan.h new file mode 100644 index 00000000..df86c85b --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/hwcontext_vulkan.h @@ -0,0 +1,281 @@ +/* + * 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 AVUTIL_HWCONTEXT_VULKAN_H +#define AVUTIL_HWCONTEXT_VULKAN_H + +#if defined(_WIN32) && !defined(VK_USE_PLATFORM_WIN32_KHR) +#define VK_USE_PLATFORM_WIN32_KHR +#endif +#include + +#include "pixfmt.h" +#include "frame.h" + +/** + * @file + * API-specific header for AV_HWDEVICE_TYPE_VULKAN. + * + * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs + * with the data pointer set to an AVVkFrame. + */ + +/** + * Main Vulkan context, allocated as AVHWDeviceContext.hwctx. + * All of these can be set before init to change what the context uses + */ +typedef struct AVVulkanDeviceContext { + /** + * Custom memory allocator, else NULL + */ + const VkAllocationCallbacks *alloc; + + /** + * Pointer to the instance-provided vkGetInstanceProcAddr loading function. + * If NULL, will pick either libvulkan or libvolk, depending on libavutil's + * compilation settings, and set this field. + */ + PFN_vkGetInstanceProcAddr get_proc_addr; + + /** + * Vulkan instance. Must be at least version 1.2. + */ + VkInstance inst; + + /** + * Physical device + */ + VkPhysicalDevice phys_dev; + + /** + * Active device + */ + VkDevice act_dev; + + /** + * This structure should be set to the set of features that present and enabled + * during device creation. When a device is created by FFmpeg, it will default to + * enabling all that are present of the shaderImageGatherExtended, + * fragmentStoresAndAtomics, shaderInt64 and vertexPipelineStoresAndAtomics features. + */ + VkPhysicalDeviceFeatures2 device_features; + + /** + * Enabled instance extensions. + * If supplying your own device context, set this to an array of strings, with + * each entry containing the specified Vulkan extension string to enable. + * Duplicates are possible and accepted. + * If no extensions are enabled, set these fields to NULL, and 0 respectively. + */ + const char * const *enabled_inst_extensions; + int nb_enabled_inst_extensions; + + /** + * Enabled device extensions. By default, VK_KHR_external_memory_fd, + * VK_EXT_external_memory_dma_buf, VK_EXT_image_drm_format_modifier, + * VK_KHR_external_semaphore_fd and VK_EXT_external_memory_host are enabled if found. + * If supplying your own device context, these fields takes the same format as + * the above fields, with the same conditions that duplicates are possible + * and accepted, and that NULL and 0 respectively means no extensions are enabled. + */ + const char * const *enabled_dev_extensions; + int nb_enabled_dev_extensions; + + /** + * Queue family index for graphics operations, and the number of queues + * enabled for it. If unavaiable, will be set to -1. Not required. + * av_hwdevice_create() will attempt to find a dedicated queue for each + * queue family, or pick the one with the least unrelated flags set. + * Queue indices here may overlap if a queue has to share capabilities. + */ + int queue_family_index; + int nb_graphics_queues; + + /** + * Queue family index for transfer operations and the number of queues + * enabled. Required. + */ + int queue_family_tx_index; + int nb_tx_queues; + + /** + * Queue family index for compute operations and the number of queues + * enabled. Required. + */ + int queue_family_comp_index; + int nb_comp_queues; + + /** + * Queue family index for video encode ops, and the amount of queues enabled. + * If the device doesn't support such, queue_family_encode_index will be -1. + * Not required. + */ + int queue_family_encode_index; + int nb_encode_queues; + + /** + * Queue family index for video decode ops, and the amount of queues enabled. + * If the device doesn't support such, queue_family_decode_index will be -1. + * Not required. + */ + int queue_family_decode_index; + int nb_decode_queues; +} AVVulkanDeviceContext; + +/** + * Defines the behaviour of frame allocation. + */ +typedef enum AVVkFrameFlags { + /* Unless this flag is set, autodetected flags will be OR'd based on the + * device and tiling during av_hwframe_ctx_init(). */ + AV_VK_FRAME_FLAG_NONE = (1ULL << 0), + + /* Image planes will be allocated in a single VkDeviceMemory, rather + * than as per-plane VkDeviceMemory allocations. Required for exporting + * to VAAPI on Intel devices. */ + AV_VK_FRAME_FLAG_CONTIGUOUS_MEMORY = (1ULL << 1), +} AVVkFrameFlags; + +/** + * Allocated as AVHWFramesContext.hwctx, used to set pool-specific options + */ +typedef struct AVVulkanFramesContext { + /** + * Controls the tiling of allocated frames. If left as optimal tiling, + * then during av_hwframe_ctx_init() will decide based on whether the device + * supports DRM modifiers, or if the linear_images flag is set, otherwise + * will allocate optimally-tiled images. + */ + VkImageTiling tiling; + + /** + * Defines extra usage of output frames. If left as 0, the following bits + * are set: TRANSFER_SRC, TRANSFER_DST. SAMPLED and STORAGE. + */ + VkImageUsageFlagBits usage; + + /** + * Extension data for image creation. + * If VkImageDrmFormatModifierListCreateInfoEXT is present in the chain, + * and the device supports DRM modifiers, then images will be allocated + * with the specific requested DRM modifiers. + * Additional structures may be added at av_hwframe_ctx_init() time, + * which will be freed automatically on uninit(), so users need only free + * any structures they've allocated themselves. + */ + void *create_pnext; + + /** + * Extension data for memory allocation. Must have as many entries as + * the number of planes of the sw_format. + * This will be chained to VkExportMemoryAllocateInfo, which is used + * to make all pool images exportable to other APIs if the necessary + * extensions are present in enabled_dev_extensions. + */ + void *alloc_pnext[AV_NUM_DATA_POINTERS]; + + /** + * A combination of AVVkFrameFlags. Unless AV_VK_FRAME_FLAG_NONE is set, + * autodetected flags will be OR'd based on the device and tiling during + * av_hwframe_ctx_init(). + */ + AVVkFrameFlags flags; +} AVVulkanFramesContext; + +/* + * Frame structure, the VkFormat of the image will always match + * the pool's sw_format. + * All frames, imported or allocated, will be created with the + * VK_IMAGE_CREATE_ALIAS_BIT flag set, so the memory may be aliased if needed. + * + * If all queue family indices in the device context are the same, + * images will be created with the EXCLUSIVE sharing mode. Otherwise, all images + * will be created using the CONCURRENT sharing mode. + * + * @note the size of this structure is not part of the ABI, to allocate + * you must use @av_vk_frame_alloc(). + */ +typedef struct AVVkFrame { + /** + * Vulkan images to which the memory is bound to. + */ + VkImage img[AV_NUM_DATA_POINTERS]; + + /** + * The same tiling must be used for all images in the frame. + */ + VkImageTiling tiling; + + /** + * Memory backing the images. Could be less than the amount of planes, + * in which case the offset value will indicate the binding offset of + * each plane in the memory. + */ + VkDeviceMemory mem[AV_NUM_DATA_POINTERS]; + size_t size[AV_NUM_DATA_POINTERS]; + + /** + * OR'd flags for all memory allocated + */ + VkMemoryPropertyFlagBits flags; + + /** + * Updated after every barrier + */ + VkAccessFlagBits access[AV_NUM_DATA_POINTERS]; + VkImageLayout layout[AV_NUM_DATA_POINTERS]; + + /** + * Synchronization timeline semaphores, one for each sw_format plane. + * Must not be freed manually. Must be waited on at every submission using + * the value in sem_value, and must be signalled at every submission, + * using an incremented value. + */ + VkSemaphore sem[AV_NUM_DATA_POINTERS]; + + /** + * Up to date semaphore value at which each image becomes accessible. + * Clients must wait on this value when submitting a command queue, + * and increment it when signalling. + */ + uint64_t sem_value[AV_NUM_DATA_POINTERS]; + + /** + * Internal data. + */ + struct AVVkFrameInternal *internal; + + /** + * Describes the binding offset of each plane to the VkDeviceMemory. + */ + ptrdiff_t offset[AV_NUM_DATA_POINTERS]; +} AVVkFrame; + +/** + * Allocates a single AVVkFrame and initializes everything as 0. + * @note Must be freed via av_free() + */ +AVVkFrame *av_vk_frame_alloc(void); + +/** + * Returns the format of each image up to the number of planes for a given sw_format. + * Returns NULL on unsupported formats. + */ +const VkFormat *av_vkfmt_from_pixfmt(enum AVPixelFormat p); + +#endif /* AVUTIL_HWCONTEXT_VULKAN_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/imgutils.h b/third_party/ffmpeg/uos/amd64/include/libavutil/imgutils.h new file mode 100644 index 00000000..be533355 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/imgutils.h @@ -0,0 +1,311 @@ +/* + * 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 AVUTIL_IMGUTILS_H +#define AVUTIL_IMGUTILS_H + +/** + * @file + * misc image utilities + * + * @addtogroup lavu_picture + * @{ + */ + +#include +#include +#include "pixdesc.h" +#include "pixfmt.h" +#include "rational.h" + +/** + * Compute the max pixel step for each plane of an image with a + * format described by pixdesc. + * + * The pixel step is the distance in bytes between the first byte of + * the group of bytes which describe a pixel component and the first + * byte of the successive group in the same plane for the same + * component. + * + * @param max_pixsteps an array which is filled with the max pixel step + * for each plane. Since a plane may contain different pixel + * components, the computed max_pixsteps[plane] is relative to the + * component in the plane with the max pixel step. + * @param max_pixstep_comps an array which is filled with the component + * for each plane which has the max pixel step. May be NULL. + */ +void av_image_fill_max_pixsteps(int max_pixsteps[4], int max_pixstep_comps[4], + const AVPixFmtDescriptor *pixdesc); + +/** + * Compute the size of an image line with format pix_fmt and width + * width for the plane plane. + * + * @return the computed size in bytes + */ +int av_image_get_linesize(enum AVPixelFormat pix_fmt, int width, int plane); + +/** + * Fill plane linesizes for an image with pixel format pix_fmt and + * width width. + * + * @param linesizes array to be filled with the linesize for each plane + * @return >= 0 in case of success, a negative error code otherwise + */ +int av_image_fill_linesizes(int linesizes[4], enum AVPixelFormat pix_fmt, int width); + +/** + * Fill plane sizes for an image with pixel format pix_fmt and height height. + * + * @param size the array to be filled with the size of each image plane + * @param linesizes the array containing the linesize for each + * plane, should be filled by av_image_fill_linesizes() + * @return >= 0 in case of success, a negative error code otherwise + * + * @note The linesize parameters have the type ptrdiff_t here, while they are + * int for av_image_fill_linesizes(). + */ +int av_image_fill_plane_sizes(size_t size[4], enum AVPixelFormat pix_fmt, + int height, const ptrdiff_t linesizes[4]); + +/** + * Fill plane data pointers for an image with pixel format pix_fmt and + * height height. + * + * @param data pointers array to be filled with the pointer for each image plane + * @param ptr the pointer to a buffer which will contain the image + * @param linesizes the array containing the linesize for each + * plane, should be filled by av_image_fill_linesizes() + * @return the size in bytes required for the image buffer, a negative + * error code in case of failure + */ +int av_image_fill_pointers(uint8_t *data[4], enum AVPixelFormat pix_fmt, int height, + uint8_t *ptr, const int linesizes[4]); + +/** + * Allocate an image with size w and h and pixel format pix_fmt, and + * fill pointers and linesizes accordingly. + * The allocated image buffer has to be freed by using + * av_freep(&pointers[0]). + * + * @param align the value to use for buffer size alignment + * @return the size in bytes required for the image buffer, a negative + * error code in case of failure + */ +int av_image_alloc(uint8_t *pointers[4], int linesizes[4], + int w, int h, enum AVPixelFormat pix_fmt, int align); + +/** + * Copy image plane from src to dst. + * That is, copy "height" number of lines of "bytewidth" bytes each. + * The first byte of each successive line is separated by *_linesize + * bytes. + * + * bytewidth must be contained by both absolute values of dst_linesize + * and src_linesize, otherwise the function behavior is undefined. + * + * @param dst_linesize linesize for the image plane in dst + * @param src_linesize linesize for the image plane in src + */ +void av_image_copy_plane(uint8_t *dst, int dst_linesize, + const uint8_t *src, int src_linesize, + int bytewidth, int height); + +/** + * Copy image data located in uncacheable (e.g. GPU mapped) memory. Where + * available, this function will use special functionality for reading from such + * memory, which may result in greatly improved performance compared to plain + * av_image_copy_plane(). + * + * bytewidth must be contained by both absolute values of dst_linesize + * and src_linesize, otherwise the function behavior is undefined. + * + * @note The linesize parameters have the type ptrdiff_t here, while they are + * int for av_image_copy_plane(). + * @note On x86, the linesizes currently need to be aligned to the cacheline + * size (i.e. 64) to get improved performance. + */ +void av_image_copy_plane_uc_from(uint8_t *dst, ptrdiff_t dst_linesize, + const uint8_t *src, ptrdiff_t src_linesize, + ptrdiff_t bytewidth, int height); + +/** + * Copy image in src_data to dst_data. + * + * @param dst_linesizes linesizes for the image in dst_data + * @param src_linesizes linesizes for the image in src_data + */ +void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4], + const uint8_t *src_data[4], const int src_linesizes[4], + enum AVPixelFormat pix_fmt, int width, int height); + +/** + * Copy image data located in uncacheable (e.g. GPU mapped) memory. Where + * available, this function will use special functionality for reading from such + * memory, which may result in greatly improved performance compared to plain + * av_image_copy(). + * + * The data pointers and the linesizes must be aligned to the maximum required + * by the CPU architecture. + * + * @note The linesize parameters have the type ptrdiff_t here, while they are + * int for av_image_copy(). + * @note On x86, the linesizes currently need to be aligned to the cacheline + * size (i.e. 64) to get improved performance. + */ +void av_image_copy_uc_from(uint8_t *dst_data[4], const ptrdiff_t dst_linesizes[4], + const uint8_t *src_data[4], const ptrdiff_t src_linesizes[4], + enum AVPixelFormat pix_fmt, int width, int height); + +/** + * Setup the data pointers and linesizes based on the specified image + * parameters and the provided array. + * + * The fields of the given image are filled in by using the src + * address which points to the image data buffer. Depending on the + * specified pixel format, one or multiple image data pointers and + * line sizes will be set. If a planar format is specified, several + * pointers will be set pointing to the different picture planes and + * the line sizes of the different planes will be stored in the + * lines_sizes array. Call with src == NULL to get the required + * size for the src buffer. + * + * To allocate the buffer and fill in the dst_data and dst_linesize in + * one call, use av_image_alloc(). + * + * @param dst_data data pointers to be filled in + * @param dst_linesize linesizes for the image in dst_data to be filled in + * @param src buffer which will contain or contains the actual image data, can be NULL + * @param pix_fmt the pixel format of the image + * @param width the width of the image in pixels + * @param height the height of the image in pixels + * @param align the value used in src for linesize alignment + * @return the size in bytes required for src, a negative error code + * in case of failure + */ +int av_image_fill_arrays(uint8_t *dst_data[4], int dst_linesize[4], + const uint8_t *src, + enum AVPixelFormat pix_fmt, int width, int height, int align); + +/** + * Return the size in bytes of the amount of data required to store an + * image with the given parameters. + * + * @param pix_fmt the pixel format of the image + * @param width the width of the image in pixels + * @param height the height of the image in pixels + * @param align the assumed linesize alignment + * @return the buffer size in bytes, a negative error code in case of failure + */ +int av_image_get_buffer_size(enum AVPixelFormat pix_fmt, int width, int height, int align); + +/** + * Copy image data from an image into a buffer. + * + * av_image_get_buffer_size() can be used to compute the required size + * for the buffer to fill. + * + * @param dst a buffer into which picture data will be copied + * @param dst_size the size in bytes of dst + * @param src_data pointers containing the source image data + * @param src_linesize linesizes for the image in src_data + * @param pix_fmt the pixel format of the source image + * @param width the width of the source image in pixels + * @param height the height of the source image in pixels + * @param align the assumed linesize alignment for dst + * @return the number of bytes written to dst, or a negative value + * (error code) on error + */ +int av_image_copy_to_buffer(uint8_t *dst, int dst_size, + const uint8_t * const src_data[4], const int src_linesize[4], + enum AVPixelFormat pix_fmt, int width, int height, int align); + +/** + * Check if the given dimension of an image is valid, meaning that all + * bytes of the image can be addressed with a signed int. + * + * @param w the width of the picture + * @param h the height of the picture + * @param log_offset the offset to sum to the log level for logging with log_ctx + * @param log_ctx the parent logging context, it may be NULL + * @return >= 0 if valid, a negative error code otherwise + */ +int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx); + +/** + * Check if the given dimension of an image is valid, meaning that all + * bytes of a plane of an image with the specified pix_fmt can be addressed + * with a signed int. + * + * @param w the width of the picture + * @param h the height of the picture + * @param max_pixels the maximum number of pixels the user wants to accept + * @param pix_fmt the pixel format, can be AV_PIX_FMT_NONE if unknown. + * @param log_offset the offset to sum to the log level for logging with log_ctx + * @param log_ctx the parent logging context, it may be NULL + * @return >= 0 if valid, a negative error code otherwise + */ +int av_image_check_size2(unsigned int w, unsigned int h, int64_t max_pixels, enum AVPixelFormat pix_fmt, int log_offset, void *log_ctx); + +/** + * Check if the given sample aspect ratio of an image is valid. + * + * It is considered invalid if the denominator is 0 or if applying the ratio + * to the image size would make the smaller dimension less than 1. If the + * sar numerator is 0, it is considered unknown and will return as valid. + * + * @param w width of the image + * @param h height of the image + * @param sar sample aspect ratio of the image + * @return 0 if valid, a negative AVERROR code otherwise + */ +int av_image_check_sar(unsigned int w, unsigned int h, AVRational sar); + +/** + * Overwrite the image data with black. This is suitable for filling a + * sub-rectangle of an image, meaning the padding between the right most pixel + * and the left most pixel on the next line will not be overwritten. For some + * formats, the image size might be rounded up due to inherent alignment. + * + * If the pixel format has alpha, the alpha is cleared to opaque. + * + * This can return an error if the pixel format is not supported. Normally, all + * non-hwaccel pixel formats should be supported. + * + * Passing NULL for dst_data is allowed. Then the function returns whether the + * operation would have succeeded. (It can return an error if the pix_fmt is + * not supported.) + * + * @param dst_data data pointers to destination image + * @param dst_linesize linesizes for the destination image + * @param pix_fmt the pixel format of the image + * @param range the color range of the image (important for colorspaces such as YUV) + * @param width the width of the image in pixels + * @param height the height of the image in pixels + * @return 0 if the image data was cleared, a negative AVERROR code otherwise + */ +int av_image_fill_black(uint8_t *dst_data[4], const ptrdiff_t dst_linesize[4], + enum AVPixelFormat pix_fmt, enum AVColorRange range, + int width, int height); + +/** + * @} + */ + + +#endif /* AVUTIL_IMGUTILS_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/intfloat.h b/third_party/ffmpeg/uos/amd64/include/libavutil/intfloat.h new file mode 100644 index 00000000..fe3d7ec4 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/intfloat.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2011 Mans Rullgard + * + * 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 AVUTIL_INTFLOAT_H +#define AVUTIL_INTFLOAT_H + +#include +#include "attributes.h" + +union av_intfloat32 { + uint32_t i; + float f; +}; + +union av_intfloat64 { + uint64_t i; + double f; +}; + +/** + * Reinterpret a 32-bit integer as a float. + */ +static av_always_inline float av_int2float(uint32_t i) +{ + union av_intfloat32 v; + v.i = i; + return v.f; +} + +/** + * Reinterpret a float as a 32-bit integer. + */ +static av_always_inline uint32_t av_float2int(float f) +{ + union av_intfloat32 v; + v.f = f; + return v.i; +} + +/** + * Reinterpret a 64-bit integer as a double. + */ +static av_always_inline double av_int2double(uint64_t i) +{ + union av_intfloat64 v; + v.i = i; + return v.f; +} + +/** + * Reinterpret a double as a 64-bit integer. + */ +static av_always_inline uint64_t av_double2int(double f) +{ + union av_intfloat64 v; + v.f = f; + return v.i; +} + +#endif /* AVUTIL_INTFLOAT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/intreadwrite.h b/third_party/ffmpeg/uos/amd64/include/libavutil/intreadwrite.h new file mode 100644 index 00000000..4c8413a5 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/intreadwrite.h @@ -0,0 +1,644 @@ +/* + * 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 AVUTIL_INTREADWRITE_H +#define AVUTIL_INTREADWRITE_H + +#include +#include "libavutil/avconfig.h" +#include "attributes.h" +#include "bswap.h" + +typedef union { + uint64_t u64; + uint32_t u32[2]; + uint16_t u16[4]; + uint8_t u8 [8]; + double f64; + float f32[2]; +} av_alias av_alias64; + +typedef union { + uint32_t u32; + uint16_t u16[2]; + uint8_t u8 [4]; + float f32; +} av_alias av_alias32; + +typedef union { + uint16_t u16; + uint8_t u8 [2]; +} av_alias av_alias16; + +/* + * Arch-specific headers can provide any combination of + * AV_[RW][BLN](16|24|32|48|64) and AV_(COPY|SWAP|ZERO)(64|128) macros. + * Preprocessor symbols must be defined, even if these are implemented + * as inline functions. + * + * R/W means read/write, B/L/N means big/little/native endianness. + * The following macros require aligned access, compared to their + * unaligned variants: AV_(COPY|SWAP|ZERO)(64|128), AV_[RW]N[8-64]A. + * Incorrect usage may range from abysmal performance to crash + * depending on the platform. + * + * The unaligned variants are AV_[RW][BLN][8-64] and AV_COPY*U. + */ + +#ifdef HAVE_AV_CONFIG_H + +#include "config.h" + +#if ARCH_ARM +# include "arm/intreadwrite.h" +#elif ARCH_AVR32 +# include "avr32/intreadwrite.h" +#elif ARCH_MIPS +# include "mips/intreadwrite.h" +#elif ARCH_PPC +# include "ppc/intreadwrite.h" +#elif ARCH_TOMI +# include "tomi/intreadwrite.h" +#elif ARCH_X86 +# include "x86/intreadwrite.h" +#endif + +#endif /* HAVE_AV_CONFIG_H */ + +/* + * Map AV_RNXX <-> AV_R[BL]XX for all variants provided by per-arch headers. + */ + +#if AV_HAVE_BIGENDIAN + +# if defined(AV_RN16) && !defined(AV_RB16) +# define AV_RB16(p) AV_RN16(p) +# elif !defined(AV_RN16) && defined(AV_RB16) +# define AV_RN16(p) AV_RB16(p) +# endif + +# if defined(AV_WN16) && !defined(AV_WB16) +# define AV_WB16(p, v) AV_WN16(p, v) +# elif !defined(AV_WN16) && defined(AV_WB16) +# define AV_WN16(p, v) AV_WB16(p, v) +# endif + +# if defined(AV_RN24) && !defined(AV_RB24) +# define AV_RB24(p) AV_RN24(p) +# elif !defined(AV_RN24) && defined(AV_RB24) +# define AV_RN24(p) AV_RB24(p) +# endif + +# if defined(AV_WN24) && !defined(AV_WB24) +# define AV_WB24(p, v) AV_WN24(p, v) +# elif !defined(AV_WN24) && defined(AV_WB24) +# define AV_WN24(p, v) AV_WB24(p, v) +# endif + +# if defined(AV_RN32) && !defined(AV_RB32) +# define AV_RB32(p) AV_RN32(p) +# elif !defined(AV_RN32) && defined(AV_RB32) +# define AV_RN32(p) AV_RB32(p) +# endif + +# if defined(AV_WN32) && !defined(AV_WB32) +# define AV_WB32(p, v) AV_WN32(p, v) +# elif !defined(AV_WN32) && defined(AV_WB32) +# define AV_WN32(p, v) AV_WB32(p, v) +# endif + +# if defined(AV_RN48) && !defined(AV_RB48) +# define AV_RB48(p) AV_RN48(p) +# elif !defined(AV_RN48) && defined(AV_RB48) +# define AV_RN48(p) AV_RB48(p) +# endif + +# if defined(AV_WN48) && !defined(AV_WB48) +# define AV_WB48(p, v) AV_WN48(p, v) +# elif !defined(AV_WN48) && defined(AV_WB48) +# define AV_WN48(p, v) AV_WB48(p, v) +# endif + +# if defined(AV_RN64) && !defined(AV_RB64) +# define AV_RB64(p) AV_RN64(p) +# elif !defined(AV_RN64) && defined(AV_RB64) +# define AV_RN64(p) AV_RB64(p) +# endif + +# if defined(AV_WN64) && !defined(AV_WB64) +# define AV_WB64(p, v) AV_WN64(p, v) +# elif !defined(AV_WN64) && defined(AV_WB64) +# define AV_WN64(p, v) AV_WB64(p, v) +# endif + +#else /* AV_HAVE_BIGENDIAN */ + +# if defined(AV_RN16) && !defined(AV_RL16) +# define AV_RL16(p) AV_RN16(p) +# elif !defined(AV_RN16) && defined(AV_RL16) +# define AV_RN16(p) AV_RL16(p) +# endif + +# if defined(AV_WN16) && !defined(AV_WL16) +# define AV_WL16(p, v) AV_WN16(p, v) +# elif !defined(AV_WN16) && defined(AV_WL16) +# define AV_WN16(p, v) AV_WL16(p, v) +# endif + +# if defined(AV_RN24) && !defined(AV_RL24) +# define AV_RL24(p) AV_RN24(p) +# elif !defined(AV_RN24) && defined(AV_RL24) +# define AV_RN24(p) AV_RL24(p) +# endif + +# if defined(AV_WN24) && !defined(AV_WL24) +# define AV_WL24(p, v) AV_WN24(p, v) +# elif !defined(AV_WN24) && defined(AV_WL24) +# define AV_WN24(p, v) AV_WL24(p, v) +# endif + +# if defined(AV_RN32) && !defined(AV_RL32) +# define AV_RL32(p) AV_RN32(p) +# elif !defined(AV_RN32) && defined(AV_RL32) +# define AV_RN32(p) AV_RL32(p) +# endif + +# if defined(AV_WN32) && !defined(AV_WL32) +# define AV_WL32(p, v) AV_WN32(p, v) +# elif !defined(AV_WN32) && defined(AV_WL32) +# define AV_WN32(p, v) AV_WL32(p, v) +# endif + +# if defined(AV_RN48) && !defined(AV_RL48) +# define AV_RL48(p) AV_RN48(p) +# elif !defined(AV_RN48) && defined(AV_RL48) +# define AV_RN48(p) AV_RL48(p) +# endif + +# if defined(AV_WN48) && !defined(AV_WL48) +# define AV_WL48(p, v) AV_WN48(p, v) +# elif !defined(AV_WN48) && defined(AV_WL48) +# define AV_WN48(p, v) AV_WL48(p, v) +# endif + +# if defined(AV_RN64) && !defined(AV_RL64) +# define AV_RL64(p) AV_RN64(p) +# elif !defined(AV_RN64) && defined(AV_RL64) +# define AV_RN64(p) AV_RL64(p) +# endif + +# if defined(AV_WN64) && !defined(AV_WL64) +# define AV_WL64(p, v) AV_WN64(p, v) +# elif !defined(AV_WN64) && defined(AV_WL64) +# define AV_WN64(p, v) AV_WL64(p, v) +# endif + +#endif /* !AV_HAVE_BIGENDIAN */ + +/* + * Define AV_[RW]N helper macros to simplify definitions not provided + * by per-arch headers. + */ + +#if defined(__GNUC__) + +union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias; +union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias; +union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias; + +# define AV_RN(s, p) (((const union unaligned_##s *) (p))->l) +# define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v)) + +#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_X64) || defined(_M_ARM64)) && AV_HAVE_FAST_UNALIGNED + +# define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p))) +# define AV_WN(s, p, v) (*((__unaligned uint##s##_t*)(p)) = (v)) + +#elif AV_HAVE_FAST_UNALIGNED + +# define AV_RN(s, p) (((const av_alias##s*)(p))->u##s) +# define AV_WN(s, p, v) (((av_alias##s*)(p))->u##s = (v)) + +#else + +#ifndef AV_RB16 +# define AV_RB16(x) \ + ((((const uint8_t*)(x))[0] << 8) | \ + ((const uint8_t*)(x))[1]) +#endif +#ifndef AV_WB16 +# define AV_WB16(p, val) do { \ + uint16_t d = (val); \ + ((uint8_t*)(p))[1] = (d); \ + ((uint8_t*)(p))[0] = (d)>>8; \ + } while(0) +#endif + +#ifndef AV_RL16 +# define AV_RL16(x) \ + ((((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL16 +# define AV_WL16(p, val) do { \ + uint16_t d = (val); \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + } while(0) +#endif + +#ifndef AV_RB32 +# define AV_RB32(x) \ + (((uint32_t)((const uint8_t*)(x))[0] << 24) | \ + (((const uint8_t*)(x))[1] << 16) | \ + (((const uint8_t*)(x))[2] << 8) | \ + ((const uint8_t*)(x))[3]) +#endif +#ifndef AV_WB32 +# define AV_WB32(p, val) do { \ + uint32_t d = (val); \ + ((uint8_t*)(p))[3] = (d); \ + ((uint8_t*)(p))[2] = (d)>>8; \ + ((uint8_t*)(p))[1] = (d)>>16; \ + ((uint8_t*)(p))[0] = (d)>>24; \ + } while(0) +#endif + +#ifndef AV_RL32 +# define AV_RL32(x) \ + (((uint32_t)((const uint8_t*)(x))[3] << 24) | \ + (((const uint8_t*)(x))[2] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL32 +# define AV_WL32(p, val) do { \ + uint32_t d = (val); \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + ((uint8_t*)(p))[3] = (d)>>24; \ + } while(0) +#endif + +#ifndef AV_RB64 +# define AV_RB64(x) \ + (((uint64_t)((const uint8_t*)(x))[0] << 56) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 48) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 40) | \ + ((uint64_t)((const uint8_t*)(x))[3] << 32) | \ + ((uint64_t)((const uint8_t*)(x))[4] << 24) | \ + ((uint64_t)((const uint8_t*)(x))[5] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[6] << 8) | \ + (uint64_t)((const uint8_t*)(x))[7]) +#endif +#ifndef AV_WB64 +# define AV_WB64(p, val) do { \ + uint64_t d = (val); \ + ((uint8_t*)(p))[7] = (d); \ + ((uint8_t*)(p))[6] = (d)>>8; \ + ((uint8_t*)(p))[5] = (d)>>16; \ + ((uint8_t*)(p))[4] = (d)>>24; \ + ((uint8_t*)(p))[3] = (d)>>32; \ + ((uint8_t*)(p))[2] = (d)>>40; \ + ((uint8_t*)(p))[1] = (d)>>48; \ + ((uint8_t*)(p))[0] = (d)>>56; \ + } while(0) +#endif + +#ifndef AV_RL64 +# define AV_RL64(x) \ + (((uint64_t)((const uint8_t*)(x))[7] << 56) | \ + ((uint64_t)((const uint8_t*)(x))[6] << 48) | \ + ((uint64_t)((const uint8_t*)(x))[5] << 40) | \ + ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ + ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ + (uint64_t)((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL64 +# define AV_WL64(p, val) do { \ + uint64_t d = (val); \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + ((uint8_t*)(p))[3] = (d)>>24; \ + ((uint8_t*)(p))[4] = (d)>>32; \ + ((uint8_t*)(p))[5] = (d)>>40; \ + ((uint8_t*)(p))[6] = (d)>>48; \ + ((uint8_t*)(p))[7] = (d)>>56; \ + } while(0) +#endif + +#if AV_HAVE_BIGENDIAN +# define AV_RN(s, p) AV_RB##s(p) +# define AV_WN(s, p, v) AV_WB##s(p, v) +#else +# define AV_RN(s, p) AV_RL##s(p) +# define AV_WN(s, p, v) AV_WL##s(p, v) +#endif + +#endif /* HAVE_FAST_UNALIGNED */ + +#ifndef AV_RN16 +# define AV_RN16(p) AV_RN(16, p) +#endif + +#ifndef AV_RN32 +# define AV_RN32(p) AV_RN(32, p) +#endif + +#ifndef AV_RN64 +# define AV_RN64(p) AV_RN(64, p) +#endif + +#ifndef AV_WN16 +# define AV_WN16(p, v) AV_WN(16, p, v) +#endif + +#ifndef AV_WN32 +# define AV_WN32(p, v) AV_WN(32, p, v) +#endif + +#ifndef AV_WN64 +# define AV_WN64(p, v) AV_WN(64, p, v) +#endif + +#if AV_HAVE_BIGENDIAN +# define AV_RB(s, p) AV_RN##s(p) +# define AV_WB(s, p, v) AV_WN##s(p, v) +# define AV_RL(s, p) av_bswap##s(AV_RN##s(p)) +# define AV_WL(s, p, v) AV_WN##s(p, av_bswap##s(v)) +#else +# define AV_RB(s, p) av_bswap##s(AV_RN##s(p)) +# define AV_WB(s, p, v) AV_WN##s(p, av_bswap##s(v)) +# define AV_RL(s, p) AV_RN##s(p) +# define AV_WL(s, p, v) AV_WN##s(p, v) +#endif + +#define AV_RB8(x) (((const uint8_t*)(x))[0]) +#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0) + +#define AV_RL8(x) AV_RB8(x) +#define AV_WL8(p, d) AV_WB8(p, d) + +#ifndef AV_RB16 +# define AV_RB16(p) AV_RB(16, p) +#endif +#ifndef AV_WB16 +# define AV_WB16(p, v) AV_WB(16, p, v) +#endif + +#ifndef AV_RL16 +# define AV_RL16(p) AV_RL(16, p) +#endif +#ifndef AV_WL16 +# define AV_WL16(p, v) AV_WL(16, p, v) +#endif + +#ifndef AV_RB32 +# define AV_RB32(p) AV_RB(32, p) +#endif +#ifndef AV_WB32 +# define AV_WB32(p, v) AV_WB(32, p, v) +#endif + +#ifndef AV_RL32 +# define AV_RL32(p) AV_RL(32, p) +#endif +#ifndef AV_WL32 +# define AV_WL32(p, v) AV_WL(32, p, v) +#endif + +#ifndef AV_RB64 +# define AV_RB64(p) AV_RB(64, p) +#endif +#ifndef AV_WB64 +# define AV_WB64(p, v) AV_WB(64, p, v) +#endif + +#ifndef AV_RL64 +# define AV_RL64(p) AV_RL(64, p) +#endif +#ifndef AV_WL64 +# define AV_WL64(p, v) AV_WL(64, p, v) +#endif + +#ifndef AV_RB24 +# define AV_RB24(x) \ + ((((const uint8_t*)(x))[0] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[2]) +#endif +#ifndef AV_WB24 +# define AV_WB24(p, d) do { \ + ((uint8_t*)(p))[2] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[0] = (d)>>16; \ + } while(0) +#endif + +#ifndef AV_RL24 +# define AV_RL24(x) \ + ((((const uint8_t*)(x))[2] << 16) | \ + (((const uint8_t*)(x))[1] << 8) | \ + ((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL24 +# define AV_WL24(p, d) do { \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + } while(0) +#endif + +#ifndef AV_RB48 +# define AV_RB48(x) \ + (((uint64_t)((const uint8_t*)(x))[0] << 40) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 32) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 24) | \ + ((uint64_t)((const uint8_t*)(x))[3] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[4] << 8) | \ + (uint64_t)((const uint8_t*)(x))[5]) +#endif +#ifndef AV_WB48 +# define AV_WB48(p, darg) do { \ + uint64_t d = (darg); \ + ((uint8_t*)(p))[5] = (d); \ + ((uint8_t*)(p))[4] = (d)>>8; \ + ((uint8_t*)(p))[3] = (d)>>16; \ + ((uint8_t*)(p))[2] = (d)>>24; \ + ((uint8_t*)(p))[1] = (d)>>32; \ + ((uint8_t*)(p))[0] = (d)>>40; \ + } while(0) +#endif + +#ifndef AV_RL48 +# define AV_RL48(x) \ + (((uint64_t)((const uint8_t*)(x))[5] << 40) | \ + ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ + ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ + ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ + ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ + (uint64_t)((const uint8_t*)(x))[0]) +#endif +#ifndef AV_WL48 +# define AV_WL48(p, darg) do { \ + uint64_t d = (darg); \ + ((uint8_t*)(p))[0] = (d); \ + ((uint8_t*)(p))[1] = (d)>>8; \ + ((uint8_t*)(p))[2] = (d)>>16; \ + ((uint8_t*)(p))[3] = (d)>>24; \ + ((uint8_t*)(p))[4] = (d)>>32; \ + ((uint8_t*)(p))[5] = (d)>>40; \ + } while(0) +#endif + +/* + * The AV_[RW]NA macros access naturally aligned data + * in a type-safe way. + */ + +#define AV_RNA(s, p) (((const av_alias##s*)(p))->u##s) +#define AV_WNA(s, p, v) (((av_alias##s*)(p))->u##s = (v)) + +#ifndef AV_RN16A +# define AV_RN16A(p) AV_RNA(16, p) +#endif + +#ifndef AV_RN32A +# define AV_RN32A(p) AV_RNA(32, p) +#endif + +#ifndef AV_RN64A +# define AV_RN64A(p) AV_RNA(64, p) +#endif + +#ifndef AV_WN16A +# define AV_WN16A(p, v) AV_WNA(16, p, v) +#endif + +#ifndef AV_WN32A +# define AV_WN32A(p, v) AV_WNA(32, p, v) +#endif + +#ifndef AV_WN64A +# define AV_WN64A(p, v) AV_WNA(64, p, v) +#endif + +#if AV_HAVE_BIGENDIAN +# define AV_RLA(s, p) av_bswap##s(AV_RN##s##A(p)) +# define AV_WLA(s, p, v) AV_WN##s##A(p, av_bswap##s(v)) +#else +# define AV_RLA(s, p) AV_RN##s##A(p) +# define AV_WLA(s, p, v) AV_WN##s##A(p, v) +#endif + +#ifndef AV_RL64A +# define AV_RL64A(p) AV_RLA(64, p) +#endif +#ifndef AV_WL64A +# define AV_WL64A(p, v) AV_WLA(64, p, v) +#endif + +/* + * The AV_COPYxxU macros are suitable for copying data to/from unaligned + * memory locations. + */ + +#define AV_COPYU(n, d, s) AV_WN##n(d, AV_RN##n(s)); + +#ifndef AV_COPY16U +# define AV_COPY16U(d, s) AV_COPYU(16, d, s) +#endif + +#ifndef AV_COPY32U +# define AV_COPY32U(d, s) AV_COPYU(32, d, s) +#endif + +#ifndef AV_COPY64U +# define AV_COPY64U(d, s) AV_COPYU(64, d, s) +#endif + +#ifndef AV_COPY128U +# define AV_COPY128U(d, s) \ + do { \ + AV_COPY64U(d, s); \ + AV_COPY64U((char *)(d) + 8, (const char *)(s) + 8); \ + } while(0) +#endif + +/* Parameters for AV_COPY*, AV_SWAP*, AV_ZERO* must be + * naturally aligned. They may be implemented using MMX, + * so emms_c() must be called before using any float code + * afterwards. + */ + +#define AV_COPY(n, d, s) \ + (((av_alias##n*)(d))->u##n = ((const av_alias##n*)(s))->u##n) + +#ifndef AV_COPY16 +# define AV_COPY16(d, s) AV_COPY(16, d, s) +#endif + +#ifndef AV_COPY32 +# define AV_COPY32(d, s) AV_COPY(32, d, s) +#endif + +#ifndef AV_COPY64 +# define AV_COPY64(d, s) AV_COPY(64, d, s) +#endif + +#ifndef AV_COPY128 +# define AV_COPY128(d, s) \ + do { \ + AV_COPY64(d, s); \ + AV_COPY64((char*)(d)+8, (char*)(s)+8); \ + } while(0) +#endif + +#define AV_SWAP(n, a, b) FFSWAP(av_alias##n, *(av_alias##n*)(a), *(av_alias##n*)(b)) + +#ifndef AV_SWAP64 +# define AV_SWAP64(a, b) AV_SWAP(64, a, b) +#endif + +#define AV_ZERO(n, d) (((av_alias##n*)(d))->u##n = 0) + +#ifndef AV_ZERO16 +# define AV_ZERO16(d) AV_ZERO(16, d) +#endif + +#ifndef AV_ZERO32 +# define AV_ZERO32(d) AV_ZERO(32, d) +#endif + +#ifndef AV_ZERO64 +# define AV_ZERO64(d) AV_ZERO(64, d) +#endif + +#ifndef AV_ZERO128 +# define AV_ZERO128(d) \ + do { \ + AV_ZERO64(d); \ + AV_ZERO64((char*)(d)+8); \ + } while(0) +#endif + +#endif /* AVUTIL_INTREADWRITE_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/lfg.h b/third_party/ffmpeg/uos/amd64/include/libavutil/lfg.h new file mode 100644 index 00000000..2b669205 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/lfg.h @@ -0,0 +1,80 @@ +/* + * Lagged Fibonacci PRNG + * Copyright (c) 2008 Michael Niedermayer + * + * 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 AVUTIL_LFG_H +#define AVUTIL_LFG_H + +#include + +/** + * Context structure for the Lagged Fibonacci PRNG. + * The exact layout, types and content of this struct may change and should + * not be accessed directly. Only its sizeof() is guranteed to stay the same + * to allow easy instanciation. + */ +typedef struct AVLFG { + unsigned int state[64]; + int index; +} AVLFG; + +void av_lfg_init(AVLFG *c, unsigned int seed); + +/** + * Seed the state of the ALFG using binary data. + * + * Return value: 0 on success, negative value (AVERROR) on failure. + */ +int av_lfg_init_from_data(AVLFG *c, const uint8_t *data, unsigned int length); + +/** + * Get the next random unsigned 32-bit number using an ALFG. + * + * Please also consider a simple LCG like state= state*1664525+1013904223, + * it may be good enough and faster for your specific use case. + */ +static inline unsigned int av_lfg_get(AVLFG *c){ + unsigned a = c->state[c->index & 63] = c->state[(c->index-24) & 63] + c->state[(c->index-55) & 63]; + c->index += 1U; + return a; +} + +/** + * Get the next random unsigned 32-bit number using a MLFG. + * + * Please also consider av_lfg_get() above, it is faster. + */ +static inline unsigned int av_mlfg_get(AVLFG *c){ + unsigned int a= c->state[(c->index-55) & 63]; + unsigned int b= c->state[(c->index-24) & 63]; + a = c->state[c->index & 63] = 2*a*b+a+b; + c->index += 1U; + return a; +} + +/** + * Get the next two numbers generated by a Box-Muller Gaussian + * generator using the random numbers issued by lfg. + * + * @param out array where the two generated numbers are placed + */ +void av_bmg_get(AVLFG *lfg, double out[2]); + +#endif /* AVUTIL_LFG_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/log.h b/third_party/ffmpeg/uos/amd64/include/libavutil/log.h new file mode 100644 index 00000000..ab7ceabe --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/log.h @@ -0,0 +1,387 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * 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 AVUTIL_LOG_H +#define AVUTIL_LOG_H + +#include +#include "attributes.h" +#include "version.h" + +typedef enum { + AV_CLASS_CATEGORY_NA = 0, + AV_CLASS_CATEGORY_INPUT, + AV_CLASS_CATEGORY_OUTPUT, + AV_CLASS_CATEGORY_MUXER, + AV_CLASS_CATEGORY_DEMUXER, + AV_CLASS_CATEGORY_ENCODER, + AV_CLASS_CATEGORY_DECODER, + AV_CLASS_CATEGORY_FILTER, + AV_CLASS_CATEGORY_BITSTREAM_FILTER, + AV_CLASS_CATEGORY_SWSCALER, + AV_CLASS_CATEGORY_SWRESAMPLER, + AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT = 40, + AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT, + AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT, + AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT, + AV_CLASS_CATEGORY_DEVICE_OUTPUT, + AV_CLASS_CATEGORY_DEVICE_INPUT, + AV_CLASS_CATEGORY_NB ///< not part of ABI/API +}AVClassCategory; + +#define AV_IS_INPUT_DEVICE(category) \ + (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT) || \ + ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT) || \ + ((category) == AV_CLASS_CATEGORY_DEVICE_INPUT)) + +#define AV_IS_OUTPUT_DEVICE(category) \ + (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT) || \ + ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT) || \ + ((category) == AV_CLASS_CATEGORY_DEVICE_OUTPUT)) + +struct AVOptionRanges; + +/** + * Describe the class of an AVClass context structure. That is an + * arbitrary struct of which the first field is a pointer to an + * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). + */ +typedef struct AVClass { + /** + * The name of the class; usually it is the same name as the + * context structure type to which the AVClass is associated. + */ + const char* class_name; + + /** + * A pointer to a function which returns the name of a context + * instance ctx associated with the class. + */ + const char* (*item_name)(void* ctx); + + /** + * a pointer to the first option specified in the class if any or NULL + * + * @see av_set_default_options() + */ + const struct AVOption *option; + + /** + * LIBAVUTIL_VERSION with which this structure was created. + * This is used to allow fields to be added without requiring major + * version bumps everywhere. + */ + + int version; + + /** + * Offset in the structure where log_level_offset is stored. + * 0 means there is no such variable + */ + int log_level_offset_offset; + + /** + * Offset in the structure where a pointer to the parent context for + * logging is stored. For example a decoder could pass its AVCodecContext + * to eval as such a parent context, which an av_log() implementation + * could then leverage to display the parent context. + * The offset can be NULL. + */ + int parent_log_context_offset; + + /** + * Category used for visualization (like color) + * This is only set if the category is equal for all objects using this class. + * available since version (51 << 16 | 56 << 8 | 100) + */ + AVClassCategory category; + + /** + * Callback to return the category. + * available since version (51 << 16 | 59 << 8 | 100) + */ + AVClassCategory (*get_category)(void* ctx); + + /** + * Callback to return the supported/allowed ranges. + * available since version (52.12) + */ + int (*query_ranges)(struct AVOptionRanges **, void *obj, const char *key, int flags); + + /** + * Return next AVOptions-enabled child or NULL + */ + void* (*child_next)(void *obj, void *prev); + + /** + * Iterate over the AVClasses corresponding to potential AVOptions-enabled + * children. + * + * @param iter pointer to opaque iteration state. The caller must initialize + * *iter to NULL before the first call. + * @return AVClass for the next AVOptions-enabled child or NULL if there are + * no more such children. + * + * @note The difference between child_next and this is that child_next + * iterates over _already existing_ objects, while child_class_iterate + * iterates over _all possible_ children. + */ + const struct AVClass* (*child_class_iterate)(void **iter); +} AVClass; + +/** + * @addtogroup lavu_log + * + * @{ + * + * @defgroup lavu_log_constants Logging Constants + * + * @{ + */ + +/** + * Print no output. + */ +#define AV_LOG_QUIET -8 + +/** + * Something went really wrong and we will crash now. + */ +#define AV_LOG_PANIC 0 + +/** + * Something went wrong and recovery is not possible. + * For example, no header was found for a format which depends + * on headers or an illegal combination of parameters is used. + */ +#define AV_LOG_FATAL 8 + +/** + * Something went wrong and cannot losslessly be recovered. + * However, not all future data is affected. + */ +#define AV_LOG_ERROR 16 + +/** + * Something somehow does not look correct. This may or may not + * lead to problems. An example would be the use of '-vstrict -2'. + */ +#define AV_LOG_WARNING 24 + +/** + * Standard information. + */ +#define AV_LOG_INFO 32 + +/** + * Detailed information. + */ +#define AV_LOG_VERBOSE 40 + +/** + * Stuff which is only useful for libav* developers. + */ +#define AV_LOG_DEBUG 48 + +/** + * Extremely verbose debugging, useful for libav* development. + */ +#define AV_LOG_TRACE 56 + +#define AV_LOG_MAX_OFFSET (AV_LOG_TRACE - AV_LOG_QUIET) + +/** + * @} + */ + +/** + * Sets additional colors for extended debugging sessions. + * @code + av_log(ctx, AV_LOG_DEBUG|AV_LOG_C(134), "Message in purple\n"); + @endcode + * Requires 256color terminal support. Uses outside debugging is not + * recommended. + */ +#define AV_LOG_C(x) ((x) << 8) + +/** + * Send the specified message to the log if the level is less than or equal + * to the current av_log_level. By default, all logging messages are sent to + * stderr. This behavior can be altered by setting a different logging callback + * function. + * @see av_log_set_callback + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct or NULL if general log. + * @param level The importance level of the message expressed using a @ref + * lavu_log_constants "Logging Constant". + * @param fmt The format string (printf-compatible) that specifies how + * subsequent arguments are converted to output. + */ +void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4); + +/** + * Send the specified message to the log once with the initial_level and then with + * the subsequent_level. By default, all logging messages are sent to + * stderr. This behavior can be altered by setting a different logging callback + * function. + * @see av_log + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct or NULL if general log. + * @param initial_level importance level of the message expressed using a @ref + * lavu_log_constants "Logging Constant" for the first occurance. + * @param subsequent_level importance level of the message expressed using a @ref + * lavu_log_constants "Logging Constant" after the first occurance. + * @param fmt The format string (printf-compatible) that specifies how + * subsequent arguments are converted to output. + * @param state a variable to keep trak of if a message has already been printed + * this must be initialized to 0 before the first use. The same state + * must not be accessed by 2 Threads simultaneously. + */ +void av_log_once(void* avcl, int initial_level, int subsequent_level, int *state, const char *fmt, ...) av_printf_format(5, 6); + + +/** + * Send the specified message to the log if the level is less than or equal + * to the current av_log_level. By default, all logging messages are sent to + * stderr. This behavior can be altered by setting a different logging callback + * function. + * @see av_log_set_callback + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct. + * @param level The importance level of the message expressed using a @ref + * lavu_log_constants "Logging Constant". + * @param fmt The format string (printf-compatible) that specifies how + * subsequent arguments are converted to output. + * @param vl The arguments referenced by the format string. + */ +void av_vlog(void *avcl, int level, const char *fmt, va_list vl); + +/** + * Get the current log level + * + * @see lavu_log_constants + * + * @return Current log level + */ +int av_log_get_level(void); + +/** + * Set the log level + * + * @see lavu_log_constants + * + * @param level Logging level + */ +void av_log_set_level(int level); + +/** + * Set the logging callback + * + * @note The callback must be thread safe, even if the application does not use + * threads itself as some codecs are multithreaded. + * + * @see av_log_default_callback + * + * @param callback A logging function with a compatible signature. + */ +void av_log_set_callback(void (*callback)(void*, int, const char*, va_list)); + +/** + * Default logging callback + * + * It prints the message to stderr, optionally colorizing it. + * + * @param avcl A pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct. + * @param level The importance level of the message expressed using a @ref + * lavu_log_constants "Logging Constant". + * @param fmt The format string (printf-compatible) that specifies how + * subsequent arguments are converted to output. + * @param vl The arguments referenced by the format string. + */ +void av_log_default_callback(void *avcl, int level, const char *fmt, + va_list vl); + +/** + * Return the context name + * + * @param ctx The AVClass context + * + * @return The AVClass class_name + */ +const char* av_default_item_name(void* ctx); +AVClassCategory av_default_get_category(void *ptr); + +/** + * Format a line of log the same way as the default callback. + * @param line buffer to receive the formatted line + * @param line_size size of the buffer + * @param print_prefix used to store whether the prefix must be printed; + * must point to a persistent integer initially set to 1 + */ +void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, + char *line, int line_size, int *print_prefix); + +/** + * Format a line of log the same way as the default callback. + * @param line buffer to receive the formatted line; + * may be NULL if line_size is 0 + * @param line_size size of the buffer; at most line_size-1 characters will + * be written to the buffer, plus one null terminator + * @param print_prefix used to store whether the prefix must be printed; + * must point to a persistent integer initially set to 1 + * @return Returns a negative value if an error occurred, otherwise returns + * the number of characters that would have been written for a + * sufficiently large buffer, not including the terminating null + * character. If the return value is not less than line_size, it means + * that the log message was truncated to fit the buffer. + */ +int av_log_format_line2(void *ptr, int level, const char *fmt, va_list vl, + char *line, int line_size, int *print_prefix); + +/** + * Skip repeated messages, this requires the user app to use av_log() instead of + * (f)printf as the 2 would otherwise interfere and lead to + * "Last message repeated x times" messages below (f)printf messages with some + * bad luck. + * Also to receive the last, "last repeated" line if any, the user app must + * call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end + */ +#define AV_LOG_SKIP_REPEATED 1 + +/** + * Include the log severity in messages originating from codecs. + * + * Results in messages such as: + * [rawvideo @ 0xDEADBEEF] [error] encode did not produce valid pts + */ +#define AV_LOG_PRINT_LEVEL 2 + +void av_log_set_flags(int arg); +int av_log_get_flags(void); + +/** + * @} + */ + +#endif /* AVUTIL_LOG_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/lzo.h b/third_party/ffmpeg/uos/amd64/include/libavutil/lzo.h new file mode 100644 index 00000000..c0340399 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/lzo.h @@ -0,0 +1,66 @@ +/* + * LZO 1x decompression + * copyright (c) 2006 Reimar Doeffinger + * + * 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 AVUTIL_LZO_H +#define AVUTIL_LZO_H + +/** + * @defgroup lavu_lzo LZO + * @ingroup lavu_crypto + * + * @{ + */ + +#include + +/** @name Error flags returned by av_lzo1x_decode + * @{ */ +/// end of the input buffer reached before decoding finished +#define AV_LZO_INPUT_DEPLETED 1 +/// decoded data did not fit into output buffer +#define AV_LZO_OUTPUT_FULL 2 +/// a reference to previously decoded data was wrong +#define AV_LZO_INVALID_BACKPTR 4 +/// a non-specific error in the compressed bitstream +#define AV_LZO_ERROR 8 +/** @} */ + +#define AV_LZO_INPUT_PADDING 8 +#define AV_LZO_OUTPUT_PADDING 12 + +/** + * @brief Decodes LZO 1x compressed data. + * @param out output buffer + * @param outlen size of output buffer, number of bytes left are returned here + * @param in input buffer + * @param inlen size of input buffer, number of bytes left are returned here + * @return 0 on success, otherwise a combination of the error flags above + * + * Make sure all buffers are appropriately padded, in must provide + * AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes. + */ +int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen); + +/** + * @} + */ + +#endif /* AVUTIL_LZO_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/macros.h b/third_party/ffmpeg/uos/amd64/include/libavutil/macros.h new file mode 100644 index 00000000..2a7567c3 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/macros.h @@ -0,0 +1,80 @@ +/* + * 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 + */ + +/** + * @file + * @ingroup lavu + * Utility Preprocessor macros + */ + +#ifndef AVUTIL_MACROS_H +#define AVUTIL_MACROS_H + +#include "libavutil/avconfig.h" + +#if AV_HAVE_BIGENDIAN +# define AV_NE(be, le) (be) +#else +# define AV_NE(be, le) (le) +#endif + +/** + * Comparator. + * For two numerical expressions x and y, gives 1 if x > y, -1 if x < y, and 0 + * if x == y. This is useful for instance in a qsort comparator callback. + * Furthermore, compilers are able to optimize this to branchless code, and + * there is no risk of overflow with signed types. + * As with many macros, this evaluates its argument multiple times, it thus + * must not have a side-effect. + */ +#define FFDIFFSIGN(x,y) (((x)>(y)) - ((x)<(y))) + +#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) +#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) +#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) +#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c) + +#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) +#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) + +#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) +#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) + +/** + * @addtogroup preproc_misc Preprocessor String Macros + * + * String manipulation macros + * + * @{ + */ + +#define AV_STRINGIFY(s) AV_TOSTRING(s) +#define AV_TOSTRING(s) #s + +#define AV_GLUE(a, b) a ## b +#define AV_JOIN(a, b) AV_GLUE(a, b) + +/** + * @} + */ + +#define AV_PRAGMA(s) _Pragma(#s) + +#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) + +#endif /* AVUTIL_MACROS_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/mastering_display_metadata.h b/third_party/ffmpeg/uos/amd64/include/libavutil/mastering_display_metadata.h new file mode 100644 index 00000000..c23b07c3 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/mastering_display_metadata.h @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2016 Neil Birkbeck + * + * 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 AVUTIL_MASTERING_DISPLAY_METADATA_H +#define AVUTIL_MASTERING_DISPLAY_METADATA_H + +#include "frame.h" +#include "rational.h" + + +/** + * Mastering display metadata capable of representing the color volume of + * the display used to master the content (SMPTE 2086:2014). + * + * To be used as payload of a AVFrameSideData or AVPacketSideData with the + * appropriate type. + * + * @note The struct should be allocated with av_mastering_display_metadata_alloc() + * and its size is not a part of the public ABI. + */ +typedef struct AVMasteringDisplayMetadata { + /** + * CIE 1931 xy chromaticity coords of color primaries (r, g, b order). + */ + AVRational display_primaries[3][2]; + + /** + * CIE 1931 xy chromaticity coords of white point. + */ + AVRational white_point[2]; + + /** + * Min luminance of mastering display (cd/m^2). + */ + AVRational min_luminance; + + /** + * Max luminance of mastering display (cd/m^2). + */ + AVRational max_luminance; + + /** + * Flag indicating whether the display primaries (and white point) are set. + */ + int has_primaries; + + /** + * Flag indicating whether the luminance (min_ and max_) have been set. + */ + int has_luminance; + +} AVMasteringDisplayMetadata; + +/** + * Allocate an AVMasteringDisplayMetadata structure and set its fields to + * default values. The resulting struct can be freed using av_freep(). + * + * @return An AVMasteringDisplayMetadata filled with default values or NULL + * on failure. + */ +AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc(void); + +/** + * Allocate a complete AVMasteringDisplayMetadata and add it to the frame. + * + * @param frame The frame which side data is added to. + * + * @return The AVMasteringDisplayMetadata structure to be filled by caller. + */ +AVMasteringDisplayMetadata *av_mastering_display_metadata_create_side_data(AVFrame *frame); + +/** + * Content light level needed by to transmit HDR over HDMI (CTA-861.3). + * + * To be used as payload of a AVFrameSideData or AVPacketSideData with the + * appropriate type. + * + * @note The struct should be allocated with av_content_light_metadata_alloc() + * and its size is not a part of the public ABI. + */ +typedef struct AVContentLightMetadata { + /** + * Max content light level (cd/m^2). + */ + unsigned MaxCLL; + + /** + * Max average light level per frame (cd/m^2). + */ + unsigned MaxFALL; +} AVContentLightMetadata; + +/** + * Allocate an AVContentLightMetadata structure and set its fields to + * default values. The resulting struct can be freed using av_freep(). + * + * @return An AVContentLightMetadata filled with default values or NULL + * on failure. + */ +AVContentLightMetadata *av_content_light_metadata_alloc(size_t *size); + +/** + * Allocate a complete AVContentLightMetadata and add it to the frame. + * + * @param frame The frame which side data is added to. + * + * @return The AVContentLightMetadata structure to be filled by caller. + */ +AVContentLightMetadata *av_content_light_metadata_create_side_data(AVFrame *frame); + +#endif /* AVUTIL_MASTERING_DISPLAY_METADATA_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/mathematics.h b/third_party/ffmpeg/uos/amd64/include/libavutil/mathematics.h new file mode 100644 index 00000000..64d4137a --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/mathematics.h @@ -0,0 +1,243 @@ +/* + * copyright (c) 2005-2012 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * @addtogroup lavu_math + * Mathematical utilities for working with timestamp and time base. + */ + +#ifndef AVUTIL_MATHEMATICS_H +#define AVUTIL_MATHEMATICS_H + +#include +#include +#include "attributes.h" +#include "rational.h" +#include "intfloat.h" + +#ifndef M_E +#define M_E 2.7182818284590452354 /* e */ +#endif +#ifndef M_LN2 +#define M_LN2 0.69314718055994530942 /* log_e 2 */ +#endif +#ifndef M_LN10 +#define M_LN10 2.30258509299404568402 /* log_e 10 */ +#endif +#ifndef M_LOG2_10 +#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */ +#endif +#ifndef M_PHI +#define M_PHI 1.61803398874989484820 /* phi / golden ratio */ +#endif +#ifndef M_PI +#define M_PI 3.14159265358979323846 /* pi */ +#endif +#ifndef M_PI_2 +#define M_PI_2 1.57079632679489661923 /* pi/2 */ +#endif +#ifndef M_SQRT1_2 +#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ +#endif +#ifndef M_SQRT2 +#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ +#endif +#ifndef NAN +#define NAN av_int2float(0x7fc00000) +#endif +#ifndef INFINITY +#define INFINITY av_int2float(0x7f800000) +#endif + +/** + * @addtogroup lavu_math + * + * @{ + */ + +/** + * Rounding methods. + */ +enum AVRounding { + AV_ROUND_ZERO = 0, ///< Round toward zero. + AV_ROUND_INF = 1, ///< Round away from zero. + AV_ROUND_DOWN = 2, ///< Round toward -infinity. + AV_ROUND_UP = 3, ///< Round toward +infinity. + AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero. + /** + * Flag telling rescaling functions to pass `INT64_MIN`/`MAX` through + * unchanged, avoiding special cases for #AV_NOPTS_VALUE. + * + * Unlike other values of the enumeration AVRounding, this value is a + * bitmask that must be used in conjunction with another value of the + * enumeration through a bitwise OR, in order to set behavior for normal + * cases. + * + * @code{.c} + * av_rescale_rnd(3, 1, 2, AV_ROUND_UP | AV_ROUND_PASS_MINMAX); + * // Rescaling 3: + * // Calculating 3 * 1 / 2 + * // 3 / 2 is rounded up to 2 + * // => 2 + * + * av_rescale_rnd(AV_NOPTS_VALUE, 1, 2, AV_ROUND_UP | AV_ROUND_PASS_MINMAX); + * // Rescaling AV_NOPTS_VALUE: + * // AV_NOPTS_VALUE == INT64_MIN + * // AV_NOPTS_VALUE is passed through + * // => AV_NOPTS_VALUE + * @endcode + */ + AV_ROUND_PASS_MINMAX = 8192, +}; + +/** + * Compute the greatest common divisor of two integer operands. + * + * @param a,b Operands + * @return GCD of a and b up to sign; if a >= 0 and b >= 0, return value is >= 0; + * if a == 0 and b == 0, returns 0. + */ +int64_t av_const av_gcd(int64_t a, int64_t b); + +/** + * Rescale a 64-bit integer with rounding to nearest. + * + * The operation is mathematically equivalent to `a * b / c`, but writing that + * directly can overflow. + * + * This function is equivalent to av_rescale_rnd() with #AV_ROUND_NEAR_INF. + * + * @see av_rescale_rnd(), av_rescale_q(), av_rescale_q_rnd() + */ +int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; + +/** + * Rescale a 64-bit integer with specified rounding. + * + * The operation is mathematically equivalent to `a * b / c`, but writing that + * directly can overflow, and does not support different rounding methods. + * If the result is not representable then INT64_MIN is returned. + * + * @see av_rescale(), av_rescale_q(), av_rescale_q_rnd() + */ +int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd) av_const; + +/** + * Rescale a 64-bit integer by 2 rational numbers. + * + * The operation is mathematically equivalent to `a * bq / cq`. + * + * This function is equivalent to av_rescale_q_rnd() with #AV_ROUND_NEAR_INF. + * + * @see av_rescale(), av_rescale_rnd(), av_rescale_q_rnd() + */ +int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; + +/** + * Rescale a 64-bit integer by 2 rational numbers with specified rounding. + * + * The operation is mathematically equivalent to `a * bq / cq`. + * + * @see av_rescale(), av_rescale_rnd(), av_rescale_q() + */ +int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq, + enum AVRounding rnd) av_const; + +/** + * Compare two timestamps each in its own time base. + * + * @return One of the following values: + * - -1 if `ts_a` is before `ts_b` + * - 1 if `ts_a` is after `ts_b` + * - 0 if they represent the same position + * + * @warning + * The result of the function is undefined if one of the timestamps is outside + * the `int64_t` range when represented in the other's timebase. + */ +int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b); + +/** + * Compare the remainders of two integer operands divided by a common divisor. + * + * In other words, compare the least significant `log2(mod)` bits of integers + * `a` and `b`. + * + * @code{.c} + * av_compare_mod(0x11, 0x02, 0x10) < 0 // since 0x11 % 0x10 (0x1) < 0x02 % 0x10 (0x2) + * av_compare_mod(0x11, 0x02, 0x20) > 0 // since 0x11 % 0x20 (0x11) > 0x02 % 0x20 (0x02) + * @endcode + * + * @param a,b Operands + * @param mod Divisor; must be a power of 2 + * @return + * - a negative value if `a % mod < b % mod` + * - a positive value if `a % mod > b % mod` + * - zero if `a % mod == b % mod` + */ +int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod); + +/** + * Rescale a timestamp while preserving known durations. + * + * This function is designed to be called per audio packet to scale the input + * timestamp to a different time base. Compared to a simple av_rescale_q() + * call, this function is robust against possible inconsistent frame durations. + * + * The `last` parameter is a state variable that must be preserved for all + * subsequent calls for the same stream. For the first call, `*last` should be + * initialized to #AV_NOPTS_VALUE. + * + * @param[in] in_tb Input time base + * @param[in] in_ts Input timestamp + * @param[in] fs_tb Duration time base; typically this is finer-grained + * (greater) than `in_tb` and `out_tb` + * @param[in] duration Duration till the next call to this function (i.e. + * duration of the current packet/frame) + * @param[in,out] last Pointer to a timestamp expressed in terms of + * `fs_tb`, acting as a state variable + * @param[in] out_tb Output timebase + * @return Timestamp expressed in terms of `out_tb` + * + * @note In the context of this function, "duration" is in term of samples, not + * seconds. + */ +int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int duration, int64_t *last, AVRational out_tb); + +/** + * Add a value to a timestamp. + * + * This function guarantees that when the same value is repeatly added that + * no accumulation of rounding errors occurs. + * + * @param[in] ts Input timestamp + * @param[in] ts_tb Input timestamp time base + * @param[in] inc Value to be added + * @param[in] inc_tb Time base of `inc` + */ +int64_t av_add_stable(AVRational ts_tb, int64_t ts, AVRational inc_tb, int64_t inc); + + +/** + * @} + */ + +#endif /* AVUTIL_MATHEMATICS_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/md5.h b/third_party/ffmpeg/uos/amd64/include/libavutil/md5.h new file mode 100644 index 00000000..fc2eabdb --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/md5.h @@ -0,0 +1,89 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * @ingroup lavu_md5 + * Public header for MD5 hash function implementation. + */ + +#ifndef AVUTIL_MD5_H +#define AVUTIL_MD5_H + +#include +#include + +#include "attributes.h" + +/** + * @defgroup lavu_md5 MD5 + * @ingroup lavu_hash + * MD5 hash function implementation. + * + * @{ + */ + +extern const int av_md5_size; + +struct AVMD5; + +/** + * Allocate an AVMD5 context. + */ +struct AVMD5 *av_md5_alloc(void); + +/** + * Initialize MD5 hashing. + * + * @param ctx pointer to the function context (of size av_md5_size) + */ +void av_md5_init(struct AVMD5 *ctx); + +/** + * Update hash value. + * + * @param ctx hash function context + * @param src input data to update hash with + * @param len input data length + */ +void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, size_t len); + +/** + * Finish hashing and output digest value. + * + * @param ctx hash function context + * @param dst buffer where output digest value is stored + */ +void av_md5_final(struct AVMD5 *ctx, uint8_t *dst); + +/** + * Hash an array of data. + * + * @param dst The output buffer to write the digest into + * @param src The data to hash + * @param len The length of the data, in bytes + */ +void av_md5_sum(uint8_t *dst, const uint8_t *src, size_t len); + +/** + * @} + */ + +#endif /* AVUTIL_MD5_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/mem.h b/third_party/ffmpeg/uos/amd64/include/libavutil/mem.h new file mode 100644 index 00000000..d9117419 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/mem.h @@ -0,0 +1,696 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * @ingroup lavu_mem + * Memory handling functions + */ + +#ifndef AVUTIL_MEM_H +#define AVUTIL_MEM_H + +#include +#include + +#include "attributes.h" +#include "avutil.h" +#include "version.h" + +/** + * @addtogroup lavu_mem + * Utilities for manipulating memory. + * + * FFmpeg has several applications of memory that are not required of a typical + * program. For example, the computing-heavy components like video decoding and + * encoding can be sped up significantly through the use of aligned memory. + * + * However, for each of FFmpeg's applications of memory, there might not be a + * recognized or standardized API for that specific use. Memory alignment, for + * instance, varies wildly depending on operating systems, architectures, and + * compilers. Hence, this component of @ref libavutil is created to make + * dealing with memory consistently possible on all platforms. + * + * @{ + */ + +#if FF_API_DECLARE_ALIGNED +/** + * + * @defgroup lavu_mem_macros Alignment Macros + * Helper macros for declaring aligned variables. + * @{ + */ + +/** + * @def DECLARE_ALIGNED(n,t,v) + * Declare a variable that is aligned in memory. + * + * @code{.c} + * DECLARE_ALIGNED(16, uint16_t, aligned_int) = 42; + * DECLARE_ALIGNED(32, uint8_t, aligned_array)[128]; + * + * // The default-alignment equivalent would be + * uint16_t aligned_int = 42; + * uint8_t aligned_array[128]; + * @endcode + * + * @param n Minimum alignment in bytes + * @param t Type of the variable (or array element) + * @param v Name of the variable + */ + +/** + * @def DECLARE_ASM_ALIGNED(n,t,v) + * Declare an aligned variable appropriate for use in inline assembly code. + * + * @code{.c} + * DECLARE_ASM_ALIGNED(16, uint64_t, pw_08) = UINT64_C(0x0008000800080008); + * @endcode + * + * @param n Minimum alignment in bytes + * @param t Type of the variable (or array element) + * @param v Name of the variable + */ + +/** + * @def DECLARE_ASM_CONST(n,t,v) + * Declare a static constant aligned variable appropriate for use in inline + * assembly code. + * + * @code{.c} + * DECLARE_ASM_CONST(16, uint64_t, pw_08) = UINT64_C(0x0008000800080008); + * @endcode + * + * @param n Minimum alignment in bytes + * @param t Type of the variable (or array element) + * @param v Name of the variable + */ + +#if defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1110 || defined(__SUNPRO_C) + #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v + #define DECLARE_ASM_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v + #define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v +#elif defined(__DJGPP__) + #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (FFMIN(n, 16)))) v + #define DECLARE_ASM_ALIGNED(n,t,v) t av_used __attribute__ ((aligned (FFMIN(n, 16)))) v + #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (FFMIN(n, 16)))) v +#elif defined(__GNUC__) || defined(__clang__) + #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v + #define DECLARE_ASM_ALIGNED(n,t,v) t av_used __attribute__ ((aligned (n))) v + #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v +#elif defined(_MSC_VER) + #define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v + #define DECLARE_ASM_ALIGNED(n,t,v) __declspec(align(n)) t v + #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v +#else + #define DECLARE_ALIGNED(n,t,v) t v + #define DECLARE_ASM_ALIGNED(n,t,v) t v + #define DECLARE_ASM_CONST(n,t,v) static const t v +#endif + +/** + * @} + */ +#endif + +/** + * @defgroup lavu_mem_attrs Function Attributes + * Function attributes applicable to memory handling functions. + * + * These function attributes can help compilers emit more useful warnings, or + * generate better code. + * @{ + */ + +/** + * @def av_malloc_attrib + * Function attribute denoting a malloc-like function. + * + * @see Function attribute `malloc` in GCC's documentation + */ + +#if AV_GCC_VERSION_AT_LEAST(3,1) + #define av_malloc_attrib __attribute__((__malloc__)) +#else + #define av_malloc_attrib +#endif + +/** + * @def av_alloc_size(...) + * Function attribute used on a function that allocates memory, whose size is + * given by the specified parameter(s). + * + * @code{.c} + * void *av_malloc(size_t size) av_alloc_size(1); + * void *av_calloc(size_t nmemb, size_t size) av_alloc_size(1, 2); + * @endcode + * + * @param ... One or two parameter indexes, separated by a comma + * + * @see Function attribute `alloc_size` in GCC's documentation + */ + +#if AV_GCC_VERSION_AT_LEAST(4,3) + #define av_alloc_size(...) __attribute__((alloc_size(__VA_ARGS__))) +#else + #define av_alloc_size(...) +#endif + +/** + * @} + */ + +/** + * @defgroup lavu_mem_funcs Heap Management + * Functions responsible for allocating, freeing, and copying memory. + * + * All memory allocation functions have a built-in upper limit of `INT_MAX` + * bytes. This may be changed with av_max_alloc(), although exercise extreme + * caution when doing so. + * + * @{ + */ + +/** + * Allocate a memory block with alignment suitable for all memory accesses + * (including vectors if available on the CPU). + * + * @param size Size in bytes for the memory block to be allocated + * @return Pointer to the allocated block, or `NULL` if the block cannot + * be allocated + * @see av_mallocz() + */ +void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1); + +/** + * Allocate a memory block with alignment suitable for all memory accesses + * (including vectors if available on the CPU) and zero all the bytes of the + * block. + * + * @param size Size in bytes for the memory block to be allocated + * @return Pointer to the allocated block, or `NULL` if it cannot be allocated + * @see av_malloc() + */ +void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1); + +/** + * Allocate a memory block for an array with av_malloc(). + * + * The allocated memory will have size `size * nmemb` bytes. + * + * @param nmemb Number of element + * @param size Size of a single element + * @return Pointer to the allocated block, or `NULL` if the block cannot + * be allocated + * @see av_malloc() + */ +av_alloc_size(1, 2) void *av_malloc_array(size_t nmemb, size_t size); + +/** + * Allocate a memory block for an array with av_mallocz(). + * + * The allocated memory will have size `size * nmemb` bytes. + * + * @param nmemb Number of elements + * @param size Size of the single element + * @return Pointer to the allocated block, or `NULL` if the block cannot + * be allocated + * + * @see av_mallocz() + * @see av_malloc_array() + */ +void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib av_alloc_size(1, 2); + +#if FF_API_AV_MALLOCZ_ARRAY +/** + * @deprecated use av_calloc() + */ +attribute_deprecated +void *av_mallocz_array(size_t nmemb, size_t size) av_malloc_attrib av_alloc_size(1, 2); +#endif + +/** + * Allocate, reallocate, or free a block of memory. + * + * If `ptr` is `NULL` and `size` > 0, allocate a new block. Otherwise, expand or + * shrink that block of memory according to `size`. + * + * @param ptr Pointer to a memory block already allocated with + * av_realloc() or `NULL` + * @param size Size in bytes of the memory block to be allocated or + * reallocated + * + * @return Pointer to a newly-reallocated block or `NULL` if the block + * cannot be reallocated + * + * @warning Unlike av_malloc(), the returned pointer is not guaranteed to be + * correctly aligned. The returned pointer must be freed after even + * if size is zero. + * @see av_fast_realloc() + * @see av_reallocp() + */ +void *av_realloc(void *ptr, size_t size) av_alloc_size(2); + +/** + * Allocate, reallocate, or free a block of memory through a pointer to a + * pointer. + * + * If `*ptr` is `NULL` and `size` > 0, allocate a new block. If `size` is + * zero, free the memory block pointed to by `*ptr`. Otherwise, expand or + * shrink that block of memory according to `size`. + * + * @param[in,out] ptr Pointer to a pointer to a memory block already allocated + * with av_realloc(), or a pointer to `NULL`. The pointer + * is updated on success, or freed on failure. + * @param[in] size Size in bytes for the memory block to be allocated or + * reallocated + * + * @return Zero on success, an AVERROR error code on failure + * + * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be + * correctly aligned. + */ +av_warn_unused_result +int av_reallocp(void *ptr, size_t size); + +/** + * Allocate, reallocate, or free a block of memory. + * + * This function does the same thing as av_realloc(), except: + * - It takes two size arguments and allocates `nelem * elsize` bytes, + * after checking the result of the multiplication for integer overflow. + * - It frees the input block in case of failure, thus avoiding the memory + * leak with the classic + * @code{.c} + * buf = realloc(buf); + * if (!buf) + * return -1; + * @endcode + * pattern. + */ +void *av_realloc_f(void *ptr, size_t nelem, size_t elsize); + +/** + * Allocate, reallocate, or free an array. + * + * If `ptr` is `NULL` and `nmemb` > 0, allocate a new block. + * + * @param ptr Pointer to a memory block already allocated with + * av_realloc() or `NULL` + * @param nmemb Number of elements in the array + * @param size Size of the single element of the array + * + * @return Pointer to a newly-reallocated block or NULL if the block + * cannot be reallocated + * + * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be + * correctly aligned. The returned pointer must be freed after even if + * nmemb is zero. + * @see av_reallocp_array() + */ +av_alloc_size(2, 3) void *av_realloc_array(void *ptr, size_t nmemb, size_t size); + +/** + * Allocate, reallocate an array through a pointer to a pointer. + * + * If `*ptr` is `NULL` and `nmemb` > 0, allocate a new block. + * + * @param[in,out] ptr Pointer to a pointer to a memory block already + * allocated with av_realloc(), or a pointer to `NULL`. + * The pointer is updated on success, or freed on failure. + * @param[in] nmemb Number of elements + * @param[in] size Size of the single element + * + * @return Zero on success, an AVERROR error code on failure + * + * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be + * correctly aligned. *ptr must be freed after even if nmemb is zero. + */ +int av_reallocp_array(void *ptr, size_t nmemb, size_t size); + +/** + * Reallocate the given buffer if it is not large enough, otherwise do nothing. + * + * If the given buffer is `NULL`, then a new uninitialized buffer is allocated. + * + * If the given buffer is not large enough, and reallocation fails, `NULL` is + * returned and `*size` is set to 0, but the original buffer is not changed or + * freed. + * + * A typical use pattern follows: + * + * @code{.c} + * uint8_t *buf = ...; + * uint8_t *new_buf = av_fast_realloc(buf, ¤t_size, size_needed); + * if (!new_buf) { + * // Allocation failed; clean up original buffer + * av_freep(&buf); + * return AVERROR(ENOMEM); + * } + * @endcode + * + * @param[in,out] ptr Already allocated buffer, or `NULL` + * @param[in,out] size Pointer to the size of buffer `ptr`. `*size` is + * updated to the new allocated size, in particular 0 + * in case of failure. + * @param[in] min_size Desired minimal size of buffer `ptr` + * @return `ptr` if the buffer is large enough, a pointer to newly reallocated + * buffer if the buffer was not large enough, or `NULL` in case of + * error + * @see av_realloc() + * @see av_fast_malloc() + */ +void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size); + +/** + * Allocate a buffer, reusing the given one if large enough. + * + * Contrary to av_fast_realloc(), the current buffer contents might not be + * preserved and on error the old buffer is freed, thus no special handling to + * avoid memleaks is necessary. + * + * `*ptr` is allowed to be `NULL`, in which case allocation always happens if + * `size_needed` is greater than 0. + * + * @code{.c} + * uint8_t *buf = ...; + * av_fast_malloc(&buf, ¤t_size, size_needed); + * if (!buf) { + * // Allocation failed; buf already freed + * return AVERROR(ENOMEM); + * } + * @endcode + * + * @param[in,out] ptr Pointer to pointer to an already allocated buffer. + * `*ptr` will be overwritten with pointer to new + * buffer on success or `NULL` on failure + * @param[in,out] size Pointer to the size of buffer `*ptr`. `*size` is + * updated to the new allocated size, in particular 0 + * in case of failure. + * @param[in] min_size Desired minimal size of buffer `*ptr` + * @see av_realloc() + * @see av_fast_mallocz() + */ +void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size); + +/** + * Allocate and clear a buffer, reusing the given one if large enough. + * + * Like av_fast_malloc(), but all newly allocated space is initially cleared. + * Reused buffer is not cleared. + * + * `*ptr` is allowed to be `NULL`, in which case allocation always happens if + * `size_needed` is greater than 0. + * + * @param[in,out] ptr Pointer to pointer to an already allocated buffer. + * `*ptr` will be overwritten with pointer to new + * buffer on success or `NULL` on failure + * @param[in,out] size Pointer to the size of buffer `*ptr`. `*size` is + * updated to the new allocated size, in particular 0 + * in case of failure. + * @param[in] min_size Desired minimal size of buffer `*ptr` + * @see av_fast_malloc() + */ +void av_fast_mallocz(void *ptr, unsigned int *size, size_t min_size); + +/** + * Free a memory block which has been allocated with a function of av_malloc() + * or av_realloc() family. + * + * @param ptr Pointer to the memory block which should be freed. + * + * @note `ptr = NULL` is explicitly allowed. + * @note It is recommended that you use av_freep() instead, to prevent leaving + * behind dangling pointers. + * @see av_freep() + */ +void av_free(void *ptr); + +/** + * Free a memory block which has been allocated with a function of av_malloc() + * or av_realloc() family, and set the pointer pointing to it to `NULL`. + * + * @code{.c} + * uint8_t *buf = av_malloc(16); + * av_free(buf); + * // buf now contains a dangling pointer to freed memory, and accidental + * // dereference of buf will result in a use-after-free, which may be a + * // security risk. + * + * uint8_t *buf = av_malloc(16); + * av_freep(&buf); + * // buf is now NULL, and accidental dereference will only result in a + * // NULL-pointer dereference. + * @endcode + * + * @param ptr Pointer to the pointer to the memory block which should be freed + * @note `*ptr = NULL` is safe and leads to no action. + * @see av_free() + */ +void av_freep(void *ptr); + +/** + * Duplicate a string. + * + * @param s String to be duplicated + * @return Pointer to a newly-allocated string containing a + * copy of `s` or `NULL` if the string cannot be allocated + * @see av_strndup() + */ +char *av_strdup(const char *s) av_malloc_attrib; + +/** + * Duplicate a substring of a string. + * + * @param s String to be duplicated + * @param len Maximum length of the resulting string (not counting the + * terminating byte) + * @return Pointer to a newly-allocated string containing a + * substring of `s` or `NULL` if the string cannot be allocated + */ +char *av_strndup(const char *s, size_t len) av_malloc_attrib; + +/** + * Duplicate a buffer with av_malloc(). + * + * @param p Buffer to be duplicated + * @param size Size in bytes of the buffer copied + * @return Pointer to a newly allocated buffer containing a + * copy of `p` or `NULL` if the buffer cannot be allocated + */ +void *av_memdup(const void *p, size_t size); + +/** + * Overlapping memcpy() implementation. + * + * @param dst Destination buffer + * @param back Number of bytes back to start copying (i.e. the initial size of + * the overlapping window); must be > 0 + * @param cnt Number of bytes to copy; must be >= 0 + * + * @note `cnt > back` is valid, this will copy the bytes we just copied, + * thus creating a repeating pattern with a period length of `back`. + */ +void av_memcpy_backptr(uint8_t *dst, int back, int cnt); + +/** + * @} + */ + +/** + * @defgroup lavu_mem_dynarray Dynamic Array + * + * Utilities to make an array grow when needed. + * + * Sometimes, the programmer would want to have an array that can grow when + * needed. The libavutil dynamic array utilities fill that need. + * + * libavutil supports two systems of appending elements onto a dynamically + * allocated array, the first one storing the pointer to the value in the + * array, and the second storing the value directly. In both systems, the + * caller is responsible for maintaining a variable containing the length of + * the array, as well as freeing of the array after use. + * + * The first system stores pointers to values in a block of dynamically + * allocated memory. Since only pointers are stored, the function does not need + * to know the size of the type. Both av_dynarray_add() and + * av_dynarray_add_nofree() implement this system. + * + * @code + * type **array = NULL; //< an array of pointers to values + * int nb = 0; //< a variable to keep track of the length of the array + * + * type to_be_added = ...; + * type to_be_added2 = ...; + * + * av_dynarray_add(&array, &nb, &to_be_added); + * if (nb == 0) + * return AVERROR(ENOMEM); + * + * av_dynarray_add(&array, &nb, &to_be_added2); + * if (nb == 0) + * return AVERROR(ENOMEM); + * + * // Now: + * // nb == 2 + * // &to_be_added == array[0] + * // &to_be_added2 == array[1] + * + * av_freep(&array); + * @endcode + * + * The second system stores the value directly in a block of memory. As a + * result, the function has to know the size of the type. av_dynarray2_add() + * implements this mechanism. + * + * @code + * type *array = NULL; //< an array of values + * int nb = 0; //< a variable to keep track of the length of the array + * + * type to_be_added = ...; + * type to_be_added2 = ...; + * + * type *addr = av_dynarray2_add((void **)&array, &nb, sizeof(*array), NULL); + * if (!addr) + * return AVERROR(ENOMEM); + * memcpy(addr, &to_be_added, sizeof(to_be_added)); + * + * // Shortcut of the above. + * type *addr = av_dynarray2_add((void **)&array, &nb, sizeof(*array), + * (const void *)&to_be_added2); + * if (!addr) + * return AVERROR(ENOMEM); + * + * // Now: + * // nb == 2 + * // to_be_added == array[0] + * // to_be_added2 == array[1] + * + * av_freep(&array); + * @endcode + * + * @{ + */ + +/** + * Add the pointer to an element to a dynamic array. + * + * The array to grow is supposed to be an array of pointers to + * structures, and the element to add must be a pointer to an already + * allocated structure. + * + * The array is reallocated when its size reaches powers of 2. + * Therefore, the amortized cost of adding an element is constant. + * + * In case of success, the pointer to the array is updated in order to + * point to the new grown array, and the number pointed to by `nb_ptr` + * is incremented. + * In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and + * `*nb_ptr` is set to 0. + * + * @param[in,out] tab_ptr Pointer to the array to grow + * @param[in,out] nb_ptr Pointer to the number of elements in the array + * @param[in] elem Element to add + * @see av_dynarray_add_nofree(), av_dynarray2_add() + */ +void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem); + +/** + * Add an element to a dynamic array. + * + * Function has the same functionality as av_dynarray_add(), + * but it doesn't free memory on fails. It returns error code + * instead and leave current buffer untouched. + * + * @return >=0 on success, negative otherwise + * @see av_dynarray_add(), av_dynarray2_add() + */ +av_warn_unused_result +int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem); + +/** + * Add an element of size `elem_size` to a dynamic array. + * + * The array is reallocated when its number of elements reaches powers of 2. + * Therefore, the amortized cost of adding an element is constant. + * + * In case of success, the pointer to the array is updated in order to + * point to the new grown array, and the number pointed to by `nb_ptr` + * is incremented. + * In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and + * `*nb_ptr` is set to 0. + * + * @param[in,out] tab_ptr Pointer to the array to grow + * @param[in,out] nb_ptr Pointer to the number of elements in the array + * @param[in] elem_size Size in bytes of an element in the array + * @param[in] elem_data Pointer to the data of the element to add. If + * `NULL`, the space of the newly added element is + * allocated but left uninitialized. + * + * @return Pointer to the data of the element to copy in the newly allocated + * space + * @see av_dynarray_add(), av_dynarray_add_nofree() + */ +void *av_dynarray2_add(void **tab_ptr, int *nb_ptr, size_t elem_size, + const uint8_t *elem_data); + +/** + * @} + */ + +/** + * @defgroup lavu_mem_misc Miscellaneous Functions + * + * Other functions related to memory allocation. + * + * @{ + */ + +/** + * Multiply two `size_t` values checking for overflow. + * + * @param[in] a,b Operands of multiplication + * @param[out] r Pointer to the result of the operation + * @return 0 on success, AVERROR(EINVAL) on overflow + */ +int av_size_mult(size_t a, size_t b, size_t *r); + +/** + * Set the maximum size that may be allocated in one block. + * + * The value specified with this function is effective for all libavutil's @ref + * lavu_mem_funcs "heap management functions." + * + * By default, the max value is defined as `INT_MAX`. + * + * @param max Value to be set as the new maximum size + * + * @warning Exercise extreme caution when using this function. Don't touch + * this if you do not understand the full consequence of doing so. + */ +void av_max_alloc(size_t max); + +/** + * @} + * @} + */ + +#endif /* AVUTIL_MEM_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/motion_vector.h b/third_party/ffmpeg/uos/amd64/include/libavutil/motion_vector.h new file mode 100644 index 00000000..ec295563 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/motion_vector.h @@ -0,0 +1,57 @@ +/* + * 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 AVUTIL_MOTION_VECTOR_H +#define AVUTIL_MOTION_VECTOR_H + +#include + +typedef struct AVMotionVector { + /** + * Where the current macroblock comes from; negative value when it comes + * from the past, positive value when it comes from the future. + * XXX: set exact relative ref frame reference instead of a +/- 1 "direction". + */ + int32_t source; + /** + * Width and height of the block. + */ + uint8_t w, h; + /** + * Absolute source position. Can be outside the frame area. + */ + int16_t src_x, src_y; + /** + * Absolute destination position. Can be outside the frame area. + */ + int16_t dst_x, dst_y; + /** + * Extra flag information. + * Currently unused. + */ + uint64_t flags; + /** + * Motion vector + * src_x = dst_x + motion_x / motion_scale + * src_y = dst_y + motion_y / motion_scale + */ + int32_t motion_x, motion_y; + uint16_t motion_scale; +} AVMotionVector; + +#endif /* AVUTIL_MOTION_VECTOR_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/murmur3.h b/third_party/ffmpeg/uos/amd64/include/libavutil/murmur3.h new file mode 100644 index 00000000..d90bc2fc --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/murmur3.h @@ -0,0 +1,115 @@ +/* + * Copyright (C) 2013 Reimar Döffinger + * + * 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 + */ + +/** + * @file + * @ingroup lavu_murmur3 + * Public header for MurmurHash3 hash function implementation. + */ + +#ifndef AVUTIL_MURMUR3_H +#define AVUTIL_MURMUR3_H + +#include +#include + +/** + * @defgroup lavu_murmur3 Murmur3 + * @ingroup lavu_hash + * MurmurHash3 hash function implementation. + * + * MurmurHash3 is a non-cryptographic hash function, of which three + * incompatible versions were created by its inventor Austin Appleby: + * + * - 32-bit output + * - 128-bit output for 32-bit platforms + * - 128-bit output for 64-bit platforms + * + * FFmpeg only implements the last variant: 128-bit output designed for 64-bit + * platforms. Even though the hash function was designed for 64-bit platforms, + * the function in reality works on 32-bit systems too, only with reduced + * performance. + * + * @anchor lavu_murmur3_seedinfo + * By design, MurmurHash3 requires a seed to operate. In response to this, + * libavutil provides two functions for hash initiation, one that requires a + * seed (av_murmur3_init_seeded()) and one that uses a fixed arbitrary integer + * as the seed, and therefore does not (av_murmur3_init()). + * + * To make hashes comparable, you should provide the same seed for all calls to + * this hash function -- if you are supplying one yourself, that is. + * + * @{ + */ + +/** + * Allocate an AVMurMur3 hash context. + * + * @return Uninitialized hash context or `NULL` in case of error + */ +struct AVMurMur3 *av_murmur3_alloc(void); + +/** + * Initialize or reinitialize an AVMurMur3 hash context with a seed. + * + * @param[out] c Hash context + * @param[in] seed Random seed + * + * @see av_murmur3_init() + * @see @ref lavu_murmur3_seedinfo "Detailed description" on a discussion of + * seeds for MurmurHash3. + */ +void av_murmur3_init_seeded(struct AVMurMur3 *c, uint64_t seed); + +/** + * Initialize or reinitialize an AVMurMur3 hash context. + * + * Equivalent to av_murmur3_init_seeded() with a built-in seed. + * + * @param[out] c Hash context + * + * @see av_murmur3_init_seeded() + * @see @ref lavu_murmur3_seedinfo "Detailed description" on a discussion of + * seeds for MurmurHash3. + */ +void av_murmur3_init(struct AVMurMur3 *c); + +/** + * Update hash context with new data. + * + * @param[out] c Hash context + * @param[in] src Input data to update hash with + * @param[in] len Number of bytes to read from `src` + */ +void av_murmur3_update(struct AVMurMur3 *c, const uint8_t *src, size_t len); + +/** + * Finish hashing and output digest value. + * + * @param[in,out] c Hash context + * @param[out] dst Buffer where output digest value is stored + */ +void av_murmur3_final(struct AVMurMur3 *c, uint8_t dst[16]); + +/** + * @} + */ + +#endif /* AVUTIL_MURMUR3_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/opt.h b/third_party/ffmpeg/uos/amd64/include/libavutil/opt.h new file mode 100644 index 00000000..461b5d3b --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/opt.h @@ -0,0 +1,891 @@ +/* + * AVOptions + * copyright (c) 2005 Michael Niedermayer + * + * 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 AVUTIL_OPT_H +#define AVUTIL_OPT_H + +/** + * @file + * AVOptions + */ + +#include "rational.h" +#include "avutil.h" +#include "channel_layout.h" +#include "dict.h" +#include "log.h" +#include "pixfmt.h" +#include "samplefmt.h" + +/** + * @defgroup avoptions AVOptions + * @ingroup lavu_data + * @{ + * AVOptions provide a generic system to declare options on arbitrary structs + * ("objects"). An option can have a help text, a type and a range of possible + * values. Options may then be enumerated, read and written to. + * + * @section avoptions_implement Implementing AVOptions + * This section describes how to add AVOptions capabilities to a struct. + * + * All AVOptions-related information is stored in an AVClass. Therefore + * the first member of the struct should be a pointer to an AVClass describing it. + * The option field of the AVClass must be set to a NULL-terminated static array + * of AVOptions. Each AVOption must have a non-empty name, a type, a default + * value and for number-type AVOptions also a range of allowed values. It must + * also declare an offset in bytes from the start of the struct, where the field + * associated with this AVOption is located. Other fields in the AVOption struct + * should also be set when applicable, but are not required. + * + * The following example illustrates an AVOptions-enabled struct: + * @code + * typedef struct test_struct { + * const AVClass *class; + * int int_opt; + * char *str_opt; + * uint8_t *bin_opt; + * int bin_len; + * } test_struct; + * + * static const AVOption test_options[] = { + * { "test_int", "This is a test option of int type.", offsetof(test_struct, int_opt), + * AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX }, + * { "test_str", "This is a test option of string type.", offsetof(test_struct, str_opt), + * AV_OPT_TYPE_STRING }, + * { "test_bin", "This is a test option of binary type.", offsetof(test_struct, bin_opt), + * AV_OPT_TYPE_BINARY }, + * { NULL }, + * }; + * + * static const AVClass test_class = { + * .class_name = "test class", + * .item_name = av_default_item_name, + * .option = test_options, + * .version = LIBAVUTIL_VERSION_INT, + * }; + * @endcode + * + * Next, when allocating your struct, you must ensure that the AVClass pointer + * is set to the correct value. Then, av_opt_set_defaults() can be called to + * initialize defaults. After that the struct is ready to be used with the + * AVOptions API. + * + * When cleaning up, you may use the av_opt_free() function to automatically + * free all the allocated string and binary options. + * + * Continuing with the above example: + * + * @code + * test_struct *alloc_test_struct(void) + * { + * test_struct *ret = av_mallocz(sizeof(*ret)); + * ret->class = &test_class; + * av_opt_set_defaults(ret); + * return ret; + * } + * void free_test_struct(test_struct **foo) + * { + * av_opt_free(*foo); + * av_freep(foo); + * } + * @endcode + * + * @subsection avoptions_implement_nesting Nesting + * It may happen that an AVOptions-enabled struct contains another + * AVOptions-enabled struct as a member (e.g. AVCodecContext in + * libavcodec exports generic options, while its priv_data field exports + * codec-specific options). In such a case, it is possible to set up the + * parent struct to export a child's options. To do that, simply + * implement AVClass.child_next() and AVClass.child_class_iterate() in the + * parent struct's AVClass. + * Assuming that the test_struct from above now also contains a + * child_struct field: + * + * @code + * typedef struct child_struct { + * AVClass *class; + * int flags_opt; + * } child_struct; + * static const AVOption child_opts[] = { + * { "test_flags", "This is a test option of flags type.", + * offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX }, + * { NULL }, + * }; + * static const AVClass child_class = { + * .class_name = "child class", + * .item_name = av_default_item_name, + * .option = child_opts, + * .version = LIBAVUTIL_VERSION_INT, + * }; + * + * void *child_next(void *obj, void *prev) + * { + * test_struct *t = obj; + * if (!prev && t->child_struct) + * return t->child_struct; + * return NULL + * } + * const AVClass child_class_iterate(void **iter) + * { + * const AVClass *c = *iter ? NULL : &child_class; + * *iter = (void*)(uintptr_t)c; + * return c; + * } + * @endcode + * Putting child_next() and child_class_iterate() as defined above into + * test_class will now make child_struct's options accessible through + * test_struct (again, proper setup as described above needs to be done on + * child_struct right after it is created). + * + * From the above example it might not be clear why both child_next() + * and child_class_iterate() are needed. The distinction is that child_next() + * iterates over actually existing objects, while child_class_iterate() + * iterates over all possible child classes. E.g. if an AVCodecContext + * was initialized to use a codec which has private options, then its + * child_next() will return AVCodecContext.priv_data and finish + * iterating. OTOH child_class_iterate() on AVCodecContext.av_class will + * iterate over all available codecs with private options. + * + * @subsection avoptions_implement_named_constants Named constants + * It is possible to create named constants for options. Simply set the unit + * field of the option the constants should apply to a string and + * create the constants themselves as options of type AV_OPT_TYPE_CONST + * with their unit field set to the same string. + * Their default_val field should contain the value of the named + * constant. + * For example, to add some named constants for the test_flags option + * above, put the following into the child_opts array: + * @code + * { "test_flags", "This is a test option of flags type.", + * offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX, "test_unit" }, + * { "flag1", "This is a flag with value 16", 0, AV_OPT_TYPE_CONST, { .i64 = 16 }, 0, 0, "test_unit" }, + * @endcode + * + * @section avoptions_use Using AVOptions + * This section deals with accessing options in an AVOptions-enabled struct. + * Such structs in FFmpeg are e.g. AVCodecContext in libavcodec or + * AVFormatContext in libavformat. + * + * @subsection avoptions_use_examine Examining AVOptions + * The basic functions for examining options are av_opt_next(), which iterates + * over all options defined for one object, and av_opt_find(), which searches + * for an option with the given name. + * + * The situation is more complicated with nesting. An AVOptions-enabled struct + * may have AVOptions-enabled children. Passing the AV_OPT_SEARCH_CHILDREN flag + * to av_opt_find() will make the function search children recursively. + * + * For enumerating there are basically two cases. The first is when you want to + * get all options that may potentially exist on the struct and its children + * (e.g. when constructing documentation). In that case you should call + * av_opt_child_class_iterate() recursively on the parent struct's AVClass. The + * second case is when you have an already initialized struct with all its + * children and you want to get all options that can be actually written or read + * from it. In that case you should call av_opt_child_next() recursively (and + * av_opt_next() on each result). + * + * @subsection avoptions_use_get_set Reading and writing AVOptions + * When setting options, you often have a string read directly from the + * user. In such a case, simply passing it to av_opt_set() is enough. For + * non-string type options, av_opt_set() will parse the string according to the + * option type. + * + * Similarly av_opt_get() will read any option type and convert it to a string + * which will be returned. Do not forget that the string is allocated, so you + * have to free it with av_free(). + * + * In some cases it may be more convenient to put all options into an + * AVDictionary and call av_opt_set_dict() on it. A specific case of this + * are the format/codec open functions in lavf/lavc which take a dictionary + * filled with option as a parameter. This makes it possible to set some options + * that cannot be set otherwise, since e.g. the input file format is not known + * before the file is actually opened. + */ + +enum AVOptionType{ + AV_OPT_TYPE_FLAGS, + AV_OPT_TYPE_INT, + AV_OPT_TYPE_INT64, + AV_OPT_TYPE_DOUBLE, + AV_OPT_TYPE_FLOAT, + AV_OPT_TYPE_STRING, + AV_OPT_TYPE_RATIONAL, + AV_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length + AV_OPT_TYPE_DICT, + AV_OPT_TYPE_UINT64, + AV_OPT_TYPE_CONST, + AV_OPT_TYPE_IMAGE_SIZE, ///< offset must point to two consecutive integers + AV_OPT_TYPE_PIXEL_FMT, + AV_OPT_TYPE_SAMPLE_FMT, + AV_OPT_TYPE_VIDEO_RATE, ///< offset must point to AVRational + AV_OPT_TYPE_DURATION, + AV_OPT_TYPE_COLOR, +#if FF_API_OLD_CHANNEL_LAYOUT + AV_OPT_TYPE_CHANNEL_LAYOUT, +#endif + AV_OPT_TYPE_BOOL, + AV_OPT_TYPE_CHLAYOUT, +}; + +/** + * AVOption + */ +typedef struct AVOption { + const char *name; + + /** + * short English help text + * @todo What about other languages? + */ + const char *help; + + /** + * The offset relative to the context structure where the option + * value is stored. It should be 0 for named constants. + */ + int offset; + enum AVOptionType type; + + /** + * the default value for scalar options + */ + union { + int64_t i64; + double dbl; + const char *str; + /* TODO those are unused now */ + AVRational q; + } default_val; + double min; ///< minimum valid value for the option + double max; ///< maximum valid value for the option + + int flags; +#define AV_OPT_FLAG_ENCODING_PARAM 1 ///< a generic parameter which can be set by the user for muxing or encoding +#define AV_OPT_FLAG_DECODING_PARAM 2 ///< a generic parameter which can be set by the user for demuxing or decoding +#define AV_OPT_FLAG_AUDIO_PARAM 8 +#define AV_OPT_FLAG_VIDEO_PARAM 16 +#define AV_OPT_FLAG_SUBTITLE_PARAM 32 +/** + * The option is intended for exporting values to the caller. + */ +#define AV_OPT_FLAG_EXPORT 64 +/** + * The option may not be set through the AVOptions API, only read. + * This flag only makes sense when AV_OPT_FLAG_EXPORT is also set. + */ +#define AV_OPT_FLAG_READONLY 128 +#define AV_OPT_FLAG_BSF_PARAM (1<<8) ///< a generic parameter which can be set by the user for bit stream filtering +#define AV_OPT_FLAG_RUNTIME_PARAM (1<<15) ///< a generic parameter which can be set by the user at runtime +#define AV_OPT_FLAG_FILTERING_PARAM (1<<16) ///< a generic parameter which can be set by the user for filtering +#define AV_OPT_FLAG_DEPRECATED (1<<17) ///< set if option is deprecated, users should refer to AVOption.help text for more information +#define AV_OPT_FLAG_CHILD_CONSTS (1<<18) ///< set if option constants can also reside in child objects +//FIXME think about enc-audio, ... style flags + + /** + * The logical unit to which the option belongs. Non-constant + * options and corresponding named constants share the same + * unit. May be NULL. + */ + const char *unit; +} AVOption; + +/** + * A single allowed range of values, or a single allowed value. + */ +typedef struct AVOptionRange { + const char *str; + /** + * Value range. + * For string ranges this represents the min/max length. + * For dimensions this represents the min/max pixel count or width/height in multi-component case. + */ + double value_min, value_max; + /** + * Value's component range. + * For string this represents the unicode range for chars, 0-127 limits to ASCII. + */ + double component_min, component_max; + /** + * Range flag. + * If set to 1 the struct encodes a range, if set to 0 a single value. + */ + int is_range; +} AVOptionRange; + +/** + * List of AVOptionRange structs. + */ +typedef struct AVOptionRanges { + /** + * Array of option ranges. + * + * Most of option types use just one component. + * Following describes multi-component option types: + * + * AV_OPT_TYPE_IMAGE_SIZE: + * component index 0: range of pixel count (width * height). + * component index 1: range of width. + * component index 2: range of height. + * + * @note To obtain multi-component version of this structure, user must + * provide AV_OPT_MULTI_COMPONENT_RANGE to av_opt_query_ranges or + * av_opt_query_ranges_default function. + * + * Multi-component range can be read as in following example: + * + * @code + * int range_index, component_index; + * AVOptionRanges *ranges; + * AVOptionRange *range[3]; //may require more than 3 in the future. + * av_opt_query_ranges(&ranges, obj, key, AV_OPT_MULTI_COMPONENT_RANGE); + * for (range_index = 0; range_index < ranges->nb_ranges; range_index++) { + * for (component_index = 0; component_index < ranges->nb_components; component_index++) + * range[component_index] = ranges->range[ranges->nb_ranges * component_index + range_index]; + * //do something with range here. + * } + * av_opt_freep_ranges(&ranges); + * @endcode + */ + AVOptionRange **range; + /** + * Number of ranges per component. + */ + int nb_ranges; + /** + * Number of componentes. + */ + int nb_components; +} AVOptionRanges; + +/** + * Show the obj options. + * + * @param req_flags requested flags for the options to show. Show only the + * options for which it is opt->flags & req_flags. + * @param rej_flags rejected flags for the options to show. Show only the + * options for which it is !(opt->flags & req_flags). + * @param av_log_obj log context to use for showing the options + */ +int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags); + +/** + * Set the values of all AVOption fields to their default values. + * + * @param s an AVOption-enabled struct (its first member must be a pointer to AVClass) + */ +void av_opt_set_defaults(void *s); + +/** + * Set the values of all AVOption fields to their default values. Only these + * AVOption fields for which (opt->flags & mask) == flags will have their + * default applied to s. + * + * @param s an AVOption-enabled struct (its first member must be a pointer to AVClass) + * @param mask combination of AV_OPT_FLAG_* + * @param flags combination of AV_OPT_FLAG_* + */ +void av_opt_set_defaults2(void *s, int mask, int flags); + +/** + * Parse the key/value pairs list in opts. For each key/value pair + * found, stores the value in the field in ctx that is named like the + * key. ctx must be an AVClass context, storing is done using + * AVOptions. + * + * @param opts options string to parse, may be NULL + * @param key_val_sep a 0-terminated list of characters used to + * separate key from value + * @param pairs_sep a 0-terminated list of characters used to separate + * two pairs from each other + * @return the number of successfully set key/value pairs, or a negative + * value corresponding to an AVERROR code in case of error: + * AVERROR(EINVAL) if opts cannot be parsed, + * the error code issued by av_opt_set() if a key/value pair + * cannot be set + */ +int av_set_options_string(void *ctx, const char *opts, + const char *key_val_sep, const char *pairs_sep); + +/** + * Parse the key-value pairs list in opts. For each key=value pair found, + * set the value of the corresponding option in ctx. + * + * @param ctx the AVClass object to set options on + * @param opts the options string, key-value pairs separated by a + * delimiter + * @param shorthand a NULL-terminated array of options names for shorthand + * notation: if the first field in opts has no key part, + * the key is taken from the first element of shorthand; + * then again for the second, etc., until either opts is + * finished, shorthand is finished or a named option is + * found; after that, all options must be named + * @param key_val_sep a 0-terminated list of characters used to separate + * key from value, for example '=' + * @param pairs_sep a 0-terminated list of characters used to separate + * two pairs from each other, for example ':' or ',' + * @return the number of successfully set key=value pairs, or a negative + * value corresponding to an AVERROR code in case of error: + * AVERROR(EINVAL) if opts cannot be parsed, + * the error code issued by av_set_string3() if a key/value pair + * cannot be set + * + * Options names must use only the following characters: a-z A-Z 0-9 - . / _ + * Separators must use characters distinct from option names and from each + * other. + */ +int av_opt_set_from_string(void *ctx, const char *opts, + const char *const *shorthand, + const char *key_val_sep, const char *pairs_sep); +/** + * Free all allocated objects in obj. + */ +void av_opt_free(void *obj); + +/** + * Check whether a particular flag is set in a flags field. + * + * @param field_name the name of the flag field option + * @param flag_name the name of the flag to check + * @return non-zero if the flag is set, zero if the flag isn't set, + * isn't of the right type, or the flags field doesn't exist. + */ +int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name); + +/** + * Set all the options from a given dictionary on an object. + * + * @param obj a struct whose first element is a pointer to AVClass + * @param options options to process. This dictionary will be freed and replaced + * by a new one containing all options not found in obj. + * Of course this new dictionary needs to be freed by caller + * with av_dict_free(). + * + * @return 0 on success, a negative AVERROR if some option was found in obj, + * but could not be set. + * + * @see av_dict_copy() + */ +int av_opt_set_dict(void *obj, struct AVDictionary **options); + + +/** + * Set all the options from a given dictionary on an object. + * + * @param obj a struct whose first element is a pointer to AVClass + * @param options options to process. This dictionary will be freed and replaced + * by a new one containing all options not found in obj. + * Of course this new dictionary needs to be freed by caller + * with av_dict_free(). + * @param search_flags A combination of AV_OPT_SEARCH_*. + * + * @return 0 on success, a negative AVERROR if some option was found in obj, + * but could not be set. + * + * @see av_dict_copy() + */ +int av_opt_set_dict2(void *obj, struct AVDictionary **options, int search_flags); + +/** + * Extract a key-value pair from the beginning of a string. + * + * @param ropts pointer to the options string, will be updated to + * point to the rest of the string (one of the pairs_sep + * or the final NUL) + * @param key_val_sep a 0-terminated list of characters used to separate + * key from value, for example '=' + * @param pairs_sep a 0-terminated list of characters used to separate + * two pairs from each other, for example ':' or ',' + * @param flags flags; see the AV_OPT_FLAG_* values below + * @param rkey parsed key; must be freed using av_free() + * @param rval parsed value; must be freed using av_free() + * + * @return >=0 for success, or a negative value corresponding to an + * AVERROR code in case of error; in particular: + * AVERROR(EINVAL) if no key is present + * + */ +int av_opt_get_key_value(const char **ropts, + const char *key_val_sep, const char *pairs_sep, + unsigned flags, + char **rkey, char **rval); + +enum { + + /** + * Accept to parse a value without a key; the key will then be returned + * as NULL. + */ + AV_OPT_FLAG_IMPLICIT_KEY = 1, +}; + +/** + * @defgroup opt_eval_funcs Evaluating option strings + * @{ + * This group of functions can be used to evaluate option strings + * and get numbers out of them. They do the same thing as av_opt_set(), + * except the result is written into the caller-supplied pointer. + * + * @param obj a struct whose first element is a pointer to AVClass. + * @param o an option for which the string is to be evaluated. + * @param val string to be evaluated. + * @param *_out value of the string will be written here. + * + * @return 0 on success, a negative number on failure. + */ +int av_opt_eval_flags (void *obj, const AVOption *o, const char *val, int *flags_out); +int av_opt_eval_int (void *obj, const AVOption *o, const char *val, int *int_out); +int av_opt_eval_int64 (void *obj, const AVOption *o, const char *val, int64_t *int64_out); +int av_opt_eval_float (void *obj, const AVOption *o, const char *val, float *float_out); +int av_opt_eval_double(void *obj, const AVOption *o, const char *val, double *double_out); +int av_opt_eval_q (void *obj, const AVOption *o, const char *val, AVRational *q_out); +/** + * @} + */ + +#define AV_OPT_SEARCH_CHILDREN (1 << 0) /**< Search in possible children of the + given object first. */ +/** + * The obj passed to av_opt_find() is fake -- only a double pointer to AVClass + * instead of a required pointer to a struct containing AVClass. This is + * useful for searching for options without needing to allocate the corresponding + * object. + */ +#define AV_OPT_SEARCH_FAKE_OBJ (1 << 1) + +/** + * In av_opt_get, return NULL if the option has a pointer type and is set to NULL, + * rather than returning an empty string. + */ +#define AV_OPT_ALLOW_NULL (1 << 2) + +/** + * Allows av_opt_query_ranges and av_opt_query_ranges_default to return more than + * one component for certain option types. + * @see AVOptionRanges for details. + */ +#define AV_OPT_MULTI_COMPONENT_RANGE (1 << 12) + +/** + * Look for an option in an object. Consider only options which + * have all the specified flags set. + * + * @param[in] obj A pointer to a struct whose first element is a + * pointer to an AVClass. + * Alternatively a double pointer to an AVClass, if + * AV_OPT_SEARCH_FAKE_OBJ search flag is set. + * @param[in] name The name of the option to look for. + * @param[in] unit When searching for named constants, name of the unit + * it belongs to. + * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). + * @param search_flags A combination of AV_OPT_SEARCH_*. + * + * @return A pointer to the option found, or NULL if no option + * was found. + * + * @note Options found with AV_OPT_SEARCH_CHILDREN flag may not be settable + * directly with av_opt_set(). Use special calls which take an options + * AVDictionary (e.g. avformat_open_input()) to set options found with this + * flag. + */ +const AVOption *av_opt_find(void *obj, const char *name, const char *unit, + int opt_flags, int search_flags); + +/** + * Look for an option in an object. Consider only options which + * have all the specified flags set. + * + * @param[in] obj A pointer to a struct whose first element is a + * pointer to an AVClass. + * Alternatively a double pointer to an AVClass, if + * AV_OPT_SEARCH_FAKE_OBJ search flag is set. + * @param[in] name The name of the option to look for. + * @param[in] unit When searching for named constants, name of the unit + * it belongs to. + * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). + * @param search_flags A combination of AV_OPT_SEARCH_*. + * @param[out] target_obj if non-NULL, an object to which the option belongs will be + * written here. It may be different from obj if AV_OPT_SEARCH_CHILDREN is present + * in search_flags. This parameter is ignored if search_flags contain + * AV_OPT_SEARCH_FAKE_OBJ. + * + * @return A pointer to the option found, or NULL if no option + * was found. + */ +const AVOption *av_opt_find2(void *obj, const char *name, const char *unit, + int opt_flags, int search_flags, void **target_obj); + +/** + * Iterate over all AVOptions belonging to obj. + * + * @param obj an AVOptions-enabled struct or a double pointer to an + * AVClass describing it. + * @param prev result of the previous call to av_opt_next() on this object + * or NULL + * @return next AVOption or NULL + */ +const AVOption *av_opt_next(const void *obj, const AVOption *prev); + +/** + * Iterate over AVOptions-enabled children of obj. + * + * @param prev result of a previous call to this function or NULL + * @return next AVOptions-enabled child or NULL + */ +void *av_opt_child_next(void *obj, void *prev); + +/** + * Iterate over potential AVOptions-enabled children of parent. + * + * @param iter a pointer where iteration state is stored. + * @return AVClass corresponding to next potential child or NULL + */ +const AVClass *av_opt_child_class_iterate(const AVClass *parent, void **iter); + +/** + * @defgroup opt_set_funcs Option setting functions + * @{ + * Those functions set the field of obj with the given name to value. + * + * @param[in] obj A struct whose first element is a pointer to an AVClass. + * @param[in] name the name of the field to set + * @param[in] val The value to set. In case of av_opt_set() if the field is not + * of a string type, then the given string is parsed. + * SI postfixes and some named scalars are supported. + * If the field is of a numeric type, it has to be a numeric or named + * scalar. Behavior with more than one scalar and +- infix operators + * is undefined. + * If the field is of a flags type, it has to be a sequence of numeric + * scalars or named flags separated by '+' or '-'. Prefixing a flag + * with '+' causes it to be set without affecting the other flags; + * similarly, '-' unsets a flag. + * If the field is of a dictionary type, it has to be a ':' separated list of + * key=value parameters. Values containing ':' special characters must be + * escaped. + * @param search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN + * is passed here, then the option may be set on a child of obj. + * + * @return 0 if the value has been set, or an AVERROR code in case of + * error: + * AVERROR_OPTION_NOT_FOUND if no matching option exists + * AVERROR(ERANGE) if the value is out of range + * AVERROR(EINVAL) if the value is not valid + */ +int av_opt_set (void *obj, const char *name, const char *val, int search_flags); +int av_opt_set_int (void *obj, const char *name, int64_t val, int search_flags); +int av_opt_set_double (void *obj, const char *name, double val, int search_flags); +int av_opt_set_q (void *obj, const char *name, AVRational val, int search_flags); +int av_opt_set_bin (void *obj, const char *name, const uint8_t *val, int size, int search_flags); +int av_opt_set_image_size(void *obj, const char *name, int w, int h, int search_flags); +int av_opt_set_pixel_fmt (void *obj, const char *name, enum AVPixelFormat fmt, int search_flags); +int av_opt_set_sample_fmt(void *obj, const char *name, enum AVSampleFormat fmt, int search_flags); +int av_opt_set_video_rate(void *obj, const char *name, AVRational val, int search_flags); +#if FF_API_OLD_CHANNEL_LAYOUT +attribute_deprecated +int av_opt_set_channel_layout(void *obj, const char *name, int64_t ch_layout, int search_flags); +#endif +int av_opt_set_chlayout(void *obj, const char *name, const AVChannelLayout *layout, int search_flags); +/** + * @note Any old dictionary present is discarded and replaced with a copy of the new one. The + * caller still owns val is and responsible for freeing it. + */ +int av_opt_set_dict_val(void *obj, const char *name, const AVDictionary *val, int search_flags); + +/** + * Set a binary option to an integer list. + * + * @param obj AVClass object to set options on + * @param name name of the binary option + * @param val pointer to an integer list (must have the correct type with + * regard to the contents of the list) + * @param term list terminator (usually 0 or -1) + * @param flags search flags + */ +#define av_opt_set_int_list(obj, name, val, term, flags) \ + (av_int_list_length(val, term) > INT_MAX / sizeof(*(val)) ? \ + AVERROR(EINVAL) : \ + av_opt_set_bin(obj, name, (const uint8_t *)(val), \ + av_int_list_length(val, term) * sizeof(*(val)), flags)) + +/** + * @} + */ + +/** + * @defgroup opt_get_funcs Option getting functions + * @{ + * Those functions get a value of the option with the given name from an object. + * + * @param[in] obj a struct whose first element is a pointer to an AVClass. + * @param[in] name name of the option to get. + * @param[in] search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN + * is passed here, then the option may be found in a child of obj. + * @param[out] out_val value of the option will be written here + * @return >=0 on success, a negative error code otherwise + */ +/** + * @note the returned string will be av_malloc()ed and must be av_free()ed by the caller + * + * @note if AV_OPT_ALLOW_NULL is set in search_flags in av_opt_get, and the + * option is of type AV_OPT_TYPE_STRING, AV_OPT_TYPE_BINARY or AV_OPT_TYPE_DICT + * and is set to NULL, *out_val will be set to NULL instead of an allocated + * empty string. + */ +int av_opt_get (void *obj, const char *name, int search_flags, uint8_t **out_val); +int av_opt_get_int (void *obj, const char *name, int search_flags, int64_t *out_val); +int av_opt_get_double (void *obj, const char *name, int search_flags, double *out_val); +int av_opt_get_q (void *obj, const char *name, int search_flags, AVRational *out_val); +int av_opt_get_image_size(void *obj, const char *name, int search_flags, int *w_out, int *h_out); +int av_opt_get_pixel_fmt (void *obj, const char *name, int search_flags, enum AVPixelFormat *out_fmt); +int av_opt_get_sample_fmt(void *obj, const char *name, int search_flags, enum AVSampleFormat *out_fmt); +int av_opt_get_video_rate(void *obj, const char *name, int search_flags, AVRational *out_val); +#if FF_API_OLD_CHANNEL_LAYOUT +attribute_deprecated +int av_opt_get_channel_layout(void *obj, const char *name, int search_flags, int64_t *ch_layout); +#endif +int av_opt_get_chlayout(void *obj, const char *name, int search_flags, AVChannelLayout *layout); +/** + * @param[out] out_val The returned dictionary is a copy of the actual value and must + * be freed with av_dict_free() by the caller + */ +int av_opt_get_dict_val(void *obj, const char *name, int search_flags, AVDictionary **out_val); +/** + * @} + */ +/** + * Gets a pointer to the requested field in a struct. + * This function allows accessing a struct even when its fields are moved or + * renamed since the application making the access has been compiled, + * + * @returns a pointer to the field, it can be cast to the correct type and read + * or written to. + */ +void *av_opt_ptr(const AVClass *avclass, void *obj, const char *name); + +/** + * Free an AVOptionRanges struct and set it to NULL. + */ +void av_opt_freep_ranges(AVOptionRanges **ranges); + +/** + * Get a list of allowed ranges for the given option. + * + * The returned list may depend on other fields in obj like for example profile. + * + * @param flags is a bitmask of flags, undefined flags should not be set and should be ignored + * AV_OPT_SEARCH_FAKE_OBJ indicates that the obj is a double pointer to a AVClass instead of a full instance + * AV_OPT_MULTI_COMPONENT_RANGE indicates that function may return more than one component, @see AVOptionRanges + * + * The result must be freed with av_opt_freep_ranges. + * + * @return number of compontents returned on success, a negative errro code otherwise + */ +int av_opt_query_ranges(AVOptionRanges **, void *obj, const char *key, int flags); + +/** + * Copy options from src object into dest object. + * + * The underlying AVClass of both src and dest must coincide. The guarantee + * below does not apply if this is not fulfilled. + * + * Options that require memory allocation (e.g. string or binary) are malloc'ed in dest object. + * Original memory allocated for such options is freed unless both src and dest options points to the same memory. + * + * Even on error it is guaranteed that allocated options from src and dest + * no longer alias each other afterwards; in particular calling av_opt_free() + * on both src and dest is safe afterwards if dest has been memdup'ed from src. + * + * @param dest Object to copy from + * @param src Object to copy into + * @return 0 on success, negative on error + */ +int av_opt_copy(void *dest, const void *src); + +/** + * Get a default list of allowed ranges for the given option. + * + * This list is constructed without using the AVClass.query_ranges() callback + * and can be used as fallback from within the callback. + * + * @param flags is a bitmask of flags, undefined flags should not be set and should be ignored + * AV_OPT_SEARCH_FAKE_OBJ indicates that the obj is a double pointer to a AVClass instead of a full instance + * AV_OPT_MULTI_COMPONENT_RANGE indicates that function may return more than one component, @see AVOptionRanges + * + * The result must be freed with av_opt_free_ranges. + * + * @return number of compontents returned on success, a negative errro code otherwise + */ +int av_opt_query_ranges_default(AVOptionRanges **, void *obj, const char *key, int flags); + +/** + * Check if given option is set to its default value. + * + * Options o must belong to the obj. This function must not be called to check child's options state. + * @see av_opt_is_set_to_default_by_name(). + * + * @param obj AVClass object to check option on + * @param o option to be checked + * @return >0 when option is set to its default, + * 0 when option is not set its default, + * <0 on error + */ +int av_opt_is_set_to_default(void *obj, const AVOption *o); + +/** + * Check if given option is set to its default value. + * + * @param obj AVClass object to check option on + * @param name option name + * @param search_flags combination of AV_OPT_SEARCH_* + * @return >0 when option is set to its default, + * 0 when option is not set its default, + * <0 on error + */ +int av_opt_is_set_to_default_by_name(void *obj, const char *name, int search_flags); + + +#define AV_OPT_SERIALIZE_SKIP_DEFAULTS 0x00000001 ///< Serialize options that are not set to default values only. +#define AV_OPT_SERIALIZE_OPT_FLAGS_EXACT 0x00000002 ///< Serialize options that exactly match opt_flags only. + +/** + * Serialize object's options. + * + * Create a string containing object's serialized options. + * Such string may be passed back to av_opt_set_from_string() in order to restore option values. + * A key/value or pairs separator occurring in the serialized value or + * name string are escaped through the av_escape() function. + * + * @param[in] obj AVClass object to serialize + * @param[in] opt_flags serialize options with all the specified flags set (AV_OPT_FLAG) + * @param[in] flags combination of AV_OPT_SERIALIZE_* flags + * @param[out] buffer Pointer to buffer that will be allocated with string containg serialized options. + * Buffer must be freed by the caller when is no longer needed. + * @param[in] key_val_sep character used to separate key from value + * @param[in] pairs_sep character used to separate two pairs from each other + * @return >= 0 on success, negative on error + * @warning Separators cannot be neither '\\' nor '\0'. They also cannot be the same. + */ +int av_opt_serialize(void *obj, int opt_flags, int flags, char **buffer, + const char key_val_sep, const char pairs_sep); +/** + * @} + */ + +#endif /* AVUTIL_OPT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/parseutils.h b/third_party/ffmpeg/uos/amd64/include/libavutil/parseutils.h new file mode 100644 index 00000000..e66d24b7 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/parseutils.h @@ -0,0 +1,193 @@ +/* + * 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 AVUTIL_PARSEUTILS_H +#define AVUTIL_PARSEUTILS_H + +#include + +#include "rational.h" + +/** + * @file + * misc parsing utilities + */ + +/** + * Parse str and store the parsed ratio in q. + * + * Note that a ratio with infinite (1/0) or negative value is + * considered valid, so you should check on the returned value if you + * want to exclude those values. + * + * The undefined value can be expressed using the "0:0" string. + * + * @param[in,out] q pointer to the AVRational which will contain the ratio + * @param[in] str the string to parse: it has to be a string in the format + * num:den, a float number or an expression + * @param[in] max the maximum allowed numerator and denominator + * @param[in] log_offset log level offset which is applied to the log + * level of log_ctx + * @param[in] log_ctx parent logging context + * @return >= 0 on success, a negative error code otherwise + */ +int av_parse_ratio(AVRational *q, const char *str, int max, + int log_offset, void *log_ctx); + +#define av_parse_ratio_quiet(rate, str, max) \ + av_parse_ratio(rate, str, max, AV_LOG_MAX_OFFSET, NULL) + +/** + * Parse str and put in width_ptr and height_ptr the detected values. + * + * @param[in,out] width_ptr pointer to the variable which will contain the detected + * width value + * @param[in,out] height_ptr pointer to the variable which will contain the detected + * height value + * @param[in] str the string to parse: it has to be a string in the format + * width x height or a valid video size abbreviation. + * @return >= 0 on success, a negative error code otherwise + */ +int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str); + +/** + * Parse str and store the detected values in *rate. + * + * @param[in,out] rate pointer to the AVRational which will contain the detected + * frame rate + * @param[in] str the string to parse: it has to be a string in the format + * rate_num / rate_den, a float number or a valid video rate abbreviation + * @return >= 0 on success, a negative error code otherwise + */ +int av_parse_video_rate(AVRational *rate, const char *str); + +/** + * Put the RGBA values that correspond to color_string in rgba_color. + * + * @param color_string a string specifying a color. It can be the name of + * a color (case insensitive match) or a [0x|#]RRGGBB[AA] sequence, + * possibly followed by "@" and a string representing the alpha + * component. + * The alpha component may be a string composed by "0x" followed by an + * hexadecimal number or a decimal number between 0.0 and 1.0, which + * represents the opacity value (0x00/0.0 means completely transparent, + * 0xff/1.0 completely opaque). + * If the alpha component is not specified then 0xff is assumed. + * The string "random" will result in a random color. + * @param slen length of the initial part of color_string containing the + * color. It can be set to -1 if color_string is a null terminated string + * containing nothing else than the color. + * @return >= 0 in case of success, a negative value in case of + * failure (for example if color_string cannot be parsed). + */ +int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen, + void *log_ctx); + +/** + * Get the name of a color from the internal table of hard-coded named + * colors. + * + * This function is meant to enumerate the color names recognized by + * av_parse_color(). + * + * @param color_idx index of the requested color, starting from 0 + * @param rgbp if not NULL, will point to a 3-elements array with the color value in RGB + * @return the color name string or NULL if color_idx is not in the array + */ +const char *av_get_known_color_name(int color_idx, const uint8_t **rgb); + +/** + * Parse timestr and return in *time a corresponding number of + * microseconds. + * + * @param timeval puts here the number of microseconds corresponding + * to the string in timestr. If the string represents a duration, it + * is the number of microseconds contained in the time interval. If + * the string is a date, is the number of microseconds since 1st of + * January, 1970 up to the time of the parsed date. If timestr cannot + * be successfully parsed, set *time to INT64_MIN. + + * @param timestr a string representing a date or a duration. + * - If a date the syntax is: + * @code + * [{YYYY-MM-DD|YYYYMMDD}[T|t| ]]{{HH:MM:SS[.m...]]]}|{HHMMSS[.m...]]]}}[Z] + * now + * @endcode + * If the value is "now" it takes the current time. + * Time is local time unless Z is appended, in which case it is + * interpreted as UTC. + * If the year-month-day part is not specified it takes the current + * year-month-day. + * - If a duration the syntax is: + * @code + * [-][HH:]MM:SS[.m...] + * [-]S+[.m...] + * @endcode + * @param duration flag which tells how to interpret timestr, if not + * zero timestr is interpreted as a duration, otherwise as a date + * @return >= 0 in case of success, a negative value corresponding to an + * AVERROR code otherwise + */ +int av_parse_time(int64_t *timeval, const char *timestr, int duration); + +/** + * Attempt to find a specific tag in a URL. + * + * syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done. + * Return 1 if found. + */ +int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); + +/** + * Simplified version of strptime + * + * Parse the input string p according to the format string fmt and + * store its results in the structure dt. + * This implementation supports only a subset of the formats supported + * by the standard strptime(). + * + * The supported input field descriptors are listed below. + * - %H: the hour as a decimal number, using a 24-hour clock, in the + * range '00' through '23' + * - %J: hours as a decimal number, in the range '0' through INT_MAX + * - %M: the minute as a decimal number, using a 24-hour clock, in the + * range '00' through '59' + * - %S: the second as a decimal number, using a 24-hour clock, in the + * range '00' through '59' + * - %Y: the year as a decimal number, using the Gregorian calendar + * - %m: the month as a decimal number, in the range '1' through '12' + * - %d: the day of the month as a decimal number, in the range '1' + * through '31' + * - %T: alias for '%H:%M:%S' + * - %%: a literal '%' + * + * @return a pointer to the first character not processed in this function + * call. In case the input string contains more characters than + * required by the format string the return value points right after + * the last consumed input character. In case the whole input string + * is consumed the return value points to the null byte at the end of + * the string. On failure NULL is returned. + */ +char *av_small_strptime(const char *p, const char *fmt, struct tm *dt); + +/** + * Convert the decomposed UTC time in tm to a time_t value. + */ +time_t av_timegm(struct tm *tm); + +#endif /* AVUTIL_PARSEUTILS_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/pixdesc.h b/third_party/ffmpeg/uos/amd64/include/libavutil/pixdesc.h new file mode 100644 index 00000000..f8a195ff --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/pixdesc.h @@ -0,0 +1,410 @@ +/* + * pixel format descriptor + * Copyright (c) 2009 Michael Niedermayer + * + * 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 AVUTIL_PIXDESC_H +#define AVUTIL_PIXDESC_H + +#include + +#include "attributes.h" +#include "pixfmt.h" + +typedef struct AVComponentDescriptor { + /** + * Which of the 4 planes contains the component. + */ + int plane; + + /** + * Number of elements between 2 horizontally consecutive pixels. + * Elements are bits for bitstream formats, bytes otherwise. + */ + int step; + + /** + * Number of elements before the component of the first pixel. + * Elements are bits for bitstream formats, bytes otherwise. + */ + int offset; + + /** + * Number of least significant bits that must be shifted away + * to get the value. + */ + int shift; + + /** + * Number of bits in the component. + */ + int depth; +} AVComponentDescriptor; + +/** + * Descriptor that unambiguously describes how the bits of a pixel are + * stored in the up to 4 data planes of an image. It also stores the + * subsampling factors and number of components. + * + * @note This is separate of the colorspace (RGB, YCbCr, YPbPr, JPEG-style YUV + * and all the YUV variants) AVPixFmtDescriptor just stores how values + * are stored not what these values represent. + */ +typedef struct AVPixFmtDescriptor { + const char *name; + uint8_t nb_components; ///< The number of components each pixel has, (1-4) + + /** + * Amount to shift the luma width right to find the chroma width. + * For YV12 this is 1 for example. + * chroma_width = AV_CEIL_RSHIFT(luma_width, log2_chroma_w) + * The note above is needed to ensure rounding up. + * This value only refers to the chroma components. + */ + uint8_t log2_chroma_w; + + /** + * Amount to shift the luma height right to find the chroma height. + * For YV12 this is 1 for example. + * chroma_height= AV_CEIL_RSHIFT(luma_height, log2_chroma_h) + * The note above is needed to ensure rounding up. + * This value only refers to the chroma components. + */ + uint8_t log2_chroma_h; + + /** + * Combination of AV_PIX_FMT_FLAG_... flags. + */ + uint64_t flags; + + /** + * Parameters that describe how pixels are packed. + * If the format has 1 or 2 components, then luma is 0. + * If the format has 3 or 4 components: + * if the RGB flag is set then 0 is red, 1 is green and 2 is blue; + * otherwise 0 is luma, 1 is chroma-U and 2 is chroma-V. + * + * If present, the Alpha channel is always the last component. + */ + AVComponentDescriptor comp[4]; + + /** + * Alternative comma-separated names. + */ + const char *alias; +} AVPixFmtDescriptor; + +/** + * Pixel format is big-endian. + */ +#define AV_PIX_FMT_FLAG_BE (1 << 0) +/** + * Pixel format has a palette in data[1], values are indexes in this palette. + */ +#define AV_PIX_FMT_FLAG_PAL (1 << 1) +/** + * All values of a component are bit-wise packed end to end. + */ +#define AV_PIX_FMT_FLAG_BITSTREAM (1 << 2) +/** + * Pixel format is an HW accelerated format. + */ +#define AV_PIX_FMT_FLAG_HWACCEL (1 << 3) +/** + * At least one pixel component is not in the first data plane. + */ +#define AV_PIX_FMT_FLAG_PLANAR (1 << 4) +/** + * The pixel format contains RGB-like data (as opposed to YUV/grayscale). + */ +#define AV_PIX_FMT_FLAG_RGB (1 << 5) + +/** + * The pixel format has an alpha channel. This is set on all formats that + * support alpha in some way, including AV_PIX_FMT_PAL8. The alpha is always + * straight, never pre-multiplied. + * + * If a codec or a filter does not support alpha, it should set all alpha to + * opaque, or use the equivalent pixel formats without alpha component, e.g. + * AV_PIX_FMT_RGB0 (or AV_PIX_FMT_RGB24 etc.) instead of AV_PIX_FMT_RGBA. + */ +#define AV_PIX_FMT_FLAG_ALPHA (1 << 7) + +/** + * The pixel format is following a Bayer pattern + */ +#define AV_PIX_FMT_FLAG_BAYER (1 << 8) + +/** + * The pixel format contains IEEE-754 floating point values. Precision (double, + * single, or half) should be determined by the pixel size (64, 32, or 16 bits). + */ +#define AV_PIX_FMT_FLAG_FLOAT (1 << 9) + +/** + * Return the number of bits per pixel used by the pixel format + * described by pixdesc. Note that this is not the same as the number + * of bits per sample. + * + * The returned number of bits refers to the number of bits actually + * used for storing the pixel information, that is padding bits are + * not counted. + */ +int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc); + +/** + * Return the number of bits per pixel for the pixel format + * described by pixdesc, including any padding or unused bits. + */ +int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc); + +/** + * @return a pixel format descriptor for provided pixel format or NULL if + * this pixel format is unknown. + */ +const AVPixFmtDescriptor *av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt); + +/** + * Iterate over all pixel format descriptors known to libavutil. + * + * @param prev previous descriptor. NULL to get the first descriptor. + * + * @return next descriptor or NULL after the last descriptor + */ +const AVPixFmtDescriptor *av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev); + +/** + * @return an AVPixelFormat id described by desc, or AV_PIX_FMT_NONE if desc + * is not a valid pointer to a pixel format descriptor. + */ +enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc); + +/** + * Utility function to access log2_chroma_w log2_chroma_h from + * the pixel format AVPixFmtDescriptor. + * + * @param[in] pix_fmt the pixel format + * @param[out] h_shift store log2_chroma_w (horizontal/width shift) + * @param[out] v_shift store log2_chroma_h (vertical/height shift) + * + * @return 0 on success, AVERROR(ENOSYS) on invalid or unknown pixel format + */ +int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, + int *h_shift, int *v_shift); + +/** + * @return number of planes in pix_fmt, a negative AVERROR if pix_fmt is not a + * valid pixel format. + */ +int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt); + +/** + * @return the name for provided color range or NULL if unknown. + */ +const char *av_color_range_name(enum AVColorRange range); + +/** + * @return the AVColorRange value for name or an AVError if not found. + */ +int av_color_range_from_name(const char *name); + +/** + * @return the name for provided color primaries or NULL if unknown. + */ +const char *av_color_primaries_name(enum AVColorPrimaries primaries); + +/** + * @return the AVColorPrimaries value for name or an AVError if not found. + */ +int av_color_primaries_from_name(const char *name); + +/** + * @return the name for provided color transfer or NULL if unknown. + */ +const char *av_color_transfer_name(enum AVColorTransferCharacteristic transfer); + +/** + * @return the AVColorTransferCharacteristic value for name or an AVError if not found. + */ +int av_color_transfer_from_name(const char *name); + +/** + * @return the name for provided color space or NULL if unknown. + */ +const char *av_color_space_name(enum AVColorSpace space); + +/** + * @return the AVColorSpace value for name or an AVError if not found. + */ +int av_color_space_from_name(const char *name); + +/** + * @return the name for provided chroma location or NULL if unknown. + */ +const char *av_chroma_location_name(enum AVChromaLocation location); + +/** + * @return the AVChromaLocation value for name or an AVError if not found. + */ +int av_chroma_location_from_name(const char *name); + +/** + * Return the pixel format corresponding to name. + * + * If there is no pixel format with name name, then looks for a + * pixel format with the name corresponding to the native endian + * format of name. + * For example in a little-endian system, first looks for "gray16", + * then for "gray16le". + * + * Finally if no pixel format has been found, returns AV_PIX_FMT_NONE. + */ +enum AVPixelFormat av_get_pix_fmt(const char *name); + +/** + * Return the short name for a pixel format, NULL in case pix_fmt is + * unknown. + * + * @see av_get_pix_fmt(), av_get_pix_fmt_string() + */ +const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt); + +/** + * Print in buf the string corresponding to the pixel format with + * number pix_fmt, or a header if pix_fmt is negative. + * + * @param buf the buffer where to write the string + * @param buf_size the size of buf + * @param pix_fmt the number of the pixel format to print the + * corresponding info string, or a negative value to print the + * corresponding header. + */ +char *av_get_pix_fmt_string(char *buf, int buf_size, + enum AVPixelFormat pix_fmt); + +/** + * Read a line from an image, and write the values of the + * pixel format component c to dst. + * + * @param data the array containing the pointers to the planes of the image + * @param linesize the array containing the linesizes of the image + * @param desc the pixel format descriptor for the image + * @param x the horizontal coordinate of the first pixel to read + * @param y the vertical coordinate of the first pixel to read + * @param w the width of the line to read, that is the number of + * values to write to dst + * @param read_pal_component if not zero and the format is a paletted + * format writes the values corresponding to the palette + * component c in data[1] to dst, rather than the palette indexes in + * data[0]. The behavior is undefined if the format is not paletted. + * @param dst_element_size size of elements in dst array (2 or 4 byte) + */ +void av_read_image_line2(void *dst, const uint8_t *data[4], + const int linesize[4], const AVPixFmtDescriptor *desc, + int x, int y, int c, int w, int read_pal_component, + int dst_element_size); + +void av_read_image_line(uint16_t *dst, const uint8_t *data[4], + const int linesize[4], const AVPixFmtDescriptor *desc, + int x, int y, int c, int w, int read_pal_component); + +/** + * Write the values from src to the pixel format component c of an + * image line. + * + * @param src array containing the values to write + * @param data the array containing the pointers to the planes of the + * image to write into. It is supposed to be zeroed. + * @param linesize the array containing the linesizes of the image + * @param desc the pixel format descriptor for the image + * @param x the horizontal coordinate of the first pixel to write + * @param y the vertical coordinate of the first pixel to write + * @param w the width of the line to write, that is the number of + * values to write to the image line + * @param src_element_size size of elements in src array (2 or 4 byte) + */ +void av_write_image_line2(const void *src, uint8_t *data[4], + const int linesize[4], const AVPixFmtDescriptor *desc, + int x, int y, int c, int w, int src_element_size); + +void av_write_image_line(const uint16_t *src, uint8_t *data[4], + const int linesize[4], const AVPixFmtDescriptor *desc, + int x, int y, int c, int w); + +/** + * Utility function to swap the endianness of a pixel format. + * + * @param[in] pix_fmt the pixel format + * + * @return pixel format with swapped endianness if it exists, + * otherwise AV_PIX_FMT_NONE + */ +enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt); + +#define FF_LOSS_RESOLUTION 0x0001 /**< loss due to resolution change */ +#define FF_LOSS_DEPTH 0x0002 /**< loss due to color depth change */ +#define FF_LOSS_COLORSPACE 0x0004 /**< loss due to color space conversion */ +#define FF_LOSS_ALPHA 0x0008 /**< loss of alpha bits */ +#define FF_LOSS_COLORQUANT 0x0010 /**< loss due to color quantization */ +#define FF_LOSS_CHROMA 0x0020 /**< loss of chroma (e.g. RGB to gray conversion) */ + +/** + * Compute what kind of losses will occur when converting from one specific + * pixel format to another. + * When converting from one pixel format to another, information loss may occur. + * For example, when converting from RGB24 to GRAY, the color information will + * be lost. Similarly, other losses occur when converting from some formats to + * other formats. These losses can involve loss of chroma, but also loss of + * resolution, loss of color depth, loss due to the color space conversion, loss + * of the alpha bits or loss due to color quantization. + * av_get_fix_fmt_loss() informs you about the various types of losses + * which will occur when converting from one pixel format to another. + * + * @param[in] dst_pix_fmt destination pixel format + * @param[in] src_pix_fmt source pixel format + * @param[in] has_alpha Whether the source pixel format alpha channel is used. + * @return Combination of flags informing you what kind of losses will occur + * (maximum loss for an invalid dst_pix_fmt). + */ +int av_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, + enum AVPixelFormat src_pix_fmt, + int has_alpha); + +/** + * Compute what kind of losses will occur when converting from one specific + * pixel format to another. + * When converting from one pixel format to another, information loss may occur. + * For example, when converting from RGB24 to GRAY, the color information will + * be lost. Similarly, other losses occur when converting from some formats to + * other formats. These losses can involve loss of chroma, but also loss of + * resolution, loss of color depth, loss due to the color space conversion, loss + * of the alpha bits or loss due to color quantization. + * av_get_fix_fmt_loss() informs you about the various types of losses + * which will occur when converting from one pixel format to another. + * + * @param[in] dst_pix_fmt destination pixel format + * @param[in] src_pix_fmt source pixel format + * @param[in] has_alpha Whether the source pixel format alpha channel is used. + * @return Combination of flags informing you what kind of losses will occur + * (maximum loss for an invalid dst_pix_fmt). + */ +enum AVPixelFormat av_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, + enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr); + +#endif /* AVUTIL_PIXDESC_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/pixelutils.h b/third_party/ffmpeg/uos/amd64/include/libavutil/pixelutils.h new file mode 100644 index 00000000..7a997cde --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/pixelutils.h @@ -0,0 +1,51 @@ +/* + * 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 AVUTIL_PIXELUTILS_H +#define AVUTIL_PIXELUTILS_H + +#include +#include + +/** + * Sum of abs(src1[x] - src2[x]) + */ +typedef int (*av_pixelutils_sad_fn)(const uint8_t *src1, ptrdiff_t stride1, + const uint8_t *src2, ptrdiff_t stride2); + +/** + * Get a potentially optimized pointer to a Sum-of-absolute-differences + * function (see the av_pixelutils_sad_fn prototype). + * + * @param w_bits 1< + * + * 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 AVUTIL_PIXFMT_H +#define AVUTIL_PIXFMT_H + +/** + * @file + * pixel format definitions + */ + +#include "libavutil/avconfig.h" +#include "version.h" + +#define AVPALETTE_SIZE 1024 +#define AVPALETTE_COUNT 256 + +/** + * Pixel format. + * + * @note + * AV_PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA + * color is put together as: + * (A << 24) | (R << 16) | (G << 8) | B + * This is stored as BGRA on little-endian CPU architectures and ARGB on + * big-endian CPUs. + * + * @note + * If the resolution is not a multiple of the chroma subsampling factor + * then the chroma plane resolution must be rounded up. + * + * @par + * When the pixel format is palettized RGB32 (AV_PIX_FMT_PAL8), the palettized + * image data is stored in AVFrame.data[0]. The palette is transported in + * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is + * formatted the same as in AV_PIX_FMT_RGB32 described above (i.e., it is + * also endian-specific). Note also that the individual RGB32 palette + * components stored in AVFrame.data[1] should be in the range 0..255. + * This is important as many custom PAL8 video codecs that were designed + * to run on the IBM VGA graphics adapter use 6-bit palette components. + * + * @par + * For all the 8 bits per pixel formats, an RGB32 palette is in data[1] like + * for pal8. This palette is filled in automatically by the function + * allocating the picture. + */ +enum AVPixelFormat { + AV_PIX_FMT_NONE = -1, + AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) + AV_PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr + AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... + AV_PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... + AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) + AV_PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) + AV_PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) + AV_PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) + AV_PIX_FMT_GRAY8, ///< Y , 8bpp + AV_PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb + AV_PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb + AV_PIX_FMT_PAL8, ///< 8 bits with AV_PIX_FMT_RGB32 palette + AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting color_range + AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting color_range + AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting color_range + AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 + AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 + AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) + AV_PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits + AV_PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) + AV_PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) + AV_PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits + AV_PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) + AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) + AV_PIX_FMT_NV21, ///< as above, but U and V bytes are swapped + + AV_PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... + AV_PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... + AV_PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... + AV_PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... + + AV_PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian + AV_PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian + AV_PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) + AV_PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range + AV_PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) + AV_PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian + AV_PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian + + AV_PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian + AV_PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian + AV_PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined + AV_PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, X=unused/undefined + + AV_PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian + AV_PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian + AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined + AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined + + /** + * Hardware acceleration through VA-API, data[3] contains a + * VASurfaceID. + */ + AV_PIX_FMT_VAAPI, + + AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + AV_PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + AV_PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + AV_PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + AV_PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer + + AV_PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), little-endian, X=unused/undefined + AV_PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), big-endian, X=unused/undefined + AV_PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), little-endian, X=unused/undefined + AV_PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), big-endian, X=unused/undefined + AV_PIX_FMT_YA8, ///< 8 bits gray, 8 bits alpha + + AV_PIX_FMT_Y400A = AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 + AV_PIX_FMT_GRAY8A= AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 + + AV_PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian + AV_PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian + + /** + * The following 12 formats have the disadvantage of needing 1 format for each bit depth. + * Notice that each 9/10 bits sample is stored in 16 bits with extra padding. + * If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately is better. + */ + AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + AV_PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + AV_PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + AV_PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + AV_PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + AV_PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + AV_PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + AV_PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + AV_PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp + AV_PIX_FMT_GBR24P = AV_PIX_FMT_GBRP, // alias for #AV_PIX_FMT_GBRP + AV_PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big-endian + AV_PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little-endian + AV_PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big-endian + AV_PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little-endian + AV_PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big-endian + AV_PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little-endian + AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) + AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) + AV_PIX_FMT_YUVA420P9BE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian + AV_PIX_FMT_YUVA420P9LE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian + AV_PIX_FMT_YUVA422P9BE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian + AV_PIX_FMT_YUVA422P9LE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian + AV_PIX_FMT_YUVA444P9BE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian + AV_PIX_FMT_YUVA444P9LE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian + AV_PIX_FMT_YUVA420P10BE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) + AV_PIX_FMT_YUVA420P10LE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) + AV_PIX_FMT_YUVA422P10BE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) + AV_PIX_FMT_YUVA422P10LE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) + AV_PIX_FMT_YUVA444P10BE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) + AV_PIX_FMT_YUVA444P10LE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) + AV_PIX_FMT_YUVA420P16BE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) + AV_PIX_FMT_YUVA420P16LE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) + AV_PIX_FMT_YUVA422P16BE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) + AV_PIX_FMT_YUVA422P16LE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) + AV_PIX_FMT_YUVA444P16BE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) + AV_PIX_FMT_YUVA444P16LE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) + + AV_PIX_FMT_VDPAU, ///< HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface + + AV_PIX_FMT_XYZ12LE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0 + AV_PIX_FMT_XYZ12BE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0 + AV_PIX_FMT_NV16, ///< interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) + AV_PIX_FMT_NV20LE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_NV20BE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + + AV_PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian + AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian + AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian + AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian + + AV_PIX_FMT_YVYU422, ///< packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb + + AV_PIX_FMT_YA16BE, ///< 16 bits gray, 16 bits alpha (big-endian) + AV_PIX_FMT_YA16LE, ///< 16 bits gray, 16 bits alpha (little-endian) + + AV_PIX_FMT_GBRAP, ///< planar GBRA 4:4:4:4 32bpp + AV_PIX_FMT_GBRAP16BE, ///< planar GBRA 4:4:4:4 64bpp, big-endian + AV_PIX_FMT_GBRAP16LE, ///< planar GBRA 4:4:4:4 64bpp, little-endian + /** + * HW acceleration through QSV, data[3] contains a pointer to the + * mfxFrameSurface1 structure. + */ + AV_PIX_FMT_QSV, + /** + * HW acceleration though MMAL, data[3] contains a pointer to the + * MMAL_BUFFER_HEADER_T structure. + */ + AV_PIX_FMT_MMAL, + + AV_PIX_FMT_D3D11VA_VLD, ///< HW decoding through Direct3D11 via old API, Picture.data[3] contains a ID3D11VideoDecoderOutputView pointer + + /** + * HW acceleration through CUDA. data[i] contain CUdeviceptr pointers + * exactly as for system memory frames. + */ + AV_PIX_FMT_CUDA, + + AV_PIX_FMT_0RGB, ///< packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined + AV_PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined + AV_PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined + AV_PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined + + AV_PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + AV_PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + AV_PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + AV_PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + AV_PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + AV_PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + AV_PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + AV_PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big-endian + AV_PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little-endian + AV_PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big-endian + AV_PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little-endian + AV_PIX_FMT_YUVJ411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV411P and setting color_range + + AV_PIX_FMT_BAYER_BGGR8, ///< bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples + AV_PIX_FMT_BAYER_RGGB8, ///< bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples + AV_PIX_FMT_BAYER_GBRG8, ///< bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples + AV_PIX_FMT_BAYER_GRBG8, ///< bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples + AV_PIX_FMT_BAYER_BGGR16LE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian + AV_PIX_FMT_BAYER_BGGR16BE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian + AV_PIX_FMT_BAYER_RGGB16LE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian + AV_PIX_FMT_BAYER_RGGB16BE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian + AV_PIX_FMT_BAYER_GBRG16LE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian + AV_PIX_FMT_BAYER_GBRG16BE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian + AV_PIX_FMT_BAYER_GRBG16LE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian + AV_PIX_FMT_BAYER_GRBG16BE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian + +#if FF_API_XVMC + AV_PIX_FMT_XVMC,///< XVideo Motion Acceleration via common packet passing +#endif + + AV_PIX_FMT_YUV440P10LE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian + AV_PIX_FMT_YUV440P10BE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian + AV_PIX_FMT_YUV440P12LE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian + AV_PIX_FMT_YUV440P12BE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian + AV_PIX_FMT_AYUV64LE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), little-endian + AV_PIX_FMT_AYUV64BE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), big-endian + + AV_PIX_FMT_VIDEOTOOLBOX, ///< hardware decoding through Videotoolbox + + AV_PIX_FMT_P010LE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, little-endian + AV_PIX_FMT_P010BE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, big-endian + + AV_PIX_FMT_GBRAP12BE, ///< planar GBR 4:4:4:4 48bpp, big-endian + AV_PIX_FMT_GBRAP12LE, ///< planar GBR 4:4:4:4 48bpp, little-endian + + AV_PIX_FMT_GBRAP10BE, ///< planar GBR 4:4:4:4 40bpp, big-endian + AV_PIX_FMT_GBRAP10LE, ///< planar GBR 4:4:4:4 40bpp, little-endian + + AV_PIX_FMT_MEDIACODEC, ///< hardware decoding through MediaCodec + + AV_PIX_FMT_GRAY12BE, ///< Y , 12bpp, big-endian + AV_PIX_FMT_GRAY12LE, ///< Y , 12bpp, little-endian + AV_PIX_FMT_GRAY10BE, ///< Y , 10bpp, big-endian + AV_PIX_FMT_GRAY10LE, ///< Y , 10bpp, little-endian + + AV_PIX_FMT_P016LE, ///< like NV12, with 16bpp per component, little-endian + AV_PIX_FMT_P016BE, ///< like NV12, with 16bpp per component, big-endian + + /** + * Hardware surfaces for Direct3D11. + * + * This is preferred over the legacy AV_PIX_FMT_D3D11VA_VLD. The new D3D11 + * hwaccel API and filtering support AV_PIX_FMT_D3D11 only. + * + * data[0] contains a ID3D11Texture2D pointer, and data[1] contains the + * texture array index of the frame as intptr_t if the ID3D11Texture2D is + * an array texture (or always 0 if it's a normal texture). + */ + AV_PIX_FMT_D3D11, + + AV_PIX_FMT_GRAY9BE, ///< Y , 9bpp, big-endian + AV_PIX_FMT_GRAY9LE, ///< Y , 9bpp, little-endian + + AV_PIX_FMT_GBRPF32BE, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, big-endian + AV_PIX_FMT_GBRPF32LE, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, little-endian + AV_PIX_FMT_GBRAPF32BE, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, big-endian + AV_PIX_FMT_GBRAPF32LE, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, little-endian + + /** + * DRM-managed buffers exposed through PRIME buffer sharing. + * + * data[0] points to an AVDRMFrameDescriptor. + */ + AV_PIX_FMT_DRM_PRIME, + /** + * Hardware surfaces for OpenCL. + * + * data[i] contain 2D image objects (typed in C as cl_mem, used + * in OpenCL as image2d_t) for each plane of the surface. + */ + AV_PIX_FMT_OPENCL, + + AV_PIX_FMT_GRAY14BE, ///< Y , 14bpp, big-endian + AV_PIX_FMT_GRAY14LE, ///< Y , 14bpp, little-endian + + AV_PIX_FMT_GRAYF32BE, ///< IEEE-754 single precision Y, 32bpp, big-endian + AV_PIX_FMT_GRAYF32LE, ///< IEEE-754 single precision Y, 32bpp, little-endian + + AV_PIX_FMT_YUVA422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), 12b alpha, big-endian + AV_PIX_FMT_YUVA422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), 12b alpha, little-endian + AV_PIX_FMT_YUVA444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, big-endian + AV_PIX_FMT_YUVA444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, little-endian + + AV_PIX_FMT_NV24, ///< planar YUV 4:4:4, 24bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) + AV_PIX_FMT_NV42, ///< as above, but U and V bytes are swapped + + /** + * Vulkan hardware images. + * + * data[0] points to an AVVkFrame + */ + AV_PIX_FMT_VULKAN, + + AV_PIX_FMT_Y210BE, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, big-endian + AV_PIX_FMT_Y210LE, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, little-endian + + AV_PIX_FMT_X2RGB10LE, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), little-endian, X=unused/undefined + AV_PIX_FMT_X2RGB10BE, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), big-endian, X=unused/undefined + AV_PIX_FMT_X2BGR10LE, ///< packed BGR 10:10:10, 30bpp, (msb)2X 10B 10G 10R(lsb), little-endian, X=unused/undefined + AV_PIX_FMT_X2BGR10BE, ///< packed BGR 10:10:10, 30bpp, (msb)2X 10B 10G 10R(lsb), big-endian, X=unused/undefined + + AV_PIX_FMT_P210BE, ///< interleaved chroma YUV 4:2:2, 20bpp, data in the high bits, big-endian + AV_PIX_FMT_P210LE, ///< interleaved chroma YUV 4:2:2, 20bpp, data in the high bits, little-endian + + AV_PIX_FMT_P410BE, ///< interleaved chroma YUV 4:4:4, 30bpp, data in the high bits, big-endian + AV_PIX_FMT_P410LE, ///< interleaved chroma YUV 4:4:4, 30bpp, data in the high bits, little-endian + + AV_PIX_FMT_P216BE, ///< interleaved chroma YUV 4:2:2, 32bpp, big-endian + AV_PIX_FMT_P216LE, ///< interleaved chroma YUV 4:2:2, 32bpp, little-endian + + AV_PIX_FMT_P416BE, ///< interleaved chroma YUV 4:4:4, 48bpp, big-endian + AV_PIX_FMT_P416LE, ///< interleaved chroma YUV 4:4:4, 48bpp, little-endian + + AV_PIX_FMT_VUYA, ///< packed VUYA 4:4:4, 32bpp, VUYAVUYA... + + AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions +}; + +#if AV_HAVE_BIGENDIAN +# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##be +#else +# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##le +#endif + +#define AV_PIX_FMT_RGB32 AV_PIX_FMT_NE(ARGB, BGRA) +#define AV_PIX_FMT_RGB32_1 AV_PIX_FMT_NE(RGBA, ABGR) +#define AV_PIX_FMT_BGR32 AV_PIX_FMT_NE(ABGR, RGBA) +#define AV_PIX_FMT_BGR32_1 AV_PIX_FMT_NE(BGRA, ARGB) +#define AV_PIX_FMT_0RGB32 AV_PIX_FMT_NE(0RGB, BGR0) +#define AV_PIX_FMT_0BGR32 AV_PIX_FMT_NE(0BGR, RGB0) + +#define AV_PIX_FMT_GRAY9 AV_PIX_FMT_NE(GRAY9BE, GRAY9LE) +#define AV_PIX_FMT_GRAY10 AV_PIX_FMT_NE(GRAY10BE, GRAY10LE) +#define AV_PIX_FMT_GRAY12 AV_PIX_FMT_NE(GRAY12BE, GRAY12LE) +#define AV_PIX_FMT_GRAY14 AV_PIX_FMT_NE(GRAY14BE, GRAY14LE) +#define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE) +#define AV_PIX_FMT_YA16 AV_PIX_FMT_NE(YA16BE, YA16LE) +#define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE) +#define AV_PIX_FMT_RGB565 AV_PIX_FMT_NE(RGB565BE, RGB565LE) +#define AV_PIX_FMT_RGB555 AV_PIX_FMT_NE(RGB555BE, RGB555LE) +#define AV_PIX_FMT_RGB444 AV_PIX_FMT_NE(RGB444BE, RGB444LE) +#define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE) +#define AV_PIX_FMT_BGR48 AV_PIX_FMT_NE(BGR48BE, BGR48LE) +#define AV_PIX_FMT_BGR565 AV_PIX_FMT_NE(BGR565BE, BGR565LE) +#define AV_PIX_FMT_BGR555 AV_PIX_FMT_NE(BGR555BE, BGR555LE) +#define AV_PIX_FMT_BGR444 AV_PIX_FMT_NE(BGR444BE, BGR444LE) +#define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE) + +#define AV_PIX_FMT_YUV420P9 AV_PIX_FMT_NE(YUV420P9BE , YUV420P9LE) +#define AV_PIX_FMT_YUV422P9 AV_PIX_FMT_NE(YUV422P9BE , YUV422P9LE) +#define AV_PIX_FMT_YUV444P9 AV_PIX_FMT_NE(YUV444P9BE , YUV444P9LE) +#define AV_PIX_FMT_YUV420P10 AV_PIX_FMT_NE(YUV420P10BE, YUV420P10LE) +#define AV_PIX_FMT_YUV422P10 AV_PIX_FMT_NE(YUV422P10BE, YUV422P10LE) +#define AV_PIX_FMT_YUV440P10 AV_PIX_FMT_NE(YUV440P10BE, YUV440P10LE) +#define AV_PIX_FMT_YUV444P10 AV_PIX_FMT_NE(YUV444P10BE, YUV444P10LE) +#define AV_PIX_FMT_YUV420P12 AV_PIX_FMT_NE(YUV420P12BE, YUV420P12LE) +#define AV_PIX_FMT_YUV422P12 AV_PIX_FMT_NE(YUV422P12BE, YUV422P12LE) +#define AV_PIX_FMT_YUV440P12 AV_PIX_FMT_NE(YUV440P12BE, YUV440P12LE) +#define AV_PIX_FMT_YUV444P12 AV_PIX_FMT_NE(YUV444P12BE, YUV444P12LE) +#define AV_PIX_FMT_YUV420P14 AV_PIX_FMT_NE(YUV420P14BE, YUV420P14LE) +#define AV_PIX_FMT_YUV422P14 AV_PIX_FMT_NE(YUV422P14BE, YUV422P14LE) +#define AV_PIX_FMT_YUV444P14 AV_PIX_FMT_NE(YUV444P14BE, YUV444P14LE) +#define AV_PIX_FMT_YUV420P16 AV_PIX_FMT_NE(YUV420P16BE, YUV420P16LE) +#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) +#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) + +#define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE) +#define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE) +#define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE) +#define AV_PIX_FMT_GBRP14 AV_PIX_FMT_NE(GBRP14BE, GBRP14LE) +#define AV_PIX_FMT_GBRP16 AV_PIX_FMT_NE(GBRP16BE, GBRP16LE) +#define AV_PIX_FMT_GBRAP10 AV_PIX_FMT_NE(GBRAP10BE, GBRAP10LE) +#define AV_PIX_FMT_GBRAP12 AV_PIX_FMT_NE(GBRAP12BE, GBRAP12LE) +#define AV_PIX_FMT_GBRAP16 AV_PIX_FMT_NE(GBRAP16BE, GBRAP16LE) + +#define AV_PIX_FMT_BAYER_BGGR16 AV_PIX_FMT_NE(BAYER_BGGR16BE, BAYER_BGGR16LE) +#define AV_PIX_FMT_BAYER_RGGB16 AV_PIX_FMT_NE(BAYER_RGGB16BE, BAYER_RGGB16LE) +#define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE, BAYER_GBRG16LE) +#define AV_PIX_FMT_BAYER_GRBG16 AV_PIX_FMT_NE(BAYER_GRBG16BE, BAYER_GRBG16LE) + +#define AV_PIX_FMT_GBRPF32 AV_PIX_FMT_NE(GBRPF32BE, GBRPF32LE) +#define AV_PIX_FMT_GBRAPF32 AV_PIX_FMT_NE(GBRAPF32BE, GBRAPF32LE) + +#define AV_PIX_FMT_GRAYF32 AV_PIX_FMT_NE(GRAYF32BE, GRAYF32LE) + +#define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE) +#define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE) +#define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE) +#define AV_PIX_FMT_YUVA420P10 AV_PIX_FMT_NE(YUVA420P10BE, YUVA420P10LE) +#define AV_PIX_FMT_YUVA422P10 AV_PIX_FMT_NE(YUVA422P10BE, YUVA422P10LE) +#define AV_PIX_FMT_YUVA444P10 AV_PIX_FMT_NE(YUVA444P10BE, YUVA444P10LE) +#define AV_PIX_FMT_YUVA422P12 AV_PIX_FMT_NE(YUVA422P12BE, YUVA422P12LE) +#define AV_PIX_FMT_YUVA444P12 AV_PIX_FMT_NE(YUVA444P12BE, YUVA444P12LE) +#define AV_PIX_FMT_YUVA420P16 AV_PIX_FMT_NE(YUVA420P16BE, YUVA420P16LE) +#define AV_PIX_FMT_YUVA422P16 AV_PIX_FMT_NE(YUVA422P16BE, YUVA422P16LE) +#define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE) + +#define AV_PIX_FMT_XYZ12 AV_PIX_FMT_NE(XYZ12BE, XYZ12LE) +#define AV_PIX_FMT_NV20 AV_PIX_FMT_NE(NV20BE, NV20LE) +#define AV_PIX_FMT_AYUV64 AV_PIX_FMT_NE(AYUV64BE, AYUV64LE) +#define AV_PIX_FMT_P010 AV_PIX_FMT_NE(P010BE, P010LE) +#define AV_PIX_FMT_P016 AV_PIX_FMT_NE(P016BE, P016LE) + +#define AV_PIX_FMT_Y210 AV_PIX_FMT_NE(Y210BE, Y210LE) +#define AV_PIX_FMT_X2RGB10 AV_PIX_FMT_NE(X2RGB10BE, X2RGB10LE) +#define AV_PIX_FMT_X2BGR10 AV_PIX_FMT_NE(X2BGR10BE, X2BGR10LE) + +#define AV_PIX_FMT_P210 AV_PIX_FMT_NE(P210BE, P210LE) +#define AV_PIX_FMT_P410 AV_PIX_FMT_NE(P410BE, P410LE) +#define AV_PIX_FMT_P216 AV_PIX_FMT_NE(P216BE, P216LE) +#define AV_PIX_FMT_P416 AV_PIX_FMT_NE(P416BE, P416LE) + +/** + * Chromaticity coordinates of the source primaries. + * These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.1 and ITU-T H.273. + */ +enum AVColorPrimaries { + AVCOL_PRI_RESERVED0 = 0, + AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP 177 Annex B + AVCOL_PRI_UNSPECIFIED = 2, + AVCOL_PRI_RESERVED = 3, + AVCOL_PRI_BT470M = 4, ///< also FCC Title 47 Code of Federal Regulations 73.682 (a)(20) + + AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM + AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC + AVCOL_PRI_SMPTE240M = 7, ///< identical to above, also called "SMPTE C" even though it uses D65 + AVCOL_PRI_FILM = 8, ///< colour filters using Illuminant C + AVCOL_PRI_BT2020 = 9, ///< ITU-R BT2020 + AVCOL_PRI_SMPTE428 = 10, ///< SMPTE ST 428-1 (CIE 1931 XYZ) + AVCOL_PRI_SMPTEST428_1 = AVCOL_PRI_SMPTE428, + AVCOL_PRI_SMPTE431 = 11, ///< SMPTE ST 431-2 (2011) / DCI P3 + AVCOL_PRI_SMPTE432 = 12, ///< SMPTE ST 432-1 (2010) / P3 D65 / Display P3 + AVCOL_PRI_EBU3213 = 22, ///< EBU Tech. 3213-E (nothing there) / one of JEDEC P22 group phosphors + AVCOL_PRI_JEDEC_P22 = AVCOL_PRI_EBU3213, + AVCOL_PRI_NB ///< Not part of ABI +}; + +/** + * Color Transfer Characteristic. + * These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.2. + */ +enum AVColorTransferCharacteristic { + AVCOL_TRC_RESERVED0 = 0, + AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 + AVCOL_TRC_UNSPECIFIED = 2, + AVCOL_TRC_RESERVED = 3, + AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM + AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG + AVCOL_TRC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC + AVCOL_TRC_SMPTE240M = 7, + AVCOL_TRC_LINEAR = 8, ///< "Linear transfer characteristics" + AVCOL_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)" + AVCOL_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)" + AVCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4 + AVCOL_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut + AVCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC) + AVCOL_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10-bit system + AVCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12-bit system + AVCOL_TRC_SMPTE2084 = 16, ///< SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems + AVCOL_TRC_SMPTEST2084 = AVCOL_TRC_SMPTE2084, + AVCOL_TRC_SMPTE428 = 17, ///< SMPTE ST 428-1 + AVCOL_TRC_SMPTEST428_1 = AVCOL_TRC_SMPTE428, + AVCOL_TRC_ARIB_STD_B67 = 18, ///< ARIB STD-B67, known as "Hybrid log-gamma" + AVCOL_TRC_NB ///< Not part of ABI +}; + +/** + * YUV colorspace type. + * These values match the ones defined by ISO/IEC 23091-2_2019 subclause 8.3. + */ +enum AVColorSpace { + AVCOL_SPC_RGB = 0, ///< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB), YZX and ST 428-1 + AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / derived in SMPTE RP 177 Annex B + AVCOL_SPC_UNSPECIFIED = 2, + AVCOL_SPC_RESERVED = 3, ///< reserved for future use by ITU-T and ISO/IEC just like 15-255 are + AVCOL_SPC_FCC = 4, ///< FCC Title 47 Code of Federal Regulations 73.682 (a)(20) + AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 + AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above + AVCOL_SPC_SMPTE240M = 7, ///< derived from 170M primaries and D65 white point, 170M is derived from BT470 System M's primaries + AVCOL_SPC_YCGCO = 8, ///< used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 + AVCOL_SPC_YCOCG = AVCOL_SPC_YCGCO, + AVCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system + AVCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system + AVCOL_SPC_SMPTE2085 = 11, ///< SMPTE 2085, Y'D'zD'x + AVCOL_SPC_CHROMA_DERIVED_NCL = 12, ///< Chromaticity-derived non-constant luminance system + AVCOL_SPC_CHROMA_DERIVED_CL = 13, ///< Chromaticity-derived constant luminance system + AVCOL_SPC_ICTCP = 14, ///< ITU-R BT.2100-0, ICtCp + AVCOL_SPC_NB ///< Not part of ABI +}; + +/** + * Visual content value range. + * + * These values are based on definitions that can be found in multiple + * specifications, such as ITU-T BT.709 (3.4 - Quantization of RGB, luminance + * and colour-difference signals), ITU-T BT.2020 (Table 5 - Digital + * Representation) as well as ITU-T BT.2100 (Table 9 - Digital 10- and 12-bit + * integer representation). At the time of writing, the BT.2100 one is + * recommended, as it also defines the full range representation. + * + * Common definitions: + * - For RGB and luma planes such as Y in YCbCr and I in ICtCp, + * 'E' is the original value in range of 0.0 to 1.0. + * - For chroma planes such as Cb,Cr and Ct,Cp, 'E' is the original + * value in range of -0.5 to 0.5. + * - 'n' is the output bit depth. + * - For additional definitions such as rounding and clipping to valid n + * bit unsigned integer range, please refer to BT.2100 (Table 9). + */ +enum AVColorRange { + AVCOL_RANGE_UNSPECIFIED = 0, + + /** + * Narrow or limited range content. + * + * - For luma planes: + * + * (219 * E + 16) * 2^(n-8) + * + * F.ex. the range of 16-235 for 8 bits + * + * - For chroma planes: + * + * (224 * E + 128) * 2^(n-8) + * + * F.ex. the range of 16-240 for 8 bits + */ + AVCOL_RANGE_MPEG = 1, + + /** + * Full range content. + * + * - For RGB and luma planes: + * + * (2^n - 1) * E + * + * F.ex. the range of 0-255 for 8 bits + * + * - For chroma planes: + * + * (2^n - 1) * E + 2^(n - 1) + * + * F.ex. the range of 1-255 for 8 bits + */ + AVCOL_RANGE_JPEG = 2, + AVCOL_RANGE_NB ///< Not part of ABI +}; + +/** + * Location of chroma samples. + * + * Illustration showing the location of the first (top left) chroma sample of the + * image, the left shows only luma, the right + * shows the location of the chroma sample, the 2 could be imagined to overlay + * each other but are drawn separately due to limitations of ASCII + * + * 1st 2nd 1st 2nd horizontal luma sample positions + * v v v v + * ______ ______ + *1st luma line > |X X ... |3 4 X ... X are luma samples, + * | |1 2 1-6 are possible chroma positions + *2nd luma line > |X X ... |5 6 X ... 0 is undefined/unknown position + */ +enum AVChromaLocation { + AVCHROMA_LOC_UNSPECIFIED = 0, + AVCHROMA_LOC_LEFT = 1, ///< MPEG-2/4 4:2:0, H.264 default for 4:2:0 + AVCHROMA_LOC_CENTER = 2, ///< MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0 + AVCHROMA_LOC_TOPLEFT = 3, ///< ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2 + AVCHROMA_LOC_TOP = 4, + AVCHROMA_LOC_BOTTOMLEFT = 5, + AVCHROMA_LOC_BOTTOM = 6, + AVCHROMA_LOC_NB ///< Not part of ABI +}; + +#endif /* AVUTIL_PIXFMT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/random_seed.h b/third_party/ffmpeg/uos/amd64/include/libavutil/random_seed.h new file mode 100644 index 00000000..0462a048 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/random_seed.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2009 Baptiste Coudurier + * + * 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 AVUTIL_RANDOM_SEED_H +#define AVUTIL_RANDOM_SEED_H + +#include +/** + * @addtogroup lavu_crypto + * @{ + */ + +/** + * Get a seed to use in conjunction with random functions. + * This function tries to provide a good seed at a best effort bases. + * Its possible to call this function multiple times if more bits are needed. + * It can be quite slow, which is why it should only be used as seed for a faster + * PRNG. The quality of the seed depends on the platform. + */ +uint32_t av_get_random_seed(void); + +/** + * @} + */ + +#endif /* AVUTIL_RANDOM_SEED_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/rational.h b/third_party/ffmpeg/uos/amd64/include/libavutil/rational.h new file mode 100644 index 00000000..cbb08a0b --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/rational.h @@ -0,0 +1,220 @@ +/* + * rational numbers + * Copyright (c) 2003 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * @ingroup lavu_math_rational + * Utilties for rational number calculation. + * @author Michael Niedermayer + */ + +#ifndef AVUTIL_RATIONAL_H +#define AVUTIL_RATIONAL_H + +#include +#include +#include "attributes.h" + +/** + * @defgroup lavu_math_rational AVRational + * @ingroup lavu_math + * Rational number calculation. + * + * While rational numbers can be expressed as floating-point numbers, the + * conversion process is a lossy one, so are floating-point operations. On the + * other hand, the nature of FFmpeg demands highly accurate calculation of + * timestamps. This set of rational number utilities serves as a generic + * interface for manipulating rational numbers as pairs of numerators and + * denominators. + * + * Many of the functions that operate on AVRational's have the suffix `_q`, in + * reference to the mathematical symbol "â„š" (Q) which denotes the set of all + * rational numbers. + * + * @{ + */ + +/** + * Rational number (pair of numerator and denominator). + */ +typedef struct AVRational{ + int num; ///< Numerator + int den; ///< Denominator +} AVRational; + +/** + * Create an AVRational. + * + * Useful for compilers that do not support compound literals. + * + * @note The return value is not reduced. + * @see av_reduce() + */ +static inline AVRational av_make_q(int num, int den) +{ + AVRational r = { num, den }; + return r; +} + +/** + * Compare two rationals. + * + * @param a First rational + * @param b Second rational + * + * @return One of the following values: + * - 0 if `a == b` + * - 1 if `a > b` + * - -1 if `a < b` + * - `INT_MIN` if one of the values is of the form `0 / 0` + */ +static inline int av_cmp_q(AVRational a, AVRational b){ + const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den; + + if(tmp) return (int)((tmp ^ a.den ^ b.den)>>63)|1; + else if(b.den && a.den) return 0; + else if(a.num && b.num) return (a.num>>31) - (b.num>>31); + else return INT_MIN; +} + +/** + * Convert an AVRational to a `double`. + * @param a AVRational to convert + * @return `a` in floating-point form + * @see av_d2q() + */ +static inline double av_q2d(AVRational a){ + return a.num / (double) a.den; +} + +/** + * Reduce a fraction. + * + * This is useful for framerate calculations. + * + * @param[out] dst_num Destination numerator + * @param[out] dst_den Destination denominator + * @param[in] num Source numerator + * @param[in] den Source denominator + * @param[in] max Maximum allowed values for `dst_num` & `dst_den` + * @return 1 if the operation is exact, 0 otherwise + */ +int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max); + +/** + * Multiply two rationals. + * @param b First rational + * @param c Second rational + * @return b*c + */ +AVRational av_mul_q(AVRational b, AVRational c) av_const; + +/** + * Divide one rational by another. + * @param b First rational + * @param c Second rational + * @return b/c + */ +AVRational av_div_q(AVRational b, AVRational c) av_const; + +/** + * Add two rationals. + * @param b First rational + * @param c Second rational + * @return b+c + */ +AVRational av_add_q(AVRational b, AVRational c) av_const; + +/** + * Subtract one rational from another. + * @param b First rational + * @param c Second rational + * @return b-c + */ +AVRational av_sub_q(AVRational b, AVRational c) av_const; + +/** + * Invert a rational. + * @param q value + * @return 1 / q + */ +static av_always_inline AVRational av_inv_q(AVRational q) +{ + AVRational r = { q.den, q.num }; + return r; +} + +/** + * Convert a double precision floating point number to a rational. + * + * In case of infinity, the returned value is expressed as `{1, 0}` or + * `{-1, 0}` depending on the sign. + * + * @param d `double` to convert + * @param max Maximum allowed numerator and denominator + * @return `d` in AVRational form + * @see av_q2d() + */ +AVRational av_d2q(double d, int max) av_const; + +/** + * Find which of the two rationals is closer to another rational. + * + * @param q Rational to be compared against + * @param q1,q2 Rationals to be tested + * @return One of the following values: + * - 1 if `q1` is nearer to `q` than `q2` + * - -1 if `q2` is nearer to `q` than `q1` + * - 0 if they have the same distance + */ +int av_nearer_q(AVRational q, AVRational q1, AVRational q2); + +/** + * Find the value in a list of rationals nearest a given reference rational. + * + * @param q Reference rational + * @param q_list Array of rationals terminated by `{0, 0}` + * @return Index of the nearest value found in the array + */ +int av_find_nearest_q_idx(AVRational q, const AVRational* q_list); + +/** + * Convert an AVRational to a IEEE 32-bit `float` expressed in fixed-point + * format. + * + * @param q Rational to be converted + * @return Equivalent floating-point value, expressed as an unsigned 32-bit + * integer. + * @note The returned value is platform-indepedant. + */ +uint32_t av_q2intfloat(AVRational q); + +/** + * Return the best rational so that a and b are multiple of it. + * If the resulting denominator is larger than max_den, return def. + */ +AVRational av_gcd_q(AVRational a, AVRational b, int max_den, AVRational def); + +/** + * @} + */ + +#endif /* AVUTIL_RATIONAL_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/rc4.h b/third_party/ffmpeg/uos/amd64/include/libavutil/rc4.h new file mode 100644 index 00000000..029cd2ad --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/rc4.h @@ -0,0 +1,66 @@ +/* + * RC4 encryption/decryption/pseudo-random number generator + * + * 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 AVUTIL_RC4_H +#define AVUTIL_RC4_H + +#include + +/** + * @defgroup lavu_rc4 RC4 + * @ingroup lavu_crypto + * @{ + */ + +typedef struct AVRC4 { + uint8_t state[256]; + int x, y; +} AVRC4; + +/** + * Allocate an AVRC4 context. + */ +AVRC4 *av_rc4_alloc(void); + +/** + * @brief Initializes an AVRC4 context. + * + * @param key_bits must be a multiple of 8 + * @param decrypt 0 for encryption, 1 for decryption, currently has no effect + * @return zero on success, negative value otherwise + */ +int av_rc4_init(struct AVRC4 *d, const uint8_t *key, int key_bits, int decrypt); + +/** + * @brief Encrypts / decrypts using the RC4 algorithm. + * + * @param count number of bytes + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst, may be NULL + * @param iv not (yet) used for RC4, should be NULL + * @param decrypt 0 for encryption, 1 for decryption, not (yet) used + */ +void av_rc4_crypt(struct AVRC4 *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); + +/** + * @} + */ + +#endif /* AVUTIL_RC4_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/replaygain.h b/third_party/ffmpeg/uos/amd64/include/libavutil/replaygain.h new file mode 100644 index 00000000..b49bf1a3 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/replaygain.h @@ -0,0 +1,50 @@ +/* + * 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 AVUTIL_REPLAYGAIN_H +#define AVUTIL_REPLAYGAIN_H + +#include + +/** + * ReplayGain information (see + * http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification). + * The size of this struct is a part of the public ABI. + */ +typedef struct AVReplayGain { + /** + * Track replay gain in microbels (divide by 100000 to get the value in dB). + * Should be set to INT32_MIN when unknown. + */ + int32_t track_gain; + /** + * Peak track amplitude, with 100000 representing full scale (but values + * may overflow). 0 when unknown. + */ + uint32_t track_peak; + /** + * Same as track_gain, but for the whole album. + */ + int32_t album_gain; + /** + * Same as track_peak, but for the whole album, + */ + uint32_t album_peak; +} AVReplayGain; + +#endif /* AVUTIL_REPLAYGAIN_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/ripemd.h b/third_party/ffmpeg/uos/amd64/include/libavutil/ripemd.h new file mode 100644 index 00000000..9df9f905 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/ripemd.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2007 Michael Niedermayer + * Copyright (C) 2013 James Almer + * + * 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 + */ + +/** + * @file + * @ingroup lavu_ripemd + * Public header for RIPEMD hash function implementation. + */ + +#ifndef AVUTIL_RIPEMD_H +#define AVUTIL_RIPEMD_H + +#include +#include + +#include "attributes.h" + +/** + * @defgroup lavu_ripemd RIPEMD + * @ingroup lavu_hash + * RIPEMD hash function implementation. + * + * @{ + */ + +extern const int av_ripemd_size; + +struct AVRIPEMD; + +/** + * Allocate an AVRIPEMD context. + */ +struct AVRIPEMD *av_ripemd_alloc(void); + +/** + * Initialize RIPEMD hashing. + * + * @param context pointer to the function context (of size av_ripemd_size) + * @param bits number of bits in digest (128, 160, 256 or 320 bits) + * @return zero if initialization succeeded, -1 otherwise + */ +int av_ripemd_init(struct AVRIPEMD* context, int bits); + +/** + * Update hash value. + * + * @param context hash function context + * @param data input data to update hash with + * @param len input data length + */ +void av_ripemd_update(struct AVRIPEMD* context, const uint8_t* data, size_t len); + +/** + * Finish hashing and output digest value. + * + * @param context hash function context + * @param digest buffer where output digest value is stored + */ +void av_ripemd_final(struct AVRIPEMD* context, uint8_t *digest); + +/** + * @} + */ + +#endif /* AVUTIL_RIPEMD_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/samplefmt.h b/third_party/ffmpeg/uos/amd64/include/libavutil/samplefmt.h new file mode 100644 index 00000000..1999c9bc --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/samplefmt.h @@ -0,0 +1,268 @@ +/* + * 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 AVUTIL_SAMPLEFMT_H +#define AVUTIL_SAMPLEFMT_H + +#include + +/** + * @addtogroup lavu_audio + * @{ + * + * @defgroup lavu_sampfmts Audio sample formats + * + * Audio sample format enumeration and related convenience functions. + * @{ + */ + +/** + * Audio sample formats + * + * - The data described by the sample format is always in native-endian order. + * Sample values can be expressed by native C types, hence the lack of a signed + * 24-bit sample format even though it is a common raw audio data format. + * + * - The floating-point formats are based on full volume being in the range + * [-1.0, 1.0]. Any values outside this range are beyond full volume level. + * + * - The data layout as used in av_samples_fill_arrays() and elsewhere in FFmpeg + * (such as AVFrame in libavcodec) is as follows: + * + * @par + * For planar sample formats, each audio channel is in a separate data plane, + * and linesize is the buffer size, in bytes, for a single plane. All data + * planes must be the same size. For packed sample formats, only the first data + * plane is used, and samples for each channel are interleaved. In this case, + * linesize is the buffer size, in bytes, for the 1 plane. + * + */ +enum AVSampleFormat { + AV_SAMPLE_FMT_NONE = -1, + AV_SAMPLE_FMT_U8, ///< unsigned 8 bits + AV_SAMPLE_FMT_S16, ///< signed 16 bits + AV_SAMPLE_FMT_S32, ///< signed 32 bits + AV_SAMPLE_FMT_FLT, ///< float + AV_SAMPLE_FMT_DBL, ///< double + + AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar + AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar + AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar + AV_SAMPLE_FMT_FLTP, ///< float, planar + AV_SAMPLE_FMT_DBLP, ///< double, planar + AV_SAMPLE_FMT_S64, ///< signed 64 bits + AV_SAMPLE_FMT_S64P, ///< signed 64 bits, planar + + AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically +}; + +/** + * Return the name of sample_fmt, or NULL if sample_fmt is not + * recognized. + */ +const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt); + +/** + * Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE + * on error. + */ +enum AVSampleFormat av_get_sample_fmt(const char *name); + +/** + * Return the planar<->packed alternative form of the given sample format, or + * AV_SAMPLE_FMT_NONE on error. If the passed sample_fmt is already in the + * requested planar/packed format, the format returned is the same as the + * input. + */ +enum AVSampleFormat av_get_alt_sample_fmt(enum AVSampleFormat sample_fmt, int planar); + +/** + * Get the packed alternative form of the given sample format. + * + * If the passed sample_fmt is already in packed format, the format returned is + * the same as the input. + * + * @return the packed alternative form of the given sample format or + AV_SAMPLE_FMT_NONE on error. + */ +enum AVSampleFormat av_get_packed_sample_fmt(enum AVSampleFormat sample_fmt); + +/** + * Get the planar alternative form of the given sample format. + * + * If the passed sample_fmt is already in planar format, the format returned is + * the same as the input. + * + * @return the planar alternative form of the given sample format or + AV_SAMPLE_FMT_NONE on error. + */ +enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt); + +/** + * Generate a string corresponding to the sample format with + * sample_fmt, or a header if sample_fmt is negative. + * + * @param buf the buffer where to write the string + * @param buf_size the size of buf + * @param sample_fmt the number of the sample format to print the + * corresponding info string, or a negative value to print the + * corresponding header. + * @return the pointer to the filled buffer or NULL if sample_fmt is + * unknown or in case of other errors + */ +char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt); + +/** + * Return number of bytes per sample. + * + * @param sample_fmt the sample format + * @return number of bytes per sample or zero if unknown for the given + * sample format + */ +int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt); + +/** + * Check if the sample format is planar. + * + * @param sample_fmt the sample format to inspect + * @return 1 if the sample format is planar, 0 if it is interleaved + */ +int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt); + +/** + * Get the required buffer size for the given audio parameters. + * + * @param[out] linesize calculated linesize, may be NULL + * @param nb_channels the number of channels + * @param nb_samples the number of samples in a single channel + * @param sample_fmt the sample format + * @param align buffer size alignment (0 = default, 1 = no alignment) + * @return required buffer size, or negative error code on failure + */ +int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples, + enum AVSampleFormat sample_fmt, int align); + +/** + * @} + * + * @defgroup lavu_sampmanip Samples manipulation + * + * Functions that manipulate audio samples + * @{ + */ + +/** + * Fill plane data pointers and linesize for samples with sample + * format sample_fmt. + * + * The audio_data array is filled with the pointers to the samples data planes: + * for planar, set the start point of each channel's data within the buffer, + * for packed, set the start point of the entire buffer only. + * + * The value pointed to by linesize is set to the aligned size of each + * channel's data buffer for planar layout, or to the aligned size of the + * buffer for all channels for packed layout. + * + * The buffer in buf must be big enough to contain all the samples + * (use av_samples_get_buffer_size() to compute its minimum size), + * otherwise the audio_data pointers will point to invalid data. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param[out] audio_data array to be filled with the pointer for each channel + * @param[out] linesize calculated linesize, may be NULL + * @param buf the pointer to a buffer containing the samples + * @param nb_channels the number of channels + * @param nb_samples the number of samples in a single channel + * @param sample_fmt the sample format + * @param align buffer size alignment (0 = default, 1 = no alignment) + * @return minimum size in bytes required for the buffer on success, + * or a negative error code on failure + */ +int av_samples_fill_arrays(uint8_t **audio_data, int *linesize, + const uint8_t *buf, + int nb_channels, int nb_samples, + enum AVSampleFormat sample_fmt, int align); + +/** + * Allocate a samples buffer for nb_samples samples, and fill data pointers and + * linesize accordingly. + * The allocated samples buffer can be freed by using av_freep(&audio_data[0]) + * Allocated data will be initialized to silence. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param[out] audio_data array to be filled with the pointer for each channel + * @param[out] linesize aligned size for audio buffer(s), may be NULL + * @param nb_channels number of audio channels + * @param nb_samples number of samples per channel + * @param align buffer size alignment (0 = default, 1 = no alignment) + * @return >=0 on success or a negative error code on failure + * @todo return the size of the allocated buffer in case of success at the next bump + * @see av_samples_fill_arrays() + * @see av_samples_alloc_array_and_samples() + */ +int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels, + int nb_samples, enum AVSampleFormat sample_fmt, int align); + +/** + * Allocate a data pointers array, samples buffer for nb_samples + * samples, and fill data pointers and linesize accordingly. + * + * This is the same as av_samples_alloc(), but also allocates the data + * pointers array. + * + * @see av_samples_alloc() + */ +int av_samples_alloc_array_and_samples(uint8_t ***audio_data, int *linesize, int nb_channels, + int nb_samples, enum AVSampleFormat sample_fmt, int align); + +/** + * Copy samples from src to dst. + * + * @param dst destination array of pointers to data planes + * @param src source array of pointers to data planes + * @param dst_offset offset in samples at which the data will be written to dst + * @param src_offset offset in samples at which the data will be read from src + * @param nb_samples number of samples to be copied + * @param nb_channels number of audio channels + * @param sample_fmt audio sample format + */ +int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset, + int src_offset, int nb_samples, int nb_channels, + enum AVSampleFormat sample_fmt); + +/** + * Fill an audio buffer with silence. + * + * @param audio_data array of pointers to data planes + * @param offset offset in samples at which to start filling + * @param nb_samples number of samples to fill + * @param nb_channels number of audio channels + * @param sample_fmt audio sample format + */ +int av_samples_set_silence(uint8_t **audio_data, int offset, int nb_samples, + int nb_channels, enum AVSampleFormat sample_fmt); + +/** + * @} + * @} + */ +#endif /* AVUTIL_SAMPLEFMT_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/sha.h b/third_party/ffmpeg/uos/amd64/include/libavutil/sha.h new file mode 100644 index 00000000..2e1220ab --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/sha.h @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2007 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * @ingroup lavu_sha + * Public header for SHA-1 & SHA-256 hash function implementations. + */ + +#ifndef AVUTIL_SHA_H +#define AVUTIL_SHA_H + +#include +#include + +#include "attributes.h" + +/** + * @defgroup lavu_sha SHA + * @ingroup lavu_hash + * SHA-1 and SHA-256 (Secure Hash Algorithm) hash function implementations. + * + * This module supports the following SHA hash functions: + * + * - SHA-1: 160 bits + * - SHA-224: 224 bits, as a variant of SHA-2 + * - SHA-256: 256 bits, as a variant of SHA-2 + * + * @see For SHA-384, SHA-512, and variants thereof, see @ref lavu_sha512. + * + * @{ + */ + +extern const int av_sha_size; + +struct AVSHA; + +/** + * Allocate an AVSHA context. + */ +struct AVSHA *av_sha_alloc(void); + +/** + * Initialize SHA-1 or SHA-2 hashing. + * + * @param context pointer to the function context (of size av_sha_size) + * @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits) + * @return zero if initialization succeeded, -1 otherwise + */ +int av_sha_init(struct AVSHA* context, int bits); + +/** + * Update hash value. + * + * @param ctx hash function context + * @param data input data to update hash with + * @param len input data length + */ +void av_sha_update(struct AVSHA *ctx, const uint8_t *data, size_t len); + +/** + * Finish hashing and output digest value. + * + * @param context hash function context + * @param digest buffer where output digest value is stored + */ +void av_sha_final(struct AVSHA* context, uint8_t *digest); + +/** + * @} + */ + +#endif /* AVUTIL_SHA_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/sha512.h b/third_party/ffmpeg/uos/amd64/include/libavutil/sha512.h new file mode 100644 index 00000000..a4a3f23d --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/sha512.h @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2007 Michael Niedermayer + * Copyright (C) 2013 James Almer + * + * 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 + */ + +/** + * @file + * @ingroup lavu_sha512 + * Public header for SHA-512 implementation. + */ + +#ifndef AVUTIL_SHA512_H +#define AVUTIL_SHA512_H + +#include +#include + +#include "attributes.h" + +/** + * @defgroup lavu_sha512 SHA-512 + * @ingroup lavu_hash + * SHA-512 (Secure Hash Algorithm) hash function implementations. + * + * This module supports the following SHA-2 hash functions: + * + * - SHA-512/224: 224 bits + * - SHA-512/256: 256 bits + * - SHA-384: 384 bits + * - SHA-512: 512 bits + * + * @see For SHA-1, SHA-256, and variants thereof, see @ref lavu_sha. + * + * @{ + */ + +extern const int av_sha512_size; + +struct AVSHA512; + +/** + * Allocate an AVSHA512 context. + */ +struct AVSHA512 *av_sha512_alloc(void); + +/** + * Initialize SHA-2 512 hashing. + * + * @param context pointer to the function context (of size av_sha512_size) + * @param bits number of bits in digest (224, 256, 384 or 512 bits) + * @return zero if initialization succeeded, -1 otherwise + */ +int av_sha512_init(struct AVSHA512* context, int bits); + +/** + * Update hash value. + * + * @param context hash function context + * @param data input data to update hash with + * @param len input data length + */ +void av_sha512_update(struct AVSHA512* context, const uint8_t* data, size_t len); + +/** + * Finish hashing and output digest value. + * + * @param context hash function context + * @param digest buffer where output digest value is stored + */ +void av_sha512_final(struct AVSHA512* context, uint8_t *digest); + +/** + * @} + */ + +#endif /* AVUTIL_SHA512_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/spherical.h b/third_party/ffmpeg/uos/amd64/include/libavutil/spherical.h new file mode 100644 index 00000000..cef759cf --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/spherical.h @@ -0,0 +1,232 @@ +/* + * Copyright (c) 2016 Vittorio Giovara + * + * 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 + */ + +/** + * @file + * Spherical video + */ + +#ifndef AVUTIL_SPHERICAL_H +#define AVUTIL_SPHERICAL_H + +#include +#include + +/** + * @addtogroup lavu_video + * @{ + * + * @defgroup lavu_video_spherical Spherical video mapping + * @{ + */ + +/** + * @addtogroup lavu_video_spherical + * A spherical video file contains surfaces that need to be mapped onto a + * sphere. Depending on how the frame was converted, a different distortion + * transformation or surface recomposition function needs to be applied before + * the video should be mapped and displayed. + */ + +/** + * Projection of the video surface(s) on a sphere. + */ +enum AVSphericalProjection { + /** + * Video represents a sphere mapped on a flat surface using + * equirectangular projection. + */ + AV_SPHERICAL_EQUIRECTANGULAR, + + /** + * Video frame is split into 6 faces of a cube, and arranged on a + * 3x2 layout. Faces are oriented upwards for the front, left, right, + * and back faces. The up face is oriented so the top of the face is + * forwards and the down face is oriented so the top of the face is + * to the back. + */ + AV_SPHERICAL_CUBEMAP, + + /** + * Video represents a portion of a sphere mapped on a flat surface + * using equirectangular projection. The @ref bounding fields indicate + * the position of the current video in a larger surface. + */ + AV_SPHERICAL_EQUIRECTANGULAR_TILE, +}; + +/** + * This structure describes how to handle spherical videos, outlining + * information about projection, initial layout, and any other view modifier. + * + * @note The struct must be allocated with av_spherical_alloc() and + * its size is not a part of the public ABI. + */ +typedef struct AVSphericalMapping { + /** + * Projection type. + */ + enum AVSphericalProjection projection; + + /** + * @name Initial orientation + * @{ + * There fields describe additional rotations applied to the sphere after + * the video frame is mapped onto it. The sphere is rotated around the + * viewer, who remains stationary. The order of transformation is always + * yaw, followed by pitch, and finally by roll. + * + * The coordinate system matches the one defined in OpenGL, where the + * forward vector (z) is coming out of screen, and it is equivalent to + * a rotation matrix of R = r_y(yaw) * r_x(pitch) * r_z(roll). + * + * A positive yaw rotates the portion of the sphere in front of the viewer + * toward their right. A positive pitch rotates the portion of the sphere + * in front of the viewer upwards. A positive roll tilts the portion of + * the sphere in front of the viewer to the viewer's right. + * + * These values are exported as 16.16 fixed point. + * + * See this equirectangular projection as example: + * + * @code{.unparsed} + * Yaw + * -180 0 180 + * 90 +-------------+-------------+ 180 + * | | | up + * P | | | y| forward + * i | ^ | | /z + * t 0 +-------------X-------------+ 0 Roll | / + * c | | | | / + * h | | | 0|/_____right + * | | | x + * -90 +-------------+-------------+ -180 + * + * X - the default camera center + * ^ - the default up vector + * @endcode + */ + int32_t yaw; ///< Rotation around the up vector [-180, 180]. + int32_t pitch; ///< Rotation around the right vector [-90, 90]. + int32_t roll; ///< Rotation around the forward vector [-180, 180]. + /** + * @} + */ + + /** + * @name Bounding rectangle + * @anchor bounding + * @{ + * These fields indicate the location of the current tile, and where + * it should be mapped relative to the original surface. They are + * exported as 0.32 fixed point, and can be converted to classic + * pixel values with av_spherical_bounds(). + * + * @code{.unparsed} + * +----------------+----------+ + * | |bound_top | + * | +--------+ | + * | bound_left |tile | | + * +<---------->| |<--->+bound_right + * | +--------+ | + * | | | + * | bound_bottom| | + * +----------------+----------+ + * @endcode + * + * If needed, the original video surface dimensions can be derived + * by adding the current stream or frame size to the related bounds, + * like in the following example: + * + * @code{c} + * original_width = tile->width + bound_left + bound_right; + * original_height = tile->height + bound_top + bound_bottom; + * @endcode + * + * @note These values are valid only for the tiled equirectangular + * projection type (@ref AV_SPHERICAL_EQUIRECTANGULAR_TILE), + * and should be ignored in all other cases. + */ + uint32_t bound_left; ///< Distance from the left edge + uint32_t bound_top; ///< Distance from the top edge + uint32_t bound_right; ///< Distance from the right edge + uint32_t bound_bottom; ///< Distance from the bottom edge + /** + * @} + */ + + /** + * Number of pixels to pad from the edge of each cube face. + * + * @note This value is valid for only for the cubemap projection type + * (@ref AV_SPHERICAL_CUBEMAP), and should be ignored in all other + * cases. + */ + uint32_t padding; +} AVSphericalMapping; + +/** + * Allocate a AVSphericalVideo structure and initialize its fields to default + * values. + * + * @return the newly allocated struct or NULL on failure + */ +AVSphericalMapping *av_spherical_alloc(size_t *size); + +/** + * Convert the @ref bounding fields from an AVSphericalVideo + * from 0.32 fixed point to pixels. + * + * @param map The AVSphericalVideo map to read bound values from. + * @param width Width of the current frame or stream. + * @param height Height of the current frame or stream. + * @param left Pixels from the left edge. + * @param top Pixels from the top edge. + * @param right Pixels from the right edge. + * @param bottom Pixels from the bottom edge. + */ +void av_spherical_tile_bounds(const AVSphericalMapping *map, + size_t width, size_t height, + size_t *left, size_t *top, + size_t *right, size_t *bottom); + +/** + * Provide a human-readable name of a given AVSphericalProjection. + * + * @param projection The input AVSphericalProjection. + * + * @return The name of the AVSphericalProjection, or "unknown". + */ +const char *av_spherical_projection_name(enum AVSphericalProjection projection); + +/** + * Get the AVSphericalProjection form a human-readable name. + * + * @param name The input string. + * + * @return The AVSphericalProjection value, or -1 if not found. + */ +int av_spherical_from_name(const char *name); +/** + * @} + * @} + */ + +#endif /* AVUTIL_SPHERICAL_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/stereo3d.h b/third_party/ffmpeg/uos/amd64/include/libavutil/stereo3d.h new file mode 100644 index 00000000..d421aac2 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/stereo3d.h @@ -0,0 +1,233 @@ +/* + * Copyright (c) 2013 Vittorio Giovara + * + * 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 + */ + +/** + * @file + * Stereoscopic video + */ + +#ifndef AVUTIL_STEREO3D_H +#define AVUTIL_STEREO3D_H + +#include + +#include "frame.h" + +/** + * @addtogroup lavu_video + * @{ + * + * @defgroup lavu_video_stereo3d Stereo3D types and functions + * @{ + */ + +/** + * @addtogroup lavu_video_stereo3d + * A stereoscopic video file consists in multiple views embedded in a single + * frame, usually describing two views of a scene. This file describes all + * possible codec-independent view arrangements. + * */ + +/** + * List of possible 3D Types + */ +enum AVStereo3DType { + /** + * Video is not stereoscopic (and metadata has to be there). + */ + AV_STEREO3D_2D, + + /** + * Views are next to each other. + * + * @code{.unparsed} + * LLLLRRRR + * LLLLRRRR + * LLLLRRRR + * ... + * @endcode + */ + AV_STEREO3D_SIDEBYSIDE, + + /** + * Views are on top of each other. + * + * @code{.unparsed} + * LLLLLLLL + * LLLLLLLL + * RRRRRRRR + * RRRRRRRR + * @endcode + */ + AV_STEREO3D_TOPBOTTOM, + + /** + * Views are alternated temporally. + * + * @code{.unparsed} + * frame0 frame1 frame2 ... + * LLLLLLLL RRRRRRRR LLLLLLLL + * LLLLLLLL RRRRRRRR LLLLLLLL + * LLLLLLLL RRRRRRRR LLLLLLLL + * ... ... ... + * @endcode + */ + AV_STEREO3D_FRAMESEQUENCE, + + /** + * Views are packed in a checkerboard-like structure per pixel. + * + * @code{.unparsed} + * LRLRLRLR + * RLRLRLRL + * LRLRLRLR + * ... + * @endcode + */ + AV_STEREO3D_CHECKERBOARD, + + /** + * Views are next to each other, but when upscaling + * apply a checkerboard pattern. + * + * @code{.unparsed} + * LLLLRRRR L L L L R R R R + * LLLLRRRR => L L L L R R R R + * LLLLRRRR L L L L R R R R + * LLLLRRRR L L L L R R R R + * @endcode + */ + AV_STEREO3D_SIDEBYSIDE_QUINCUNX, + + /** + * Views are packed per line, as if interlaced. + * + * @code{.unparsed} + * LLLLLLLL + * RRRRRRRR + * LLLLLLLL + * ... + * @endcode + */ + AV_STEREO3D_LINES, + + /** + * Views are packed per column. + * + * @code{.unparsed} + * LRLRLRLR + * LRLRLRLR + * LRLRLRLR + * ... + * @endcode + */ + AV_STEREO3D_COLUMNS, +}; + +/** + * List of possible view types. + */ +enum AVStereo3DView { + /** + * Frame contains two packed views. + */ + AV_STEREO3D_VIEW_PACKED, + + /** + * Frame contains only the left view. + */ + AV_STEREO3D_VIEW_LEFT, + + /** + * Frame contains only the right view. + */ + AV_STEREO3D_VIEW_RIGHT, +}; + +/** + * Inverted views, Right/Bottom represents the left view. + */ +#define AV_STEREO3D_FLAG_INVERT (1 << 0) + +/** + * Stereo 3D type: this structure describes how two videos are packed + * within a single video surface, with additional information as needed. + * + * @note The struct must be allocated with av_stereo3d_alloc() and + * its size is not a part of the public ABI. + */ +typedef struct AVStereo3D { + /** + * How views are packed within the video. + */ + enum AVStereo3DType type; + + /** + * Additional information about the frame packing. + */ + int flags; + + /** + * Determines which views are packed. + */ + enum AVStereo3DView view; +} AVStereo3D; + +/** + * Allocate an AVStereo3D structure and set its fields to default values. + * The resulting struct can be freed using av_freep(). + * + * @return An AVStereo3D filled with default values or NULL on failure. + */ +AVStereo3D *av_stereo3d_alloc(void); + +/** + * Allocate a complete AVFrameSideData and add it to the frame. + * + * @param frame The frame which side data is added to. + * + * @return The AVStereo3D structure to be filled by caller. + */ +AVStereo3D *av_stereo3d_create_side_data(AVFrame *frame); + +/** + * Provide a human-readable name of a given stereo3d type. + * + * @param type The input stereo3d type value. + * + * @return The name of the stereo3d value, or "unknown". + */ +const char *av_stereo3d_type_name(unsigned int type); + +/** + * Get the AVStereo3DType form a human-readable name. + * + * @param name The input string. + * + * @return The AVStereo3DType value, or -1 if not found. + */ +int av_stereo3d_from_name(const char *name); + +/** + * @} + * @} + */ + +#endif /* AVUTIL_STEREO3D_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/tea.h b/third_party/ffmpeg/uos/amd64/include/libavutil/tea.h new file mode 100644 index 00000000..dd929bda --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/tea.h @@ -0,0 +1,71 @@ +/* + * A 32-bit implementation of the TEA algorithm + * Copyright (c) 2015 Vesselin Bontchev + * + * 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 AVUTIL_TEA_H +#define AVUTIL_TEA_H + +#include + +/** + * @file + * @brief Public header for libavutil TEA algorithm + * @defgroup lavu_tea TEA + * @ingroup lavu_crypto + * @{ + */ + +extern const int av_tea_size; + +struct AVTEA; + +/** + * Allocate an AVTEA context + * To free the struct: av_free(ptr) + */ +struct AVTEA *av_tea_alloc(void); + +/** + * Initialize an AVTEA context. + * + * @param ctx an AVTEA context + * @param key a key of 16 bytes used for encryption/decryption + * @param rounds the number of rounds in TEA (64 is the "standard") + */ +void av_tea_init(struct AVTEA *ctx, const uint8_t key[16], int rounds); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * + * @param ctx an AVTEA context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 8 byte blocks + * @param iv initialization vector for CBC mode, if NULL then ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_tea_crypt(struct AVTEA *ctx, uint8_t *dst, const uint8_t *src, + int count, uint8_t *iv, int decrypt); + +/** + * @} + */ + +#endif /* AVUTIL_TEA_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/threadmessage.h b/third_party/ffmpeg/uos/amd64/include/libavutil/threadmessage.h new file mode 100644 index 00000000..42ce655f --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/threadmessage.h @@ -0,0 +1,115 @@ +/* + * 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 AVUTIL_THREADMESSAGE_H +#define AVUTIL_THREADMESSAGE_H + +typedef struct AVThreadMessageQueue AVThreadMessageQueue; + +typedef enum AVThreadMessageFlags { + + /** + * Perform non-blocking operation. + * If this flag is set, send and recv operations are non-blocking and + * return AVERROR(EAGAIN) immediately if they can not proceed. + */ + AV_THREAD_MESSAGE_NONBLOCK = 1, + +} AVThreadMessageFlags; + +/** + * Allocate a new message queue. + * + * @param mq pointer to the message queue + * @param nelem maximum number of elements in the queue + * @param elsize size of each element in the queue + * @return >=0 for success; <0 for error, in particular AVERROR(ENOSYS) if + * lavu was built without thread support + */ +int av_thread_message_queue_alloc(AVThreadMessageQueue **mq, + unsigned nelem, + unsigned elsize); + +/** + * Free a message queue. + * + * The message queue must no longer be in use by another thread. + */ +void av_thread_message_queue_free(AVThreadMessageQueue **mq); + +/** + * Send a message on the queue. + */ +int av_thread_message_queue_send(AVThreadMessageQueue *mq, + void *msg, + unsigned flags); + +/** + * Receive a message from the queue. + */ +int av_thread_message_queue_recv(AVThreadMessageQueue *mq, + void *msg, + unsigned flags); + +/** + * Set the sending error code. + * + * If the error code is set to non-zero, av_thread_message_queue_send() will + * return it immediately. Conventional values, such as AVERROR_EOF or + * AVERROR(EAGAIN), can be used to cause the sending thread to stop or + * suspend its operation. + */ +void av_thread_message_queue_set_err_send(AVThreadMessageQueue *mq, + int err); + +/** + * Set the receiving error code. + * + * If the error code is set to non-zero, av_thread_message_queue_recv() will + * return it immediately when there are no longer available messages. + * Conventional values, such as AVERROR_EOF or AVERROR(EAGAIN), can be used + * to cause the receiving thread to stop or suspend its operation. + */ +void av_thread_message_queue_set_err_recv(AVThreadMessageQueue *mq, + int err); + +/** + * Set the optional free message callback function which will be called if an + * operation is removing messages from the queue. + */ +void av_thread_message_queue_set_free_func(AVThreadMessageQueue *mq, + void (*free_func)(void *msg)); + +/** + * Return the current number of messages in the queue. + * + * @return the current number of messages or AVERROR(ENOSYS) if lavu was built + * without thread support + */ +int av_thread_message_queue_nb_elems(AVThreadMessageQueue *mq); + +/** + * Flush the message queue + * + * This function is mostly equivalent to reading and free-ing every message + * except that it will be done in a single operation (no lock/unlock between + * reads). + */ +void av_thread_message_flush(AVThreadMessageQueue *mq); + +#endif /* AVUTIL_THREADMESSAGE_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/time.h b/third_party/ffmpeg/uos/amd64/include/libavutil/time.h new file mode 100644 index 00000000..dc169b06 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/time.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2000-2003 Fabrice Bellard + * + * 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 AVUTIL_TIME_H +#define AVUTIL_TIME_H + +#include + +/** + * Get the current time in microseconds. + */ +int64_t av_gettime(void); + +/** + * Get the current time in microseconds since some unspecified starting point. + * On platforms that support it, the time comes from a monotonic clock + * This property makes this time source ideal for measuring relative time. + * The returned values may not be monotonic on platforms where a monotonic + * clock is not available. + */ +int64_t av_gettime_relative(void); + +/** + * Indicates with a boolean result if the av_gettime_relative() time source + * is monotonic. + */ +int av_gettime_relative_is_monotonic(void); + +/** + * Sleep for a period of time. Although the duration is expressed in + * microseconds, the actual delay may be rounded to the precision of the + * system timer. + * + * @param usec Number of microseconds to sleep. + * @return zero on success or (negative) error code. + */ +int av_usleep(unsigned usec); + +#endif /* AVUTIL_TIME_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/timecode.h b/third_party/ffmpeg/uos/amd64/include/libavutil/timecode.h new file mode 100644 index 00000000..060574a1 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/timecode.h @@ -0,0 +1,199 @@ +/* + * Copyright (c) 2006 Smartjog S.A.S, Baptiste Coudurier + * Copyright (c) 2011-2012 Smartjog S.A.S, Clément BÅ“sch + * + * 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 + */ + +/** + * @file + * Timecode helpers header + */ + +#ifndef AVUTIL_TIMECODE_H +#define AVUTIL_TIMECODE_H + +#include +#include "rational.h" + +#define AV_TIMECODE_STR_SIZE 23 + +enum AVTimecodeFlag { + AV_TIMECODE_FLAG_DROPFRAME = 1<<0, ///< timecode is drop frame + AV_TIMECODE_FLAG_24HOURSMAX = 1<<1, ///< timecode wraps after 24 hours + AV_TIMECODE_FLAG_ALLOWNEGATIVE = 1<<2, ///< negative time values are allowed +}; + +typedef struct { + int start; ///< timecode frame start (first base frame number) + uint32_t flags; ///< flags such as drop frame, +24 hours support, ... + AVRational rate; ///< frame rate in rational form + unsigned fps; ///< frame per second; must be consistent with the rate field +} AVTimecode; + +/** + * Adjust frame number for NTSC drop frame time code. + * + * @param framenum frame number to adjust + * @param fps frame per second, multiples of 30 + * @return adjusted frame number + * @warning adjustment is only valid for multiples of NTSC 29.97 + */ +int av_timecode_adjust_ntsc_framenum2(int framenum, int fps); + +/** + * Convert frame number to SMPTE 12M binary representation. + * + * @param tc timecode data correctly initialized + * @param framenum frame number + * @return the SMPTE binary representation + * + * See SMPTE ST 314M-2005 Sec 4.4.2.2.1 "Time code pack (TC)" + * the format description as follows: + * bits 0-5: hours, in BCD(6bits) + * bits 6: BGF1 + * bits 7: BGF2 (NTSC) or FIELD (PAL) + * bits 8-14: minutes, in BCD(7bits) + * bits 15: BGF0 (NTSC) or BGF2 (PAL) + * bits 16-22: seconds, in BCD(7bits) + * bits 23: FIELD (NTSC) or BGF0 (PAL) + * bits 24-29: frames, in BCD(6bits) + * bits 30: drop frame flag (0: non drop, 1: drop) + * bits 31: color frame flag (0: unsync mode, 1: sync mode) + * @note BCD numbers (6 or 7 bits): 4 or 5 lower bits for units, 2 higher bits for tens. + * @note Frame number adjustment is automatically done in case of drop timecode, + * you do NOT have to call av_timecode_adjust_ntsc_framenum2(). + * @note The frame number is relative to tc->start. + * @note Color frame (CF) and binary group flags (BGF) bits are set to zero. + */ +uint32_t av_timecode_get_smpte_from_framenum(const AVTimecode *tc, int framenum); + +/** + * Convert sei info to SMPTE 12M binary representation. + * + * @param rate frame rate in rational form + * @param drop drop flag + * @param hh hour + * @param mm minute + * @param ss second + * @param ff frame number + * @return the SMPTE binary representation + */ +uint32_t av_timecode_get_smpte(AVRational rate, int drop, int hh, int mm, int ss, int ff); + +/** + * Load timecode string in buf. + * + * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long + * @param tc timecode data correctly initialized + * @param framenum frame number + * @return the buf parameter + * + * @note Timecode representation can be a negative timecode and have more than + * 24 hours, but will only be honored if the flags are correctly set. + * @note The frame number is relative to tc->start. + */ +char *av_timecode_make_string(const AVTimecode *tc, char *buf, int framenum); + +/** + * Get the timecode string from the SMPTE timecode format. + * + * In contrast to av_timecode_make_smpte_tc_string this function supports 50/60 + * fps timecodes by using the field bit. + * + * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long + * @param rate frame rate of the timecode + * @param tcsmpte the 32-bit SMPTE timecode + * @param prevent_df prevent the use of a drop flag when it is known the DF bit + * is arbitrary + * @param skip_field prevent the use of a field flag when it is known the field + * bit is arbitrary (e.g. because it is used as PC flag) + * @return the buf parameter + */ +char *av_timecode_make_smpte_tc_string2(char *buf, AVRational rate, uint32_t tcsmpte, int prevent_df, int skip_field); + +/** + * Get the timecode string from the SMPTE timecode format. + * + * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long + * @param tcsmpte the 32-bit SMPTE timecode + * @param prevent_df prevent the use of a drop flag when it is known the DF bit + * is arbitrary + * @return the buf parameter + */ +char *av_timecode_make_smpte_tc_string(char *buf, uint32_t tcsmpte, int prevent_df); + +/** + * Get the timecode string from the 25-bit timecode format (MPEG GOP format). + * + * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long + * @param tc25bit the 25-bits timecode + * @return the buf parameter + */ +char *av_timecode_make_mpeg_tc_string(char *buf, uint32_t tc25bit); + +/** + * Init a timecode struct with the passed parameters. + * + * @param log_ctx a pointer to an arbitrary struct of which the first field + * is a pointer to an AVClass struct (used for av_log) + * @param tc pointer to an allocated AVTimecode + * @param rate frame rate in rational form + * @param flags miscellaneous flags such as drop frame, +24 hours, ... + * (see AVTimecodeFlag) + * @param frame_start the first frame number + * @return 0 on success, AVERROR otherwise + */ +int av_timecode_init(AVTimecode *tc, AVRational rate, int flags, int frame_start, void *log_ctx); + +/** + * Init a timecode struct from the passed timecode components. + * + * @param log_ctx a pointer to an arbitrary struct of which the first field + * is a pointer to an AVClass struct (used for av_log) + * @param tc pointer to an allocated AVTimecode + * @param rate frame rate in rational form + * @param flags miscellaneous flags such as drop frame, +24 hours, ... + * (see AVTimecodeFlag) + * @param hh hours + * @param mm minutes + * @param ss seconds + * @param ff frames + * @return 0 on success, AVERROR otherwise + */ +int av_timecode_init_from_components(AVTimecode *tc, AVRational rate, int flags, int hh, int mm, int ss, int ff, void *log_ctx); + +/** + * Parse timecode representation (hh:mm:ss[:;.]ff). + * + * @param log_ctx a pointer to an arbitrary struct of which the first field is a + * pointer to an AVClass struct (used for av_log). + * @param tc pointer to an allocated AVTimecode + * @param rate frame rate in rational form + * @param str timecode string which will determine the frame start + * @return 0 on success, AVERROR otherwise + */ +int av_timecode_init_from_string(AVTimecode *tc, AVRational rate, const char *str, void *log_ctx); + +/** + * Check if the timecode feature is available for the given frame rate + * + * @return 0 if supported, <0 otherwise + */ +int av_timecode_check_frame_rate(AVRational rate); + +#endif /* AVUTIL_TIMECODE_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/timestamp.h b/third_party/ffmpeg/uos/amd64/include/libavutil/timestamp.h new file mode 100644 index 00000000..e082f01b --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/timestamp.h @@ -0,0 +1,78 @@ +/* + * 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 + */ + +/** + * @file + * timestamp utils, mostly useful for debugging/logging purposes + */ + +#ifndef AVUTIL_TIMESTAMP_H +#define AVUTIL_TIMESTAMP_H + +#include "common.h" + +#if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS) && !defined(PRId64) +#error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS +#endif + +#define AV_TS_MAX_STRING_SIZE 32 + +/** + * Fill the provided buffer with a string containing a timestamp + * representation. + * + * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE + * @param ts the timestamp to represent + * @return the buffer in input + */ +static inline char *av_ts_make_string(char *buf, int64_t ts) +{ + if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS"); + else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%" PRId64, ts); + return buf; +} + +/** + * Convenience macro, the return value should be used only directly in + * function arguments but never stand-alone. + */ +#define av_ts2str(ts) av_ts_make_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts) + +/** + * Fill the provided buffer with a string containing a timestamp time + * representation. + * + * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE + * @param ts the timestamp to represent + * @param tb the timebase of the timestamp + * @return the buffer in input + */ +static inline char *av_ts_make_time_string(char *buf, int64_t ts, AVRational *tb) +{ + if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS"); + else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%.6g", av_q2d(*tb) * ts); + return buf; +} + +/** + * Convenience macro, the return value should be used only directly in + * function arguments but never stand-alone. + */ +#define av_ts2timestr(ts, tb) av_ts_make_time_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts, tb) + +#endif /* AVUTIL_TIMESTAMP_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/tree.h b/third_party/ffmpeg/uos/amd64/include/libavutil/tree.h new file mode 100644 index 00000000..bbb8fbb1 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/tree.h @@ -0,0 +1,137 @@ +/* + * copyright (c) 2006 Michael Niedermayer + * + * 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 + */ + +/** + * @file + * A tree container. + * @author Michael Niedermayer + */ + +#ifndef AVUTIL_TREE_H +#define AVUTIL_TREE_H + +#include "attributes.h" + +/** + * @addtogroup lavu_tree AVTree + * @ingroup lavu_data + * + * Low-complexity tree container + * + * Insertion, removal, finding equal, largest which is smaller than and + * smallest which is larger than, all have O(log n) worst-case complexity. + * @{ + */ + + +struct AVTreeNode; +extern const int av_tree_node_size; + +/** + * Allocate an AVTreeNode. + */ +struct AVTreeNode *av_tree_node_alloc(void); + +/** + * Find an element. + * @param root a pointer to the root node of the tree + * @param next If next is not NULL, then next[0] will contain the previous + * element and next[1] the next element. If either does not exist, + * then the corresponding entry in next is unchanged. + * @param cmp compare function used to compare elements in the tree, + * API identical to that of Standard C's qsort + * It is guaranteed that the first and only the first argument to cmp() + * will be the key parameter to av_tree_find(), thus it could if the + * user wants, be a different type (like an opaque context). + * @return An element with cmp(key, elem) == 0 or NULL if no such element + * exists in the tree. + */ +void *av_tree_find(const struct AVTreeNode *root, void *key, + int (*cmp)(const void *key, const void *b), void *next[2]); + +/** + * Insert or remove an element. + * + * If *next is NULL, then the supplied element will be removed if it exists. + * If *next is non-NULL, then the supplied element will be inserted, unless + * it already exists in the tree. + * + * @param rootp A pointer to a pointer to the root node of the tree; note that + * the root node can change during insertions, this is required + * to keep the tree balanced. + * @param key pointer to the element key to insert in the tree + * @param next Used to allocate and free AVTreeNodes. For insertion the user + * must set it to an allocated and zeroed object of at least + * av_tree_node_size bytes size. av_tree_insert() will set it to + * NULL if it has been consumed. + * For deleting elements *next is set to NULL by the user and + * av_tree_insert() will set it to the AVTreeNode which was + * used for the removed element. + * This allows the use of flat arrays, which have + * lower overhead compared to many malloced elements. + * You might want to define a function like: + * @code + * void *tree_insert(struct AVTreeNode **rootp, void *key, + * int (*cmp)(void *key, const void *b), + * AVTreeNode **next) + * { + * if (!*next) + * *next = av_mallocz(av_tree_node_size); + * return av_tree_insert(rootp, key, cmp, next); + * } + * void *tree_remove(struct AVTreeNode **rootp, void *key, + * int (*cmp)(void *key, const void *b, AVTreeNode **next)) + * { + * av_freep(next); + * return av_tree_insert(rootp, key, cmp, next); + * } + * @endcode + * @param cmp compare function used to compare elements in the tree, API identical + * to that of Standard C's qsort + * @return If no insertion happened, the found element; if an insertion or + * removal happened, then either key or NULL will be returned. + * Which one it is depends on the tree state and the implementation. You + * should make no assumptions that it's one or the other in the code. + */ +void *av_tree_insert(struct AVTreeNode **rootp, void *key, + int (*cmp)(const void *key, const void *b), + struct AVTreeNode **next); + +void av_tree_destroy(struct AVTreeNode *t); + +/** + * Apply enu(opaque, &elem) to all the elements in the tree in a given range. + * + * @param cmp a comparison function that returns < 0 for an element below the + * range, > 0 for an element above the range and == 0 for an + * element inside the range + * + * @note The cmp function should use the same ordering used to construct the + * tree. + */ +void av_tree_enumerate(struct AVTreeNode *t, void *opaque, + int (*cmp)(void *opaque, void *elem), + int (*enu)(void *opaque, void *elem)); + +/** + * @} + */ + +#endif /* AVUTIL_TREE_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/twofish.h b/third_party/ffmpeg/uos/amd64/include/libavutil/twofish.h new file mode 100644 index 00000000..813cfecd --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/twofish.h @@ -0,0 +1,70 @@ +/* + * An implementation of the TwoFish algorithm + * Copyright (c) 2015 Supraja Meedinti + * + * 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 AVUTIL_TWOFISH_H +#define AVUTIL_TWOFISH_H + +#include + + +/** + * @file + * @brief Public header for libavutil TWOFISH algorithm + * @defgroup lavu_twofish TWOFISH + * @ingroup lavu_crypto + * @{ + */ + +extern const int av_twofish_size; + +struct AVTWOFISH; + +/** + * Allocate an AVTWOFISH context + * To free the struct: av_free(ptr) + */ +struct AVTWOFISH *av_twofish_alloc(void); + +/** + * Initialize an AVTWOFISH context. + * + * @param ctx an AVTWOFISH context + * @param key a key of size ranging from 1 to 32 bytes used for encryption/decryption + * @param key_bits number of keybits: 128, 192, 256 If less than the required, padded with zeroes to nearest valid value; return value is 0 if key_bits is 128/192/256, -1 if less than 0, 1 otherwise + */ +int av_twofish_init(struct AVTWOFISH *ctx, const uint8_t *key, int key_bits); + +/** + * Encrypt or decrypt a buffer using a previously initialized context + * + * @param ctx an AVTWOFISH context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 16 byte blocks + * @paran iv initialization vector for CBC mode, NULL for ECB mode + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_twofish_crypt(struct AVTWOFISH *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t* iv, int decrypt); + +/** + * @} + */ +#endif /* AVUTIL_TWOFISH_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/tx.h b/third_party/ffmpeg/uos/amd64/include/libavutil/tx.h new file mode 100644 index 00000000..3de2f723 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/tx.h @@ -0,0 +1,161 @@ +/* + * 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 AVUTIL_TX_H +#define AVUTIL_TX_H + +#include +#include + +typedef struct AVTXContext AVTXContext; + +typedef struct AVComplexFloat { + float re, im; +} AVComplexFloat; + +typedef struct AVComplexDouble { + double re, im; +} AVComplexDouble; + +typedef struct AVComplexInt32 { + int32_t re, im; +} AVComplexInt32; + +enum AVTXType { + /** + * Standard complex to complex FFT with sample data type of AVComplexFloat, + * AVComplexDouble or AVComplexInt32, for each respective variant. + * + * Output is not 1/len normalized. Scaling currently unsupported. + * The stride parameter must be set to the size of a single sample in bytes. + */ + AV_TX_FLOAT_FFT = 0, + AV_TX_DOUBLE_FFT = 2, + AV_TX_INT32_FFT = 4, + + /** + * Standard MDCT with a sample data type of float, double or int32_t, + * respecively. For the float and int32 variants, the scale type is + * 'float', while for the double variant, it's 'double'. + * If scale is NULL, 1.0 will be used as a default. + * + * Length is the frame size, not the window size (which is 2x frame). + * For forward transforms, the stride specifies the spacing between each + * sample in the output array in bytes. The input must be a flat array. + * + * For inverse transforms, the stride specifies the spacing between each + * sample in the input array in bytes. The output must be a flat array. + * + * NOTE: the inverse transform is half-length, meaning the output will not + * contain redundant data. This is what most codecs work with. To do a full + * inverse transform, set the AV_TX_FULL_IMDCT flag on init. + */ + AV_TX_FLOAT_MDCT = 1, + AV_TX_DOUBLE_MDCT = 3, + AV_TX_INT32_MDCT = 5, + + /** + * Real to complex and complex to real DFTs. + * For the float and int32 variants, the scale type is 'float', while for + * the double variant, it's a 'double'. If scale is NULL, 1.0 will be used + * as a default. + * + * The stride parameter must be set to the size of a single sample in bytes. + * + * The forward transform performs a real-to-complex DFT of N samples to + * N/2+1 complex values. + * + * The inverse transform performs a complex-to-real DFT of N/2+1 complex + * values to N real samples. The output is not normalized, but can be + * made so by setting the scale value to 1.0/len. + * NOTE: the inverse transform always overwrites the input. + */ + AV_TX_FLOAT_RDFT = 6, + AV_TX_DOUBLE_RDFT = 7, + AV_TX_INT32_RDFT = 8, + + /* Not part of the API, do not use */ + AV_TX_NB, +}; + +/** + * Function pointer to a function to perform the transform. + * + * @note Using a different context than the one allocated during av_tx_init() + * is not allowed. + * + * @param s the transform context + * @param out the output array + * @param in the input array + * @param stride the input or output stride in bytes + * + * The out and in arrays must be aligned to the maximum required by the CPU + * architecture unless the AV_TX_UNALIGNED flag was set in av_tx_init(). + * The stride must follow the constraints the transform type has specified. + */ +typedef void (*av_tx_fn)(AVTXContext *s, void *out, void *in, ptrdiff_t stride); + +/** + * Flags for av_tx_init() + */ +enum AVTXFlags { + /** + * Performs an in-place transformation on the input. The output argument + * of av_tn_fn() MUST match the input. May be unsupported or slower for some + * transform types. + */ + AV_TX_INPLACE = 1ULL << 0, + + /** + * Relaxes alignment requirement for the in and out arrays of av_tx_fn(). + * May be slower with certain transform types. + */ + AV_TX_UNALIGNED = 1ULL << 1, + + /** + * Performs a full inverse MDCT rather than leaving out samples that can be + * derived through symmetry. Requires an output array of 'len' floats, + * rather than the usual 'len/2' floats. + * Ignored for all transforms but inverse MDCTs. + */ + AV_TX_FULL_IMDCT = 1ULL << 2, +}; + +/** + * Initialize a transform context with the given configuration + * (i)MDCTs with an odd length are currently not supported. + * + * @param ctx the context to allocate, will be NULL on error + * @param tx pointer to the transform function pointer to set + * @param type type the type of transform + * @param inv whether to do an inverse or a forward transform + * @param len the size of the transform in samples + * @param scale pointer to the value to scale the output if supported by type + * @param flags a bitmask of AVTXFlags or 0 + * + * @return 0 on success, negative error code on failure + */ +int av_tx_init(AVTXContext **ctx, av_tx_fn *tx, enum AVTXType type, + int inv, int len, const void *scale, uint64_t flags); + +/** + * Frees a context and sets *ctx to NULL, does nothing when *ctx == NULL. + */ +void av_tx_uninit(AVTXContext **ctx); + +#endif /* AVUTIL_TX_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/uuid.h b/third_party/ffmpeg/uos/amd64/include/libavutil/uuid.h new file mode 100644 index 00000000..4b508891 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/uuid.h @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2022 Pierre-Anthony Lemieux + * Zane van Iperen + * + * 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 + */ + +/** + * @file + * UUID parsing and serialization utilities. + * The library treats the UUID as an opaque sequence of 16 unsigned bytes, + * i.e. ignoring the internal layout of the UUID, which depends on the type + * of the UUID. + * + * @author Pierre-Anthony Lemieux + * @author Zane van Iperen + */ + +#ifndef AVUTIL_UUID_H +#define AVUTIL_UUID_H + +#include +#include + +#define AV_PRI_UUID \ + "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-" \ + "%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx" + +#define AV_PRI_URN_UUID \ + "urn:uuid:%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-" \ + "%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx" + +/* AV_UUID_ARG() is used together with AV_PRI_UUID() or AV_PRI_URN_UUID + * to print UUIDs, e.g. + * av_log(NULL, AV_LOG_DEBUG, "UUID: " AV_PRI_UUID, AV_UUID_ARG(uuid)); + */ +#define AV_UUID_ARG(x) \ + (x)[ 0], (x)[ 1], (x)[ 2], (x)[ 3], \ + (x)[ 4], (x)[ 5], (x)[ 6], (x)[ 7], \ + (x)[ 8], (x)[ 9], (x)[10], (x)[11], \ + (x)[12], (x)[13], (x)[14], (x)[15] + +#define AV_UUID_LEN 16 + +/* Binary representation of a UUID */ +typedef uint8_t AVUUID[AV_UUID_LEN]; + +/** + * Parses a string representation of a UUID formatted according to IETF RFC 4122 + * into an AVUUID. The parsing is case-insensitive. The string must be 37 + * characters long, including the terminating NUL character. + * + * Example string representation: "2fceebd0-7017-433d-bafb-d073a7116696" + * + * @param[in] in String representation of a UUID, + * e.g. 2fceebd0-7017-433d-bafb-d073a7116696 + * @param[out] uu AVUUID + * @return A non-zero value in case of an error. + */ +int av_uuid_parse(const char *in, AVUUID uu); + +/** + * Parses a URN representation of a UUID, as specified at IETF RFC 4122, + * into an AVUUID. The parsing is case-insensitive. The string must be 46 + * characters long, including the terminating NUL character. + * + * Example string representation: "urn:uuid:2fceebd0-7017-433d-bafb-d073a7116696" + * + * @param[in] in URN UUID + * @param[out] uu AVUUID + * @return A non-zero value in case of an error. + */ +int av_uuid_urn_parse(const char *in, AVUUID uu); + +/** + * Parses a string representation of a UUID formatted according to IETF RFC 4122 + * into an AVUUID. The parsing is case-insensitive. + * + * @param[in] in_start Pointer to the first character of the string representation + * @param[in] in_end Pointer to the character after the last character of the + * string representation. That memory location is never + * accessed. It is an error if `in_end - in_start != 36`. + * @param[out] uu AVUUID + * @return A non-zero value in case of an error. + */ +int av_uuid_parse_range(const char *in_start, const char *in_end, AVUUID uu); + +/** + * Serializes a AVUUID into a string representation according to IETF RFC 4122. + * The string is lowercase and always 37 characters long, including the + * terminating NUL character. + * + * @param[in] uu AVUUID + * @param[out] out Pointer to an array of no less than 37 characters. + * @return A non-zero value in case of an error. + */ +void av_uuid_unparse(const AVUUID uu, char *out); + +/** + * Compares two UUIDs for equality. + * + * @param[in] uu1 AVUUID + * @param[in] uu2 AVUUID + * @return Nonzero if uu1 and uu2 are identical, 0 otherwise + */ +static inline int av_uuid_equal(const AVUUID uu1, const AVUUID uu2) +{ + return memcmp(uu1, uu2, AV_UUID_LEN) == 0; +} + +/** + * Copies the bytes of src into dest. + * + * @param[out] dest AVUUID + * @param[in] src AVUUID + */ +static inline void av_uuid_copy(AVUUID dest, const AVUUID src) +{ + memcpy(dest, src, AV_UUID_LEN); +} + +/** + * Sets a UUID to the nil UUID, i.e. a UUID with have all + * its 128 bits set to zero. + * + * @param[in,out] uu UUID to be set to the nil UUID + */ +static inline void av_uuid_nil(AVUUID uu) +{ + memset(uu, 0, AV_UUID_LEN); +} + +#endif /* AVUTIL_UUID_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/version.h b/third_party/ffmpeg/uos/amd64/include/libavutil/version.h new file mode 100644 index 00000000..ee43526d --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/version.h @@ -0,0 +1,124 @@ +/* + * copyright (c) 2003 Fabrice Bellard + * + * 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 + */ + +/** + * @file + * @ingroup lavu + * Libavutil version macros + */ + +#ifndef AVUTIL_VERSION_H +#define AVUTIL_VERSION_H + +#include "macros.h" + +/** + * @addtogroup version_utils + * + * Useful to check and match library version in order to maintain + * backward compatibility. + * + * The FFmpeg libraries follow a versioning sheme very similar to + * Semantic Versioning (http://semver.org/) + * The difference is that the component called PATCH is called MICRO in FFmpeg + * and its value is reset to 100 instead of 0 to keep it above or equal to 100. + * Also we do not increase MICRO for every bugfix or change in git master. + * + * Prior to FFmpeg 3.2 point releases did not change any lib version number to + * avoid aliassing different git master checkouts. + * Starting with FFmpeg 3.2, the released library versions will occupy + * a separate MAJOR.MINOR that is not used on the master development branch. + * That is if we branch a release of master 55.10.123 we will bump to 55.11.100 + * for the release and master will continue at 55.12.100 after it. Each new + * point release will then bump the MICRO improving the usefulness of the lib + * versions. + * + * @{ + */ + +#define AV_VERSION_INT(a, b, c) ((a)<<16 | (b)<<8 | (c)) +#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c +#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) + +/** + * Extract version components from the full ::AV_VERSION_INT int as returned + * by functions like ::avformat_version() and ::avcodec_version() + */ +#define AV_VERSION_MAJOR(a) ((a) >> 16) +#define AV_VERSION_MINOR(a) (((a) & 0x00FF00) >> 8) +#define AV_VERSION_MICRO(a) ((a) & 0xFF) + +/** + * @} + */ + +/** + * @defgroup lavu_ver Version and Build diagnostics + * + * Macros and function useful to check at compiletime and at runtime + * which version of libavutil is in use. + * + * @{ + */ + +#define LIBAVUTIL_VERSION_MAJOR 57 +#define LIBAVUTIL_VERSION_MINOR 32 +#define LIBAVUTIL_VERSION_MICRO 101 + +#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ + LIBAVUTIL_VERSION_MINOR, \ + LIBAVUTIL_VERSION_MICRO) +#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ + LIBAVUTIL_VERSION_MINOR, \ + LIBAVUTIL_VERSION_MICRO) +#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT + +#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) + +/** + * @defgroup lavu_depr_guards Deprecation Guards + * FF_API_* defines may be placed below to indicate public API that will be + * dropped at a future version bump. The defines themselves are not part of + * the public API and may change, break or disappear at any time. + * + * @note, when bumping the major version it is recommended to manually + * disable each FF_API_* in its own commit instead of disabling them all + * at once through the bump. This improves the git bisect-ability of the change. + * + * @{ + */ + +#define FF_API_D2STR (LIBAVUTIL_VERSION_MAJOR < 58) +#define FF_API_DECLARE_ALIGNED (LIBAVUTIL_VERSION_MAJOR < 58) +#define FF_API_COLORSPACE_NAME (LIBAVUTIL_VERSION_MAJOR < 58) +#define FF_API_AV_MALLOCZ_ARRAY (LIBAVUTIL_VERSION_MAJOR < 58) +#define FF_API_FIFO_PEEK2 (LIBAVUTIL_VERSION_MAJOR < 58) +#define FF_API_FIFO_OLD_API (LIBAVUTIL_VERSION_MAJOR < 58) +#define FF_API_XVMC (LIBAVUTIL_VERSION_MAJOR < 58) +#define FF_API_OLD_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_MAJOR < 58) +#define FF_API_AV_FOPEN_UTF8 (LIBAVUTIL_VERSION_MAJOR < 58) +#define FF_API_PKT_DURATION (LIBAVUTIL_VERSION_MAJOR < 58) + +/** + * @} + * @} + */ + +#endif /* AVUTIL_VERSION_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/video_enc_params.h b/third_party/ffmpeg/uos/amd64/include/libavutil/video_enc_params.h new file mode 100644 index 00000000..fc0c3bc1 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/video_enc_params.h @@ -0,0 +1,171 @@ +/* + * 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 AVUTIL_VIDEO_ENC_PARAMS_H +#define AVUTIL_VIDEO_ENC_PARAMS_H + +#include +#include + +#include "libavutil/avassert.h" +#include "libavutil/frame.h" + +enum AVVideoEncParamsType { + AV_VIDEO_ENC_PARAMS_NONE = -1, + /** + * VP9 stores: + * - per-frame base (luma AC) quantizer index, exported as AVVideoEncParams.qp + * - deltas for luma DC, chroma AC and chroma DC, exported in the + * corresponding entries in AVVideoEncParams.delta_qp + * - per-segment delta, exported as for each block as AVVideoBlockParams.delta_qp + * + * To compute the resulting quantizer index for a block: + * - for luma AC, add the base qp and the per-block delta_qp, saturating to + * unsigned 8-bit. + * - for luma DC and chroma AC/DC, add the corresponding + * AVVideoBlockParams.delta_qp to the luma AC index, again saturating to + * unsigned 8-bit. + */ + AV_VIDEO_ENC_PARAMS_VP9, + + /** + * H.264 stores: + * - in PPS (per-picture): + * * initial QP_Y (luma) value, exported as AVVideoEncParams.qp + * * delta(s) for chroma QP values (same for both, or each separately), + * exported as in the corresponding entries in AVVideoEncParams.delta_qp + * - per-slice QP delta, not exported directly, added to the per-MB value + * - per-MB delta; not exported directly; the final per-MB quantizer + * parameter - QP_Y - minus the value in AVVideoEncParams.qp is exported + * as AVVideoBlockParams.qp_delta. + */ + AV_VIDEO_ENC_PARAMS_H264, + + /* + * MPEG-2-compatible quantizer. + * + * Summing the frame-level qp with the per-block delta_qp gives the + * resulting quantizer for the block. + */ + AV_VIDEO_ENC_PARAMS_MPEG2, +}; + +/** + * Video encoding parameters for a given frame. This struct is allocated along + * with an optional array of per-block AVVideoBlockParams descriptors. + * Must be allocated with av_video_enc_params_alloc(). + */ +typedef struct AVVideoEncParams { + /** + * Number of blocks in the array. + * + * May be 0, in which case no per-block information is present. In this case + * the values of blocks_offset / block_size are unspecified and should not + * be accessed. + */ + unsigned int nb_blocks; + /** + * Offset in bytes from the beginning of this structure at which the array + * of blocks starts. + */ + size_t blocks_offset; + /* + * Size of each block in bytes. May not match sizeof(AVVideoBlockParams). + */ + size_t block_size; + + /** + * Type of the parameters (the codec they are used with). + */ + enum AVVideoEncParamsType type; + + /** + * Base quantisation parameter for the frame. The final quantiser for a + * given block in a given plane is obtained from this value, possibly + * combined with {@code delta_qp} and the per-block delta in a manner + * documented for each type. + */ + int32_t qp; + + /** + * Quantisation parameter offset from the base (per-frame) qp for a given + * plane (first index) and AC/DC coefficients (second index). + */ + int32_t delta_qp[4][2]; +} AVVideoEncParams; + +/** + * Data structure for storing block-level encoding information. + * It is allocated as a part of AVVideoEncParams and should be retrieved with + * av_video_enc_params_block(). + * + * sizeof(AVVideoBlockParams) is not a part of the ABI and new fields may be + * added to it. + */ +typedef struct AVVideoBlockParams { + /** + * Distance in luma pixels from the top-left corner of the visible frame + * to the top-left corner of the block. + * Can be negative if top/right padding is present on the coded frame. + */ + int src_x, src_y; + /** + * Width and height of the block in luma pixels. + */ + int w, h; + + /** + * Difference between this block's final quantization parameter and the + * corresponding per-frame value. + */ + int32_t delta_qp; +} AVVideoBlockParams; + +/* + * Get the block at the specified {@code idx}. Must be between 0 and nb_blocks. + */ +static av_always_inline AVVideoBlockParams* +av_video_enc_params_block(AVVideoEncParams *par, unsigned int idx) +{ + av_assert0(idx < par->nb_blocks); + return (AVVideoBlockParams *)((uint8_t *)par + par->blocks_offset + + idx * par->block_size); +} + +/** + * Allocates memory for AVVideoEncParams of the given type, plus an array of + * {@code nb_blocks} AVVideoBlockParams and initializes the variables. Can be + * freed with a normal av_free() call. + * + * @param out_size if non-NULL, the size in bytes of the resulting data array is + * written here. + */ +AVVideoEncParams *av_video_enc_params_alloc(enum AVVideoEncParamsType type, + unsigned int nb_blocks, size_t *out_size); + +/** + * Allocates memory for AVEncodeInfoFrame plus an array of + * {@code nb_blocks} AVEncodeInfoBlock in the given AVFrame {@code frame} + * as AVFrameSideData of type AV_FRAME_DATA_VIDEO_ENC_PARAMS + * and initializes the variables. + */ +AVVideoEncParams* +av_video_enc_params_create_side_data(AVFrame *frame, enum AVVideoEncParamsType type, + unsigned int nb_blocks); + +#endif /* AVUTIL_VIDEO_ENC_PARAMS_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libavutil/xtea.h b/third_party/ffmpeg/uos/amd64/include/libavutil/xtea.h new file mode 100644 index 00000000..735427c1 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libavutil/xtea.h @@ -0,0 +1,94 @@ +/* + * A 32-bit implementation of the XTEA algorithm + * Copyright (c) 2012 Samuel Pitoiset + * + * 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 AVUTIL_XTEA_H +#define AVUTIL_XTEA_H + +#include + +/** + * @file + * @brief Public header for libavutil XTEA algorithm + * @defgroup lavu_xtea XTEA + * @ingroup lavu_crypto + * @{ + */ + +typedef struct AVXTEA { + uint32_t key[16]; +} AVXTEA; + +/** + * Allocate an AVXTEA context. + */ +AVXTEA *av_xtea_alloc(void); + +/** + * Initialize an AVXTEA context. + * + * @param ctx an AVXTEA context + * @param key a key of 16 bytes used for encryption/decryption, + * interpreted as big endian 32 bit numbers + */ +void av_xtea_init(struct AVXTEA *ctx, const uint8_t key[16]); + +/** + * Initialize an AVXTEA context. + * + * @param ctx an AVXTEA context + * @param key a key of 16 bytes used for encryption/decryption, + * interpreted as little endian 32 bit numbers + */ +void av_xtea_le_init(struct AVXTEA *ctx, const uint8_t key[16]); + +/** + * Encrypt or decrypt a buffer using a previously initialized context, + * in big endian format. + * + * @param ctx an AVXTEA context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 8 byte blocks + * @param iv initialization vector for CBC mode, if NULL then ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_xtea_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src, + int count, uint8_t *iv, int decrypt); + +/** + * Encrypt or decrypt a buffer using a previously initialized context, + * in little endian format. + * + * @param ctx an AVXTEA context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 8 byte blocks + * @param iv initialization vector for CBC mode, if NULL then ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_xtea_le_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src, + int count, uint8_t *iv, int decrypt); + +/** + * @} + */ + +#endif /* AVUTIL_XTEA_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libswresample/swresample.h b/third_party/ffmpeg/uos/amd64/include/libswresample/swresample.h new file mode 100644 index 00000000..26d42fab --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libswresample/swresample.h @@ -0,0 +1,650 @@ +/* + * Copyright (C) 2011-2013 Michael Niedermayer (michaelni@gmx.at) + * + * This file is part of libswresample + * + * libswresample 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. + * + * libswresample 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 libswresample; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef SWRESAMPLE_SWRESAMPLE_H +#define SWRESAMPLE_SWRESAMPLE_H + +/** + * @file + * @ingroup lswr + * libswresample public header + */ + +/** + * @defgroup lswr libswresample + * @{ + * + * Audio resampling, sample format conversion and mixing library. + * + * Interaction with lswr is done through SwrContext, which is + * allocated with swr_alloc() or swr_alloc_set_opts2(). It is opaque, so all parameters + * must be set with the @ref avoptions API. + * + * The first thing you will need to do in order to use lswr is to allocate + * SwrContext. This can be done with swr_alloc() or swr_alloc_set_opts2(). If you + * are using the former, you must set options through the @ref avoptions API. + * The latter function provides the same feature, but it allows you to set some + * common options in the same statement. + * + * For example the following code will setup conversion from planar float sample + * format to interleaved signed 16-bit integer, downsampling from 48kHz to + * 44.1kHz and downmixing from 5.1 channels to stereo (using the default mixing + * matrix). This is using the swr_alloc() function. + * @code + * SwrContext *swr = swr_alloc(); + * av_opt_set_channel_layout(swr, "in_channel_layout", AV_CH_LAYOUT_5POINT1, 0); + * av_opt_set_channel_layout(swr, "out_channel_layout", AV_CH_LAYOUT_STEREO, 0); + * av_opt_set_int(swr, "in_sample_rate", 48000, 0); + * av_opt_set_int(swr, "out_sample_rate", 44100, 0); + * av_opt_set_sample_fmt(swr, "in_sample_fmt", AV_SAMPLE_FMT_FLTP, 0); + * av_opt_set_sample_fmt(swr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0); + * @endcode + * + * The same job can be done using swr_alloc_set_opts2() as well: + * @code + * SwrContext *swr = NULL; + * int ret = swr_alloc_set_opts2(&swr, // we're allocating a new context + * &(AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO, // out_ch_layout + * AV_SAMPLE_FMT_S16, // out_sample_fmt + * 44100, // out_sample_rate + * &(AVChannelLayout)AV_CHANNEL_LAYOUT_5POINT1, // in_ch_layout + * AV_SAMPLE_FMT_FLTP, // in_sample_fmt + * 48000, // in_sample_rate + * 0, // log_offset + * NULL); // log_ctx + * @endcode + * + * Once all values have been set, it must be initialized with swr_init(). If + * you need to change the conversion parameters, you can change the parameters + * using @ref AVOptions, as described above in the first example; or by using + * swr_alloc_set_opts2(), but with the first argument the allocated context. + * You must then call swr_init() again. + * + * The conversion itself is done by repeatedly calling swr_convert(). + * Note that the samples may get buffered in swr if you provide insufficient + * output space or if sample rate conversion is done, which requires "future" + * samples. Samples that do not require future input can be retrieved at any + * time by using swr_convert() (in_count can be set to 0). + * At the end of conversion the resampling buffer can be flushed by calling + * swr_convert() with NULL in and 0 in_count. + * + * The samples used in the conversion process can be managed with the libavutil + * @ref lavu_sampmanip "samples manipulation" API, including av_samples_alloc() + * function used in the following example. + * + * The delay between input and output, can at any time be found by using + * swr_get_delay(). + * + * The following code demonstrates the conversion loop assuming the parameters + * from above and caller-defined functions get_input() and handle_output(): + * @code + * uint8_t **input; + * int in_samples; + * + * while (get_input(&input, &in_samples)) { + * uint8_t *output; + * int out_samples = av_rescale_rnd(swr_get_delay(swr, 48000) + + * in_samples, 44100, 48000, AV_ROUND_UP); + * av_samples_alloc(&output, NULL, 2, out_samples, + * AV_SAMPLE_FMT_S16, 0); + * out_samples = swr_convert(swr, &output, out_samples, + * input, in_samples); + * handle_output(output, out_samples); + * av_freep(&output); + * } + * @endcode + * + * When the conversion is finished, the conversion + * context and everything associated with it must be freed with swr_free(). + * A swr_close() function is also available, but it exists mainly for + * compatibility with libavresample, and is not required to be called. + * + * There will be no memory leak if the data is not completely flushed before + * swr_free(). + */ + +#include +#include "libavutil/channel_layout.h" +#include "libavutil/frame.h" +#include "libavutil/samplefmt.h" + +#include "libswresample/version_major.h" +#ifndef HAVE_AV_CONFIG_H +/* When included as part of the ffmpeg build, only include the major version + * to avoid unnecessary rebuilds. When included externally, keep including + * the full version information. */ +#include "libswresample/version.h" +#endif + +/** + * @name Option constants + * These constants are used for the @ref avoptions interface for lswr. + * @{ + * + */ + +#define SWR_FLAG_RESAMPLE 1 ///< Force resampling even if equal sample rate +//TODO use int resample ? +//long term TODO can we enable this dynamically? + +/** Dithering algorithms */ +enum SwrDitherType { + SWR_DITHER_NONE = 0, + SWR_DITHER_RECTANGULAR, + SWR_DITHER_TRIANGULAR, + SWR_DITHER_TRIANGULAR_HIGHPASS, + + SWR_DITHER_NS = 64, ///< not part of API/ABI + SWR_DITHER_NS_LIPSHITZ, + SWR_DITHER_NS_F_WEIGHTED, + SWR_DITHER_NS_MODIFIED_E_WEIGHTED, + SWR_DITHER_NS_IMPROVED_E_WEIGHTED, + SWR_DITHER_NS_SHIBATA, + SWR_DITHER_NS_LOW_SHIBATA, + SWR_DITHER_NS_HIGH_SHIBATA, + SWR_DITHER_NB, ///< not part of API/ABI +}; + +/** Resampling Engines */ +enum SwrEngine { + SWR_ENGINE_SWR, /**< SW Resampler */ + SWR_ENGINE_SOXR, /**< SoX Resampler */ + SWR_ENGINE_NB, ///< not part of API/ABI +}; + +/** Resampling Filter Types */ +enum SwrFilterType { + SWR_FILTER_TYPE_CUBIC, /**< Cubic */ + SWR_FILTER_TYPE_BLACKMAN_NUTTALL, /**< Blackman Nuttall windowed sinc */ + SWR_FILTER_TYPE_KAISER, /**< Kaiser windowed sinc */ +}; + +/** + * @} + */ + +/** + * The libswresample context. Unlike libavcodec and libavformat, this structure + * is opaque. This means that if you would like to set options, you must use + * the @ref avoptions API and cannot directly set values to members of the + * structure. + */ +typedef struct SwrContext SwrContext; + +/** + * Get the AVClass for SwrContext. It can be used in combination with + * AV_OPT_SEARCH_FAKE_OBJ for examining options. + * + * @see av_opt_find(). + * @return the AVClass of SwrContext + */ +const AVClass *swr_get_class(void); + +/** + * @name SwrContext constructor functions + * @{ + */ + +/** + * Allocate SwrContext. + * + * If you use this function you will need to set the parameters (manually or + * with swr_alloc_set_opts2()) before calling swr_init(). + * + * @see swr_alloc_set_opts2(), swr_init(), swr_free() + * @return NULL on error, allocated context otherwise + */ +struct SwrContext *swr_alloc(void); + +/** + * Initialize context after user parameters have been set. + * @note The context must be configured using the AVOption API. + * + * @see av_opt_set_int() + * @see av_opt_set_dict() + * + * @param[in,out] s Swr context to initialize + * @return AVERROR error code in case of failure. + */ +int swr_init(struct SwrContext *s); + +/** + * Check whether an swr context has been initialized or not. + * + * @param[in] s Swr context to check + * @see swr_init() + * @return positive if it has been initialized, 0 if not initialized + */ +int swr_is_initialized(struct SwrContext *s); + +#if FF_API_OLD_CHANNEL_LAYOUT +/** + * Allocate SwrContext if needed and set/reset common parameters. + * + * This function does not require s to be allocated with swr_alloc(). On the + * other hand, swr_alloc() can use swr_alloc_set_opts() to set the parameters + * on the allocated context. + * + * @param s existing Swr context if available, or NULL if not + * @param out_ch_layout output channel layout (AV_CH_LAYOUT_*) + * @param out_sample_fmt output sample format (AV_SAMPLE_FMT_*). + * @param out_sample_rate output sample rate (frequency in Hz) + * @param in_ch_layout input channel layout (AV_CH_LAYOUT_*) + * @param in_sample_fmt input sample format (AV_SAMPLE_FMT_*). + * @param in_sample_rate input sample rate (frequency in Hz) + * @param log_offset logging level offset + * @param log_ctx parent logging context, can be NULL + * + * @see swr_init(), swr_free() + * @return NULL on error, allocated context otherwise + * @deprecated use @ref swr_alloc_set_opts2() + */ +attribute_deprecated +struct SwrContext *swr_alloc_set_opts(struct SwrContext *s, + int64_t out_ch_layout, enum AVSampleFormat out_sample_fmt, int out_sample_rate, + int64_t in_ch_layout, enum AVSampleFormat in_sample_fmt, int in_sample_rate, + int log_offset, void *log_ctx); +#endif + +/** + * Allocate SwrContext if needed and set/reset common parameters. + * + * This function does not require *ps to be allocated with swr_alloc(). On the + * other hand, swr_alloc() can use swr_alloc_set_opts2() to set the parameters + * on the allocated context. + * + * @param ps Pointer to an existing Swr context if available, or to NULL if not. + * On success, *ps will be set to the allocated context. + * @param out_ch_layout output channel layout (e.g. AV_CHANNEL_LAYOUT_*) + * @param out_sample_fmt output sample format (AV_SAMPLE_FMT_*). + * @param out_sample_rate output sample rate (frequency in Hz) + * @param in_ch_layout input channel layout (e.g. AV_CHANNEL_LAYOUT_*) + * @param in_sample_fmt input sample format (AV_SAMPLE_FMT_*). + * @param in_sample_rate input sample rate (frequency in Hz) + * @param log_offset logging level offset + * @param log_ctx parent logging context, can be NULL + * + * @see swr_init(), swr_free() + * @return 0 on success, a negative AVERROR code on error. + * On error, the Swr context is freed and *ps set to NULL. + */ +int swr_alloc_set_opts2(struct SwrContext **ps, + AVChannelLayout *out_ch_layout, enum AVSampleFormat out_sample_fmt, int out_sample_rate, + AVChannelLayout *in_ch_layout, enum AVSampleFormat in_sample_fmt, int in_sample_rate, + int log_offset, void *log_ctx); +/** + * @} + * + * @name SwrContext destructor functions + * @{ + */ + +/** + * Free the given SwrContext and set the pointer to NULL. + * + * @param[in] s a pointer to a pointer to Swr context + */ +void swr_free(struct SwrContext **s); + +/** + * Closes the context so that swr_is_initialized() returns 0. + * + * The context can be brought back to life by running swr_init(), + * swr_init() can also be used without swr_close(). + * This function is mainly provided for simplifying the usecase + * where one tries to support libavresample and libswresample. + * + * @param[in,out] s Swr context to be closed + */ +void swr_close(struct SwrContext *s); + +/** + * @} + * + * @name Core conversion functions + * @{ + */ + +/** Convert audio. + * + * in and in_count can be set to 0 to flush the last few samples out at the + * end. + * + * If more input is provided than output space, then the input will be buffered. + * You can avoid this buffering by using swr_get_out_samples() to retrieve an + * upper bound on the required number of output samples for the given number of + * input samples. Conversion will run directly without copying whenever possible. + * + * @param s allocated Swr context, with parameters set + * @param out output buffers, only the first one need be set in case of packed audio + * @param out_count amount of space available for output in samples per channel + * @param in input buffers, only the first one need to be set in case of packed audio + * @param in_count number of input samples available in one channel + * + * @return number of samples output per channel, negative value on error + */ +int swr_convert(struct SwrContext *s, uint8_t **out, int out_count, + const uint8_t **in , int in_count); + +/** + * Convert the next timestamp from input to output + * timestamps are in 1/(in_sample_rate * out_sample_rate) units. + * + * @note There are 2 slightly differently behaving modes. + * @li When automatic timestamp compensation is not used, (min_compensation >= FLT_MAX) + * in this case timestamps will be passed through with delays compensated + * @li When automatic timestamp compensation is used, (min_compensation < FLT_MAX) + * in this case the output timestamps will match output sample numbers. + * See ffmpeg-resampler(1) for the two modes of compensation. + * + * @param s[in] initialized Swr context + * @param pts[in] timestamp for the next input sample, INT64_MIN if unknown + * @see swr_set_compensation(), swr_drop_output(), and swr_inject_silence() are + * function used internally for timestamp compensation. + * @return the output timestamp for the next output sample + */ +int64_t swr_next_pts(struct SwrContext *s, int64_t pts); + +/** + * @} + * + * @name Low-level option setting functions + * These functons provide a means to set low-level options that is not possible + * with the AVOption API. + * @{ + */ + +/** + * Activate resampling compensation ("soft" compensation). This function is + * internally called when needed in swr_next_pts(). + * + * @param[in,out] s allocated Swr context. If it is not initialized, + * or SWR_FLAG_RESAMPLE is not set, swr_init() is + * called with the flag set. + * @param[in] sample_delta delta in PTS per sample + * @param[in] compensation_distance number of samples to compensate for + * @return >= 0 on success, AVERROR error codes if: + * @li @c s is NULL, + * @li @c compensation_distance is less than 0, + * @li @c compensation_distance is 0 but sample_delta is not, + * @li compensation unsupported by resampler, or + * @li swr_init() fails when called. + */ +int swr_set_compensation(struct SwrContext *s, int sample_delta, int compensation_distance); + +/** + * Set a customized input channel mapping. + * + * @param[in,out] s allocated Swr context, not yet initialized + * @param[in] channel_map customized input channel mapping (array of channel + * indexes, -1 for a muted channel) + * @return >= 0 on success, or AVERROR error code in case of failure. + */ +int swr_set_channel_mapping(struct SwrContext *s, const int *channel_map); + +#if FF_API_OLD_CHANNEL_LAYOUT +/** + * Generate a channel mixing matrix. + * + * This function is the one used internally by libswresample for building the + * default mixing matrix. It is made public just as a utility function for + * building custom matrices. + * + * @param in_layout input channel layout + * @param out_layout output channel layout + * @param center_mix_level mix level for the center channel + * @param surround_mix_level mix level for the surround channel(s) + * @param lfe_mix_level mix level for the low-frequency effects channel + * @param rematrix_maxval if 1.0, coefficients will be normalized to prevent + * overflow. if INT_MAX, coefficients will not be + * normalized. + * @param[out] matrix mixing coefficients; matrix[i + stride * o] is + * the weight of input channel i in output channel o. + * @param stride distance between adjacent input channels in the + * matrix array + * @param matrix_encoding matrixed stereo downmix mode (e.g. dplii) + * @param log_ctx parent logging context, can be NULL + * @return 0 on success, negative AVERROR code on failure + * @deprecated use @ref swr_build_matrix2() + */ +attribute_deprecated +int swr_build_matrix(uint64_t in_layout, uint64_t out_layout, + double center_mix_level, double surround_mix_level, + double lfe_mix_level, double rematrix_maxval, + double rematrix_volume, double *matrix, + int stride, enum AVMatrixEncoding matrix_encoding, + void *log_ctx); +#endif + +/** + * Generate a channel mixing matrix. + * + * This function is the one used internally by libswresample for building the + * default mixing matrix. It is made public just as a utility function for + * building custom matrices. + * + * @param in_layout input channel layout + * @param out_layout output channel layout + * @param center_mix_level mix level for the center channel + * @param surround_mix_level mix level for the surround channel(s) + * @param lfe_mix_level mix level for the low-frequency effects channel + * @param rematrix_maxval if 1.0, coefficients will be normalized to prevent + * overflow. if INT_MAX, coefficients will not be + * normalized. + * @param[out] matrix mixing coefficients; matrix[i + stride * o] is + * the weight of input channel i in output channel o. + * @param stride distance between adjacent input channels in the + * matrix array + * @param matrix_encoding matrixed stereo downmix mode (e.g. dplii) + * @param log_ctx parent logging context, can be NULL + * @return 0 on success, negative AVERROR code on failure + */ +int swr_build_matrix2(const AVChannelLayout *in_layout, const AVChannelLayout *out_layout, + double center_mix_level, double surround_mix_level, + double lfe_mix_level, double maxval, + double rematrix_volume, double *matrix, + ptrdiff_t stride, enum AVMatrixEncoding matrix_encoding, + void *log_context); + +/** + * Set a customized remix matrix. + * + * @param s allocated Swr context, not yet initialized + * @param matrix remix coefficients; matrix[i + stride * o] is + * the weight of input channel i in output channel o + * @param stride offset between lines of the matrix + * @return >= 0 on success, or AVERROR error code in case of failure. + */ +int swr_set_matrix(struct SwrContext *s, const double *matrix, int stride); + +/** + * @} + * + * @name Sample handling functions + * @{ + */ + +/** + * Drops the specified number of output samples. + * + * This function, along with swr_inject_silence(), is called by swr_next_pts() + * if needed for "hard" compensation. + * + * @param s allocated Swr context + * @param count number of samples to be dropped + * + * @return >= 0 on success, or a negative AVERROR code on failure + */ +int swr_drop_output(struct SwrContext *s, int count); + +/** + * Injects the specified number of silence samples. + * + * This function, along with swr_drop_output(), is called by swr_next_pts() + * if needed for "hard" compensation. + * + * @param s allocated Swr context + * @param count number of samples to be dropped + * + * @return >= 0 on success, or a negative AVERROR code on failure + */ +int swr_inject_silence(struct SwrContext *s, int count); + +/** + * Gets the delay the next input sample will experience relative to the next output sample. + * + * Swresample can buffer data if more input has been provided than available + * output space, also converting between sample rates needs a delay. + * This function returns the sum of all such delays. + * The exact delay is not necessarily an integer value in either input or + * output sample rate. Especially when downsampling by a large value, the + * output sample rate may be a poor choice to represent the delay, similarly + * for upsampling and the input sample rate. + * + * @param s swr context + * @param base timebase in which the returned delay will be: + * @li if it's set to 1 the returned delay is in seconds + * @li if it's set to 1000 the returned delay is in milliseconds + * @li if it's set to the input sample rate then the returned + * delay is in input samples + * @li if it's set to the output sample rate then the returned + * delay is in output samples + * @li if it's the least common multiple of in_sample_rate and + * out_sample_rate then an exact rounding-free delay will be + * returned + * @returns the delay in 1 / @c base units. + */ +int64_t swr_get_delay(struct SwrContext *s, int64_t base); + +/** + * Find an upper bound on the number of samples that the next swr_convert + * call will output, if called with in_samples of input samples. This + * depends on the internal state, and anything changing the internal state + * (like further swr_convert() calls) will may change the number of samples + * swr_get_out_samples() returns for the same number of input samples. + * + * @param in_samples number of input samples. + * @note any call to swr_inject_silence(), swr_convert(), swr_next_pts() + * or swr_set_compensation() invalidates this limit + * @note it is recommended to pass the correct available buffer size + * to all functions like swr_convert() even if swr_get_out_samples() + * indicates that less would be used. + * @returns an upper bound on the number of samples that the next swr_convert + * will output or a negative value to indicate an error + */ +int swr_get_out_samples(struct SwrContext *s, int in_samples); + +/** + * @} + * + * @name Configuration accessors + * @{ + */ + +/** + * Return the @ref LIBSWRESAMPLE_VERSION_INT constant. + * + * This is useful to check if the build-time libswresample has the same version + * as the run-time one. + * + * @returns the unsigned int-typed version + */ +unsigned swresample_version(void); + +/** + * Return the swr build-time configuration. + * + * @returns the build-time @c ./configure flags + */ +const char *swresample_configuration(void); + +/** + * Return the swr license. + * + * @returns the license of libswresample, determined at build-time + */ +const char *swresample_license(void); + +/** + * @} + * + * @name AVFrame based API + * @{ + */ + +/** + * Convert the samples in the input AVFrame and write them to the output AVFrame. + * + * Input and output AVFrames must have channel_layout, sample_rate and format set. + * + * If the output AVFrame does not have the data pointers allocated the nb_samples + * field will be set using av_frame_get_buffer() + * is called to allocate the frame. + * + * The output AVFrame can be NULL or have fewer allocated samples than required. + * In this case, any remaining samples not written to the output will be added + * to an internal FIFO buffer, to be returned at the next call to this function + * or to swr_convert(). + * + * If converting sample rate, there may be data remaining in the internal + * resampling delay buffer. swr_get_delay() tells the number of + * remaining samples. To get this data as output, call this function or + * swr_convert() with NULL input. + * + * If the SwrContext configuration does not match the output and + * input AVFrame settings the conversion does not take place and depending on + * which AVFrame is not matching AVERROR_OUTPUT_CHANGED, AVERROR_INPUT_CHANGED + * or the result of a bitwise-OR of them is returned. + * + * @see swr_delay() + * @see swr_convert() + * @see swr_get_delay() + * + * @param swr audio resample context + * @param output output AVFrame + * @param input input AVFrame + * @return 0 on success, AVERROR on failure or nonmatching + * configuration. + */ +int swr_convert_frame(SwrContext *swr, + AVFrame *output, const AVFrame *input); + +/** + * Configure or reconfigure the SwrContext using the information + * provided by the AVFrames. + * + * The original resampling context is reset even on failure. + * The function calls swr_close() internally if the context is open. + * + * @see swr_close(); + * + * @param swr audio resample context + * @param output output AVFrame + * @param input input AVFrame + * @return 0 on success, AVERROR on failure. + */ +int swr_config_frame(SwrContext *swr, const AVFrame *out, const AVFrame *in); + +/** + * @} + * @} + */ + +#endif /* SWRESAMPLE_SWRESAMPLE_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libswresample/version.h b/third_party/ffmpeg/uos/amd64/include/libswresample/version.h new file mode 100644 index 00000000..66bac2fa --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libswresample/version.h @@ -0,0 +1,46 @@ +/* + * Version macros. + * + * This file is part of libswresample + * + * libswresample 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. + * + * libswresample 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 libswresample; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef SWRESAMPLE_VERSION_H +#define SWRESAMPLE_VERSION_H + +/** + * @file + * Libswresample version macros + */ + +#include "libavutil/version.h" + +#include "version_major.h" + +#define LIBSWRESAMPLE_VERSION_MINOR 8 +#define LIBSWRESAMPLE_VERSION_MICRO 100 + +#define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \ + LIBSWRESAMPLE_VERSION_MINOR, \ + LIBSWRESAMPLE_VERSION_MICRO) +#define LIBSWRESAMPLE_VERSION AV_VERSION(LIBSWRESAMPLE_VERSION_MAJOR, \ + LIBSWRESAMPLE_VERSION_MINOR, \ + LIBSWRESAMPLE_VERSION_MICRO) +#define LIBSWRESAMPLE_BUILD LIBSWRESAMPLE_VERSION_INT + +#define LIBSWRESAMPLE_IDENT "SwR" AV_STRINGIFY(LIBSWRESAMPLE_VERSION) + +#endif /* SWRESAMPLE_VERSION_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libswresample/version_major.h b/third_party/ffmpeg/uos/amd64/include/libswresample/version_major.h new file mode 100644 index 00000000..7f265c20 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libswresample/version_major.h @@ -0,0 +1,31 @@ +/* + * Version macros. + * + * This file is part of libswresample + * + * libswresample 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. + * + * libswresample 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 libswresample; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef SWRESAMPLE_VERSION_MAJOR_H +#define SWRESAMPLE_VERSION_MAJOR_H + +/** + * @file + * Libswresample version macros + */ + +#define LIBSWRESAMPLE_VERSION_MAJOR 4 + +#endif /* SWRESAMPLE_VERSION_MAJOR_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libswscale/swscale.h b/third_party/ffmpeg/uos/amd64/include/libswscale/swscale.h new file mode 100644 index 00000000..3ebf7c69 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libswscale/swscale.h @@ -0,0 +1,431 @@ +/* + * Copyright (C) 2001-2011 Michael Niedermayer + * + * 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 SWSCALE_SWSCALE_H +#define SWSCALE_SWSCALE_H + +/** + * @file + * @ingroup libsws + * external API header + */ + +#include + +#include "libavutil/avutil.h" +#include "libavutil/frame.h" +#include "libavutil/log.h" +#include "libavutil/pixfmt.h" +#include "version_major.h" +#ifndef HAVE_AV_CONFIG_H +/* When included as part of the ffmpeg build, only include the major version + * to avoid unnecessary rebuilds. When included externally, keep including + * the full version information. */ +#include "version.h" +#endif + +/** + * @defgroup libsws libswscale + * Color conversion and scaling library. + * + * @{ + * + * Return the LIBSWSCALE_VERSION_INT constant. + */ +unsigned swscale_version(void); + +/** + * Return the libswscale build-time configuration. + */ +const char *swscale_configuration(void); + +/** + * Return the libswscale license. + */ +const char *swscale_license(void); + +/* values for the flags, the stuff on the command line is different */ +#define SWS_FAST_BILINEAR 1 +#define SWS_BILINEAR 2 +#define SWS_BICUBIC 4 +#define SWS_X 8 +#define SWS_POINT 0x10 +#define SWS_AREA 0x20 +#define SWS_BICUBLIN 0x40 +#define SWS_GAUSS 0x80 +#define SWS_SINC 0x100 +#define SWS_LANCZOS 0x200 +#define SWS_SPLINE 0x400 + +#define SWS_SRC_V_CHR_DROP_MASK 0x30000 +#define SWS_SRC_V_CHR_DROP_SHIFT 16 + +#define SWS_PARAM_DEFAULT 123456 + +#define SWS_PRINT_INFO 0x1000 + +//the following 3 flags are not completely implemented +//internal chrominance subsampling info +#define SWS_FULL_CHR_H_INT 0x2000 +//input subsampling info +#define SWS_FULL_CHR_H_INP 0x4000 +#define SWS_DIRECT_BGR 0x8000 +#define SWS_ACCURATE_RND 0x40000 +#define SWS_BITEXACT 0x80000 +#define SWS_ERROR_DIFFUSION 0x800000 + +#define SWS_MAX_REDUCE_CUTOFF 0.002 + +#define SWS_CS_ITU709 1 +#define SWS_CS_FCC 4 +#define SWS_CS_ITU601 5 +#define SWS_CS_ITU624 5 +#define SWS_CS_SMPTE170M 5 +#define SWS_CS_SMPTE240M 7 +#define SWS_CS_DEFAULT 5 +#define SWS_CS_BT2020 9 + +/** + * Return a pointer to yuv<->rgb coefficients for the given colorspace + * suitable for sws_setColorspaceDetails(). + * + * @param colorspace One of the SWS_CS_* macros. If invalid, + * SWS_CS_DEFAULT is used. + */ +const int *sws_getCoefficients(int colorspace); + +// when used for filters they must have an odd number of elements +// coeffs cannot be shared between vectors +typedef struct SwsVector { + double *coeff; ///< pointer to the list of coefficients + int length; ///< number of coefficients in the vector +} SwsVector; + +// vectors can be shared +typedef struct SwsFilter { + SwsVector *lumH; + SwsVector *lumV; + SwsVector *chrH; + SwsVector *chrV; +} SwsFilter; + +struct SwsContext; + +/** + * Return a positive value if pix_fmt is a supported input format, 0 + * otherwise. + */ +int sws_isSupportedInput(enum AVPixelFormat pix_fmt); + +/** + * Return a positive value if pix_fmt is a supported output format, 0 + * otherwise. + */ +int sws_isSupportedOutput(enum AVPixelFormat pix_fmt); + +/** + * @param[in] pix_fmt the pixel format + * @return a positive value if an endianness conversion for pix_fmt is + * supported, 0 otherwise. + */ +int sws_isSupportedEndiannessConversion(enum AVPixelFormat pix_fmt); + +/** + * Allocate an empty SwsContext. This must be filled and passed to + * sws_init_context(). For filling see AVOptions, options.c and + * sws_setColorspaceDetails(). + */ +struct SwsContext *sws_alloc_context(void); + +/** + * Initialize the swscaler context sws_context. + * + * @return zero or positive value on success, a negative value on + * error + */ +av_warn_unused_result +int sws_init_context(struct SwsContext *sws_context, SwsFilter *srcFilter, SwsFilter *dstFilter); + +/** + * Free the swscaler context swsContext. + * If swsContext is NULL, then does nothing. + */ +void sws_freeContext(struct SwsContext *swsContext); + +/** + * Allocate and return an SwsContext. You need it to perform + * scaling/conversion operations using sws_scale(). + * + * @param srcW the width of the source image + * @param srcH the height of the source image + * @param srcFormat the source image format + * @param dstW the width of the destination image + * @param dstH the height of the destination image + * @param dstFormat the destination image format + * @param flags specify which algorithm and options to use for rescaling + * @param param extra parameters to tune the used scaler + * For SWS_BICUBIC param[0] and [1] tune the shape of the basis + * function, param[0] tunes f(1) and param[1] f´(1) + * For SWS_GAUSS param[0] tunes the exponent and thus cutoff + * frequency + * For SWS_LANCZOS param[0] tunes the width of the window function + * @return a pointer to an allocated context, or NULL in case of error + * @note this function is to be removed after a saner alternative is + * written + */ +struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, + int dstW, int dstH, enum AVPixelFormat dstFormat, + int flags, SwsFilter *srcFilter, + SwsFilter *dstFilter, const double *param); + +/** + * Scale the image slice in srcSlice and put the resulting scaled + * slice in the image in dst. A slice is a sequence of consecutive + * rows in an image. + * + * Slices have to be provided in sequential order, either in + * top-bottom or bottom-top order. If slices are provided in + * non-sequential order the behavior of the function is undefined. + * + * @param c the scaling context previously created with + * sws_getContext() + * @param srcSlice the array containing the pointers to the planes of + * the source slice + * @param srcStride the array containing the strides for each plane of + * the source image + * @param srcSliceY the position in the source image of the slice to + * process, that is the number (counted starting from + * zero) in the image of the first row of the slice + * @param srcSliceH the height of the source slice, that is the number + * of rows in the slice + * @param dst the array containing the pointers to the planes of + * the destination image + * @param dstStride the array containing the strides for each plane of + * the destination image + * @return the height of the output slice + */ +int sws_scale(struct SwsContext *c, const uint8_t *const srcSlice[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]); + +/** + * Scale source data from src and write the output to dst. + * + * This is merely a convenience wrapper around + * - sws_frame_start() + * - sws_send_slice(0, src->height) + * - sws_receive_slice(0, dst->height) + * - sws_frame_end() + * + * @param dst The destination frame. See documentation for sws_frame_start() for + * more details. + * @param src The source frame. + * + * @return 0 on success, a negative AVERROR code on failure + */ +int sws_scale_frame(struct SwsContext *c, AVFrame *dst, const AVFrame *src); + +/** + * Initialize the scaling process for a given pair of source/destination frames. + * Must be called before any calls to sws_send_slice() and sws_receive_slice(). + * + * This function will retain references to src and dst, so they must both use + * refcounted buffers (if allocated by the caller, in case of dst). + * + * @param dst The destination frame. + * + * The data buffers may either be already allocated by the caller or + * left clear, in which case they will be allocated by the scaler. + * The latter may have performance advantages - e.g. in certain cases + * some output planes may be references to input planes, rather than + * copies. + * + * Output data will be written into this frame in successful + * sws_receive_slice() calls. + * @param src The source frame. The data buffers must be allocated, but the + * frame data does not have to be ready at this point. Data + * availability is then signalled by sws_send_slice(). + * @return 0 on success, a negative AVERROR code on failure + * + * @see sws_frame_end() + */ +int sws_frame_start(struct SwsContext *c, AVFrame *dst, const AVFrame *src); + +/** + * Finish the scaling process for a pair of source/destination frames previously + * submitted with sws_frame_start(). Must be called after all sws_send_slice() + * and sws_receive_slice() calls are done, before any new sws_frame_start() + * calls. + */ +void sws_frame_end(struct SwsContext *c); + +/** + * Indicate that a horizontal slice of input data is available in the source + * frame previously provided to sws_frame_start(). The slices may be provided in + * any order, but may not overlap. For vertically subsampled pixel formats, the + * slices must be aligned according to subsampling. + * + * @param slice_start first row of the slice + * @param slice_height number of rows in the slice + * + * @return a non-negative number on success, a negative AVERROR code on failure. + */ +int sws_send_slice(struct SwsContext *c, unsigned int slice_start, + unsigned int slice_height); + +/** + * Request a horizontal slice of the output data to be written into the frame + * previously provided to sws_frame_start(). + * + * @param slice_start first row of the slice; must be a multiple of + * sws_receive_slice_alignment() + * @param slice_height number of rows in the slice; must be a multiple of + * sws_receive_slice_alignment(), except for the last slice + * (i.e. when slice_start+slice_height is equal to output + * frame height) + * + * @return a non-negative number if the data was successfully written into the output + * AVERROR(EAGAIN) if more input data needs to be provided before the + * output can be produced + * another negative AVERROR code on other kinds of scaling failure + */ +int sws_receive_slice(struct SwsContext *c, unsigned int slice_start, + unsigned int slice_height); + +/** + * @return alignment required for output slices requested with sws_receive_slice(). + * Slice offsets and sizes passed to sws_receive_slice() must be + * multiples of the value returned from this function. + */ +unsigned int sws_receive_slice_alignment(const struct SwsContext *c); + +/** + * @param dstRange flag indicating the while-black range of the output (1=jpeg / 0=mpeg) + * @param srcRange flag indicating the while-black range of the input (1=jpeg / 0=mpeg) + * @param table the yuv2rgb coefficients describing the output yuv space, normally ff_yuv2rgb_coeffs[x] + * @param inv_table the yuv2rgb coefficients describing the input yuv space, normally ff_yuv2rgb_coeffs[x] + * @param brightness 16.16 fixed point brightness correction + * @param contrast 16.16 fixed point contrast correction + * @param saturation 16.16 fixed point saturation correction +#if LIBSWSCALE_VERSION_MAJOR > 6 + * @return negative error code on error, non negative otherwise +#else + * @return -1 if not supported +#endif + */ +int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], + int srcRange, const int table[4], int dstRange, + int brightness, int contrast, int saturation); + +/** +#if LIBSWSCALE_VERSION_MAJOR > 6 + * @return negative error code on error, non negative otherwise +#else + * @return -1 if not supported +#endif + */ +int sws_getColorspaceDetails(struct SwsContext *c, int **inv_table, + int *srcRange, int **table, int *dstRange, + int *brightness, int *contrast, int *saturation); + +/** + * Allocate and return an uninitialized vector with length coefficients. + */ +SwsVector *sws_allocVec(int length); + +/** + * Return a normalized Gaussian curve used to filter stuff + * quality = 3 is high quality, lower is lower quality. + */ +SwsVector *sws_getGaussianVec(double variance, double quality); + +/** + * Scale all the coefficients of a by the scalar value. + */ +void sws_scaleVec(SwsVector *a, double scalar); + +/** + * Scale all the coefficients of a so that their sum equals height. + */ +void sws_normalizeVec(SwsVector *a, double height); + +void sws_freeVec(SwsVector *a); + +SwsFilter *sws_getDefaultFilter(float lumaGBlur, float chromaGBlur, + float lumaSharpen, float chromaSharpen, + float chromaHShift, float chromaVShift, + int verbose); +void sws_freeFilter(SwsFilter *filter); + +/** + * Check if context can be reused, otherwise reallocate a new one. + * + * If context is NULL, just calls sws_getContext() to get a new + * context. Otherwise, checks if the parameters are the ones already + * saved in context. If that is the case, returns the current + * context. Otherwise, frees context and gets a new context with + * the new parameters. + * + * Be warned that srcFilter and dstFilter are not checked, they + * are assumed to remain the same. + */ +struct SwsContext *sws_getCachedContext(struct SwsContext *context, + int srcW, int srcH, enum AVPixelFormat srcFormat, + int dstW, int dstH, enum AVPixelFormat dstFormat, + int flags, SwsFilter *srcFilter, + SwsFilter *dstFilter, const double *param); + +/** + * Convert an 8-bit paletted frame into a frame with a color depth of 32 bits. + * + * The output frame will have the same packed format as the palette. + * + * @param src source frame buffer + * @param dst destination frame buffer + * @param num_pixels number of pixels to convert + * @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src + */ +void sws_convertPalette8ToPacked32(const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette); + +/** + * Convert an 8-bit paletted frame into a frame with a color depth of 24 bits. + * + * With the palette format "ABCD", the destination frame ends up with the format "ABC". + * + * @param src source frame buffer + * @param dst destination frame buffer + * @param num_pixels number of pixels to convert + * @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src + */ +void sws_convertPalette8ToPacked24(const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette); + +/** + * Get the AVClass for swsContext. It can be used in combination with + * AV_OPT_SEARCH_FAKE_OBJ for examining options. + * + * @see av_opt_find(). + */ +const AVClass *sws_get_class(void); + +/** + * @} + */ + +#endif /* SWSCALE_SWSCALE_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libswscale/version.h b/third_party/ffmpeg/uos/amd64/include/libswscale/version.h new file mode 100644 index 00000000..3193562d --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libswscale/version.h @@ -0,0 +1,44 @@ +/* + * 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 SWSCALE_VERSION_H +#define SWSCALE_VERSION_H + +/** + * @file + * swscale version macros + */ + +#include "libavutil/version.h" + +#include "version_major.h" + +#define LIBSWSCALE_VERSION_MINOR 8 +#define LIBSWSCALE_VERSION_MICRO 102 + +#define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \ + LIBSWSCALE_VERSION_MINOR, \ + LIBSWSCALE_VERSION_MICRO) +#define LIBSWSCALE_VERSION AV_VERSION(LIBSWSCALE_VERSION_MAJOR, \ + LIBSWSCALE_VERSION_MINOR, \ + LIBSWSCALE_VERSION_MICRO) +#define LIBSWSCALE_BUILD LIBSWSCALE_VERSION_INT + +#define LIBSWSCALE_IDENT "SwS" AV_STRINGIFY(LIBSWSCALE_VERSION) + +#endif /* SWSCALE_VERSION_H */ diff --git a/third_party/ffmpeg/uos/amd64/include/libswscale/version_major.h b/third_party/ffmpeg/uos/amd64/include/libswscale/version_major.h new file mode 100644 index 00000000..2f841878 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/include/libswscale/version_major.h @@ -0,0 +1,35 @@ +/* + * 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 SWSCALE_VERSION_MAJOR_H +#define SWSCALE_VERSION_MAJOR_H + +/** + * @file + * swscale version macros + */ + +#define LIBSWSCALE_VERSION_MAJOR 6 + +/** + * FF_API_* defines may be placed below to indicate public API that will be + * dropped at a future version bump. The defines themselves are not part of + * the public API and may change, break or disappear at any time. + */ + +#endif /* SWSCALE_VERSION_MAJOR_H */ diff --git a/third_party/ffmpeg/uos/amd64/lib/libavcodec.so b/third_party/ffmpeg/uos/amd64/lib/libavcodec.so new file mode 120000 index 00000000..38f95f00 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/lib/libavcodec.so @@ -0,0 +1 @@ +libavcodec.so.59.42.100 \ No newline at end of file diff --git a/third_party/ffmpeg/uos/amd64/lib/libavcodec.so.59 b/third_party/ffmpeg/uos/amd64/lib/libavcodec.so.59 new file mode 120000 index 00000000..38f95f00 --- /dev/null +++ b/third_party/ffmpeg/uos/amd64/lib/libavcodec.so.59 @@ -0,0 +1 @@ +libavcodec.so.59.42.100 \ No newline at end of file diff --git a/third_party/ffmpeg/uos/amd64/lib/libavcodec.so.59.42.100 b/third_party/ffmpeg/uos/amd64/lib/libavcodec.so.59.42.100 new file mode 100755 index 0000000000000000000000000000000000000000..61a00f2ab93063d71a6661c43a1dda12b100145a GIT binary patch literal 11856176 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

X3Be! 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

$CF)tTx|in88qtJj!<>h-8EKQ&)W^&_*Z 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 +08rM}xVns?2=08kbOs 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 ZzFG@PbDovO9i&yyU@)?q22jTHpp5SdVf?CI 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

X$P5mj2|KaX3IdKTg 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�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∈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

FQv$TSguNj~B|aNPKT_}ixZpWr)C^8HTa>>@*s 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

QfR&d%RbE^xCWC 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%0Ah)h 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ẳPn&E~{oRdj)#i94nGd!+&rbheCg)hEmXkLwZRj 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%0D!NEsQw}lqXNjX& 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⩔hi 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