@pproenca/ffmpeg-darwin-x64 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/LICENSE +28 -0
  2. package/lib/libSvtAv1Enc.a +0 -0
  3. package/lib/libaom.a +0 -0
  4. package/lib/libavcodec.a +0 -0
  5. package/lib/libavdevice.a +0 -0
  6. package/lib/libavfilter.a +0 -0
  7. package/lib/libavformat.a +0 -0
  8. package/lib/libavutil.a +0 -0
  9. package/lib/libdav1d.a +0 -0
  10. package/lib/libogg.a +0 -0
  11. package/lib/libopus.a +0 -0
  12. package/lib/libswresample.a +0 -0
  13. package/lib/libswscale.a +0 -0
  14. package/lib/libvorbis.a +0 -0
  15. package/lib/libvorbisenc.a +0 -0
  16. package/lib/libvorbisfile.a +0 -0
  17. package/lib/libvpx.a +0 -0
  18. package/lib/pkgconfig/SvtAv1Enc.pc +12 -0
  19. package/lib/pkgconfig/aom.pc +14 -0
  20. package/lib/pkgconfig/dav1d.pc +9 -0
  21. package/lib/pkgconfig/libavcodec.pc +14 -0
  22. package/lib/pkgconfig/libavdevice.pc +14 -0
  23. package/lib/pkgconfig/libavfilter.pc +14 -0
  24. package/lib/pkgconfig/libavformat.pc +14 -0
  25. package/lib/pkgconfig/libavutil.pc +14 -0
  26. package/lib/pkgconfig/libswresample.pc +14 -0
  27. package/lib/pkgconfig/libswscale.pc +14 -0
  28. package/lib/pkgconfig/ogg.pc +14 -0
  29. package/lib/pkgconfig/opus.pc +16 -0
  30. package/lib/pkgconfig/vorbis.pc +15 -0
  31. package/lib/pkgconfig/vorbisenc.pc +14 -0
  32. package/lib/pkgconfig/vorbisfile.pc +14 -0
  33. package/lib/pkgconfig/vpx.pc +14 -0
  34. package/package.json +2 -3
  35. package/include/aom/aom.h +0 -127
  36. package/include/aom/aom_codec.h +0 -594
  37. package/include/aom/aom_decoder.h +0 -257
  38. package/include/aom/aom_encoder.h +0 -1154
  39. package/include/aom/aom_external_partition.h +0 -452
  40. package/include/aom/aom_frame_buffer.h +0 -84
  41. package/include/aom/aom_image.h +0 -462
  42. package/include/aom/aom_integer.h +0 -60
  43. package/include/aom/aomcx.h +0 -2288
  44. package/include/aom/aomdx.h +0 -607
  45. package/include/dav1d/common.h +0 -94
  46. package/include/dav1d/data.h +0 -117
  47. package/include/dav1d/dav1d.h +0 -329
  48. package/include/dav1d/headers.h +0 -444
  49. package/include/dav1d/picture.h +0 -157
  50. package/include/dav1d/version.h +0 -50
  51. package/include/libavcodec/ac3_parser.h +0 -36
  52. package/include/libavcodec/adts_parser.h +0 -37
  53. package/include/libavcodec/avcodec.h +0 -3128
  54. package/include/libavcodec/avdct.h +0 -88
  55. package/include/libavcodec/avfft.h +0 -149
  56. package/include/libavcodec/bsf.h +0 -332
  57. package/include/libavcodec/codec.h +0 -382
  58. package/include/libavcodec/codec_desc.h +0 -134
  59. package/include/libavcodec/codec_id.h +0 -669
  60. package/include/libavcodec/codec_par.h +0 -248
  61. package/include/libavcodec/d3d11va.h +0 -109
  62. package/include/libavcodec/defs.h +0 -337
  63. package/include/libavcodec/dirac.h +0 -135
  64. package/include/libavcodec/dv_profile.h +0 -82
  65. package/include/libavcodec/dxva2.h +0 -90
  66. package/include/libavcodec/jni.h +0 -67
  67. package/include/libavcodec/mediacodec.h +0 -103
  68. package/include/libavcodec/packet.h +0 -887
  69. package/include/libavcodec/qsv.h +0 -109
  70. package/include/libavcodec/vdpau.h +0 -171
  71. package/include/libavcodec/version.h +0 -45
  72. package/include/libavcodec/version_major.h +0 -52
  73. package/include/libavcodec/videotoolbox.h +0 -85
  74. package/include/libavcodec/vorbis_parser.h +0 -74
  75. package/include/libavdevice/avdevice.h +0 -397
  76. package/include/libavdevice/version.h +0 -45
  77. package/include/libavdevice/version_major.h +0 -43
  78. package/include/libavfilter/avfilter.h +0 -1379
  79. package/include/libavfilter/buffersink.h +0 -173
  80. package/include/libavfilter/buffersrc.h +0 -215
  81. package/include/libavfilter/version.h +0 -48
  82. package/include/libavfilter/version_major.h +0 -40
  83. package/include/libavformat/avformat.h +0 -3107
  84. package/include/libavformat/avio.h +0 -831
  85. package/include/libavformat/version.h +0 -47
  86. package/include/libavformat/version_major.h +0 -54
  87. package/include/libavutil/adler32.h +0 -63
  88. package/include/libavutil/aes.h +0 -69
  89. package/include/libavutil/aes_ctr.h +0 -99
  90. package/include/libavutil/ambient_viewing_environment.h +0 -72
  91. package/include/libavutil/attributes.h +0 -173
  92. package/include/libavutil/audio_fifo.h +0 -187
  93. package/include/libavutil/avassert.h +0 -78
  94. package/include/libavutil/avconfig.h +0 -6
  95. package/include/libavutil/avstring.h +0 -428
  96. package/include/libavutil/avutil.h +0 -362
  97. package/include/libavutil/base64.h +0 -72
  98. package/include/libavutil/blowfish.h +0 -82
  99. package/include/libavutil/bprint.h +0 -254
  100. package/include/libavutil/bswap.h +0 -105
  101. package/include/libavutil/buffer.h +0 -322
  102. package/include/libavutil/camellia.h +0 -70
  103. package/include/libavutil/cast5.h +0 -80
  104. package/include/libavutil/channel_layout.h +0 -751
  105. package/include/libavutil/common.h +0 -589
  106. package/include/libavutil/cpu.h +0 -145
  107. package/include/libavutil/crc.h +0 -102
  108. package/include/libavutil/csp.h +0 -150
  109. package/include/libavutil/des.h +0 -81
  110. package/include/libavutil/detection_bbox.h +0 -108
  111. package/include/libavutil/dict.h +0 -241
  112. package/include/libavutil/display.h +0 -109
  113. package/include/libavutil/dovi_meta.h +0 -396
  114. package/include/libavutil/downmix_info.h +0 -115
  115. package/include/libavutil/encryption_info.h +0 -205
  116. package/include/libavutil/error.h +0 -129
  117. package/include/libavutil/eval.h +0 -140
  118. package/include/libavutil/executor.h +0 -67
  119. package/include/libavutil/ffversion.h +0 -5
  120. package/include/libavutil/fifo.h +0 -242
  121. package/include/libavutil/file.h +0 -62
  122. package/include/libavutil/film_grain_params.h +0 -322
  123. package/include/libavutil/frame.h +0 -1175
  124. package/include/libavutil/hash.h +0 -264
  125. package/include/libavutil/hdr_dynamic_metadata.h +0 -376
  126. package/include/libavutil/hdr_dynamic_vivid_metadata.h +0 -346
  127. package/include/libavutil/hmac.h +0 -99
  128. package/include/libavutil/hwcontext.h +0 -598
  129. package/include/libavutil/hwcontext_cuda.h +0 -74
  130. package/include/libavutil/hwcontext_d3d11va.h +0 -178
  131. package/include/libavutil/hwcontext_d3d12va.h +0 -142
  132. package/include/libavutil/hwcontext_drm.h +0 -169
  133. package/include/libavutil/hwcontext_dxva2.h +0 -75
  134. package/include/libavutil/hwcontext_mediacodec.h +0 -61
  135. package/include/libavutil/hwcontext_opencl.h +0 -100
  136. package/include/libavutil/hwcontext_qsv.h +0 -87
  137. package/include/libavutil/hwcontext_vaapi.h +0 -117
  138. package/include/libavutil/hwcontext_vdpau.h +0 -44
  139. package/include/libavutil/hwcontext_videotoolbox.h +0 -106
  140. package/include/libavutil/hwcontext_vulkan.h +0 -382
  141. package/include/libavutil/iamf.h +0 -690
  142. package/include/libavutil/imgutils.h +0 -377
  143. package/include/libavutil/intfloat.h +0 -77
  144. package/include/libavutil/intreadwrite.h +0 -677
  145. package/include/libavutil/lfg.h +0 -81
  146. package/include/libavutil/log.h +0 -387
  147. package/include/libavutil/lzo.h +0 -66
  148. package/include/libavutil/macros.h +0 -80
  149. package/include/libavutil/mastering_display_metadata.h +0 -137
  150. package/include/libavutil/mathematics.h +0 -300
  151. package/include/libavutil/md5.h +0 -89
  152. package/include/libavutil/mem.h +0 -607
  153. package/include/libavutil/motion_vector.h +0 -57
  154. package/include/libavutil/murmur3.h +0 -115
  155. package/include/libavutil/opt.h +0 -1187
  156. package/include/libavutil/parseutils.h +0 -197
  157. package/include/libavutil/pixdesc.h +0 -440
  158. package/include/libavutil/pixelutils.h +0 -51
  159. package/include/libavutil/pixfmt.h +0 -716
  160. package/include/libavutil/random_seed.h +0 -57
  161. package/include/libavutil/rational.h +0 -225
  162. package/include/libavutil/rc4.h +0 -69
  163. package/include/libavutil/replaygain.h +0 -50
  164. package/include/libavutil/ripemd.h +0 -83
  165. package/include/libavutil/samplefmt.h +0 -269
  166. package/include/libavutil/sha.h +0 -90
  167. package/include/libavutil/sha512.h +0 -92
  168. package/include/libavutil/spherical.h +0 -243
  169. package/include/libavutil/stereo3d.h +0 -325
  170. package/include/libavutil/tea.h +0 -71
  171. package/include/libavutil/threadmessage.h +0 -115
  172. package/include/libavutil/time.h +0 -56
  173. package/include/libavutil/timecode.h +0 -199
  174. package/include/libavutil/timestamp.h +0 -85
  175. package/include/libavutil/tree.h +0 -137
  176. package/include/libavutil/twofish.h +0 -70
  177. package/include/libavutil/tx.h +0 -210
  178. package/include/libavutil/uuid.h +0 -146
  179. package/include/libavutil/version.h +0 -124
  180. package/include/libavutil/video_enc_params.h +0 -171
  181. package/include/libavutil/video_hint.h +0 -107
  182. package/include/libavutil/xtea.h +0 -94
  183. package/include/libswresample/swresample.h +0 -587
  184. package/include/libswresample/version.h +0 -46
  185. package/include/libswresample/version_major.h +0 -31
  186. package/include/libswscale/swscale.h +0 -460
  187. package/include/libswscale/version.h +0 -44
  188. package/include/libswscale/version_major.h +0 -35
  189. package/include/ogg/config_types.h +0 -26
  190. package/include/ogg/ogg.h +0 -209
  191. package/include/ogg/os_types.h +0 -158
  192. package/include/opus/opus.h +0 -1099
  193. package/include/opus/opus_defines.h +0 -830
  194. package/include/opus/opus_multistream.h +0 -660
  195. package/include/opus/opus_projection.h +0 -568
  196. package/include/opus/opus_types.h +0 -166
  197. package/include/svt-av1/EbDebugMacros.h +0 -88
  198. package/include/svt-av1/EbSvtAv1.h +0 -462
  199. package/include/svt-av1/EbSvtAv1Enc.h +0 -1112
  200. package/include/svt-av1/EbSvtAv1ErrorCodes.h +0 -67
  201. package/include/svt-av1/EbSvtAv1ExtFrameBuf.h +0 -64
  202. package/include/svt-av1/EbSvtAv1Formats.h +0 -126
  203. package/include/svt-av1/EbSvtAv1Metadata.h +0 -156
  204. package/include/vorbis/codec.h +0 -242
  205. package/include/vorbis/vorbisenc.h +0 -435
  206. package/include/vorbis/vorbisfile.h +0 -205
  207. package/include/vpx/vp8.h +0 -136
  208. package/include/vpx/vp8cx.h +0 -1118
  209. package/include/vpx/vp8dx.h +0 -228
  210. package/include/vpx/vpx_codec.h +0 -475
  211. package/include/vpx/vpx_decoder.h +0 -367
  212. package/include/vpx/vpx_encoder.h +0 -1150
  213. package/include/vpx/vpx_ext_ratectrl.h +0 -590
  214. package/include/vpx/vpx_frame_buffer.h +0 -83
  215. package/include/vpx/vpx_image.h +0 -221
  216. package/include/vpx/vpx_integer.h +0 -40
  217. package/include/vpx/vpx_tpl.h +0 -68
  218. /package/{include → lib/pkgconfig}/index.js +0 -0
@@ -1,1112 +0,0 @@
1
- /*
2
- * Copyright(c) 2019 Intel Corporation
3
- *
4
- * This source code is subject to the terms of the BSD 3-Clause Clear License and
5
- * the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear License
6
- * was not distributed with this source code in the LICENSE file, you can
7
- * obtain it at https://www.aomedia.org/license. If the Alliance for Open
8
- * Media Patent License 1.0 was not distributed with this source code in the
9
- * PATENTS file, you can obtain it at https://www.aomedia.org/license/patent-license.
10
- */
11
-
12
- #ifndef EbSvtAv1Enc_h
13
- #define EbSvtAv1Enc_h
14
-
15
- #ifdef __cplusplus
16
- extern "C" {
17
- #endif // __cplusplus
18
-
19
- #include <stdint.h>
20
- #include "EbSvtAv1.h"
21
- #include <stdlib.h>
22
- #include <stdio.h>
23
-
24
- /**
25
- * @brief SVT-AV1 encoder ABI version
26
- *
27
- * Should be increased by 1 everytime a public struct in the encoder
28
- * has been modified, and reset anytime the major API version has
29
- * been changed. Used to keep track if a field has been added or not.
30
- */
31
- #define SVT_AV1_ENC_ABI_VERSION 0
32
-
33
- //***HME***
34
-
35
- #define MAX_HIERARCHICAL_LEVEL 6
36
- #define REF_LIST_MAX_DEPTH 4
37
- /*!\brief Decorator indicating that given struct/union/enum is packed */
38
- #ifndef ATTRIBUTE_PACKED
39
- #if defined(__GNUC__) && __GNUC__
40
- #define ATTRIBUTE_PACKED __attribute__((packed))
41
- #else
42
- #define ATTRIBUTE_PACKED
43
- #endif
44
- #endif /* ATTRIBUTE_PACKED */
45
- typedef enum ATTRIBUTE_PACKED {
46
- ENC_MR = -1, //Research mode with higher quality than M0
47
- ENC_M0 = 0,
48
- ENC_M1 = 1,
49
- ENC_M2 = 2,
50
- ENC_M3 = 3,
51
- ENC_M4 = 4,
52
- ENC_M5 = 5,
53
- ENC_M6 = 6,
54
- ENC_M7 = 7,
55
- ENC_M8 = 8,
56
- ENC_M9 = 9,
57
- ENC_M10 = 10,
58
- ENC_M11 = 11,
59
- ENC_M12 = 12,
60
- ENC_M13 = 13,
61
- MAX_ENC_PRESET = ENC_M13
62
- } EncMode;
63
-
64
- #define DEFAULT -1
65
-
66
- #define EB_BUFFERFLAG_EOS 0x00000001 // signals the last packet of the stream
67
- #define EB_BUFFERFLAG_SHOW_EXT 0x00000002 // signals that the packet contains a show existing frame at the end
68
- #define EB_BUFFERFLAG_HAS_TD 0x00000004 // signals that the packet contains a TD
69
- #define EB_BUFFERFLAG_IS_ALT_REF 0x00000008 // signals that the packet contains an ALT_REF frame
70
- #define EB_BUFFERFLAG_ERROR_MASK \
71
- 0xFFFFFFF0 // mask for signalling error assuming top flags fit in 4 bits. To be changed, if more flags are added.
72
-
73
- /*
74
- * Struct for storing content light level information
75
- * Values are stored in BE format
76
- * Refer to the AV1 specification 6.7.3 for more details
77
- */
78
- struct EbContentLightLevel {
79
- uint16_t max_cll;
80
- uint16_t max_fall;
81
- };
82
-
83
- /*
84
- * Struct for storing x and y chroma points, values are stored in BE format
85
- */
86
- struct EbSvtAv1ChromaPoints {
87
- uint16_t x;
88
- uint16_t y;
89
- };
90
-
91
- /*
92
- * Struct for storing mastering-display information
93
- * values are stored in BE format
94
- * Refer to the AV1 specification 6.7.4 for more details
95
- */
96
- struct EbSvtAv1MasteringDisplayInfo {
97
- struct EbSvtAv1ChromaPoints r;
98
- struct EbSvtAv1ChromaPoints g;
99
- struct EbSvtAv1ChromaPoints b;
100
- struct EbSvtAv1ChromaPoints white_point;
101
- uint32_t max_luma;
102
- uint32_t min_luma;
103
- };
104
-
105
- /************************************************
106
- * Prediction Structure Config Entry
107
- * Contains the basic reference lists and
108
- * configurations for each Prediction Structure
109
- * Config Entry.
110
- ************************************************/
111
- typedef struct PredictionStructureConfigEntry {
112
- uint32_t temporal_layer_index;
113
- uint32_t decode_order;
114
- } PredictionStructureConfigEntry;
115
-
116
- // super-res modes
117
- typedef enum {
118
- SUPERRES_NONE, // No frame superres allowed.
119
- SUPERRES_FIXED, // All frames are coded at the specified scale, and super-resolved.
120
- SUPERRES_RANDOM, // All frames are coded at a random scale, and super-resolved.
121
- SUPERRES_QTHRESH, // Superres scale for a frame is determined based on q_index.
122
- SUPERRES_AUTO, // Automatically select superres for appropriate frames.
123
- SUPERRES_MODES
124
- } SUPERRES_MODE;
125
-
126
- // super-res auto search type
127
- typedef enum {
128
- SUPERRES_AUTO_ALL, // Tries all possible superres ratios
129
- SUPERRES_AUTO_DUAL, // Tries no superres and q-based superres ratios
130
- SUPERRES_AUTO_SOLO, // Only apply the q-based superres ratio
131
- SUPERRES_AUTO_SEARCH_TYPES
132
- } SUPERRES_AUTO_SEARCH_TYPE;
133
-
134
- // reference scaling modes
135
- typedef enum {
136
- RESIZE_NONE, // No frame resize allowed.
137
- RESIZE_FIXED, // All frames are coded at the specified scale.
138
- RESIZE_RANDOM, // All frames are coded at a random scale.
139
- RESIZE_DYNAMIC, // Resize scale for a frame in dynamic.
140
- RESIZE_RANDOM_ACCESS, // Resize scale frame by event in random access
141
- RESIZE_MODES
142
- } RESIZE_MODE;
143
-
144
- /** The SvtAv1IntraRefreshType is used to describe the intra refresh type.
145
- */
146
- typedef enum SvtAv1IntraRefreshType {
147
- SVT_AV1_FWDKF_REFRESH = 1,
148
- SVT_AV1_KF_REFRESH = 2,
149
- } SvtAv1IntraRefreshType;
150
-
151
- typedef enum {
152
- SVT_AV1_STREAM_INFO_START = 1,
153
- SVT_AV1_STREAM_INFO_FIRST_PASS_STATS_OUT = SVT_AV1_STREAM_INFO_START,
154
-
155
- SVT_AV1_STREAM_INFO_END,
156
- } SVT_AV1_STREAM_INFO_ID;
157
-
158
- /*!\brief Generic fixed size buffer structure
159
- *
160
- * This structure is able to hold a reference to any fixed size buffer.
161
- */
162
- typedef struct SvtAv1FixedBuf {
163
- void *buf; /**< Pointer to the data. Does NOT own the data! */
164
- uint64_t sz; /**< Length of the buffer, in chars */
165
- } SvtAv1FixedBuf; /**< alias for struct aom_fixed_buf */
166
-
167
- /** Indicates how an S-Frame should be inserted.
168
- */
169
- typedef enum EbSFrameMode {
170
- SFRAME_STRICT_BASE =
171
- 1, /**< The considered frame will be made into an S-Frame only if it is a base layer inter frame */
172
- SFRAME_NEAREST_BASE =
173
- 2, /**< If the considered frame is not an altref frame, the next base layer inter frame will be made into an S-Frame */
174
- } EbSFrameMode;
175
-
176
- /* Indicates what prediction structure to use
177
- * was PredStructure in definitions.h
178
- * Only SVT_AV1_PRED_LOW_DELAY_B and SVT_AV1_PRED_RANDOM_ACCESS are valid
179
- */
180
- typedef enum SvtAv1PredStructure {
181
- SVT_AV1_PRED_LOW_DELAY_P = 0, // No longer active
182
- SVT_AV1_PRED_LOW_DELAY_B = 1,
183
- SVT_AV1_PRED_RANDOM_ACCESS = 2,
184
- SVT_AV1_PRED_TOTAL_COUNT = 3,
185
- SVT_AV1_PRED_INVALID = 0xFF,
186
- } SvtAv1PredStructure;
187
-
188
- /* Indicates what rate control mode is used.
189
- * Currently, cqp is distinguised by setting enable_adaptive_quantization to 0
190
- */
191
- typedef enum SvtAv1RcMode {
192
- SVT_AV1_RC_MODE_CQP_OR_CRF = 0, // constant quantization parameter/constant rate factor
193
- SVT_AV1_RC_MODE_VBR = 1, // variable bit rate
194
- SVT_AV1_RC_MODE_CBR = 2, // constant bit rate
195
- } SvtAv1RcMode;
196
-
197
- typedef enum SvtAv1FrameUpdateType {
198
- SVT_AV1_KF_UPDATE,
199
- SVT_AV1_LF_UPDATE,
200
- SVT_AV1_GF_UPDATE,
201
- SVT_AV1_ARF_UPDATE,
202
- SVT_AV1_OVERLAY_UPDATE,
203
- SVT_AV1_INTNL_OVERLAY_UPDATE, // Internal Overlay Frame
204
- SVT_AV1_INTNL_ARF_UPDATE, // Internal Altref Frame
205
- SVT_AV1_FRAME_UPDATE_TYPES
206
- } SvtAv1FrameUpdateType;
207
-
208
- typedef struct SvtAv1FrameScaleEvts {
209
- uint32_t evt_num;
210
- uint64_t *start_frame_nums;
211
- uint32_t *resize_kf_denoms;
212
- uint32_t *resize_denoms;
213
- } SvtAv1FrameScaleEvts;
214
-
215
- // Will contain the EbEncApi which will live in the EncHandle class
216
- // Only modifiable during config-time.
217
- typedef struct EbSvtAv1EncConfiguration {
218
- /**
219
- * @brief Encoder preset used.
220
- * -2 and -1 are for debug purposes and should not be used.
221
- * 0 is the highest quality mode but is the slowest,
222
- * 13 is the fastest mode but is not as high quality.
223
- *
224
- * Min value is -2.
225
- * Max value is 13.
226
- * Default is 12.
227
- */
228
- int8_t enc_mode;
229
-
230
- // GOP Structure
231
-
232
- /* The intra period defines the interval of frames after which you insert an
233
- * Intra refresh. It is strongly recommended to set the value to multiple of
234
- * 2^(hierarchical_levels), subtracting one if using open GOP (intra_refresh_type == 1).
235
- * For instance, to get a 5-second GOP (default being >=5 seconds)
236
- * with hierarchical_levels = 3 and open GOP you could use 319, 279, 159
237
- * for 60, 50, or 30 respectively.
238
- *
239
- * -1 = no intra update.
240
- * -2 = auto.
241
- *
242
- * Default is -2. */
243
- int32_t intra_period_length;
244
-
245
- /* Random access.
246
- *
247
- * 1 = CRA, open GOP.
248
- * 2 = IDR, closed GOP.
249
- *
250
- * Default is 1. */
251
- SvtAv1IntraRefreshType intra_refresh_type;
252
-
253
- /* Number of hierarchical layers used to construct GOP.
254
- * Minigop size = 2^HierarchicalLevels.
255
- *
256
- * Default is 5 upt to M12 4, for M13. */
257
- uint32_t hierarchical_levels;
258
-
259
- /* Prediction structure used to construct GOP. There are two main structures
260
- * supported, which are: Low Delay (P or B) and Random Access.
261
- *
262
- * In Low Delay structure, pictures within a mini GOP refer to the previously
263
- * encoded pictures in display order. In other words, pictures with display
264
- * order N can only be referenced by pictures with display order greater than
265
- * N, and it can only refer pictures with picture order lower than N. The Low
266
- * Delay structure can be flat structured (e.g. IPPPPPPP...) or hierarchically
267
- * structured. B/b pictures can be used instead of P/p pictures. However, the
268
- * reference picture list 0 and the reference picture list 1 will contain the
269
- * same reference picture.
270
- *
271
- * In Random Access structure, the B/b pictures can refer to reference pictures
272
- * from both directions (past and future).
273
- *
274
- * Refer to SvtAv1PredStructure enum for valid values.
275
- *
276
- * Default is SVT_AV1_PRED_RANDOM_ACCESS. */
277
- uint8_t pred_structure;
278
-
279
- // Input Info
280
-
281
- /**
282
- * @brief Frame width in pixels.
283
- *
284
- * Min is 64.
285
- * Max is 16384.
286
- * Default is 0.
287
- */
288
- uint32_t source_width;
289
-
290
- /**
291
- * @brief Frame height in pixels
292
- *
293
- * Min is 64.
294
- * Max is 8704.
295
- * Default is 0.
296
- */
297
- uint32_t source_height;
298
-
299
- /* Specifies the maximum frame width/height for the frames represented by the sequence header
300
- * (max_frame_width_minus_1 and max_frame_height_minus_1, spec 5.5.1).
301
- * Actual frame height could be equal to or less than this value. E.g. Use this value to indicate
302
- * the maximum height between renditions when switch frame feature is on.
303
- */
304
- uint32_t forced_max_frame_width;
305
- uint32_t forced_max_frame_height;
306
- /* Frame rate numerator. When zero, the encoder will use -fps if
307
- * FrameRateDenominator is also zero, otherwise an error is returned.
308
- *
309
- * Default is 0. */
310
- uint32_t frame_rate_numerator;
311
- /* Frame rate denominator. When zero, the encoder will use -fps if
312
- * FrameRateNumerator is also zero, otherwise an error is returned.
313
- *
314
- * Default is 0. */
315
- uint32_t frame_rate_denominator;
316
- /* Specifies the bit depth of input video.
317
- *
318
- * 8 = 8 bit.
319
- * 10 = 10 bit.
320
- *
321
- * Default is 8. */
322
- uint32_t encoder_bit_depth;
323
-
324
- /**
325
- * @brief Encoder color format.
326
- * Only YUV420 is supported for now.
327
- *
328
- * Min is YUV400.
329
- * Max is YUV444.
330
- * Default is YUV420.
331
- */
332
- EbColorFormat encoder_color_format;
333
-
334
- /**
335
- * @brief Currently unused.
336
- *
337
- * Default is 0.
338
- */
339
- uint8_t high_dynamic_range_input;
340
-
341
- /**
342
- * @brief Bitstream profile to use.
343
- * 0: main, 1: high, 2: professional.
344
- *
345
- * Min is MAIN_PROFILE.
346
- * Max is PROFESSIONAL_PROFILE.
347
- * Default is MAIN_PROFILE.
348
- */
349
- EbAv1SeqProfile profile;
350
- /* Constraints for bitstream in terms of max bitrate and max buffer size.
351
- *
352
- * 0 = Main, for most applications.
353
- * 1 = High, for demanding applications.
354
- *
355
- * Default is 0. */
356
- uint32_t tier;
357
-
358
- /**
359
- * @brief Bitstream level.
360
- * 0: autodetect from bitstream, 20: level 2.0, 63: level 6.3, only levels 2.0-6.3 are properly defined.
361
- * The levels are defined at https://aomediacodec.github.io/av1-spec/av1-spec.pdf
362
- * under "A.3. Levels".
363
- *
364
- * Min is 0.
365
- * Max is 73.
366
- * Default is 0.
367
- */
368
- uint32_t level;
369
-
370
- /* Color description present flag
371
- *
372
- * It is not necessary to set this parameter manually.
373
- * It is set internally to true once one of the color_primaries, transfer_characteristics or
374
- * matrix coefficients is set to non-default value.
375
- *
376
- Default is false. */
377
- Bool color_description_present_flag;
378
- /* Color primaries
379
- * values are from EbColorPrimaries
380
- Default is 2 (CP_UNSPECIFIED). */
381
- EbColorPrimaries color_primaries;
382
- /* Transfer characteristics
383
- * values are from EbTransferCharacteristics
384
- Default is 2 (TC_UNSPECIFIED). */
385
- EbTransferCharacteristics transfer_characteristics;
386
- /* Matrix coefficients
387
- * values are from EbMatrixCoefficients
388
- Default is 2 (MC_UNSPECIFIED). */
389
- EbMatrixCoefficients matrix_coefficients;
390
- /* Color range
391
- * values are from EbColorRange
392
- * 0: studio swing.
393
- * 1: full swing.
394
- Default is 0. */
395
- EbColorRange color_range;
396
- /* Mastering display metadata
397
- * values are from set using svt_aom_parse_mastering_display()
398
- */
399
- struct EbSvtAv1MasteringDisplayInfo mastering_display;
400
- /* Content light level
401
- * values are from set using svt_aom_parse_content_light_level()
402
- */
403
- struct EbContentLightLevel content_light_level;
404
-
405
- /* Chroma sample position
406
- * Values as per 6.4.2 of the specification:
407
- * EB_CSP_UNKNOWN: default
408
- * EB_CSP_VERTICAL: value 0 from H.273 AKA "left"
409
- * EB_CSP_COLOCATED: value 2 from H.273 AKA "top left"
410
- */
411
- EbChromaSamplePosition chroma_sample_position;
412
-
413
- // End input info
414
-
415
- /* Rate control mode.
416
- *
417
- * Refer to the SvtAv1RcMode enum for valid values
418
- * Default is 0. */
419
- uint32_t rate_control_mode;
420
-
421
- // Rate control tuning
422
-
423
- // Quantization
424
- /* Initial quantization parameter for the Intra pictures used under constant
425
- * qp rate control mode.
426
- *
427
- * Default is 50. */
428
- uint32_t qp;
429
-
430
- /* force qp values for every picture that are passed in the header pointer
431
- *
432
- * Default is 0.*/
433
- Bool use_qp_file;
434
-
435
- /* Target bitrate in bits/second, only applicable when rate control mode is
436
- * set to 1 (VBR) or 2 (CBR).
437
- *
438
- * Default is 2000513. */
439
- uint32_t target_bit_rate;
440
- /* maximum bitrate in bits/second, only apllicable when rate control mode is
441
- * set to 0.
442
- *
443
- * Default is 0. */
444
- uint32_t max_bit_rate;
445
-
446
- #if !SVT_AV1_CHECK_VERSION(1, 5, 0)
447
- /* DEPRECATED: to be removed in 1.5.0. */
448
- uint32_t vbv_bufsize;
449
- #endif
450
-
451
- /* Maxium QP value allowed for rate control use, only applicable when rate
452
- * control mode is set to 1. It has to be greater or equal to minQpAllowed.
453
- *
454
- * Default is 63. */
455
- uint32_t max_qp_allowed;
456
- /* Minimum QP value allowed for rate control use, only applicable when rate
457
- * control mode is set to 1 or 2. It has to be smaller or equal to maxQpAllowed.
458
- *
459
- * Default is 4. */
460
- uint32_t min_qp_allowed;
461
-
462
- // DATARATE CONTROL OPTIONS
463
- #if !SVT_AV1_CHECK_VERSION(2, 0, 0)
464
- /* DEPRECATED: to be removed in 2.0.0. */
465
- /**
466
- * @brief Variable Bit Rate Bias Percentage
467
- *
468
- * Indicates the bias for determining target size for the current frame.
469
- * A value 0 indicates the optimal CBR mode value should be used, and 100
470
- * indicates the optimal VBR mode value should be used.
471
- *
472
- * Min is 0.
473
- * Max is 100.
474
- * Default is 100
475
- */
476
- uint32_t vbr_bias_pct;
477
- #endif
478
-
479
- /**
480
- * @brief Variable Bit Rate Minimum Section Percentage
481
- *
482
- * Indicates the minimum bitrate to be used for a single GOP as a percentage
483
- * of the target bitrate.
484
- *
485
- * Min is 0.
486
- * Max is 100.
487
- * Default is 0.
488
- */
489
- uint32_t vbr_min_section_pct;
490
-
491
- /**
492
- * @brief Variable Bit Rate Maximum Section Percentage
493
- *
494
- * Indicates the maximum bitrate to be used for a single GOP as a percentage
495
- * of the target bitrate.
496
- *
497
- * Min is 0.
498
- * Max is 10000.
499
- * Default is 2000.
500
- */
501
- uint32_t vbr_max_section_pct;
502
-
503
- /**
504
- * @brief UnderShoot Percentage
505
- *
506
- * Only applicable for VBR and CBR.
507
- *
508
- * Indicates the tolerance of the VBR algorithm to undershoot and is used
509
- * as a trigger threshold for more agressive adaptation of Quantization.
510
- *
511
- * Min is 0.
512
- * Max is 100.
513
- * Default is 25 for CBR and 50 for VBR.
514
- */
515
- uint32_t under_shoot_pct;
516
-
517
- /**
518
- * @brief OverShoot Percentage
519
- *
520
- * Only applicable for VBR and CBR
521
- *
522
- * Indicates the tolerance of the VBR algorithm to overshoot and is used as
523
- * a trigger threshold for more agressive adaptation of Quantization.
524
- *
525
- * Min is 0.
526
- * Max is 100.
527
- * Default is 25.
528
- */
529
- uint32_t over_shoot_pct;
530
-
531
- /**
532
- * @brief MaxBitRate OverShoot Percentage
533
- *
534
- * Only applicable for Capped CRF.
535
- *
536
- * Indicates the tolerance of the Capped CRF algorithm to overshoot
537
- * and is used as a trigger threshold for more agressive adaptation of
538
- * Quantization.
539
- *
540
- * Min is 0.
541
- * Max is 100.
542
- * Default is 50.
543
- */
544
- uint32_t mbr_over_shoot_pct;
545
-
546
- /**
547
- * @brief Starting Buffer Level in MilliSeconds
548
- *
549
- * Only applicable for CBR.
550
- *
551
- * Indicates the amount of data that will be buffered by the decoding
552
- * application prior to beginning playback, and is expressed in units of
553
- * time. Must be less than maximum_buffer_size_ms.
554
- *
555
- * Min is 20.
556
- * Max is 10000.
557
- * Default is 600.
558
- */
559
- int64_t starting_buffer_level_ms;
560
-
561
- /**
562
- * @brief Optimal Buffer Level in MilliSeconds
563
- *
564
- * Only applicable for CBR.
565
- *
566
- * indicates the amount of data that the encoder should try to maintain in the
567
- * decoder's buffer, and is expressed in units of time. Must be less than
568
- * maximum_buffer_size_ms.
569
- *
570
- * Min is 20.
571
- * Max is 10000.
572
- * Default is 600.
573
- */
574
- int64_t optimal_buffer_level_ms;
575
-
576
- /**
577
- * @brief Maximum Buffer Size in MilliSeconds
578
- *
579
- * Only applicable for CBR.
580
- *
581
- * indicates the maximum amount of data that may be buffered by the
582
- * decoding application, and is expressed in units of time.
583
- *
584
- * Min is 20.
585
- * Max is 10000.
586
- * Default is 1000.
587
- */
588
- int64_t maximum_buffer_size_ms;
589
-
590
- // input / output buffer to be used for multi-pass encoding
591
- SvtAv1FixedBuf rc_stats_buffer;
592
- int pass;
593
-
594
- // End rate control tuning
595
-
596
- // Individual tuning flags
597
- /* use fixed qp offset for every picture based on temporal layer index
598
- * 0: off (use the auto mode QP)
599
- * 1: on (the offset is applied on top of the user QP)
600
- * 2: on (the offset is applied on top of the auto mode QP)
601
- *
602
- * Default is 0.*/
603
- uint8_t use_fixed_qindex_offsets;
604
- int32_t qindex_offsets[EB_MAX_TEMPORAL_LAYERS];
605
- int32_t key_frame_chroma_qindex_offset;
606
- int32_t key_frame_qindex_offset;
607
- int32_t chroma_qindex_offsets[EB_MAX_TEMPORAL_LAYERS];
608
-
609
- int32_t luma_y_dc_qindex_offset;
610
- int32_t chroma_u_dc_qindex_offset;
611
- int32_t chroma_u_ac_qindex_offset;
612
- int32_t chroma_v_dc_qindex_offset;
613
- int32_t chroma_v_ac_qindex_offset;
614
-
615
- /**
616
- * @brief Deblocking loop filter control
617
- *
618
- * Default is true.
619
- */
620
- Bool enable_dlf_flag;
621
-
622
- /* Film grain denoising the input picture
623
- * Flag to enable the denoising
624
- *
625
- * Default is 0. */
626
- uint32_t film_grain_denoise_strength;
627
-
628
- /**
629
- * @brief Determines how much denoising is used.
630
- * Only applicable when film grain is ON.
631
- *
632
- * 0 is no denoising
633
- * 1 is full denoising
634
- *
635
- * Default is 0. */
636
- uint8_t film_grain_denoise_apply;
637
-
638
- /* CDEF Level
639
- *
640
- * Default is -1. */
641
- int cdef_level;
642
-
643
- /* Restoration filtering
644
- * enable/disable
645
- * set Self-Guided (sg) mode
646
- * set Wiener (wn) mode
647
- *
648
- * Default is -1. */
649
- int enable_restoration_filtering;
650
-
651
- /* motion field motion vector
652
- *
653
- * Default is -1. */
654
- int enable_mfmv;
655
-
656
- /* Flag to enable the scene change detection algorithm.
657
- *
658
- * Default is 1. */
659
- uint32_t scene_change_detection;
660
-
661
- /**
662
- * @brief API signal to constrain motion vectors.
663
- *
664
- * Default is false.
665
- */
666
- Bool restricted_motion_vector;
667
-
668
- /* Log 2 Tile Rows and columns . 0 means no tiling,1 means that we split the dimension
669
- * into 2
670
- * Default is 0. */
671
- int32_t tile_columns;
672
- int32_t tile_rows;
673
-
674
- /* When RateControlMode is set to 1 it's best to set this parameter to be
675
- * equal to the Intra period value (such is the default set by the encoder).
676
- * When CQP is chosen, then a (2 * minigopsize +1) look ahead is recommended.
677
- *
678
- * Default depends on rate control mode.*/
679
- uint32_t look_ahead_distance;
680
-
681
- /* Enable TPL in look ahead
682
- * 0 = disable TPL in look ahead
683
- * 1 = enable TPL in look ahead
684
- * Default is 0 */
685
- uint8_t enable_tpl_la;
686
-
687
- /* recode_loop indicates the recode levels,
688
- * DISALLOW_RECODE = 0, No recode.
689
- * ALLOW_RECODE_KFMAXBW = 1, Allow recode for KF and exceeding maximum frame bandwidth.
690
- * ALLOW_RECODE_KFARFGF = 2, Allow recode only for KF/ARF/GF frames.
691
- * ALLOW_RECODE = 3, Allow recode for all frames based on bitrate constraints.
692
- * ALLOW_RECODE_DEFAULT = 4, Default setting, ALLOW_RECODE_KFARFGF for M0~5 and
693
- * ALLOW_RECODE_KFMAXBW for M6~8.
694
- * default is 4
695
- */
696
- uint32_t recode_loop;
697
-
698
- /* Flag to signal the content being a screen sharing content type
699
- *
700
- * Default is 0. */
701
- uint32_t screen_content_mode;
702
-
703
- /* Enable adaptive quantization within a frame using segmentation.
704
- *
705
- * For rate control mode 0, setting this to 0 will use CQP mode, else CRF mode will be used.
706
- * Default is 2. */
707
- uint8_t enable_adaptive_quantization;
708
-
709
- /**
710
- * @brief Enable use of ALT-REF (temporally filtered) frames.
711
- *
712
- * Default is true.
713
- */
714
- Bool enable_tf;
715
-
716
- Bool enable_overlays;
717
- /**
718
- * @brief Tune for a particular metric; 0: VQ, 1: PSNR, 2: SSIM.
719
- *
720
- * Default is 1.
721
- */
722
- uint8_t tune;
723
-
724
- // super-resolution parameters
725
- uint8_t superres_mode;
726
- uint8_t superres_denom;
727
- uint8_t superres_kf_denom;
728
- uint8_t superres_qthres;
729
- uint8_t superres_kf_qthres;
730
- uint8_t superres_auto_search_type;
731
-
732
- #if !SVT_AV1_CHECK_VERSION(1, 5, 0)
733
- /* DEPRECATED: to be removed in 1.5.0. */
734
- PredictionStructureConfigEntry pred_struct[1 << (MAX_HIERARCHICAL_LEVEL - 1)];
735
-
736
- /* DEPRECATED: to be removed in 1.5.0. */
737
- Bool enable_manual_pred_struct;
738
-
739
- /* DEPRECATED: to be removed in 1.5.0. */
740
- int32_t manual_pred_struct_entry_num;
741
- #endif
742
- /* Decoder-speed-targeted encoder optimization level (produce bitstreams that can be decoded faster).
743
- * 0: No decoder-targeted speed optimization
744
- * 1: Level 1 of decoder-targeted speed optimizations (faster decoder-speed than level 0)
745
- * 2: Level 2 of decoder-targeted speed optimizations (faster decoder-speed than level 1)
746
- */
747
- uint8_t fast_decode;
748
- /* S-Frame interval (frames)
749
- * 0: S-Frame off
750
- * >0: S-Frame on and indicates the number of frames after which a frame may be coded as an S-Frame
751
- */
752
- int32_t sframe_dist;
753
- /* Indicates how an S-Frame should be inserted
754
- * values are from EbSFrameMode
755
- * SFRAME_STRICT_ARF: the considered frame will be made into an S-Frame only if it is an altref frame
756
- * SFRAME_NEAREST_ARF: if the considered frame is not an altref frame, the next altref frame will be made into an S-Frame
757
- */
758
- EbSFrameMode sframe_mode;
759
-
760
- // End of individual tuning flags
761
-
762
- // Application Specific parameters
763
-
764
- /**
765
- * @brief API signal for the library to know the channel ID (used for pinning to cores).
766
- *
767
- * Min value is 0.
768
- * Max value is 0xFFFFFFFF.
769
- * Default is 0.
770
- */
771
- uint32_t channel_id;
772
-
773
- /**
774
- * @brief API signal for the library to know the active number of channels being encoded simultaneously.
775
- *
776
- * Min value is 1.
777
- * Max value is 0xFFFFFFFF.
778
- * Default is 1.
779
- */
780
- uint32_t active_channel_count;
781
-
782
- // Threads management
783
-
784
- #if CLN_LP_LVLS
785
- #if !SVT_AV1_CHECK_VERSION(3, 0, 0)
786
- /* logical_processors refers to how much parallelization the encoder will perform
787
- * by setting the number of threads and pictures that can be handled simultaneously. If
788
- * the value is 0, a deafult level will be chosen based on the number of cores on the
789
- * machine. Levels 1-6 are supported. Beyond that, higher inputs
790
- * will map to the highest level.
791
- */
792
- uint32_t logical_processors;
793
- #endif
794
-
795
- /* The level of parallelism refers to how much parallelization the encoder will perform
796
- * by setting the number of threads and pictures that can be handled simultaneously. If
797
- * the value is 0, a deafult level will be chosen based on the number of cores on the
798
- * machine. Levels 1-6 are supported. Beyond that, higher inputs
799
- * will map to the highest level.
800
- */
801
- uint32_t level_of_parallelism;
802
-
803
- /* Pin the execution of threads to the first N logical processors.
804
- * 0: unpinned
805
- * N: Pin threads to socket's first N processors
806
- * default 0 */
807
- uint32_t pin_threads;
808
- #else
809
- /* The number of logical processor which encoder threads run on. If
810
- * LogicalProcessors and TargetSocket are not set, threads are managed by
811
- * OS thread scheduler. */
812
- uint32_t logical_processors;
813
-
814
- /* Unpin the execution .This option does not
815
- * set the execution to be pinned to a specific number of cores when set to 1. this allows the execution
816
- * of multiple encodes on the CPU without having to pin them to a specific mask
817
- * 1: pinned threads
818
- * 0: unpinned
819
- * default 0 */
820
- uint32_t pin_threads;
821
- #endif
822
-
823
- /* Target socket to run on. For dual socket systems, this can specify which
824
- * socket the encoder runs on.
825
- *
826
- * -1 = Both Sockets.
827
- * 0 = Socket 0.
828
- * 1 = Socket 1.
829
- *
830
- * Default is -1. */
831
- int32_t target_socket;
832
-
833
- /* CPU FLAGS to limit assembly instruction set used by encoder.
834
- * Default is EB_CPU_FLAGS_ALL. */
835
- EbCpuFlags use_cpu_flags;
836
-
837
- // Debug tools
838
- /* Instruct the library to calculate the recon to source for PSNR calculation
839
- *
840
- * Default is 0.*/
841
- uint32_t stat_report;
842
-
843
- /**
844
- * @brief API Signal to output reconstructed yuv used for debug purposes.
845
- * Using this will affect the speed of encoder.
846
- *
847
- * Default is false.
848
- */
849
- Bool recon_enabled;
850
- // 1.0.0: Any additional fields shall go after here
851
-
852
- /**
853
- * @brief Signal that force-key-frames is enabled.
854
- *
855
- */
856
- Bool force_key_frames;
857
-
858
- /**
859
- * @brief Signal to the library to treat intra_period_length as seconds and
860
- * multiply by fps_num/fps_den.
861
- */
862
- Bool multiply_keyint;
863
-
864
- // reference scaling parameters
865
- /**
866
- * @brief Reference scaling mode
867
- * the available modes are defined in RESIZE_MODE
868
- */
869
- uint8_t resize_mode;
870
- /**
871
- * @brief Resize denominator
872
- * this value can be from 8 to 16, means downscaling to 8/8-8/16 of original
873
- * resolution in both width and height
874
- */
875
- uint8_t resize_denom;
876
- /**
877
- * @brief Resize denominator of key frames
878
- * this value can be from 8 to 16, means downscaling to 8/8-8/16 of original
879
- * resolution in both width and height
880
- */
881
- uint8_t resize_kf_denom;
882
- /**
883
- * @brief Signal to the library to enable quantisation matrices
884
- *
885
- * Default is false.
886
- */
887
- Bool enable_qm;
888
- /**
889
- * @brief Min quant matrix flatness. Applicable when enable_qm is true.
890
- * Min value is 0.
891
- * Max value is 15.
892
- * Default is 8.
893
- */
894
- uint8_t min_qm_level;
895
- /**
896
- * @brief Max quant matrix flatness. Applicable when enable_qm is true.
897
- * Min value is 0.
898
- * Max value is 15.
899
- * Default is 15.
900
- */
901
- uint8_t max_qm_level;
902
-
903
- /**
904
- * @brief gop_constraint_rc
905
- *
906
- * Currently, only applicable for VBR and when GoP size is greater than 119 frames.
907
- *
908
- * When enabled, the rate control matches the target rate for each GoP.
909
- *
910
- * 0: off
911
- * 1: on
912
- * Default is 0.
913
- */
914
- Bool gop_constraint_rc;
915
-
916
- /**
917
- * @brief scale factors for lambda value for different frame update types
918
- * factor >> 7 (/ 128) is the actual value in float
919
- */
920
- int32_t lambda_scale_factors[SVT_AV1_FRAME_UPDATE_TYPES];
921
-
922
- /* Dynamic gop
923
- *
924
- * 0 = disable Dynamic GoP
925
- * 1 = enable Dynamic GoP
926
- * Default is 1. */
927
- Bool enable_dg;
928
-
929
- /**
930
- * @brief startup_mg_size
931
- *
932
- * When enabled, a MG with specified size will be inserted after the key frame.
933
- * The MG size is determined by 2^startup_mg_size.
934
- *
935
- * 0: off
936
- * 2: set hierarchical levels to 2 (MG size 4)
937
- * 3: set hierarchical levels to 3 (MG size 8)
938
- * 4: set hierarchical levels to 4 (MG size 16)
939
- * Default is 0.
940
- */
941
- uint8_t startup_mg_size;
942
-
943
- /* @brief reference scaling events for random access mode (resize-mode = 4)
944
- *
945
- * evt_num: total count of events
946
- * start_frame_nums: array of scaling start frame numbers
947
- * resize_kf_denoms: array of scaling denominators of key-frame
948
- * resize_denoms: array of scaling denominators of non-key-frame
949
- */
950
- SvtAv1FrameScaleEvts frame_scale_evts;
951
-
952
- /* ROI map
953
- *
954
- * 0 = disable ROI
955
- * 1 = enable ROI
956
- * Default is 0. */
957
- Bool enable_roi_map;
958
-
959
- /* Stores the optional film grain synthesis info */
960
- AomFilmGrain *fgs_table;
961
-
962
- /* New parameters can go in under this line. Also deduct the size of the parameter */
963
- /* from the padding array */
964
-
965
- /* Variance boost
966
- * false = disable variance boost
967
- * true = enable variance boost
968
- * Default is false. */
969
- Bool enable_variance_boost;
970
-
971
- /* @brief Selects the curve strength to boost low variance regions according to a fast-growing formula
972
- * Default is 2 */
973
- uint8_t variance_boost_strength;
974
-
975
- /* @brief Picks a set of eight 8x8 variance values per superblock to determine boost
976
- * Lower values enable detecting more blocks that need boosting, at the expense of more possible false positives (overall bitrate increase)
977
- * 1: 1st octile
978
- * 4: 4th octile
979
- * 8: 8th octile
980
- * Default is 6 */
981
- uint8_t variance_octile;
982
-
983
- /*Add 128 Byte Padding to Struct to avoid changing the size of the public configuration struct*/
984
- #if CLN_LP_LVLS
985
- uint8_t padding[128 - sizeof(Bool) - 2 * sizeof(uint8_t) - sizeof(uint32_t)];
986
- #else
987
- uint8_t padding[128 - sizeof(Bool) - 2 * sizeof(uint8_t)];
988
- #endif
989
-
990
- } EbSvtAv1EncConfiguration;
991
-
992
- /**
993
- * Returns a string containing "v$tag-$commit_count-g$hash${dirty:+-dirty}"
994
- * @param[out] SVT_AV1_CVS_VERSION
995
- */
996
- EB_API const char *svt_av1_get_version(void);
997
-
998
- /**
999
- * Prints the version header and build information to the file
1000
- * specified by the SVT_LOG_FILE environment variable or stderr
1001
- */
1002
- EB_API void svt_av1_print_version(void);
1003
-
1004
- /* STEP 1: Call the library to construct a Component Handle.
1005
- *
1006
- * Parameter:
1007
- * @ **p_handle Handle to be called in the future for manipulating the
1008
- * component.
1009
- * @ *p_app_data Callback data.
1010
- * @ *config_ptr Pointer passed back to the client during callbacks, it will be
1011
- * loaded with default params from the library. */
1012
- EB_API EbErrorType svt_av1_enc_init_handle(
1013
- EbComponentType **p_handle, void *p_app_data,
1014
- EbSvtAv1EncConfiguration *config_ptr); // config_ptr will be loaded with default params from the library
1015
-
1016
- /* STEP 2: Set all configuration parameters.
1017
- *
1018
- * Parameter:
1019
- * @ *svt_enc_component Encoder handler.
1020
- * @ *pComponentParameterStructure Encoder and buffer configurations will be copied to the library. */
1021
- EB_API EbErrorType svt_av1_enc_set_parameter(
1022
- EbComponentType *svt_enc_component,
1023
- EbSvtAv1EncConfiguration
1024
- *pComponentParameterStructure); // pComponentParameterStructure contents will be copied to the library
1025
-
1026
- /* OPTIONAL: Set a single configuration parameter.
1027
- *
1028
- * Parameter:
1029
- * @ *pComponentParameterStructure Encoder parameters structure.
1030
- * @ *name Null terminated string containing the parameter name
1031
- * @ *value Null terminated string containing the parameter value */
1032
- EB_API EbErrorType svt_av1_enc_parse_parameter(EbSvtAv1EncConfiguration *pComponentParameterStructure, const char *name,
1033
- const char *value);
1034
-
1035
- /* STEP 3: Initialize encoder and allocates memory to necessary buffers.
1036
- *
1037
- * Parameter:
1038
- * @ *svt_enc_component Encoder handler. */
1039
- EB_API EbErrorType svt_av1_enc_init(EbComponentType *svt_enc_component);
1040
-
1041
- /* OPTIONAL: Get stream headers at init time.
1042
- *
1043
- * Parameter:
1044
- * @ *svt_enc_component Encoder handler.
1045
- * @ **output_stream_ptr Output buffer. */
1046
- EB_API EbErrorType svt_av1_enc_stream_header(EbComponentType *svt_enc_component,
1047
- EbBufferHeaderType **output_stream_ptr);
1048
-
1049
- /* OPTIONAL: Release stream headers at init time.
1050
- *
1051
- * Parameter:
1052
- * @ *stream_header_ptr stream header buffer. */
1053
- EB_API EbErrorType svt_av1_enc_stream_header_release(EbBufferHeaderType *stream_header_ptr);
1054
-
1055
- /* STEP 4: Send the picture.
1056
- *
1057
- * Parameter:
1058
- * @ *svt_enc_component Encoder handler.
1059
- * @ *p_buffer Header pointer, picture buffer. */
1060
- EB_API EbErrorType svt_av1_enc_send_picture(EbComponentType *svt_enc_component, EbBufferHeaderType *p_buffer);
1061
-
1062
- /**
1063
- * @brief Step 5: Receive packet.
1064
- * This function will become blocking if either pic_send_done is set to 1 or if we are in low-delay (pred-struct=1).
1065
- * Otherwise, this function is non-blocking and will return EB_NoErrorEmptyQueue if there are no packets available.
1066
- *
1067
- * @param svt_enc_component The encoder handler
1068
- * @param p_buffer Header pointer to return packet with
1069
- * @param pic_send_done Flag to signal that all input pictures have been sent. Should be either 0 or 1.
1070
- * @return EB_API Either EB_ErrorMax for an encode error or EB_NoErrorEmptyQueue if there are no available packets.
1071
- */
1072
- EB_API EbErrorType svt_av1_enc_get_packet(EbComponentType *svt_enc_component, EbBufferHeaderType **p_buffer,
1073
- uint8_t pic_send_done);
1074
-
1075
- /* STEP 5-1: Release output buffer back into the pool.
1076
- *
1077
- * Parameter:
1078
- * @ **p_buffer Header pointer that contains the output packet to be released. */
1079
- EB_API void svt_av1_enc_release_out_buffer(EbBufferHeaderType **p_buffer);
1080
-
1081
- /* OPTIONAL: Fill buffer with reconstructed picture.
1082
- *
1083
- * Parameter:
1084
- * @ *svt_enc_component Encoder handler.
1085
- * @ *p_buffer Output buffer. */
1086
- EB_API EbErrorType svt_av1_get_recon(EbComponentType *svt_enc_component, EbBufferHeaderType *p_buffer);
1087
-
1088
- /* OPTIONAL: get stream information
1089
- *
1090
- * Parameter:
1091
- * @ *svt_enc_component Encoder handler.
1092
- * @ *stream_info_id SVT_AV1_STREAM_INFO_ID.
1093
- * @ *info output, the type depends on id */
1094
- EB_API EbErrorType svt_av1_enc_get_stream_info(EbComponentType *svt_enc_component, uint32_t stream_info_id, void *info);
1095
-
1096
- /* STEP 6: Deinitialize encoder library.
1097
- *
1098
- * Parameter:
1099
- * @ *svt_enc_component Encoder handler. */
1100
- EB_API EbErrorType svt_av1_enc_deinit(EbComponentType *svt_enc_component);
1101
-
1102
- /* STEP 7: Deconstruct encoder handler.
1103
- *
1104
- * Parameter:
1105
- * @ *svt_enc_component Encoder handler. */
1106
- EB_API EbErrorType svt_av1_enc_deinit_handle(EbComponentType *svt_enc_component);
1107
-
1108
- #ifdef __cplusplus
1109
- }
1110
- #endif // __cplusplus
1111
-
1112
- #endif // EbSvtAv1Enc_h