├── .gitignore ├── OC └── XDXCaptureAVStreamEncodeMuxProject │ ├── XDXCaptureAVStreamEncodeMuxProject.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist │ └── XDXCaptureAVStreamEncodeMuxProject │ ├── 3rd │ ├── FFmpeg-iOS │ │ ├── include │ │ │ ├── libavcodec │ │ │ │ ├── ac3_parser.h │ │ │ │ ├── adts_parser.h │ │ │ │ ├── avcodec.h │ │ │ │ ├── avdct.h │ │ │ │ ├── avfft.h │ │ │ │ ├── d3d11va.h │ │ │ │ ├── dirac.h │ │ │ │ ├── dv_profile.h │ │ │ │ ├── dxva2.h │ │ │ │ ├── jni.h │ │ │ │ ├── mediacodec.h │ │ │ │ ├── qsv.h │ │ │ │ ├── vaapi.h │ │ │ │ ├── vdpau.h │ │ │ │ ├── version.h │ │ │ │ ├── videotoolbox.h │ │ │ │ ├── vorbis_parser.h │ │ │ │ └── xvmc.h │ │ │ ├── libavdevice │ │ │ │ ├── avdevice.h │ │ │ │ └── version.h │ │ │ ├── libavfilter │ │ │ │ ├── avfilter.h │ │ │ │ ├── buffersink.h │ │ │ │ ├── buffersrc.h │ │ │ │ └── version.h │ │ │ ├── libavformat │ │ │ │ ├── avformat.h │ │ │ │ ├── avio.h │ │ │ │ └── version.h │ │ │ ├── libavutil │ │ │ │ ├── adler32.h │ │ │ │ ├── aes.h │ │ │ │ ├── aes_ctr.h │ │ │ │ ├── attributes.h │ │ │ │ ├── audio_fifo.h │ │ │ │ ├── avassert.h │ │ │ │ ├── avconfig.h │ │ │ │ ├── avstring.h │ │ │ │ ├── avutil.h │ │ │ │ ├── base64.h │ │ │ │ ├── blowfish.h │ │ │ │ ├── bprint.h │ │ │ │ ├── bswap.h │ │ │ │ ├── buffer.h │ │ │ │ ├── camellia.h │ │ │ │ ├── cast5.h │ │ │ │ ├── channel_layout.h │ │ │ │ ├── common.h │ │ │ │ ├── cpu.h │ │ │ │ ├── crc.h │ │ │ │ ├── des.h │ │ │ │ ├── dict.h │ │ │ │ ├── display.h │ │ │ │ ├── downmix_info.h │ │ │ │ ├── encryption_info.h │ │ │ │ ├── error.h │ │ │ │ ├── eval.h │ │ │ │ ├── ffversion.h │ │ │ │ ├── fifo.h │ │ │ │ ├── file.h │ │ │ │ ├── frame.h │ │ │ │ ├── hash.h │ │ │ │ ├── hmac.h │ │ │ │ ├── hwcontext.h │ │ │ │ ├── hwcontext_cuda.h │ │ │ │ ├── hwcontext_d3d11va.h │ │ │ │ ├── hwcontext_drm.h │ │ │ │ ├── hwcontext_dxva2.h │ │ │ │ ├── hwcontext_mediacodec.h │ │ │ │ ├── hwcontext_qsv.h │ │ │ │ ├── hwcontext_vaapi.h │ │ │ │ ├── hwcontext_vdpau.h │ │ │ │ ├── hwcontext_videotoolbox.h │ │ │ │ ├── imgutils.h │ │ │ │ ├── intfloat.h │ │ │ │ ├── intreadwrite.h │ │ │ │ ├── lfg.h │ │ │ │ ├── log.h │ │ │ │ ├── lzo.h │ │ │ │ ├── macros.h │ │ │ │ ├── mastering_display_metadata.h │ │ │ │ ├── mathematics.h │ │ │ │ ├── md5.h │ │ │ │ ├── mem.h │ │ │ │ ├── motion_vector.h │ │ │ │ ├── murmur3.h │ │ │ │ ├── opt.h │ │ │ │ ├── parseutils.h │ │ │ │ ├── pixdesc.h │ │ │ │ ├── pixelutils.h │ │ │ │ ├── pixfmt.h │ │ │ │ ├── random_seed.h │ │ │ │ ├── rational.h │ │ │ │ ├── rc4.h │ │ │ │ ├── replaygain.h │ │ │ │ ├── ripemd.h │ │ │ │ ├── samplefmt.h │ │ │ │ ├── sha.h │ │ │ │ ├── sha512.h │ │ │ │ ├── spherical.h │ │ │ │ ├── stereo3d.h │ │ │ │ ├── tea.h │ │ │ │ ├── threadmessage.h │ │ │ │ ├── time.h │ │ │ │ ├── timecode.h │ │ │ │ ├── timestamp.h │ │ │ │ ├── tree.h │ │ │ │ ├── twofish.h │ │ │ │ ├── version.h │ │ │ │ └── xtea.h │ │ │ ├── libpostproc │ │ │ │ ├── postprocess.h │ │ │ │ └── version.h │ │ │ ├── libswresample │ │ │ │ ├── swresample.h │ │ │ │ └── version.h │ │ │ ├── libswscale │ │ │ │ ├── swscale.h │ │ │ │ └── version.h │ │ │ └── x264 │ │ │ │ ├── x264.h │ │ │ │ └── x264_config.h │ │ └── lib │ │ │ ├── libavcodec.a │ │ │ ├── libavdevice.a │ │ │ ├── libavfilter.a │ │ │ ├── libavformat.a │ │ │ ├── libavutil.a │ │ │ ├── libpostproc.a │ │ │ ├── libswresample.a │ │ │ ├── libswscale.a │ │ │ └── libx264.a │ ├── XDXSingleton.h │ ├── YYModel │ │ ├── NSObject+YYModel.h │ │ ├── NSObject+YYModel.m │ │ ├── YYClassInfo.h │ │ ├── YYClassInfo.m │ │ └── YYModel.h │ └── log4cplus.h │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Capture │ ├── Audio │ │ ├── XDXAudioCaptureManager.h │ │ └── XDXAudioCaptureManager.m │ └── Video │ │ ├── XDXCameraHandler.h │ │ ├── XDXCameraHandler.m │ │ ├── XDXCameraModel.h │ │ └── XDXCameraModel.m │ ├── Encoder │ ├── Audio │ │ ├── XDXAduioEncoder.h │ │ └── XDXAduioEncoder.m │ └── Video │ │ ├── XDXVideoEncoder.h │ │ └── XDXVideoEncoder.m │ ├── FFmpeg_Mux │ ├── XDXAVPacketList.h │ ├── XDXAVPacketList.mm │ ├── XDXAVStreamMuxHandler.h │ └── XDXAVStreamMuxHandler.mm │ ├── Info.plist │ ├── Record │ ├── XDXAVRecorder.h │ └── XDXAVRecorder.m │ ├── ViewController.h │ ├── ViewController.mm │ └── main.m └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xccheckout 23 | *.xcscmblueprint 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | *.ipa 28 | *.dSYM.zip 29 | *.dSYM 30 | 31 | # CocoaPods 32 | # 33 | # We recommend against adding the Pods directory to your .gitignore. However 34 | # you should judge for yourself, the pros and cons are mentioned at: 35 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 36 | # 37 | # Pods/ 38 | 39 | # Carthage 40 | # 41 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 42 | # Carthage/Checkouts 43 | 44 | Carthage/Build 45 | 46 | # fastlane 47 | # 48 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 49 | # screenshots whenever they are needed. 50 | # For more information about the recommended setup visit: 51 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 52 | 53 | fastlane/report.xml 54 | fastlane/Preview.html 55 | fastlane/screenshots/**/*.png 56 | fastlane/test_output 57 | 58 | # Code Injection 59 | # 60 | # After new code Injection tools there's a generated folder /iOSInjectionProject 61 | # https://github.com/johnno1962/injectionforxcode 62 | 63 | iOSInjectionProject/ 64 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/ac3_parser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AC-3 parser prototypes 3 | * Copyright (c) 2003 Fabrice Bellard 4 | * Copyright (c) 2003 Michael Niedermayer 5 | * 6 | * This file is part of FFmpeg. 7 | * 8 | * FFmpeg is free software; you can redistribute it and/or 9 | * modify it under the terms of the GNU Lesser General Public 10 | * License as published by the Free Software Foundation; either 11 | * version 2.1 of the License, or (at your option) any later version. 12 | * 13 | * FFmpeg is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 | * Lesser General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public 19 | * License along with FFmpeg; if not, write to the Free Software 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 | */ 22 | 23 | #ifndef AVCODEC_AC3_PARSER_H 24 | #define AVCODEC_AC3_PARSER_H 25 | 26 | #include 27 | #include 28 | 29 | /** 30 | * Extract the bitstream ID and the frame size from AC-3 data. 31 | */ 32 | int av_ac3_parse_header(const uint8_t *buf, size_t size, 33 | uint8_t *bitstream_id, uint16_t *frame_size); 34 | 35 | 36 | #endif /* AVCODEC_AC3_PARSER_H */ 37 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/adts_parser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVCODEC_ADTS_PARSER_H 20 | #define AVCODEC_ADTS_PARSER_H 21 | 22 | #include 23 | #include 24 | 25 | #define AV_AAC_ADTS_HEADER_SIZE 7 26 | 27 | /** 28 | * Extract the number of samples and frames from AAC data. 29 | * @param[in] buf pointer to AAC data buffer 30 | * @param[out] samples Pointer to where number of samples is written 31 | * @param[out] frames Pointer to where number of frames is written 32 | * @return Returns 0 on success, error code on failure. 33 | */ 34 | int av_adts_header_parse(const uint8_t *buf, uint32_t *samples, 35 | uint8_t *frames); 36 | 37 | #endif /* AVCODEC_ADTS_PARSER_H */ 38 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/avdct.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVCODEC_AVDCT_H 20 | #define AVCODEC_AVDCT_H 21 | 22 | #include "libavutil/opt.h" 23 | 24 | /** 25 | * AVDCT context. 26 | * @note function pointers can be NULL if the specific features have been 27 | * disabled at build time. 28 | */ 29 | typedef struct AVDCT { 30 | const AVClass *av_class; 31 | 32 | void (*idct)(int16_t *block /* align 16 */); 33 | 34 | /** 35 | * IDCT input permutation. 36 | * Several optimized IDCTs need a permutated input (relative to the 37 | * normal order of the reference IDCT). 38 | * This permutation must be performed before the idct_put/add. 39 | * Note, normally this can be merged with the zigzag/alternate scan
40 | * An example to avoid confusion: 41 | * - (->decode coeffs -> zigzag reorder -> dequant -> reference IDCT -> ...) 42 | * - (x -> reference DCT -> reference IDCT -> x) 43 | * - (x -> reference DCT -> simple_mmx_perm = idct_permutation 44 | * -> simple_idct_mmx -> x) 45 | * - (-> decode coeffs -> zigzag reorder -> simple_mmx_perm -> dequant 46 | * -> simple_idct_mmx -> ...) 47 | */ 48 | uint8_t idct_permutation[64]; 49 | 50 | void (*fdct)(int16_t *block /* align 16 */); 51 | 52 | 53 | /** 54 | * DCT algorithm. 55 | * must use AVOptions to set this field. 56 | */ 57 | int dct_algo; 58 | 59 | /** 60 | * IDCT algorithm. 61 | * must use AVOptions to set this field. 62 | */ 63 | int idct_algo; 64 | 65 | void (*get_pixels)(int16_t *block /* align 16 */, 66 | const uint8_t *pixels /* align 8 */, 67 | ptrdiff_t line_size); 68 | 69 | int bits_per_sample; 70 | } AVDCT; 71 | 72 | /** 73 | * Allocates a AVDCT context. 74 | * This needs to be initialized with avcodec_dct_init() after optionally 75 | * configuring it with AVOptions. 76 | * 77 | * To free it use av_free() 78 | */ 79 | AVDCT *avcodec_dct_alloc(void); 80 | int avcodec_dct_init(AVDCT *); 81 | 82 | const AVClass *avcodec_dct_get_class(void); 83 | 84 | #endif /* AVCODEC_AVDCT_H */ 85 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/avfft.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVCODEC_AVFFT_H 20 | #define AVCODEC_AVFFT_H 21 | 22 | /** 23 | * @file 24 | * @ingroup lavc_fft 25 | * FFT functions 26 | */ 27 | 28 | /** 29 | * @defgroup lavc_fft FFT functions 30 | * @ingroup lavc_misc 31 | * 32 | * @{ 33 | */ 34 | 35 | typedef float FFTSample; 36 | 37 | typedef struct FFTComplex { 38 | FFTSample re, im; 39 | } FFTComplex; 40 | 41 | typedef struct FFTContext FFTContext; 42 | 43 | /** 44 | * Set up a complex FFT. 45 | * @param nbits log2 of the length of the input array 46 | * @param inverse if 0 perform the forward transform, if 1 perform the inverse 47 | */ 48 | FFTContext *av_fft_init(int nbits, int inverse); 49 | 50 | /** 51 | * Do the permutation needed BEFORE calling ff_fft_calc(). 52 | */ 53 | void av_fft_permute(FFTContext *s, FFTComplex *z); 54 | 55 | /** 56 | * Do a complex FFT with the parameters defined in av_fft_init(). The 57 | * input data must be permuted before. No 1.0/sqrt(n) normalization is done. 58 | */ 59 | void av_fft_calc(FFTContext *s, FFTComplex *z); 60 | 61 | void av_fft_end(FFTContext *s); 62 | 63 | FFTContext *av_mdct_init(int nbits, int inverse, double scale); 64 | void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); 65 | void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input); 66 | void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); 67 | void av_mdct_end(FFTContext *s); 68 | 69 | /* Real Discrete Fourier Transform */ 70 | 71 | enum RDFTransformType { 72 | DFT_R2C, 73 | IDFT_C2R, 74 | IDFT_R2C, 75 | DFT_C2R, 76 | }; 77 | 78 | typedef struct RDFTContext RDFTContext; 79 | 80 | /** 81 | * Set up a real FFT. 82 | * @param nbits log2 of the length of the input array 83 | * @param trans the type of transform 84 | */ 85 | RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans); 86 | void av_rdft_calc(RDFTContext *s, FFTSample *data); 87 | void av_rdft_end(RDFTContext *s); 88 | 89 | /* Discrete Cosine Transform */ 90 | 91 | typedef struct DCTContext DCTContext; 92 | 93 | enum DCTTransformType { 94 | DCT_II = 0, 95 | DCT_III, 96 | DCT_I, 97 | DST_I, 98 | }; 99 | 100 | /** 101 | * Set up DCT. 102 | * 103 | * @param nbits size of the input array: 104 | * (1 << nbits) for DCT-II, DCT-III and DST-I 105 | * (1 << nbits) + 1 for DCT-I 106 | * @param type the type of transform 107 | * 108 | * @note the first element of the input of DST-I is ignored 109 | */ 110 | DCTContext *av_dct_init(int nbits, enum DCTTransformType type); 111 | void av_dct_calc(DCTContext *s, FFTSample *data); 112 | void av_dct_end (DCTContext *s); 113 | 114 | /** 115 | * @} 116 | */ 117 | 118 | #endif /* AVCODEC_AVFFT_H */ 119 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/d3d11va.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Direct3D11 HW acceleration 3 | * 4 | * copyright (c) 2009 Laurent Aimar 5 | * copyright (c) 2015 Steve Lhomme 6 | * 7 | * This file is part of FFmpeg. 8 | * 9 | * FFmpeg is free software; you can redistribute it and/or 10 | * modify it under the terms of the GNU Lesser General Public 11 | * License as published by the Free Software Foundation; either 12 | * version 2.1 of the License, or (at your option) any later version. 13 | * 14 | * FFmpeg is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 | * Lesser General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Lesser General Public 20 | * License along with FFmpeg; if not, write to the Free Software 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 22 | */ 23 | 24 | #ifndef AVCODEC_D3D11VA_H 25 | #define AVCODEC_D3D11VA_H 26 | 27 | /** 28 | * @file 29 | * @ingroup lavc_codec_hwaccel_d3d11va 30 | * Public libavcodec D3D11VA header. 31 | */ 32 | 33 | #if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602 34 | #undef _WIN32_WINNT 35 | #define _WIN32_WINNT 0x0602 36 | #endif 37 | 38 | #include 39 | #include 40 | 41 | /** 42 | * @defgroup lavc_codec_hwaccel_d3d11va Direct3D11 43 | * @ingroup lavc_codec_hwaccel 44 | * 45 | * @{ 46 | */ 47 | 48 | #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for Direct3D11 and old UVD/UVD+ ATI video cards 49 | #define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for Direct3D11 and old Intel GPUs with ClearVideo interface 50 | 51 | /** 52 | * This structure is used to provides the necessary configurations and data 53 | * to the Direct3D11 FFmpeg HWAccel implementation. 54 | * 55 | * The application must make it available as AVCodecContext.hwaccel_context. 56 | * 57 | * Use av_d3d11va_alloc_context() exclusively to allocate an AVD3D11VAContext. 58 | */ 59 | typedef struct AVD3D11VAContext { 60 | /** 61 | * D3D11 decoder object 62 | */ 63 | ID3D11VideoDecoder *decoder; 64 | 65 | /** 66 | * D3D11 VideoContext 67 | */ 68 | ID3D11VideoContext *video_context; 69 | 70 | /** 71 | * D3D11 configuration used to create the decoder 72 | */ 73 | D3D11_VIDEO_DECODER_CONFIG *cfg; 74 | 75 | /** 76 | * The number of surface in the surface array 77 | */ 78 | unsigned surface_count; 79 | 80 | /** 81 | * The array of Direct3D surfaces used to create the decoder 82 | */ 83 | ID3D11VideoDecoderOutputView **surface; 84 | 85 | /** 86 | * A bit field configuring the workarounds needed for using the decoder 87 | */ 88 | uint64_t workaround; 89 | 90 | /** 91 | * Private to the FFmpeg AVHWAccel implementation 92 | */ 93 | unsigned report_id; 94 | 95 | /** 96 | * Mutex to access video_context 97 | */ 98 | HANDLE context_mutex; 99 | } AVD3D11VAContext; 100 | 101 | /** 102 | * Allocate an AVD3D11VAContext. 103 | * 104 | * @return Newly-allocated AVD3D11VAContext or NULL on failure. 105 | */ 106 | AVD3D11VAContext *av_d3d11va_alloc_context(void); 107 | 108 | /** 109 | * @} 110 | */ 111 | 112 | #endif /* AVCODEC_D3D11VA_H */ 113 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/dv_profile.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVCODEC_DV_PROFILE_H 20 | #define AVCODEC_DV_PROFILE_H 21 | 22 | #include 23 | 24 | #include "libavutil/pixfmt.h" 25 | #include "libavutil/rational.h" 26 | #include "avcodec.h" 27 | 28 | /* minimum number of bytes to read from a DV stream in order to 29 | * determine the profile */ 30 | #define DV_PROFILE_BYTES (6 * 80) /* 6 DIF blocks */ 31 | 32 | 33 | /* 34 | * AVDVProfile is used to express the differences between various 35 | * DV flavors. For now it's primarily used for differentiating 36 | * 525/60 and 625/50, but the plans are to use it for various 37 | * DV specs as well (e.g. SMPTE314M vs. IEC 61834). 38 | */ 39 | typedef struct AVDVProfile { 40 | int dsf; /* value of the dsf in the DV header */ 41 | int video_stype; /* stype for VAUX source pack */ 42 | int frame_size; /* total size of one frame in bytes */ 43 | int difseg_size; /* number of DIF segments per DIF channel */ 44 | int n_difchan; /* number of DIF channels per frame */ 45 | AVRational time_base; /* 1/framerate */ 46 | int ltc_divisor; /* FPS from the LTS standpoint */ 47 | int height; /* picture height in pixels */ 48 | int width; /* picture width in pixels */ 49 | AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */ 50 | enum AVPixelFormat pix_fmt; /* picture pixel format */ 51 | int bpm; /* blocks per macroblock */ 52 | const uint8_t *block_sizes; /* AC block sizes, in bits */ 53 | int audio_stride; /* size of audio_shuffle table */ 54 | int audio_min_samples[3]; /* min amount of audio samples */ 55 | /* for 48kHz, 44.1kHz and 32kHz */ 56 | int audio_samples_dist[5]; /* how many samples are supposed to be */ 57 | /* in each frame in a 5 frames window */ 58 | const uint8_t (*audio_shuffle)[9]; /* PCM shuffling table */ 59 | } AVDVProfile; 60 | 61 | /** 62 | * Get a DV profile for the provided compressed frame. 63 | * 64 | * @param sys the profile used for the previous frame, may be NULL 65 | * @param frame the compressed data buffer 66 | * @param buf_size size of the buffer in bytes 67 | * @return the DV profile for the supplied data or NULL on failure 68 | */ 69 | const AVDVProfile *av_dv_frame_profile(const AVDVProfile *sys, 70 | const uint8_t *frame, unsigned buf_size); 71 | 72 | /** 73 | * Get a DV profile for the provided stream parameters. 74 | */ 75 | const AVDVProfile *av_dv_codec_profile(int width, int height, enum AVPixelFormat pix_fmt); 76 | 77 | /** 78 | * Get a DV profile for the provided stream parameters. 79 | * The frame rate is used as a best-effort parameter. 80 | */ 81 | const AVDVProfile *av_dv_codec_profile2(int width, int height, enum AVPixelFormat pix_fmt, AVRational frame_rate); 82 | 83 | #endif /* AVCODEC_DV_PROFILE_H */ 84 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/dxva2.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DXVA2 HW acceleration 3 | * 4 | * copyright (c) 2009 Laurent Aimar 5 | * 6 | * This file is part of FFmpeg. 7 | * 8 | * FFmpeg is free software; you can redistribute it and/or 9 | * modify it under the terms of the GNU Lesser General Public 10 | * License as published by the Free Software Foundation; either 11 | * version 2.1 of the License, or (at your option) any later version. 12 | * 13 | * FFmpeg is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 | * Lesser General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public 19 | * License along with FFmpeg; if not, write to the Free Software 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 | */ 22 | 23 | #ifndef AVCODEC_DXVA2_H 24 | #define AVCODEC_DXVA2_H 25 | 26 | /** 27 | * @file 28 | * @ingroup lavc_codec_hwaccel_dxva2 29 | * Public libavcodec DXVA2 header. 30 | */ 31 | 32 | #if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602 33 | #undef _WIN32_WINNT 34 | #define _WIN32_WINNT 0x0602 35 | #endif 36 | 37 | #include 38 | #include 39 | #include 40 | 41 | /** 42 | * @defgroup lavc_codec_hwaccel_dxva2 DXVA2 43 | * @ingroup lavc_codec_hwaccel 44 | * 45 | * @{ 46 | */ 47 | 48 | #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards 49 | #define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface 50 | 51 | /** 52 | * This structure is used to provides the necessary configurations and data 53 | * to the DXVA2 FFmpeg HWAccel implementation. 54 | * 55 | * The application must make it available as AVCodecContext.hwaccel_context. 56 | */ 57 | struct dxva_context { 58 | /** 59 | * DXVA2 decoder object 60 | */ 61 | IDirectXVideoDecoder *decoder; 62 | 63 | /** 64 | * DXVA2 configuration used to create the decoder 65 | */ 66 | const DXVA2_ConfigPictureDecode *cfg; 67 | 68 | /** 69 | * The number of surface in the surface array 70 | */ 71 | unsigned surface_count; 72 | 73 | /** 74 | * The array of Direct3D surfaces used to create the decoder 75 | */ 76 | LPDIRECT3DSURFACE9 *surface; 77 | 78 | /** 79 | * A bit field configuring the workarounds needed for using the decoder 80 | */ 81 | uint64_t workaround; 82 | 83 | /** 84 | * Private to the FFmpeg AVHWAccel implementation 85 | */ 86 | unsigned report_id; 87 | }; 88 | 89 | /** 90 | * @} 91 | */ 92 | 93 | #endif /* AVCODEC_DXVA2_H */ 94 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/jni.h: -------------------------------------------------------------------------------- 1 | /* 2 | * JNI public API functions 3 | * 4 | * Copyright (c) 2015-2016 Matthieu Bouron 5 | * 6 | * This file is part of FFmpeg. 7 | * 8 | * FFmpeg is free software; you can redistribute it and/or 9 | * modify it under the terms of the GNU Lesser General Public 10 | * License as published by the Free Software Foundation; either 11 | * version 2.1 of the License, or (at your option) any later version. 12 | * 13 | * FFmpeg is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 | * Lesser General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public 19 | * License along with FFmpeg; if not, write to the Free Software 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 | */ 22 | 23 | #ifndef AVCODEC_JNI_H 24 | #define AVCODEC_JNI_H 25 | 26 | /* 27 | * Manually set a Java virtual machine which will be used to retrieve the JNI 28 | * environment. Once a Java VM is set it cannot be changed afterwards, meaning 29 | * you can call multiple times av_jni_set_java_vm with the same Java VM pointer 30 | * however it will error out if you try to set a different Java VM. 31 | * 32 | * @param vm Java virtual machine 33 | * @param log_ctx context used for logging, can be NULL 34 | * @return 0 on success, < 0 otherwise 35 | */ 36 | int av_jni_set_java_vm(void *vm, void *log_ctx); 37 | 38 | /* 39 | * Get the Java virtual machine which has been set with av_jni_set_java_vm. 40 | * 41 | * @param vm Java virtual machine 42 | * @return a pointer to the Java virtual machine 43 | */ 44 | void *av_jni_get_java_vm(void *log_ctx); 45 | 46 | #endif /* AVCODEC_JNI_H */ 47 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/mediacodec.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Android MediaCodec public API 3 | * 4 | * Copyright (c) 2016 Matthieu Bouron 5 | * 6 | * This file is part of FFmpeg. 7 | * 8 | * FFmpeg is free software; you can redistribute it and/or 9 | * modify it under the terms of the GNU Lesser General Public 10 | * License as published by the Free Software Foundation; either 11 | * version 2.1 of the License, or (at your option) any later version. 12 | * 13 | * FFmpeg is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 | * Lesser General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public 19 | * License along with FFmpeg; if not, write to the Free Software 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 | */ 22 | 23 | #ifndef AVCODEC_MEDIACODEC_H 24 | #define AVCODEC_MEDIACODEC_H 25 | 26 | #include "libavcodec/avcodec.h" 27 | 28 | /** 29 | * This structure holds a reference to a android/view/Surface object that will 30 | * be used as output by the decoder. 31 | * 32 | */ 33 | typedef struct AVMediaCodecContext { 34 | 35 | /** 36 | * android/view/Surface object reference. 37 | */ 38 | void *surface; 39 | 40 | } AVMediaCodecContext; 41 | 42 | /** 43 | * Allocate and initialize a MediaCodec context. 44 | * 45 | * When decoding with MediaCodec is finished, the caller must free the 46 | * MediaCodec context with av_mediacodec_default_free. 47 | * 48 | * @return a pointer to a newly allocated AVMediaCodecContext on success, NULL otherwise 49 | */ 50 | AVMediaCodecContext *av_mediacodec_alloc_context(void); 51 | 52 | /** 53 | * Convenience function that sets up the MediaCodec context. 54 | * 55 | * @param avctx codec context 56 | * @param ctx MediaCodec context to initialize 57 | * @param surface reference to an android/view/Surface 58 | * @return 0 on success, < 0 otherwise 59 | */ 60 | int av_mediacodec_default_init(AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface); 61 | 62 | /** 63 | * This function must be called to free the MediaCodec context initialized with 64 | * av_mediacodec_default_init(). 65 | * 66 | * @param avctx codec context 67 | */ 68 | void av_mediacodec_default_free(AVCodecContext *avctx); 69 | 70 | /** 71 | * Opaque structure representing a MediaCodec buffer to render. 72 | */ 73 | typedef struct MediaCodecBuffer AVMediaCodecBuffer; 74 | 75 | /** 76 | * Release a MediaCodec buffer and render it to the surface that is associated 77 | * with the decoder. This function should only be called once on a given 78 | * buffer, once released the underlying buffer returns to the codec, thus 79 | * subsequent calls to this function will have no effect. 80 | * 81 | * @param buffer the buffer to render 82 | * @param render 1 to release and render the buffer to the surface or 0 to 83 | * discard the buffer 84 | * @return 0 on success, < 0 otherwise 85 | */ 86 | int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render); 87 | 88 | /** 89 | * Release a MediaCodec buffer and render it at the given time to the surface 90 | * that is associated with the decoder. The timestamp must be within one second 91 | * of the current java/lang/System#nanoTime() (which is implemented using 92 | * CLOCK_MONOTONIC on Android). See the Android MediaCodec documentation 93 | * of android/media/MediaCodec#releaseOutputBuffer(int,long) for more details. 94 | * 95 | * @param buffer the buffer to render 96 | * @param time timestamp in nanoseconds of when to render the buffer 97 | * @return 0 on success, < 0 otherwise 98 | */ 99 | int av_mediacodec_render_buffer_at_time(AVMediaCodecBuffer *buffer, int64_t time); 100 | 101 | #endif /* AVCODEC_MEDIACODEC_H */ 102 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/qsv.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Intel MediaSDK QSV public API 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVCODEC_QSV_H 22 | #define AVCODEC_QSV_H 23 | 24 | #include 25 | 26 | #include "libavutil/buffer.h" 27 | 28 | /** 29 | * This struct is used for communicating QSV parameters between libavcodec and 30 | * the caller. It is managed by the caller and must be assigned to 31 | * AVCodecContext.hwaccel_context. 32 | * - decoding: hwaccel_context must be set on return from the get_format() 33 | * callback 34 | * - encoding: hwaccel_context must be set before avcodec_open2() 35 | */ 36 | typedef struct AVQSVContext { 37 | /** 38 | * If non-NULL, the session to use for encoding or decoding. 39 | * Otherwise, libavcodec will try to create an internal session. 40 | */ 41 | mfxSession session; 42 | 43 | /** 44 | * The IO pattern to use. 45 | */ 46 | int iopattern; 47 | 48 | /** 49 | * Extra buffers to pass to encoder or decoder initialization. 50 | */ 51 | mfxExtBuffer **ext_buffers; 52 | int nb_ext_buffers; 53 | 54 | /** 55 | * Encoding only. If this field is set to non-zero by the caller, libavcodec 56 | * will create an mfxExtOpaqueSurfaceAlloc extended buffer and pass it to 57 | * the encoder initialization. This only makes sense if iopattern is also 58 | * set to MFX_IOPATTERN_IN_OPAQUE_MEMORY. 59 | * 60 | * The number of allocated opaque surfaces will be the sum of the number 61 | * required by the encoder and the user-provided value nb_opaque_surfaces. 62 | * The array of the opaque surfaces will be exported to the caller through 63 | * the opaque_surfaces field. 64 | */ 65 | int opaque_alloc; 66 | 67 | /** 68 | * Encoding only, and only if opaque_alloc is set to non-zero. Before 69 | * calling avcodec_open2(), the caller should set this field to the number 70 | * of extra opaque surfaces to allocate beyond what is required by the 71 | * encoder. 72 | * 73 | * On return from avcodec_open2(), this field will be set by libavcodec to 74 | * the total number of allocated opaque surfaces. 75 | */ 76 | int nb_opaque_surfaces; 77 | 78 | /** 79 | * Encoding only, and only if opaque_alloc is set to non-zero. On return 80 | * from avcodec_open2(), this field will be used by libavcodec to export the 81 | * array of the allocated opaque surfaces to the caller, so they can be 82 | * passed to other parts of the pipeline. 83 | * 84 | * The buffer reference exported here is owned and managed by libavcodec, 85 | * the callers should make their own reference with av_buffer_ref() and free 86 | * it with av_buffer_unref() when it is no longer needed. 87 | * 88 | * The buffer data is an nb_opaque_surfaces-sized array of mfxFrameSurface1. 89 | */ 90 | AVBufferRef *opaque_surfaces; 91 | 92 | /** 93 | * Encoding only, and only if opaque_alloc is set to non-zero. On return 94 | * from avcodec_open2(), this field will be set to the surface type used in 95 | * the opaque allocation request. 96 | */ 97 | int opaque_alloc_type; 98 | } AVQSVContext; 99 | 100 | /** 101 | * Allocate a new context. 102 | * 103 | * It must be freed by the caller with av_free(). 104 | */ 105 | AVQSVContext *av_qsv_alloc_context(void); 106 | 107 | #endif /* AVCODEC_QSV_H */ 108 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/vaapi.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Video Acceleration API (shared data between FFmpeg and the video player) 3 | * HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1 4 | * 5 | * Copyright (C) 2008-2009 Splitted-Desktop Systems 6 | * 7 | * This file is part of FFmpeg. 8 | * 9 | * FFmpeg is free software; you can redistribute it and/or 10 | * modify it under the terms of the GNU Lesser General Public 11 | * License as published by the Free Software Foundation; either 12 | * version 2.1 of the License, or (at your option) any later version. 13 | * 14 | * FFmpeg is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 | * Lesser General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Lesser General Public 20 | * License along with FFmpeg; if not, write to the Free Software 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 22 | */ 23 | 24 | #ifndef AVCODEC_VAAPI_H 25 | #define AVCODEC_VAAPI_H 26 | 27 | /** 28 | * @file 29 | * @ingroup lavc_codec_hwaccel_vaapi 30 | * Public libavcodec VA API header. 31 | */ 32 | 33 | #include 34 | #include "libavutil/attributes.h" 35 | #include "version.h" 36 | 37 | #if FF_API_STRUCT_VAAPI_CONTEXT 38 | 39 | /** 40 | * @defgroup lavc_codec_hwaccel_vaapi VA API Decoding 41 | * @ingroup lavc_codec_hwaccel 42 | * @{ 43 | */ 44 | 45 | /** 46 | * This structure is used to share data between the FFmpeg library and 47 | * the client video application. 48 | * This shall be zero-allocated and available as 49 | * AVCodecContext.hwaccel_context. All user members can be set once 50 | * during initialization or through each AVCodecContext.get_buffer() 51 | * function call. In any case, they must be valid prior to calling 52 | * decoding functions. 53 | * 54 | * Deprecated: use AVCodecContext.hw_frames_ctx instead. 55 | */ 56 | struct attribute_deprecated vaapi_context { 57 | /** 58 | * Window system dependent data 59 | * 60 | * - encoding: unused 61 | * - decoding: Set by user 62 | */ 63 | void *display; 64 | 65 | /** 66 | * Configuration ID 67 | * 68 | * - encoding: unused 69 | * - decoding: Set by user 70 | */ 71 | uint32_t config_id; 72 | 73 | /** 74 | * Context ID (video decode pipeline) 75 | * 76 | * - encoding: unused 77 | * - decoding: Set by user 78 | */ 79 | uint32_t context_id; 80 | }; 81 | 82 | /* @} */ 83 | 84 | #endif /* FF_API_STRUCT_VAAPI_CONTEXT */ 85 | 86 | #endif /* AVCODEC_VAAPI_H */ 87 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/videotoolbox.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Videotoolbox hardware acceleration 3 | * 4 | * copyright (c) 2012 Sebastien Zwickert 5 | * 6 | * This file is part of FFmpeg. 7 | * 8 | * FFmpeg is free software; you can redistribute it and/or 9 | * modify it under the terms of the GNU Lesser General Public 10 | * License as published by the Free Software Foundation; either 11 | * version 2.1 of the License, or (at your option) any later version. 12 | * 13 | * FFmpeg is distributed in the hope that it will be useful, 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 | * Lesser General Public License for more details. 17 | * 18 | * You should have received a copy of the GNU Lesser General Public 19 | * License along with FFmpeg; if not, write to the Free Software 20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 | */ 22 | 23 | #ifndef AVCODEC_VIDEOTOOLBOX_H 24 | #define AVCODEC_VIDEOTOOLBOX_H 25 | 26 | /** 27 | * @file 28 | * @ingroup lavc_codec_hwaccel_videotoolbox 29 | * Public libavcodec Videotoolbox header. 30 | */ 31 | 32 | #include 33 | 34 | #define Picture QuickdrawPicture 35 | #include 36 | #undef Picture 37 | 38 | #include "libavcodec/avcodec.h" 39 | 40 | /** 41 | * This struct holds all the information that needs to be passed 42 | * between the caller and libavcodec for initializing Videotoolbox decoding. 43 | * Its size is not a part of the public ABI, it must be allocated with 44 | * av_videotoolbox_alloc_context() and freed with av_free(). 45 | */ 46 | typedef struct AVVideotoolboxContext { 47 | /** 48 | * Videotoolbox decompression session object. 49 | * Created and freed the caller. 50 | */ 51 | VTDecompressionSessionRef session; 52 | 53 | /** 54 | * The output callback that must be passed to the session. 55 | * Set by av_videottoolbox_default_init() 56 | */ 57 | VTDecompressionOutputCallback output_callback; 58 | 59 | /** 60 | * CVPixelBuffer Format Type that Videotoolbox will use for decoded frames. 61 | * set by the caller. If this is set to 0, then no specific format is 62 | * requested from the decoder, and its native format is output. 63 | */ 64 | OSType cv_pix_fmt_type; 65 | 66 | /** 67 | * CoreMedia Format Description that Videotoolbox will use to create the decompression session. 68 | * Set by the caller. 69 | */ 70 | CMVideoFormatDescriptionRef cm_fmt_desc; 71 | 72 | /** 73 | * CoreMedia codec type that Videotoolbox will use to create the decompression session. 74 | * Set by the caller. 75 | */ 76 | int cm_codec_type; 77 | } AVVideotoolboxContext; 78 | 79 | /** 80 | * Allocate and initialize a Videotoolbox context. 81 | * 82 | * This function should be called from the get_format() callback when the caller 83 | * selects the AV_PIX_FMT_VIDETOOLBOX format. The caller must then create 84 | * the decoder object (using the output callback provided by libavcodec) that 85 | * will be used for Videotoolbox-accelerated decoding. 86 | * 87 | * When decoding with Videotoolbox is finished, the caller must destroy the decoder 88 | * object and free the Videotoolbox context using av_free(). 89 | * 90 | * @return the newly allocated context or NULL on failure 91 | */ 92 | AVVideotoolboxContext *av_videotoolbox_alloc_context(void); 93 | 94 | /** 95 | * This is a convenience function that creates and sets up the Videotoolbox context using 96 | * an internal implementation. 97 | * 98 | * @param avctx the corresponding codec context 99 | * 100 | * @return >= 0 on success, a negative AVERROR code on failure 101 | */ 102 | int av_videotoolbox_default_init(AVCodecContext *avctx); 103 | 104 | /** 105 | * This is a convenience function that creates and sets up the Videotoolbox context using 106 | * an internal implementation. 107 | * 108 | * @param avctx the corresponding codec context 109 | * @param vtctx the Videotoolbox context to use 110 | * 111 | * @return >= 0 on success, a negative AVERROR code on failure 112 | */ 113 | int av_videotoolbox_default_init2(AVCodecContext *avctx, AVVideotoolboxContext *vtctx); 114 | 115 | /** 116 | * This function must be called to free the Videotoolbox context initialized with 117 | * av_videotoolbox_default_init(). 118 | * 119 | * @param avctx the corresponding codec context 120 | */ 121 | void av_videotoolbox_default_free(AVCodecContext *avctx); 122 | 123 | /** 124 | * @} 125 | */ 126 | 127 | #endif /* AVCODEC_VIDEOTOOLBOX_H */ 128 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavcodec/vorbis_parser.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | /** 20 | * @file 21 | * A public API for Vorbis parsing 22 | * 23 | * Determines the duration for each packet. 24 | */ 25 | 26 | #ifndef AVCODEC_VORBIS_PARSER_H 27 | #define AVCODEC_VORBIS_PARSER_H 28 | 29 | #include 30 | 31 | typedef struct AVVorbisParseContext AVVorbisParseContext; 32 | 33 | /** 34 | * Allocate and initialize the Vorbis parser using headers in the extradata. 35 | */ 36 | AVVorbisParseContext *av_vorbis_parse_init(const uint8_t *extradata, 37 | int extradata_size); 38 | 39 | /** 40 | * Free the parser and everything associated with it. 41 | */ 42 | void av_vorbis_parse_free(AVVorbisParseContext **s); 43 | 44 | #define VORBIS_FLAG_HEADER 0x00000001 45 | #define VORBIS_FLAG_COMMENT 0x00000002 46 | #define VORBIS_FLAG_SETUP 0x00000004 47 | 48 | /** 49 | * Get the duration for a Vorbis packet. 50 | * 51 | * If @p flags is @c NULL, 52 | * special frames are considered invalid. 53 | * 54 | * @param s Vorbis parser context 55 | * @param buf buffer containing a Vorbis frame 56 | * @param buf_size size of the buffer 57 | * @param flags flags for special frames 58 | */ 59 | int av_vorbis_parse_frame_flags(AVVorbisParseContext *s, const uint8_t *buf, 60 | int buf_size, int *flags); 61 | 62 | /** 63 | * Get the duration for a Vorbis packet. 64 | * 65 | * @param s Vorbis parser context 66 | * @param buf buffer containing a Vorbis frame 67 | * @param buf_size size of the buffer 68 | */ 69 | int av_vorbis_parse_frame(AVVorbisParseContext *s, const uint8_t *buf, 70 | int buf_size); 71 | 72 | void av_vorbis_parse_reset(AVVorbisParseContext *s); 73 | 74 | #endif /* AVCODEC_VORBIS_PARSER_H */ 75 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavdevice/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVDEVICE_VERSION_H 20 | #define AVDEVICE_VERSION_H 21 | 22 | /** 23 | * @file 24 | * @ingroup lavd 25 | * Libavdevice version macros 26 | */ 27 | 28 | #include "libavutil/version.h" 29 | 30 | #define LIBAVDEVICE_VERSION_MAJOR 58 31 | #define LIBAVDEVICE_VERSION_MINOR 5 32 | #define LIBAVDEVICE_VERSION_MICRO 100 33 | 34 | #define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \ 35 | LIBAVDEVICE_VERSION_MINOR, \ 36 | LIBAVDEVICE_VERSION_MICRO) 37 | #define LIBAVDEVICE_VERSION AV_VERSION(LIBAVDEVICE_VERSION_MAJOR, \ 38 | LIBAVDEVICE_VERSION_MINOR, \ 39 | LIBAVDEVICE_VERSION_MICRO) 40 | #define LIBAVDEVICE_BUILD LIBAVDEVICE_VERSION_INT 41 | 42 | #define LIBAVDEVICE_IDENT "Lavd" AV_STRINGIFY(LIBAVDEVICE_VERSION) 43 | 44 | /** 45 | * FF_API_* defines may be placed below to indicate public API that will be 46 | * dropped at a future version bump. The defines themselves are not part of 47 | * the public API and may change, break or disappear at any time. 48 | */ 49 | 50 | #endif /* AVDEVICE_VERSION_H */ 51 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavfilter/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Version macros. 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVFILTER_VERSION_H 22 | #define AVFILTER_VERSION_H 23 | 24 | /** 25 | * @file 26 | * @ingroup lavfi 27 | * Libavfilter version macros 28 | */ 29 | 30 | #include "libavutil/version.h" 31 | 32 | #define LIBAVFILTER_VERSION_MAJOR 7 33 | #define LIBAVFILTER_VERSION_MINOR 40 34 | #define LIBAVFILTER_VERSION_MICRO 101 35 | 36 | #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ 37 | LIBAVFILTER_VERSION_MINOR, \ 38 | LIBAVFILTER_VERSION_MICRO) 39 | #define LIBAVFILTER_VERSION AV_VERSION(LIBAVFILTER_VERSION_MAJOR, \ 40 | LIBAVFILTER_VERSION_MINOR, \ 41 | LIBAVFILTER_VERSION_MICRO) 42 | #define LIBAVFILTER_BUILD LIBAVFILTER_VERSION_INT 43 | 44 | #define LIBAVFILTER_IDENT "Lavfi" AV_STRINGIFY(LIBAVFILTER_VERSION) 45 | 46 | /** 47 | * FF_API_* defines may be placed below to indicate public API that will be 48 | * dropped at a future version bump. The defines themselves are not part of 49 | * the public API and may change, break or disappear at any time. 50 | */ 51 | 52 | #ifndef FF_API_OLD_FILTER_OPTS_ERROR 53 | #define FF_API_OLD_FILTER_OPTS_ERROR (LIBAVFILTER_VERSION_MAJOR < 8) 54 | #endif 55 | #ifndef FF_API_LAVR_OPTS 56 | #define FF_API_LAVR_OPTS (LIBAVFILTER_VERSION_MAJOR < 8) 57 | #endif 58 | #ifndef FF_API_FILTER_GET_SET 59 | #define FF_API_FILTER_GET_SET (LIBAVFILTER_VERSION_MAJOR < 8) 60 | #endif 61 | #ifndef FF_API_NEXT 62 | #define FF_API_NEXT (LIBAVFILTER_VERSION_MAJOR < 8) 63 | #endif 64 | 65 | #endif /* AVFILTER_VERSION_H */ 66 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavformat/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Version macros. 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVFORMAT_VERSION_H 22 | #define AVFORMAT_VERSION_H 23 | 24 | /** 25 | * @file 26 | * @ingroup libavf 27 | * Libavformat version macros 28 | */ 29 | 30 | #include "libavutil/version.h" 31 | 32 | // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) 33 | // Also please add any ticket numbers that you believe might be affected here 34 | #define LIBAVFORMAT_VERSION_MAJOR 58 35 | #define LIBAVFORMAT_VERSION_MINOR 20 36 | #define LIBAVFORMAT_VERSION_MICRO 100 37 | 38 | #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ 39 | LIBAVFORMAT_VERSION_MINOR, \ 40 | LIBAVFORMAT_VERSION_MICRO) 41 | #define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \ 42 | LIBAVFORMAT_VERSION_MINOR, \ 43 | LIBAVFORMAT_VERSION_MICRO) 44 | #define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT 45 | 46 | #define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION) 47 | 48 | /** 49 | * FF_API_* defines may be placed below to indicate public API that will be 50 | * dropped at a future version bump. The defines themselves are not part of 51 | * the public API and may change, break or disappear at any time. 52 | * 53 | * @note, when bumping the major version it is recommended to manually 54 | * disable each FF_API_* in its own commit instead of disabling them all 55 | * at once through the bump. This improves the git bisect-ability of the change. 56 | * 57 | */ 58 | #ifndef FF_API_COMPUTE_PKT_FIELDS2 59 | #define FF_API_COMPUTE_PKT_FIELDS2 (LIBAVFORMAT_VERSION_MAJOR < 59) 60 | #endif 61 | #ifndef FF_API_OLD_OPEN_CALLBACKS 62 | #define FF_API_OLD_OPEN_CALLBACKS (LIBAVFORMAT_VERSION_MAJOR < 59) 63 | #endif 64 | #ifndef FF_API_LAVF_AVCTX 65 | #define FF_API_LAVF_AVCTX (LIBAVFORMAT_VERSION_MAJOR < 59) 66 | #endif 67 | #ifndef FF_API_HTTP_USER_AGENT 68 | #define FF_API_HTTP_USER_AGENT (LIBAVFORMAT_VERSION_MAJOR < 59) 69 | #endif 70 | #ifndef FF_API_HLS_WRAP 71 | #define FF_API_HLS_WRAP (LIBAVFORMAT_VERSION_MAJOR < 59) 72 | #endif 73 | #ifndef FF_API_HLS_USE_LOCALTIME 74 | #define FF_API_HLS_USE_LOCALTIME (LIBAVFORMAT_VERSION_MAJOR < 59) 75 | #endif 76 | #ifndef FF_API_LAVF_KEEPSIDE_FLAG 77 | #define FF_API_LAVF_KEEPSIDE_FLAG (LIBAVFORMAT_VERSION_MAJOR < 59) 78 | #endif 79 | #ifndef FF_API_OLD_ROTATE_API 80 | #define FF_API_OLD_ROTATE_API (LIBAVFORMAT_VERSION_MAJOR < 59) 81 | #endif 82 | #ifndef FF_API_FORMAT_GET_SET 83 | #define FF_API_FORMAT_GET_SET (LIBAVFORMAT_VERSION_MAJOR < 59) 84 | #endif 85 | #ifndef FF_API_OLD_AVIO_EOF_0 86 | #define FF_API_OLD_AVIO_EOF_0 (LIBAVFORMAT_VERSION_MAJOR < 59) 87 | #endif 88 | #ifndef FF_API_LAVF_FFSERVER 89 | #define FF_API_LAVF_FFSERVER (LIBAVFORMAT_VERSION_MAJOR < 59) 90 | #endif 91 | #ifndef FF_API_FORMAT_FILENAME 92 | #define FF_API_FORMAT_FILENAME (LIBAVFORMAT_VERSION_MAJOR < 59) 93 | #endif 94 | #ifndef FF_API_OLD_RTSP_OPTIONS 95 | #define FF_API_OLD_RTSP_OPTIONS (LIBAVFORMAT_VERSION_MAJOR < 59) 96 | #endif 97 | #ifndef FF_API_NEXT 98 | #define FF_API_NEXT (LIBAVFORMAT_VERSION_MAJOR < 59) 99 | #endif 100 | #ifndef FF_API_DASH_MIN_SEG_DURATION 101 | #define FF_API_DASH_MIN_SEG_DURATION (LIBAVFORMAT_VERSION_MAJOR < 59) 102 | #endif 103 | #ifndef FF_API_LAVF_MP4A_LATM 104 | #define FF_API_LAVF_MP4A_LATM (LIBAVFORMAT_VERSION_MAJOR < 59) 105 | #endif 106 | 107 | 108 | #ifndef FF_API_R_FRAME_RATE 109 | #define FF_API_R_FRAME_RATE 1 110 | #endif 111 | #endif /* AVFORMAT_VERSION_H */ 112 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/adler32.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2006 Mans Rullgard 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | /** 22 | * @file 23 | * @ingroup lavu_adler32 24 | * Public header for Adler-32 hash function implementation. 25 | */ 26 | 27 | #ifndef AVUTIL_ADLER32_H 28 | #define AVUTIL_ADLER32_H 29 | 30 | #include 31 | #include "attributes.h" 32 | 33 | /** 34 | * @defgroup lavu_adler32 Adler-32 35 | * @ingroup lavu_hash 36 | * Adler-32 hash function implementation. 37 | * 38 | * @{ 39 | */ 40 | 41 | /** 42 | * Calculate the Adler32 checksum of a buffer. 43 | * 44 | * Passing the return value to a subsequent av_adler32_update() call 45 | * allows the checksum of multiple buffers to be calculated as though 46 | * they were concatenated. 47 | * 48 | * @param adler initial checksum value 49 | * @param buf pointer to input buffer 50 | * @param len size of input buffer 51 | * @return updated checksum 52 | */ 53 | unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, 54 | unsigned int len) av_pure; 55 | 56 | /** 57 | * @} 58 | */ 59 | 60 | #endif /* AVUTIL_ADLER32_H */ 61 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/aes.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2007 Michael Niedermayer 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_AES_H 22 | #define AVUTIL_AES_H 23 | 24 | #include 25 | 26 | #include "attributes.h" 27 | #include "version.h" 28 | 29 | /** 30 | * @defgroup lavu_aes AES 31 | * @ingroup lavu_crypto 32 | * @{ 33 | */ 34 | 35 | extern const int av_aes_size; 36 | 37 | struct AVAES; 38 | 39 | /** 40 | * Allocate an AVAES context. 41 | */ 42 | struct AVAES *av_aes_alloc(void); 43 | 44 | /** 45 | * Initialize an AVAES context. 46 | * @param key_bits 128, 192 or 256 47 | * @param decrypt 0 for encryption, 1 for decryption 48 | */ 49 | int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt); 50 | 51 | /** 52 | * Encrypt or decrypt a buffer using a previously initialized context. 53 | * @param count number of 16 byte blocks 54 | * @param dst destination array, can be equal to src 55 | * @param src source array, can be equal to dst 56 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used 57 | * @param decrypt 0 for encryption, 1 for decryption 58 | */ 59 | void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); 60 | 61 | /** 62 | * @} 63 | */ 64 | 65 | #endif /* AVUTIL_AES_H */ 66 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/aes_ctr.h: -------------------------------------------------------------------------------- 1 | /* 2 | * AES-CTR cipher 3 | * Copyright (c) 2015 Eran Kornblau 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_AES_CTR_H 23 | #define AVUTIL_AES_CTR_H 24 | 25 | #include 26 | 27 | #include "attributes.h" 28 | #include "version.h" 29 | 30 | #define AES_CTR_KEY_SIZE (16) 31 | #define AES_CTR_IV_SIZE (8) 32 | 33 | struct AVAESCTR; 34 | 35 | /** 36 | * Allocate an AVAESCTR context. 37 | */ 38 | struct AVAESCTR *av_aes_ctr_alloc(void); 39 | 40 | /** 41 | * Initialize an AVAESCTR context. 42 | * @param key encryption key, must have a length of AES_CTR_KEY_SIZE 43 | */ 44 | int av_aes_ctr_init(struct AVAESCTR *a, const uint8_t *key); 45 | 46 | /** 47 | * Release an AVAESCTR context. 48 | */ 49 | void av_aes_ctr_free(struct AVAESCTR *a); 50 | 51 | /** 52 | * Process a buffer using a previously initialized context. 53 | * @param dst destination array, can be equal to src 54 | * @param src source array, can be equal to dst 55 | * @param size the size of src and dst 56 | */ 57 | void av_aes_ctr_crypt(struct AVAESCTR *a, uint8_t *dst, const uint8_t *src, int size); 58 | 59 | /** 60 | * Get the current iv 61 | */ 62 | const uint8_t* av_aes_ctr_get_iv(struct AVAESCTR *a); 63 | 64 | /** 65 | * Generate a random iv 66 | */ 67 | void av_aes_ctr_set_random_iv(struct AVAESCTR *a); 68 | 69 | /** 70 | * Forcefully change the 8-byte iv 71 | */ 72 | void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t* iv); 73 | 74 | /** 75 | * Forcefully change the "full" 16-byte iv, including the counter 76 | */ 77 | void av_aes_ctr_set_full_iv(struct AVAESCTR *a, const uint8_t* iv); 78 | 79 | /** 80 | * Increment the top 64 bit of the iv (performed after each frame) 81 | */ 82 | void av_aes_ctr_increment_iv(struct AVAESCTR *a); 83 | 84 | /** 85 | * @} 86 | */ 87 | 88 | #endif /* AVUTIL_AES_CTR_H */ 89 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/avassert.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2010 Michael Niedermayer 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | /** 22 | * @file 23 | * simple assert() macros that are a bit more flexible than ISO C assert(). 24 | * @author Michael Niedermayer 25 | */ 26 | 27 | #ifndef AVUTIL_AVASSERT_H 28 | #define AVUTIL_AVASSERT_H 29 | 30 | #include 31 | #include "avutil.h" 32 | #include "log.h" 33 | 34 | /** 35 | * assert() equivalent, that is always enabled. 36 | */ 37 | #define av_assert0(cond) do { \ 38 | if (!(cond)) { \ 39 | av_log(NULL, AV_LOG_PANIC, "Assertion %s failed at %s:%d\n", \ 40 | AV_STRINGIFY(cond), __FILE__, __LINE__); \ 41 | abort(); \ 42 | } \ 43 | } while (0) 44 | 45 | 46 | /** 47 | * assert() equivalent, that does not lie in speed critical code. 48 | * These asserts() thus can be enabled without fearing speed loss. 49 | */ 50 | #if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0 51 | #define av_assert1(cond) av_assert0(cond) 52 | #else 53 | #define av_assert1(cond) ((void)0) 54 | #endif 55 | 56 | 57 | /** 58 | * assert() equivalent, that does lie in speed critical code. 59 | */ 60 | #if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1 61 | #define av_assert2(cond) av_assert0(cond) 62 | #define av_assert2_fpu() av_assert0_fpu() 63 | #else 64 | #define av_assert2(cond) ((void)0) 65 | #define av_assert2_fpu() ((void)0) 66 | #endif 67 | 68 | /** 69 | * Assert that floating point operations can be executed. 70 | * 71 | * This will av_assert0() that the cpu is not in MMX state on X86 72 | */ 73 | void av_assert0_fpu(void); 74 | 75 | #endif /* AVUTIL_AVASSERT_H */ 76 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/avconfig.h: -------------------------------------------------------------------------------- 1 | /* Generated by ffmpeg configure */ 2 | #ifndef AVUTIL_AVCONFIG_H 3 | #define AVUTIL_AVCONFIG_H 4 | #define AV_HAVE_BIGENDIAN 0 5 | #define AV_HAVE_FAST_UNALIGNED 1 6 | #endif /* AVUTIL_AVCONFIG_H */ 7 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/base64.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2006 Ryan Martell. (rdm4@martellventures.com) 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_BASE64_H 22 | #define AVUTIL_BASE64_H 23 | 24 | #include 25 | 26 | /** 27 | * @defgroup lavu_base64 Base64 28 | * @ingroup lavu_crypto 29 | * @{ 30 | */ 31 | 32 | /** 33 | * Decode a base64-encoded string. 34 | * 35 | * @param out buffer for decoded data 36 | * @param in null-terminated input string 37 | * @param out_size size in bytes of the out buffer, must be at 38 | * least 3/4 of the length of in, that is AV_BASE64_DECODE_SIZE(strlen(in)) 39 | * @return number of bytes written, or a negative value in case of 40 | * invalid input 41 | */ 42 | int av_base64_decode(uint8_t *out, const char *in, int out_size); 43 | 44 | /** 45 | * Calculate the output size in bytes needed to decode a base64 string 46 | * with length x to a data buffer. 47 | */ 48 | #define AV_BASE64_DECODE_SIZE(x) ((x) * 3LL / 4) 49 | 50 | /** 51 | * Encode data to base64 and null-terminate. 52 | * 53 | * @param out buffer for encoded data 54 | * @param out_size size in bytes of the out buffer (including the 55 | * null terminator), must be at least AV_BASE64_SIZE(in_size) 56 | * @param in input buffer containing the data to encode 57 | * @param in_size size in bytes of the in buffer 58 | * @return out or NULL in case of error 59 | */ 60 | char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size); 61 | 62 | /** 63 | * Calculate the output size needed to base64-encode x bytes to a 64 | * null-terminated string. 65 | */ 66 | #define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1) 67 | 68 | /** 69 | * @} 70 | */ 71 | 72 | #endif /* AVUTIL_BASE64_H */ 73 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/blowfish.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Blowfish algorithm 3 | * Copyright (c) 2012 Samuel Pitoiset 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_BLOWFISH_H 23 | #define AVUTIL_BLOWFISH_H 24 | 25 | #include 26 | 27 | /** 28 | * @defgroup lavu_blowfish Blowfish 29 | * @ingroup lavu_crypto 30 | * @{ 31 | */ 32 | 33 | #define AV_BF_ROUNDS 16 34 | 35 | typedef struct AVBlowfish { 36 | uint32_t p[AV_BF_ROUNDS + 2]; 37 | uint32_t s[4][256]; 38 | } AVBlowfish; 39 | 40 | /** 41 | * Allocate an AVBlowfish context. 42 | */ 43 | AVBlowfish *av_blowfish_alloc(void); 44 | 45 | /** 46 | * Initialize an AVBlowfish context. 47 | * 48 | * @param ctx an AVBlowfish context 49 | * @param key a key 50 | * @param key_len length of the key 51 | */ 52 | void av_blowfish_init(struct AVBlowfish *ctx, const uint8_t *key, int key_len); 53 | 54 | /** 55 | * Encrypt or decrypt a buffer using a previously initialized context. 56 | * 57 | * @param ctx an AVBlowfish context 58 | * @param xl left four bytes halves of input to be encrypted 59 | * @param xr right four bytes halves of input to be encrypted 60 | * @param decrypt 0 for encryption, 1 for decryption 61 | */ 62 | void av_blowfish_crypt_ecb(struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr, 63 | int decrypt); 64 | 65 | /** 66 | * Encrypt or decrypt a buffer using a previously initialized context. 67 | * 68 | * @param ctx an AVBlowfish context 69 | * @param dst destination array, can be equal to src 70 | * @param src source array, can be equal to dst 71 | * @param count number of 8 byte blocks 72 | * @param iv initialization vector for CBC mode, if NULL ECB will be used 73 | * @param decrypt 0 for encryption, 1 for decryption 74 | */ 75 | void av_blowfish_crypt(struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, 76 | int count, uint8_t *iv, int decrypt); 77 | 78 | /** 79 | * @} 80 | */ 81 | 82 | #endif /* AVUTIL_BLOWFISH_H */ 83 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/bswap.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2006 Michael Niedermayer 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | /** 22 | * @file 23 | * byte swapping routines 24 | */ 25 | 26 | #ifndef AVUTIL_BSWAP_H 27 | #define AVUTIL_BSWAP_H 28 | 29 | #include 30 | #include "libavutil/avconfig.h" 31 | #include "attributes.h" 32 | 33 | #ifdef HAVE_AV_CONFIG_H 34 | 35 | #include "config.h" 36 | 37 | #if ARCH_AARCH64 38 | # include "aarch64/bswap.h" 39 | #elif ARCH_ARM 40 | # include "arm/bswap.h" 41 | #elif ARCH_AVR32 42 | # include "avr32/bswap.h" 43 | #elif ARCH_SH4 44 | # include "sh4/bswap.h" 45 | #elif ARCH_X86 46 | # include "x86/bswap.h" 47 | #endif 48 | 49 | #endif /* HAVE_AV_CONFIG_H */ 50 | 51 | #define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff)) 52 | #define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16)) 53 | #define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32)) 54 | 55 | #define AV_BSWAPC(s, x) AV_BSWAP##s##C(x) 56 | 57 | #ifndef av_bswap16 58 | static av_always_inline av_const uint16_t av_bswap16(uint16_t x) 59 | { 60 | x= (x>>8) | (x<<8); 61 | return x; 62 | } 63 | #endif 64 | 65 | #ifndef av_bswap32 66 | static av_always_inline av_const uint32_t av_bswap32(uint32_t x) 67 | { 68 | return AV_BSWAP32C(x); 69 | } 70 | #endif 71 | 72 | #ifndef av_bswap64 73 | static inline uint64_t av_const av_bswap64(uint64_t x) 74 | { 75 | return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32); 76 | } 77 | #endif 78 | 79 | // be2ne ... big-endian to native-endian 80 | // le2ne ... little-endian to native-endian 81 | 82 | #if AV_HAVE_BIGENDIAN 83 | #define av_be2ne16(x) (x) 84 | #define av_be2ne32(x) (x) 85 | #define av_be2ne64(x) (x) 86 | #define av_le2ne16(x) av_bswap16(x) 87 | #define av_le2ne32(x) av_bswap32(x) 88 | #define av_le2ne64(x) av_bswap64(x) 89 | #define AV_BE2NEC(s, x) (x) 90 | #define AV_LE2NEC(s, x) AV_BSWAPC(s, x) 91 | #else 92 | #define av_be2ne16(x) av_bswap16(x) 93 | #define av_be2ne32(x) av_bswap32(x) 94 | #define av_be2ne64(x) av_bswap64(x) 95 | #define av_le2ne16(x) (x) 96 | #define av_le2ne32(x) (x) 97 | #define av_le2ne64(x) (x) 98 | #define AV_BE2NEC(s, x) AV_BSWAPC(s, x) 99 | #define AV_LE2NEC(s, x) (x) 100 | #endif 101 | 102 | #define AV_BE2NE16C(x) AV_BE2NEC(16, x) 103 | #define AV_BE2NE32C(x) AV_BE2NEC(32, x) 104 | #define AV_BE2NE64C(x) AV_BE2NEC(64, x) 105 | #define AV_LE2NE16C(x) AV_LE2NEC(16, x) 106 | #define AV_LE2NE32C(x) AV_LE2NEC(32, x) 107 | #define AV_LE2NE64C(x) AV_LE2NEC(64, x) 108 | 109 | #endif /* AVUTIL_BSWAP_H */ 110 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/camellia.h: -------------------------------------------------------------------------------- 1 | /* 2 | * An implementation of the CAMELLIA algorithm as mentioned in RFC3713 3 | * Copyright (c) 2014 Supraja Meedinti 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_CAMELLIA_H 23 | #define AVUTIL_CAMELLIA_H 24 | 25 | #include 26 | 27 | 28 | /** 29 | * @file 30 | * @brief Public header for libavutil CAMELLIA algorithm 31 | * @defgroup lavu_camellia CAMELLIA 32 | * @ingroup lavu_crypto 33 | * @{ 34 | */ 35 | 36 | extern const int av_camellia_size; 37 | 38 | struct AVCAMELLIA; 39 | 40 | /** 41 | * Allocate an AVCAMELLIA context 42 | * To free the struct: av_free(ptr) 43 | */ 44 | struct AVCAMELLIA *av_camellia_alloc(void); 45 | 46 | /** 47 | * Initialize an AVCAMELLIA context. 48 | * 49 | * @param ctx an AVCAMELLIA context 50 | * @param key a key of 16, 24, 32 bytes used for encryption/decryption 51 | * @param key_bits number of keybits: possible are 128, 192, 256 52 | */ 53 | int av_camellia_init(struct AVCAMELLIA *ctx, const uint8_t *key, int key_bits); 54 | 55 | /** 56 | * Encrypt or decrypt a buffer using a previously initialized context 57 | * 58 | * @param ctx an AVCAMELLIA context 59 | * @param dst destination array, can be equal to src 60 | * @param src source array, can be equal to dst 61 | * @param count number of 16 byte blocks 62 | * @paran iv initialization vector for CBC mode, NULL for ECB mode 63 | * @param decrypt 0 for encryption, 1 for decryption 64 | */ 65 | void av_camellia_crypt(struct AVCAMELLIA *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t* iv, int decrypt); 66 | 67 | /** 68 | * @} 69 | */ 70 | #endif /* AVUTIL_CAMELLIA_H */ 71 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/cast5.h: -------------------------------------------------------------------------------- 1 | /* 2 | * An implementation of the CAST128 algorithm as mentioned in RFC2144 3 | * Copyright (c) 2014 Supraja Meedinti 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_CAST5_H 23 | #define AVUTIL_CAST5_H 24 | 25 | #include 26 | 27 | 28 | /** 29 | * @file 30 | * @brief Public header for libavutil CAST5 algorithm 31 | * @defgroup lavu_cast5 CAST5 32 | * @ingroup lavu_crypto 33 | * @{ 34 | */ 35 | 36 | extern const int av_cast5_size; 37 | 38 | struct AVCAST5; 39 | 40 | /** 41 | * Allocate an AVCAST5 context 42 | * To free the struct: av_free(ptr) 43 | */ 44 | struct AVCAST5 *av_cast5_alloc(void); 45 | /** 46 | * Initialize an AVCAST5 context. 47 | * 48 | * @param ctx an AVCAST5 context 49 | * @param key a key of 5,6,...16 bytes used for encryption/decryption 50 | * @param key_bits number of keybits: possible are 40,48,...,128 51 | * @return 0 on success, less than 0 on failure 52 | */ 53 | int av_cast5_init(struct AVCAST5 *ctx, const uint8_t *key, int key_bits); 54 | 55 | /** 56 | * Encrypt or decrypt a buffer using a previously initialized context, ECB mode only 57 | * 58 | * @param ctx an AVCAST5 context 59 | * @param dst destination array, can be equal to src 60 | * @param src source array, can be equal to dst 61 | * @param count number of 8 byte blocks 62 | * @param decrypt 0 for encryption, 1 for decryption 63 | */ 64 | void av_cast5_crypt(struct AVCAST5 *ctx, uint8_t *dst, const uint8_t *src, int count, int decrypt); 65 | 66 | /** 67 | * Encrypt or decrypt a buffer using a previously initialized context 68 | * 69 | * @param ctx an AVCAST5 context 70 | * @param dst destination array, can be equal to src 71 | * @param src source array, can be equal to dst 72 | * @param count number of 8 byte blocks 73 | * @param iv initialization vector for CBC mode, NULL for ECB mode 74 | * @param decrypt 0 for encryption, 1 for decryption 75 | */ 76 | void av_cast5_crypt2(struct AVCAST5 *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); 77 | /** 78 | * @} 79 | */ 80 | #endif /* AVUTIL_CAST5_H */ 81 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/crc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2006 Michael Niedermayer 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | /** 22 | * @file 23 | * @ingroup lavu_crc32 24 | * Public header for CRC hash function implementation. 25 | */ 26 | 27 | #ifndef AVUTIL_CRC_H 28 | #define AVUTIL_CRC_H 29 | 30 | #include 31 | #include 32 | #include "attributes.h" 33 | #include "version.h" 34 | 35 | /** 36 | * @defgroup lavu_crc32 CRC 37 | * @ingroup lavu_hash 38 | * CRC (Cyclic Redundancy Check) hash function implementation. 39 | * 40 | * This module supports numerous CRC polynomials, in addition to the most 41 | * widely used CRC-32-IEEE. See @ref AVCRCId for a list of available 42 | * polynomials. 43 | * 44 | * @{ 45 | */ 46 | 47 | typedef uint32_t AVCRC; 48 | 49 | typedef enum { 50 | AV_CRC_8_ATM, 51 | AV_CRC_16_ANSI, 52 | AV_CRC_16_CCITT, 53 | AV_CRC_32_IEEE, 54 | AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */ 55 | AV_CRC_16_ANSI_LE, /*< reversed bitorder version of AV_CRC_16_ANSI */ 56 | AV_CRC_24_IEEE, 57 | AV_CRC_8_EBU, 58 | AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */ 59 | }AVCRCId; 60 | 61 | /** 62 | * Initialize a CRC table. 63 | * @param ctx must be an array of size sizeof(AVCRC)*257 or sizeof(AVCRC)*1024 64 | * @param le If 1, the lowest bit represents the coefficient for the highest 65 | * exponent of the corresponding polynomial (both for poly and 66 | * actual CRC). 67 | * If 0, you must swap the CRC parameter and the result of av_crc 68 | * if you need the standard representation (can be simplified in 69 | * most cases to e.g. bswap16): 70 | * av_bswap32(crc << (32-bits)) 71 | * @param bits number of bits for the CRC 72 | * @param poly generator polynomial without the x**bits coefficient, in the 73 | * representation as specified by le 74 | * @param ctx_size size of ctx in bytes 75 | * @return <0 on failure 76 | */ 77 | int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size); 78 | 79 | /** 80 | * Get an initialized standard CRC table. 81 | * @param crc_id ID of a standard CRC 82 | * @return a pointer to the CRC table or NULL on failure 83 | */ 84 | const AVCRC *av_crc_get_table(AVCRCId crc_id); 85 | 86 | /** 87 | * Calculate the CRC of a block. 88 | * @param crc CRC of previous blocks if any or initial value for CRC 89 | * @return CRC updated with the data from the given block 90 | * 91 | * @see av_crc_init() "le" parameter 92 | */ 93 | uint32_t av_crc(const AVCRC *ctx, uint32_t crc, 94 | const uint8_t *buffer, size_t length) av_pure; 95 | 96 | /** 97 | * @} 98 | */ 99 | 100 | #endif /* AVUTIL_CRC_H */ 101 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/des.h: -------------------------------------------------------------------------------- 1 | /* 2 | * DES encryption/decryption 3 | * Copyright (c) 2007 Reimar Doeffinger 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_DES_H 23 | #define AVUTIL_DES_H 24 | 25 | #include 26 | 27 | /** 28 | * @defgroup lavu_des DES 29 | * @ingroup lavu_crypto 30 | * @{ 31 | */ 32 | 33 | typedef struct AVDES { 34 | uint64_t round_keys[3][16]; 35 | int triple_des; 36 | } AVDES; 37 | 38 | /** 39 | * Allocate an AVDES context. 40 | */ 41 | AVDES *av_des_alloc(void); 42 | 43 | /** 44 | * @brief Initializes an AVDES context. 45 | * 46 | * @param key_bits must be 64 or 192 47 | * @param decrypt 0 for encryption/CBC-MAC, 1 for decryption 48 | * @return zero on success, negative value otherwise 49 | */ 50 | int av_des_init(struct AVDES *d, const uint8_t *key, int key_bits, int decrypt); 51 | 52 | /** 53 | * @brief Encrypts / decrypts using the DES algorithm. 54 | * 55 | * @param count number of 8 byte blocks 56 | * @param dst destination array, can be equal to src, must be 8-byte aligned 57 | * @param src source array, can be equal to dst, must be 8-byte aligned, may be NULL 58 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used, 59 | * must be 8-byte aligned 60 | * @param decrypt 0 for encryption, 1 for decryption 61 | */ 62 | void av_des_crypt(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); 63 | 64 | /** 65 | * @brief Calculates CBC-MAC using the DES algorithm. 66 | * 67 | * @param count number of 8 byte blocks 68 | * @param dst destination array, can be equal to src, must be 8-byte aligned 69 | * @param src source array, can be equal to dst, must be 8-byte aligned, may be NULL 70 | */ 71 | void av_des_mac(struct AVDES *d, uint8_t *dst, const uint8_t *src, int count); 72 | 73 | /** 74 | * @} 75 | */ 76 | 77 | #endif /* AVUTIL_DES_H */ 78 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/display.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Vittorio Giovara 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | /** 22 | * @file 23 | * Display matrix 24 | */ 25 | 26 | #ifndef AVUTIL_DISPLAY_H 27 | #define AVUTIL_DISPLAY_H 28 | 29 | #include 30 | #include "common.h" 31 | 32 | /** 33 | * @addtogroup lavu_video 34 | * @{ 35 | * 36 | * @defgroup lavu_video_display Display transformation matrix functions 37 | * @{ 38 | */ 39 | 40 | /** 41 | * @addtogroup lavu_video_display 42 | * The display transformation matrix specifies an affine transformation that 43 | * should be applied to video frames for correct presentation. It is compatible 44 | * with the matrices stored in the ISO/IEC 14496-12 container format. 45 | * 46 | * The data is a 3x3 matrix represented as a 9-element array: 47 | * 48 | * @code{.unparsed} 49 | * | a b u | 50 | * (a, b, u, c, d, v, x, y, w) -> | c d v | 51 | * | x y w | 52 | * @endcode 53 | * 54 | * All numbers are stored in native endianness, as 16.16 fixed-point values, 55 | * except for u, v and w, which are stored as 2.30 fixed-point values. 56 | * 57 | * The transformation maps a point (p, q) in the source (pre-transformation) 58 | * frame to the point (p', q') in the destination (post-transformation) frame as 59 | * follows: 60 | * 61 | * @code{.unparsed} 62 | * | a b u | 63 | * (p, q, 1) . | c d v | = z * (p', q', 1) 64 | * | x y w | 65 | * @endcode 66 | * 67 | * The transformation can also be more explicitly written in components as 68 | * follows: 69 | * 70 | * @code{.unparsed} 71 | * p' = (a * p + c * q + x) / z; 72 | * q' = (b * p + d * q + y) / z; 73 | * z = u * p + v * q + w 74 | * @endcode 75 | */ 76 | 77 | /** 78 | * Extract the rotation component of the transformation matrix. 79 | * 80 | * @param matrix the transformation matrix 81 | * @return the angle (in degrees) by which the transformation rotates the frame 82 | * counterclockwise. The angle will be in range [-180.0, 180.0], 83 | * or NaN if the matrix is singular. 84 | * 85 | * @note floating point numbers are inherently inexact, so callers are 86 | * recommended to round the return value to nearest integer before use. 87 | */ 88 | double av_display_rotation_get(const int32_t matrix[9]); 89 | 90 | /** 91 | * Initialize a transformation matrix describing a pure counterclockwise 92 | * rotation by the specified angle (in degrees). 93 | * 94 | * @param matrix an allocated transformation matrix (will be fully overwritten 95 | * by this function) 96 | * @param angle rotation angle in degrees. 97 | */ 98 | void av_display_rotation_set(int32_t matrix[9], double angle); 99 | 100 | /** 101 | * Flip the input matrix horizontally and/or vertically. 102 | * 103 | * @param matrix an allocated transformation matrix 104 | * @param hflip whether the matrix should be flipped horizontally 105 | * @param vflip whether the matrix should be flipped vertically 106 | */ 107 | void av_display_matrix_flip(int32_t matrix[9], int hflip, int vflip); 108 | 109 | /** 110 | * @} 111 | * @} 112 | */ 113 | 114 | #endif /* AVUTIL_DISPLAY_H */ 115 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/downmix_info.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Tim Walker 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_DOWNMIX_INFO_H 22 | #define AVUTIL_DOWNMIX_INFO_H 23 | 24 | #include "frame.h" 25 | 26 | /** 27 | * @file 28 | * audio downmix medatata 29 | */ 30 | 31 | /** 32 | * @addtogroup lavu_audio 33 | * @{ 34 | */ 35 | 36 | /** 37 | * @defgroup downmix_info Audio downmix metadata 38 | * @{ 39 | */ 40 | 41 | /** 42 | * Possible downmix types. 43 | */ 44 | enum AVDownmixType { 45 | AV_DOWNMIX_TYPE_UNKNOWN, /**< Not indicated. */ 46 | AV_DOWNMIX_TYPE_LORO, /**< Lo/Ro 2-channel downmix (Stereo). */ 47 | AV_DOWNMIX_TYPE_LTRT, /**< Lt/Rt 2-channel downmix, Dolby Surround compatible. */ 48 | AV_DOWNMIX_TYPE_DPLII, /**< Lt/Rt 2-channel downmix, Dolby Pro Logic II compatible. */ 49 | AV_DOWNMIX_TYPE_NB /**< Number of downmix types. Not part of ABI. */ 50 | }; 51 | 52 | /** 53 | * This structure describes optional metadata relevant to a downmix procedure. 54 | * 55 | * All fields are set by the decoder to the value indicated in the audio 56 | * bitstream (if present), or to a "sane" default otherwise. 57 | */ 58 | typedef struct AVDownmixInfo { 59 | /** 60 | * Type of downmix preferred by the mastering engineer. 61 | */ 62 | enum AVDownmixType preferred_downmix_type; 63 | 64 | /** 65 | * Absolute scale factor representing the nominal level of the center 66 | * channel during a regular downmix. 67 | */ 68 | double center_mix_level; 69 | 70 | /** 71 | * Absolute scale factor representing the nominal level of the center 72 | * channel during an Lt/Rt compatible downmix. 73 | */ 74 | double center_mix_level_ltrt; 75 | 76 | /** 77 | * Absolute scale factor representing the nominal level of the surround 78 | * channels during a regular downmix. 79 | */ 80 | double surround_mix_level; 81 | 82 | /** 83 | * Absolute scale factor representing the nominal level of the surround 84 | * channels during an Lt/Rt compatible downmix. 85 | */ 86 | double surround_mix_level_ltrt; 87 | 88 | /** 89 | * Absolute scale factor representing the level at which the LFE data is 90 | * mixed into L/R channels during downmixing. 91 | */ 92 | double lfe_mix_level; 93 | } AVDownmixInfo; 94 | 95 | /** 96 | * Get a frame's AV_FRAME_DATA_DOWNMIX_INFO side data for editing. 97 | * 98 | * If the side data is absent, it is created and added to the frame. 99 | * 100 | * @param frame the frame for which the side data is to be obtained or created 101 | * 102 | * @return the AVDownmixInfo structure to be edited by the caller, or NULL if 103 | * the structure cannot be allocated. 104 | */ 105 | AVDownmixInfo *av_downmix_info_update_side_data(AVFrame *frame); 106 | 107 | /** 108 | * @} 109 | */ 110 | 111 | /** 112 | * @} 113 | */ 114 | 115 | #endif /* AVUTIL_DOWNMIX_INFO_H */ 116 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/ffversion.h: -------------------------------------------------------------------------------- 1 | /* Automatically generated by version.sh, do not manually edit! */ 2 | #ifndef AVUTIL_FFVERSION_H 3 | #define AVUTIL_FFVERSION_H 4 | #define FFMPEG_VERSION "4.1" 5 | #endif /* AVUTIL_FFVERSION_H */ 6 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/file.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_FILE_H 20 | #define AVUTIL_FILE_H 21 | 22 | #include 23 | 24 | #include "avutil.h" 25 | 26 | /** 27 | * @file 28 | * Misc file utilities. 29 | */ 30 | 31 | /** 32 | * Read the file with name filename, and put its content in a newly 33 | * allocated buffer or map it with mmap() when available. 34 | * In case of success set *bufptr to the read or mmapped buffer, and 35 | * *size to the size in bytes of the buffer in *bufptr. 36 | * Unlike mmap this function succeeds with zero sized files, in this 37 | * case *bufptr will be set to NULL and *size will be set to 0. 38 | * The returned buffer must be released with av_file_unmap(). 39 | * 40 | * @param log_offset loglevel offset used for logging 41 | * @param log_ctx context used for logging 42 | * @return a non negative number in case of success, a negative value 43 | * corresponding to an AVERROR error code in case of failure 44 | */ 45 | av_warn_unused_result 46 | int av_file_map(const char *filename, uint8_t **bufptr, size_t *size, 47 | int log_offset, void *log_ctx); 48 | 49 | /** 50 | * Unmap or free the buffer bufptr created by av_file_map(). 51 | * 52 | * @param size size in bytes of bufptr, must be the same as returned 53 | * by av_file_map() 54 | */ 55 | void av_file_unmap(uint8_t *bufptr, size_t size); 56 | 57 | /** 58 | * Wrapper to work around the lack of mkstemp() on mingw. 59 | * Also, tries to create file in /tmp first, if possible. 60 | * *prefix can be a character constant; *filename will be allocated internally. 61 | * @return file descriptor of opened file (or negative value corresponding to an 62 | * AVERROR code on error) 63 | * and opened file name in **filename. 64 | * @note On very old libcs it is necessary to set a secure umask before 65 | * calling this, av_tempfile() can't call umask itself as it is used in 66 | * libraries and could interfere with the calling application. 67 | * @deprecated as fd numbers cannot be passed saftely between libs on some platforms 68 | */ 69 | int av_tempfile(const char *prefix, char **filename, int log_offset, void *log_ctx); 70 | 71 | #endif /* AVUTIL_FILE_H */ 72 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/hmac.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2012 Martin Storsjo 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_HMAC_H 22 | #define AVUTIL_HMAC_H 23 | 24 | #include 25 | 26 | #include "version.h" 27 | /** 28 | * @defgroup lavu_hmac HMAC 29 | * @ingroup lavu_crypto 30 | * @{ 31 | */ 32 | 33 | enum AVHMACType { 34 | AV_HMAC_MD5, 35 | AV_HMAC_SHA1, 36 | AV_HMAC_SHA224, 37 | AV_HMAC_SHA256, 38 | AV_HMAC_SHA384, 39 | AV_HMAC_SHA512, 40 | }; 41 | 42 | typedef struct AVHMAC AVHMAC; 43 | 44 | /** 45 | * Allocate an AVHMAC context. 46 | * @param type The hash function used for the HMAC. 47 | */ 48 | AVHMAC *av_hmac_alloc(enum AVHMACType type); 49 | 50 | /** 51 | * Free an AVHMAC context. 52 | * @param ctx The context to free, may be NULL 53 | */ 54 | void av_hmac_free(AVHMAC *ctx); 55 | 56 | /** 57 | * Initialize an AVHMAC context with an authentication key. 58 | * @param ctx The HMAC context 59 | * @param key The authentication key 60 | * @param keylen The length of the key, in bytes 61 | */ 62 | void av_hmac_init(AVHMAC *ctx, const uint8_t *key, unsigned int keylen); 63 | 64 | /** 65 | * Hash data with the HMAC. 66 | * @param ctx The HMAC context 67 | * @param data The data to hash 68 | * @param len The length of the data, in bytes 69 | */ 70 | void av_hmac_update(AVHMAC *ctx, const uint8_t *data, unsigned int len); 71 | 72 | /** 73 | * Finish hashing and output the HMAC digest. 74 | * @param ctx The HMAC context 75 | * @param out The output buffer to write the digest into 76 | * @param outlen The length of the out buffer, in bytes 77 | * @return The number of bytes written to out, or a negative error code. 78 | */ 79 | int av_hmac_final(AVHMAC *ctx, uint8_t *out, unsigned int outlen); 80 | 81 | /** 82 | * Hash an array of data with a key. 83 | * @param ctx The HMAC context 84 | * @param data The data to hash 85 | * @param len The length of the data, in bytes 86 | * @param key The authentication key 87 | * @param keylen The length of the key, in bytes 88 | * @param out The output buffer to write the digest into 89 | * @param outlen The length of the out buffer, in bytes 90 | * @return The number of bytes written to out, or a negative error code. 91 | */ 92 | int av_hmac_calc(AVHMAC *ctx, const uint8_t *data, unsigned int len, 93 | const uint8_t *key, unsigned int keylen, 94 | uint8_t *out, unsigned int outlen); 95 | 96 | /** 97 | * @} 98 | */ 99 | 100 | #endif /* AVUTIL_HMAC_H */ 101 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/hwcontext_cuda.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | 20 | #ifndef AVUTIL_HWCONTEXT_CUDA_H 21 | #define AVUTIL_HWCONTEXT_CUDA_H 22 | 23 | #ifndef CUDA_VERSION 24 | #include 25 | #endif 26 | 27 | #include "pixfmt.h" 28 | 29 | /** 30 | * @file 31 | * An API-specific header for AV_HWDEVICE_TYPE_CUDA. 32 | * 33 | * This API supports dynamic frame pools. AVHWFramesContext.pool must return 34 | * AVBufferRefs whose data pointer is a CUdeviceptr. 35 | */ 36 | 37 | typedef struct AVCUDADeviceContextInternal AVCUDADeviceContextInternal; 38 | 39 | /** 40 | * This struct is allocated as AVHWDeviceContext.hwctx 41 | */ 42 | typedef struct AVCUDADeviceContext { 43 | CUcontext cuda_ctx; 44 | CUstream stream; 45 | AVCUDADeviceContextInternal *internal; 46 | } AVCUDADeviceContext; 47 | 48 | /** 49 | * AVHWFramesContext.hwctx is currently not used 50 | */ 51 | 52 | #endif /* AVUTIL_HWCONTEXT_CUDA_H */ 53 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/hwcontext_dxva2.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | 20 | #ifndef AVUTIL_HWCONTEXT_DXVA2_H 21 | #define AVUTIL_HWCONTEXT_DXVA2_H 22 | 23 | /** 24 | * @file 25 | * An API-specific header for AV_HWDEVICE_TYPE_DXVA2. 26 | * 27 | * Only fixed-size pools are supported. 28 | * 29 | * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs 30 | * with the data pointer set to a pointer to IDirect3DSurface9. 31 | */ 32 | 33 | #include 34 | #include 35 | 36 | /** 37 | * This struct is allocated as AVHWDeviceContext.hwctx 38 | */ 39 | typedef struct AVDXVA2DeviceContext { 40 | IDirect3DDeviceManager9 *devmgr; 41 | } AVDXVA2DeviceContext; 42 | 43 | /** 44 | * This struct is allocated as AVHWFramesContext.hwctx 45 | */ 46 | typedef struct AVDXVA2FramesContext { 47 | /** 48 | * The surface type (e.g. DXVA2_VideoProcessorRenderTarget or 49 | * DXVA2_VideoDecoderRenderTarget). Must be set by the caller. 50 | */ 51 | DWORD surface_type; 52 | 53 | /** 54 | * The surface pool. When an external pool is not provided by the caller, 55 | * this will be managed (allocated and filled on init, freed on uninit) by 56 | * libavutil. 57 | */ 58 | IDirect3DSurface9 **surfaces; 59 | int nb_surfaces; 60 | 61 | /** 62 | * Certain drivers require the decoder to be destroyed before the surfaces. 63 | * To allow internally managed pools to work properly in such cases, this 64 | * field is provided. 65 | * 66 | * If it is non-NULL, libavutil will call IDirectXVideoDecoder_Release() on 67 | * it just before the internal surface pool is freed. 68 | * 69 | * This is for convenience only. Some code uses other methods to manage the 70 | * decoder reference. 71 | */ 72 | IDirectXVideoDecoder *decoder_to_release; 73 | } AVDXVA2FramesContext; 74 | 75 | #endif /* AVUTIL_HWCONTEXT_DXVA2_H */ 76 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/hwcontext_mediacodec.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_MEDIACODEC_H 20 | #define AVUTIL_HWCONTEXT_MEDIACODEC_H 21 | 22 | /** 23 | * MediaCodec details. 24 | * 25 | * Allocated as AVHWDeviceContext.hwctx 26 | */ 27 | typedef struct AVMediaCodecDeviceContext { 28 | /** 29 | * android/view/Surface handle, to be filled by the user. 30 | * 31 | * This is the default surface used by decoders on this device. 32 | */ 33 | void *surface; 34 | } AVMediaCodecDeviceContext; 35 | 36 | #endif /* AVUTIL_HWCONTEXT_MEDIACODEC_H */ 37 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/hwcontext_qsv.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_QSV_H 20 | #define AVUTIL_HWCONTEXT_QSV_H 21 | 22 | #include 23 | 24 | /** 25 | * @file 26 | * An API-specific header for AV_HWDEVICE_TYPE_QSV. 27 | * 28 | * This API does not support dynamic frame pools. AVHWFramesContext.pool must 29 | * contain AVBufferRefs whose data pointer points to an mfxFrameSurface1 struct. 30 | */ 31 | 32 | /** 33 | * This struct is allocated as AVHWDeviceContext.hwctx 34 | */ 35 | typedef struct AVQSVDeviceContext { 36 | mfxSession session; 37 | } AVQSVDeviceContext; 38 | 39 | /** 40 | * This struct is allocated as AVHWFramesContext.hwctx 41 | */ 42 | typedef struct AVQSVFramesContext { 43 | mfxFrameSurface1 *surfaces; 44 | int nb_surfaces; 45 | 46 | /** 47 | * A combination of MFX_MEMTYPE_* describing the frame pool. 48 | */ 49 | int frame_type; 50 | } AVQSVFramesContext; 51 | 52 | #endif /* AVUTIL_HWCONTEXT_QSV_H */ 53 | 54 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/hwcontext_vaapi.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_VAAPI_H 20 | #define AVUTIL_HWCONTEXT_VAAPI_H 21 | 22 | #include 23 | 24 | /** 25 | * @file 26 | * API-specific header for AV_HWDEVICE_TYPE_VAAPI. 27 | * 28 | * Dynamic frame pools are supported, but note that any pool used as a render 29 | * target is required to be of fixed size in order to be be usable as an 30 | * argument to vaCreateContext(). 31 | * 32 | * For user-allocated pools, AVHWFramesContext.pool must return AVBufferRefs 33 | * with the data pointer set to a VASurfaceID. 34 | */ 35 | 36 | enum { 37 | /** 38 | * The quirks field has been set by the user and should not be detected 39 | * automatically by av_hwdevice_ctx_init(). 40 | */ 41 | AV_VAAPI_DRIVER_QUIRK_USER_SET = (1 << 0), 42 | /** 43 | * The driver does not destroy parameter buffers when they are used by 44 | * vaRenderPicture(). Additional code will be required to destroy them 45 | * separately afterwards. 46 | */ 47 | AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS = (1 << 1), 48 | 49 | /** 50 | * The driver does not support the VASurfaceAttribMemoryType attribute, 51 | * so the surface allocation code will not try to use it. 52 | */ 53 | AV_VAAPI_DRIVER_QUIRK_ATTRIB_MEMTYPE = (1 << 2), 54 | 55 | /** 56 | * The driver does not support surface attributes at all. 57 | * The surface allocation code will never pass them to surface allocation, 58 | * and the results of the vaQuerySurfaceAttributes() call will be faked. 59 | */ 60 | AV_VAAPI_DRIVER_QUIRK_SURFACE_ATTRIBUTES = (1 << 3), 61 | }; 62 | 63 | /** 64 | * VAAPI connection details. 65 | * 66 | * Allocated as AVHWDeviceContext.hwctx 67 | */ 68 | typedef struct AVVAAPIDeviceContext { 69 | /** 70 | * The VADisplay handle, to be filled by the user. 71 | */ 72 | VADisplay display; 73 | /** 74 | * Driver quirks to apply - this is filled by av_hwdevice_ctx_init(), 75 | * with reference to a table of known drivers, unless the 76 | * AV_VAAPI_DRIVER_QUIRK_USER_SET bit is already present. The user 77 | * may need to refer to this field when performing any later 78 | * operations using VAAPI with the same VADisplay. 79 | */ 80 | unsigned int driver_quirks; 81 | } AVVAAPIDeviceContext; 82 | 83 | /** 84 | * VAAPI-specific data associated with a frame pool. 85 | * 86 | * Allocated as AVHWFramesContext.hwctx. 87 | */ 88 | typedef struct AVVAAPIFramesContext { 89 | /** 90 | * Set by the user to apply surface attributes to all surfaces in 91 | * the frame pool. If null, default settings are used. 92 | */ 93 | VASurfaceAttrib *attributes; 94 | int nb_attributes; 95 | /** 96 | * The surfaces IDs of all surfaces in the pool after creation. 97 | * Only valid if AVHWFramesContext.initial_pool_size was positive. 98 | * These are intended to be used as the render_targets arguments to 99 | * vaCreateContext(). 100 | */ 101 | VASurfaceID *surface_ids; 102 | int nb_surfaces; 103 | } AVVAAPIFramesContext; 104 | 105 | /** 106 | * VAAPI hardware pipeline configuration details. 107 | * 108 | * Allocated with av_hwdevice_hwconfig_alloc(). 109 | */ 110 | typedef struct AVVAAPIHWConfig { 111 | /** 112 | * ID of a VAAPI pipeline configuration. 113 | */ 114 | VAConfigID config_id; 115 | } AVVAAPIHWConfig; 116 | 117 | #endif /* AVUTIL_HWCONTEXT_VAAPI_H */ 118 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/hwcontext_vdpau.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_VDPAU_H 20 | #define AVUTIL_HWCONTEXT_VDPAU_H 21 | 22 | #include 23 | 24 | /** 25 | * @file 26 | * An API-specific header for AV_HWDEVICE_TYPE_VDPAU. 27 | * 28 | * This API supports dynamic frame pools. AVHWFramesContext.pool must return 29 | * AVBufferRefs whose data pointer is a VdpVideoSurface. 30 | */ 31 | 32 | /** 33 | * This struct is allocated as AVHWDeviceContext.hwctx 34 | */ 35 | typedef struct AVVDPAUDeviceContext { 36 | VdpDevice device; 37 | VdpGetProcAddress *get_proc_address; 38 | } AVVDPAUDeviceContext; 39 | 40 | /** 41 | * AVHWFramesContext.hwctx is currently not used 42 | */ 43 | 44 | #endif /* AVUTIL_HWCONTEXT_VDPAU_H */ 45 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/hwcontext_videotoolbox.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H 20 | #define AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H 21 | 22 | #include 23 | 24 | #include 25 | 26 | #include "pixfmt.h" 27 | 28 | /** 29 | * @file 30 | * An API-specific header for AV_HWDEVICE_TYPE_VIDEOTOOLBOX. 31 | * 32 | * This API currently does not support frame allocation, as the raw VideoToolbox 33 | * API does allocation, and FFmpeg itself never has the need to allocate frames. 34 | * 35 | * If the API user sets a custom pool, AVHWFramesContext.pool must return 36 | * AVBufferRefs whose data pointer is a CVImageBufferRef or CVPixelBufferRef. 37 | * 38 | * Currently AVHWDeviceContext.hwctx and AVHWFramesContext.hwctx are always 39 | * NULL. 40 | */ 41 | 42 | /** 43 | * Convert a VideoToolbox (actually CoreVideo) format to AVPixelFormat. 44 | * Returns AV_PIX_FMT_NONE if no known equivalent was found. 45 | */ 46 | enum AVPixelFormat av_map_videotoolbox_format_to_pixfmt(uint32_t cv_fmt); 47 | 48 | /** 49 | * Convert an AVPixelFormat to a VideoToolbox (actually CoreVideo) format. 50 | * Returns 0 if no known equivalent was found. 51 | */ 52 | uint32_t av_map_videotoolbox_format_from_pixfmt(enum AVPixelFormat pix_fmt); 53 | 54 | #endif /* AVUTIL_HWCONTEXT_VIDEOTOOLBOX_H */ 55 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/intfloat.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 Mans Rullgard 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_INTFLOAT_H 22 | #define AVUTIL_INTFLOAT_H 23 | 24 | #include 25 | #include "attributes.h" 26 | 27 | union av_intfloat32 { 28 | uint32_t i; 29 | float f; 30 | }; 31 | 32 | union av_intfloat64 { 33 | uint64_t i; 34 | double f; 35 | }; 36 | 37 | /** 38 | * Reinterpret a 32-bit integer as a float. 39 | */ 40 | static av_always_inline float av_int2float(uint32_t i) 41 | { 42 | union av_intfloat32 v; 43 | v.i = i; 44 | return v.f; 45 | } 46 | 47 | /** 48 | * Reinterpret a float as a 32-bit integer. 49 | */ 50 | static av_always_inline uint32_t av_float2int(float f) 51 | { 52 | union av_intfloat32 v; 53 | v.f = f; 54 | return v.i; 55 | } 56 | 57 | /** 58 | * Reinterpret a 64-bit integer as a double. 59 | */ 60 | static av_always_inline double av_int2double(uint64_t i) 61 | { 62 | union av_intfloat64 v; 63 | v.i = i; 64 | return v.f; 65 | } 66 | 67 | /** 68 | * Reinterpret a double as a 64-bit integer. 69 | */ 70 | static av_always_inline uint64_t av_double2int(double f) 71 | { 72 | union av_intfloat64 v; 73 | v.f = f; 74 | return v.i; 75 | } 76 | 77 | #endif /* AVUTIL_INTFLOAT_H */ 78 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/lfg.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Lagged Fibonacci PRNG 3 | * Copyright (c) 2008 Michael Niedermayer 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_LFG_H 23 | #define AVUTIL_LFG_H 24 | 25 | #include 26 | 27 | typedef struct AVLFG { 28 | unsigned int state[64]; 29 | int index; 30 | } AVLFG; 31 | 32 | void av_lfg_init(AVLFG *c, unsigned int seed); 33 | 34 | /** 35 | * Seed the state of the ALFG using binary data. 36 | * 37 | * Return value: 0 on success, negative value (AVERROR) on failure. 38 | */ 39 | int av_lfg_init_from_data(AVLFG *c, const uint8_t *data, unsigned int length); 40 | 41 | /** 42 | * Get the next random unsigned 32-bit number using an ALFG. 43 | * 44 | * Please also consider a simple LCG like state= state*1664525+1013904223, 45 | * it may be good enough and faster for your specific use case. 46 | */ 47 | static inline unsigned int av_lfg_get(AVLFG *c){ 48 | c->state[c->index & 63] = c->state[(c->index-24) & 63] + c->state[(c->index-55) & 63]; 49 | return c->state[c->index++ & 63]; 50 | } 51 | 52 | /** 53 | * Get the next random unsigned 32-bit number using a MLFG. 54 | * 55 | * Please also consider av_lfg_get() above, it is faster. 56 | */ 57 | static inline unsigned int av_mlfg_get(AVLFG *c){ 58 | unsigned int a= c->state[(c->index-55) & 63]; 59 | unsigned int b= c->state[(c->index-24) & 63]; 60 | return c->state[c->index++ & 63] = 2*a*b+a+b; 61 | } 62 | 63 | /** 64 | * Get the next two numbers generated by a Box-Muller Gaussian 65 | * generator using the random numbers issued by lfg. 66 | * 67 | * @param out array where the two generated numbers are placed 68 | */ 69 | void av_bmg_get(AVLFG *lfg, double out[2]); 70 | 71 | #endif /* AVUTIL_LFG_H */ 72 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/lzo.h: -------------------------------------------------------------------------------- 1 | /* 2 | * LZO 1x decompression 3 | * copyright (c) 2006 Reimar Doeffinger 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_LZO_H 23 | #define AVUTIL_LZO_H 24 | 25 | /** 26 | * @defgroup lavu_lzo LZO 27 | * @ingroup lavu_crypto 28 | * 29 | * @{ 30 | */ 31 | 32 | #include 33 | 34 | /** @name Error flags returned by av_lzo1x_decode 35 | * @{ */ 36 | /// end of the input buffer reached before decoding finished 37 | #define AV_LZO_INPUT_DEPLETED 1 38 | /// decoded data did not fit into output buffer 39 | #define AV_LZO_OUTPUT_FULL 2 40 | /// a reference to previously decoded data was wrong 41 | #define AV_LZO_INVALID_BACKPTR 4 42 | /// a non-specific error in the compressed bitstream 43 | #define AV_LZO_ERROR 8 44 | /** @} */ 45 | 46 | #define AV_LZO_INPUT_PADDING 8 47 | #define AV_LZO_OUTPUT_PADDING 12 48 | 49 | /** 50 | * @brief Decodes LZO 1x compressed data. 51 | * @param out output buffer 52 | * @param outlen size of output buffer, number of bytes left are returned here 53 | * @param in input buffer 54 | * @param inlen size of input buffer, number of bytes left are returned here 55 | * @return 0 on success, otherwise a combination of the error flags above 56 | * 57 | * Make sure all buffers are appropriately padded, in must provide 58 | * AV_LZO_INPUT_PADDING, out must provide AV_LZO_OUTPUT_PADDING additional bytes. 59 | */ 60 | int av_lzo1x_decode(void *out, int *outlen, const void *in, int *inlen); 61 | 62 | /** 63 | * @} 64 | */ 65 | 66 | #endif /* AVUTIL_LZO_H */ 67 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/macros.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | /** 20 | * @file 21 | * @ingroup lavu 22 | * Utility Preprocessor macros 23 | */ 24 | 25 | #ifndef AVUTIL_MACROS_H 26 | #define AVUTIL_MACROS_H 27 | 28 | /** 29 | * @addtogroup preproc_misc Preprocessor String Macros 30 | * 31 | * String manipulation macros 32 | * 33 | * @{ 34 | */ 35 | 36 | #define AV_STRINGIFY(s) AV_TOSTRING(s) 37 | #define AV_TOSTRING(s) #s 38 | 39 | #define AV_GLUE(a, b) a ## b 40 | #define AV_JOIN(a, b) AV_GLUE(a, b) 41 | 42 | /** 43 | * @} 44 | */ 45 | 46 | #define AV_PRAGMA(s) _Pragma(#s) 47 | 48 | #define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) 49 | 50 | #endif /* AVUTIL_MACROS_H */ 51 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/mastering_display_metadata.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016 Neil Birkbeck 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_MASTERING_DISPLAY_METADATA_H 22 | #define AVUTIL_MASTERING_DISPLAY_METADATA_H 23 | 24 | #include "frame.h" 25 | #include "rational.h" 26 | 27 | 28 | /** 29 | * Mastering display metadata capable of representing the color volume of 30 | * the display used to master the content (SMPTE 2086:2014). 31 | * 32 | * To be used as payload of a AVFrameSideData or AVPacketSideData with the 33 | * appropriate type. 34 | * 35 | * @note The struct should be allocated with av_mastering_display_metadata_alloc() 36 | * and its size is not a part of the public ABI. 37 | */ 38 | typedef struct AVMasteringDisplayMetadata { 39 | /** 40 | * CIE 1931 xy chromaticity coords of color primaries (r, g, b order). 41 | */ 42 | AVRational display_primaries[3][2]; 43 | 44 | /** 45 | * CIE 1931 xy chromaticity coords of white point. 46 | */ 47 | AVRational white_point[2]; 48 | 49 | /** 50 | * Min luminance of mastering display (cd/m^2). 51 | */ 52 | AVRational min_luminance; 53 | 54 | /** 55 | * Max luminance of mastering display (cd/m^2). 56 | */ 57 | AVRational max_luminance; 58 | 59 | /** 60 | * Flag indicating whether the display primaries (and white point) are set. 61 | */ 62 | int has_primaries; 63 | 64 | /** 65 | * Flag indicating whether the luminance (min_ and max_) have been set. 66 | */ 67 | int has_luminance; 68 | 69 | } AVMasteringDisplayMetadata; 70 | 71 | /** 72 | * Allocate an AVMasteringDisplayMetadata structure and set its fields to 73 | * default values. The resulting struct can be freed using av_freep(). 74 | * 75 | * @return An AVMasteringDisplayMetadata filled with default values or NULL 76 | * on failure. 77 | */ 78 | AVMasteringDisplayMetadata *av_mastering_display_metadata_alloc(void); 79 | 80 | /** 81 | * Allocate a complete AVMasteringDisplayMetadata and add it to the frame. 82 | * 83 | * @param frame The frame which side data is added to. 84 | * 85 | * @return The AVMasteringDisplayMetadata structure to be filled by caller. 86 | */ 87 | AVMasteringDisplayMetadata *av_mastering_display_metadata_create_side_data(AVFrame *frame); 88 | 89 | /** 90 | * Content light level needed by to transmit HDR over HDMI (CTA-861.3). 91 | * 92 | * To be used as payload of a AVFrameSideData or AVPacketSideData with the 93 | * appropriate type. 94 | * 95 | * @note The struct should be allocated with av_content_light_metadata_alloc() 96 | * and its size is not a part of the public ABI. 97 | */ 98 | typedef struct AVContentLightMetadata { 99 | /** 100 | * Max content light level (cd/m^2). 101 | */ 102 | unsigned MaxCLL; 103 | 104 | /** 105 | * Max average light level per frame (cd/m^2). 106 | */ 107 | unsigned MaxFALL; 108 | } AVContentLightMetadata; 109 | 110 | /** 111 | * Allocate an AVContentLightMetadata structure and set its fields to 112 | * default values. The resulting struct can be freed using av_freep(). 113 | * 114 | * @return An AVContentLightMetadata filled with default values or NULL 115 | * on failure. 116 | */ 117 | AVContentLightMetadata *av_content_light_metadata_alloc(size_t *size); 118 | 119 | /** 120 | * Allocate a complete AVContentLightMetadata and add it to the frame. 121 | * 122 | * @param frame The frame which side data is added to. 123 | * 124 | * @return The AVContentLightMetadata structure to be filled by caller. 125 | */ 126 | AVContentLightMetadata *av_content_light_metadata_create_side_data(AVFrame *frame); 127 | 128 | #endif /* AVUTIL_MASTERING_DISPLAY_METADATA_H */ 129 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/md5.h: -------------------------------------------------------------------------------- 1 | /* 2 | * copyright (c) 2006 Michael Niedermayer 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | /** 22 | * @file 23 | * @ingroup lavu_md5 24 | * Public header for MD5 hash function implementation. 25 | */ 26 | 27 | #ifndef AVUTIL_MD5_H 28 | #define AVUTIL_MD5_H 29 | 30 | #include 31 | #include 32 | 33 | #include "attributes.h" 34 | #include "version.h" 35 | 36 | /** 37 | * @defgroup lavu_md5 MD5 38 | * @ingroup lavu_hash 39 | * MD5 hash function implementation. 40 | * 41 | * @{ 42 | */ 43 | 44 | extern const int av_md5_size; 45 | 46 | struct AVMD5; 47 | 48 | /** 49 | * Allocate an AVMD5 context. 50 | */ 51 | struct AVMD5 *av_md5_alloc(void); 52 | 53 | /** 54 | * Initialize MD5 hashing. 55 | * 56 | * @param ctx pointer to the function context (of size av_md5_size) 57 | */ 58 | void av_md5_init(struct AVMD5 *ctx); 59 | 60 | /** 61 | * Update hash value. 62 | * 63 | * @param ctx hash function context 64 | * @param src input data to update hash with 65 | * @param len input data length 66 | */ 67 | #if FF_API_CRYPTO_SIZE_T 68 | void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, int len); 69 | #else 70 | void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, size_t len); 71 | #endif 72 | 73 | /** 74 | * Finish hashing and output digest value. 75 | * 76 | * @param ctx hash function context 77 | * @param dst buffer where output digest value is stored 78 | */ 79 | void av_md5_final(struct AVMD5 *ctx, uint8_t *dst); 80 | 81 | /** 82 | * Hash an array of data. 83 | * 84 | * @param dst The output buffer to write the digest into 85 | * @param src The data to hash 86 | * @param len The length of the data, in bytes 87 | */ 88 | #if FF_API_CRYPTO_SIZE_T 89 | void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len); 90 | #else 91 | void av_md5_sum(uint8_t *dst, const uint8_t *src, size_t len); 92 | #endif 93 | 94 | /** 95 | * @} 96 | */ 97 | 98 | #endif /* AVUTIL_MD5_H */ 99 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/motion_vector.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_MOTION_VECTOR_H 20 | #define AVUTIL_MOTION_VECTOR_H 21 | 22 | #include 23 | 24 | typedef struct AVMotionVector { 25 | /** 26 | * Where the current macroblock comes from; negative value when it comes 27 | * from the past, positive value when it comes from the future. 28 | * XXX: set exact relative ref frame reference instead of a +/- 1 "direction". 29 | */ 30 | int32_t source; 31 | /** 32 | * Width and height of the block. 33 | */ 34 | uint8_t w, h; 35 | /** 36 | * Absolute source position. Can be outside the frame area. 37 | */ 38 | int16_t src_x, src_y; 39 | /** 40 | * Absolute destination position. Can be outside the frame area. 41 | */ 42 | int16_t dst_x, dst_y; 43 | /** 44 | * Extra flag information. 45 | * Currently unused. 46 | */ 47 | uint64_t flags; 48 | /** 49 | * Motion vector 50 | * src_x = dst_x + motion_x / motion_scale 51 | * src_y = dst_y + motion_y / motion_scale 52 | */ 53 | int32_t motion_x, motion_y; 54 | uint16_t motion_scale; 55 | } AVMotionVector; 56 | 57 | #endif /* AVUTIL_MOTION_VECTOR_H */ 58 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/murmur3.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Reimar Döffinger 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | /** 22 | * @file 23 | * @ingroup lavu_murmur3 24 | * Public header for MurmurHash3 hash function implementation. 25 | */ 26 | 27 | #ifndef AVUTIL_MURMUR3_H 28 | #define AVUTIL_MURMUR3_H 29 | 30 | #include 31 | 32 | #include "version.h" 33 | 34 | /** 35 | * @defgroup lavu_murmur3 Murmur3 36 | * @ingroup lavu_hash 37 | * MurmurHash3 hash function implementation. 38 | * 39 | * MurmurHash3 is a non-cryptographic hash function, of which three 40 | * incompatible versions were created by its inventor Austin Appleby: 41 | * 42 | * - 32-bit output 43 | * - 128-bit output for 32-bit platforms 44 | * - 128-bit output for 64-bit platforms 45 | * 46 | * FFmpeg only implements the last variant: 128-bit output designed for 64-bit 47 | * platforms. Even though the hash function was designed for 64-bit platforms, 48 | * the function in reality works on 32-bit systems too, only with reduced 49 | * performance. 50 | * 51 | * @anchor lavu_murmur3_seedinfo 52 | * By design, MurmurHash3 requires a seed to operate. In response to this, 53 | * libavutil provides two functions for hash initiation, one that requires a 54 | * seed (av_murmur3_init_seeded()) and one that uses a fixed arbitrary integer 55 | * as the seed, and therefore does not (av_murmur3_init()). 56 | * 57 | * To make hashes comparable, you should provide the same seed for all calls to 58 | * this hash function -- if you are supplying one yourself, that is. 59 | * 60 | * @{ 61 | */ 62 | 63 | /** 64 | * Allocate an AVMurMur3 hash context. 65 | * 66 | * @return Uninitialized hash context or `NULL` in case of error 67 | */ 68 | struct AVMurMur3 *av_murmur3_alloc(void); 69 | 70 | /** 71 | * Initialize or reinitialize an AVMurMur3 hash context with a seed. 72 | * 73 | * @param[out] c Hash context 74 | * @param[in] seed Random seed 75 | * 76 | * @see av_murmur3_init() 77 | * @see @ref lavu_murmur3_seedinfo "Detailed description" on a discussion of 78 | * seeds for MurmurHash3. 79 | */ 80 | void av_murmur3_init_seeded(struct AVMurMur3 *c, uint64_t seed); 81 | 82 | /** 83 | * Initialize or reinitialize an AVMurMur3 hash context. 84 | * 85 | * Equivalent to av_murmur3_init_seeded() with a built-in seed. 86 | * 87 | * @param[out] c Hash context 88 | * 89 | * @see av_murmur3_init_seeded() 90 | * @see @ref lavu_murmur3_seedinfo "Detailed description" on a discussion of 91 | * seeds for MurmurHash3. 92 | */ 93 | void av_murmur3_init(struct AVMurMur3 *c); 94 | 95 | /** 96 | * Update hash context with new data. 97 | * 98 | * @param[out] c Hash context 99 | * @param[in] src Input data to update hash with 100 | * @param[in] len Number of bytes to read from `src` 101 | */ 102 | #if FF_API_CRYPTO_SIZE_T 103 | void av_murmur3_update(struct AVMurMur3 *c, const uint8_t *src, int len); 104 | #else 105 | void av_murmur3_update(struct AVMurMur3 *c, const uint8_t *src, size_t len); 106 | #endif 107 | 108 | /** 109 | * Finish hashing and output digest value. 110 | * 111 | * @param[in,out] c Hash context 112 | * @param[out] dst Buffer where output digest value is stored 113 | */ 114 | void av_murmur3_final(struct AVMurMur3 *c, uint8_t dst[16]); 115 | 116 | /** 117 | * @} 118 | */ 119 | 120 | #endif /* AVUTIL_MURMUR3_H */ 121 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/pixelutils.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_PIXELUTILS_H 20 | #define AVUTIL_PIXELUTILS_H 21 | 22 | #include 23 | #include 24 | #include "common.h" 25 | 26 | /** 27 | * Sum of abs(src1[x] - src2[x]) 28 | */ 29 | typedef int (*av_pixelutils_sad_fn)(const uint8_t *src1, ptrdiff_t stride1, 30 | const uint8_t *src2, ptrdiff_t stride2); 31 | 32 | /** 33 | * Get a potentially optimized pointer to a Sum-of-absolute-differences 34 | * function (see the av_pixelutils_sad_fn prototype). 35 | * 36 | * @param w_bits 1< 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_RANDOM_SEED_H 22 | #define AVUTIL_RANDOM_SEED_H 23 | 24 | #include 25 | /** 26 | * @addtogroup lavu_crypto 27 | * @{ 28 | */ 29 | 30 | /** 31 | * Get a seed to use in conjunction with random functions. 32 | * This function tries to provide a good seed at a best effort bases. 33 | * Its possible to call this function multiple times if more bits are needed. 34 | * It can be quite slow, which is why it should only be used as seed for a faster 35 | * PRNG. The quality of the seed depends on the platform. 36 | */ 37 | uint32_t av_get_random_seed(void); 38 | 39 | /** 40 | * @} 41 | */ 42 | 43 | #endif /* AVUTIL_RANDOM_SEED_H */ 44 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/rc4.h: -------------------------------------------------------------------------------- 1 | /* 2 | * RC4 encryption/decryption/pseudo-random number generator 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_RC4_H 22 | #define AVUTIL_RC4_H 23 | 24 | #include 25 | 26 | /** 27 | * @defgroup lavu_rc4 RC4 28 | * @ingroup lavu_crypto 29 | * @{ 30 | */ 31 | 32 | typedef struct AVRC4 { 33 | uint8_t state[256]; 34 | int x, y; 35 | } AVRC4; 36 | 37 | /** 38 | * Allocate an AVRC4 context. 39 | */ 40 | AVRC4 *av_rc4_alloc(void); 41 | 42 | /** 43 | * @brief Initializes an AVRC4 context. 44 | * 45 | * @param key_bits must be a multiple of 8 46 | * @param decrypt 0 for encryption, 1 for decryption, currently has no effect 47 | * @return zero on success, negative value otherwise 48 | */ 49 | int av_rc4_init(struct AVRC4 *d, const uint8_t *key, int key_bits, int decrypt); 50 | 51 | /** 52 | * @brief Encrypts / decrypts using the RC4 algorithm. 53 | * 54 | * @param count number of bytes 55 | * @param dst destination array, can be equal to src 56 | * @param src source array, can be equal to dst, may be NULL 57 | * @param iv not (yet) used for RC4, should be NULL 58 | * @param decrypt 0 for encryption, 1 for decryption, not (yet) used 59 | */ 60 | void av_rc4_crypt(struct AVRC4 *d, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt); 61 | 62 | /** 63 | * @} 64 | */ 65 | 66 | #endif /* AVUTIL_RC4_H */ 67 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/replaygain.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_REPLAYGAIN_H 20 | #define AVUTIL_REPLAYGAIN_H 21 | 22 | #include 23 | 24 | /** 25 | * ReplayGain information (see 26 | * http://wiki.hydrogenaudio.org/index.php?title=ReplayGain_1.0_specification). 27 | * The size of this struct is a part of the public ABI. 28 | */ 29 | typedef struct AVReplayGain { 30 | /** 31 | * Track replay gain in microbels (divide by 100000 to get the value in dB). 32 | * Should be set to INT32_MIN when unknown. 33 | */ 34 | int32_t track_gain; 35 | /** 36 | * Peak track amplitude, with 100000 representing full scale (but values 37 | * may overflow). 0 when unknown. 38 | */ 39 | uint32_t track_peak; 40 | /** 41 | * Same as track_gain, but for the whole album. 42 | */ 43 | int32_t album_gain; 44 | /** 45 | * Same as track_peak, but for the whole album, 46 | */ 47 | uint32_t album_peak; 48 | } AVReplayGain; 49 | 50 | #endif /* AVUTIL_REPLAYGAIN_H */ 51 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/ripemd.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2007 Michael Niedermayer 3 | * Copyright (C) 2013 James Almer 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | /** 23 | * @file 24 | * @ingroup lavu_ripemd 25 | * Public header for RIPEMD hash function implementation. 26 | */ 27 | 28 | #ifndef AVUTIL_RIPEMD_H 29 | #define AVUTIL_RIPEMD_H 30 | 31 | #include 32 | 33 | #include "attributes.h" 34 | #include "version.h" 35 | 36 | /** 37 | * @defgroup lavu_ripemd RIPEMD 38 | * @ingroup lavu_hash 39 | * RIPEMD hash function implementation. 40 | * 41 | * @{ 42 | */ 43 | 44 | extern const int av_ripemd_size; 45 | 46 | struct AVRIPEMD; 47 | 48 | /** 49 | * Allocate an AVRIPEMD context. 50 | */ 51 | struct AVRIPEMD *av_ripemd_alloc(void); 52 | 53 | /** 54 | * Initialize RIPEMD hashing. 55 | * 56 | * @param context pointer to the function context (of size av_ripemd_size) 57 | * @param bits number of bits in digest (128, 160, 256 or 320 bits) 58 | * @return zero if initialization succeeded, -1 otherwise 59 | */ 60 | int av_ripemd_init(struct AVRIPEMD* context, int bits); 61 | 62 | /** 63 | * Update hash value. 64 | * 65 | * @param context hash function context 66 | * @param data input data to update hash with 67 | * @param len input data length 68 | */ 69 | #if FF_API_CRYPTO_SIZE_T 70 | void av_ripemd_update(struct AVRIPEMD* context, const uint8_t* data, unsigned int len); 71 | #else 72 | void av_ripemd_update(struct AVRIPEMD* context, const uint8_t* data, size_t len); 73 | #endif 74 | 75 | /** 76 | * Finish hashing and output digest value. 77 | * 78 | * @param context hash function context 79 | * @param digest buffer where output digest value is stored 80 | */ 81 | void av_ripemd_final(struct AVRIPEMD* context, uint8_t *digest); 82 | 83 | /** 84 | * @} 85 | */ 86 | 87 | #endif /* AVUTIL_RIPEMD_H */ 88 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/sha.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2007 Michael Niedermayer 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | /** 22 | * @file 23 | * @ingroup lavu_sha 24 | * Public header for SHA-1 & SHA-256 hash function implementations. 25 | */ 26 | 27 | #ifndef AVUTIL_SHA_H 28 | #define AVUTIL_SHA_H 29 | 30 | #include 31 | #include 32 | 33 | #include "attributes.h" 34 | #include "version.h" 35 | 36 | /** 37 | * @defgroup lavu_sha SHA 38 | * @ingroup lavu_hash 39 | * SHA-1 and SHA-256 (Secure Hash Algorithm) hash function implementations. 40 | * 41 | * This module supports the following SHA hash functions: 42 | * 43 | * - SHA-1: 160 bits 44 | * - SHA-224: 224 bits, as a variant of SHA-2 45 | * - SHA-256: 256 bits, as a variant of SHA-2 46 | * 47 | * @see For SHA-384, SHA-512, and variants thereof, see @ref lavu_sha512. 48 | * 49 | * @{ 50 | */ 51 | 52 | extern const int av_sha_size; 53 | 54 | struct AVSHA; 55 | 56 | /** 57 | * Allocate an AVSHA context. 58 | */ 59 | struct AVSHA *av_sha_alloc(void); 60 | 61 | /** 62 | * Initialize SHA-1 or SHA-2 hashing. 63 | * 64 | * @param context pointer to the function context (of size av_sha_size) 65 | * @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits) 66 | * @return zero if initialization succeeded, -1 otherwise 67 | */ 68 | int av_sha_init(struct AVSHA* context, int bits); 69 | 70 | /** 71 | * Update hash value. 72 | * 73 | * @param ctx hash function context 74 | * @param data input data to update hash with 75 | * @param len input data length 76 | */ 77 | #if FF_API_CRYPTO_SIZE_T 78 | void av_sha_update(struct AVSHA *ctx, const uint8_t *data, unsigned int len); 79 | #else 80 | void av_sha_update(struct AVSHA *ctx, const uint8_t *data, size_t len); 81 | #endif 82 | 83 | /** 84 | * Finish hashing and output digest value. 85 | * 86 | * @param context hash function context 87 | * @param digest buffer where output digest value is stored 88 | */ 89 | void av_sha_final(struct AVSHA* context, uint8_t *digest); 90 | 91 | /** 92 | * @} 93 | */ 94 | 95 | #endif /* AVUTIL_SHA_H */ 96 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/sha512.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2007 Michael Niedermayer 3 | * Copyright (C) 2013 James Almer 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | /** 23 | * @file 24 | * @ingroup lavu_sha512 25 | * Public header for SHA-512 implementation. 26 | */ 27 | 28 | #ifndef AVUTIL_SHA512_H 29 | #define AVUTIL_SHA512_H 30 | 31 | #include 32 | #include 33 | 34 | #include "attributes.h" 35 | #include "version.h" 36 | 37 | /** 38 | * @defgroup lavu_sha512 SHA-512 39 | * @ingroup lavu_hash 40 | * SHA-512 (Secure Hash Algorithm) hash function implementations. 41 | * 42 | * This module supports the following SHA-2 hash functions: 43 | * 44 | * - SHA-512/224: 224 bits 45 | * - SHA-512/256: 256 bits 46 | * - SHA-384: 384 bits 47 | * - SHA-512: 512 bits 48 | * 49 | * @see For SHA-1, SHA-256, and variants thereof, see @ref lavu_sha. 50 | * 51 | * @{ 52 | */ 53 | 54 | extern const int av_sha512_size; 55 | 56 | struct AVSHA512; 57 | 58 | /** 59 | * Allocate an AVSHA512 context. 60 | */ 61 | struct AVSHA512 *av_sha512_alloc(void); 62 | 63 | /** 64 | * Initialize SHA-2 512 hashing. 65 | * 66 | * @param context pointer to the function context (of size av_sha512_size) 67 | * @param bits number of bits in digest (224, 256, 384 or 512 bits) 68 | * @return zero if initialization succeeded, -1 otherwise 69 | */ 70 | int av_sha512_init(struct AVSHA512* context, int bits); 71 | 72 | /** 73 | * Update hash value. 74 | * 75 | * @param context hash function context 76 | * @param data input data to update hash with 77 | * @param len input data length 78 | */ 79 | #if FF_API_CRYPTO_SIZE_T 80 | void av_sha512_update(struct AVSHA512* context, const uint8_t* data, unsigned int len); 81 | #else 82 | void av_sha512_update(struct AVSHA512* context, const uint8_t* data, size_t len); 83 | #endif 84 | 85 | /** 86 | * Finish hashing and output digest value. 87 | * 88 | * @param context hash function context 89 | * @param digest buffer where output digest value is stored 90 | */ 91 | void av_sha512_final(struct AVSHA512* context, uint8_t *digest); 92 | 93 | /** 94 | * @} 95 | */ 96 | 97 | #endif /* AVUTIL_SHA512_H */ 98 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/tea.h: -------------------------------------------------------------------------------- 1 | /* 2 | * A 32-bit implementation of the TEA algorithm 3 | * Copyright (c) 2015 Vesselin Bontchev 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_TEA_H 23 | #define AVUTIL_TEA_H 24 | 25 | #include 26 | 27 | /** 28 | * @file 29 | * @brief Public header for libavutil TEA algorithm 30 | * @defgroup lavu_tea TEA 31 | * @ingroup lavu_crypto 32 | * @{ 33 | */ 34 | 35 | extern const int av_tea_size; 36 | 37 | struct AVTEA; 38 | 39 | /** 40 | * Allocate an AVTEA context 41 | * To free the struct: av_free(ptr) 42 | */ 43 | struct AVTEA *av_tea_alloc(void); 44 | 45 | /** 46 | * Initialize an AVTEA context. 47 | * 48 | * @param ctx an AVTEA context 49 | * @param key a key of 16 bytes used for encryption/decryption 50 | * @param rounds the number of rounds in TEA (64 is the "standard") 51 | */ 52 | void av_tea_init(struct AVTEA *ctx, const uint8_t key[16], int rounds); 53 | 54 | /** 55 | * Encrypt or decrypt a buffer using a previously initialized context. 56 | * 57 | * @param ctx an AVTEA context 58 | * @param dst destination array, can be equal to src 59 | * @param src source array, can be equal to dst 60 | * @param count number of 8 byte blocks 61 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used 62 | * @param decrypt 0 for encryption, 1 for decryption 63 | */ 64 | void av_tea_crypt(struct AVTEA *ctx, uint8_t *dst, const uint8_t *src, 65 | int count, uint8_t *iv, int decrypt); 66 | 67 | /** 68 | * @} 69 | */ 70 | 71 | #endif /* AVUTIL_TEA_H */ 72 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/threadmessage.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public License 6 | * as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public License 15 | * along with FFmpeg; if not, write to the Free Software Foundation, Inc., 16 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef AVUTIL_THREADMESSAGE_H 20 | #define AVUTIL_THREADMESSAGE_H 21 | 22 | typedef struct AVThreadMessageQueue AVThreadMessageQueue; 23 | 24 | typedef enum AVThreadMessageFlags { 25 | 26 | /** 27 | * Perform non-blocking operation. 28 | * If this flag is set, send and recv operations are non-blocking and 29 | * return AVERROR(EAGAIN) immediately if they can not proceed. 30 | */ 31 | AV_THREAD_MESSAGE_NONBLOCK = 1, 32 | 33 | } AVThreadMessageFlags; 34 | 35 | /** 36 | * Allocate a new message queue. 37 | * 38 | * @param mq pointer to the message queue 39 | * @param nelem maximum number of elements in the queue 40 | * @param elsize size of each element in the queue 41 | * @return >=0 for success; <0 for error, in particular AVERROR(ENOSYS) if 42 | * lavu was built without thread support 43 | */ 44 | int av_thread_message_queue_alloc(AVThreadMessageQueue **mq, 45 | unsigned nelem, 46 | unsigned elsize); 47 | 48 | /** 49 | * Free a message queue. 50 | * 51 | * The message queue must no longer be in use by another thread. 52 | */ 53 | void av_thread_message_queue_free(AVThreadMessageQueue **mq); 54 | 55 | /** 56 | * Send a message on the queue. 57 | */ 58 | int av_thread_message_queue_send(AVThreadMessageQueue *mq, 59 | void *msg, 60 | unsigned flags); 61 | 62 | /** 63 | * Receive a message from the queue. 64 | */ 65 | int av_thread_message_queue_recv(AVThreadMessageQueue *mq, 66 | void *msg, 67 | unsigned flags); 68 | 69 | /** 70 | * Set the sending error code. 71 | * 72 | * If the error code is set to non-zero, av_thread_message_queue_send() will 73 | * return it immediately. Conventional values, such as AVERROR_EOF or 74 | * AVERROR(EAGAIN), can be used to cause the sending thread to stop or 75 | * suspend its operation. 76 | */ 77 | void av_thread_message_queue_set_err_send(AVThreadMessageQueue *mq, 78 | int err); 79 | 80 | /** 81 | * Set the receiving error code. 82 | * 83 | * If the error code is set to non-zero, av_thread_message_queue_recv() will 84 | * return it immediately when there are no longer available messages. 85 | * Conventional values, such as AVERROR_EOF or AVERROR(EAGAIN), can be used 86 | * to cause the receiving thread to stop or suspend its operation. 87 | */ 88 | void av_thread_message_queue_set_err_recv(AVThreadMessageQueue *mq, 89 | int err); 90 | 91 | /** 92 | * Set the optional free message callback function which will be called if an 93 | * operation is removing messages from the queue. 94 | */ 95 | void av_thread_message_queue_set_free_func(AVThreadMessageQueue *mq, 96 | void (*free_func)(void *msg)); 97 | 98 | /** 99 | * Return the current number of messages in the queue. 100 | * 101 | * @return the current number of messages or AVERROR(ENOSYS) if lavu was built 102 | * without thread support 103 | */ 104 | int av_thread_message_queue_nb_elems(AVThreadMessageQueue *mq); 105 | 106 | /** 107 | * Flush the message queue 108 | * 109 | * This function is mostly equivalent to reading and free-ing every message 110 | * except that it will be done in a single operation (no lock/unlock between 111 | * reads). 112 | */ 113 | void av_thread_message_flush(AVThreadMessageQueue *mq); 114 | 115 | #endif /* AVUTIL_THREADMESSAGE_H */ 116 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/time.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2000-2003 Fabrice Bellard 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef AVUTIL_TIME_H 22 | #define AVUTIL_TIME_H 23 | 24 | #include 25 | 26 | /** 27 | * Get the current time in microseconds. 28 | */ 29 | int64_t av_gettime(void); 30 | 31 | /** 32 | * Get the current time in microseconds since some unspecified starting point. 33 | * On platforms that support it, the time comes from a monotonic clock 34 | * This property makes this time source ideal for measuring relative time. 35 | * The returned values may not be monotonic on platforms where a monotonic 36 | * clock is not available. 37 | */ 38 | int64_t av_gettime_relative(void); 39 | 40 | /** 41 | * Indicates with a boolean result if the av_gettime_relative() time source 42 | * is monotonic. 43 | */ 44 | int av_gettime_relative_is_monotonic(void); 45 | 46 | /** 47 | * Sleep for a period of time. Although the duration is expressed in 48 | * microseconds, the actual delay may be rounded to the precision of the 49 | * system timer. 50 | * 51 | * @param usec Number of microseconds to sleep. 52 | * @return zero on success or (negative) error code. 53 | */ 54 | int av_usleep(unsigned usec); 55 | 56 | #endif /* AVUTIL_TIME_H */ 57 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/timestamp.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | /** 20 | * @file 21 | * timestamp utils, mostly useful for debugging/logging purposes 22 | */ 23 | 24 | #ifndef AVUTIL_TIMESTAMP_H 25 | #define AVUTIL_TIMESTAMP_H 26 | 27 | #include "common.h" 28 | 29 | #if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS) && !defined(PRId64) 30 | #error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS 31 | #endif 32 | 33 | #define AV_TS_MAX_STRING_SIZE 32 34 | 35 | /** 36 | * Fill the provided buffer with a string containing a timestamp 37 | * representation. 38 | * 39 | * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE 40 | * @param ts the timestamp to represent 41 | * @return the buffer in input 42 | */ 43 | static inline char *av_ts_make_string(char *buf, int64_t ts) 44 | { 45 | if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS"); 46 | else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%" PRId64, ts); 47 | return buf; 48 | } 49 | 50 | /** 51 | * Convenience macro, the return value should be used only directly in 52 | * function arguments but never stand-alone. 53 | */ 54 | #define av_ts2str(ts) av_ts_make_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts) 55 | 56 | /** 57 | * Fill the provided buffer with a string containing a timestamp time 58 | * representation. 59 | * 60 | * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE 61 | * @param ts the timestamp to represent 62 | * @param tb the timebase of the timestamp 63 | * @return the buffer in input 64 | */ 65 | static inline char *av_ts_make_time_string(char *buf, int64_t ts, AVRational *tb) 66 | { 67 | if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS"); 68 | else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%.6g", av_q2d(*tb) * ts); 69 | return buf; 70 | } 71 | 72 | /** 73 | * Convenience macro, the return value should be used only directly in 74 | * function arguments but never stand-alone. 75 | */ 76 | #define av_ts2timestr(ts, tb) av_ts_make_time_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts, tb) 77 | 78 | #endif /* AVUTIL_TIMESTAMP_H */ 79 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/twofish.h: -------------------------------------------------------------------------------- 1 | /* 2 | * An implementation of the TwoFish algorithm 3 | * Copyright (c) 2015 Supraja Meedinti 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_TWOFISH_H 23 | #define AVUTIL_TWOFISH_H 24 | 25 | #include 26 | 27 | 28 | /** 29 | * @file 30 | * @brief Public header for libavutil TWOFISH algorithm 31 | * @defgroup lavu_twofish TWOFISH 32 | * @ingroup lavu_crypto 33 | * @{ 34 | */ 35 | 36 | extern const int av_twofish_size; 37 | 38 | struct AVTWOFISH; 39 | 40 | /** 41 | * Allocate an AVTWOFISH context 42 | * To free the struct: av_free(ptr) 43 | */ 44 | struct AVTWOFISH *av_twofish_alloc(void); 45 | 46 | /** 47 | * Initialize an AVTWOFISH context. 48 | * 49 | * @param ctx an AVTWOFISH context 50 | * @param key a key of size ranging from 1 to 32 bytes used for encryption/decryption 51 | * @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 52 | */ 53 | int av_twofish_init(struct AVTWOFISH *ctx, const uint8_t *key, int key_bits); 54 | 55 | /** 56 | * Encrypt or decrypt a buffer using a previously initialized context 57 | * 58 | * @param ctx an AVTWOFISH context 59 | * @param dst destination array, can be equal to src 60 | * @param src source array, can be equal to dst 61 | * @param count number of 16 byte blocks 62 | * @paran iv initialization vector for CBC mode, NULL for ECB mode 63 | * @param decrypt 0 for encryption, 1 for decryption 64 | */ 65 | void av_twofish_crypt(struct AVTWOFISH *ctx, uint8_t *dst, const uint8_t *src, int count, uint8_t* iv, int decrypt); 66 | 67 | /** 68 | * @} 69 | */ 70 | #endif /* AVUTIL_TWOFISH_H */ 71 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libavutil/xtea.h: -------------------------------------------------------------------------------- 1 | /* 2 | * A 32-bit implementation of the XTEA algorithm 3 | * Copyright (c) 2012 Samuel Pitoiset 4 | * 5 | * This file is part of FFmpeg. 6 | * 7 | * FFmpeg is free software; you can redistribute it and/or 8 | * modify it under the terms of the GNU Lesser General Public 9 | * License as published by the Free Software Foundation; either 10 | * version 2.1 of the License, or (at your option) any later version. 11 | * 12 | * FFmpeg is distributed in the hope that it will be useful, 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | * Lesser General Public License for more details. 16 | * 17 | * You should have received a copy of the GNU Lesser General Public 18 | * License along with FFmpeg; if not, write to the Free Software 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 20 | */ 21 | 22 | #ifndef AVUTIL_XTEA_H 23 | #define AVUTIL_XTEA_H 24 | 25 | #include 26 | 27 | /** 28 | * @file 29 | * @brief Public header for libavutil XTEA algorithm 30 | * @defgroup lavu_xtea XTEA 31 | * @ingroup lavu_crypto 32 | * @{ 33 | */ 34 | 35 | typedef struct AVXTEA { 36 | uint32_t key[16]; 37 | } AVXTEA; 38 | 39 | /** 40 | * Allocate an AVXTEA context. 41 | */ 42 | AVXTEA *av_xtea_alloc(void); 43 | 44 | /** 45 | * Initialize an AVXTEA context. 46 | * 47 | * @param ctx an AVXTEA context 48 | * @param key a key of 16 bytes used for encryption/decryption, 49 | * interpreted as big endian 32 bit numbers 50 | */ 51 | void av_xtea_init(struct AVXTEA *ctx, const uint8_t key[16]); 52 | 53 | /** 54 | * Initialize an AVXTEA context. 55 | * 56 | * @param ctx an AVXTEA context 57 | * @param key a key of 16 bytes used for encryption/decryption, 58 | * interpreted as little endian 32 bit numbers 59 | */ 60 | void av_xtea_le_init(struct AVXTEA *ctx, const uint8_t key[16]); 61 | 62 | /** 63 | * Encrypt or decrypt a buffer using a previously initialized context, 64 | * in big endian format. 65 | * 66 | * @param ctx an AVXTEA context 67 | * @param dst destination array, can be equal to src 68 | * @param src source array, can be equal to dst 69 | * @param count number of 8 byte blocks 70 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used 71 | * @param decrypt 0 for encryption, 1 for decryption 72 | */ 73 | void av_xtea_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src, 74 | int count, uint8_t *iv, int decrypt); 75 | 76 | /** 77 | * Encrypt or decrypt a buffer using a previously initialized context, 78 | * in little endian format. 79 | * 80 | * @param ctx an AVXTEA context 81 | * @param dst destination array, can be equal to src 82 | * @param src source array, can be equal to dst 83 | * @param count number of 8 byte blocks 84 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used 85 | * @param decrypt 0 for encryption, 1 for decryption 86 | */ 87 | void av_xtea_le_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src, 88 | int count, uint8_t *iv, int decrypt); 89 | 90 | /** 91 | * @} 92 | */ 93 | 94 | #endif /* AVUTIL_XTEA_H */ 95 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libpostproc/postprocess.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2001-2003 Michael Niedermayer (michaelni@gmx.at) 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation; either version 2 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef POSTPROC_POSTPROCESS_H 22 | #define POSTPROC_POSTPROCESS_H 23 | 24 | /** 25 | * @file 26 | * @ingroup lpp 27 | * external API header 28 | */ 29 | 30 | /** 31 | * @defgroup lpp libpostproc 32 | * Video postprocessing library. 33 | * 34 | * @{ 35 | */ 36 | 37 | #include "libpostproc/version.h" 38 | 39 | /** 40 | * Return the LIBPOSTPROC_VERSION_INT constant. 41 | */ 42 | unsigned postproc_version(void); 43 | 44 | /** 45 | * Return the libpostproc build-time configuration. 46 | */ 47 | const char *postproc_configuration(void); 48 | 49 | /** 50 | * Return the libpostproc license. 51 | */ 52 | const char *postproc_license(void); 53 | 54 | #define PP_QUALITY_MAX 6 55 | 56 | #include 57 | 58 | typedef void pp_context; 59 | typedef void pp_mode; 60 | 61 | #if LIBPOSTPROC_VERSION_INT < (52<<16) 62 | typedef pp_context pp_context_t; 63 | typedef pp_mode pp_mode_t; 64 | extern const char *const pp_help; ///< a simple help text 65 | #else 66 | extern const char pp_help[]; ///< a simple help text 67 | #endif 68 | 69 | void pp_postprocess(const uint8_t * src[3], const int srcStride[3], 70 | uint8_t * dst[3], const int dstStride[3], 71 | int horizontalSize, int verticalSize, 72 | const int8_t *QP_store, int QP_stride, 73 | pp_mode *mode, pp_context *ppContext, int pict_type); 74 | 75 | 76 | /** 77 | * Return a pp_mode or NULL if an error occurred. 78 | * 79 | * @param name the string after "-pp" on the command line 80 | * @param quality a number from 0 to PP_QUALITY_MAX 81 | */ 82 | pp_mode *pp_get_mode_by_name_and_quality(const char *name, int quality); 83 | void pp_free_mode(pp_mode *mode); 84 | 85 | pp_context *pp_get_context(int width, int height, int flags); 86 | void pp_free_context(pp_context *ppContext); 87 | 88 | #define PP_CPU_CAPS_MMX 0x80000000 89 | #define PP_CPU_CAPS_MMX2 0x20000000 90 | #define PP_CPU_CAPS_3DNOW 0x40000000 91 | #define PP_CPU_CAPS_ALTIVEC 0x10000000 92 | #define PP_CPU_CAPS_AUTO 0x00080000 93 | 94 | #define PP_FORMAT 0x00000008 95 | #define PP_FORMAT_420 (0x00000011|PP_FORMAT) 96 | #define PP_FORMAT_422 (0x00000001|PP_FORMAT) 97 | #define PP_FORMAT_411 (0x00000002|PP_FORMAT) 98 | #define PP_FORMAT_444 (0x00000000|PP_FORMAT) 99 | #define PP_FORMAT_440 (0x00000010|PP_FORMAT) 100 | 101 | #define PP_PICT_TYPE_QP2 0x00000010 ///< MPEG2 style QScale 102 | 103 | /** 104 | * @} 105 | */ 106 | 107 | #endif /* POSTPROC_POSTPROCESS_H */ 108 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libpostproc/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Version macros. 3 | * 4 | * This file is part of FFmpeg. 5 | * 6 | * FFmpeg is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * FFmpeg is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with FFmpeg; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef POSTPROC_VERSION_H 22 | #define POSTPROC_VERSION_H 23 | 24 | /** 25 | * @file 26 | * Libpostproc version macros 27 | */ 28 | 29 | #include "libavutil/avutil.h" 30 | 31 | #define LIBPOSTPROC_VERSION_MAJOR 55 32 | #define LIBPOSTPROC_VERSION_MINOR 3 33 | #define LIBPOSTPROC_VERSION_MICRO 100 34 | 35 | #define LIBPOSTPROC_VERSION_INT AV_VERSION_INT(LIBPOSTPROC_VERSION_MAJOR, \ 36 | LIBPOSTPROC_VERSION_MINOR, \ 37 | LIBPOSTPROC_VERSION_MICRO) 38 | #define LIBPOSTPROC_VERSION AV_VERSION(LIBPOSTPROC_VERSION_MAJOR, \ 39 | LIBPOSTPROC_VERSION_MINOR, \ 40 | LIBPOSTPROC_VERSION_MICRO) 41 | #define LIBPOSTPROC_BUILD LIBPOSTPROC_VERSION_INT 42 | 43 | #define LIBPOSTPROC_IDENT "postproc" AV_STRINGIFY(LIBPOSTPROC_VERSION) 44 | 45 | #endif /* POSTPROC_VERSION_H */ 46 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libswresample/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Version macros. 3 | * 4 | * This file is part of libswresample 5 | * 6 | * libswresample is free software; you can redistribute it and/or 7 | * modify it under the terms of the GNU Lesser General Public 8 | * License as published by the Free Software Foundation; either 9 | * version 2.1 of the License, or (at your option) any later version. 10 | * 11 | * libswresample is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | * Lesser General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU Lesser General Public 17 | * License along with libswresample; if not, write to the Free Software 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 | */ 20 | 21 | #ifndef SWRESAMPLE_VERSION_H 22 | #define SWRESAMPLE_VERSION_H 23 | 24 | /** 25 | * @file 26 | * Libswresample version macros 27 | */ 28 | 29 | #include "libavutil/avutil.h" 30 | 31 | #define LIBSWRESAMPLE_VERSION_MAJOR 3 32 | #define LIBSWRESAMPLE_VERSION_MINOR 3 33 | #define LIBSWRESAMPLE_VERSION_MICRO 100 34 | 35 | #define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \ 36 | LIBSWRESAMPLE_VERSION_MINOR, \ 37 | LIBSWRESAMPLE_VERSION_MICRO) 38 | #define LIBSWRESAMPLE_VERSION AV_VERSION(LIBSWRESAMPLE_VERSION_MAJOR, \ 39 | LIBSWRESAMPLE_VERSION_MINOR, \ 40 | LIBSWRESAMPLE_VERSION_MICRO) 41 | #define LIBSWRESAMPLE_BUILD LIBSWRESAMPLE_VERSION_INT 42 | 43 | #define LIBSWRESAMPLE_IDENT "SwR" AV_STRINGIFY(LIBSWRESAMPLE_VERSION) 44 | 45 | #endif /* SWRESAMPLE_VERSION_H */ 46 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/libswscale/version.h: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of FFmpeg. 3 | * 4 | * FFmpeg is free software; you can redistribute it and/or 5 | * modify it under the terms of the GNU Lesser General Public 6 | * License as published by the Free Software Foundation; either 7 | * version 2.1 of the License, or (at your option) any later version. 8 | * 9 | * FFmpeg is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 | * Lesser General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU Lesser General Public 15 | * License along with FFmpeg; if not, write to the Free Software 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 | */ 18 | 19 | #ifndef SWSCALE_VERSION_H 20 | #define SWSCALE_VERSION_H 21 | 22 | /** 23 | * @file 24 | * swscale version macros 25 | */ 26 | 27 | #include "libavutil/version.h" 28 | 29 | #define LIBSWSCALE_VERSION_MAJOR 5 30 | #define LIBSWSCALE_VERSION_MINOR 3 31 | #define LIBSWSCALE_VERSION_MICRO 100 32 | 33 | #define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \ 34 | LIBSWSCALE_VERSION_MINOR, \ 35 | LIBSWSCALE_VERSION_MICRO) 36 | #define LIBSWSCALE_VERSION AV_VERSION(LIBSWSCALE_VERSION_MAJOR, \ 37 | LIBSWSCALE_VERSION_MINOR, \ 38 | LIBSWSCALE_VERSION_MICRO) 39 | #define LIBSWSCALE_BUILD LIBSWSCALE_VERSION_INT 40 | 41 | #define LIBSWSCALE_IDENT "SwS" AV_STRINGIFY(LIBSWSCALE_VERSION) 42 | 43 | /** 44 | * FF_API_* defines may be placed below to indicate public API that will be 45 | * dropped at a future version bump. The defines themselves are not part of 46 | * the public API and may change, break or disappear at any time. 47 | */ 48 | 49 | #ifndef FF_API_SWS_VECTOR 50 | #define FF_API_SWS_VECTOR (LIBSWSCALE_VERSION_MAJOR < 6) 51 | #endif 52 | 53 | #endif /* SWSCALE_VERSION_H */ 54 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/include/x264/x264_config.h: -------------------------------------------------------------------------------- 1 | #define X264_GPL 1 2 | #define X264_INTERLACED 1 3 | #define X264_BIT_DEPTH 0 4 | #define X264_CHROMA_FORMAT 0 5 | #define X264_VERSION "" 6 | #define X264_POINTVER "0.157.x" 7 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libavcodec.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XiaoDongXie1024/XDXCaptureAVStreamEncodeMuxProject/e13dfcefb574235758848dfce64a5086329d0757/OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libavcodec.a -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libavdevice.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XiaoDongXie1024/XDXCaptureAVStreamEncodeMuxProject/e13dfcefb574235758848dfce64a5086329d0757/OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libavdevice.a -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libavfilter.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XiaoDongXie1024/XDXCaptureAVStreamEncodeMuxProject/e13dfcefb574235758848dfce64a5086329d0757/OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libavfilter.a -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libavformat.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XiaoDongXie1024/XDXCaptureAVStreamEncodeMuxProject/e13dfcefb574235758848dfce64a5086329d0757/OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libavformat.a -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libavutil.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XiaoDongXie1024/XDXCaptureAVStreamEncodeMuxProject/e13dfcefb574235758848dfce64a5086329d0757/OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libavutil.a -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libpostproc.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XiaoDongXie1024/XDXCaptureAVStreamEncodeMuxProject/e13dfcefb574235758848dfce64a5086329d0757/OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libpostproc.a -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libswresample.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XiaoDongXie1024/XDXCaptureAVStreamEncodeMuxProject/e13dfcefb574235758848dfce64a5086329d0757/OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libswresample.a -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libswscale.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XiaoDongXie1024/XDXCaptureAVStreamEncodeMuxProject/e13dfcefb574235758848dfce64a5086329d0757/OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libswscale.a -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libx264.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XiaoDongXie1024/XDXCaptureAVStreamEncodeMuxProject/e13dfcefb574235758848dfce64a5086329d0757/OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/FFmpeg-iOS/lib/libx264.a -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/XDXSingleton.h: -------------------------------------------------------------------------------- 1 | // 2 | // XDXSingleton.h 3 | // 4 | // Created by 小东邪 on 2018/6/15. 5 | // Copyright © 2018 小东邪. All rights reserved. 6 | // 7 | 8 | #ifndef XDXSingleton_h 9 | #define XDXSingleton_h 10 | 11 | // .h文件的实现 12 | #define SingletonH 13 | 14 | // .m文件的实现 15 | #if __has_feature(objc_arc) // 是ARC 16 | #define SingletonM \ 17 | static id _instace = nil; \ 18 | + (id)allocWithZone:(struct _NSZone *)zone \ 19 | { \ 20 | if (_instace == nil) { \ 21 | static dispatch_once_t onceToken; \ 22 | dispatch_once(&onceToken, ^{ \ 23 | _instace = [super allocWithZone:zone]; \ 24 | }); \ 25 | } \ 26 | return _instace; \ 27 | } \ 28 | \ 29 | + (id)copyWithZone:(struct _NSZone *)zone \ 30 | { \ 31 | return _instace; \ 32 | } \ 33 | \ 34 | + (id)mutableCopyWithZone:(struct _NSZone *)zone \ 35 | { \ 36 | return _instace; \ 37 | } 38 | 39 | #else // 不是ARC 40 | 41 | #define SingletonM \ 42 | static id _instace = nil; \ 43 | + (id)allocWithZone:(struct _NSZone *)zone \ 44 | { \ 45 | if (_instace == nil) { \ 46 | static dispatch_once_t onceToken; \ 47 | dispatch_once(&onceToken, ^{ \ 48 | _instace = [super allocWithZone:zone]; \ 49 | }); \ 50 | } \ 51 | return _instace; \ 52 | } \ 53 | \ 54 | - (id)init \ 55 | { \ 56 | static dispatch_once_t onceToken; \ 57 | dispatch_once(&onceToken, ^{ \ 58 | _instace = [super init]; \ 59 | }); \ 60 | return _instace; \ 61 | } \ 62 | \ 63 | - (oneway void)release \ 64 | { \ 65 | \ 66 | } \ 67 | \ 68 | - (id)retain \ 69 | { \ 70 | return self; \ 71 | } \ 72 | \ 73 | - (NSUInteger)retainCount \ 74 | { \ 75 | return 1; \ 76 | } \ 77 | + (id)copyWithZone:(struct _NSZone *)zone \ 78 | { \ 79 | return _instace; \ 80 | } \ 81 | \ 82 | + (id)mutableCopyWithZone:(struct _NSZone *)zone \ 83 | { \ 84 | return _instace; \ 85 | } 86 | #endif 87 | 88 | #endif /* XDXSingleton_h */ 89 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/YYModel/YYModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // YYModel.h 3 | // YYModel 4 | // 5 | // Created by ibireme on 15/5/10. 6 | // Copyright (c) 2015 ibireme. 7 | // 8 | // This source code is licensed under the MIT-style license found in the 9 | // LICENSE file in the root directory of this source tree. 10 | // 11 | 12 | #import 13 | 14 | #if __has_include() 15 | FOUNDATION_EXPORT double YYModelVersionNumber; 16 | FOUNDATION_EXPORT const unsigned char YYModelVersionString[]; 17 | #import 18 | #import 19 | #else 20 | #import "NSObject+YYModel.h" 21 | #import "YYClassInfo.h" 22 | #endif 23 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/3rd/log4cplus.h: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #ifndef XDX_IOS 4 | #define XDX_IOS 5 | #endif 6 | 7 | // Note: Only debug mode will print log. You could also set mode for log level. 8 | #define kXDXDebugMode 9 | // XDXLogLevelFatal , XDXLogLevelError , XDXLogLevelWarn , XDXLogLevelInfo , XDXLogLevelDebug 10 | #define XDXLogLevelInfo 11 | 12 | #ifdef kXDXDebugMode 13 | 14 | static const int XDX_IOS_FLAG_FATAL = 0x10; 15 | static const int XDX_IOS_FLAG_ERROR = 0x08; 16 | static const int XDX_IOS_FLAG_WARN = 0x04; 17 | static const int XDX_IOS_FLAG_INFO = 0x02; 18 | static const int XDX_IOS_FLAG_DEBUG = 0x01; 19 | 20 | #ifdef XDXLogLevelFatal 21 | static const int XDX_IOS_LOG_LEVEL = XDX_IOS_FLAG_FATAL; 22 | #elif defined(XDXLogLevelError) 23 | static const int XDX_IOS_LOG_LEVEL = (XDX_IOS_FLAG_FATAL | XDX_IOS_FLAG_ERROR); 24 | #elif defined(XDXLogLevelWarn) 25 | static const int XDX_IOS_LOG_LEVEL = (XDX_IOS_FLAG_FATAL | XDX_IOS_FLAG_ERROR | XDX_IOS_FLAG_WARN); 26 | #elif defined(XDXLogLevelInfo) 27 | static const int XDX_IOS_LOG_LEVEL = (XDX_IOS_FLAG_FATAL | XDX_IOS_FLAG_ERROR | XDX_IOS_FLAG_WARN | XDX_IOS_FLAG_INFO); 28 | #elif defined(XDXLogLevelDebug) 29 | static const int XDX_IOS_LOG_LEVEL = (XDX_IOS_FLAG_FATAL | XDX_IOS_FLAG_ERROR | XDX_IOS_FLAG_WARN | XDX_IOS_FLAG_INFO | XDX_IOS_FLAG_DEBUG); 30 | #endif 31 | 32 | 33 | 34 | #define log4cplus_fatal(category, logFmt, ...) \ 35 | if(XDX_IOS_LOG_LEVEL & XDX_IOS_FLAG_FATAL) \ 36 | syslog(LOG_CRIT, "%s:" logFmt, category,##__VA_ARGS__); \ 37 | 38 | #define log4cplus_error(category, logFmt, ...) \ 39 | if(XDX_IOS_LOG_LEVEL & XDX_IOS_FLAG_ERROR) \ 40 | syslog(LOG_ERR, "%s:" logFmt, category,##__VA_ARGS__); \ 41 | 42 | #define log4cplus_warn(category, logFmt, ...) \ 43 | if(XDX_IOS_LOG_LEVEL & XDX_IOS_FLAG_WARN) \ 44 | syslog(LOG_WARNING, "%s:" logFmt, category,##__VA_ARGS__); \ 45 | 46 | #define log4cplus_info(category, logFmt, ...) \ 47 | if(XDX_IOS_LOG_LEVEL & XDX_IOS_FLAG_INFO) \ 48 | syslog(LOG_WARNING, "%s:" logFmt, category,##__VA_ARGS__); \ 49 | 50 | #define log4cplus_debug(category, logFmt, ...) \ 51 | if(XDX_IOS_LOG_LEVEL & XDX_IOS_FLAG_DEBUG) \ 52 | syslog(LOG_WARNING, "%s:" logFmt, category,##__VA_ARGS__); \ 53 | 54 | 55 | #else 56 | 57 | #define log4cplus_fatal(category, logFmt, ...); \ 58 | 59 | #define log4cplus_error(category, logFmt, ...); \ 60 | 61 | #define log4cplus_warn(category, logFmt, ...); \ 62 | 63 | #define log4cplus_info(category, logFmt, ...); \ 64 | 65 | #define log4cplus_debug(category, logFmt, ...); \ 66 | 67 | #endif 68 | 69 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // XDXCaptureAVStreamEncodeMuxProject 4 | // 5 | // Created by 小东邪 on 2019/7/7. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // XDXCaptureAVStreamEncodeMuxProject 4 | // 5 | // Created by 小东邪 on 2019/7/7. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @end 14 | 15 | @implementation AppDelegate 16 | 17 | 18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 19 | // Override point for customization after application launch. 20 | return YES; 21 | } 22 | 23 | 24 | - (void)applicationWillResignActive:(UIApplication *)application { 25 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 26 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 27 | } 28 | 29 | 30 | - (void)applicationDidEnterBackground:(UIApplication *)application { 31 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 32 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 33 | } 34 | 35 | 36 | - (void)applicationWillEnterForeground:(UIApplication *)application { 37 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 38 | } 39 | 40 | 41 | - (void)applicationDidBecomeActive:(UIApplication *)application { 42 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 43 | } 44 | 45 | 46 | - (void)applicationWillTerminate:(UIApplication *)application { 47 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 48 | } 49 | 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Capture/Audio/XDXAudioCaptureManager.h: -------------------------------------------------------------------------------- 1 | // 2 | // XDXAudioCaptureManager.h 3 | // XDXAudioUnitCapture 4 | // 5 | // Created by 小东邪 on 2019/5/10. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "XDXSingleton.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | struct XDXCaptureAudioData { 15 | void *data; 16 | int size; 17 | int64_t pts; 18 | }; 19 | 20 | typedef struct XDXCaptureAudioData* XDXCaptureAudioDataRef; 21 | 22 | @protocol XDXAudioCaptureDelegate 23 | 24 | @optional 25 | - (void)receiveAudioDataByDevice:(XDXCaptureAudioDataRef)audioDataRef; 26 | 27 | @end 28 | 29 | 30 | @interface XDXAudioCaptureManager : NSObject 31 | SingletonH 32 | 33 | @property (nonatomic, assign, readonly) BOOL isRunning; 34 | 35 | @property (nonatomic, weak) id delegate; 36 | 37 | + (instancetype)getInstance; 38 | - (void)startAudioCapture; 39 | - (void)stopAudioCapture; 40 | - (void)freeAudioUnit; 41 | 42 | - (AudioStreamBasicDescription)getAudioDataFormat; 43 | 44 | @end 45 | 46 | NS_ASSUME_NONNULL_END 47 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Capture/Video/XDXCameraHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // XDXCameraHandler.h 3 | // XDXAVCaptureSession 4 | // 5 | // Created by 李承阳 on 2019/4/6. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @protocol XDXCameraHandlerDelegate 15 | 16 | - (void)xdxCaptureOutput:(AVCaptureOutput *)output 17 | didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 18 | fromConnection:(AVCaptureConnection *)connection; 19 | 20 | - (void)xdxCaptureOutput:(AVCaptureOutput *)output 21 | didDropSampleBuffer:(CMSampleBufferRef)sampleBuffer 22 | fromConnection:(AVCaptureConnection *)connection; 23 | 24 | @end 25 | 26 | @class XDXCameraModel; 27 | 28 | @interface XDXCameraHandler : NSObject 29 | 30 | @property (nonatomic, assign) id delegate; 31 | @property (nonatomic, strong) XDXCameraModel *cameraModel; 32 | 33 | /** 34 | * Please congiure camera param to use it at the first time. 35 | * Then you could start / stop camera. 36 | */ 37 | - (void)startRunning; 38 | - (void)stopRunning; 39 | - (void)configureCameraWithModel:(XDXCameraModel *)model; 40 | 41 | /** 42 | * Switch front / back camera 43 | * Note: If the device is not support current resolution / framerat after switching, we will auto reduce it's level. 44 | * For example : Device: (iPhone X, Resolution: back camera max: 3840, back camera max: 1920), switch camera from back to front if the resolution is 4K, we should reset the device resolution to 2K. 45 | */ 46 | - (void)switchCamera; 47 | 48 | /** 49 | * Set camera resolution (Support high frame rate) 50 | * @param height : height of the resolution 51 | */ 52 | - (void)setCameraResolutionByActiveFormatWithHeight:(int)height; 53 | 54 | /** 55 | * Get camera max support resolution by current frame rate 56 | */ 57 | - (int)getMaxSupportResolutionByActiveFormat; 58 | 59 | /** 60 | * Set camera frame rate (support high frame rate) 61 | * Note: the max support frame rate is different by different resolution. 62 | */ 63 | - (void)setCameraForHFRWithFrameRate:(int)frameRate; 64 | 65 | /** 66 | * Get max support frame rate by current resolution 67 | */ 68 | - (int)getMaxFrameRateByCurrentResolution; 69 | 70 | 71 | /** 72 | * Get camera ouput real time width and height 73 | */ 74 | - (int)getRealtimeResolutionHeight; 75 | - (int)getRealtimeResolutionWidth; 76 | 77 | /** 78 | * Get video fps for real time 79 | */ 80 | - (int)getCaputreViedeoFPS; 81 | 82 | /** 83 | * Set focus point 84 | * @param point : coordinate of your view 85 | */ 86 | - (void)setFocusPoint:(CGPoint)point; 87 | 88 | /** 89 | * Get max/min exposure value for camera.(-8 ~ 8) 90 | */ 91 | - (CGFloat)getMaxExposureValue; 92 | - (CGFloat)getMinExposureValue; 93 | 94 | /** 95 | * Set camera exposure value (-8 ~ 8) 96 | */ 97 | - (void)setExposureWithNewValue:(CGFloat)newExposureValue; 98 | 99 | /** 100 | * Set open / close torch 101 | */ 102 | - (void)setTorchState:(BOOL)isOpen; 103 | 104 | /** 105 | * Set video orientation by screen orientation 106 | */ 107 | - (void)adjustVideoOrientationByScreenOrientation:(UIDeviceOrientation)orientation; 108 | 109 | /** 110 | * Set video gravity. 111 | * Note: If your video resolution == your screen resolution, the effect is the same. 112 | */ 113 | - (void)setVideoGravity:(AVLayerVideoGravity)videoGravity; 114 | 115 | /** 116 | * Set white balance value by temperature or tint 117 | * temperature:-150~250 , tint: -150~150 118 | */ 119 | - (void)setWhiteBlanceValueByTint:(float)tint; 120 | - (void)setWhiteBlanceValueByTemperature:(float)temperature; 121 | 122 | @end 123 | 124 | NS_ASSUME_NONNULL_END 125 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Capture/Video/XDXCameraModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // XDXCameraModel.h 3 | // XDXAVCaptureSession 4 | // 5 | // Created by 李承阳 on 2019/4/6. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface XDXCameraModel : NSObject 15 | 16 | @property (nonatomic, strong) UIView *previewView; 17 | 18 | @property (nonatomic, copy ) AVCaptureSessionPreset preset; 19 | @property (nonatomic, assign) int frameRate; 20 | @property (nonatomic, assign) int resolutionHeight; 21 | @property (nonatomic, assign) OSType videoFormat; 22 | 23 | @property (nonatomic, assign) AVCaptureTorchMode torchMode; 24 | @property (nonatomic, assign) AVCaptureFocusMode focusMode; 25 | @property (nonatomic, assign) AVCaptureExposureMode exposureMode; 26 | @property (nonatomic, assign) AVCaptureFlashMode flashMode; 27 | @property (nonatomic, assign) AVCaptureWhiteBalanceMode whiteBalanceMode; 28 | 29 | @property (nonatomic, assign) AVCaptureDevicePosition position; 30 | @property (nonatomic, copy ) AVLayerVideoGravity videoGravity; 31 | @property (nonatomic, assign) AVCaptureVideoOrientation videoOrientation; 32 | 33 | @property (nonatomic, assign) BOOL isEnableVideoStabilization; 34 | 35 | - (instancetype)initWithPreviewView:(UIView *)previewView 36 | preset:(AVCaptureSessionPreset)preset 37 | frameRate:(int)frameRate 38 | resolutionHeight:(int)resolutionHeight 39 | videoFormat:(OSType)videoFormat 40 | torchMode:(AVCaptureTorchMode)torchMode 41 | focusMode:(AVCaptureFocusMode)focusMode 42 | exposureMode:(AVCaptureExposureMode)exposureMode 43 | flashMode:(AVCaptureFlashMode)flashMode 44 | whiteBalanceMode:(AVCaptureWhiteBalanceMode)whiteBalanceMode 45 | position:(AVCaptureDevicePosition)position 46 | videoGravity:(AVLayerVideoGravity)videoGravity 47 | videoOrientation:(AVCaptureVideoOrientation)videoOrientation 48 | isEnableVideoStabilization:(BOOL)isEnableVideoStabilization; 49 | 50 | @end 51 | 52 | NS_ASSUME_NONNULL_END 53 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Capture/Video/XDXCameraModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // XDXCameraModel.m 3 | // XDXAVCaptureSession 4 | // 5 | // Created by 李承阳 on 2019/4/6. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import "XDXCameraModel.h" 10 | 11 | @implementation XDXCameraModel 12 | 13 | - (instancetype)initWithPreviewView:(UIView *)previewView 14 | preset:(AVCaptureSessionPreset)preset 15 | frameRate:(int)frameRate 16 | resolutionHeight:(int)resolutionHeight 17 | videoFormat:(OSType)videoFormat 18 | torchMode:(AVCaptureTorchMode)torchMode 19 | focusMode:(AVCaptureFocusMode)focusMode 20 | exposureMode:(AVCaptureExposureMode)exposureMode 21 | flashMode:(AVCaptureFlashMode)flashMode 22 | whiteBalanceMode:(AVCaptureWhiteBalanceMode)whiteBalanceMode 23 | position:(AVCaptureDevicePosition)position 24 | videoGravity:(AVLayerVideoGravity)videoGravity 25 | videoOrientation:(AVCaptureVideoOrientation)videoOrientation 26 | isEnableVideoStabilization:(BOOL)isEnableVideoStabilization { 27 | 28 | if (self = [super init]) { 29 | self.previewView = previewView; 30 | self.preset = preset; 31 | self.frameRate = frameRate; 32 | self.resolutionHeight = resolutionHeight; 33 | self.videoFormat = videoFormat; 34 | self.torchMode = torchMode; 35 | self.focusMode = focusMode; 36 | self.exposureMode = exposureMode; 37 | self.flashMode = flashMode; 38 | self.whiteBalanceMode = whiteBalanceMode; 39 | self.position = position; 40 | self.videoGravity = videoGravity; 41 | self.videoOrientation = videoOrientation; 42 | self.isEnableVideoStabilization = isEnableVideoStabilization; 43 | } 44 | return self; 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Encoder/Audio/XDXAduioEncoder.h: -------------------------------------------------------------------------------- 1 | // 2 | // XDXAduioEncoder.h 3 | // XDXAudioUnitCapture 4 | // 5 | // Created by 小东邪 on 2019/5/12. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | struct XDXAudioEncderData { 15 | void *data; 16 | int size; 17 | int64_t pts; 18 | }; 19 | 20 | typedef struct XDXAudioEncderData *XDXAudioEncderDataRef; 21 | 22 | @interface XDXAduioEncoder : NSObject 23 | { 24 | @public 25 | AudioConverterRef mAudioConverter; 26 | AudioStreamBasicDescription mDestinationFormat; 27 | AudioStreamBasicDescription mSourceFormat; 28 | } 29 | 30 | /** 31 | Init Audio Encoder 32 | @param sourceFormat source audio data format 33 | @param destFormatID destination audio data format 34 | @param isUseHardwareEncode Use hardware / software encode 35 | @return object. 36 | */ 37 | - (instancetype)initWithSourceFormat:(AudioStreamBasicDescription)sourceFormat 38 | destFormatID:(AudioFormatID)destFormatID 39 | sampleRate:(float)sampleRate 40 | isUseHardwareEncode:(BOOL)isUseHardwareEncode; 41 | 42 | /** 43 | Encode Audio Data 44 | @param sourceBuffer source audio data 45 | @param sourceBufferSize source audio data size 46 | @param pts audio data timestamp 47 | @param completeHandler get audio data after encoding 48 | */ 49 | - (void)encodeAudioWithSourceBuffer:(void *)sourceBuffer 50 | sourceBufferSize:(UInt32)sourceBufferSize 51 | pts:(int64_t)pts 52 | completeHandler:(void(^)(XDXAudioEncderDataRef audioDataRef))completeHandler; 53 | 54 | 55 | - (void)freeEncoder; 56 | 57 | @end 58 | 59 | NS_ASSUME_NONNULL_END 60 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Encoder/Video/XDXVideoEncoder.h: -------------------------------------------------------------------------------- 1 | // 2 | // XDXVideoEncoder.h 3 | // XDXVideoEncoder 4 | // 5 | // Created by 小东邪 on 2019/5/13. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | typedef enum : NSUInteger { 14 | XDXH264Encoder = 264, 15 | XDXH265Encoder = 265, 16 | } XDXVideoEncoderType; 17 | 18 | struct XDXVideEncoderData { 19 | BOOL isKeyFrame; 20 | BOOL isExtraData; 21 | uint8_t *data; 22 | size_t size; 23 | int64_t timestamp; 24 | }; 25 | 26 | typedef struct XDXVideEncoderData* XDXVideEncoderDataRef; 27 | 28 | @protocol XDXVideoEncoderDelegate 29 | 30 | @optional 31 | - (void)receiveVideoEncoderData:(XDXVideEncoderDataRef)dataRef; 32 | 33 | @end 34 | 35 | @interface XDXVideoEncoder : NSObject 36 | 37 | @property (assign, nonatomic) XDXVideoEncoderType encoderType; 38 | @property (nonatomic, weak) id delegate; 39 | 40 | /** 41 | Init 42 | */ 43 | -(instancetype)initWithWidth:(int)width 44 | height:(int)height 45 | fps:(int)fps 46 | bitrate:(int)bitrate 47 | isSupportRealTimeEncode:(BOOL)isSupportRealTimeEncode 48 | encoderType:(XDXVideoEncoderType)encoderType; 49 | 50 | 51 | /** 52 | Restart 53 | */ 54 | - (void)configureEncoderWithWidth:(int)width 55 | height:(int)height; 56 | 57 | 58 | 59 | /** 60 | Start encode data 61 | */ 62 | - (void)startEncodeDataWithBuffer:(CMSampleBufferRef)buffer 63 | isNeedFreeBuffer:(BOOL)isNeedFreeBuffer; 64 | 65 | 66 | /** 67 | Free resources 68 | */ 69 | - (void)freeVideoEncoder; 70 | 71 | 72 | /** 73 | Force insert I frame 74 | */ 75 | - (void)forceInsertKeyFrame; 76 | 77 | @end 78 | 79 | NS_ASSUME_NONNULL_END 80 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/FFmpeg_Mux/XDXAVPacketList.h: -------------------------------------------------------------------------------- 1 | // 2 | // XDXAVPacketList.h 3 | // XDXCaptureAVStreamEncodeMuxProject 4 | // 5 | // Created by 小东邪 on 2019/7/8. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #ifdef __cplusplus 12 | extern "C" 13 | { 14 | #endif 15 | 16 | #include "libavcodec/avcodec.h" 17 | #include "libavformat/avformat.h" 18 | #include "libavutil/avstring.h" 19 | #include "libswscale/swscale.h" 20 | //#include "libavcodec/audioconvert.h" 21 | #ifdef __cplusplus 22 | } 23 | #endif 24 | 25 | NS_ASSUME_NONNULL_BEGIN 26 | 27 | typedef enum : NSUInteger { 28 | XDXMuxVideoType, 29 | XDXMuxAudioType, 30 | } XDXMuxMediaType; 31 | 32 | typedef struct { 33 | AVPacket *data; 34 | u_int64_t timeStamp; 35 | XDXMuxMediaType datatype; 36 | BOOL extraDataHasChanged; 37 | }XDXMuxMediaList; 38 | 39 | 40 | @interface XDXAVPacketList : NSObject 41 | 42 | - (BOOL)pushData:(XDXMuxMediaList)data; 43 | - (void)popData:(XDXMuxMediaList *)mediaList; 44 | 45 | 46 | - (void)reset; 47 | - (int )count; 48 | - (void)flush; 49 | 50 | @end 51 | 52 | NS_ASSUME_NONNULL_END 53 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/FFmpeg_Mux/XDXAVPacketList.mm: -------------------------------------------------------------------------------- 1 | // 2 | // XDXAVPacketList.m 3 | // XDXCaptureAVStreamEncodeMuxProject 4 | // 5 | // Created by 小东邪 on 2019/7/8. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import "XDXAVPacketList.h" 10 | #include 11 | #include 12 | 13 | #define MAX_MEDIALIST_LENGTH 100 14 | 15 | using namespace std; 16 | 17 | @interface XDXAVPacketList () 18 | { 19 | std::vector m_totalList; 20 | 21 | u_int64_t m_nextTimeStamp; 22 | pthread_mutex_t m_lock; 23 | 24 | int m_count; 25 | int m_static; 26 | } 27 | 28 | @end 29 | 30 | @implementation XDXAVPacketList 31 | 32 | #pragma mark - Lifecycle 33 | - (instancetype)init { 34 | if (self = [super init]) { 35 | pthread_mutex_init(&m_lock, NULL); 36 | [self reset]; 37 | } 38 | return self; 39 | } 40 | 41 | - (void)dealloc { 42 | pthread_mutex_destroy(&m_lock); 43 | } 44 | 45 | 46 | #pragma mark - Public 47 | - (BOOL)pushData:(XDXMuxMediaList)data { 48 | BOOL result = NO; 49 | 50 | pthread_mutex_lock(&m_lock); 51 | 52 | if(m_count < MAX_MEDIALIST_LENGTH) { 53 | if(m_count == 0) 54 | m_nextTimeStamp = data.timeStamp; 55 | 56 | m_totalList.push_back(data); 57 | m_count ++; 58 | 59 | if(m_static < m_count) 60 | m_static = m_count; 61 | 62 | result = YES; 63 | } 64 | 65 | pthread_mutex_unlock(&m_lock); 66 | 67 | return result; 68 | } 69 | 70 | - (void)popData:(XDXMuxMediaList *)mediaList { 71 | pthread_mutex_lock(&m_lock); 72 | 73 | if (m_count <= 0) { 74 | pthread_mutex_unlock(&m_lock); 75 | return; 76 | } 77 | 78 | vector::iterator iterator; 79 | 80 | iterator = m_totalList.begin(); 81 | mediaList->timeStamp = (*iterator).timeStamp; 82 | mediaList->data = (*iterator).data; 83 | mediaList->datatype = (*iterator).datatype; 84 | 85 | m_totalList.erase (iterator); 86 | m_count --; 87 | 88 | if(m_count == 0) { 89 | m_nextTimeStamp = 0; 90 | }else { 91 | iterator = m_totalList.begin(); 92 | m_nextTimeStamp = mediaList->timeStamp; 93 | } 94 | 95 | pthread_mutex_unlock(&m_lock); 96 | } 97 | 98 | - (void)reset { 99 | pthread_mutex_lock(&m_lock); 100 | //m_totalList.clear(); 101 | m_count = 0; 102 | m_nextTimeStamp = 0; 103 | m_static = 0; 104 | pthread_mutex_unlock(&m_lock); 105 | } 106 | 107 | - (int)count { 108 | int count = 0; 109 | pthread_mutex_lock(&m_lock); 110 | count = m_count; 111 | pthread_mutex_unlock(&m_lock); 112 | return count; 113 | } 114 | 115 | - (void)flush { 116 | m_totalList.clear(); 117 | } 118 | 119 | #pragma mark - Private 120 | 121 | #pragma mark - Other 122 | 123 | @end 124 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/FFmpeg_Mux/XDXAVStreamMuxHandler.h: -------------------------------------------------------------------------------- 1 | // 2 | // XDXAVStreamMuxHandler.h 3 | // XDXCaptureAVStreamEncodeMuxProject 4 | // 5 | // Created by 小东邪 on 2019/7/7. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "XDXSingleton.h" 11 | 12 | #ifdef __cplusplus 13 | extern "C" 14 | { 15 | #endif 16 | 17 | #include "libavcodec/avcodec.h" 18 | #include "libavformat/avformat.h" 19 | #include "libavutil/avstring.h" 20 | #include "libavutil/error.h" 21 | #include "libswscale/swscale.h" 22 | #include 23 | #include 24 | #include 25 | #ifdef __cplusplus 26 | } 27 | #endif 28 | 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | NS_ASSUME_NONNULL_BEGIN 35 | 36 | typedef enum : NSUInteger { 37 | XDXMuxVideoFormatNone, 38 | XDXMuxVideoFormatH264 = 264, 39 | XDXMuxVideoFormatH265 = 265, 40 | } XDXMuxVideoFormat; 41 | 42 | @protocol XDXAVStreamMuxDelegate 43 | 44 | @optional 45 | - (void)receiveAVStreamWithIsHead:(BOOL)isHead data:(uint8_t *)data size:(int)size; 46 | 47 | @end 48 | 49 | @interface XDXAVStreamMuxHandler : NSObject 50 | 51 | @property (weak , nonatomic) id delegate; 52 | 53 | + (instancetype)sharedInstance; 54 | 55 | 56 | /** 57 | * Must call it once after the instance init. 58 | */ 59 | - (void)prepareForMux; 60 | 61 | 62 | /** 63 | * Add audio and video data to mux. 64 | */ 65 | - (void)addVideoData:(uint8_t *)data 66 | size:(int)size 67 | timestamp:(int64_t)timestamp 68 | isKeyFrame:(BOOL)isKeyFrame 69 | isExtraData:(BOOL)isExtraData 70 | videoFormat:(XDXMuxVideoFormat)videoFormat; 71 | 72 | - (void)addAudioData:(uint8_t *)data 73 | size:(int)size 74 | channelNum:(int)channelNum 75 | sampleRate:(int)sampleRate 76 | timestamp:(int64_t)timestamp; 77 | 78 | 79 | /** 80 | * Get av stream head data and size. 81 | */ 82 | - (void *)getAVStreamHeadWithSize:(int *)size; 83 | 84 | @end 85 | 86 | NS_ASSUME_NONNULL_END 87 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIFileSharingEnabled 6 | 7 | NSMicrophoneUsageDescription 8 | Give me microphone authority 9 | NSCameraUsageDescription 10 | Give me camera authority 11 | CFBundleDevelopmentRegion 12 | $(DEVELOPMENT_LANGUAGE) 13 | CFBundleExecutable 14 | $(EXECUTABLE_NAME) 15 | CFBundleIdentifier 16 | $(PRODUCT_BUNDLE_IDENTIFIER) 17 | CFBundleInfoDictionaryVersion 18 | 6.0 19 | CFBundleName 20 | $(PRODUCT_NAME) 21 | CFBundlePackageType 22 | APPL 23 | CFBundleShortVersionString 24 | 1.0 25 | CFBundleVersion 26 | 1 27 | LSRequiresIPhoneOS 28 | 29 | UILaunchStoryboardName 30 | LaunchScreen 31 | UIMainStoryboardFile 32 | Main 33 | UIRequiredDeviceCapabilities 34 | 35 | armv7 36 | 37 | UISupportedInterfaceOrientations 38 | 39 | UIInterfaceOrientationLandscapeRight 40 | 41 | UISupportedInterfaceOrientations~ipad 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationPortraitUpsideDown 45 | UIInterfaceOrientationLandscapeLeft 46 | UIInterfaceOrientationLandscapeRight 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Record/XDXAVRecorder.h: -------------------------------------------------------------------------------- 1 | // 2 | // XDXAVRecorder.h 3 | // XDXCaptureAVStreamEncodeMuxProject 4 | // 5 | // Created by 小东邪 on 2019/7/9. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface XDXAVRecorder : NSObject 14 | 15 | /** 16 | * Start / Stop record. 17 | * Note: Write header at first. 18 | */ 19 | - (void)startRecordWithIsHead:(BOOL)isHead data:(char *)data size:(int)size; 20 | - (void)stopRecord; 21 | 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/Record/XDXAVRecorder.m: -------------------------------------------------------------------------------- 1 | // 2 | // XDXAVRecorder.m 3 | // XDXCaptureAVStreamEncodeMuxProject 4 | // 5 | // Created by 小东邪 on 2019/7/9. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import "XDXAVRecorder.h" 10 | #import "log4cplus.h" 11 | 12 | @interface XDXAVRecorder () { 13 | FILE *m_fp; 14 | } 15 | 16 | @property (assign, nonatomic) BOOL hadAVHead; 17 | @property (strong, nonatomic) NSLock *writeFileLock; 18 | 19 | @end 20 | 21 | @implementation XDXAVRecorder 22 | 23 | #pragma mark - Lifecycle 24 | - (instancetype)init { 25 | if (self = [super init]) { 26 | _hadAVHead = NO; 27 | _writeFileLock = [[NSLock alloc] init]; 28 | } 29 | return self; 30 | } 31 | 32 | #pragma mark - Public 33 | - (void)startRecordWithIsHead:(BOOL)isHead data:(char *)data size:(int)size { 34 | [self.writeFileLock lock]; 35 | 36 | if (isHead) { 37 | [self openFile]; 38 | fseek(m_fp, 0, SEEK_SET); 39 | self.hadAVHead = YES; 40 | } 41 | 42 | if (!self.hadAVHead) { 43 | [self.writeFileLock unlock]; 44 | return; 45 | } 46 | 47 | if(m_fp != NULL) { 48 | fwrite(data, 1, size, m_fp); 49 | } 50 | 51 | [self.writeFileLock unlock]; 52 | } 53 | 54 | - (void)stopRecord { 55 | [self.writeFileLock lock]; 56 | [self closeFile]; 57 | self.hadAVHead = NO; 58 | [self.writeFileLock unlock]; 59 | } 60 | 61 | #pragma mark - Private 62 | - (void)openFile { 63 | NSString *filePath = [self createFilePath]; 64 | 65 | m_fp = fopen(filePath.UTF8String, "w+"); 66 | if(m_fp == NULL) { 67 | NSLog(@"open file failed: %@",filePath); 68 | } 69 | } 70 | 71 | - (void)closeFile { 72 | if(m_fp != NULL) { 73 | fclose(m_fp); 74 | m_fp = NULL; 75 | } 76 | } 77 | 78 | - (NSString *)createFilePath { 79 | NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 80 | dateFormatter.dateFormat = @"yyyy_MM_dd_HH_mm_ss"; 81 | NSDate *today = [NSDate date]; 82 | NSString *fileName = [dateFormatter stringFromDate:today]; 83 | 84 | NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 85 | NSUserDomainMask, 86 | YES); 87 | 88 | NSString *documentPath = [searchPaths objectAtIndex:0]; 89 | 90 | // // 先创建子目录. 注意,若果直接调用AudioFileCreateWithURL创建一个不存在的目录创建文件会失败 91 | NSFileManager *fileManager = [NSFileManager defaultManager]; 92 | if (![fileManager fileExistsAtPath:documentPath]) { 93 | [fileManager createDirectoryAtPath:documentPath withIntermediateDirectories:YES attributes:nil error:nil]; 94 | } 95 | 96 | NSString *fullFileName = [NSString stringWithFormat:@"%@.asf",fileName]; 97 | NSString *filePath = [documentPath stringByAppendingPathComponent:fullFileName]; 98 | return filePath; 99 | } 100 | 101 | #pragma mark - Other 102 | 103 | 104 | @end 105 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // XDXCaptureAVStreamEncodeMuxProject 4 | // 5 | // Created by 小东邪 on 2019/7/7. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /OC/XDXCaptureAVStreamEncodeMuxProject/XDXCaptureAVStreamEncodeMuxProject/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // XDXCaptureAVStreamEncodeMuxProject 4 | // 5 | // Created by 小东邪 on 2019/7/7. 6 | // Copyright © 2019 小东邪. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XDXCaptureAVStreamEncodeMuxProject 2 | iOS: Capture video and audio data(by AVCaptureSession and audio unit). Encode origin audio / video data. Final compose audio and video data to generate flv stream by ffmpeg. Write the FLV stream into file. 3 | 4 | --- 5 | 6 | #### 代码地址 : [iOS完整推流](https://github.com/XiaoDongXie1024/XDXCaptureAVStreamEncodeMuxProject) 7 | #### 掘金地址 : [iOS完整推流](https://juejin.im/post/5d28aa28f265da1bb9700af8) 8 | #### 简书地址 : [iOS完整推流](https://www.jianshu.com/p/02056f60e181) 9 | #### 博客地址 : [iOS完整推流](https://xiaodongxie1024.github.io/2019/07/12/20190712_ios_mux_asf/) 10 | 11 | --------------------------------------------------------------------------------