├── FFmpegDecoder.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── xcuserdata
│ └── apple.xcuserdatad
│ ├── xcdebugger
│ └── Breakpoints_v2.xcbkptlist
│ └── xcschemes
│ ├── FFmpegDecoder.xcscheme
│ └── xcschememanagement.plist
├── FFmpegDecoder
├── 131.aac
├── 3rdparty
│ └── ffmpeg
│ │ ├── include
│ │ ├── libavcodec
│ │ │ ├── avcodec.h
│ │ │ ├── avfft.h
│ │ │ ├── dxva2.h
│ │ │ ├── old_codec_ids.h
│ │ │ ├── vaapi.h
│ │ │ ├── vda.h
│ │ │ ├── vdpau.h
│ │ │ ├── version.h
│ │ │ └── xvmc.h
│ │ ├── libavfilter
│ │ │ ├── asrc_abuffer.h
│ │ │ ├── avcodec.h
│ │ │ ├── avfilter.h
│ │ │ ├── avfiltergraph.h
│ │ │ ├── buffersink.h
│ │ │ ├── buffersrc.h
│ │ │ └── version.h
│ │ ├── libavformat
│ │ │ ├── avformat.h
│ │ │ ├── avio.h
│ │ │ └── version.h
│ │ ├── libavutil
│ │ │ ├── adler32.h
│ │ │ ├── aes.h
│ │ │ ├── attributes.h
│ │ │ ├── audio_fifo.h
│ │ │ ├── audioconvert.h
│ │ │ ├── avassert.h
│ │ │ ├── avconfig.h
│ │ │ ├── avstring.h
│ │ │ ├── avutil.h
│ │ │ ├── base64.h
│ │ │ ├── blowfish.h
│ │ │ ├── bprint.h
│ │ │ ├── bswap.h
│ │ │ ├── buffer.h
│ │ │ ├── channel_layout.h
│ │ │ ├── common.h
│ │ │ ├── cpu.h
│ │ │ ├── crc.h
│ │ │ ├── dict.h
│ │ │ ├── error.h
│ │ │ ├── eval.h
│ │ │ ├── fifo.h
│ │ │ ├── file.h
│ │ │ ├── frame.h
│ │ │ ├── hmac.h
│ │ │ ├── imgutils.h
│ │ │ ├── intfloat.h
│ │ │ ├── intfloat_readwrite.h
│ │ │ ├── intreadwrite.h
│ │ │ ├── lfg.h
│ │ │ ├── log.h
│ │ │ ├── mathematics.h
│ │ │ ├── md5.h
│ │ │ ├── mem.h
│ │ │ ├── murmur3.h
│ │ │ ├── old_pix_fmts.h
│ │ │ ├── opt.h
│ │ │ ├── parseutils.h
│ │ │ ├── pixdesc.h
│ │ │ ├── pixfmt.h
│ │ │ ├── random_seed.h
│ │ │ ├── rational.h
│ │ │ ├── ripemd.h
│ │ │ ├── samplefmt.h
│ │ │ ├── sha.h
│ │ │ ├── sha512.h
│ │ │ ├── time_x.h
│ │ │ ├── timecode.h
│ │ │ ├── timestamp.h
│ │ │ ├── version.h
│ │ │ └── xtea.h
│ │ ├── libswresample
│ │ │ ├── swresample.h
│ │ │ └── version.h
│ │ └── libswscale
│ │ │ ├── swscale.h
│ │ │ └── version.h
│ │ └── lib
│ │ └── libffmpeg.a
├── AppDelegate.h
├── AppDelegate.m
├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── Base.lproj
│ └── LaunchScreen.storyboard
├── Info.plist
├── ViewController.h
├── ViewController.mm
├── ViewController.xib
├── libffmpeg_decoder
│ ├── accompany_decoder.cpp
│ ├── accompany_decoder.h
│ ├── accompany_decoder_controller.cpp
│ └── accompany_decoder_controller.h
├── main.m
└── utils
│ ├── CommonUtil.h
│ └── CommonUtil.m
├── FFmpegDecoderTests
├── FFmpegDecoderTests.m
└── Info.plist
└── FFmpegDecoderUITests
├── FFmpegDecoderUITests.m
└── Info.plist
/FFmpegDecoder.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/FFmpegDecoder.xcodeproj/xcuserdata/apple.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/FFmpegDecoder.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/FFmpegDecoder.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
43 |
49 |
50 |
51 |
52 |
53 |
59 |
60 |
61 |
62 |
63 |
64 |
74 |
76 |
82 |
83 |
84 |
85 |
86 |
87 |
93 |
95 |
101 |
102 |
103 |
104 |
106 |
107 |
110 |
111 |
112 |
--------------------------------------------------------------------------------
/FFmpegDecoder.xcodeproj/xcuserdata/apple.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | FFmpegDecoder.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 180D0BDE1E4B450900E0E1A2
16 |
17 | primary
18 |
19 |
20 | 180D0BF71E4B450A00E0E1A2
21 |
22 | primary
23 |
24 |
25 | 180D0C021E4B450B00E0E1A2
26 |
27 | primary
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/FFmpegDecoder/131.aac:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhanxiaokai/iOS-FFmpegDecoder/940b2661dcb4ee270fb21911763f0f0ab4e74543/FFmpegDecoder/131.aac
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | * @param nbits size of the input array:
103 | * (1 << nbits) for DCT-II, DCT-III and DST-I
104 | * (1 << nbits) + 1 for DCT-I
105 | *
106 | * @note the first element of the input of DST-I is ignored
107 | */
108 | DCTContext *av_dct_init(int nbits, enum DCTTransformType type);
109 | void av_dct_calc(DCTContext *s, FFTSample *data);
110 | void av_dct_end (DCTContext *s);
111 |
112 | /**
113 | * @}
114 | */
115 |
116 | #endif /* AVCODEC_AVFFT_H */
117 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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_DXVA_H
24 | #define AVCODEC_DXVA_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 < 0x0600
33 | #undef _WIN32_WINNT
34 | #endif
35 |
36 | #if !defined(_WIN32_WINNT)
37 | #define _WIN32_WINNT 0x0600
38 | #endif
39 |
40 | #include
41 | #include
42 | #include
43 |
44 | /**
45 | * @defgroup lavc_codec_hwaccel_dxva2 DXVA2
46 | * @ingroup lavc_codec_hwaccel
47 | *
48 | * @{
49 | */
50 |
51 | #define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards
52 |
53 | /**
54 | * This structure is used to provides the necessary configurations and data
55 | * to the DXVA2 FFmpeg HWAccel implementation.
56 | *
57 | * The application must make it available as AVCodecContext.hwaccel_context.
58 | */
59 | struct dxva_context {
60 | /**
61 | * DXVA2 decoder object
62 | */
63 | IDirectXVideoDecoder *decoder;
64 |
65 | /**
66 | * DXVA2 configuration used to create the decoder
67 | */
68 | const DXVA2_ConfigPictureDecode *cfg;
69 |
70 | /**
71 | * The number of surface in the surface array
72 | */
73 | unsigned surface_count;
74 |
75 | /**
76 | * The array of Direct3D surfaces used to create the decoder
77 | */
78 | LPDIRECT3DSURFACE9 *surface;
79 |
80 | /**
81 | * A bit field configuring the workarounds needed for using the decoder
82 | */
83 | uint64_t workaround;
84 |
85 | /**
86 | * Private to the FFmpeg AVHWAccel implementation
87 | */
88 | unsigned report_id;
89 | };
90 |
91 | /**
92 | * @}
93 | */
94 |
95 | #endif /* AVCODEC_DXVA_H */
96 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 |
35 | /**
36 | * @defgroup lavc_codec_hwaccel_vaapi VA API Decoding
37 | * @ingroup lavc_codec_hwaccel
38 | * @{
39 | */
40 |
41 | /**
42 | * This structure is used to share data between the FFmpeg library and
43 | * the client video application.
44 | * This shall be zero-allocated and available as
45 | * AVCodecContext.hwaccel_context. All user members can be set once
46 | * during initialization or through each AVCodecContext.get_buffer()
47 | * function call. In any case, they must be valid prior to calling
48 | * decoding functions.
49 | */
50 | struct vaapi_context {
51 | /**
52 | * Window system dependent data
53 | *
54 | * - encoding: unused
55 | * - decoding: Set by user
56 | */
57 | void *display;
58 |
59 | /**
60 | * Configuration ID
61 | *
62 | * - encoding: unused
63 | * - decoding: Set by user
64 | */
65 | uint32_t config_id;
66 |
67 | /**
68 | * Context ID (video decode pipeline)
69 | *
70 | * - encoding: unused
71 | * - decoding: Set by user
72 | */
73 | uint32_t context_id;
74 |
75 | /**
76 | * VAPictureParameterBuffer ID
77 | *
78 | * - encoding: unused
79 | * - decoding: Set by libavcodec
80 | */
81 | uint32_t pic_param_buf_id;
82 |
83 | /**
84 | * VAIQMatrixBuffer ID
85 | *
86 | * - encoding: unused
87 | * - decoding: Set by libavcodec
88 | */
89 | uint32_t iq_matrix_buf_id;
90 |
91 | /**
92 | * VABitPlaneBuffer ID (for VC-1 decoding)
93 | *
94 | * - encoding: unused
95 | * - decoding: Set by libavcodec
96 | */
97 | uint32_t bitplane_buf_id;
98 |
99 | /**
100 | * Slice parameter/data buffer IDs
101 | *
102 | * - encoding: unused
103 | * - decoding: Set by libavcodec
104 | */
105 | uint32_t *slice_buf_ids;
106 |
107 | /**
108 | * Number of effective slice buffer IDs to send to the HW
109 | *
110 | * - encoding: unused
111 | * - decoding: Set by libavcodec
112 | */
113 | unsigned int n_slice_buf_ids;
114 |
115 | /**
116 | * Size of pre-allocated slice_buf_ids
117 | *
118 | * - encoding: unused
119 | * - decoding: Set by libavcodec
120 | */
121 | unsigned int slice_buf_ids_alloc;
122 |
123 | /**
124 | * Pointer to VASliceParameterBuffers
125 | *
126 | * - encoding: unused
127 | * - decoding: Set by libavcodec
128 | */
129 | void *slice_params;
130 |
131 | /**
132 | * Size of a VASliceParameterBuffer element
133 | *
134 | * - encoding: unused
135 | * - decoding: Set by libavcodec
136 | */
137 | unsigned int slice_param_size;
138 |
139 | /**
140 | * Size of pre-allocated slice_params
141 | *
142 | * - encoding: unused
143 | * - decoding: Set by libavcodec
144 | */
145 | unsigned int slice_params_alloc;
146 |
147 | /**
148 | * Number of slices currently filled in
149 | *
150 | * - encoding: unused
151 | * - decoding: Set by libavcodec
152 | */
153 | unsigned int slice_count;
154 |
155 | /**
156 | * Pointer to slice data buffer base
157 | * - encoding: unused
158 | * - decoding: Set by libavcodec
159 | */
160 | const uint8_t *slice_data;
161 |
162 | /**
163 | * Current size of slice data
164 | *
165 | * - encoding: unused
166 | * - decoding: Set by libavcodec
167 | */
168 | uint32_t slice_data_size;
169 | };
170 |
171 | /* @} */
172 |
173 | #endif /* AVCODEC_VAAPI_H */
174 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavcodec/vda.h:
--------------------------------------------------------------------------------
1 | /*
2 | * VDA HW acceleration
3 | *
4 | * copyright (c) 2011 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_VDA_H
24 | #define AVCODEC_VDA_H
25 |
26 | /**
27 | * @file
28 | * @ingroup lavc_codec_hwaccel_vda
29 | * Public libavcodec VDA header.
30 | */
31 |
32 | #include
33 |
34 | // emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes
35 | // http://openradar.appspot.com/8026390
36 | #undef __GNUC_STDC_INLINE__
37 |
38 | #define Picture QuickdrawPicture
39 | #include
40 | #undef Picture
41 |
42 | #include "libavcodec/version.h"
43 |
44 | /**
45 | * @defgroup lavc_codec_hwaccel_vda VDA
46 | * @ingroup lavc_codec_hwaccel
47 | *
48 | * @{
49 | */
50 |
51 | /**
52 | * This structure is used to provide the necessary configurations and data
53 | * to the VDA FFmpeg HWAccel implementation.
54 | *
55 | * The application must make it available as AVCodecContext.hwaccel_context.
56 | */
57 | struct vda_context {
58 | /**
59 | * VDA decoder object.
60 | *
61 | * - encoding: unused
62 | * - decoding: Set/Unset by libavcodec.
63 | */
64 | VDADecoder decoder;
65 |
66 | /**
67 | * The Core Video pixel buffer that contains the current image data.
68 | *
69 | * encoding: unused
70 | * decoding: Set by libavcodec. Unset by user.
71 | */
72 | CVPixelBufferRef cv_buffer;
73 |
74 | /**
75 | * Use the hardware decoder in synchronous mode.
76 | *
77 | * encoding: unused
78 | * decoding: Set by user.
79 | */
80 | int use_sync_decoding;
81 |
82 | /**
83 | * The frame width.
84 | *
85 | * - encoding: unused
86 | * - decoding: Set/Unset by user.
87 | */
88 | int width;
89 |
90 | /**
91 | * The frame height.
92 | *
93 | * - encoding: unused
94 | * - decoding: Set/Unset by user.
95 | */
96 | int height;
97 |
98 | /**
99 | * The frame format.
100 | *
101 | * - encoding: unused
102 | * - decoding: Set/Unset by user.
103 | */
104 | int format;
105 |
106 | /**
107 | * The pixel format for output image buffers.
108 | *
109 | * - encoding: unused
110 | * - decoding: Set/Unset by user.
111 | */
112 | OSType cv_pix_fmt_type;
113 |
114 | /**
115 | * The current bitstream buffer.
116 | *
117 | * - encoding: unused
118 | * - decoding: Set/Unset by libavcodec.
119 | */
120 | uint8_t *priv_bitstream;
121 |
122 | /**
123 | * The current size of the bitstream.
124 | *
125 | * - encoding: unused
126 | * - decoding: Set/Unset by libavcodec.
127 | */
128 | int priv_bitstream_size;
129 |
130 | /**
131 | * The reference size used for fast reallocation.
132 | *
133 | * - encoding: unused
134 | * - decoding: Set/Unset by libavcodec.
135 | */
136 | int priv_allocated_size;
137 |
138 | /**
139 | * Use av_buffer to manage buffer.
140 | * When the flag is set, the CVPixelBuffers returned by the decoder will
141 | * be released automatically, so you have to retain them if necessary.
142 | * Not setting this flag may cause memory leak.
143 | *
144 | * encoding: unused
145 | * decoding: Set by user.
146 | */
147 | int use_ref_buffer;
148 | };
149 |
150 | /** Create the video decoder. */
151 | int ff_vda_create_decoder(struct vda_context *vda_ctx,
152 | uint8_t *extradata,
153 | int extradata_size);
154 |
155 | /** Destroy the video decoder. */
156 | int ff_vda_destroy_decoder(struct vda_context *vda_ctx);
157 |
158 | /**
159 | * @}
160 | */
161 |
162 | #endif /* AVCODEC_VDA_H */
163 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavcodec/vdpau.h:
--------------------------------------------------------------------------------
1 | /*
2 | * The Video Decode and Presentation API for UNIX (VDPAU) is used for
3 | * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1.
4 | *
5 | * Copyright (C) 2008 NVIDIA
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_VDPAU_H
25 | #define AVCODEC_VDPAU_H
26 |
27 | /**
28 | * @file
29 | * @ingroup lavc_codec_hwaccel_vdpau
30 | * Public libavcodec VDPAU header.
31 | */
32 |
33 |
34 | /**
35 | * @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer
36 | * @ingroup lavc_codec_hwaccel
37 | *
38 | * VDPAU hardware acceleration has two modules
39 | * - VDPAU decoding
40 | * - VDPAU presentation
41 | *
42 | * The VDPAU decoding module parses all headers using FFmpeg
43 | * parsing mechanisms and uses VDPAU for the actual decoding.
44 | *
45 | * As per the current implementation, the actual decoding
46 | * and rendering (API calls) are done as part of the VDPAU
47 | * presentation (vo_vdpau.c) module.
48 | *
49 | * @{
50 | */
51 |
52 | #include
53 | #include
54 | #include "libavutil/avconfig.h"
55 | #include "libavutil/attributes.h"
56 |
57 | #ifndef FF_API_CAP_VDPAU
58 | #define FF_API_CAP_VDPAU 1
59 | #endif
60 | #ifndef FF_API_BUFS_VDPAU
61 | #define FF_API_BUFS_VDPAU 1
62 | #endif
63 |
64 | #if FF_API_BUFS_VDPAU
65 | union AVVDPAUPictureInfo {
66 | VdpPictureInfoH264 h264;
67 | VdpPictureInfoMPEG1Or2 mpeg;
68 | VdpPictureInfoVC1 vc1;
69 | VdpPictureInfoMPEG4Part2 mpeg4;
70 | };
71 | #endif
72 |
73 | struct AVCodecContext;
74 | struct AVFrame;
75 |
76 | typedef int (*AVVDPAU_Render2)(struct AVCodecContext *, struct AVFrame *,
77 | const VdpPictureInfo *, uint32_t,
78 | const VdpBitstreamBuffer *);
79 |
80 | /**
81 | * This structure is used to share data between the libavcodec library and
82 | * the client video application.
83 | * The user shall allocate the structure via the av_alloc_vdpau_hwaccel
84 | * function and make it available as
85 | * AVCodecContext.hwaccel_context. Members can be set by the user once
86 | * during initialization or through each AVCodecContext.get_buffer()
87 | * function call. In any case, they must be valid prior to calling
88 | * decoding functions.
89 | */
90 | typedef struct AVVDPAUContext {
91 | /**
92 | * VDPAU decoder handle
93 | *
94 | * Set by user.
95 | */
96 | VdpDecoder decoder;
97 |
98 | /**
99 | * VDPAU decoder render callback
100 | *
101 | * Set by the user.
102 | */
103 | VdpDecoderRender *render;
104 |
105 | #if FF_API_BUFS_VDPAU
106 | /**
107 | * VDPAU picture information
108 | *
109 | * Set by libavcodec.
110 | */
111 | attribute_deprecated
112 | union AVVDPAUPictureInfo info;
113 |
114 | /**
115 | * Allocated size of the bitstream_buffers table.
116 | *
117 | * Set by libavcodec.
118 | */
119 | attribute_deprecated
120 | int bitstream_buffers_allocated;
121 |
122 | /**
123 | * Useful bitstream buffers in the bitstream buffers table.
124 | *
125 | * Set by libavcodec.
126 | */
127 | attribute_deprecated
128 | int bitstream_buffers_used;
129 |
130 | /**
131 | * Table of bitstream buffers.
132 | * The user is responsible for freeing this buffer using av_freep().
133 | *
134 | * Set by libavcodec.
135 | */
136 | attribute_deprecated
137 | VdpBitstreamBuffer *bitstream_buffers;
138 | #endif
139 | AVVDPAU_Render2 render2;
140 | } AVVDPAUContext;
141 |
142 | /**
143 | * @brief allocation function for AVVDPAUContext
144 | *
145 | * Allows extending the struct without breaking API/ABI
146 | */
147 | AVVDPAUContext *av_alloc_vdpaucontext(void);
148 |
149 | AVVDPAU_Render2 av_vdpau_hwaccel_get_render2(const AVVDPAUContext *);
150 | void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2);
151 |
152 | #if FF_API_CAP_VDPAU
153 | /** @brief The videoSurface is used for rendering. */
154 | #define FF_VDPAU_STATE_USED_FOR_RENDER 1
155 |
156 | /**
157 | * @brief The videoSurface is needed for reference/prediction.
158 | * The codec manipulates this.
159 | */
160 | #define FF_VDPAU_STATE_USED_FOR_REFERENCE 2
161 |
162 | /**
163 | * @brief This structure is used as a callback between the FFmpeg
164 | * decoder (vd_) and presentation (vo_) module.
165 | * This is used for defining a video frame containing surface,
166 | * picture parameter, bitstream information etc which are passed
167 | * between the FFmpeg decoder and its clients.
168 | */
169 | struct vdpau_render_state {
170 | VdpVideoSurface surface; ///< Used as rendered surface, never changed.
171 |
172 | int state; ///< Holds FF_VDPAU_STATE_* values.
173 |
174 | #if AV_HAVE_INCOMPATIBLE_LIBAV_ABI
175 | /** picture parameter information for all supported codecs */
176 | union AVVDPAUPictureInfo info;
177 | #endif
178 |
179 | /** Describe size/location of the compressed video data.
180 | Set to 0 when freeing bitstream_buffers. */
181 | int bitstream_buffers_allocated;
182 | int bitstream_buffers_used;
183 | /** The user is responsible for freeing this buffer using av_freep(). */
184 | VdpBitstreamBuffer *bitstream_buffers;
185 |
186 | #if !AV_HAVE_INCOMPATIBLE_LIBAV_ABI
187 | /** picture parameter information for all supported codecs */
188 | union AVVDPAUPictureInfo info;
189 | #endif
190 | };
191 | #endif
192 |
193 | /* @}*/
194 |
195 | #endif /* AVCODEC_VDPAU_H */
196 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavcodec/version.h:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * This file is part of FFmpeg.
4 | *
5 | * FFmpeg is free software; you can redistribute it and/or
6 | * modify it under the terms of the GNU Lesser General Public
7 | * License as published by the Free Software Foundation; either
8 | * version 2.1 of the License, or (at your option) any later version.
9 | *
10 | * FFmpeg is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 | * Lesser General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU Lesser General Public
16 | * License along with FFmpeg; if not, write to the Free Software
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 | */
19 |
20 | #ifndef AVCODEC_VERSION_H
21 | #define AVCODEC_VERSION_H
22 |
23 | /**
24 | * @file
25 | * @ingroup libavc
26 | * Libavcodec version macros.
27 | */
28 |
29 | #include "libavutil/avutil.h"
30 |
31 | #define LIBAVCODEC_VERSION_MAJOR 55
32 | #define LIBAVCODEC_VERSION_MINOR 39
33 | #define LIBAVCODEC_VERSION_MICRO 100
34 |
35 | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
36 | LIBAVCODEC_VERSION_MINOR, \
37 | LIBAVCODEC_VERSION_MICRO)
38 | #define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \
39 | LIBAVCODEC_VERSION_MINOR, \
40 | LIBAVCODEC_VERSION_MICRO)
41 | #define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
42 |
43 | #define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
44 |
45 | /**
46 | * FF_API_* defines may be placed below to indicate public API that will be
47 | * dropped at a future version bump. The defines themselves are not part of
48 | * the public API and may change, break or disappear at any time.
49 | */
50 |
51 | #ifndef FF_API_REQUEST_CHANNELS
52 | #define FF_API_REQUEST_CHANNELS (LIBAVCODEC_VERSION_MAJOR < 56)
53 | #endif
54 | #ifndef FF_API_ALLOC_CONTEXT
55 | #define FF_API_ALLOC_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 55)
56 | #endif
57 | #ifndef FF_API_AVCODEC_OPEN
58 | #define FF_API_AVCODEC_OPEN (LIBAVCODEC_VERSION_MAJOR < 55)
59 | #endif
60 | #ifndef FF_API_OLD_DECODE_AUDIO
61 | #define FF_API_OLD_DECODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 56)
62 | #endif
63 | #ifndef FF_API_OLD_TIMECODE
64 | #define FF_API_OLD_TIMECODE (LIBAVCODEC_VERSION_MAJOR < 55)
65 | #endif
66 |
67 | #ifndef FF_API_OLD_ENCODE_AUDIO
68 | #define FF_API_OLD_ENCODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 56)
69 | #endif
70 | #ifndef FF_API_OLD_ENCODE_VIDEO
71 | #define FF_API_OLD_ENCODE_VIDEO (LIBAVCODEC_VERSION_MAJOR < 56)
72 | #endif
73 | #ifndef FF_API_CODEC_ID
74 | #define FF_API_CODEC_ID (LIBAVCODEC_VERSION_MAJOR < 56)
75 | #endif
76 | #ifndef FF_API_AVCODEC_RESAMPLE
77 | #define FF_API_AVCODEC_RESAMPLE (LIBAVCODEC_VERSION_MAJOR < 56)
78 | #endif
79 | #ifndef FF_API_DEINTERLACE
80 | #define FF_API_DEINTERLACE (LIBAVCODEC_VERSION_MAJOR < 56)
81 | #endif
82 | #ifndef FF_API_DESTRUCT_PACKET
83 | #define FF_API_DESTRUCT_PACKET (LIBAVCODEC_VERSION_MAJOR < 56)
84 | #endif
85 | #ifndef FF_API_GET_BUFFER
86 | #define FF_API_GET_BUFFER (LIBAVCODEC_VERSION_MAJOR < 56)
87 | #endif
88 | #ifndef FF_API_MISSING_SAMPLE
89 | #define FF_API_MISSING_SAMPLE (LIBAVCODEC_VERSION_MAJOR < 56)
90 | #endif
91 | #ifndef FF_API_LOWRES
92 | #define FF_API_LOWRES (LIBAVCODEC_VERSION_MAJOR < 56)
93 | #endif
94 | #ifndef FF_API_CAP_VDPAU
95 | #define FF_API_CAP_VDPAU (LIBAVCODEC_VERSION_MAJOR < 56)
96 | #endif
97 | #ifndef FF_API_BUFS_VDPAU
98 | #define FF_API_BUFS_VDPAU (LIBAVCODEC_VERSION_MAJOR < 56)
99 | #endif
100 | #ifndef FF_API_VOXWARE
101 | #define FF_API_VOXWARE (LIBAVCODEC_VERSION_MAJOR < 56)
102 | #endif
103 |
104 | #endif /* AVCODEC_VERSION_H */
105 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavcodec/xvmc.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2003 Ivan Kalvachev
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_XVMC_H
22 | #define AVCODEC_XVMC_H
23 |
24 | /**
25 | * @file
26 | * @ingroup lavc_codec_hwaccel_xvmc
27 | * Public libavcodec XvMC header.
28 | */
29 |
30 | #include
31 |
32 | #include "avcodec.h"
33 |
34 | /**
35 | * @defgroup lavc_codec_hwaccel_xvmc XvMC
36 | * @ingroup lavc_codec_hwaccel
37 | *
38 | * @{
39 | */
40 |
41 | #define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct
42 | the number is 1337 speak for the letters IDCT MCo (motion compensation) */
43 |
44 | struct xvmc_pix_fmt {
45 | /** The field contains the special constant value AV_XVMC_ID.
46 | It is used as a test that the application correctly uses the API,
47 | and that there is no corruption caused by pixel routines.
48 | - application - set during initialization
49 | - libavcodec - unchanged
50 | */
51 | int xvmc_id;
52 |
53 | /** Pointer to the block array allocated by XvMCCreateBlocks().
54 | The array has to be freed by XvMCDestroyBlocks().
55 | Each group of 64 values represents one data block of differential
56 | pixel information (in MoCo mode) or coefficients for IDCT.
57 | - application - set the pointer during initialization
58 | - libavcodec - fills coefficients/pixel data into the array
59 | */
60 | short* data_blocks;
61 |
62 | /** Pointer to the macroblock description array allocated by
63 | XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks().
64 | - application - set the pointer during initialization
65 | - libavcodec - fills description data into the array
66 | */
67 | XvMCMacroBlock* mv_blocks;
68 |
69 | /** Number of macroblock descriptions that can be stored in the mv_blocks
70 | array.
71 | - application - set during initialization
72 | - libavcodec - unchanged
73 | */
74 | int allocated_mv_blocks;
75 |
76 | /** Number of blocks that can be stored at once in the data_blocks array.
77 | - application - set during initialization
78 | - libavcodec - unchanged
79 | */
80 | int allocated_data_blocks;
81 |
82 | /** Indicate that the hardware would interpret data_blocks as IDCT
83 | coefficients and perform IDCT on them.
84 | - application - set during initialization
85 | - libavcodec - unchanged
86 | */
87 | int idct;
88 |
89 | /** In MoCo mode it indicates that intra macroblocks are assumed to be in
90 | unsigned format; same as the XVMC_INTRA_UNSIGNED flag.
91 | - application - set during initialization
92 | - libavcodec - unchanged
93 | */
94 | int unsigned_intra;
95 |
96 | /** Pointer to the surface allocated by XvMCCreateSurface().
97 | It has to be freed by XvMCDestroySurface() on application exit.
98 | It identifies the frame and its state on the video hardware.
99 | - application - set during initialization
100 | - libavcodec - unchanged
101 | */
102 | XvMCSurface* p_surface;
103 |
104 | /** Set by the decoder before calling ff_draw_horiz_band(),
105 | needed by the XvMCRenderSurface function. */
106 | //@{
107 | /** Pointer to the surface used as past reference
108 | - application - unchanged
109 | - libavcodec - set
110 | */
111 | XvMCSurface* p_past_surface;
112 |
113 | /** Pointer to the surface used as future reference
114 | - application - unchanged
115 | - libavcodec - set
116 | */
117 | XvMCSurface* p_future_surface;
118 |
119 | /** top/bottom field or frame
120 | - application - unchanged
121 | - libavcodec - set
122 | */
123 | unsigned int picture_structure;
124 |
125 | /** XVMC_SECOND_FIELD - 1st or 2nd field in the sequence
126 | - application - unchanged
127 | - libavcodec - set
128 | */
129 | unsigned int flags;
130 | //}@
131 |
132 | /** Number of macroblock descriptions in the mv_blocks array
133 | that have already been passed to the hardware.
134 | - application - zeroes it on get_buffer().
135 | A successful ff_draw_horiz_band() may increment it
136 | with filled_mb_block_num or zero both.
137 | - libavcodec - unchanged
138 | */
139 | int start_mv_blocks_num;
140 |
141 | /** Number of new macroblock descriptions in the mv_blocks array (after
142 | start_mv_blocks_num) that are filled by libavcodec and have to be
143 | passed to the hardware.
144 | - application - zeroes it on get_buffer() or after successful
145 | ff_draw_horiz_band().
146 | - libavcodec - increment with one of each stored MB
147 | */
148 | int filled_mv_blocks_num;
149 |
150 | /** Number of the next free data block; one data block consists of
151 | 64 short values in the data_blocks array.
152 | All blocks before this one have already been claimed by placing their
153 | position into the corresponding block description structure field,
154 | that are part of the mv_blocks array.
155 | - application - zeroes it on get_buffer().
156 | A successful ff_draw_horiz_band() may zero it together
157 | with start_mb_blocks_num.
158 | - libavcodec - each decoded macroblock increases it by the number
159 | of coded blocks it contains.
160 | */
161 | int next_free_data_block_num;
162 | };
163 |
164 | /**
165 | * @}
166 | */
167 |
168 | #endif /* AVCODEC_XVMC_H */
169 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavfilter/asrc_abuffer.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 AVFILTER_ASRC_ABUFFER_H
20 | #define AVFILTER_ASRC_ABUFFER_H
21 |
22 | #include "avfilter.h"
23 |
24 | /**
25 | * @file
26 | * memory buffer source for audio
27 | *
28 | * @deprecated use buffersrc.h instead.
29 | */
30 |
31 | /**
32 | * Queue an audio buffer to the audio buffer source.
33 | *
34 | * @param abuffersrc audio source buffer context
35 | * @param data pointers to the samples planes
36 | * @param linesize linesizes of each audio buffer plane
37 | * @param nb_samples number of samples per channel
38 | * @param sample_fmt sample format of the audio data
39 | * @param ch_layout channel layout of the audio data
40 | * @param planar flag to indicate if audio data is planar or packed
41 | * @param pts presentation timestamp of the audio buffer
42 | * @param flags unused
43 | *
44 | * @deprecated use av_buffersrc_add_ref() instead.
45 | */
46 | attribute_deprecated
47 | int av_asrc_buffer_add_samples(AVFilterContext *abuffersrc,
48 | uint8_t *data[8], int linesize[8],
49 | int nb_samples, int sample_rate,
50 | int sample_fmt, int64_t ch_layout, int planar,
51 | int64_t pts, int av_unused flags);
52 |
53 | /**
54 | * Queue an audio buffer to the audio buffer source.
55 | *
56 | * This is similar to av_asrc_buffer_add_samples(), but the samples
57 | * are stored in a buffer with known size.
58 | *
59 | * @param abuffersrc audio source buffer context
60 | * @param buf pointer to the samples data, packed is assumed
61 | * @param size the size in bytes of the buffer, it must contain an
62 | * integer number of samples
63 | * @param sample_fmt sample format of the audio data
64 | * @param ch_layout channel layout of the audio data
65 | * @param pts presentation timestamp of the audio buffer
66 | * @param flags unused
67 | *
68 | * @deprecated use av_buffersrc_add_ref() instead.
69 | */
70 | attribute_deprecated
71 | int av_asrc_buffer_add_buffer(AVFilterContext *abuffersrc,
72 | uint8_t *buf, int buf_size,
73 | int sample_rate,
74 | int sample_fmt, int64_t ch_layout, int planar,
75 | int64_t pts, int av_unused flags);
76 |
77 | /**
78 | * Queue an audio buffer to the audio buffer source.
79 | *
80 | * @param abuffersrc audio source buffer context
81 | * @param samplesref buffer ref to queue
82 | * @param flags unused
83 | *
84 | * @deprecated use av_buffersrc_add_ref() instead.
85 | */
86 | attribute_deprecated
87 | int av_asrc_buffer_add_audio_buffer_ref(AVFilterContext *abuffersrc,
88 | AVFilterBufferRef *samplesref,
89 | int av_unused flags);
90 |
91 | #endif /* AVFILTER_ASRC_ABUFFER_H */
92 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavfilter/avcodec.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 AVFILTER_AVCODEC_H
20 | #define AVFILTER_AVCODEC_H
21 |
22 | /**
23 | * @file
24 | * libavcodec/libavfilter gluing utilities
25 | *
26 | * This should be included in an application ONLY if the installed
27 | * libavfilter has been compiled with libavcodec support, otherwise
28 | * symbols defined below will not be available.
29 | */
30 |
31 | #include "avfilter.h"
32 |
33 | #if FF_API_AVFILTERBUFFER
34 | /**
35 | * Create and return a picref reference from the data and properties
36 | * contained in frame.
37 | *
38 | * @param perms permissions to assign to the new buffer reference
39 | * @deprecated avfilter APIs work natively with AVFrame instead.
40 | */
41 | attribute_deprecated
42 | AVFilterBufferRef *avfilter_get_video_buffer_ref_from_frame(const AVFrame *frame, int perms);
43 |
44 |
45 | /**
46 | * Create and return a picref reference from the data and properties
47 | * contained in frame.
48 | *
49 | * @param perms permissions to assign to the new buffer reference
50 | * @deprecated avfilter APIs work natively with AVFrame instead.
51 | */
52 | attribute_deprecated
53 | AVFilterBufferRef *avfilter_get_audio_buffer_ref_from_frame(const AVFrame *frame,
54 | int perms);
55 |
56 | /**
57 | * Create and return a buffer reference from the data and properties
58 | * contained in frame.
59 | *
60 | * @param perms permissions to assign to the new buffer reference
61 | * @deprecated avfilter APIs work natively with AVFrame instead.
62 | */
63 | attribute_deprecated
64 | AVFilterBufferRef *avfilter_get_buffer_ref_from_frame(enum AVMediaType type,
65 | const AVFrame *frame,
66 | int perms);
67 | #endif
68 |
69 | #if FF_API_FILL_FRAME
70 | /**
71 | * Fill an AVFrame with the information stored in samplesref.
72 | *
73 | * @param frame an already allocated AVFrame
74 | * @param samplesref an audio buffer reference
75 | * @return >= 0 in case of success, a negative AVERROR code in case of
76 | * failure
77 | * @deprecated Use avfilter_copy_buf_props() instead.
78 | */
79 | attribute_deprecated
80 | int avfilter_fill_frame_from_audio_buffer_ref(AVFrame *frame,
81 | const AVFilterBufferRef *samplesref);
82 |
83 | /**
84 | * Fill an AVFrame with the information stored in picref.
85 | *
86 | * @param frame an already allocated AVFrame
87 | * @param picref a video buffer reference
88 | * @return >= 0 in case of success, a negative AVERROR code in case of
89 | * failure
90 | * @deprecated Use avfilter_copy_buf_props() instead.
91 | */
92 | attribute_deprecated
93 | int avfilter_fill_frame_from_video_buffer_ref(AVFrame *frame,
94 | const AVFilterBufferRef *picref);
95 |
96 | /**
97 | * Fill an AVFrame with information stored in ref.
98 | *
99 | * @param frame an already allocated AVFrame
100 | * @param ref a video or audio buffer reference
101 | * @return >= 0 in case of success, a negative AVERROR code in case of
102 | * failure
103 | * @deprecated Use avfilter_copy_buf_props() instead.
104 | */
105 | attribute_deprecated
106 | int avfilter_fill_frame_from_buffer_ref(AVFrame *frame,
107 | const AVFilterBufferRef *ref);
108 | #endif
109 |
110 | #endif /* AVFILTER_AVCODEC_H */
111 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavfilter/avfiltergraph.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Filter graphs
3 | * copyright (c) 2007 Bobby Bingham
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 AVFILTER_AVFILTERGRAPH_H
23 | #define AVFILTER_AVFILTERGRAPH_H
24 |
25 | #include "avfilter.h"
26 | #include "libavutil/log.h"
27 |
28 | #endif /* AVFILTER_AVFILTERGRAPH_H */
29 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavfilter/buffersink.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 AVFILTER_BUFFERSINK_H
20 | #define AVFILTER_BUFFERSINK_H
21 |
22 | /**
23 | * @file
24 | * memory buffer sink API for audio and video
25 | */
26 |
27 | #include "avfilter.h"
28 |
29 | #if FF_API_AVFILTERBUFFER
30 | /**
31 | * Get an audio/video buffer data from buffer_sink and put it in bufref.
32 | *
33 | * This function works with both audio and video buffer sinks.
34 | *
35 | * @param buffer_sink pointer to a buffersink or abuffersink context
36 | * @param flags a combination of AV_BUFFERSINK_FLAG_* flags
37 | * @return >= 0 in case of success, a negative AVERROR code in case of
38 | * failure
39 | */
40 | attribute_deprecated
41 | int av_buffersink_get_buffer_ref(AVFilterContext *buffer_sink,
42 | AVFilterBufferRef **bufref, int flags);
43 |
44 | /**
45 | * Get the number of immediately available frames.
46 | */
47 | attribute_deprecated
48 | int av_buffersink_poll_frame(AVFilterContext *ctx);
49 |
50 | /**
51 | * Get a buffer with filtered data from sink and put it in buf.
52 | *
53 | * @param ctx pointer to a context of a buffersink or abuffersink AVFilter.
54 | * @param buf pointer to the buffer will be written here if buf is non-NULL. buf
55 | * must be freed by the caller using avfilter_unref_buffer().
56 | * Buf may also be NULL to query whether a buffer is ready to be
57 | * output.
58 | *
59 | * @return >= 0 in case of success, a negative AVERROR code in case of
60 | * failure.
61 | */
62 | attribute_deprecated
63 | int av_buffersink_read(AVFilterContext *ctx, AVFilterBufferRef **buf);
64 |
65 | /**
66 | * Same as av_buffersink_read, but with the ability to specify the number of
67 | * samples read. This function is less efficient than av_buffersink_read(),
68 | * because it copies the data around.
69 | *
70 | * @param ctx pointer to a context of the abuffersink AVFilter.
71 | * @param buf pointer to the buffer will be written here if buf is non-NULL. buf
72 | * must be freed by the caller using avfilter_unref_buffer(). buf
73 | * will contain exactly nb_samples audio samples, except at the end
74 | * of stream, when it can contain less than nb_samples.
75 | * Buf may also be NULL to query whether a buffer is ready to be
76 | * output.
77 | *
78 | * @warning do not mix this function with av_buffersink_read(). Use only one or
79 | * the other with a single sink, not both.
80 | */
81 | attribute_deprecated
82 | int av_buffersink_read_samples(AVFilterContext *ctx, AVFilterBufferRef **buf,
83 | int nb_samples);
84 | #endif
85 |
86 | /**
87 | * Get a frame with filtered data from sink and put it in frame.
88 | *
89 | * @param ctx pointer to a buffersink or abuffersink filter context.
90 | * @param frame pointer to an allocated frame that will be filled with data.
91 | * The data must be freed using av_frame_unref() / av_frame_free()
92 | * @param flags a combination of AV_BUFFERSINK_FLAG_* flags
93 | *
94 | * @return >= 0 in for success, a negative AVERROR code for failure.
95 | */
96 | int av_buffersink_get_frame_flags(AVFilterContext *ctx, AVFrame *frame, int flags);
97 |
98 | /**
99 | * Tell av_buffersink_get_buffer_ref() to read video/samples buffer
100 | * reference, but not remove it from the buffer. This is useful if you
101 | * need only to read a video/samples buffer, without to fetch it.
102 | */
103 | #define AV_BUFFERSINK_FLAG_PEEK 1
104 |
105 | /**
106 | * Tell av_buffersink_get_buffer_ref() not to request a frame from its input.
107 | * If a frame is already buffered, it is read (and removed from the buffer),
108 | * but if no frame is present, return AVERROR(EAGAIN).
109 | */
110 | #define AV_BUFFERSINK_FLAG_NO_REQUEST 2
111 |
112 | /**
113 | * Struct to use for initializing a buffersink context.
114 | */
115 | typedef struct {
116 | const enum AVPixelFormat *pixel_fmts; ///< list of allowed pixel formats, terminated by AV_PIX_FMT_NONE
117 | } AVBufferSinkParams;
118 |
119 | /**
120 | * Create an AVBufferSinkParams structure.
121 | *
122 | * Must be freed with av_free().
123 | */
124 | AVBufferSinkParams *av_buffersink_params_alloc(void);
125 |
126 | /**
127 | * Struct to use for initializing an abuffersink context.
128 | */
129 | typedef struct {
130 | const enum AVSampleFormat *sample_fmts; ///< list of allowed sample formats, terminated by AV_SAMPLE_FMT_NONE
131 | const int64_t *channel_layouts; ///< list of allowed channel layouts, terminated by -1
132 | const int *channel_counts; ///< list of allowed channel counts, terminated by -1
133 | int all_channel_counts; ///< if not 0, accept any channel count or layout
134 | int *sample_rates; ///< list of allowed sample rates, terminated by -1
135 | } AVABufferSinkParams;
136 |
137 | /**
138 | * Create an AVABufferSinkParams structure.
139 | *
140 | * Must be freed with av_free().
141 | */
142 | AVABufferSinkParams *av_abuffersink_params_alloc(void);
143 |
144 | /**
145 | * Set the frame size for an audio buffer sink.
146 | *
147 | * All calls to av_buffersink_get_buffer_ref will return a buffer with
148 | * exactly the specified number of samples, or AVERROR(EAGAIN) if there is
149 | * not enough. The last buffer at EOF will be padded with 0.
150 | */
151 | void av_buffersink_set_frame_size(AVFilterContext *ctx, unsigned frame_size);
152 |
153 | /**
154 | * Get the frame rate of the input.
155 | */
156 | AVRational av_buffersink_get_frame_rate(AVFilterContext *ctx);
157 |
158 | /**
159 | * Get a frame with filtered data from sink and put it in frame.
160 | *
161 | * @param ctx pointer to a context of a buffersink or abuffersink AVFilter.
162 | * @param frame pointer to an allocated frame that will be filled with data.
163 | * The data must be freed using av_frame_unref() / av_frame_free()
164 | *
165 | * @return >= 0 in case of success, a negative AVERROR code in case of
166 | * failure.
167 | */
168 | int av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame);
169 |
170 | /**
171 | * Same as av_buffersink_get_frame(), but with the ability to specify the number
172 | * of samples read. This function is less efficient than
173 | * av_buffersink_get_frame(), because it copies the data around.
174 | *
175 | * @param ctx pointer to a context of the abuffersink AVFilter.
176 | * @param frame pointer to an allocated frame that will be filled with data.
177 | * The data must be freed using av_frame_unref() / av_frame_free()
178 | * frame will contain exactly nb_samples audio samples, except at
179 | * the end of stream, when it can contain less than nb_samples.
180 | *
181 | * @warning do not mix this function with av_buffersink_get_frame(). Use only one or
182 | * the other with a single sink, not both.
183 | */
184 | int av_buffersink_get_samples(AVFilterContext *ctx, AVFrame *frame, int nb_samples);
185 |
186 | #endif /* AVFILTER_BUFFERSINK_H */
187 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavfilter/buffersrc.h:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * This file is part of FFmpeg.
4 | *
5 | * FFmpeg is free software; you can redistribute it and/or
6 | * modify it under the terms of the GNU Lesser General Public
7 | * License as published by the Free Software Foundation; either
8 | * version 2.1 of the License, or (at your option) any later version.
9 | *
10 | * FFmpeg is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 | * Lesser General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU Lesser General Public
16 | * License along with FFmpeg; if not, write to the Free Software
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 | */
19 |
20 | #ifndef AVFILTER_BUFFERSRC_H
21 | #define AVFILTER_BUFFERSRC_H
22 |
23 | /**
24 | * @file
25 | * Memory buffer source API.
26 | */
27 |
28 | #include "libavcodec/avcodec.h"
29 | #include "avfilter.h"
30 |
31 | enum {
32 |
33 | /**
34 | * Do not check for format changes.
35 | */
36 | AV_BUFFERSRC_FLAG_NO_CHECK_FORMAT = 1,
37 |
38 | #if FF_API_AVFILTERBUFFER
39 | /**
40 | * Ignored
41 | */
42 | AV_BUFFERSRC_FLAG_NO_COPY = 2,
43 | #endif
44 |
45 | /**
46 | * Immediately push the frame to the output.
47 | */
48 | AV_BUFFERSRC_FLAG_PUSH = 4,
49 |
50 | /**
51 | * Keep a reference to the frame.
52 | * If the frame if reference-counted, create a new reference; otherwise
53 | * copy the frame data.
54 | */
55 | AV_BUFFERSRC_FLAG_KEEP_REF = 8,
56 |
57 | };
58 |
59 | /**
60 | * Add buffer data in picref to buffer_src.
61 | *
62 | * @param buffer_src pointer to a buffer source context
63 | * @param picref a buffer reference, or NULL to mark EOF
64 | * @param flags a combination of AV_BUFFERSRC_FLAG_*
65 | * @return >= 0 in case of success, a negative AVERROR code
66 | * in case of failure
67 | */
68 | int av_buffersrc_add_ref(AVFilterContext *buffer_src,
69 | AVFilterBufferRef *picref, int flags);
70 |
71 | /**
72 | * Get the number of failed requests.
73 | *
74 | * A failed request is when the request_frame method is called while no
75 | * frame is present in the buffer.
76 | * The number is reset when a frame is added.
77 | */
78 | unsigned av_buffersrc_get_nb_failed_requests(AVFilterContext *buffer_src);
79 |
80 | #if FF_API_AVFILTERBUFFER
81 | /**
82 | * Add a buffer to the filtergraph s.
83 | *
84 | * @param buf buffer containing frame data to be passed down the filtergraph.
85 | * This function will take ownership of buf, the user must not free it.
86 | * A NULL buf signals EOF -- i.e. no more frames will be sent to this filter.
87 | *
88 | * @deprecated use av_buffersrc_write_frame() or av_buffersrc_add_frame()
89 | */
90 | attribute_deprecated
91 | int av_buffersrc_buffer(AVFilterContext *s, AVFilterBufferRef *buf);
92 | #endif
93 |
94 | /**
95 | * Add a frame to the buffer source.
96 | *
97 | * @param s an instance of the buffersrc filter.
98 | * @param frame frame to be added. If the frame is reference counted, this
99 | * function will make a new reference to it. Otherwise the frame data will be
100 | * copied.
101 | *
102 | * @return 0 on success, a negative AVERROR on error
103 | *
104 | * This function is equivalent to av_buffersrc_add_frame_flags() with the
105 | * AV_BUFFERSRC_FLAG_KEEP_REF flag.
106 | */
107 | int av_buffersrc_write_frame(AVFilterContext *s, const AVFrame *frame);
108 |
109 | /**
110 | * Add a frame to the buffer source.
111 | *
112 | * @param s an instance of the buffersrc filter.
113 | * @param frame frame to be added. If the frame is reference counted, this
114 | * function will take ownership of the reference(s) and reset the frame.
115 | * Otherwise the frame data will be copied. If this function returns an error,
116 | * the input frame is not touched.
117 | *
118 | * @return 0 on success, a negative AVERROR on error.
119 | *
120 | * @note the difference between this function and av_buffersrc_write_frame() is
121 | * that av_buffersrc_write_frame() creates a new reference to the input frame,
122 | * while this function takes ownership of the reference passed to it.
123 | *
124 | * This function is equivalent to av_buffersrc_add_frame_flags() without the
125 | * AV_BUFFERSRC_FLAG_KEEP_REF flag.
126 | */
127 | int av_buffersrc_add_frame(AVFilterContext *ctx, AVFrame *frame);
128 |
129 | /**
130 | * Add a frame to the buffer source.
131 | *
132 | * By default, if the frame is reference-counted, this function will take
133 | * ownership of the reference(s) and reset the frame. This can be controled
134 | * using the flags.
135 | *
136 | * If this function returns an error, the input frame is not touched.
137 | *
138 | * @param buffer_src pointer to a buffer source context
139 | * @param frame a frame, or NULL to mark EOF
140 | * @param flags a combination of AV_BUFFERSRC_FLAG_*
141 | * @return >= 0 in case of success, a negative AVERROR code
142 | * in case of failure
143 | */
144 | int av_buffersrc_add_frame_flags(AVFilterContext *buffer_src,
145 | AVFrame *frame, int flags);
146 |
147 |
148 | #endif /* AVFILTER_BUFFERSRC_H */
149 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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/avutil.h"
31 |
32 | #define LIBAVFILTER_VERSION_MAJOR 3
33 | #define LIBAVFILTER_VERSION_MINOR 90
34 | #define LIBAVFILTER_VERSION_MICRO 100
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_AVFILTERPAD_PUBLIC
53 | #define FF_API_AVFILTERPAD_PUBLIC (LIBAVFILTER_VERSION_MAJOR < 4)
54 | #endif
55 | #ifndef FF_API_FOO_COUNT
56 | #define FF_API_FOO_COUNT (LIBAVFILTER_VERSION_MAJOR < 4)
57 | #endif
58 | #ifndef FF_API_FILL_FRAME
59 | #define FF_API_FILL_FRAME (LIBAVFILTER_VERSION_MAJOR < 4)
60 | #endif
61 | #ifndef FF_API_BUFFERSRC_BUFFER
62 | #define FF_API_BUFFERSRC_BUFFER (LIBAVFILTER_VERSION_MAJOR < 4)
63 | #endif
64 | #ifndef FF_API_AVFILTERBUFFER
65 | #define FF_API_AVFILTERBUFFER (LIBAVFILTER_VERSION_MAJOR < 4)
66 | #endif
67 | #ifndef FF_API_OLD_FILTER_OPTS
68 | #define FF_API_OLD_FILTER_OPTS (LIBAVFILTER_VERSION_MAJOR < 4)
69 | #endif
70 | #ifndef FF_API_ACONVERT_FILTER
71 | #define FF_API_ACONVERT_FILTER (LIBAVFILTER_VERSION_MAJOR < 4)
72 | #endif
73 | #ifndef FF_API_AVFILTER_OPEN
74 | #define FF_API_AVFILTER_OPEN (LIBAVFILTER_VERSION_MAJOR < 4)
75 | #endif
76 | #ifndef FF_API_AVFILTER_INIT_FILTER
77 | #define FF_API_AVFILTER_INIT_FILTER (LIBAVFILTER_VERSION_MAJOR < 4)
78 | #endif
79 | #ifndef FF_API_OLD_FILTER_REGISTER
80 | #define FF_API_OLD_FILTER_REGISTER (LIBAVFILTER_VERSION_MAJOR < 4)
81 | #endif
82 | #ifndef FF_API_OLD_GRAPH_PARSE
83 | #define FF_API_OLD_GRAPH_PARSE (LIBAVFILTER_VERSION_MAJOR < 4)
84 | #endif
85 | #ifndef FF_API_DRAWTEXT_OLD_TIMELINE
86 | #define FF_API_DRAWTEXT_OLD_TIMELINE (LIBAVFILTER_VERSION_MAJOR < 4)
87 | #endif
88 |
89 | #endif /* AVFILTER_VERSION_H */
90 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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/avutil.h"
31 |
32 | #define LIBAVFORMAT_VERSION_MAJOR 55
33 | #define LIBAVFORMAT_VERSION_MINOR 19
34 | #define LIBAVFORMAT_VERSION_MICRO 104
35 |
36 | #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
37 | LIBAVFORMAT_VERSION_MINOR, \
38 | LIBAVFORMAT_VERSION_MICRO)
39 | #define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \
40 | LIBAVFORMAT_VERSION_MINOR, \
41 | LIBAVFORMAT_VERSION_MICRO)
42 | #define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT
43 |
44 | #define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_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_ALLOC_OUTPUT_CONTEXT
53 | #define FF_API_ALLOC_OUTPUT_CONTEXT (LIBAVFORMAT_VERSION_MAJOR < 56)
54 | #endif
55 | #ifndef FF_API_FORMAT_PARAMETERS
56 | #define FF_API_FORMAT_PARAMETERS (LIBAVFORMAT_VERSION_MAJOR < 56)
57 | #endif
58 | #ifndef FF_API_NEW_STREAM
59 | #define FF_API_NEW_STREAM (LIBAVFORMAT_VERSION_MAJOR < 56)
60 | #endif
61 | #ifndef FF_API_SET_PTS_INFO
62 | #define FF_API_SET_PTS_INFO (LIBAVFORMAT_VERSION_MAJOR < 56)
63 | #endif
64 | #ifndef FF_API_CLOSE_INPUT_FILE
65 | #define FF_API_CLOSE_INPUT_FILE (LIBAVFORMAT_VERSION_MAJOR < 56)
66 | #endif
67 | #ifndef FF_API_READ_PACKET
68 | #define FF_API_READ_PACKET (LIBAVFORMAT_VERSION_MAJOR < 56)
69 | #endif
70 | #ifndef FF_API_ASS_SSA
71 | #define FF_API_ASS_SSA (LIBAVFORMAT_VERSION_MAJOR < 56)
72 | #endif
73 | #ifndef FF_API_R_FRAME_RATE
74 | #define FF_API_R_FRAME_RATE 1
75 | #endif
76 | #endif /* AVFORMAT_VERSION_H */
77 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | #ifndef AVUTIL_ADLER32_H
22 | #define AVUTIL_ADLER32_H
23 |
24 | #include
25 | #include "attributes.h"
26 |
27 | /**
28 | * @defgroup lavu_adler32 Adler32
29 | * @ingroup lavu_crypto
30 | * @{
31 | */
32 |
33 | /**
34 | * Calculate the Adler32 checksum of a buffer.
35 | *
36 | * Passing the return value to a subsequent av_adler32_update() call
37 | * allows the checksum of multiple buffers to be calculated as though
38 | * they were concatenated.
39 | *
40 | * @param adler initial checksum value
41 | * @param buf pointer to input buffer
42 | * @param len size of input buffer
43 | * @return updated checksum
44 | */
45 | unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf,
46 | unsigned int len) av_pure;
47 |
48 | /**
49 | * @}
50 | */
51 |
52 | #endif /* AVUTIL_ADLER32_H */
53 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/attributes.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 | * Macro definitions for various function/variable attributes
24 | */
25 |
26 | #ifndef AVUTIL_ATTRIBUTES_H
27 | #define AVUTIL_ATTRIBUTES_H
28 |
29 | #ifdef __GNUC__
30 | # define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y)
31 | #else
32 | # define AV_GCC_VERSION_AT_LEAST(x,y) 0
33 | #endif
34 |
35 | #ifndef av_always_inline
36 | #if AV_GCC_VERSION_AT_LEAST(3,1)
37 | # define av_always_inline __attribute__((always_inline)) inline
38 | #elif defined(_MSC_VER)
39 | # define av_always_inline __forceinline
40 | #else
41 | # define av_always_inline inline
42 | #endif
43 | #endif
44 |
45 | #ifndef av_extern_inline
46 | #if defined(__ICL) && __ICL >= 1210 || defined(__GNUC_STDC_INLINE__)
47 | # define av_extern_inline extern inline
48 | #else
49 | # define av_extern_inline inline
50 | #endif
51 | #endif
52 |
53 | #if AV_GCC_VERSION_AT_LEAST(3,1)
54 | # define av_noinline __attribute__((noinline))
55 | #elif defined(_MSC_VER)
56 | # define av_noinline __declspec(noinline)
57 | #else
58 | # define av_noinline
59 | #endif
60 |
61 | #if AV_GCC_VERSION_AT_LEAST(3,1)
62 | # define av_pure __attribute__((pure))
63 | #else
64 | # define av_pure
65 | #endif
66 |
67 | #if AV_GCC_VERSION_AT_LEAST(2,6)
68 | # define av_const __attribute__((const))
69 | #else
70 | # define av_const
71 | #endif
72 |
73 | #if AV_GCC_VERSION_AT_LEAST(4,3)
74 | # define av_cold __attribute__((cold))
75 | #else
76 | # define av_cold
77 | #endif
78 |
79 | #if AV_GCC_VERSION_AT_LEAST(4,1)
80 | # define av_flatten __attribute__((flatten))
81 | #else
82 | # define av_flatten
83 | #endif
84 |
85 | #if AV_GCC_VERSION_AT_LEAST(3,1)
86 | # define attribute_deprecated __attribute__((deprecated))
87 | #elif defined(_MSC_VER)
88 | # define attribute_deprecated __declspec(deprecated)
89 | #else
90 | # define attribute_deprecated
91 | #endif
92 |
93 | /**
94 | * Disable warnings about deprecated features
95 | * This is useful for sections of code kept for backward compatibility and
96 | * scheduled for removal.
97 | */
98 | #ifndef AV_NOWARN_DEPRECATED
99 | #if AV_GCC_VERSION_AT_LEAST(4,6)
100 | # define AV_NOWARN_DEPRECATED(code) \
101 | _Pragma("GCC diagnostic push") \
102 | _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
103 | code \
104 | _Pragma("GCC diagnostic pop")
105 | #elif defined(_MSC_VER)
106 | # define AV_NOWARN_DEPRECATED(code) \
107 | __pragma(warning(push)) \
108 | __pragma(warning(disable : 4996)) \
109 | code; \
110 | __pragma(warning(pop))
111 | #else
112 | # define AV_NOWARN_DEPRECATED(code) code
113 | #endif
114 | #endif
115 |
116 |
117 | #if defined(__GNUC__)
118 | # define av_unused __attribute__((unused))
119 | #else
120 | # define av_unused
121 | #endif
122 |
123 | /**
124 | * Mark a variable as used and prevent the compiler from optimizing it
125 | * away. This is useful for variables accessed only from inline
126 | * assembler without the compiler being aware.
127 | */
128 | #if AV_GCC_VERSION_AT_LEAST(3,1)
129 | # define av_used __attribute__((used))
130 | #else
131 | # define av_used
132 | #endif
133 |
134 | #if AV_GCC_VERSION_AT_LEAST(3,3)
135 | # define av_alias __attribute__((may_alias))
136 | #else
137 | # define av_alias
138 | #endif
139 |
140 | #if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(__clang__)
141 | # define av_uninit(x) x=x
142 | #else
143 | # define av_uninit(x) x
144 | #endif
145 |
146 | #ifdef __GNUC__
147 | # define av_builtin_constant_p __builtin_constant_p
148 | # define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos)))
149 | #else
150 | # define av_builtin_constant_p(x) 0
151 | # define av_printf_format(fmtpos, attrpos)
152 | #endif
153 |
154 | #if AV_GCC_VERSION_AT_LEAST(2,5)
155 | # define av_noreturn __attribute__((noreturn))
156 | #else
157 | # define av_noreturn
158 | #endif
159 |
160 | #endif /* AVUTIL_ATTRIBUTES_H */
161 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/audio_fifo.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Audio FIFO
3 | * Copyright (c) 2012 Justin Ruggles
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 | * Audio FIFO Buffer
25 | */
26 |
27 | #ifndef AVUTIL_AUDIO_FIFO_H
28 | #define AVUTIL_AUDIO_FIFO_H
29 |
30 | #include "avutil.h"
31 | #include "fifo.h"
32 | #include "samplefmt.h"
33 |
34 | /**
35 | * @addtogroup lavu_audio
36 | * @{
37 | */
38 |
39 | /**
40 | * Context for an Audio FIFO Buffer.
41 | *
42 | * - Operates at the sample level rather than the byte level.
43 | * - Supports multiple channels with either planar or packed sample format.
44 | * - Automatic reallocation when writing to a full buffer.
45 | */
46 | typedef struct AVAudioFifo AVAudioFifo;
47 |
48 | /**
49 | * Free an AVAudioFifo.
50 | *
51 | * @param af AVAudioFifo to free
52 | */
53 | void av_audio_fifo_free(AVAudioFifo *af);
54 |
55 | /**
56 | * Allocate an AVAudioFifo.
57 | *
58 | * @param sample_fmt sample format
59 | * @param channels number of channels
60 | * @param nb_samples initial allocation size, in samples
61 | * @return newly allocated AVAudioFifo, or NULL on error
62 | */
63 | AVAudioFifo *av_audio_fifo_alloc(enum AVSampleFormat sample_fmt, int channels,
64 | int nb_samples);
65 |
66 | /**
67 | * Reallocate an AVAudioFifo.
68 | *
69 | * @param af AVAudioFifo to reallocate
70 | * @param nb_samples new allocation size, in samples
71 | * @return 0 if OK, or negative AVERROR code on failure
72 | */
73 | int av_audio_fifo_realloc(AVAudioFifo *af, int nb_samples);
74 |
75 | /**
76 | * Write data to an AVAudioFifo.
77 | *
78 | * The AVAudioFifo will be reallocated automatically if the available space
79 | * is less than nb_samples.
80 | *
81 | * @see enum AVSampleFormat
82 | * The documentation for AVSampleFormat describes the data layout.
83 | *
84 | * @param af AVAudioFifo to write to
85 | * @param data audio data plane pointers
86 | * @param nb_samples number of samples to write
87 | * @return number of samples actually written, or negative AVERROR
88 | * code on failure. If successful, the number of samples
89 | * actually written will always be nb_samples.
90 | */
91 | int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples);
92 |
93 | /**
94 | * Read data from an AVAudioFifo.
95 | *
96 | * @see enum AVSampleFormat
97 | * The documentation for AVSampleFormat describes the data layout.
98 | *
99 | * @param af AVAudioFifo to read from
100 | * @param data audio data plane pointers
101 | * @param nb_samples number of samples to read
102 | * @return number of samples actually read, or negative AVERROR code
103 | * on failure. The number of samples actually read will not
104 | * be greater than nb_samples, and will only be less than
105 | * nb_samples if av_audio_fifo_size is less than nb_samples.
106 | */
107 | int av_audio_fifo_read(AVAudioFifo *af, void **data, int nb_samples);
108 |
109 | /**
110 | * Drain data from an AVAudioFifo.
111 | *
112 | * Removes the data without reading it.
113 | *
114 | * @param af AVAudioFifo to drain
115 | * @param nb_samples number of samples to drain
116 | * @return 0 if OK, or negative AVERROR code on failure
117 | */
118 | int av_audio_fifo_drain(AVAudioFifo *af, int nb_samples);
119 |
120 | /**
121 | * Reset the AVAudioFifo buffer.
122 | *
123 | * This empties all data in the buffer.
124 | *
125 | * @param af AVAudioFifo to reset
126 | */
127 | void av_audio_fifo_reset(AVAudioFifo *af);
128 |
129 | /**
130 | * Get the current number of samples in the AVAudioFifo available for reading.
131 | *
132 | * @param af the AVAudioFifo to query
133 | * @return number of samples available for reading
134 | */
135 | int av_audio_fifo_size(AVAudioFifo *af);
136 |
137 | /**
138 | * Get the current number of samples in the AVAudioFifo available for writing.
139 | *
140 | * @param af the AVAudioFifo to query
141 | * @return number of samples available for writing
142 | */
143 | int av_audio_fifo_space(AVAudioFifo *af);
144 |
145 | /**
146 | * @}
147 | */
148 |
149 | #endif /* AVUTIL_AUDIO_FIFO_H */
150 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/audioconvert.h:
--------------------------------------------------------------------------------
1 |
2 | #include "version.h"
3 |
4 | #if FF_API_AUDIOCONVERT
5 | #include "channel_layout.h"
6 | #endif
7 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 speedloss.
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 | #else
63 | #define av_assert2(cond) ((void)0)
64 | #endif
65 |
66 | #endif /* AVUTIL_AVASSERT_H */
67 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/avconfig.h:
--------------------------------------------------------------------------------
1 | /* Generated by ffconf */
2 | #ifndef AVUTIL_AVCONFIG_H
3 | #define AVUTIL_AVCONFIG_H
4 | #define AV_HAVE_BIGENDIAN 0
5 | #define AV_HAVE_FAST_UNALIGNED 0
6 | #define AV_HAVE_INCOMPATIBLE_LIBAV_ABI 0
7 | #define AV_HAVE_INCOMPATIBLE_FORK_ABI 0
8 | #endif /* AVUTIL_AVCONFIG_H */
9 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | /**
34 | * Decode a base64-encoded string.
35 | *
36 | * @param out buffer for decoded data
37 | * @param in null-terminated input string
38 | * @param out_size size in bytes of the out buffer, must be at
39 | * least 3/4 of the length of in
40 | * @return number of bytes written, or a negative value in case of
41 | * invalid input
42 | */
43 | int av_base64_decode(uint8_t *out, const char *in, int out_size);
44 |
45 | /**
46 | * Encode data to base64 and null-terminate.
47 | *
48 | * @param out buffer for encoded data
49 | * @param out_size size in bytes of the out buffer (including the
50 | * null terminator), must be at least AV_BASE64_SIZE(in_size)
51 | * @param in input buffer containing the data to encode
52 | * @param in_size size in bytes of the in buffer
53 | * @return out or NULL in case of error
54 | */
55 | char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size);
56 |
57 | /**
58 | * Calculate the output size needed to base64-encode x bytes to a
59 | * null-terminated string.
60 | */
61 | #define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1)
62 |
63 | /**
64 | * @}
65 | */
66 |
67 | #endif /* AVUTIL_BASE64_H */
68 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | * Initialize an AVBlowfish context.
42 | *
43 | * @param ctx an AVBlowfish context
44 | * @param key a key
45 | * @param key_len length of the key
46 | */
47 | void av_blowfish_init(struct AVBlowfish *ctx, const uint8_t *key, int key_len);
48 |
49 | /**
50 | * Encrypt or decrypt a buffer using a previously initialized context.
51 | *
52 | * @param ctx an AVBlowfish context
53 | * @param xl left four bytes halves of input to be encrypted
54 | * @param xr right four bytes halves of input to be encrypted
55 | * @param decrypt 0 for encryption, 1 for decryption
56 | */
57 | void av_blowfish_crypt_ecb(struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr,
58 | int decrypt);
59 |
60 | /**
61 | * Encrypt or decrypt a buffer using a previously initialized context.
62 | *
63 | * @param ctx an AVBlowfish context
64 | * @param dst destination array, can be equal to src
65 | * @param src source array, can be equal to dst
66 | * @param count number of 8 byte blocks
67 | * @param iv initialization vector for CBC mode, if NULL ECB will be used
68 | * @param decrypt 0 for encryption, 1 for decryption
69 | */
70 | void av_blowfish_crypt(struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src,
71 | int count, uint8_t *iv, int decrypt);
72 |
73 | /**
74 | * @}
75 | */
76 |
77 | #endif /* AVUTIL_BLOWFISH_H */
78 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/bprint.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2012 Nicolas George
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_BPRINT_H
22 | #define AVUTIL_BPRINT_H
23 |
24 | #include
25 |
26 | #include "attributes.h"
27 | #include "avstring.h"
28 |
29 | /**
30 | * Define a structure with extra padding to a fixed size
31 | * This helps ensuring binary compatibility with future versions.
32 | */
33 | #define FF_PAD_STRUCTURE(size, ...) \
34 | __VA_ARGS__ \
35 | char reserved_padding[size - sizeof(struct { __VA_ARGS__ })];
36 |
37 | /**
38 | * Buffer to print data progressively
39 | *
40 | * The string buffer grows as necessary and is always 0-terminated.
41 | * The content of the string is never accessed, and thus is
42 | * encoding-agnostic and can even hold binary data.
43 | *
44 | * Small buffers are kept in the structure itself, and thus require no
45 | * memory allocation at all (unless the contents of the buffer is needed
46 | * after the structure goes out of scope). This is almost as lightweight as
47 | * declaring a local "char buf[512]".
48 | *
49 | * The length of the string can go beyond the allocated size: the buffer is
50 | * then truncated, but the functions still keep account of the actual total
51 | * length.
52 | *
53 | * In other words, buf->len can be greater than buf->size and records the
54 | * total length of what would have been to the buffer if there had been
55 | * enough memory.
56 | *
57 | * Append operations do not need to be tested for failure: if a memory
58 | * allocation fails, data stop being appended to the buffer, but the length
59 | * is still updated. This situation can be tested with
60 | * av_bprint_is_complete().
61 | *
62 | * The size_max field determines several possible behaviours:
63 | *
64 | * size_max = -1 (= UINT_MAX) or any large value will let the buffer be
65 | * reallocated as necessary, with an amortized linear cost.
66 | *
67 | * size_max = 0 prevents writing anything to the buffer: only the total
68 | * length is computed. The write operations can then possibly be repeated in
69 | * a buffer with exactly the necessary size
70 | * (using size_init = size_max = len + 1).
71 | *
72 | * size_max = 1 is automatically replaced by the exact size available in the
73 | * structure itself, thus ensuring no dynamic memory allocation. The
74 | * internal buffer is large enough to hold a reasonable paragraph of text,
75 | * such as the current paragraph.
76 | */
77 | typedef struct AVBPrint {
78 | FF_PAD_STRUCTURE(1024,
79 | char *str; /**< string so far */
80 | unsigned len; /**< length so far */
81 | unsigned size; /**< allocated memory */
82 | unsigned size_max; /**< maximum allocated memory */
83 | char reserved_internal_buffer[1];
84 | )
85 | } AVBPrint;
86 |
87 | /**
88 | * Convenience macros for special values for av_bprint_init() size_max
89 | * parameter.
90 | */
91 | #define AV_BPRINT_SIZE_UNLIMITED ((unsigned)-1)
92 | #define AV_BPRINT_SIZE_AUTOMATIC 1
93 | #define AV_BPRINT_SIZE_COUNT_ONLY 0
94 |
95 | /**
96 | * Init a print buffer.
97 | *
98 | * @param buf buffer to init
99 | * @param size_init initial size (including the final 0)
100 | * @param size_max maximum size;
101 | * 0 means do not write anything, just count the length;
102 | * 1 is replaced by the maximum value for automatic storage;
103 | * any large value means that the internal buffer will be
104 | * reallocated as needed up to that limit; -1 is converted to
105 | * UINT_MAX, the largest limit possible.
106 | * Check also AV_BPRINT_SIZE_* macros.
107 | */
108 | void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max);
109 |
110 | /**
111 | * Init a print buffer using a pre-existing buffer.
112 | *
113 | * The buffer will not be reallocated.
114 | *
115 | * @param buf buffer structure to init
116 | * @param buffer byte buffer to use for the string data
117 | * @param size size of buffer
118 | */
119 | void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size);
120 |
121 | /**
122 | * Append a formatted string to a print buffer.
123 | */
124 | void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_printf_format(2, 3);
125 |
126 | /**
127 | * Append a formatted string to a print buffer.
128 | */
129 | void av_vbprintf(AVBPrint *buf, const char *fmt, va_list vl_arg);
130 |
131 | /**
132 | * Append char c n times to a print buffer.
133 | */
134 | void av_bprint_chars(AVBPrint *buf, char c, unsigned n);
135 |
136 | /**
137 | * Append data to a print buffer.
138 | *
139 | * param buf bprint buffer to use
140 | * param data pointer to data
141 | * param size size of data
142 | */
143 | void av_bprint_append_data(AVBPrint *buf, const char *data, unsigned size);
144 |
145 | struct tm;
146 | /**
147 | * Append a formatted date and time to a print buffer.
148 | *
149 | * param buf bprint buffer to use
150 | * param fmt date and time format string, see strftime()
151 | * param tm broken-down time structure to translate
152 | *
153 | * @note due to poor design of the standard strftime function, it may
154 | * produce poor results if the format string expands to a very long text and
155 | * the bprint buffer is near the limit stated by the size_max option.
156 | */
157 | void av_bprint_strftime(AVBPrint *buf, const char *fmt, const struct tm *tm);
158 |
159 | /**
160 | * Allocate bytes in the buffer for external use.
161 | *
162 | * @param[in] buf buffer structure
163 | * @param[in] size required size
164 | * @param[out] mem pointer to the memory area
165 | * @param[out] actual_size size of the memory area after allocation;
166 | * can be larger or smaller than size
167 | */
168 | void av_bprint_get_buffer(AVBPrint *buf, unsigned size,
169 | unsigned char **mem, unsigned *actual_size);
170 |
171 | /**
172 | * Reset the string to "" but keep internal allocated data.
173 | */
174 | void av_bprint_clear(AVBPrint *buf);
175 |
176 | /**
177 | * Test if the print buffer is complete (not truncated).
178 | *
179 | * It may have been truncated due to a memory allocation failure
180 | * or the size_max limit (compare size and size_max if necessary).
181 | */
182 | static inline int av_bprint_is_complete(AVBPrint *buf)
183 | {
184 | return buf->len < buf->size;
185 | }
186 |
187 | /**
188 | * Finalize a print buffer.
189 | *
190 | * The print buffer can no longer be used afterwards,
191 | * but the len and size fields are still valid.
192 | *
193 | * @arg[out] ret_str if not NULL, used to return a permanent copy of the
194 | * buffer contents, or NULL if memory allocation fails;
195 | * if NULL, the buffer is discarded and freed
196 | * @return 0 for success or error code (probably AVERROR(ENOMEM))
197 | */
198 | int av_bprint_finalize(AVBPrint *buf, char **ret_str);
199 |
200 | /**
201 | * Escape the content in src and append it to dstbuf.
202 | *
203 | * @param dstbuf already inited destination bprint buffer
204 | * @param src string containing the text to escape
205 | * @param special_chars string containing the special characters which
206 | * need to be escaped, can be NULL
207 | * @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros.
208 | * Any unknown value for mode will be considered equivalent to
209 | * AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without
210 | * notice.
211 | * @param flags flags which control how to escape, see AV_ESCAPE_FLAG_* macros
212 | */
213 | void av_bprint_escape(AVBPrint *dstbuf, const char *src, const char *special_chars,
214 | enum AVEscapeMode mode, int flags);
215 |
216 | #endif /* AVUTIL_BPRINT_H */
217 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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_ARM
38 | # include "arm/bswap.h"
39 | #elif ARCH_AVR32
40 | # include "avr32/bswap.h"
41 | #elif ARCH_BFIN
42 | # include "bfin/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 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/cpu.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2000, 2001, 2002 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_CPU_H
22 | #define AVUTIL_CPU_H
23 |
24 | #include "attributes.h"
25 |
26 | #define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */
27 |
28 | /* lower 16 bits - CPU features */
29 | #define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX
30 | #define AV_CPU_FLAG_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext
31 | #define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext
32 | #define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW
33 | #define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions
34 | #define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions
35 | #define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster
36 | ///< than regular MMX/SSE (e.g. Core1)
37 | #define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt
38 | #define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions
39 | #define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster
40 | ///< than regular MMX/SSE (e.g. Core1)
41 | #define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions
42 | #define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower
43 | #define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions
44 | #define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions
45 | #define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used
46 | #define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions
47 | #define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions
48 | // #if LIBAVUTIL_VERSION_MAJOR <52
49 | #define AV_CPU_FLAG_CMOV 0x1001000 ///< supports cmov instruction
50 | // #else
51 | // #define AV_CPU_FLAG_CMOV 0x1000 ///< supports cmov instruction
52 | // #endif
53 | #define AV_CPU_FLAG_AVX2 0x8000 ///< AVX2 functions: requires OS support even if YMM registers aren't used
54 |
55 | #define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard
56 |
57 | #define AV_CPU_FLAG_ARMV5TE (1 << 0)
58 | #define AV_CPU_FLAG_ARMV6 (1 << 1)
59 | #define AV_CPU_FLAG_ARMV6T2 (1 << 2)
60 | #define AV_CPU_FLAG_VFP (1 << 3)
61 | #define AV_CPU_FLAG_VFPV3 (1 << 4)
62 | #define AV_CPU_FLAG_NEON (1 << 5)
63 |
64 | /**
65 | * Return the flags which specify extensions supported by the CPU.
66 | * The returned value is affected by av_force_cpu_flags() if that was used
67 | * before. So av_get_cpu_flags() can easily be used in a application to
68 | * detect the enabled cpu flags.
69 | */
70 | int av_get_cpu_flags(void);
71 |
72 | /**
73 | * Disables cpu detection and forces the specified flags.
74 | * -1 is a special case that disables forcing of specific flags.
75 | */
76 | void av_force_cpu_flags(int flags);
77 |
78 | /**
79 | * Set a mask on flags returned by av_get_cpu_flags().
80 | * This function is mainly useful for testing.
81 | * Please use av_force_cpu_flags() and av_get_cpu_flags() instead which are more flexible
82 | *
83 | * @warning this function is not thread safe.
84 | */
85 | attribute_deprecated void av_set_cpu_flags_mask(int mask);
86 |
87 | /**
88 | * Parse CPU flags from a string.
89 | *
90 | * The returned flags contain the specified flags as well as related unspecified flags.
91 | *
92 | * This function exists only for compatibility with libav.
93 | * Please use av_parse_cpu_caps() when possible.
94 | * @return a combination of AV_CPU_* flags, negative on error.
95 | */
96 | attribute_deprecated
97 | int av_parse_cpu_flags(const char *s);
98 |
99 | /**
100 | * Parse CPU caps from a string and update the given AV_CPU_* flags based on that.
101 | *
102 | * @return negative on error.
103 | */
104 | int av_parse_cpu_caps(unsigned *flags, const char *s);
105 |
106 | /**
107 | * @return the number of logical CPU cores present.
108 | */
109 | int av_cpu_count(void);
110 |
111 | #endif /* AVUTIL_CPU_H */
112 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | #ifndef AVUTIL_CRC_H
22 | #define AVUTIL_CRC_H
23 |
24 | #include
25 | #include
26 | #include "attributes.h"
27 |
28 | /**
29 | * @defgroup lavu_crc32 CRC32
30 | * @ingroup lavu_crypto
31 | * @{
32 | */
33 |
34 | typedef uint32_t AVCRC;
35 |
36 | typedef enum {
37 | AV_CRC_8_ATM,
38 | AV_CRC_16_ANSI,
39 | AV_CRC_16_CCITT,
40 | AV_CRC_32_IEEE,
41 | AV_CRC_32_IEEE_LE, /*< reversed bitorder version of AV_CRC_32_IEEE */
42 | AV_CRC_24_IEEE = 12,
43 | AV_CRC_MAX, /*< Not part of public API! Do not use outside libavutil. */
44 | }AVCRCId;
45 |
46 | /**
47 | * Initialize a CRC table.
48 | * @param ctx must be an array of size sizeof(AVCRC)*257 or sizeof(AVCRC)*1024
49 | * @param le If 1, the lowest bit represents the coefficient for the highest
50 | * exponent of the corresponding polynomial (both for poly and
51 | * actual CRC).
52 | * If 0, you must swap the CRC parameter and the result of av_crc
53 | * if you need the standard representation (can be simplified in
54 | * most cases to e.g. bswap16):
55 | * av_bswap32(crc << (32-bits))
56 | * @param bits number of bits for the CRC
57 | * @param poly generator polynomial without the x**bits coefficient, in the
58 | * representation as specified by le
59 | * @param ctx_size size of ctx in bytes
60 | * @return <0 on failure
61 | */
62 | int av_crc_init(AVCRC *ctx, int le, int bits, uint32_t poly, int ctx_size);
63 |
64 | /**
65 | * Get an initialized standard CRC table.
66 | * @param crc_id ID of a standard CRC
67 | * @return a pointer to the CRC table or NULL on failure
68 | */
69 | const AVCRC *av_crc_get_table(AVCRCId crc_id);
70 |
71 | /**
72 | * Calculate the CRC of a block.
73 | * @param crc CRC of previous blocks if any or initial value for CRC
74 | * @return CRC updated with the data from the given block
75 | *
76 | * @see av_crc_init() "le" parameter
77 | */
78 | uint32_t av_crc(const AVCRC *ctx, uint32_t crc,
79 | const uint8_t *buffer, size_t length) av_pure;
80 |
81 | /**
82 | * @}
83 | */
84 |
85 | #endif /* AVUTIL_CRC_H */
86 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/dict.h:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * This file is part of FFmpeg.
4 | *
5 | * FFmpeg is free software; you can redistribute it and/or
6 | * modify it under the terms of the GNU Lesser General Public
7 | * License as published by the Free Software Foundation; either
8 | * version 2.1 of the License, or (at your option) any later version.
9 | *
10 | * FFmpeg is distributed in the hope that it will be useful,
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 | * Lesser General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU Lesser General Public
16 | * License along with FFmpeg; if not, write to the Free Software
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 | */
19 |
20 | /**
21 | * @file
22 | * Public dictionary API.
23 | * @deprecated
24 | * AVDictionary is provided for compatibility with libav. It is both in
25 | * implementation as well as API inefficient. It does not scale and is
26 | * extremely slow with large dictionaries.
27 | * It is recommended that new code uses our tree container from tree.c/h
28 | * where applicable, which uses AVL trees to achieve O(log n) performance.
29 | */
30 |
31 | #ifndef AVUTIL_DICT_H
32 | #define AVUTIL_DICT_H
33 |
34 | /**
35 | * @addtogroup lavu_dict AVDictionary
36 | * @ingroup lavu_data
37 | *
38 | * @brief Simple key:value store
39 | *
40 | * @{
41 | * Dictionaries are used for storing key:value pairs. To create
42 | * an AVDictionary, simply pass an address of a NULL pointer to
43 | * av_dict_set(). NULL can be used as an empty dictionary wherever
44 | * a pointer to an AVDictionary is required.
45 | * Use av_dict_get() to retrieve an entry or iterate over all
46 | * entries and finally av_dict_free() to free the dictionary
47 | * and all its contents.
48 | *
49 | * @code
50 | * AVDictionary *d = NULL; // "create" an empty dictionary
51 | * av_dict_set(&d, "foo", "bar", 0); // add an entry
52 | *
53 | * char *k = av_strdup("key"); // if your strings are already allocated,
54 | * char *v = av_strdup("value"); // you can avoid copying them like this
55 | * av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL);
56 | *
57 | * AVDictionaryEntry *t = NULL;
58 | * while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) {
59 | * <....> // iterate over all entries in d
60 | * }
61 | *
62 | * av_dict_free(&d);
63 | * @endcode
64 | *
65 | */
66 |
67 | #define AV_DICT_MATCH_CASE 1
68 | #define AV_DICT_IGNORE_SUFFIX 2
69 | #define AV_DICT_DONT_STRDUP_KEY 4 /**< Take ownership of a key that's been
70 | allocated with av_malloc() and children. */
71 | #define AV_DICT_DONT_STRDUP_VAL 8 /**< Take ownership of a value that's been
72 | allocated with av_malloc() and chilren. */
73 | #define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries.
74 | #define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no
75 | delimiter is added, the strings are simply concatenated. */
76 |
77 | typedef struct AVDictionaryEntry {
78 | char *key;
79 | char *value;
80 | } AVDictionaryEntry;
81 |
82 | typedef struct AVDictionary AVDictionary;
83 |
84 | /**
85 | * Get a dictionary entry with matching key.
86 | *
87 | * @param prev Set to the previous matching element to find the next.
88 | * If set to NULL the first matching element is returned.
89 | * @param flags Allows case as well as suffix-insensitive comparisons.
90 | * @return Found entry or NULL, changing key or value leads to undefined behavior.
91 | */
92 | AVDictionaryEntry *
93 | av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags);
94 |
95 | /**
96 | * Get number of entries in dictionary.
97 | *
98 | * @param m dictionary
99 | * @return number of entries in dictionary
100 | */
101 | int av_dict_count(const AVDictionary *m);
102 |
103 | /**
104 | * Set the given entry in *pm, overwriting an existing entry.
105 | *
106 | * @param pm pointer to a pointer to a dictionary struct. If *pm is NULL
107 | * a dictionary struct is allocated and put in *pm.
108 | * @param key entry key to add to *pm (will be av_strduped depending on flags)
109 | * @param value entry value to add to *pm (will be av_strduped depending on flags).
110 | * Passing a NULL value will cause an existing entry to be deleted.
111 | * @return >= 0 on success otherwise an error code <0
112 | */
113 | int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags);
114 |
115 | /**
116 | * Parse the key/value pairs list and add to a dictionary.
117 | *
118 | * @param key_val_sep a 0-terminated list of characters used to separate
119 | * key from value
120 | * @param pairs_sep a 0-terminated list of characters used to separate
121 | * two pairs from each other
122 | * @param flags flags to use when adding to dictionary.
123 | * AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL
124 | * are ignored since the key/value tokens will always
125 | * be duplicated.
126 | * @return 0 on success, negative AVERROR code on failure
127 | */
128 | int av_dict_parse_string(AVDictionary **pm, const char *str,
129 | const char *key_val_sep, const char *pairs_sep,
130 | int flags);
131 |
132 | /**
133 | * Copy entries from one AVDictionary struct into another.
134 | * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL,
135 | * this function will allocate a struct for you and put it in *dst
136 | * @param src pointer to source AVDictionary struct
137 | * @param flags flags to use when setting entries in *dst
138 | * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag
139 | */
140 | void av_dict_copy(AVDictionary **dst, AVDictionary *src, int flags);
141 |
142 | /**
143 | * Free all the memory allocated for an AVDictionary struct
144 | * and all keys and values.
145 | */
146 | void av_dict_free(AVDictionary **m);
147 |
148 | /**
149 | * @}
150 | */
151 |
152 | #endif /* AVUTIL_DICT_H */
153 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/error.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 | * error code definitions
22 | */
23 |
24 | #ifndef AVUTIL_ERROR_H
25 | #define AVUTIL_ERROR_H
26 |
27 | #include
28 | #include
29 |
30 | /**
31 | * @addtogroup lavu_error
32 | *
33 | * @{
34 | */
35 |
36 |
37 | /* error handling */
38 | #if EDOM > 0
39 | #define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions.
40 | #define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value.
41 | #else
42 | /* Some platforms have E* and errno already negated. */
43 | #define AVERROR(e) (e)
44 | #define AVUNERROR(e) (e)
45 | #endif
46 |
47 | #define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d))
48 |
49 | #define AVERROR_BSF_NOT_FOUND FFERRTAG(0xF8,'B','S','F') ///< Bitstream filter not found
50 | #define AVERROR_BUG FFERRTAG( 'B','U','G','!') ///< Internal bug, also see AVERROR_BUG2
51 | #define AVERROR_BUFFER_TOO_SMALL FFERRTAG( 'B','U','F','S') ///< Buffer too small
52 | #define AVERROR_DECODER_NOT_FOUND FFERRTAG(0xF8,'D','E','C') ///< Decoder not found
53 | #define AVERROR_DEMUXER_NOT_FOUND FFERRTAG(0xF8,'D','E','M') ///< Demuxer not found
54 | #define AVERROR_ENCODER_NOT_FOUND FFERRTAG(0xF8,'E','N','C') ///< Encoder not found
55 | #define AVERROR_EOF FFERRTAG( 'E','O','F',' ') ///< End of file
56 | #define AVERROR_EXIT FFERRTAG( 'E','X','I','T') ///< Immediate exit was requested; the called function should not be restarted
57 | #define AVERROR_EXTERNAL FFERRTAG( 'E','X','T',' ') ///< Generic error in an external library
58 | #define AVERROR_FILTER_NOT_FOUND FFERRTAG(0xF8,'F','I','L') ///< Filter not found
59 | #define AVERROR_INVALIDDATA FFERRTAG( 'I','N','D','A') ///< Invalid data found when processing input
60 | #define AVERROR_MUXER_NOT_FOUND FFERRTAG(0xF8,'M','U','X') ///< Muxer not found
61 | #define AVERROR_OPTION_NOT_FOUND FFERRTAG(0xF8,'O','P','T') ///< Option not found
62 | #define AVERROR_PATCHWELCOME FFERRTAG( 'P','A','W','E') ///< Not yet implemented in FFmpeg, patches welcome
63 | #define AVERROR_PROTOCOL_NOT_FOUND FFERRTAG(0xF8,'P','R','O') ///< Protocol not found
64 |
65 | #define AVERROR_STREAM_NOT_FOUND FFERRTAG(0xF8,'S','T','R') ///< Stream not found
66 | /**
67 | * This is semantically identical to AVERROR_BUG
68 | * it has been introduced in Libav after our AVERROR_BUG and with a modified value.
69 | */
70 | #define AVERROR_BUG2 FFERRTAG( 'B','U','G',' ')
71 | #define AVERROR_UNKNOWN FFERRTAG( 'U','N','K','N') ///< Unknown error, typically from an external library
72 | #define AVERROR_EXPERIMENTAL (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it.
73 |
74 | #define AV_ERROR_MAX_STRING_SIZE 64
75 |
76 | /**
77 | * Put a description of the AVERROR code errnum in errbuf.
78 | * In case of failure the global variable errno is set to indicate the
79 | * error. Even in case of failure av_strerror() will print a generic
80 | * error message indicating the errnum provided to errbuf.
81 | *
82 | * @param errnum error code to describe
83 | * @param errbuf buffer to which description is written
84 | * @param errbuf_size the size in bytes of errbuf
85 | * @return 0 on success, a negative value if a description for errnum
86 | * cannot be found
87 | */
88 | int av_strerror(int errnum, char *errbuf, size_t errbuf_size);
89 |
90 | /**
91 | * Fill the provided buffer with a string containing an error string
92 | * corresponding to the AVERROR code errnum.
93 | *
94 | * @param errbuf a buffer
95 | * @param errbuf_size size in bytes of errbuf
96 | * @param errnum error code to describe
97 | * @return the buffer in input, filled with the error description
98 | * @see av_strerror()
99 | */
100 | static inline char *av_make_error_string(char *errbuf, size_t errbuf_size, int errnum)
101 | {
102 | av_strerror(errnum, errbuf, errbuf_size);
103 | return errbuf;
104 | }
105 |
106 | /**
107 | * Convenience macro, the return value should be used only directly in
108 | * function arguments but never stand-alone.
109 | */
110 | #define av_err2str(errnum) \
111 | av_make_error_string((char[AV_ERROR_MAX_STRING_SIZE]){0}, AV_ERROR_MAX_STRING_SIZE, errnum)
112 |
113 | /**
114 | * @}
115 | */
116 |
117 | #endif /* AVUTIL_ERROR_H */
118 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/eval.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2002 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 arithmetic expression evaluator
24 | */
25 |
26 | #ifndef AVUTIL_EVAL_H
27 | #define AVUTIL_EVAL_H
28 |
29 | #include "avutil.h"
30 |
31 | typedef struct AVExpr AVExpr;
32 |
33 | /**
34 | * Parse and evaluate an expression.
35 | * Note, this is significantly slower than av_expr_eval().
36 | *
37 | * @param res a pointer to a double where is put the result value of
38 | * the expression, or NAN in case of error
39 | * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)"
40 | * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0}
41 | * @param const_values a zero terminated array of values for the identifiers from const_names
42 | * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers
43 | * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument
44 | * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers
45 | * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments
46 | * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2
47 | * @param log_ctx parent logging context
48 | * @return >= 0 in case of success, a negative value corresponding to an
49 | * AVERROR code otherwise
50 | */
51 | int av_expr_parse_and_eval(double *res, const char *s,
52 | const char * const *const_names, const double *const_values,
53 | const char * const *func1_names, double (* const *funcs1)(void *, double),
54 | const char * const *func2_names, double (* const *funcs2)(void *, double, double),
55 | void *opaque, int log_offset, void *log_ctx);
56 |
57 | /**
58 | * Parse an expression.
59 | *
60 | * @param expr a pointer where is put an AVExpr containing the parsed
61 | * value in case of successful parsing, or NULL otherwise.
62 | * The pointed to AVExpr must be freed with av_expr_free() by the user
63 | * when it is not needed anymore.
64 | * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)"
65 | * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0}
66 | * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers
67 | * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument
68 | * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers
69 | * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments
70 | * @param log_ctx parent logging context
71 | * @return >= 0 in case of success, a negative value corresponding to an
72 | * AVERROR code otherwise
73 | */
74 | int av_expr_parse(AVExpr **expr, const char *s,
75 | const char * const *const_names,
76 | const char * const *func1_names, double (* const *funcs1)(void *, double),
77 | const char * const *func2_names, double (* const *funcs2)(void *, double, double),
78 | int log_offset, void *log_ctx);
79 |
80 | /**
81 | * Evaluate a previously parsed expression.
82 | *
83 | * @param const_values a zero terminated array of values for the identifiers from av_expr_parse() const_names
84 | * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2
85 | * @return the value of the expression
86 | */
87 | double av_expr_eval(AVExpr *e, const double *const_values, void *opaque);
88 |
89 | /**
90 | * Free a parsed expression previously created with av_expr_parse().
91 | */
92 | void av_expr_free(AVExpr *e);
93 |
94 | /**
95 | * Parse the string in numstr and return its value as a double. If
96 | * the string is empty, contains only whitespaces, or does not contain
97 | * an initial substring that has the expected syntax for a
98 | * floating-point number, no conversion is performed. In this case,
99 | * returns a value of zero and the value returned in tail is the value
100 | * of numstr.
101 | *
102 | * @param numstr a string representing a number, may contain one of
103 | * the International System number postfixes, for example 'K', 'M',
104 | * 'G'. If 'i' is appended after the postfix, powers of 2 are used
105 | * instead of powers of 10. The 'B' postfix multiplies the value for
106 | * 8, and can be appended after another postfix or used alone. This
107 | * allows using for example 'KB', 'MiB', 'G' and 'B' as postfix.
108 | * @param tail if non-NULL puts here the pointer to the char next
109 | * after the last parsed character
110 | */
111 | double av_strtod(const char *numstr, char **tail);
112 |
113 | #endif /* AVUTIL_EVAL_H */
114 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/fifo.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 very simple circular buffer FIFO implementation
22 | */
23 |
24 | #ifndef AVUTIL_FIFO_H
25 | #define AVUTIL_FIFO_H
26 |
27 | #include
28 | #include "avutil.h"
29 | #include "attributes.h"
30 |
31 | typedef struct AVFifoBuffer {
32 | uint8_t *buffer;
33 | uint8_t *rptr, *wptr, *end;
34 | uint32_t rndx, wndx;
35 | } AVFifoBuffer;
36 |
37 | /**
38 | * Initialize an AVFifoBuffer.
39 | * @param size of FIFO
40 | * @return AVFifoBuffer or NULL in case of memory allocation failure
41 | */
42 | AVFifoBuffer *av_fifo_alloc(unsigned int size);
43 |
44 | /**
45 | * Free an AVFifoBuffer.
46 | * @param f AVFifoBuffer to free
47 | */
48 | void av_fifo_free(AVFifoBuffer *f);
49 |
50 | /**
51 | * Reset the AVFifoBuffer to the state right after av_fifo_alloc, in particular it is emptied.
52 | * @param f AVFifoBuffer to reset
53 | */
54 | void av_fifo_reset(AVFifoBuffer *f);
55 |
56 | /**
57 | * Return the amount of data in bytes in the AVFifoBuffer, that is the
58 | * amount of data you can read from it.
59 | * @param f AVFifoBuffer to read from
60 | * @return size
61 | */
62 | int av_fifo_size(AVFifoBuffer *f);
63 |
64 | /**
65 | * Return the amount of space in bytes in the AVFifoBuffer, that is the
66 | * amount of data you can write into it.
67 | * @param f AVFifoBuffer to write into
68 | * @return size
69 | */
70 | int av_fifo_space(AVFifoBuffer *f);
71 |
72 | /**
73 | * Feed data from an AVFifoBuffer to a user-supplied callback.
74 | * @param f AVFifoBuffer to read from
75 | * @param buf_size number of bytes to read
76 | * @param func generic read function
77 | * @param dest data destination
78 | */
79 | int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int));
80 |
81 | /**
82 | * Feed data from a user-supplied callback to an AVFifoBuffer.
83 | * @param f AVFifoBuffer to write to
84 | * @param src data source; non-const since it may be used as a
85 | * modifiable context by the function defined in func
86 | * @param size number of bytes to write
87 | * @param func generic write function; the first parameter is src,
88 | * the second is dest_buf, the third is dest_buf_size.
89 | * func must return the number of bytes written to dest_buf, or <= 0 to
90 | * indicate no more data available to write.
91 | * If func is NULL, src is interpreted as a simple byte array for source data.
92 | * @return the number of bytes written to the FIFO
93 | */
94 | int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int));
95 |
96 | /**
97 | * Resize an AVFifoBuffer.
98 | * In case of reallocation failure, the old FIFO is kept unchanged.
99 | *
100 | * @param f AVFifoBuffer to resize
101 | * @param size new AVFifoBuffer size in bytes
102 | * @return <0 for failure, >=0 otherwise
103 | */
104 | int av_fifo_realloc2(AVFifoBuffer *f, unsigned int size);
105 |
106 | /**
107 | * Enlarge an AVFifoBuffer.
108 | * In case of reallocation failure, the old FIFO is kept unchanged.
109 | * The new fifo size may be larger than the requested size.
110 | *
111 | * @param f AVFifoBuffer to resize
112 | * @param additional_space the amount of space in bytes to allocate in addition to av_fifo_size()
113 | * @return <0 for failure, >=0 otherwise
114 | */
115 | int av_fifo_grow(AVFifoBuffer *f, unsigned int additional_space);
116 |
117 | /**
118 | * Read and discard the specified amount of data from an AVFifoBuffer.
119 | * @param f AVFifoBuffer to read from
120 | * @param size amount of data to read in bytes
121 | */
122 | void av_fifo_drain(AVFifoBuffer *f, int size);
123 |
124 | /**
125 | * Return a pointer to the data stored in a FIFO buffer at a certain offset.
126 | * The FIFO buffer is not modified.
127 | *
128 | * @param f AVFifoBuffer to peek at, f must be non-NULL
129 | * @param offs an offset in bytes, its absolute value must be less
130 | * than the used buffer size or the returned pointer will
131 | * point outside to the buffer data.
132 | * The used buffer size can be checked with av_fifo_size().
133 | */
134 | static inline uint8_t *av_fifo_peek2(const AVFifoBuffer *f, int offs)
135 | {
136 | uint8_t *ptr = f->rptr + offs;
137 | if (ptr >= f->end)
138 | ptr = f->buffer + (ptr - f->end);
139 | else if (ptr < f->buffer)
140 | ptr = f->end - (f->buffer - ptr);
141 | return ptr;
142 | }
143 |
144 | #endif /* AVUTIL_FIFO_H */
145 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | * The returned buffer must be released with av_file_unmap().
37 | *
38 | * @param log_offset loglevel offset used for logging
39 | * @param log_ctx context used for logging
40 | * @return a non negative number in case of success, a negative value
41 | * corresponding to an AVERROR error code in case of failure
42 | */
43 | int av_file_map(const char *filename, uint8_t **bufptr, size_t *size,
44 | int log_offset, void *log_ctx);
45 |
46 | /**
47 | * Unmap or free the buffer bufptr created by av_file_map().
48 | *
49 | * @param size size in bytes of bufptr, must be the same as returned
50 | * by av_file_map()
51 | */
52 | void av_file_unmap(uint8_t *bufptr, size_t size);
53 |
54 | /**
55 | * Wrapper to work around the lack of mkstemp() on mingw.
56 | * Also, tries to create file in /tmp first, if possible.
57 | * *prefix can be a character constant; *filename will be allocated internally.
58 | * @return file descriptor of opened file (or -1 on error)
59 | * and opened file name in **filename.
60 | * @note On very old libcs it is necessary to set a secure umask before
61 | * calling this, av_tempfile() can't call umask itself as it is used in
62 | * libraries and could interfere with the calling application.
63 | */
64 | int av_tempfile(const char *prefix, char **filename, int log_offset, void *log_ctx);
65 |
66 | #endif /* AVUTIL_FILE_H */
67 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | /**
27 | * @defgroup lavu_hmac HMAC
28 | * @ingroup lavu_crypto
29 | * @{
30 | */
31 |
32 | enum AVHMACType {
33 | AV_HMAC_MD5,
34 | AV_HMAC_SHA1,
35 | AV_HMAC_SHA224 = 10,
36 | AV_HMAC_SHA256,
37 | AV_HMAC_SHA384,
38 | AV_HMAC_SHA512,
39 | };
40 |
41 | typedef struct AVHMAC AVHMAC;
42 |
43 | /**
44 | * Allocate an AVHMAC context.
45 | * @param type The hash function used for the HMAC.
46 | */
47 | AVHMAC *av_hmac_alloc(enum AVHMACType type);
48 |
49 | /**
50 | * Free an AVHMAC context.
51 | * @param ctx The context to free, may be NULL
52 | */
53 | void av_hmac_free(AVHMAC *ctx);
54 |
55 | /**
56 | * Initialize an AVHMAC context with an authentication key.
57 | * @param ctx The HMAC context
58 | * @param key The authentication key
59 | * @param keylen The length of the key, in bytes
60 | */
61 | void av_hmac_init(AVHMAC *ctx, const uint8_t *key, unsigned int keylen);
62 |
63 | /**
64 | * Hash data with the HMAC.
65 | * @param ctx The HMAC context
66 | * @param data The data to hash
67 | * @param len The length of the data, in bytes
68 | */
69 | void av_hmac_update(AVHMAC *ctx, const uint8_t *data, unsigned int len);
70 |
71 | /**
72 | * Finish hashing and output the HMAC digest.
73 | * @param ctx The HMAC context
74 | * @param out The output buffer to write the digest into
75 | * @param outlen The length of the out buffer, in bytes
76 | * @return The number of bytes written to out, or a negative error code.
77 | */
78 | int av_hmac_final(AVHMAC *ctx, uint8_t *out, unsigned int outlen);
79 |
80 | /**
81 | * Hash an array of data with a key.
82 | * @param ctx The HMAC context
83 | * @param data The data to hash
84 | * @param len The length of the data, in bytes
85 | * @param key The authentication key
86 | * @param keylen The length of the key, in bytes
87 | * @param out The output buffer to write the digest into
88 | * @param outlen The length of the out buffer, in bytes
89 | * @return The number of bytes written to out, or a negative error code.
90 | */
91 | int av_hmac_calc(AVHMAC *ctx, const uint8_t *data, unsigned int len,
92 | const uint8_t *key, unsigned int keylen,
93 | uint8_t *out, unsigned int outlen);
94 |
95 | /**
96 | * @}
97 | */
98 |
99 | #endif /* AVUTIL_HMAC_H */
100 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/intfloat_readwrite.h:
--------------------------------------------------------------------------------
1 | /*
2 | * copyright (c) 2005 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_INTFLOAT_READWRITE_H
22 | #define AVUTIL_INTFLOAT_READWRITE_H
23 |
24 | #include
25 | #include "attributes.h"
26 |
27 | /* IEEE 80 bits extended float */
28 | typedef struct AVExtFloat {
29 | uint8_t exponent[2];
30 | uint8_t mantissa[8];
31 | } AVExtFloat;
32 |
33 | attribute_deprecated double av_int2dbl(int64_t v) av_const;
34 | attribute_deprecated float av_int2flt(int32_t v) av_const;
35 | attribute_deprecated double av_ext2dbl(const AVExtFloat ext) av_const;
36 | attribute_deprecated int64_t av_dbl2int(double d) av_const;
37 | attribute_deprecated int32_t av_flt2int(float d) av_const;
38 | attribute_deprecated AVExtFloat av_dbl2ext(double d) av_const;
39 |
40 | #endif /* AVUTIL_INTFLOAT_READWRITE_H */
41 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | typedef struct AVLFG {
26 | unsigned int state[64];
27 | int index;
28 | } AVLFG;
29 |
30 | void av_lfg_init(AVLFG *c, unsigned int seed);
31 |
32 | /**
33 | * Get the next random unsigned 32-bit number using an ALFG.
34 | *
35 | * Please also consider a simple LCG like state= state*1664525+1013904223,
36 | * it may be good enough and faster for your specific use case.
37 | */
38 | static inline unsigned int av_lfg_get(AVLFG *c){
39 | c->state[c->index & 63] = c->state[(c->index-24) & 63] + c->state[(c->index-55) & 63];
40 | return c->state[c->index++ & 63];
41 | }
42 |
43 | /**
44 | * Get the next random unsigned 32-bit number using a MLFG.
45 | *
46 | * Please also consider av_lfg_get() above, it is faster.
47 | */
48 | static inline unsigned int av_mlfg_get(AVLFG *c){
49 | unsigned int a= c->state[(c->index-55) & 63];
50 | unsigned int b= c->state[(c->index-24) & 63];
51 | return c->state[c->index++ & 63] = 2*a*b+a+b;
52 | }
53 |
54 | /**
55 | * Get the next two numbers generated by a Box-Muller Gaussian
56 | * generator using the random numbers issued by lfg.
57 | *
58 | * @param out array where the two generated numbers are placed
59 | */
60 | void av_bmg_get(AVLFG *lfg, double out[2]);
61 |
62 | #endif /* AVUTIL_LFG_H */
63 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/mathematics.h:
--------------------------------------------------------------------------------
1 | /*
2 | * copyright (c) 2005-2012 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_MATHEMATICS_H
22 | #define AVUTIL_MATHEMATICS_H
23 |
24 | #include
25 | #include
26 | #include "attributes.h"
27 | #include "rational.h"
28 | #include "intfloat.h"
29 |
30 | #ifndef M_E
31 | #define M_E 2.7182818284590452354 /* e */
32 | #endif
33 | #ifndef M_LN2
34 | #define M_LN2 0.69314718055994530942 /* log_e 2 */
35 | #endif
36 | #ifndef M_LN10
37 | #define M_LN10 2.30258509299404568402 /* log_e 10 */
38 | #endif
39 | #ifndef M_LOG2_10
40 | #define M_LOG2_10 3.32192809488736234787 /* log_2 10 */
41 | #endif
42 | #ifndef M_PHI
43 | #define M_PHI 1.61803398874989484820 /* phi / golden ratio */
44 | #endif
45 | #ifndef M_PI
46 | #define M_PI 3.14159265358979323846 /* pi */
47 | #endif
48 | #ifndef M_SQRT1_2
49 | #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */
50 | #endif
51 | #ifndef M_SQRT2
52 | #define M_SQRT2 1.41421356237309504880 /* sqrt(2) */
53 | #endif
54 | #ifndef NAN
55 | #define NAN av_int2float(0x7fc00000)
56 | #endif
57 | #ifndef INFINITY
58 | #define INFINITY av_int2float(0x7f800000)
59 | #endif
60 |
61 | /**
62 | * @addtogroup lavu_math
63 | * @{
64 | */
65 |
66 |
67 | enum AVRounding {
68 | AV_ROUND_ZERO = 0, ///< Round toward zero.
69 | AV_ROUND_INF = 1, ///< Round away from zero.
70 | AV_ROUND_DOWN = 2, ///< Round toward -infinity.
71 | AV_ROUND_UP = 3, ///< Round toward +infinity.
72 | AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero.
73 | AV_ROUND_PASS_MINMAX = 8192, ///< Flag to pass INT64_MIN/MAX through instead of rescaling, this avoids special cases for AV_NOPTS_VALUE
74 | };
75 |
76 | /**
77 | * Return the greatest common divisor of a and b.
78 | * If both a and b are 0 or either or both are <0 then behavior is
79 | * undefined.
80 | */
81 | int64_t av_const av_gcd(int64_t a, int64_t b);
82 |
83 | /**
84 | * Rescale a 64-bit integer with rounding to nearest.
85 | * A simple a*b/c isn't possible as it can overflow.
86 | */
87 | int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const;
88 |
89 | /**
90 | * Rescale a 64-bit integer with specified rounding.
91 | * A simple a*b/c isn't possible as it can overflow.
92 | *
93 | * @return rescaled value a, or if AV_ROUND_PASS_MINMAX is set and a is
94 | * INT64_MIN or INT64_MAX then a is passed through unchanged.
95 | */
96 | int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const;
97 |
98 | /**
99 | * Rescale a 64-bit integer by 2 rational numbers.
100 | */
101 | int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const;
102 |
103 | /**
104 | * Rescale a 64-bit integer by 2 rational numbers with specified rounding.
105 | *
106 | * @return rescaled value a, or if AV_ROUND_PASS_MINMAX is set and a is
107 | * INT64_MIN or INT64_MAX then a is passed through unchanged.
108 | */
109 | int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq,
110 | enum AVRounding) av_const;
111 |
112 | /**
113 | * Compare 2 timestamps each in its own timebases.
114 | * The result of the function is undefined if one of the timestamps
115 | * is outside the int64_t range when represented in the others timebase.
116 | * @return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position
117 | */
118 | int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b);
119 |
120 | /**
121 | * Compare 2 integers modulo mod.
122 | * That is we compare integers a and b for which only the least
123 | * significant log2(mod) bits are known.
124 | *
125 | * @param mod must be a power of 2
126 | * @return a negative value if a is smaller than b
127 | * a positive value if a is greater than b
128 | * 0 if a equals b
129 | */
130 | int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod);
131 |
132 | /**
133 | * Rescale a timestamp while preserving known durations.
134 | *
135 | * @param in_ts Input timestamp
136 | * @param in_tb Input timesbase
137 | * @param fs_tb Duration and *last timebase
138 | * @param duration duration till the next call
139 | * @param out_tb Output timesbase
140 | */
141 | int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int duration, int64_t *last, AVRational out_tb);
142 |
143 | /**
144 | * @}
145 | */
146 |
147 | #endif /* AVUTIL_MATHEMATICS_H */
148 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | #ifndef AVUTIL_MD5_H
22 | #define AVUTIL_MD5_H
23 |
24 | #include
25 |
26 | #include "attributes.h"
27 | #include "version.h"
28 |
29 | /**
30 | * @defgroup lavu_md5 MD5
31 | * @ingroup lavu_crypto
32 | * @{
33 | */
34 |
35 | extern const int av_md5_size;
36 |
37 | struct AVMD5;
38 |
39 | /**
40 | * Allocate an AVMD5 context.
41 | */
42 | struct AVMD5 *av_md5_alloc(void);
43 |
44 | /**
45 | * Initialize MD5 hashing.
46 | *
47 | * @param ctx pointer to the function context (of size av_md5_size)
48 | */
49 | void av_md5_init(struct AVMD5 *ctx);
50 |
51 | /**
52 | * Update hash value.
53 | *
54 | * @param ctx hash function context
55 | * @param src input data to update hash with
56 | * @param len input data length
57 | */
58 | void av_md5_update(struct AVMD5 *ctx, const uint8_t *src, int len);
59 |
60 | /**
61 | * Finish hashing and output digest value.
62 | *
63 | * @param ctx hash function context
64 | * @param dst buffer where output digest value is stored
65 | */
66 | void av_md5_final(struct AVMD5 *ctx, uint8_t *dst);
67 |
68 | /**
69 | * Hash an array of data.
70 | *
71 | * @param dst The output buffer to write the digest into
72 | * @param src The data to hash
73 | * @param len The length of the data, in bytes
74 | */
75 | void av_md5_sum(uint8_t *dst, const uint8_t *src, const int len);
76 |
77 | /**
78 | * @}
79 | */
80 |
81 | #endif /* AVUTIL_MD5_H */
82 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | #ifndef AVUTIL_MURMUR3_H
22 | #define AVUTIL_MURMUR3_H
23 |
24 | #include
25 |
26 | struct AVMurMur3 *av_murmur3_alloc(void);
27 | void av_murmur3_init_seeded(struct AVMurMur3 *c, uint64_t seed);
28 | void av_murmur3_init(struct AVMurMur3 *c);
29 | void av_murmur3_update(struct AVMurMur3 *c, const uint8_t *src, int len);
30 | void av_murmur3_final(struct AVMurMur3 *c, uint8_t dst[16]);
31 |
32 | #endif /* AVUTIL_MURMUR3_H */
33 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/parseutils.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_PARSEUTILS_H
20 | #define AVUTIL_PARSEUTILS_H
21 |
22 | #include
23 |
24 | #include "rational.h"
25 |
26 | /**
27 | * @file
28 | * misc parsing utilities
29 | */
30 |
31 | /**
32 | * Parse str and store the parsed ratio in q.
33 | *
34 | * Note that a ratio with infinite (1/0) or negative value is
35 | * considered valid, so you should check on the returned value if you
36 | * want to exclude those values.
37 | *
38 | * The undefined value can be expressed using the "0:0" string.
39 | *
40 | * @param[in,out] q pointer to the AVRational which will contain the ratio
41 | * @param[in] str the string to parse: it has to be a string in the format
42 | * num:den, a float number or an expression
43 | * @param[in] max the maximum allowed numerator and denominator
44 | * @param[in] log_offset log level offset which is applied to the log
45 | * level of log_ctx
46 | * @param[in] log_ctx parent logging context
47 | * @return >= 0 on success, a negative error code otherwise
48 | */
49 | int av_parse_ratio(AVRational *q, const char *str, int max,
50 | int log_offset, void *log_ctx);
51 |
52 | #define av_parse_ratio_quiet(rate, str, max) \
53 | av_parse_ratio(rate, str, max, AV_LOG_MAX_OFFSET, NULL)
54 |
55 | /**
56 | * Parse str and put in width_ptr and height_ptr the detected values.
57 | *
58 | * @param[in,out] width_ptr pointer to the variable which will contain the detected
59 | * width value
60 | * @param[in,out] height_ptr pointer to the variable which will contain the detected
61 | * height value
62 | * @param[in] str the string to parse: it has to be a string in the format
63 | * width x height or a valid video size abbreviation.
64 | * @return >= 0 on success, a negative error code otherwise
65 | */
66 | int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str);
67 |
68 | /**
69 | * Parse str and store the detected values in *rate.
70 | *
71 | * @param[in,out] rate pointer to the AVRational which will contain the detected
72 | * frame rate
73 | * @param[in] str the string to parse: it has to be a string in the format
74 | * rate_num / rate_den, a float number or a valid video rate abbreviation
75 | * @return >= 0 on success, a negative error code otherwise
76 | */
77 | int av_parse_video_rate(AVRational *rate, const char *str);
78 |
79 | /**
80 | * Put the RGBA values that correspond to color_string in rgba_color.
81 | *
82 | * @param color_string a string specifying a color. It can be the name of
83 | * a color (case insensitive match) or a [0x|#]RRGGBB[AA] sequence,
84 | * possibly followed by "@" and a string representing the alpha
85 | * component.
86 | * The alpha component may be a string composed by "0x" followed by an
87 | * hexadecimal number or a decimal number between 0.0 and 1.0, which
88 | * represents the opacity value (0x00/0.0 means completely transparent,
89 | * 0xff/1.0 completely opaque).
90 | * If the alpha component is not specified then 0xff is assumed.
91 | * The string "random" will result in a random color.
92 | * @param slen length of the initial part of color_string containing the
93 | * color. It can be set to -1 if color_string is a null terminated string
94 | * containing nothing else than the color.
95 | * @return >= 0 in case of success, a negative value in case of
96 | * failure (for example if color_string cannot be parsed).
97 | */
98 | int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen,
99 | void *log_ctx);
100 |
101 | /**
102 | * Get the name of a color from the internal table of hard-coded named
103 | * colors.
104 | *
105 | * This function is meant to enumerate the color names recognized by
106 | * av_parse_color().
107 | *
108 | * @param color_idx index of the requested color, starting from 0
109 | * @param rgbp if not NULL, will point to a 3-elements array with the color value in RGB
110 | * @return the color name string or NULL if color_idx is not in the array
111 | */
112 | const char *av_get_known_color_name(int color_idx, const uint8_t **rgb);
113 |
114 | /**
115 | * Parse timestr and return in *time a corresponding number of
116 | * microseconds.
117 | *
118 | * @param timeval puts here the number of microseconds corresponding
119 | * to the string in timestr. If the string represents a duration, it
120 | * is the number of microseconds contained in the time interval. If
121 | * the string is a date, is the number of microseconds since 1st of
122 | * January, 1970 up to the time of the parsed date. If timestr cannot
123 | * be successfully parsed, set *time to INT64_MIN.
124 |
125 | * @param timestr a string representing a date or a duration.
126 | * - If a date the syntax is:
127 | * @code
128 | * [{YYYY-MM-DD|YYYYMMDD}[T|t| ]]{{HH:MM:SS[.m...]]]}|{HHMMSS[.m...]]]}}[Z]
129 | * now
130 | * @endcode
131 | * If the value is "now" it takes the current time.
132 | * Time is local time unless Z is appended, in which case it is
133 | * interpreted as UTC.
134 | * If the year-month-day part is not specified it takes the current
135 | * year-month-day.
136 | * - If a duration the syntax is:
137 | * @code
138 | * [-][HH:]MM:SS[.m...]
139 | * [-]S+[.m...]
140 | * @endcode
141 | * @param duration flag which tells how to interpret timestr, if not
142 | * zero timestr is interpreted as a duration, otherwise as a date
143 | * @return >= 0 in case of success, a negative value corresponding to an
144 | * AVERROR code otherwise
145 | */
146 | int av_parse_time(int64_t *timeval, const char *timestr, int duration);
147 |
148 | /**
149 | * Parse the input string p according to the format string fmt and
150 | * store its results in the structure dt.
151 | * This implementation supports only a subset of the formats supported
152 | * by the standard strptime().
153 | *
154 | * In particular it actually supports the parameters:
155 | * - %H: the hour as a decimal number, using a 24-hour clock, in the
156 | * range '00' through '23'
157 | * - %J: hours as a decimal number, in the range '0' through INT_MAX
158 | * - %M: the minute as a decimal number, using a 24-hour clock, in the
159 | * range '00' through '59'
160 | * - %S: the second as a decimal number, using a 24-hour clock, in the
161 | * range '00' through '59'
162 | * - %Y: the year as a decimal number, using the Gregorian calendar
163 | * - %m: the month as a decimal number, in the range '1' through '12'
164 | * - %d: the day of the month as a decimal number, in the range '1'
165 | * through '31'
166 | * - %%: a literal '%'
167 | *
168 | * @return a pointer to the first character not processed in this
169 | * function call, or NULL in case the function fails to match all of
170 | * the fmt string and therefore an error occurred
171 | */
172 | char *av_small_strptime(const char *p, const char *fmt, struct tm *dt);
173 |
174 | /**
175 | * Attempt to find a specific tag in a URL.
176 | *
177 | * syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done.
178 | * Return 1 if found.
179 | */
180 | int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info);
181 |
182 | /**
183 | * Convert the decomposed UTC time in tm to a time_t value.
184 | */
185 | time_t av_timegm(struct tm *tm);
186 |
187 | #endif /* AVUTIL_PARSEUTILS_H */
188 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/random_seed.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2009 Baptiste Coudurier
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 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/rational.h:
--------------------------------------------------------------------------------
1 | /*
2 | * rational numbers
3 | * Copyright (c) 2003 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 | /**
23 | * @file
24 | * rational numbers
25 | * @author Michael Niedermayer
26 | */
27 |
28 | #ifndef AVUTIL_RATIONAL_H
29 | #define AVUTIL_RATIONAL_H
30 |
31 | #include
32 | #include
33 | #include "attributes.h"
34 |
35 | /**
36 | * @addtogroup lavu_math
37 | * @{
38 | */
39 |
40 | /**
41 | * rational number numerator/denominator
42 | */
43 | typedef struct AVRational{
44 | int num; ///< numerator
45 | int den; ///< denominator
46 | } AVRational;
47 |
48 | /**
49 | * Compare two rationals.
50 | * @param a first rational
51 | * @param b second rational
52 | * @return 0 if a==b, 1 if a>b, -1 if a>63)|1;
59 | else if(b.den && a.den) return 0;
60 | else if(a.num && b.num) return (a.num>>31) - (b.num>>31);
61 | else return INT_MIN;
62 | }
63 |
64 | /**
65 | * Convert rational to double.
66 | * @param a rational to convert
67 | * @return (double) a
68 | */
69 | static inline double av_q2d(AVRational a){
70 | return a.num / (double) a.den;
71 | }
72 |
73 | /**
74 | * Reduce a fraction.
75 | * This is useful for framerate calculations.
76 | * @param dst_num destination numerator
77 | * @param dst_den destination denominator
78 | * @param num source numerator
79 | * @param den source denominator
80 | * @param max the maximum allowed for dst_num & dst_den
81 | * @return 1 if exact, 0 otherwise
82 | */
83 | int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max);
84 |
85 | /**
86 | * Multiply two rationals.
87 | * @param b first rational
88 | * @param c second rational
89 | * @return b*c
90 | */
91 | AVRational av_mul_q(AVRational b, AVRational c) av_const;
92 |
93 | /**
94 | * Divide one rational by another.
95 | * @param b first rational
96 | * @param c second rational
97 | * @return b/c
98 | */
99 | AVRational av_div_q(AVRational b, AVRational c) av_const;
100 |
101 | /**
102 | * Add two rationals.
103 | * @param b first rational
104 | * @param c second rational
105 | * @return b+c
106 | */
107 | AVRational av_add_q(AVRational b, AVRational c) av_const;
108 |
109 | /**
110 | * Subtract one rational from another.
111 | * @param b first rational
112 | * @param c second rational
113 | * @return b-c
114 | */
115 | AVRational av_sub_q(AVRational b, AVRational c) av_const;
116 |
117 | /**
118 | * Invert a rational.
119 | * @param q value
120 | * @return 1 / q
121 | */
122 | static av_always_inline AVRational av_inv_q(AVRational q)
123 | {
124 | AVRational r = { q.den, q.num };
125 | return r;
126 | }
127 |
128 | /**
129 | * Convert a double precision floating point number to a rational.
130 | * inf is expressed as {1,0} or {-1,0} depending on the sign.
131 | *
132 | * @param d double to convert
133 | * @param max the maximum allowed numerator and denominator
134 | * @return (AVRational) d
135 | */
136 | AVRational av_d2q(double d, int max) av_const;
137 |
138 | /**
139 | * @return 1 if q1 is nearer to q than q2, -1 if q2 is nearer
140 | * than q1, 0 if they have the same distance.
141 | */
142 | int av_nearer_q(AVRational q, AVRational q1, AVRational q2);
143 |
144 | /**
145 | * Find the nearest value in q_list to q.
146 | * @param q_list an array of rationals terminated by {0, 0}
147 | * @return the index of the nearest value found in the array
148 | */
149 | int av_find_nearest_q_idx(AVRational q, const AVRational* q_list);
150 |
151 | /**
152 | * @}
153 | */
154 |
155 | #endif /* AVUTIL_RATIONAL_H */
156 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | #ifndef AVUTIL_RIPEMD_H
23 | #define AVUTIL_RIPEMD_H
24 |
25 | #include
26 |
27 | #include "attributes.h"
28 | #include "version.h"
29 |
30 | /**
31 | * @defgroup lavu_ripemd RIPEMD
32 | * @ingroup lavu_crypto
33 | * @{
34 | */
35 |
36 | extern const int av_ripemd_size;
37 |
38 | struct AVRIPEMD;
39 |
40 | /**
41 | * Allocate an AVRIPEMD context.
42 | */
43 | struct AVRIPEMD *av_ripemd_alloc(void);
44 |
45 | /**
46 | * Initialize RIPEMD hashing.
47 | *
48 | * @param context pointer to the function context (of size av_ripemd_size)
49 | * @param bits number of bits in digest (128, 160, 256 or 320 bits)
50 | * @return zero if initialization succeeded, -1 otherwise
51 | */
52 | int av_ripemd_init(struct AVRIPEMD* context, int bits);
53 |
54 | /**
55 | * Update hash value.
56 | *
57 | * @param context hash function context
58 | * @param data input data to update hash with
59 | * @param len input data length
60 | */
61 | void av_ripemd_update(struct AVRIPEMD* context, const uint8_t* data, unsigned int len);
62 |
63 | /**
64 | * Finish hashing and output digest value.
65 | *
66 | * @param context hash function context
67 | * @param digest buffer where output digest value is stored
68 | */
69 | void av_ripemd_final(struct AVRIPEMD* context, uint8_t *digest);
70 |
71 | /**
72 | * @}
73 | */
74 |
75 | #endif /* AVUTIL_RIPEMD_H */
76 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | #ifndef AVUTIL_SHA_H
22 | #define AVUTIL_SHA_H
23 |
24 | #include
25 |
26 | #include "attributes.h"
27 | #include "version.h"
28 |
29 | /**
30 | * @defgroup lavu_sha SHA
31 | * @ingroup lavu_crypto
32 | * @{
33 | */
34 |
35 | extern const int av_sha_size;
36 |
37 | struct AVSHA;
38 |
39 | /**
40 | * Allocate an AVSHA context.
41 | */
42 | struct AVSHA *av_sha_alloc(void);
43 |
44 | /**
45 | * Initialize SHA-1 or SHA-2 hashing.
46 | *
47 | * @param context pointer to the function context (of size av_sha_size)
48 | * @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits)
49 | * @return zero if initialization succeeded, -1 otherwise
50 | */
51 | int av_sha_init(struct AVSHA* context, int bits);
52 |
53 | /**
54 | * Update hash value.
55 | *
56 | * @param context hash function context
57 | * @param data input data to update hash with
58 | * @param len input data length
59 | */
60 | void av_sha_update(struct AVSHA* context, const uint8_t* data, unsigned int len);
61 |
62 | /**
63 | * Finish hashing and output digest value.
64 | *
65 | * @param context hash function context
66 | * @param digest buffer where output digest value is stored
67 | */
68 | void av_sha_final(struct AVSHA* context, uint8_t *digest);
69 |
70 | /**
71 | * @}
72 | */
73 |
74 | #endif /* AVUTIL_SHA_H */
75 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | #ifndef AVUTIL_SHA512_H
23 | #define AVUTIL_SHA512_H
24 |
25 | #include
26 |
27 | #include "attributes.h"
28 | #include "version.h"
29 |
30 | /**
31 | * @defgroup lavu_sha512 SHA512
32 | * @ingroup lavu_crypto
33 | * @{
34 | */
35 |
36 | extern const int av_sha512_size;
37 |
38 | struct AVSHA512;
39 |
40 | /**
41 | * Allocate an AVSHA512 context.
42 | */
43 | struct AVSHA512 *av_sha512_alloc(void);
44 |
45 | /**
46 | * Initialize SHA-2 512 hashing.
47 | *
48 | * @param context pointer to the function context (of size av_sha512_size)
49 | * @param bits number of bits in digest (224, 256, 384 or 512 bits)
50 | * @return zero if initialization succeeded, -1 otherwise
51 | */
52 | int av_sha512_init(struct AVSHA512* context, int bits);
53 |
54 | /**
55 | * Update hash value.
56 | *
57 | * @param context hash function context
58 | * @param data input data to update hash with
59 | * @param len input data length
60 | */
61 | void av_sha512_update(struct AVSHA512* context, const uint8_t* data, unsigned int len);
62 |
63 | /**
64 | * Finish hashing and output digest value.
65 | *
66 | * @param context hash function context
67 | * @param digest buffer where output digest value is stored
68 | */
69 | void av_sha512_final(struct AVSHA512* context, uint8_t *digest);
70 |
71 | /**
72 | * @}
73 | */
74 |
75 | #endif /* AVUTIL_SHA512_H */
76 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/time_x.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 | * Sleep for a period of time. Although the duration is expressed in
33 | * microseconds, the actual delay may be rounded to the precision of the
34 | * system timer.
35 | *
36 | * @param usec Number of microseconds to sleep.
37 | * @return zero on success or (negative) error code.
38 | */
39 | int av_usleep(unsigned usec);
40 |
41 | #endif /* AVUTIL_TIME_H */
42 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/timecode.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2006 Smartjog S.A.S, Baptiste Coudurier
3 | * Copyright (c) 2011-2012 Smartjog S.A.S, Clément Bœsch
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 | * Timecode helpers header
25 | */
26 |
27 | #ifndef AVUTIL_TIMECODE_H
28 | #define AVUTIL_TIMECODE_H
29 |
30 | #include
31 | #include "rational.h"
32 |
33 | #define AV_TIMECODE_STR_SIZE 16
34 |
35 | enum AVTimecodeFlag {
36 | AV_TIMECODE_FLAG_DROPFRAME = 1<<0, ///< timecode is drop frame
37 | AV_TIMECODE_FLAG_24HOURSMAX = 1<<1, ///< timecode wraps after 24 hours
38 | AV_TIMECODE_FLAG_ALLOWNEGATIVE = 1<<2, ///< negative time values are allowed
39 | };
40 |
41 | typedef struct {
42 | int start; ///< timecode frame start (first base frame number)
43 | uint32_t flags; ///< flags such as drop frame, +24 hours support, ...
44 | AVRational rate; ///< frame rate in rational form
45 | unsigned fps; ///< frame per second; must be consistent with the rate field
46 | } AVTimecode;
47 |
48 | /**
49 | * Adjust frame number for NTSC drop frame time code.
50 | *
51 | * @param framenum frame number to adjust
52 | * @param fps frame per second, 30 or 60
53 | * @return adjusted frame number
54 | * @warning adjustment is only valid in NTSC 29.97 and 59.94
55 | */
56 | int av_timecode_adjust_ntsc_framenum2(int framenum, int fps);
57 |
58 | /**
59 | * Convert frame number to SMPTE 12M binary representation.
60 | *
61 | * @param tc timecode data correctly initialized
62 | * @param framenum frame number
63 | * @return the SMPTE binary representation
64 | *
65 | * @note Frame number adjustment is automatically done in case of drop timecode,
66 | * you do NOT have to call av_timecode_adjust_ntsc_framenum2().
67 | * @note The frame number is relative to tc->start.
68 | * @note Color frame (CF), binary group flags (BGF) and biphase mark polarity
69 | * correction (PC) bits are set to zero.
70 | */
71 | uint32_t av_timecode_get_smpte_from_framenum(const AVTimecode *tc, int framenum);
72 |
73 | /**
74 | * Load timecode string in buf.
75 | *
76 | * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long
77 | * @param tc timecode data correctly initialized
78 | * @param framenum frame number
79 | * @return the buf parameter
80 | *
81 | * @note Timecode representation can be a negative timecode and have more than
82 | * 24 hours, but will only be honored if the flags are correctly set.
83 | * @note The frame number is relative to tc->start.
84 | */
85 | char *av_timecode_make_string(const AVTimecode *tc, char *buf, int framenum);
86 |
87 | /**
88 | * Get the timecode string from the SMPTE timecode format.
89 | *
90 | * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long
91 | * @param tcsmpte the 32-bit SMPTE timecode
92 | * @param prevent_df prevent the use of a drop flag when it is known the DF bit
93 | * is arbitrary
94 | * @return the buf parameter
95 | */
96 | char *av_timecode_make_smpte_tc_string(char *buf, uint32_t tcsmpte, int prevent_df);
97 |
98 | /**
99 | * Get the timecode string from the 25-bit timecode format (MPEG GOP format).
100 | *
101 | * @param buf destination buffer, must be at least AV_TIMECODE_STR_SIZE long
102 | * @param tc25bit the 25-bits timecode
103 | * @return the buf parameter
104 | */
105 | char *av_timecode_make_mpeg_tc_string(char *buf, uint32_t tc25bit);
106 |
107 | /**
108 | * Init a timecode struct with the passed parameters.
109 | *
110 | * @param log_ctx a pointer to an arbitrary struct of which the first field
111 | * is a pointer to an AVClass struct (used for av_log)
112 | * @param tc pointer to an allocated AVTimecode
113 | * @param rate frame rate in rational form
114 | * @param flags miscellaneous flags such as drop frame, +24 hours, ...
115 | * (see AVTimecodeFlag)
116 | * @param frame_start the first frame number
117 | * @return 0 on success, AVERROR otherwise
118 | */
119 | int av_timecode_init(AVTimecode *tc, AVRational rate, int flags, int frame_start, void *log_ctx);
120 |
121 | /**
122 | * Parse timecode representation (hh:mm:ss[:;.]ff).
123 | *
124 | * @param log_ctx a pointer to an arbitrary struct of which the first field is a
125 | * pointer to an AVClass struct (used for av_log).
126 | * @param tc pointer to an allocated AVTimecode
127 | * @param rate frame rate in rational form
128 | * @param str timecode string which will determine the frame start
129 | * @return 0 on success, AVERROR otherwise
130 | */
131 | int av_timecode_init_from_string(AVTimecode *tc, AVRational rate, const char *str, void *log_ctx);
132 |
133 | /**
134 | * Check if the timecode feature is available for the given frame rate
135 | *
136 | * @return 0 if supported, <0 otherwise
137 | */
138 | int av_timecode_check_frame_rate(AVRational rate);
139 |
140 | #endif /* AVUTIL_TIMECODE_H */
141 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | #define AV_TS_MAX_STRING_SIZE 32
30 |
31 | /**
32 | * Fill the provided buffer with a string containing a timestamp
33 | * representation.
34 | *
35 | * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE
36 | * @param ts the timestamp to represent
37 | * @return the buffer in input
38 | */
39 | static inline char *av_ts_make_string(char *buf, int64_t ts)
40 | {
41 | if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS");
42 | else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%" PRId64, ts);
43 | return buf;
44 | }
45 |
46 | /**
47 | * Convenience macro, the return value should be used only directly in
48 | * function arguments but never stand-alone.
49 | */
50 | #define av_ts2str(ts) av_ts_make_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts)
51 |
52 | /**
53 | * Fill the provided buffer with a string containing a timestamp time
54 | * representation.
55 | *
56 | * @param buf a buffer with size in bytes of at least AV_TS_MAX_STRING_SIZE
57 | * @param ts the timestamp to represent
58 | * @param tb the timebase of the timestamp
59 | * @return the buffer in input
60 | */
61 | static inline char *av_ts_make_time_string(char *buf, int64_t ts, AVRational *tb)
62 | {
63 | if (ts == AV_NOPTS_VALUE) snprintf(buf, AV_TS_MAX_STRING_SIZE, "NOPTS");
64 | else snprintf(buf, AV_TS_MAX_STRING_SIZE, "%.6g", av_q2d(*tb) * ts);
65 | return buf;
66 | }
67 |
68 | /**
69 | * Convenience macro, the return value should be used only directly in
70 | * function arguments but never stand-alone.
71 | */
72 | #define av_ts2timestr(ts, tb) av_ts_make_time_string((char[AV_TS_MAX_STRING_SIZE]){0}, ts, tb)
73 |
74 | #endif /* AVUTIL_TIMESTAMP_H */
75 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/include/libavutil/version.h:
--------------------------------------------------------------------------------
1 | /*
2 | * copyright (c) 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_VERSION_H
22 | #define AVUTIL_VERSION_H
23 |
24 | /**
25 | * @defgroup preproc_misc Preprocessor String Macros
26 | *
27 | * String manipulation macros
28 | *
29 | * @{
30 | */
31 |
32 | #define AV_STRINGIFY(s) AV_TOSTRING(s)
33 | #define AV_TOSTRING(s) #s
34 |
35 | #define AV_GLUE(a, b) a ## b
36 | #define AV_JOIN(a, b) AV_GLUE(a, b)
37 |
38 | #define AV_PRAGMA(s) _Pragma(#s)
39 |
40 | /**
41 | * @}
42 | */
43 |
44 | /**
45 | * @defgroup version_utils Library Version Macros
46 | *
47 | * Useful to check and match library version in order to maintain
48 | * backward compatibility.
49 | *
50 | * @{
51 | */
52 |
53 | #define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c)
54 | #define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c
55 | #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
56 |
57 | /**
58 | * @}
59 | */
60 |
61 |
62 | /**
63 | * @file
64 | * @ingroup lavu
65 | * Libavutil version macros
66 | */
67 |
68 | /**
69 | * @defgroup lavu_ver Version and Build diagnostics
70 | *
71 | * Macros and function useful to check at compiletime and at runtime
72 | * which version of libavutil is in use.
73 | *
74 | * @{
75 | */
76 |
77 | #define LIBAVUTIL_VERSION_MAJOR 52
78 | #define LIBAVUTIL_VERSION_MINOR 48
79 | #define LIBAVUTIL_VERSION_MICRO 100
80 |
81 | #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
82 | LIBAVUTIL_VERSION_MINOR, \
83 | LIBAVUTIL_VERSION_MICRO)
84 | #define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \
85 | LIBAVUTIL_VERSION_MINOR, \
86 | LIBAVUTIL_VERSION_MICRO)
87 | #define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT
88 |
89 | #define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
90 |
91 | /**
92 | * @}
93 | *
94 | * @defgroup depr_guards Deprecation guards
95 | * FF_API_* defines may be placed below to indicate public API that will be
96 | * dropped at a future version bump. The defines themselves are not part of
97 | * the public API and may change, break or disappear at any time.
98 | *
99 | * @{
100 | */
101 |
102 | #ifndef FF_API_GET_BITS_PER_SAMPLE_FMT
103 | #define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 53)
104 | #endif
105 | #ifndef FF_API_FIND_OPT
106 | #define FF_API_FIND_OPT (LIBAVUTIL_VERSION_MAJOR < 53)
107 | #endif
108 | #ifndef FF_API_OLD_AVOPTIONS
109 | #define FF_API_OLD_AVOPTIONS (LIBAVUTIL_VERSION_MAJOR < 53)
110 | #endif
111 | #ifndef FF_API_PIX_FMT
112 | #define FF_API_PIX_FMT (LIBAVUTIL_VERSION_MAJOR < 53)
113 | #endif
114 | #ifndef FF_API_CONTEXT_SIZE
115 | #define FF_API_CONTEXT_SIZE (LIBAVUTIL_VERSION_MAJOR < 53)
116 | #endif
117 | #ifndef FF_API_PIX_FMT_DESC
118 | #define FF_API_PIX_FMT_DESC (LIBAVUTIL_VERSION_MAJOR < 53)
119 | #endif
120 | #ifndef FF_API_AV_REVERSE
121 | #define FF_API_AV_REVERSE (LIBAVUTIL_VERSION_MAJOR < 53)
122 | #endif
123 | #ifndef FF_API_AUDIOCONVERT
124 | #define FF_API_AUDIOCONVERT (LIBAVUTIL_VERSION_MAJOR < 53)
125 | #endif
126 | #ifndef FF_API_CPU_FLAG_MMX2
127 | #define FF_API_CPU_FLAG_MMX2 (LIBAVUTIL_VERSION_MAJOR < 53)
128 | #endif
129 | #ifndef FF_API_SAMPLES_UTILS_RETURN_ZERO
130 | #define FF_API_SAMPLES_UTILS_RETURN_ZERO (LIBAVUTIL_VERSION_MAJOR < 53)
131 | #endif
132 | #ifndef FF_API_LLS_PRIVATE
133 | #define FF_API_LLS_PRIVATE (LIBAVUTIL_VERSION_MAJOR < 53)
134 | #endif
135 | #ifndef FF_API_AVFRAME_LAVC
136 | #define FF_API_AVFRAME_LAVC (LIBAVUTIL_VERSION_MAJOR < 53)
137 | #endif
138 | #ifndef FF_API_VDPAU
139 | #define FF_API_VDPAU (LIBAVUTIL_VERSION_MAJOR < 53)
140 | #endif
141 | #ifndef FF_API_GET_CHANNEL_LAYOUT_COMPAT
142 | #define FF_API_GET_CHANNEL_LAYOUT_COMPAT (LIBAVUTIL_VERSION_MAJOR < 53)
143 | #endif
144 |
145 | /**
146 | * @}
147 | */
148 |
149 | #endif /* AVUTIL_VERSION_H */
150 |
151 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 | * @defgroup lavu_xtea XTEA
29 | * @ingroup lavu_crypto
30 | * @{
31 | */
32 |
33 | typedef struct AVXTEA {
34 | uint32_t key[16];
35 | } AVXTEA;
36 |
37 | /**
38 | * Initialize an AVXTEA context.
39 | *
40 | * @param ctx an AVXTEA context
41 | * @param key a key of 16 bytes used for encryption/decryption
42 | */
43 | void av_xtea_init(struct AVXTEA *ctx, const uint8_t key[16]);
44 |
45 | /**
46 | * Encrypt or decrypt a buffer using a previously initialized context.
47 | *
48 | * @param ctx an AVXTEA context
49 | * @param dst destination array, can be equal to src
50 | * @param src source array, can be equal to dst
51 | * @param count number of 8 byte blocks
52 | * @param iv initialization vector for CBC mode, if NULL then ECB will be used
53 | * @param decrypt 0 for encryption, 1 for decryption
54 | */
55 | void av_xtea_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src,
56 | int count, uint8_t *iv, int decrypt);
57 |
58 | /**
59 | * @}
60 | */
61 |
62 | #endif /* AVUTIL_XTEA_H */
63 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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 SWR_VERSION_H
22 | #define SWR_VERSION_H
23 |
24 | /**
25 | * @file
26 | * Libswresample version macros
27 | */
28 |
29 | #include "libavutil/avutil.h"
30 |
31 | #define LIBSWRESAMPLE_VERSION_MAJOR 0
32 | #define LIBSWRESAMPLE_VERSION_MINOR 17
33 | #define LIBSWRESAMPLE_VERSION_MICRO 104
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 /* SWR_VERSION_H */
46 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/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/avutil.h"
28 |
29 | #define LIBSWSCALE_VERSION_MAJOR 2
30 | #define LIBSWSCALE_VERSION_MINOR 5
31 | #define LIBSWSCALE_VERSION_MICRO 101
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_GETCONTEXT
50 | #define FF_API_SWS_GETCONTEXT (LIBSWSCALE_VERSION_MAJOR < 3)
51 | #endif
52 | #ifndef FF_API_SWS_CPU_CAPS
53 | #define FF_API_SWS_CPU_CAPS (LIBSWSCALE_VERSION_MAJOR < 3)
54 | #endif
55 | #ifndef FF_API_SWS_FORMAT_NAME
56 | #define FF_API_SWS_FORMAT_NAME (LIBSWSCALE_VERSION_MAJOR < 3)
57 | #endif
58 |
59 | #endif /* SWSCALE_VERSION_H */
60 |
--------------------------------------------------------------------------------
/FFmpegDecoder/3rdparty/ffmpeg/lib/libffmpeg.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zhanxiaokai/iOS-FFmpegDecoder/940b2661dcb4ee270fb21911763f0f0ab4e74543/FFmpegDecoder/3rdparty/ffmpeg/lib/libffmpeg.a
--------------------------------------------------------------------------------
/FFmpegDecoder/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // FFmpegDecoder
4 | //
5 | // Created by apple on 2017/2/8.
6 | // Copyright © 2017年 xiaokai.zhan. 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 |
--------------------------------------------------------------------------------
/FFmpegDecoder/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // FFmpegDecoder
4 | //
5 | // Created by apple on 2017/2/8.
6 | // Copyright © 2017年 xiaokai.zhan. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 | #import "ViewController.h"
11 |
12 | @interface AppDelegate ()
13 |
14 | @end
15 |
16 | @implementation AppDelegate
17 |
18 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
19 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
20 | UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]];
21 | self.window.rootViewController = navigationController;
22 | [self.window makeKeyAndVisible];
23 | return YES;
24 | }
25 |
26 |
27 | - (void)applicationWillResignActive:(UIApplication *)application {
28 | // 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.
29 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
30 | }
31 |
32 |
33 | - (void)applicationDidEnterBackground:(UIApplication *)application {
34 | // 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.
35 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
36 | }
37 |
38 |
39 | - (void)applicationWillEnterForeground:(UIApplication *)application {
40 | // 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.
41 | }
42 |
43 |
44 | - (void)applicationDidBecomeActive:(UIApplication *)application {
45 | // 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.
46 | }
47 |
48 |
49 | - (void)applicationWillTerminate:(UIApplication *)application {
50 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
51 | }
52 |
53 |
54 | @end
55 |
--------------------------------------------------------------------------------
/FFmpegDecoder/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 | "info" : {
45 | "version" : 1,
46 | "author" : "xcode"
47 | }
48 | }
--------------------------------------------------------------------------------
/FFmpegDecoder/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 |
27 |
28 |
--------------------------------------------------------------------------------
/FFmpegDecoder/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UILaunchStoryboardName
24 | LaunchScreen
25 | UIRequiredDeviceCapabilities
26 |
27 | armv7
28 |
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/FFmpegDecoder/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // FFmpegDecoder
4 | //
5 | // Created by apple on 2017/2/8.
6 | // Copyright © 2017年 xiaokai.zhan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface ViewController : UIViewController
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/FFmpegDecoder/ViewController.mm:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // FFmpegDecoder
4 | //
5 | // Created by apple on 2017/2/8.
6 | // Copyright © 2017年 xiaokai.zhan. All rights reserved.
7 | //
8 |
9 | #import "ViewController.h"
10 | #import "accompany_decoder_controller.h"
11 | #import "CommonUtil.h"
12 |
13 | @interface ViewController ()
14 |
15 | @end
16 |
17 | @implementation ViewController
18 |
19 | - (void)viewDidLoad {
20 | [super viewDidLoad];
21 | // Do any additional setup after loading the view, typically from a nib.
22 | }
23 |
24 | - (IBAction)decode:(id)sender {
25 | NSLog(@"decode Test...");
26 | //由于我们在iOS平台编译的ffmpeg 没有打开mp3的decoder开关,但是打开了aac的 所以这里使用aac来做测试
27 | const char* mp3FilePath = [[CommonUtil bundlePath:@"131.aac"] cStringUsingEncoding:NSUTF8StringEncoding];
28 | const char *pcmFilePath = [[CommonUtil documentsPath:@"131.pcm"] cStringUsingEncoding:NSUTF8StringEncoding];
29 | AccompanyDecoderController* decoderController = new AccompanyDecoderController();
30 | decoderController->Init(mp3FilePath, pcmFilePath);
31 | decoderController->Decode();
32 | decoderController->Destroy();
33 | delete decoderController;
34 | NSLog(@"After decode Test...");
35 | }
36 |
37 | - (void)didReceiveMemoryWarning {
38 | [super didReceiveMemoryWarning];
39 | // Dispose of any resources that can be recreated.
40 | }
41 |
42 |
43 | @end
44 |
--------------------------------------------------------------------------------
/FFmpegDecoder/ViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/FFmpegDecoder/libffmpeg_decoder/accompany_decoder.h:
--------------------------------------------------------------------------------
1 | #ifndef ACCOMPANY_DECODER_H
2 | #define ACCOMPANY_DECODER_H
3 | #include
4 | #include
5 | #include
6 | #ifndef UINT64_C
7 | #define UINT64_C(value)__CONCAT(value,ULL)
8 | #endif
9 |
10 | #ifndef INT64_MIN
11 | #define INT64_MIN (-9223372036854775807LL - 1)
12 | #endif
13 |
14 | #ifndef INT64_MAX
15 | #define INT64_MAX 9223372036854775807LL
16 | #endif
17 |
18 | #define byte uint8_t
19 | #define MAX(a, b) (((a) > (b)) ? (a) : (b))
20 | #define MIN(a, b) (((a) < (b)) ? (a) : (b))
21 | #define LOGI(...) printf(" ");printf(__VA_ARGS__); printf("\t - <%s> \n", LOG_TAG);
22 |
23 | typedef struct AudioPacket {
24 |
25 | static const int AUDIO_PACKET_ACTION_PLAY = 0;
26 | static const int AUDIO_PACKET_ACTION_PAUSE = 100;
27 | static const int AUDIO_PACKET_ACTION_SEEK = 101;
28 |
29 | short * buffer;
30 | int size;
31 | float position;
32 | int action;
33 |
34 | float extra_param1;
35 | float extra_param2;
36 |
37 | AudioPacket() {
38 | buffer = NULL;
39 | size = 0;
40 | position = -1;
41 | action = 0;
42 | extra_param1 = 0;
43 | extra_param2 = 0;
44 | }
45 | ~AudioPacket() {
46 | // __android_log_print(ANDROID_LOG_ERROR, "~AudioPacket", "delete AudioPacket");
47 | if (NULL != buffer) {
48 | // __android_log_print(ANDROID_LOG_ERROR, "~AudioPacket", "buffer's addr is %x", buffer);
49 | // __android_log_print(ANDROID_LOG_ERROR, "~AudioPacket", "delete buffer ...");
50 | delete[] buffer;
51 | buffer = NULL;
52 | // __android_log_print(ANDROID_LOG_ERROR, "~AudioPacket", "delete buffer success");
53 | }
54 | // __android_log_print(ANDROID_LOG_ERROR, "~AudioPacket", "delete AudioPacket success");
55 | }
56 | } AudioPacket;
57 |
58 | extern "C" {
59 | #include "libavcodec/avcodec.h"
60 | #include "libavformat/avformat.h"
61 | #include "libavutil/avutil.h"
62 | #include "libavutil/samplefmt.h"
63 | #include "libavutil/common.h"
64 | #include "libavutil/channel_layout.h"
65 | #include "libavutil/opt.h"
66 | #include "libavutil/imgutils.h"
67 | #include "libavutil/mathematics.h"
68 | #include "libswscale/swscale.h"
69 | #include "libswresample/swresample.h"
70 | };
71 |
72 | #define OUT_PUT_CHANNELS 2
73 |
74 | class AccompanyDecoder {
75 | private:
76 | /** 如果使用了快进或者快退命令,则先设置以下参数 **/
77 | bool seek_req;
78 | bool seek_resp;
79 | float seek_seconds;
80 |
81 | float actualSeekPosition;
82 |
83 | AVFormatContext* avFormatContext;
84 | AVCodecContext * avCodecContext;
85 | int stream_index;
86 | float timeBase;
87 | AVFrame *pAudioFrame;
88 | AVPacket packet;
89 |
90 | char* accompanyFilePath;
91 |
92 | bool seek_success_read_frame_success;
93 | int packetBufferSize;
94 |
95 | /** 每次解码出来的audioBuffer以及这个audioBuffer的时间戳以及当前类对于这个audioBuffer的操作情况 **/
96 | short* audioBuffer;
97 | float position;
98 | int audioBufferCursor;
99 | int audioBufferSize;
100 | float duration;
101 | bool isNeedFirstFrameCorrectFlag;
102 | float firstFrameCorrectionInSecs;
103 |
104 | SwrContext *swrContext;
105 | void *swrBuffer;
106 | int swrBufferSize;
107 |
108 | int init(const char* fileString);
109 | int readSamples(short* samples, int size);
110 | int readFrame();
111 | bool audioCodecIsSupported();
112 |
113 | public:
114 | AccompanyDecoder();
115 | virtual ~AccompanyDecoder();
116 |
117 | //获取采样率以及比特率
118 | virtual int getMusicMeta(const char* fileString, int * metaData);
119 | //初始化这个decoder,即打开指定的mp3文件
120 | virtual void init(const char* fileString, int packetBufferSizeParam);
121 | virtual AudioPacket* decodePacket();
122 | //销毁这个decoder
123 | virtual void destroy();
124 | void setSeekReq(bool seekReqParam){
125 | seek_req = seekReqParam;
126 | if(seek_req){
127 | seek_resp = false;
128 | }
129 | };
130 | bool hasSeekReq() {
131 | return seek_req;
132 | };
133 | bool hasSeekResp() {
134 | return seek_resp;
135 | };
136 | /** 设置到播放到什么位置,单位是秒,但是后边3位小数,其实是精确到毫秒 **/
137 | void setPosition(float seconds) {
138 | actualSeekPosition = -1;
139 | this->seek_seconds = seconds;
140 | this->seek_req = true;
141 | this->seek_resp = false;
142 | };
143 |
144 | float getActualSeekPosition(){
145 | float ret = actualSeekPosition;
146 | if(ret != -1){
147 | actualSeekPosition = -1;
148 | }
149 | return ret;
150 | };
151 | virtual void seek_frame();
152 | };
153 | #endif //ACCOMPANY_DECODER_H
154 |
--------------------------------------------------------------------------------
/FFmpegDecoder/libffmpeg_decoder/accompany_decoder_controller.cpp:
--------------------------------------------------------------------------------
1 | #include "accompany_decoder_controller.h"
2 |
3 | #define LOG_TAG "AccompanyDecoderController"
4 |
5 | AccompanyDecoderController::AccompanyDecoderController() {
6 | accompanyDecoder = NULL;
7 | pcmFile = NULL;
8 | }
9 |
10 | AccompanyDecoderController::~AccompanyDecoderController() {
11 | }
12 |
13 | void AccompanyDecoderController::Init(const char* accompanyPath, const char* pcmFilePath) {
14 | //初始化两个decoder
15 | AccompanyDecoder* tempDecoder = new AccompanyDecoder();
16 | int accompanyMetaData[2];
17 | tempDecoder->getMusicMeta(accompanyPath, accompanyMetaData);
18 | delete tempDecoder;
19 | //初始化伴奏的采样率
20 | accompanySampleRate = accompanyMetaData[0];
21 | int accompanyByteCountPerSec = accompanySampleRate * CHANNEL_PER_FRAME * BITS_PER_CHANNEL / BITS_PER_BYTE;
22 | accompanyPacketBufferSize = (int) ((accompanyByteCountPerSec / 2) * 0.2);
23 | accompanyDecoder = new AccompanyDecoder();
24 | accompanyDecoder->init(accompanyPath, accompanyPacketBufferSize);
25 | pcmFile = fopen(pcmFilePath, "wb+");
26 | }
27 |
28 | void AccompanyDecoderController::Decode() {
29 | while(true) {
30 | AudioPacket* accompanyPacket = accompanyDecoder->decodePacket();
31 | if(-1 == accompanyPacket->size) {
32 | break;
33 | }
34 | fwrite(accompanyPacket->buffer, sizeof(short), accompanyPacket->size, pcmFile);
35 | }
36 | }
37 |
38 | void AccompanyDecoderController::Destroy() {
39 | if (NULL != accompanyDecoder) {
40 | accompanyDecoder->destroy();
41 | delete accompanyDecoder;
42 | accompanyDecoder = NULL;
43 | }
44 | if(NULL != pcmFile) {
45 | fclose(pcmFile);
46 | pcmFile = NULL;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/FFmpegDecoder/libffmpeg_decoder/accompany_decoder_controller.h:
--------------------------------------------------------------------------------
1 | #ifndef ACCOMPANY_DECODER_CONTROLLER_H
2 | #define ACCOMPANY_DECODER_CONTROLLER_H
3 |
4 | #include
5 | #include "accompany_decoder.h"
6 |
7 | #define CHANNEL_PER_FRAME 2
8 | #define BITS_PER_CHANNEL 16
9 | #define BITS_PER_BYTE 8
10 | /** decode data to queue and queue size **/
11 | #define QUEUE_SIZE_MAX_THRESHOLD 25
12 | #define QUEUE_SIZE_MIN_THRESHOLD 20
13 | class AccompanyDecoderController {
14 | protected:
15 | FILE* pcmFile;
16 |
17 | /** 伴奏的解码器 **/
18 | AccompanyDecoder* accompanyDecoder;
19 |
20 | /** 伴奏和原唱的采样频率与解码伴奏和原唱的每个packet的大小 **/
21 | int accompanySampleRate;
22 | int accompanyPacketBufferSize;
23 | public:
24 | AccompanyDecoderController();
25 | ~AccompanyDecoderController();
26 |
27 | /** 初始两个decoder,并且根据上一步算出的采样率,计算出伴奏和原唱的bufferSize **/
28 | void Init(const char* accompanyPath, const char* pcmFilePath);
29 | /** 解码操作 **/
30 | void Decode();
31 | /** 销毁这个controller **/
32 | void Destroy();
33 | };
34 | #endif //ACCOMPANY_DECODER_CONTROLLER_H
35 |
--------------------------------------------------------------------------------
/FFmpegDecoder/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // FFmpegDecoder
4 | //
5 | // Created by apple on 2017/2/8.
6 | // Copyright © 2017年 xiaokai.zhan. 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 |
--------------------------------------------------------------------------------
/FFmpegDecoder/utils/CommonUtil.h:
--------------------------------------------------------------------------------
1 | //
2 | // CommonUtil.h
3 | // video_player
4 | //
5 | // Created by apple on 16/8/25.
6 | // Copyright © 2016年 xiaokai.zhan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface CommonUtil : NSObject
12 |
13 | +(NSString *)bundlePath:(NSString *)fileName;
14 |
15 | +(NSString *)documentsPath:(NSString *)fileName;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/FFmpegDecoder/utils/CommonUtil.m:
--------------------------------------------------------------------------------
1 | //
2 | // CommonUtil.m
3 | // video_player
4 | //
5 | // Created by apple on 16/8/25.
6 | // Copyright © 2016年 xiaokai.zhan. All rights reserved.
7 | //
8 |
9 | #import "CommonUtil.h"
10 |
11 | @implementation CommonUtil
12 |
13 | +(NSString *)bundlePath:(NSString *)fileName {
14 | return [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:fileName];
15 | }
16 |
17 | +(NSString *)documentsPath:(NSString *)fileName {
18 | NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
19 | NSString *documentsDirectory = [paths objectAtIndex:0];
20 | return [documentsDirectory stringByAppendingPathComponent:fileName];
21 | }
22 |
23 | @end
24 |
--------------------------------------------------------------------------------
/FFmpegDecoderTests/FFmpegDecoderTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // FFmpegDecoderTests.m
3 | // FFmpegDecoderTests
4 | //
5 | // Created by apple on 2017/2/8.
6 | // Copyright © 2017年 xiaokai.zhan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FFmpegDecoderTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation FFmpegDecoderTests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 | // Put setup code here. This method is called before the invocation of each test method in the class.
20 | }
21 |
22 | - (void)tearDown {
23 | // Put teardown code here. This method is called after the invocation of each test method in the class.
24 | [super tearDown];
25 | }
26 |
27 | - (void)testExample {
28 | // This is an example of a functional test case.
29 | // Use XCTAssert and related functions to verify your tests produce the correct results.
30 | }
31 |
32 | - (void)testPerformanceExample {
33 | // This is an example of a performance test case.
34 | [self measureBlock:^{
35 | // Put the code you want to measure the time of here.
36 | }];
37 | }
38 |
39 | @end
40 |
--------------------------------------------------------------------------------
/FFmpegDecoderTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/FFmpegDecoderUITests/FFmpegDecoderUITests.m:
--------------------------------------------------------------------------------
1 | //
2 | // FFmpegDecoderUITests.m
3 | // FFmpegDecoderUITests
4 | //
5 | // Created by apple on 2017/2/8.
6 | // Copyright © 2017年 xiaokai.zhan. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface FFmpegDecoderUITests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation FFmpegDecoderUITests
16 |
17 | - (void)setUp {
18 | [super setUp];
19 |
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 |
22 | // In UI tests it is usually best to stop immediately when a failure occurs.
23 | self.continueAfterFailure = NO;
24 | // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.
25 | [[[XCUIApplication alloc] init] launch];
26 |
27 | // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
28 | }
29 |
30 | - (void)tearDown {
31 | // Put teardown code here. This method is called after the invocation of each test method in the class.
32 | [super tearDown];
33 | }
34 |
35 | - (void)testExample {
36 | // Use recording to get started writing UI tests.
37 | // Use XCTAssert and related functions to verify your tests produce the correct results.
38 | }
39 |
40 | @end
41 |
--------------------------------------------------------------------------------
/FFmpegDecoderUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------