react-native-audio-api 0.8.0-nightly-5a12f24-20250901 → 0.8.0-nightly-daaceff-20250902

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 (214) hide show
  1. package/RNAudioAPI.podspec +15 -6
  2. package/android/build.gradle +10 -1
  3. package/android/src/main/cpp/audioapi/CMakeLists.txt +21 -5
  4. package/android/src/main/jniLibs/arm64-v8a/libavcodec.so +0 -0
  5. package/android/src/main/jniLibs/arm64-v8a/libavformat.so +0 -0
  6. package/android/src/main/jniLibs/arm64-v8a/libavutil.so +0 -0
  7. package/android/src/main/jniLibs/arm64-v8a/libswresample.so +0 -0
  8. package/android/src/main/jniLibs/armeabi-v7a/libavcodec.so +0 -0
  9. package/android/src/main/jniLibs/armeabi-v7a/libavformat.so +0 -0
  10. package/android/src/main/jniLibs/armeabi-v7a/libavutil.so +0 -0
  11. package/android/src/main/jniLibs/armeabi-v7a/libswresample.so +0 -0
  12. package/android/src/main/jniLibs/x86/libavcodec.so +0 -0
  13. package/android/src/main/jniLibs/x86/libavformat.so +0 -0
  14. package/android/src/main/jniLibs/x86/libavutil.so +0 -0
  15. package/android/src/main/jniLibs/x86/libswresample.so +0 -0
  16. package/android/src/main/jniLibs/x86_64/libavcodec.so +0 -0
  17. package/android/src/main/jniLibs/x86_64/libavformat.so +0 -0
  18. package/android/src/main/jniLibs/x86_64/libavutil.so +0 -0
  19. package/android/src/main/jniLibs/x86_64/libswresample.so +0 -0
  20. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +11 -0
  21. package/common/cpp/audioapi/HostObjects/StreamerNodeHostObject.h +30 -0
  22. package/common/cpp/audioapi/core/BaseAudioContext.cpp +9 -0
  23. package/common/cpp/audioapi/core/BaseAudioContext.h +2 -0
  24. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +299 -0
  25. package/common/cpp/audioapi/core/sources/StreamerNode.h +123 -0
  26. package/common/cpp/audioapi/external/arm64-v8a/libcrypto.a +0 -0
  27. package/common/cpp/audioapi/external/arm64-v8a/libssl.a +0 -0
  28. package/common/cpp/audioapi/external/armeabi-v7a/libcrypto.a +0 -0
  29. package/common/cpp/audioapi/external/armeabi-v7a/libssl.a +0 -0
  30. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/ac3_parser.h +36 -0
  31. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/adts_parser.h +37 -0
  32. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/avcodec.h +2947 -0
  33. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/avdct.h +88 -0
  34. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/bsf.h +332 -0
  35. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec.h +367 -0
  36. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_desc.h +134 -0
  37. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_id.h +681 -0
  38. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_par.h +248 -0
  39. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/d3d11va.h +109 -0
  40. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/defs.h +359 -0
  41. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/dirac.h +135 -0
  42. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/dv_profile.h +82 -0
  43. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/dxva2.h +90 -0
  44. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/jni.h +67 -0
  45. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/mediacodec.h +103 -0
  46. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/packet.h +907 -0
  47. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/qsv.h +109 -0
  48. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/vdpau.h +138 -0
  49. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/version.h +45 -0
  50. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/version_major.h +55 -0
  51. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/videotoolbox.h +85 -0
  52. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/vorbis_parser.h +74 -0
  53. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/avformat.h +3004 -0
  54. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/avio.h +831 -0
  55. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version.h +47 -0
  56. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version_major.h +50 -0
  57. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/adler32.h +63 -0
  58. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/aes.h +69 -0
  59. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/aes_ctr.h +99 -0
  60. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ambient_viewing_environment.h +72 -0
  61. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/attributes.h +175 -0
  62. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/audio_fifo.h +187 -0
  63. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avassert.h +120 -0
  64. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avconfig.h +6 -0
  65. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avstring.h +428 -0
  66. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avutil.h +364 -0
  67. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/base64.h +72 -0
  68. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/blowfish.h +82 -0
  69. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/bprint.h +254 -0
  70. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/bswap.h +105 -0
  71. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/buffer.h +322 -0
  72. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/camellia.h +70 -0
  73. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/cast5.h +80 -0
  74. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/channel_layout.h +762 -0
  75. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/common.h +589 -0
  76. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/container_fifo.h +130 -0
  77. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/cpu.h +150 -0
  78. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/crc.h +102 -0
  79. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/csp.h +192 -0
  80. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/des.h +81 -0
  81. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/detection_bbox.h +108 -0
  82. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/dict.h +242 -0
  83. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/display.h +109 -0
  84. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/dovi_meta.h +396 -0
  85. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/downmix_info.h +115 -0
  86. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/encryption_info.h +205 -0
  87. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/error.h +129 -0
  88. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/eval.h +140 -0
  89. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/executor.h +67 -0
  90. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ffversion.h +5 -0
  91. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/fifo.h +242 -0
  92. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/file.h +62 -0
  93. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/film_grain_params.h +282 -0
  94. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/frame.h +1163 -0
  95. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hash.h +264 -0
  96. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hdr_dynamic_metadata.h +376 -0
  97. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hdr_dynamic_vivid_metadata.h +292 -0
  98. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hmac.h +99 -0
  99. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext.h +601 -0
  100. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_amf.h +46 -0
  101. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_cuda.h +74 -0
  102. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_d3d11va.h +178 -0
  103. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_d3d12va.h +142 -0
  104. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_drm.h +169 -0
  105. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_dxva2.h +75 -0
  106. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_mediacodec.h +61 -0
  107. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_oh.h +34 -0
  108. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_opencl.h +100 -0
  109. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_qsv.h +87 -0
  110. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vaapi.h +117 -0
  111. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vdpau.h +44 -0
  112. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_videotoolbox.h +106 -0
  113. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vulkan.h +377 -0
  114. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/iamf.h +694 -0
  115. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/imgutils.h +377 -0
  116. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/intfloat.h +77 -0
  117. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/intreadwrite.h +677 -0
  118. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/lfg.h +81 -0
  119. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/log.h +427 -0
  120. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/lzo.h +66 -0
  121. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/macros.h +80 -0
  122. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mastering_display_metadata.h +137 -0
  123. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mathematics.h +300 -0
  124. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/md5.h +89 -0
  125. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mem.h +607 -0
  126. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/motion_vector.h +57 -0
  127. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/murmur3.h +115 -0
  128. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/opt.h +1194 -0
  129. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/parseutils.h +197 -0
  130. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/pixdesc.h +440 -0
  131. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/pixelutils.h +51 -0
  132. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/pixfmt.h +797 -0
  133. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/random_seed.h +57 -0
  134. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rational.h +225 -0
  135. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rc4.h +69 -0
  136. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/refstruct.h +297 -0
  137. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/replaygain.h +50 -0
  138. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ripemd.h +83 -0
  139. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/samplefmt.h +269 -0
  140. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/sha.h +90 -0
  141. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/sha512.h +92 -0
  142. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/spherical.h +243 -0
  143. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/stereo3d.h +325 -0
  144. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tdrdi.h +164 -0
  145. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tea.h +71 -0
  146. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/threadmessage.h +115 -0
  147. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/timecode.h +199 -0
  148. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/timestamp.h +85 -0
  149. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tree.h +137 -0
  150. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/twofish.h +70 -0
  151. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tx.h +210 -0
  152. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/uuid.h +146 -0
  153. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/version.h +119 -0
  154. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/video_enc_params.h +171 -0
  155. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/video_hint.h +107 -0
  156. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/xtea.h +94 -0
  157. package/common/cpp/audioapi/external/ffmpeg_include/libswresample/swresample.h +587 -0
  158. package/common/cpp/audioapi/external/ffmpeg_include/libswresample/version.h +46 -0
  159. package/common/cpp/audioapi/external/ffmpeg_include/libswresample/version_major.h +31 -0
  160. package/common/cpp/audioapi/external/libavcodec.xcframework/Info.plist +44 -0
  161. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/Info.plist +1 -0
  162. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/libavcodec +0 -0
  163. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/Info.plist +1 -0
  164. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec +0 -0
  165. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec.framework/Info.plist +1 -0
  166. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec.framework/libavcodec +0 -0
  167. package/common/cpp/audioapi/external/libavformat.xcframework/Info.plist +44 -0
  168. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/Info.plist +1 -0
  169. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/libavformat +0 -0
  170. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/Info.plist +1 -0
  171. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/libavformat +0 -0
  172. package/common/cpp/audioapi/external/libavutil.xcframework/Info.plist +44 -0
  173. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/Info.plist +1 -0
  174. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/libavutil +0 -0
  175. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/Info.plist +1 -0
  176. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/libavutil +0 -0
  177. package/common/cpp/audioapi/external/libswresample.xcframework/Info.plist +44 -0
  178. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/Info.plist +1 -0
  179. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/libswresample +0 -0
  180. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/Info.plist +1 -0
  181. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/libswresample +0 -0
  182. package/common/cpp/audioapi/external/x86/libcrypto.a +0 -0
  183. package/common/cpp/audioapi/external/x86/libssl.a +0 -0
  184. package/common/cpp/audioapi/external/x86_64/libcrypto.a +0 -0
  185. package/common/cpp/audioapi/external/x86_64/libssl.a +0 -0
  186. package/common/cpp/audioapi/libs/ffmpeg/INSTRUCTIONS.md +26 -0
  187. package/common/cpp/audioapi/libs/ffmpeg/create_xcframework.sh +111 -0
  188. package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +360 -0
  189. package/common/cpp/test/CMakeLists.txt +5 -1
  190. package/lib/commonjs/api.js +7 -0
  191. package/lib/commonjs/api.js.map +1 -1
  192. package/lib/commonjs/core/BaseAudioContext.js +4 -0
  193. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  194. package/lib/commonjs/core/StreamerNode.js +15 -0
  195. package/lib/commonjs/core/StreamerNode.js.map +1 -0
  196. package/lib/module/api.js +1 -0
  197. package/lib/module/api.js.map +1 -1
  198. package/lib/module/core/BaseAudioContext.js +4 -0
  199. package/lib/module/core/BaseAudioContext.js.map +1 -1
  200. package/lib/module/core/StreamerNode.js +9 -0
  201. package/lib/module/core/StreamerNode.js.map +1 -0
  202. package/lib/typescript/api.d.ts +1 -0
  203. package/lib/typescript/api.d.ts.map +1 -1
  204. package/lib/typescript/core/BaseAudioContext.d.ts +2 -0
  205. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  206. package/lib/typescript/core/StreamerNode.d.ts +5 -0
  207. package/lib/typescript/core/StreamerNode.d.ts.map +1 -0
  208. package/lib/typescript/interfaces.d.ts +4 -0
  209. package/lib/typescript/interfaces.d.ts.map +1 -1
  210. package/package.json +1 -1
  211. package/src/api.ts +1 -0
  212. package/src/core/BaseAudioContext.ts +5 -0
  213. package/src/core/StreamerNode.ts +8 -0
  214. package/src/interfaces.ts +5 -0
@@ -0,0 +1,907 @@
1
+ /*
2
+ * AVPacket public API
3
+ *
4
+ * This file is part of FFmpeg.
5
+ *
6
+ * FFmpeg is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Lesser General Public
8
+ * License as published by the Free Software Foundation; either
9
+ * version 2.1 of the License, or (at your option) any later version.
10
+ *
11
+ * FFmpeg is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with FFmpeg; if not, write to the Free Software
18
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
+ */
20
+
21
+ #ifndef AVCODEC_PACKET_H
22
+ #define AVCODEC_PACKET_H
23
+
24
+ #include <stddef.h>
25
+ #include <stdint.h>
26
+
27
+ #include "libavutil/attributes.h"
28
+ #include "libavutil/buffer.h"
29
+ #include "libavutil/dict.h"
30
+ #include "libavutil/rational.h"
31
+ #include "libavutil/version.h"
32
+
33
+ #include "libavcodec/version_major.h"
34
+
35
+ /**
36
+ * @defgroup lavc_packet_side_data AVPacketSideData
37
+ *
38
+ * Types and functions for working with AVPacketSideData.
39
+ * @{
40
+ */
41
+ enum AVPacketSideDataType {
42
+ /**
43
+ * An AV_PKT_DATA_PALETTE side data packet contains exactly AVPALETTE_SIZE
44
+ * bytes worth of palette. This side data signals that a new palette is
45
+ * present.
46
+ */
47
+ AV_PKT_DATA_PALETTE,
48
+
49
+ /**
50
+ * The AV_PKT_DATA_NEW_EXTRADATA is used to notify the codec or the format
51
+ * that the extradata buffer was changed and the receiving side should
52
+ * act upon it appropriately. The new extradata is embedded in the side
53
+ * data buffer and should be immediately used for processing the current
54
+ * frame or packet.
55
+ */
56
+ AV_PKT_DATA_NEW_EXTRADATA,
57
+
58
+ /**
59
+ * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows:
60
+ * @code
61
+ * u32le param_flags
62
+ * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE)
63
+ * s32le sample_rate
64
+ * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS)
65
+ * s32le width
66
+ * s32le height
67
+ * @endcode
68
+ */
69
+ AV_PKT_DATA_PARAM_CHANGE,
70
+
71
+ /**
72
+ * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of
73
+ * structures with info about macroblocks relevant to splitting the
74
+ * packet into smaller packets on macroblock edges (e.g. as for RFC 2190).
75
+ * That is, it does not necessarily contain info about all macroblocks,
76
+ * as long as the distance between macroblocks in the info is smaller
77
+ * than the target payload size.
78
+ * Each MB info structure is 12 bytes, and is laid out as follows:
79
+ * @code
80
+ * u32le bit offset from the start of the packet
81
+ * u8 current quantizer at the start of the macroblock
82
+ * u8 GOB number
83
+ * u16le macroblock address within the GOB
84
+ * u8 horizontal MV predictor
85
+ * u8 vertical MV predictor
86
+ * u8 horizontal MV predictor for block number 3
87
+ * u8 vertical MV predictor for block number 3
88
+ * @endcode
89
+ */
90
+ AV_PKT_DATA_H263_MB_INFO,
91
+
92
+ /**
93
+ * This side data should be associated with an audio stream and contains
94
+ * ReplayGain information in form of the AVReplayGain struct.
95
+ */
96
+ AV_PKT_DATA_REPLAYGAIN,
97
+
98
+ /**
99
+ * This side data contains a 3x3 transformation matrix describing an affine
100
+ * transformation that needs to be applied to the decoded video frames for
101
+ * correct presentation.
102
+ *
103
+ * See libavutil/display.h for a detailed description of the data.
104
+ */
105
+ AV_PKT_DATA_DISPLAYMATRIX,
106
+
107
+ /**
108
+ * This side data should be associated with a video stream and contains
109
+ * Stereoscopic 3D information in form of the AVStereo3D struct.
110
+ */
111
+ AV_PKT_DATA_STEREO3D,
112
+
113
+ /**
114
+ * This side data should be associated with an audio stream and corresponds
115
+ * to enum AVAudioServiceType.
116
+ */
117
+ AV_PKT_DATA_AUDIO_SERVICE_TYPE,
118
+
119
+ /**
120
+ * This side data contains quality related information from the encoder.
121
+ * @code
122
+ * u32le quality factor of the compressed frame. Allowed range is between 1 (good) and FF_LAMBDA_MAX (bad).
123
+ * u8 picture type
124
+ * u8 error count
125
+ * u16 reserved
126
+ * u64le[error count] sum of squared differences between encoder in and output
127
+ * @endcode
128
+ */
129
+ AV_PKT_DATA_QUALITY_STATS,
130
+
131
+ /**
132
+ * This side data contains an integer value representing the stream index
133
+ * of a "fallback" track. A fallback track indicates an alternate
134
+ * track to use when the current track can not be decoded for some reason.
135
+ * e.g. no decoder available for codec.
136
+ */
137
+ AV_PKT_DATA_FALLBACK_TRACK,
138
+
139
+ /**
140
+ * This side data corresponds to the AVCPBProperties struct.
141
+ */
142
+ AV_PKT_DATA_CPB_PROPERTIES,
143
+
144
+ /**
145
+ * Recommmends skipping the specified number of samples
146
+ * @code
147
+ * u32le number of samples to skip from start of this packet
148
+ * u32le number of samples to skip from end of this packet
149
+ * u8 reason for start skip
150
+ * u8 reason for end skip (0=padding silence, 1=convergence)
151
+ * @endcode
152
+ */
153
+ AV_PKT_DATA_SKIP_SAMPLES,
154
+
155
+ /**
156
+ * An AV_PKT_DATA_JP_DUALMONO side data packet indicates that
157
+ * the packet may contain "dual mono" audio specific to Japanese DTV
158
+ * and if it is true, recommends only the selected channel to be used.
159
+ * @code
160
+ * u8 selected channels (0=main/left, 1=sub/right, 2=both)
161
+ * @endcode
162
+ */
163
+ AV_PKT_DATA_JP_DUALMONO,
164
+
165
+ /**
166
+ * A list of zero terminated key/value strings. There is no end marker for
167
+ * the list, so it is required to rely on the side data size to stop.
168
+ */
169
+ AV_PKT_DATA_STRINGS_METADATA,
170
+
171
+ /**
172
+ * Subtitle event position
173
+ * @code
174
+ * u32le x1
175
+ * u32le y1
176
+ * u32le x2
177
+ * u32le y2
178
+ * @endcode
179
+ */
180
+ AV_PKT_DATA_SUBTITLE_POSITION,
181
+
182
+ /**
183
+ * Data found in BlockAdditional element of matroska container. There is
184
+ * no end marker for the data, so it is required to rely on the side data
185
+ * size to recognize the end. 8 byte id (as found in BlockAddId) followed
186
+ * by data.
187
+ */
188
+ AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
189
+
190
+ /**
191
+ * The optional first identifier line of a WebVTT cue.
192
+ */
193
+ AV_PKT_DATA_WEBVTT_IDENTIFIER,
194
+
195
+ /**
196
+ * The optional settings (rendering instructions) that immediately
197
+ * follow the timestamp specifier of a WebVTT cue.
198
+ */
199
+ AV_PKT_DATA_WEBVTT_SETTINGS,
200
+
201
+ /**
202
+ * A list of zero terminated key/value strings. There is no end marker for
203
+ * the list, so it is required to rely on the side data size to stop. This
204
+ * side data includes updated metadata which appeared in the stream.
205
+ */
206
+ AV_PKT_DATA_METADATA_UPDATE,
207
+
208
+ /**
209
+ * MPEGTS stream ID as uint8_t, this is required to pass the stream ID
210
+ * information from the demuxer to the corresponding muxer.
211
+ */
212
+ AV_PKT_DATA_MPEGTS_STREAM_ID,
213
+
214
+ /**
215
+ * Mastering display metadata (based on SMPTE-2086:2014). This metadata
216
+ * should be associated with a video stream and contains data in the form
217
+ * of the AVMasteringDisplayMetadata struct.
218
+ */
219
+ AV_PKT_DATA_MASTERING_DISPLAY_METADATA,
220
+
221
+ /**
222
+ * This side data should be associated with a video stream and corresponds
223
+ * to the AVSphericalMapping structure.
224
+ */
225
+ AV_PKT_DATA_SPHERICAL,
226
+
227
+ /**
228
+ * Content light level (based on CTA-861.3). This metadata should be
229
+ * associated with a video stream and contains data in the form of the
230
+ * AVContentLightMetadata struct.
231
+ */
232
+ AV_PKT_DATA_CONTENT_LIGHT_LEVEL,
233
+
234
+ /**
235
+ * ATSC A53 Part 4 Closed Captions. This metadata should be associated with
236
+ * a video stream. A53 CC bitstream is stored as uint8_t in AVPacketSideData.data.
237
+ * The number of bytes of CC data is AVPacketSideData.size.
238
+ */
239
+ AV_PKT_DATA_A53_CC,
240
+
241
+ /**
242
+ * This side data is encryption initialization data.
243
+ * The format is not part of ABI, use av_encryption_init_info_* methods to
244
+ * access.
245
+ */
246
+ AV_PKT_DATA_ENCRYPTION_INIT_INFO,
247
+
248
+ /**
249
+ * This side data contains encryption info for how to decrypt the packet.
250
+ * The format is not part of ABI, use av_encryption_info_* methods to access.
251
+ */
252
+ AV_PKT_DATA_ENCRYPTION_INFO,
253
+
254
+ /**
255
+ * Active Format Description data consisting of a single byte as specified
256
+ * in ETSI TS 101 154 using AVActiveFormatDescription enum.
257
+ */
258
+ AV_PKT_DATA_AFD,
259
+
260
+ /**
261
+ * Producer Reference Time data corresponding to the AVProducerReferenceTime struct,
262
+ * usually exported by some encoders (on demand through the prft flag set in the
263
+ * AVCodecContext export_side_data field).
264
+ */
265
+ AV_PKT_DATA_PRFT,
266
+
267
+ /**
268
+ * ICC profile data consisting of an opaque octet buffer following the
269
+ * format described by ISO 15076-1.
270
+ */
271
+ AV_PKT_DATA_ICC_PROFILE,
272
+
273
+ /**
274
+ * DOVI configuration
275
+ * ref:
276
+ * dolby-vision-bitstreams-within-the-iso-base-media-file-format-v2.1.2, section 2.2
277
+ * dolby-vision-bitstreams-in-mpeg-2-transport-stream-multiplex-v1.2, section 3.3
278
+ * Tags are stored in struct AVDOVIDecoderConfigurationRecord.
279
+ */
280
+ AV_PKT_DATA_DOVI_CONF,
281
+
282
+ /**
283
+ * Timecode which conforms to SMPTE ST 12-1:2014. The data is an array of 4 uint32_t
284
+ * where the first uint32_t describes how many (1-3) of the other timecodes are used.
285
+ * The timecode format is described in the documentation of av_timecode_get_smpte_from_framenum()
286
+ * function in libavutil/timecode.h.
287
+ */
288
+ AV_PKT_DATA_S12M_TIMECODE,
289
+
290
+ /**
291
+ * HDR10+ dynamic metadata associated with a video frame. The metadata is in
292
+ * the form of the AVDynamicHDRPlus struct and contains
293
+ * information for color volume transform - application 4 of
294
+ * SMPTE 2094-40:2016 standard.
295
+ */
296
+ AV_PKT_DATA_DYNAMIC_HDR10_PLUS,
297
+
298
+ /**
299
+ * IAMF Mix Gain Parameter Data associated with the audio frame. This metadata
300
+ * is in the form of the AVIAMFParamDefinition struct and contains information
301
+ * defined in sections 3.6.1 and 3.8.1 of the Immersive Audio Model and
302
+ * Formats standard.
303
+ */
304
+ AV_PKT_DATA_IAMF_MIX_GAIN_PARAM,
305
+
306
+ /**
307
+ * IAMF Demixing Info Parameter Data associated with the audio frame. This
308
+ * metadata is in the form of the AVIAMFParamDefinition struct and contains
309
+ * information defined in sections 3.6.1 and 3.8.2 of the Immersive Audio Model
310
+ * and Formats standard.
311
+ */
312
+ AV_PKT_DATA_IAMF_DEMIXING_INFO_PARAM,
313
+
314
+ /**
315
+ * IAMF Recon Gain Info Parameter Data associated with the audio frame. This
316
+ * metadata is in the form of the AVIAMFParamDefinition struct and contains
317
+ * information defined in sections 3.6.1 and 3.8.3 of the Immersive Audio Model
318
+ * and Formats standard.
319
+ */
320
+ AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM,
321
+
322
+ /**
323
+ * Ambient viewing environment metadata, as defined by H.274. This metadata
324
+ * should be associated with a video stream and contains data in the form
325
+ * of the AVAmbientViewingEnvironment struct.
326
+ */
327
+ AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT,
328
+
329
+ /**
330
+ * The number of pixels to discard from the top/bottom/left/right border of the
331
+ * decoded frame to obtain the sub-rectangle intended for presentation.
332
+ *
333
+ * @code
334
+ * u32le crop_top
335
+ * u32le crop_bottom
336
+ * u32le crop_left
337
+ * u32le crop_right
338
+ * @endcode
339
+ */
340
+ AV_PKT_DATA_FRAME_CROPPING,
341
+
342
+ /**
343
+ * Raw LCEVC payload data, as a uint8_t array, with NAL emulation
344
+ * bytes intact.
345
+ */
346
+ AV_PKT_DATA_LCEVC,
347
+
348
+ /**
349
+ * This side data contains information about the reference display width(s)
350
+ * and reference viewing distance(s) as well as information about the
351
+ * corresponding reference stereo pair(s), i.e., the pair(s) of views to be
352
+ * displayed for the viewer's left and right eyes on the reference display
353
+ * at the reference viewing distance.
354
+ * The payload is the AV3DReferenceDisplaysInfo struct defined in
355
+ * libavutil/tdrdi.h.
356
+ */
357
+ AV_PKT_DATA_3D_REFERENCE_DISPLAYS,
358
+
359
+ /**
360
+ * Contains the last received RTCP SR (Sender Report) information
361
+ * in the form of the AVRTCPSenderReport struct.
362
+ */
363
+ AV_PKT_DATA_RTCP_SR,
364
+
365
+ /**
366
+ * The number of side data types.
367
+ * This is not part of the public API/ABI in the sense that it may
368
+ * change when new side data types are added.
369
+ * This must stay the last enum value.
370
+ * If its value becomes huge, some code using it
371
+ * needs to be updated as it assumes it to be smaller than other limits.
372
+ */
373
+ AV_PKT_DATA_NB
374
+ };
375
+
376
+ /**
377
+ * This structure stores auxiliary information for decoding, presenting, or
378
+ * otherwise processing the coded stream. It is typically exported by demuxers
379
+ * and encoders and can be fed to decoders and muxers either in a per packet
380
+ * basis, or as global side data (applying to the entire coded stream).
381
+ *
382
+ * Global side data is handled as follows:
383
+ * - During demuxing, it may be exported through
384
+ * @ref AVCodecParameters.coded_side_data "AVStream's codec parameters", which can
385
+ * then be passed as input to decoders through the
386
+ * @ref AVCodecContext.coded_side_data "decoder context's side data", for
387
+ * initialization.
388
+ * - For muxing, it can be fed through @ref AVCodecParameters.coded_side_data
389
+ * "AVStream's codec parameters", typically the output of encoders through
390
+ * the @ref AVCodecContext.coded_side_data "encoder context's side data", for
391
+ * initialization.
392
+ *
393
+ * Packet specific side data is handled as follows:
394
+ * - During demuxing, it may be exported through @ref AVPacket.side_data
395
+ * "AVPacket's side data", which can then be passed as input to decoders.
396
+ * - For muxing, it can be fed through @ref AVPacket.side_data "AVPacket's
397
+ * side data", typically the output of encoders.
398
+ *
399
+ * Different modules may accept or export different types of side data
400
+ * depending on media type and codec. Refer to @ref AVPacketSideDataType for a
401
+ * list of defined types and where they may be found or used.
402
+ */
403
+ typedef struct AVPacketSideData {
404
+ uint8_t *data;
405
+ size_t size;
406
+ enum AVPacketSideDataType type;
407
+ } AVPacketSideData;
408
+
409
+ /**
410
+ * Allocate a new packet side data.
411
+ *
412
+ * @param sd pointer to an array of side data to which the side data should
413
+ * be added. *sd may be NULL, in which case the array will be
414
+ * initialized.
415
+ * @param nb_sd pointer to an integer containing the number of entries in
416
+ * the array. The integer value will be increased by 1 on success.
417
+ * @param type side data type
418
+ * @param size desired side data size
419
+ * @param flags currently unused. Must be zero
420
+ *
421
+ * @return pointer to freshly allocated side data on success, or NULL otherwise.
422
+ */
423
+ AVPacketSideData *av_packet_side_data_new(AVPacketSideData **psd, int *pnb_sd,
424
+ enum AVPacketSideDataType type,
425
+ size_t size, int flags);
426
+
427
+ /**
428
+ * Wrap existing data as packet side data.
429
+ *
430
+ * @param sd pointer to an array of side data to which the side data should
431
+ * be added. *sd may be NULL, in which case the array will be
432
+ * initialized
433
+ * @param nb_sd pointer to an integer containing the number of entries in
434
+ * the array. The integer value will be increased by 1 on success.
435
+ * @param type side data type
436
+ * @param data a data array. It must be allocated with the av_malloc() family
437
+ * of functions. The ownership of the data is transferred to the
438
+ * side data array on success
439
+ * @param size size of the data array
440
+ * @param flags currently unused. Must be zero
441
+ *
442
+ * @return pointer to freshly allocated side data on success, or NULL otherwise
443
+ * On failure, the side data array is unchanged and the data remains
444
+ * owned by the caller.
445
+ */
446
+ AVPacketSideData *av_packet_side_data_add(AVPacketSideData **sd, int *nb_sd,
447
+ enum AVPacketSideDataType type,
448
+ void *data, size_t size, int flags);
449
+
450
+ /**
451
+ * Get side information from a side data array.
452
+ *
453
+ * @param sd the array from which the side data should be fetched
454
+ * @param nb_sd value containing the number of entries in the array.
455
+ * @param type desired side information type
456
+ *
457
+ * @return pointer to side data if present or NULL otherwise
458
+ */
459
+ const AVPacketSideData *av_packet_side_data_get(const AVPacketSideData *sd,
460
+ int nb_sd,
461
+ enum AVPacketSideDataType type);
462
+
463
+ /**
464
+ * Remove side data of the given type from a side data array.
465
+ *
466
+ * @param sd the array from which the side data should be removed
467
+ * @param nb_sd pointer to an integer containing the number of entries in
468
+ * the array. Will be reduced by the amount of entries removed
469
+ * upon return
470
+ * @param type side information type
471
+ */
472
+ void av_packet_side_data_remove(AVPacketSideData *sd, int *nb_sd,
473
+ enum AVPacketSideDataType type);
474
+
475
+ /**
476
+ * Convenience function to free all the side data stored in an array, and
477
+ * the array itself.
478
+ *
479
+ * @param sd pointer to array of side data to free. Will be set to NULL
480
+ * upon return.
481
+ * @param nb_sd pointer to an integer containing the number of entries in
482
+ * the array. Will be set to 0 upon return.
483
+ */
484
+ void av_packet_side_data_free(AVPacketSideData **sd, int *nb_sd);
485
+
486
+ const char *av_packet_side_data_name(enum AVPacketSideDataType type);
487
+
488
+ /**
489
+ * @}
490
+ */
491
+
492
+ /**
493
+ * @defgroup lavc_packet AVPacket
494
+ *
495
+ * Types and functions for working with AVPacket.
496
+ * @{
497
+ */
498
+
499
+ /**
500
+ * This structure stores compressed data. It is typically exported by demuxers
501
+ * and then passed as input to decoders, or received as output from encoders and
502
+ * then passed to muxers.
503
+ *
504
+ * For video, it should typically contain one compressed frame. For audio it may
505
+ * contain several compressed frames. Encoders are allowed to output empty
506
+ * packets, with no compressed data, containing only side data
507
+ * (e.g. to update some stream parameters at the end of encoding).
508
+ *
509
+ * The semantics of data ownership depends on the buf field.
510
+ * If it is set, the packet data is dynamically allocated and is
511
+ * valid indefinitely until a call to av_packet_unref() reduces the
512
+ * reference count to 0.
513
+ *
514
+ * If the buf field is not set av_packet_ref() would make a copy instead
515
+ * of increasing the reference count.
516
+ *
517
+ * The side data is always allocated with av_malloc(), copied by
518
+ * av_packet_ref() and freed by av_packet_unref().
519
+ *
520
+ * sizeof(AVPacket) being a part of the public ABI is deprecated. once
521
+ * av_init_packet() is removed, new packets will only be able to be allocated
522
+ * with av_packet_alloc(), and new fields may be added to the end of the struct
523
+ * with a minor bump.
524
+ *
525
+ * @see av_packet_alloc
526
+ * @see av_packet_ref
527
+ * @see av_packet_unref
528
+ */
529
+ typedef struct AVPacket {
530
+ /**
531
+ * A reference to the reference-counted buffer where the packet data is
532
+ * stored.
533
+ * May be NULL, then the packet data is not reference-counted.
534
+ */
535
+ AVBufferRef *buf;
536
+ /**
537
+ * Presentation timestamp in AVStream->time_base units; the time at which
538
+ * the decompressed packet will be presented to the user.
539
+ * Can be AV_NOPTS_VALUE if it is not stored in the file.
540
+ * pts MUST be larger or equal to dts as presentation cannot happen before
541
+ * decompression, unless one wants to view hex dumps. Some formats misuse
542
+ * the terms dts and pts/cts to mean something different. Such timestamps
543
+ * must be converted to true pts/dts before they are stored in AVPacket.
544
+ */
545
+ int64_t pts;
546
+ /**
547
+ * Decompression timestamp in AVStream->time_base units; the time at which
548
+ * the packet is decompressed.
549
+ * Can be AV_NOPTS_VALUE if it is not stored in the file.
550
+ */
551
+ int64_t dts;
552
+ uint8_t *data;
553
+ int size;
554
+ int stream_index;
555
+ /**
556
+ * A combination of AV_PKT_FLAG values
557
+ */
558
+ int flags;
559
+ /**
560
+ * Additional packet data that can be provided by the container.
561
+ * Packet can contain several types of side information.
562
+ */
563
+ AVPacketSideData *side_data;
564
+ int side_data_elems;
565
+
566
+ /**
567
+ * Duration of this packet in AVStream->time_base units, 0 if unknown.
568
+ * Equals next_pts - this_pts in presentation order.
569
+ */
570
+ int64_t duration;
571
+
572
+ int64_t pos; ///< byte position in stream, -1 if unknown
573
+
574
+ /**
575
+ * for some private data of the user
576
+ */
577
+ void *opaque;
578
+
579
+ /**
580
+ * AVBufferRef for free use by the API user. FFmpeg will never check the
581
+ * contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when
582
+ * the packet is unreferenced. av_packet_copy_props() calls create a new
583
+ * reference with av_buffer_ref() for the target packet's opaque_ref field.
584
+ *
585
+ * This is unrelated to the opaque field, although it serves a similar
586
+ * purpose.
587
+ */
588
+ AVBufferRef *opaque_ref;
589
+
590
+ /**
591
+ * Time base of the packet's timestamps.
592
+ * In the future, this field may be set on packets output by encoders or
593
+ * demuxers, but its value will be by default ignored on input to decoders
594
+ * or muxers.
595
+ */
596
+ AVRational time_base;
597
+ } AVPacket;
598
+
599
+ #if FF_API_INIT_PACKET
600
+ attribute_deprecated
601
+ typedef struct AVPacketList {
602
+ AVPacket pkt;
603
+ struct AVPacketList *next;
604
+ } AVPacketList;
605
+ #endif
606
+
607
+ #define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe
608
+ #define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted
609
+ /**
610
+ * Flag is used to discard packets which are required to maintain valid
611
+ * decoder state but are not required for output and should be dropped
612
+ * after decoding.
613
+ **/
614
+ #define AV_PKT_FLAG_DISCARD 0x0004
615
+ /**
616
+ * The packet comes from a trusted source.
617
+ *
618
+ * Otherwise-unsafe constructs such as arbitrary pointers to data
619
+ * outside the packet may be followed.
620
+ */
621
+ #define AV_PKT_FLAG_TRUSTED 0x0008
622
+ /**
623
+ * Flag is used to indicate packets that contain frames that can
624
+ * be discarded by the decoder. I.e. Non-reference frames.
625
+ */
626
+ #define AV_PKT_FLAG_DISPOSABLE 0x0010
627
+
628
+ enum AVSideDataParamChangeFlags {
629
+ AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004,
630
+ AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008,
631
+ };
632
+
633
+ /**
634
+ * Allocate an AVPacket and set its fields to default values. The resulting
635
+ * struct must be freed using av_packet_free().
636
+ *
637
+ * @return An AVPacket filled with default values or NULL on failure.
638
+ *
639
+ * @note this only allocates the AVPacket itself, not the data buffers. Those
640
+ * must be allocated through other means such as av_new_packet.
641
+ *
642
+ * @see av_new_packet
643
+ */
644
+ AVPacket *av_packet_alloc(void);
645
+
646
+ /**
647
+ * Create a new packet that references the same data as src.
648
+ *
649
+ * This is a shortcut for av_packet_alloc()+av_packet_ref().
650
+ *
651
+ * @return newly created AVPacket on success, NULL on error.
652
+ *
653
+ * @see av_packet_alloc
654
+ * @see av_packet_ref
655
+ */
656
+ AVPacket *av_packet_clone(const AVPacket *src);
657
+
658
+ /**
659
+ * Free the packet, if the packet is reference counted, it will be
660
+ * unreferenced first.
661
+ *
662
+ * @param pkt packet to be freed. The pointer will be set to NULL.
663
+ * @note passing NULL is a no-op.
664
+ */
665
+ void av_packet_free(AVPacket **pkt);
666
+
667
+ #if FF_API_INIT_PACKET
668
+ /**
669
+ * Initialize optional fields of a packet with default values.
670
+ *
671
+ * Note, this does not touch the data and size members, which have to be
672
+ * initialized separately.
673
+ *
674
+ * @param pkt packet
675
+ *
676
+ * @see av_packet_alloc
677
+ * @see av_packet_unref
678
+ *
679
+ * @deprecated This function is deprecated. Once it's removed,
680
+ sizeof(AVPacket) will not be a part of the ABI anymore.
681
+ */
682
+ attribute_deprecated
683
+ void av_init_packet(AVPacket *pkt);
684
+ #endif
685
+
686
+ /**
687
+ * Allocate the payload of a packet and initialize its fields with
688
+ * default values.
689
+ *
690
+ * @param pkt packet
691
+ * @param size wanted payload size
692
+ * @return 0 if OK, AVERROR_xxx otherwise
693
+ */
694
+ int av_new_packet(AVPacket *pkt, int size);
695
+
696
+ /**
697
+ * Reduce packet size, correctly zeroing padding
698
+ *
699
+ * @param pkt packet
700
+ * @param size new size
701
+ */
702
+ void av_shrink_packet(AVPacket *pkt, int size);
703
+
704
+ /**
705
+ * Increase packet size, correctly zeroing padding
706
+ *
707
+ * @param pkt packet
708
+ * @param grow_by number of bytes by which to increase the size of the packet
709
+ */
710
+ int av_grow_packet(AVPacket *pkt, int grow_by);
711
+
712
+ /**
713
+ * Initialize a reference-counted packet from av_malloc()ed data.
714
+ *
715
+ * @param pkt packet to be initialized. This function will set the data, size,
716
+ * and buf fields, all others are left untouched.
717
+ * @param data Data allocated by av_malloc() to be used as packet data. If this
718
+ * function returns successfully, the data is owned by the underlying AVBuffer.
719
+ * The caller may not access the data through other means.
720
+ * @param size size of data in bytes, without the padding. I.e. the full buffer
721
+ * size is assumed to be size + AV_INPUT_BUFFER_PADDING_SIZE.
722
+ *
723
+ * @return 0 on success, a negative AVERROR on error
724
+ */
725
+ int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size);
726
+
727
+ /**
728
+ * Allocate new information of a packet.
729
+ *
730
+ * @param pkt packet
731
+ * @param type side information type
732
+ * @param size side information size
733
+ * @return pointer to fresh allocated data or NULL otherwise
734
+ */
735
+ uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
736
+ size_t size);
737
+
738
+ /**
739
+ * Wrap an existing array as a packet side data.
740
+ *
741
+ * @param pkt packet
742
+ * @param type side information type
743
+ * @param data the side data array. It must be allocated with the av_malloc()
744
+ * family of functions. The ownership of the data is transferred to
745
+ * pkt.
746
+ * @param size side information size
747
+ * @return a non-negative number on success, a negative AVERROR code on
748
+ * failure. On failure, the packet is unchanged and the data remains
749
+ * owned by the caller.
750
+ */
751
+ int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
752
+ uint8_t *data, size_t size);
753
+
754
+ /**
755
+ * Shrink the already allocated side data buffer
756
+ *
757
+ * @param pkt packet
758
+ * @param type side information type
759
+ * @param size new side information size
760
+ * @return 0 on success, < 0 on failure
761
+ */
762
+ int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
763
+ size_t size);
764
+
765
+ /**
766
+ * Get side information from packet.
767
+ *
768
+ * @param pkt packet
769
+ * @param type desired side information type
770
+ * @param size If supplied, *size will be set to the size of the side data
771
+ * or to zero if the desired side data is not present.
772
+ * @return pointer to data if present or NULL otherwise
773
+ */
774
+ uint8_t* av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type,
775
+ size_t *size);
776
+
777
+ /**
778
+ * Pack a dictionary for use in side_data.
779
+ *
780
+ * @param dict The dictionary to pack.
781
+ * @param size pointer to store the size of the returned data
782
+ * @return pointer to data if successful, NULL otherwise
783
+ */
784
+ uint8_t *av_packet_pack_dictionary(AVDictionary *dict, size_t *size);
785
+ /**
786
+ * Unpack a dictionary from side_data.
787
+ *
788
+ * @param data data from side_data
789
+ * @param size size of the data
790
+ * @param dict the metadata storage dictionary
791
+ * @return 0 on success, < 0 on failure
792
+ */
793
+ int av_packet_unpack_dictionary(const uint8_t *data, size_t size,
794
+ AVDictionary **dict);
795
+
796
+ /**
797
+ * Convenience function to free all the side data stored.
798
+ * All the other fields stay untouched.
799
+ *
800
+ * @param pkt packet
801
+ */
802
+ void av_packet_free_side_data(AVPacket *pkt);
803
+
804
+ /**
805
+ * Setup a new reference to the data described by a given packet
806
+ *
807
+ * If src is reference-counted, setup dst as a new reference to the
808
+ * buffer in src. Otherwise allocate a new buffer in dst and copy the
809
+ * data from src into it.
810
+ *
811
+ * All the other fields are copied from src.
812
+ *
813
+ * @see av_packet_unref
814
+ *
815
+ * @param dst Destination packet. Will be completely overwritten.
816
+ * @param src Source packet
817
+ *
818
+ * @return 0 on success, a negative AVERROR on error. On error, dst
819
+ * will be blank (as if returned by av_packet_alloc()).
820
+ */
821
+ int av_packet_ref(AVPacket *dst, const AVPacket *src);
822
+
823
+ /**
824
+ * Wipe the packet.
825
+ *
826
+ * Unreference the buffer referenced by the packet and reset the
827
+ * remaining packet fields to their default values.
828
+ *
829
+ * @param pkt The packet to be unreferenced.
830
+ */
831
+ void av_packet_unref(AVPacket *pkt);
832
+
833
+ /**
834
+ * Move every field in src to dst and reset src.
835
+ *
836
+ * @see av_packet_unref
837
+ *
838
+ * @param src Source packet, will be reset
839
+ * @param dst Destination packet
840
+ */
841
+ void av_packet_move_ref(AVPacket *dst, AVPacket *src);
842
+
843
+ /**
844
+ * Copy only "properties" fields from src to dst.
845
+ *
846
+ * Properties for the purpose of this function are all the fields
847
+ * beside those related to the packet data (buf, data, size)
848
+ *
849
+ * @param dst Destination packet
850
+ * @param src Source packet
851
+ *
852
+ * @return 0 on success AVERROR on failure.
853
+ */
854
+ int av_packet_copy_props(AVPacket *dst, const AVPacket *src);
855
+
856
+ /**
857
+ * Ensure the data described by a given packet is reference counted.
858
+ *
859
+ * @note This function does not ensure that the reference will be writable.
860
+ * Use av_packet_make_writable instead for that purpose.
861
+ *
862
+ * @see av_packet_ref
863
+ * @see av_packet_make_writable
864
+ *
865
+ * @param pkt packet whose data should be made reference counted.
866
+ *
867
+ * @return 0 on success, a negative AVERROR on error. On failure, the
868
+ * packet is unchanged.
869
+ */
870
+ int av_packet_make_refcounted(AVPacket *pkt);
871
+
872
+ /**
873
+ * Create a writable reference for the data described by a given packet,
874
+ * avoiding data copy if possible.
875
+ *
876
+ * @param pkt Packet whose data should be made writable.
877
+ *
878
+ * @return 0 on success, a negative AVERROR on failure. On failure, the
879
+ * packet is unchanged.
880
+ */
881
+ int av_packet_make_writable(AVPacket *pkt);
882
+
883
+ /**
884
+ * Convert valid timing fields (timestamps / durations) in a packet from one
885
+ * timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be
886
+ * ignored.
887
+ *
888
+ * @param pkt packet on which the conversion will be performed
889
+ * @param tb_src source timebase, in which the timing fields in pkt are
890
+ * expressed
891
+ * @param tb_dst destination timebase, to which the timing fields will be
892
+ * converted
893
+ */
894
+ void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst);
895
+
896
+ /**
897
+ * Allocate an AVContainerFifo instance for AVPacket.
898
+ *
899
+ * @param flags currently unused
900
+ */
901
+ struct AVContainerFifo *av_container_fifo_alloc_avpacket(unsigned flags);
902
+
903
+ /**
904
+ * @}
905
+ */
906
+
907
+ #endif // AVCODEC_PACKET_H