react-native-alpha-video 0.0.0-stage → 1.0.0

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 (283) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +903 -2
  3. package/THIRD_PARTY_NOTICES.md +30 -0
  4. package/android/av1/build.gradle +67 -0
  5. package/android/av1/consumer-rules.pro +4 -0
  6. package/android/av1/src/main/cpp/Av1Codec_jni.cpp +8 -0
  7. package/android/av1/src/main/cpp/CMakeLists.txt +34 -0
  8. package/android/av1/src/main/java/dev/mediacache/alphavideo/av1/Av1Codec.java +21 -0
  9. package/android/build.gradle +85 -0
  10. package/android/consumer-rules.pro +2 -0
  11. package/android/gradle.properties +1 -0
  12. package/android/publish.gradle +82 -0
  13. package/android/settings.gradle +5 -0
  14. package/android/src/main/AndroidManifest.xml +1 -0
  15. package/android/src/main/cpp/CMakeLists.txt +59 -0
  16. package/android/src/main/java/dev/mediacache/alphavideo/AlphaVideoCodecs.java +73 -0
  17. package/android/src/main/java/dev/mediacache/alphavideo/AlphaVideoView.java +1966 -0
  18. package/android/src/main/java/dev/mediacache/alphavideo/BufferedDualStreamPlayer.java +978 -0
  19. package/android/src/main/java/dev/mediacache/alphavideo/Fetcher.java +37 -0
  20. package/android/src/main/java/dev/mediacache/alphavideo/HttpFetcher.java +156 -0
  21. package/android/src/main/java/dev/mediacache/alphavideo/MediaCodecColor.java +47 -0
  22. package/android/src/main/java/dev/mediacache/alphavideo/MediaCodecDecoders.java +135 -0
  23. package/android/src/main/java/dev/mediacache/alphavideo/RangeSourceLink.java +54 -0
  24. package/android/src/main/java/dev/mediacache/alphavideo/SourceReader.java +174 -0
  25. package/android/src/main/java/dev/mediacache/alphavideo/SurfaceTextureVideoDecoder.java +802 -0
  26. package/android/src/main/java/dev/mediacache/alphavideo/WebMAlphaPlayerNative.java +95 -0
  27. package/android/src/main/java/dev/mediacache/alphavideo/WebMFrame.java +54 -0
  28. package/android/src/main/java/dev/mediacache/alphavideo/WebMSource.java +160 -0
  29. package/android/src/rangesource/java/dev/mediacache/alphavideo/AppDataSource.java +50 -0
  30. package/android/vpx/build.gradle +67 -0
  31. package/android/vpx/consumer-rules.pro +4 -0
  32. package/android/vpx/src/main/cpp/CMakeLists.txt +34 -0
  33. package/android/vpx/src/main/cpp/VpxCodec_jni.cpp +8 -0
  34. package/android/vpx/src/main/java/dev/mediacache/alphavideo/vpx/VpxCodec.java +21 -0
  35. package/codecs/av1/Dav1dDecoderPlugin.cpp +157 -0
  36. package/codecs/av1/Dav1dDecoderPlugin.h +17 -0
  37. package/codecs/vpx/VpxDecoderPlugin.cpp +103 -0
  38. package/codecs/vpx/VpxDecoderPlugin.h +17 -0
  39. package/cpp/AlphaDemuxer.cpp +984 -0
  40. package/cpp/AlphaDemuxer.h +123 -0
  41. package/cpp/AlphaVideoDecoderPlugin.h +84 -0
  42. package/cpp/Av1SequenceHeader.cpp +175 -0
  43. package/cpp/Av1SequenceHeader.h +25 -0
  44. package/cpp/ByteSource.cpp +116 -0
  45. package/cpp/ByteSource.h +59 -0
  46. package/cpp/RangeSourceClient.h +40 -0
  47. package/cpp/VideoDecoder.cpp +157 -0
  48. package/cpp/VideoDecoder.h +83 -0
  49. package/cpp/WebMAlphaPlayer.cpp +1666 -0
  50. package/cpp/WebMAlphaPlayer.h +389 -0
  51. package/cpp/WebMAlphaPlayer_jni.cpp +1380 -0
  52. package/cpp/YuvToRgb.cpp +39 -0
  53. package/cpp/YuvToRgb.h +40 -0
  54. package/ios/Sources/AlphaVideo/AlphaVideoCodecs.mm +63 -0
  55. package/ios/Sources/AlphaVideo/AlphaVideoInternal.h +70 -0
  56. package/ios/Sources/AlphaVideo/AlphaVideoPlayer.mm +994 -0
  57. package/ios/Sources/AlphaVideo/AlphaVideoSource.mm +476 -0
  58. package/ios/Sources/AlphaVideo/AlphaVideoView.mm +374 -0
  59. package/ios/Sources/AlphaVideo/include/AlphaVideo.h +303 -0
  60. package/ios/Sources/AlphaVideoAV1/AlphaVideoAV1Codec.mm +16 -0
  61. package/ios/Sources/AlphaVideoAV1/include/AlphaVideoAV1.h +18 -0
  62. package/ios/Sources/AlphaVideoVPX/AlphaVideoVPXCodec.mm +16 -0
  63. package/ios/Sources/AlphaVideoVPX/include/AlphaVideoVPX.h +17 -0
  64. package/lib/commonjs/AlphaVideoView.js +187 -0
  65. package/lib/commonjs/AlphaVideoView.js.map +1 -0
  66. package/lib/commonjs/AlphaVideoViewNativeComponent.js +47 -0
  67. package/lib/commonjs/AlphaVideoViewNativeComponent.js.map +1 -0
  68. package/lib/commonjs/AlphaVideoViewNativeComponent.web.js +11 -0
  69. package/lib/commonjs/AlphaVideoViewNativeComponent.web.js.map +1 -0
  70. package/lib/commonjs/NativeAlphaVideoModule.js +10 -0
  71. package/lib/commonjs/NativeAlphaVideoModule.js.map +1 -0
  72. package/lib/commonjs/NativeAlphaVideoModule.web.js +9 -0
  73. package/lib/commonjs/NativeAlphaVideoModule.web.js.map +1 -0
  74. package/lib/commonjs/WebPlayer.js +12 -0
  75. package/lib/commonjs/WebPlayer.js.map +1 -0
  76. package/lib/commonjs/WebPlayer.web.js +92 -0
  77. package/lib/commonjs/WebPlayer.web.js.map +1 -0
  78. package/lib/commonjs/index.js +124 -0
  79. package/lib/commonjs/index.js.map +1 -0
  80. package/lib/module/AlphaVideoView.js +187 -0
  81. package/lib/module/AlphaVideoView.js.map +1 -0
  82. package/lib/module/AlphaVideoViewNativeComponent.js +47 -0
  83. package/lib/module/AlphaVideoViewNativeComponent.js.map +1 -0
  84. package/lib/module/AlphaVideoViewNativeComponent.web.js +11 -0
  85. package/lib/module/AlphaVideoViewNativeComponent.web.js.map +1 -0
  86. package/lib/module/NativeAlphaVideoModule.js +10 -0
  87. package/lib/module/NativeAlphaVideoModule.js.map +1 -0
  88. package/lib/module/NativeAlphaVideoModule.web.js +9 -0
  89. package/lib/module/NativeAlphaVideoModule.web.js.map +1 -0
  90. package/lib/module/WebPlayer.js +12 -0
  91. package/lib/module/WebPlayer.js.map +1 -0
  92. package/lib/module/WebPlayer.web.js +92 -0
  93. package/lib/module/WebPlayer.web.js.map +1 -0
  94. package/lib/module/index.js +124 -0
  95. package/lib/module/index.js.map +1 -0
  96. package/lib/typescript/react-native/src/AlphaVideoView.d.ts +189 -0
  97. package/lib/typescript/react-native/src/AlphaVideoView.d.ts.map +1 -0
  98. package/lib/typescript/react-native/src/AlphaVideoViewNativeComponent.d.ts +109 -0
  99. package/lib/typescript/react-native/src/AlphaVideoViewNativeComponent.d.ts.map +1 -0
  100. package/lib/typescript/react-native/src/AlphaVideoViewNativeComponent.web.d.ts +5 -0
  101. package/lib/typescript/react-native/src/AlphaVideoViewNativeComponent.web.d.ts.map +1 -0
  102. package/lib/typescript/react-native/src/NativeAlphaVideoModule.d.ts +21 -0
  103. package/lib/typescript/react-native/src/NativeAlphaVideoModule.d.ts.map +1 -0
  104. package/lib/typescript/react-native/src/NativeAlphaVideoModule.web.d.ts +3 -0
  105. package/lib/typescript/react-native/src/NativeAlphaVideoModule.web.d.ts.map +1 -0
  106. package/lib/typescript/react-native/src/WebPlayer.d.ts +3 -0
  107. package/lib/typescript/react-native/src/WebPlayer.d.ts.map +1 -0
  108. package/lib/typescript/react-native/src/WebPlayer.web.d.ts +9 -0
  109. package/lib/typescript/react-native/src/WebPlayer.web.d.ts.map +1 -0
  110. package/lib/typescript/react-native/src/index.d.ts +77 -0
  111. package/lib/typescript/react-native/src/index.d.ts.map +1 -0
  112. package/licenses/dav1d-COPYING.txt +23 -0
  113. package/licenses/libvpx-LICENSE.txt +31 -0
  114. package/licenses/libvpx-PATENTS.txt +23 -0
  115. package/licenses/libwebm-LICENSE.txt +30 -0
  116. package/licenses/libwebm-PATENTS.txt +23 -0
  117. package/package.json +150 -4
  118. package/prebuilt/android/arm64-v8a/lib/libdav1d.a +0 -0
  119. package/prebuilt/android/arm64-v8a/lib/libvpx.a +0 -0
  120. package/prebuilt/android/armeabi-v7a/lib/libdav1d.a +0 -0
  121. package/prebuilt/android/armeabi-v7a/lib/libvpx.a +0 -0
  122. package/prebuilt/android/x86_64/lib/libdav1d.a +0 -0
  123. package/prebuilt/android/x86_64/lib/libvpx.a +0 -0
  124. package/prebuilt/include/dav1d/common.h +94 -0
  125. package/prebuilt/include/dav1d/data.h +117 -0
  126. package/prebuilt/include/dav1d/dav1d.h +329 -0
  127. package/prebuilt/include/dav1d/headers.h +440 -0
  128. package/prebuilt/include/dav1d/picture.h +157 -0
  129. package/prebuilt/include/dav1d/version.h +50 -0
  130. package/prebuilt/include/vpx/vp8.h +136 -0
  131. package/prebuilt/include/vpx/vp8dx.h +228 -0
  132. package/prebuilt/include/vpx/vpx_codec.h +475 -0
  133. package/prebuilt/include/vpx/vpx_decoder.h +365 -0
  134. package/prebuilt/include/vpx/vpx_frame_buffer.h +83 -0
  135. package/prebuilt/include/vpx/vpx_image.h +209 -0
  136. package/prebuilt/include/vpx/vpx_integer.h +40 -0
  137. package/prebuilt/ios/lib/libdav1d.a +0 -0
  138. package/prebuilt/ios/lib/libvpx.a +0 -0
  139. package/prebuilt/ios-simulator/include/dav1d/common.h +94 -0
  140. package/prebuilt/ios-simulator/include/dav1d/data.h +117 -0
  141. package/prebuilt/ios-simulator/include/dav1d/dav1d.h +329 -0
  142. package/prebuilt/ios-simulator/include/dav1d/headers.h +440 -0
  143. package/prebuilt/ios-simulator/include/dav1d/picture.h +157 -0
  144. package/prebuilt/ios-simulator/include/dav1d/version.h +50 -0
  145. package/prebuilt/ios-simulator/include/vpx/vp8.h +136 -0
  146. package/prebuilt/ios-simulator/include/vpx/vp8dx.h +228 -0
  147. package/prebuilt/ios-simulator/include/vpx/vpx_codec.h +475 -0
  148. package/prebuilt/ios-simulator/include/vpx/vpx_decoder.h +365 -0
  149. package/prebuilt/ios-simulator/include/vpx/vpx_frame_buffer.h +83 -0
  150. package/prebuilt/ios-simulator/include/vpx/vpx_image.h +209 -0
  151. package/prebuilt/ios-simulator/include/vpx/vpx_integer.h +40 -0
  152. package/prebuilt/ios-simulator/lib/libdav1d.a +0 -0
  153. package/prebuilt/ios-simulator/lib/libvpx.a +0 -0
  154. package/react-native/android/CMakeLists.txt +14 -0
  155. package/react-native/android/build.gradle +110 -0
  156. package/react-native/android/src/main/AndroidManifest.xml +1 -0
  157. package/react-native/android/src/main/java/dev/mediacache/alphavideo/reactnative/AlphaVideoModule.java +102 -0
  158. package/react-native/android/src/main/java/dev/mediacache/alphavideo/reactnative/AlphaVideoPackage.java +50 -0
  159. package/react-native/android/src/main/java/dev/mediacache/alphavideo/reactnative/AlphaVideoViewManager.java +317 -0
  160. package/react-native/android/src/newarch/java/dev/mediacache/alphavideo/reactnative/AlphaVideoModuleSpec.java +10 -0
  161. package/react-native/android/src/newarch/java/dev/mediacache/alphavideo/reactnative/AlphaVideoViewManagerSpec.java +23 -0
  162. package/react-native/android/src/norangesource/java/dev/mediacache/alphavideo/AppDataSource.java +15 -0
  163. package/react-native/android/src/oldarch/java/dev/mediacache/alphavideo/reactnative/AlphaVideoModuleSpec.java +30 -0
  164. package/react-native/android/src/oldarch/java/dev/mediacache/alphavideo/reactnative/AlphaVideoViewManagerSpec.java +61 -0
  165. package/react-native/ios/RNAlphaVideoViewComponentView.mm +173 -0
  166. package/react-native/ios/RNAlphaVideoViewManager.mm +147 -0
  167. package/react-native/src/AlphaVideoView.tsx +329 -0
  168. package/react-native/src/AlphaVideoViewNativeComponent.ts +132 -0
  169. package/react-native/src/AlphaVideoViewNativeComponent.web.ts +5 -0
  170. package/react-native/src/NativeAlphaVideoModule.ts +22 -0
  171. package/react-native/src/NativeAlphaVideoModule.web.ts +2 -0
  172. package/react-native/src/WebPlayer.tsx +7 -0
  173. package/react-native/src/WebPlayer.web.tsx +60 -0
  174. package/react-native/src/index.tsx +144 -0
  175. package/react-native-alpha-video.podspec +99 -0
  176. package/react-native.config.js +12 -0
  177. package/scripts/build_codecs_android.sh +246 -0
  178. package/scripts/build_codecs_ios.sh +31 -0
  179. package/scripts/build_codecs_ios_device.sh +210 -0
  180. package/scripts/build_codecs_ios_simulator.sh +256 -0
  181. package/scripts/build_wasm.sh +230 -0
  182. package/scripts/build_xcframework.sh +49 -0
  183. package/scripts/fetch-prebuilt.sh +48 -0
  184. package/scripts/package_release.sh +107 -0
  185. package/scripts/publish-android.sh +85 -0
  186. package/scripts/vendor_range_source.sh +47 -0
  187. package/third_party/libwebm/AUTHORS.TXT +5 -0
  188. package/third_party/libwebm/LICENSE.TXT +30 -0
  189. package/third_party/libwebm/PATENTS.TXT +23 -0
  190. package/third_party/libwebm/README.md +7 -0
  191. package/third_party/libwebm/webm_parser/include/webm/buffer_reader.h +138 -0
  192. package/third_party/libwebm/webm_parser/include/webm/callback.h +363 -0
  193. package/third_party/libwebm/webm_parser/include/webm/dom_types.h +1781 -0
  194. package/third_party/libwebm/webm_parser/include/webm/element.h +208 -0
  195. package/third_party/libwebm/webm_parser/include/webm/file_reader.h +103 -0
  196. package/third_party/libwebm/webm_parser/include/webm/id.h +1085 -0
  197. package/third_party/libwebm/webm_parser/include/webm/istream_reader.h +99 -0
  198. package/third_party/libwebm/webm_parser/include/webm/reader.h +94 -0
  199. package/third_party/libwebm/webm_parser/include/webm/status.h +166 -0
  200. package/third_party/libwebm/webm_parser/include/webm/webm_parser.h +133 -0
  201. package/third_party/libwebm/webm_parser/src/ancestory.cc +334 -0
  202. package/third_party/libwebm/webm_parser/src/ancestory.h +83 -0
  203. package/third_party/libwebm/webm_parser/src/audio_parser.h +84 -0
  204. package/third_party/libwebm/webm_parser/src/bit_utils.cc +26 -0
  205. package/third_party/libwebm/webm_parser/src/bit_utils.h +24 -0
  206. package/third_party/libwebm/webm_parser/src/block_additions_parser.h +30 -0
  207. package/third_party/libwebm/webm_parser/src/block_group_parser.h +71 -0
  208. package/third_party/libwebm/webm_parser/src/block_header_parser.cc +76 -0
  209. package/third_party/libwebm/webm_parser/src/block_header_parser.h +65 -0
  210. package/third_party/libwebm/webm_parser/src/block_more_parser.h +32 -0
  211. package/third_party/libwebm/webm_parser/src/block_parser.cc +285 -0
  212. package/third_party/libwebm/webm_parser/src/block_parser.h +126 -0
  213. package/third_party/libwebm/webm_parser/src/bool_parser.h +95 -0
  214. package/third_party/libwebm/webm_parser/src/buffer_reader.cc +110 -0
  215. package/third_party/libwebm/webm_parser/src/byte_parser.h +144 -0
  216. package/third_party/libwebm/webm_parser/src/callback.cc +155 -0
  217. package/third_party/libwebm/webm_parser/src/chapter_atom_parser.h +42 -0
  218. package/third_party/libwebm/webm_parser/src/chapter_display_parser.h +34 -0
  219. package/third_party/libwebm/webm_parser/src/chapters_parser.h +28 -0
  220. package/third_party/libwebm/webm_parser/src/cluster_parser.h +48 -0
  221. package/third_party/libwebm/webm_parser/src/colour_parser.h +55 -0
  222. package/third_party/libwebm/webm_parser/src/content_enc_aes_settings_parser.h +32 -0
  223. package/third_party/libwebm/webm_parser/src/content_encoding_parser.h +38 -0
  224. package/third_party/libwebm/webm_parser/src/content_encodings_parser.h +30 -0
  225. package/third_party/libwebm/webm_parser/src/content_encryption_parser.h +37 -0
  226. package/third_party/libwebm/webm_parser/src/cue_point_parser.h +38 -0
  227. package/third_party/libwebm/webm_parser/src/cue_track_positions_parser.h +39 -0
  228. package/third_party/libwebm/webm_parser/src/cues_parser.h +27 -0
  229. package/third_party/libwebm/webm_parser/src/date_parser.cc +72 -0
  230. package/third_party/libwebm/webm_parser/src/date_parser.h +64 -0
  231. package/third_party/libwebm/webm_parser/src/ebml_parser.h +48 -0
  232. package/third_party/libwebm/webm_parser/src/edition_entry_parser.h +35 -0
  233. package/third_party/libwebm/webm_parser/src/element_parser.h +102 -0
  234. package/third_party/libwebm/webm_parser/src/file_reader.cc +142 -0
  235. package/third_party/libwebm/webm_parser/src/float_parser.cc +77 -0
  236. package/third_party/libwebm/webm_parser/src/float_parser.h +65 -0
  237. package/third_party/libwebm/webm_parser/src/id_element_parser.cc +49 -0
  238. package/third_party/libwebm/webm_parser/src/id_element_parser.h +56 -0
  239. package/third_party/libwebm/webm_parser/src/id_parser.cc +75 -0
  240. package/third_party/libwebm/webm_parser/src/id_parser.h +45 -0
  241. package/third_party/libwebm/webm_parser/src/info_parser.h +44 -0
  242. package/third_party/libwebm/webm_parser/src/int_parser.h +121 -0
  243. package/third_party/libwebm/webm_parser/src/istream_reader.cc +133 -0
  244. package/third_party/libwebm/webm_parser/src/master_parser.cc +298 -0
  245. package/third_party/libwebm/webm_parser/src/master_parser.h +230 -0
  246. package/third_party/libwebm/webm_parser/src/master_value_parser.h +533 -0
  247. package/third_party/libwebm/webm_parser/src/mastering_metadata_parser.h +57 -0
  248. package/third_party/libwebm/webm_parser/src/parser.h +34 -0
  249. package/third_party/libwebm/webm_parser/src/parser_utils.cc +34 -0
  250. package/third_party/libwebm/webm_parser/src/parser_utils.h +64 -0
  251. package/third_party/libwebm/webm_parser/src/projection_parser.h +40 -0
  252. package/third_party/libwebm/webm_parser/src/recursive_parser.h +93 -0
  253. package/third_party/libwebm/webm_parser/src/seek_head_parser.h +27 -0
  254. package/third_party/libwebm/webm_parser/src/seek_parser.h +37 -0
  255. package/third_party/libwebm/webm_parser/src/segment_parser.cc +86 -0
  256. package/third_party/libwebm/webm_parser/src/segment_parser.h +53 -0
  257. package/third_party/libwebm/webm_parser/src/simple_tag_parser.h +37 -0
  258. package/third_party/libwebm/webm_parser/src/size_parser.cc +56 -0
  259. package/third_party/libwebm/webm_parser/src/size_parser.h +43 -0
  260. package/third_party/libwebm/webm_parser/src/skip_callback.h +63 -0
  261. package/third_party/libwebm/webm_parser/src/skip_parser.cc +59 -0
  262. package/third_party/libwebm/webm_parser/src/skip_parser.h +35 -0
  263. package/third_party/libwebm/webm_parser/src/slices_parser.h +30 -0
  264. package/third_party/libwebm/webm_parser/src/tag_parser.h +37 -0
  265. package/third_party/libwebm/webm_parser/src/tags_parser.h +27 -0
  266. package/third_party/libwebm/webm_parser/src/targets_parser.h +35 -0
  267. package/third_party/libwebm/webm_parser/src/time_slice_parser.h +30 -0
  268. package/third_party/libwebm/webm_parser/src/track_entry_parser.h +65 -0
  269. package/third_party/libwebm/webm_parser/src/tracks_parser.h +27 -0
  270. package/third_party/libwebm/webm_parser/src/unknown_parser.cc +49 -0
  271. package/third_party/libwebm/webm_parser/src/unknown_parser.h +38 -0
  272. package/third_party/libwebm/webm_parser/src/var_int_parser.cc +71 -0
  273. package/third_party/libwebm/webm_parser/src/var_int_parser.h +56 -0
  274. package/third_party/libwebm/webm_parser/src/video_parser.h +122 -0
  275. package/third_party/libwebm/webm_parser/src/virtual_block_parser.cc +72 -0
  276. package/third_party/libwebm/webm_parser/src/virtual_block_parser.h +69 -0
  277. package/third_party/libwebm/webm_parser/src/void_parser.cc +49 -0
  278. package/third_party/libwebm/webm_parser/src/void_parser.h +41 -0
  279. package/third_party/libwebm/webm_parser/src/webm_parser.cc +282 -0
  280. package/third_party/range-source/LICENSE +21 -0
  281. package/third_party/range-source/README.md +8 -0
  282. package/third_party/range-source/include/range_source.h +395 -0
  283. package/third_party/range-source/include/range_source_download.h +309 -0
@@ -0,0 +1,136 @@
1
+ /*
2
+ * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license
5
+ * that can be found in the LICENSE file in the root of the source
6
+ * tree. An additional intellectual property rights grant can be found
7
+ * in the file PATENTS. All contributing project authors may
8
+ * be found in the AUTHORS file in the root of the source tree.
9
+ */
10
+
11
+ /*!\defgroup vp8 VP8
12
+ * \ingroup codecs
13
+ * VP8 is a video compression algorithm that uses motion
14
+ * compensated prediction, Discrete Cosine Transform (DCT) coding of the
15
+ * prediction error signal and context dependent entropy coding techniques
16
+ * based on arithmetic principles. It features:
17
+ * - YUV 4:2:0 image format
18
+ * - Macro-block based coding (16x16 luma plus two 8x8 chroma)
19
+ * - 1/4 (1/8) pixel accuracy motion compensated prediction
20
+ * - 4x4 DCT transform
21
+ * - 128 level linear quantizer
22
+ * - In loop deblocking filter
23
+ * - Context-based entropy coding
24
+ *
25
+ * @{
26
+ */
27
+ /*!\file
28
+ * \brief Provides controls common to both the VP8 encoder and decoder.
29
+ */
30
+ #ifndef VPX_VPX_VP8_H_
31
+ #define VPX_VPX_VP8_H_
32
+
33
+ #include "./vpx_codec.h"
34
+ #include "./vpx_image.h"
35
+
36
+ #ifdef __cplusplus
37
+ extern "C" {
38
+ #endif
39
+
40
+ /*!\brief Control functions
41
+ *
42
+ * The set of macros define the control functions of VP8 interface
43
+ */
44
+ enum vp8_com_control_id {
45
+ /*!\brief pass in an external frame into decoder to be used as reference frame
46
+ */
47
+ VP8_SET_REFERENCE = 1,
48
+ VP8_COPY_REFERENCE = 2, /**< get a copy of reference frame from the decoder */
49
+ VP8_SET_POSTPROC = 3, /**< set the decoder's post processing settings */
50
+
51
+ /* TODO(jkoleszar): The encoder incorrectly reuses some of these values (5+)
52
+ * for its control ids. These should be migrated to something like the
53
+ * VP8_DECODER_CTRL_ID_START range next time we're ready to break the ABI.
54
+ */
55
+ VP9_GET_REFERENCE = 128, /**< get a pointer to a reference frame */
56
+ VP8_COMMON_CTRL_ID_MAX,
57
+ VP8_DECODER_CTRL_ID_START = 256
58
+ };
59
+
60
+ /*!\brief post process flags
61
+ *
62
+ * The set of macros define VP8 decoder post processing flags
63
+ */
64
+ enum vp8_postproc_level {
65
+ VP8_NOFILTERING = 0,
66
+ VP8_DEBLOCK = 1 << 0,
67
+ VP8_DEMACROBLOCK = 1 << 1,
68
+ VP8_ADDNOISE = 1 << 2,
69
+ VP8_MFQE = 1 << 3
70
+ };
71
+
72
+ /*!\brief post process flags
73
+ *
74
+ * This define a structure that describe the post processing settings. For
75
+ * the best objective measure (using the PSNR metric) set post_proc_flag
76
+ * to VP8_DEBLOCK and deblocking_level to 1.
77
+ */
78
+
79
+ typedef struct vp8_postproc_cfg {
80
+ /*!\brief the types of post processing to be done, should be combination of
81
+ * "vp8_postproc_level" */
82
+ int post_proc_flag;
83
+ int deblocking_level; /**< the strength of deblocking, valid range [0, 16] */
84
+ int noise_level; /**< the strength of additive noise, valid range [0, 16] */
85
+ } vp8_postproc_cfg_t;
86
+
87
+ /*!\brief reference frame type
88
+ *
89
+ * The set of macros define the type of VP8 reference frames
90
+ */
91
+ typedef enum vpx_ref_frame_type {
92
+ VP8_LAST_FRAME = 1,
93
+ VP8_GOLD_FRAME = 2,
94
+ VP8_ALTR_FRAME = 4
95
+ } vpx_ref_frame_type_t;
96
+
97
+ /*!\brief reference frame data struct
98
+ *
99
+ * Define the data struct to access vp8 reference frames.
100
+ */
101
+ typedef struct vpx_ref_frame {
102
+ vpx_ref_frame_type_t frame_type; /**< which reference frame */
103
+ vpx_image_t img; /**< reference frame data in image format */
104
+ } vpx_ref_frame_t;
105
+
106
+ /*!\brief VP9 specific reference frame data struct
107
+ *
108
+ * Define the data struct to access vp9 reference frames.
109
+ */
110
+ typedef struct vp9_ref_frame {
111
+ int idx; /**< frame index to get (input) */
112
+ vpx_image_t img; /**< img structure to populate (output) */
113
+ } vp9_ref_frame_t;
114
+
115
+ /*!\cond */
116
+ /*!\brief vp8 decoder control function parameter type
117
+ *
118
+ * defines the data type for each of VP8 decoder control function requires
119
+ */
120
+ VPX_CTRL_USE_TYPE(VP8_SET_REFERENCE, vpx_ref_frame_t *)
121
+ #define VPX_CTRL_VP8_SET_REFERENCE
122
+ VPX_CTRL_USE_TYPE(VP8_COPY_REFERENCE, vpx_ref_frame_t *)
123
+ #define VPX_CTRL_VP8_COPY_REFERENCE
124
+ VPX_CTRL_USE_TYPE(VP8_SET_POSTPROC, vp8_postproc_cfg_t *)
125
+ #define VPX_CTRL_VP8_SET_POSTPROC
126
+ VPX_CTRL_USE_TYPE(VP9_GET_REFERENCE, vp9_ref_frame_t *)
127
+ #define VPX_CTRL_VP9_GET_REFERENCE
128
+
129
+ /*!\endcond */
130
+ /*! @} - end defgroup vp8 */
131
+
132
+ #ifdef __cplusplus
133
+ } // extern "C"
134
+ #endif
135
+
136
+ #endif // VPX_VPX_VP8_H_
@@ -0,0 +1,228 @@
1
+ /*
2
+ * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3
+ *
4
+ * Use of this source code is governed by a BSD-style license
5
+ * that can be found in the LICENSE file in the root of the source
6
+ * tree. An additional intellectual property rights grant can be found
7
+ * in the file PATENTS. All contributing project authors may
8
+ * be found in the AUTHORS file in the root of the source tree.
9
+ */
10
+
11
+ /*!\defgroup vp8_decoder WebM VP8/VP9 Decoder
12
+ * \ingroup vp8
13
+ *
14
+ * @{
15
+ */
16
+ /*!\file
17
+ * \brief Provides definitions for using VP8 or VP9 within the vpx Decoder
18
+ * interface.
19
+ */
20
+ #ifndef VPX_VPX_VP8DX_H_
21
+ #define VPX_VPX_VP8DX_H_
22
+
23
+ #ifdef __cplusplus
24
+ extern "C" {
25
+ #endif
26
+
27
+ /* Include controls common to both the encoder and decoder */
28
+ #include "./vp8.h"
29
+
30
+ /*!\name Algorithm interface for VP8
31
+ *
32
+ * This interface provides the capability to decode VP8 streams.
33
+ * @{
34
+ */
35
+
36
+ /*!\brief A single instance of the VP8 decoder.
37
+ *\deprecated This access mechanism is provided for backwards compatibility;
38
+ * prefer vpx_codec_vp8_dx().
39
+ */
40
+ extern vpx_codec_iface_t vpx_codec_vp8_dx_algo;
41
+
42
+ /*!\brief The interface to the VP8 decoder.
43
+ */
44
+ extern vpx_codec_iface_t *vpx_codec_vp8_dx(void);
45
+ /*!@} - end algorithm interface member group*/
46
+
47
+ /*!\name Algorithm interface for VP9
48
+ *
49
+ * This interface provides the capability to decode VP9 streams.
50
+ * @{
51
+ */
52
+
53
+ /*!\brief A single instance of the VP9 decoder.
54
+ *\deprecated This access mechanism is provided for backwards compatibility;
55
+ * prefer vpx_codec_vp9_dx().
56
+ */
57
+ extern vpx_codec_iface_t vpx_codec_vp9_dx_algo;
58
+
59
+ /*!\brief The interface to the VP9 decoder.
60
+ */
61
+ extern vpx_codec_iface_t *vpx_codec_vp9_dx(void);
62
+ /*!@} - end algorithm interface member group*/
63
+
64
+ /*!\enum vp8_dec_control_id
65
+ * \brief VP8 decoder control functions
66
+ *
67
+ * This set of macros define the control functions available for the VP8
68
+ * decoder interface.
69
+ *
70
+ * \sa #vpx_codec_control
71
+ */
72
+ enum vp8_dec_control_id {
73
+ /** control function to get info on which reference frames were updated
74
+ * by the last decode
75
+ */
76
+ VP8D_GET_LAST_REF_UPDATES = VP8_DECODER_CTRL_ID_START,
77
+
78
+ /** check if the indicated frame is corrupted */
79
+ VP8D_GET_FRAME_CORRUPTED,
80
+
81
+ /** control function to get info on which reference frames were used
82
+ * by the last decode
83
+ */
84
+ VP8D_GET_LAST_REF_USED,
85
+
86
+ /** decryption function to decrypt encoded buffer data immediately
87
+ * before decoding. Takes a vpx_decrypt_init, which contains
88
+ * a callback function and opaque context pointer.
89
+ */
90
+ VPXD_SET_DECRYPTOR,
91
+ VP8D_SET_DECRYPTOR = VPXD_SET_DECRYPTOR,
92
+
93
+ /** control function to get the dimensions that the current frame is decoded
94
+ * at. This may be different to the intended display size for the frame as
95
+ * specified in the wrapper or frame header (see VP9D_GET_DISPLAY_SIZE). */
96
+ VP9D_GET_FRAME_SIZE,
97
+
98
+ /** control function to get the current frame's intended display dimensions
99
+ * (as specified in the wrapper or frame header). This may be different to
100
+ * the decoded dimensions of this frame (see VP9D_GET_FRAME_SIZE). */
101
+ VP9D_GET_DISPLAY_SIZE,
102
+
103
+ /** control function to get the bit depth of the stream. */
104
+ VP9D_GET_BIT_DEPTH,
105
+
106
+ /** control function to set the byte alignment of the planes in the reference
107
+ * buffers. Valid values are power of 2, from 32 to 1024. A value of 0 sets
108
+ * legacy alignment. I.e. Y plane is aligned to 32 bytes, U plane directly
109
+ * follows Y plane, and V plane directly follows U plane. Default value is 0.
110
+ */
111
+ VP9_SET_BYTE_ALIGNMENT,
112
+
113
+ /** control function to invert the decoding order to from right to left. The
114
+ * function is used in a test to confirm the decoding independence of tile
115
+ * columns. The function may be used in application where this order
116
+ * of decoding is desired.
117
+ *
118
+ * TODO(yaowu): Rework the unit test that uses this control, and in a future
119
+ * release, this test-only control shall be removed.
120
+ */
121
+ VP9_INVERT_TILE_DECODE_ORDER,
122
+
123
+ /** control function to set the skip loop filter flag. Valid values are
124
+ * integers. The decoder will skip the loop filter when its value is set to
125
+ * nonzero. If the loop filter is skipped the decoder may accumulate decode
126
+ * artifacts. The default value is 0.
127
+ */
128
+ VP9_SET_SKIP_LOOP_FILTER,
129
+
130
+ /** control function to decode SVC stream up to the x spatial layers,
131
+ * where x is passed in through the control, and is 0 for base layer.
132
+ */
133
+ VP9_DECODE_SVC_SPATIAL_LAYER,
134
+
135
+ /*!\brief Codec control function to get last decoded frame quantizer.
136
+ *
137
+ * Return value uses internal quantizer scale defined by the codec.
138
+ *
139
+ * Supported in codecs: VP8, VP9
140
+ */
141
+ VPXD_GET_LAST_QUANTIZER,
142
+
143
+ /*!\brief Codec control function to set row level multi-threading.
144
+ *
145
+ * 0 : off, 1 : on
146
+ *
147
+ * Supported in codecs: VP9
148
+ */
149
+ VP9D_SET_ROW_MT,
150
+
151
+ /*!\brief Codec control function to set loopfilter optimization.
152
+ *
153
+ * 0 : off, Loop filter is done after all tiles have been decoded
154
+ * 1 : on, Loop filter is done immediately after decode without
155
+ * waiting for all threads to sync.
156
+ *
157
+ * Supported in codecs: VP9
158
+ */
159
+ VP9D_SET_LOOP_FILTER_OPT,
160
+
161
+ VP8_DECODER_CTRL_ID_MAX
162
+ };
163
+
164
+ /** Decrypt n bytes of data from input -> output, using the decrypt_state
165
+ * passed in VPXD_SET_DECRYPTOR.
166
+ */
167
+ typedef void (*vpx_decrypt_cb)(void *decrypt_state, const unsigned char *input,
168
+ unsigned char *output, int count);
169
+
170
+ /*!\brief Structure to hold decryption state
171
+ *
172
+ * Defines a structure to hold the decryption state and access function.
173
+ */
174
+ typedef struct vpx_decrypt_init {
175
+ /*! Decrypt callback. */
176
+ vpx_decrypt_cb decrypt_cb;
177
+
178
+ /*! Decryption state. */
179
+ void *decrypt_state;
180
+ } vpx_decrypt_init;
181
+
182
+ /*!\cond */
183
+ /*!\brief VP8 decoder control function parameter type
184
+ *
185
+ * Defines the data types that VP8D control functions take. Note that
186
+ * additional common controls are defined in vp8.h
187
+ *
188
+ */
189
+
190
+ VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_UPDATES, int *)
191
+ #define VPX_CTRL_VP8D_GET_LAST_REF_UPDATES
192
+ VPX_CTRL_USE_TYPE(VP8D_GET_FRAME_CORRUPTED, int *)
193
+ #define VPX_CTRL_VP8D_GET_FRAME_CORRUPTED
194
+ VPX_CTRL_USE_TYPE(VP8D_GET_LAST_REF_USED, int *)
195
+ #define VPX_CTRL_VP8D_GET_LAST_REF_USED
196
+ VPX_CTRL_USE_TYPE(VPXD_SET_DECRYPTOR, vpx_decrypt_init *)
197
+ #define VPX_CTRL_VPXD_SET_DECRYPTOR
198
+ VPX_CTRL_USE_TYPE(VP8D_SET_DECRYPTOR, vpx_decrypt_init *)
199
+ #define VPX_CTRL_VP8D_SET_DECRYPTOR
200
+ VPX_CTRL_USE_TYPE(VP9D_GET_FRAME_SIZE, int *)
201
+ #define VPX_CTRL_VP9D_GET_FRAME_SIZE
202
+ VPX_CTRL_USE_TYPE(VP9D_GET_DISPLAY_SIZE, int *)
203
+ #define VPX_CTRL_VP9D_GET_DISPLAY_SIZE
204
+ VPX_CTRL_USE_TYPE(VP9D_GET_BIT_DEPTH, unsigned int *)
205
+ #define VPX_CTRL_VP9D_GET_BIT_DEPTH
206
+ VPX_CTRL_USE_TYPE(VP9_SET_BYTE_ALIGNMENT, int)
207
+ #define VPX_CTRL_VP9_SET_BYTE_ALIGNMENT
208
+ VPX_CTRL_USE_TYPE(VP9_INVERT_TILE_DECODE_ORDER, int)
209
+ #define VPX_CTRL_VP9_INVERT_TILE_DECODE_ORDER
210
+ VPX_CTRL_USE_TYPE(VP9_SET_SKIP_LOOP_FILTER, int)
211
+ #define VPX_CTRL_VP9_SET_SKIP_LOOP_FILTER
212
+ VPX_CTRL_USE_TYPE(VP9_DECODE_SVC_SPATIAL_LAYER, int)
213
+ #define VPX_CTRL_VP9_DECODE_SVC_SPATIAL_LAYER
214
+ VPX_CTRL_USE_TYPE(VPXD_GET_LAST_QUANTIZER, int *)
215
+ #define VPX_CTRL_VPXD_GET_LAST_QUANTIZER
216
+ VPX_CTRL_USE_TYPE(VP9D_SET_ROW_MT, int)
217
+ #define VPX_CTRL_VP9_DECODE_SET_ROW_MT
218
+ VPX_CTRL_USE_TYPE(VP9D_SET_LOOP_FILTER_OPT, int)
219
+ #define VPX_CTRL_VP9_SET_LOOP_FILTER_OPT
220
+
221
+ /*!\endcond */
222
+ /*! @} - end defgroup vp8_decoder */
223
+
224
+ #ifdef __cplusplus
225
+ } // extern "C"
226
+ #endif
227
+
228
+ #endif // VPX_VPX_VP8DX_H_