node-av 0.0.1

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 (175) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE.md +22 -0
  3. package/README.md +377 -0
  4. package/binding.gyp +78 -0
  5. package/dist/api/bitstream-filter.d.ts +246 -0
  6. package/dist/api/bitstream-filter.js +369 -0
  7. package/dist/api/bitstream-filter.js.map +1 -0
  8. package/dist/api/decoder.d.ts +257 -0
  9. package/dist/api/decoder.js +424 -0
  10. package/dist/api/decoder.js.map +1 -0
  11. package/dist/api/encoder.d.ts +298 -0
  12. package/dist/api/encoder.js +574 -0
  13. package/dist/api/encoder.js.map +1 -0
  14. package/dist/api/filter.d.ts +457 -0
  15. package/dist/api/filter.js +876 -0
  16. package/dist/api/filter.js.map +1 -0
  17. package/dist/api/hardware.d.ts +318 -0
  18. package/dist/api/hardware.js +558 -0
  19. package/dist/api/hardware.js.map +1 -0
  20. package/dist/api/index.d.ts +12 -0
  21. package/dist/api/index.js +20 -0
  22. package/dist/api/index.js.map +1 -0
  23. package/dist/api/io-stream.d.ts +109 -0
  24. package/dist/api/io-stream.js +124 -0
  25. package/dist/api/io-stream.js.map +1 -0
  26. package/dist/api/media-input.d.ts +295 -0
  27. package/dist/api/media-input.js +456 -0
  28. package/dist/api/media-input.js.map +1 -0
  29. package/dist/api/media-output.d.ts +274 -0
  30. package/dist/api/media-output.js +486 -0
  31. package/dist/api/media-output.js.map +1 -0
  32. package/dist/api/pipeline.d.ts +117 -0
  33. package/dist/api/pipeline.js +836 -0
  34. package/dist/api/pipeline.js.map +1 -0
  35. package/dist/api/types.d.ts +440 -0
  36. package/dist/api/types.js +2 -0
  37. package/dist/api/types.js.map +1 -0
  38. package/dist/api/utilities/audio-sample.d.ts +115 -0
  39. package/dist/api/utilities/audio-sample.js +110 -0
  40. package/dist/api/utilities/audio-sample.js.map +1 -0
  41. package/dist/api/utilities/channel-layout.d.ts +83 -0
  42. package/dist/api/utilities/channel-layout.js +87 -0
  43. package/dist/api/utilities/channel-layout.js.map +1 -0
  44. package/dist/api/utilities/image.d.ts +177 -0
  45. package/dist/api/utilities/image.js +183 -0
  46. package/dist/api/utilities/image.js.map +1 -0
  47. package/dist/api/utilities/index.d.ts +8 -0
  48. package/dist/api/utilities/index.js +17 -0
  49. package/dist/api/utilities/index.js.map +1 -0
  50. package/dist/api/utilities/media-type.d.ts +56 -0
  51. package/dist/api/utilities/media-type.js +60 -0
  52. package/dist/api/utilities/media-type.js.map +1 -0
  53. package/dist/api/utilities/pixel-format.d.ts +94 -0
  54. package/dist/api/utilities/pixel-format.js +102 -0
  55. package/dist/api/utilities/pixel-format.js.map +1 -0
  56. package/dist/api/utilities/sample-format.d.ts +132 -0
  57. package/dist/api/utilities/sample-format.js +144 -0
  58. package/dist/api/utilities/sample-format.js.map +1 -0
  59. package/dist/api/utilities/streaming.d.ts +104 -0
  60. package/dist/api/utilities/streaming.js +137 -0
  61. package/dist/api/utilities/streaming.js.map +1 -0
  62. package/dist/api/utilities/timestamp.d.ts +187 -0
  63. package/dist/api/utilities/timestamp.js +200 -0
  64. package/dist/api/utilities/timestamp.js.map +1 -0
  65. package/dist/api/utils.d.ts +61 -0
  66. package/dist/api/utils.js +330 -0
  67. package/dist/api/utils.js.map +1 -0
  68. package/dist/index.d.ts +2 -0
  69. package/dist/index.js +5 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/lib/audio-fifo.d.ts +339 -0
  72. package/dist/lib/audio-fifo.js +365 -0
  73. package/dist/lib/audio-fifo.js.map +1 -0
  74. package/dist/lib/binding.d.ts +192 -0
  75. package/dist/lib/binding.js +70 -0
  76. package/dist/lib/binding.js.map +1 -0
  77. package/dist/lib/bitstream-filter-context.d.ts +345 -0
  78. package/dist/lib/bitstream-filter-context.js +407 -0
  79. package/dist/lib/bitstream-filter-context.js.map +1 -0
  80. package/dist/lib/bitstream-filter.d.ts +124 -0
  81. package/dist/lib/bitstream-filter.js +138 -0
  82. package/dist/lib/bitstream-filter.js.map +1 -0
  83. package/dist/lib/channel-layouts.d.ts +51 -0
  84. package/dist/lib/channel-layouts.js +55 -0
  85. package/dist/lib/channel-layouts.js.map +1 -0
  86. package/dist/lib/codec-context.d.ts +763 -0
  87. package/dist/lib/codec-context.js +974 -0
  88. package/dist/lib/codec-context.js.map +1 -0
  89. package/dist/lib/codec-parameters.d.ts +362 -0
  90. package/dist/lib/codec-parameters.js +460 -0
  91. package/dist/lib/codec-parameters.js.map +1 -0
  92. package/dist/lib/codec-parser.d.ts +185 -0
  93. package/dist/lib/codec-parser.js +193 -0
  94. package/dist/lib/codec-parser.js.map +1 -0
  95. package/dist/lib/codec.d.ts +432 -0
  96. package/dist/lib/codec.js +492 -0
  97. package/dist/lib/codec.js.map +1 -0
  98. package/dist/lib/constants.d.ts +2037 -0
  99. package/dist/lib/constants.js +1659 -0
  100. package/dist/lib/constants.js.map +1 -0
  101. package/dist/lib/dictionary.d.ts +371 -0
  102. package/dist/lib/dictionary.js +406 -0
  103. package/dist/lib/dictionary.js.map +1 -0
  104. package/dist/lib/error.d.ts +216 -0
  105. package/dist/lib/error.js +254 -0
  106. package/dist/lib/error.js.map +1 -0
  107. package/dist/lib/filter-context.d.ts +445 -0
  108. package/dist/lib/filter-context.js +505 -0
  109. package/dist/lib/filter-context.js.map +1 -0
  110. package/dist/lib/filter-graph.d.ts +556 -0
  111. package/dist/lib/filter-graph.js +608 -0
  112. package/dist/lib/filter-graph.js.map +1 -0
  113. package/dist/lib/filter-inout.d.ts +205 -0
  114. package/dist/lib/filter-inout.js +264 -0
  115. package/dist/lib/filter-inout.js.map +1 -0
  116. package/dist/lib/filter.d.ts +231 -0
  117. package/dist/lib/filter.js +260 -0
  118. package/dist/lib/filter.js.map +1 -0
  119. package/dist/lib/format-context.d.ts +798 -0
  120. package/dist/lib/format-context.js +845 -0
  121. package/dist/lib/format-context.js.map +1 -0
  122. package/dist/lib/frame.d.ts +784 -0
  123. package/dist/lib/frame.js +933 -0
  124. package/dist/lib/frame.js.map +1 -0
  125. package/dist/lib/hardware-device-context.d.ts +407 -0
  126. package/dist/lib/hardware-device-context.js +429 -0
  127. package/dist/lib/hardware-device-context.js.map +1 -0
  128. package/dist/lib/hardware-frames-context.d.ts +374 -0
  129. package/dist/lib/hardware-frames-context.js +430 -0
  130. package/dist/lib/hardware-frames-context.js.map +1 -0
  131. package/dist/lib/index.d.ts +31 -0
  132. package/dist/lib/index.js +54 -0
  133. package/dist/lib/index.js.map +1 -0
  134. package/dist/lib/input-format.d.ts +216 -0
  135. package/dist/lib/input-format.js +246 -0
  136. package/dist/lib/input-format.js.map +1 -0
  137. package/dist/lib/io-context.d.ts +495 -0
  138. package/dist/lib/io-context.js +550 -0
  139. package/dist/lib/io-context.js.map +1 -0
  140. package/dist/lib/log.d.ts +201 -0
  141. package/dist/lib/log.js +219 -0
  142. package/dist/lib/log.js.map +1 -0
  143. package/dist/lib/native-types.d.ts +719 -0
  144. package/dist/lib/native-types.js +2 -0
  145. package/dist/lib/native-types.js.map +1 -0
  146. package/dist/lib/option.d.ts +589 -0
  147. package/dist/lib/option.js +853 -0
  148. package/dist/lib/option.js.map +1 -0
  149. package/dist/lib/output-format.d.ts +179 -0
  150. package/dist/lib/output-format.js +205 -0
  151. package/dist/lib/output-format.js.map +1 -0
  152. package/dist/lib/packet.d.ts +487 -0
  153. package/dist/lib/packet.js +558 -0
  154. package/dist/lib/packet.js.map +1 -0
  155. package/dist/lib/rational.d.ts +210 -0
  156. package/dist/lib/rational.js +233 -0
  157. package/dist/lib/rational.js.map +1 -0
  158. package/dist/lib/software-resample-context.d.ts +572 -0
  159. package/dist/lib/software-resample-context.js +610 -0
  160. package/dist/lib/software-resample-context.js.map +1 -0
  161. package/dist/lib/software-scale-context.d.ts +290 -0
  162. package/dist/lib/software-scale-context.js +308 -0
  163. package/dist/lib/software-scale-context.js.map +1 -0
  164. package/dist/lib/stream.d.ts +322 -0
  165. package/dist/lib/stream.js +408 -0
  166. package/dist/lib/stream.js.map +1 -0
  167. package/dist/lib/types.d.ts +59 -0
  168. package/dist/lib/types.js +8 -0
  169. package/dist/lib/types.js.map +1 -0
  170. package/dist/lib/utilities.d.ts +346 -0
  171. package/dist/lib/utilities.js +424 -0
  172. package/dist/lib/utilities.js.map +1 -0
  173. package/install/check.js +113 -0
  174. package/install/ffmpeg.js +163 -0
  175. package/package.json +107 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/api/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,KAAK,EACL,MAAM,IAAI,cAAc,EACxB,WAAW,IAAI,mBAAmB,EAClC,WAAW,IAAI,mBAAmB,EAClC,MAAM,GACP,MAAM,iBAAiB,CAAC;AAoCzB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,SAAS;IACZ,KAAK,CAAsB;IAC3B,YAAY,GAAiC,IAAI,CAAC;IAClD,aAAa,GAAiC,IAAI,CAAC;IACnD,MAAM,CAAe;IACrB,SAAS,CAAc;IACvB,WAAW,GAAG,KAAK,CAAC;IACpB,aAAa,GAAG,KAAK,CAAC,CAAC,yCAAyC;IAChE,QAAQ,CAA0B,CAAC,uCAAuC;IAC1E,WAAW,CAAmD,CAAC,mBAAmB;IAE1F;;;;;;;;;OASG;IACH,YAAoB,MAAoB,EAAE,QAAiC;QACzE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACnF,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,KAA0B,EAAE,UAAyB,EAAE;QAC9F,IAAI,MAAoB,CAAC;QAEzB,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,KAAK,kBAAkB,EAAE,CAAC;gBACpD,MAAM,GAAG;oBACP,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;oBAC3B,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;oBAC7B,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAuB;oBACnD,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,KAAK,CAAC,UAAU;oBAC3B,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,iBAAiB;iBACpD,CAAC;YACJ,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,KAAK,kBAAkB,EAAE,CAAC;gBAC3D,MAAM,GAAG;oBACP,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU;oBACrC,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAwB;oBACrD,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI;oBAChD,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3B,MAAM,GAAG;oBACP,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;iBAC3C,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG;oBACP,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,aAAa,EAAE,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE;oBAC7G,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEvD,yEAAyE;QACzE,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,WAAW,GAAG,WAAW;aAC5B,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,oDAAoD;YACpD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjC,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,qEAAqE;QACrE,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACpE,iCAAiC;QACjC,IAAI,0BAA0B,GAAG,KAAK,CAAC;QACvC,IAAI,mBAAmB,GAAG,KAAK,CAAC;QAEhC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU;gBAAE,SAAS;YAE1B,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC5D,IAAI,cAAc,EAAE,CAAC;gBACnB,sCAAsC;gBACtC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1D,mBAAmB,GAAG,IAAI,CAAC;oBAC3B,6DAA6D;oBAC7D,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;wBAC7D,0BAA0B,GAAG,IAAI,CAAC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,MAAM,CAAC,aAAa,GAAG,aAAa,IAAI,CAAC,0BAA0B,IAAI,CAAC,WAAW,CAAC,CAAC;QAErF,wDAAwD;QACxD,IAAI,mBAAmB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,wDAAwD,GAAG,yCAAyC,CAAC,CAAC;QACxH,CAAC;QAED,yCAAyC;QACzC,4FAA4F;QAC5F,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;YACvF,qBAAqB;YACrB,IAAI,OAAO,CAAC,QAAQ,EAAE,aAAa,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC/D,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;YACtD,CAAC;YACD,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,oFAAoF;YACpF,MAAM,CAAC,WAAW,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;QAChD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,OAAO,CAAC,KAAY;QACxB,mCAAmC;QACnC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,oDAAoD;YACpD,IAAI,IAAI,CAAC,QAAQ,EAAE,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACjE,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACtD,iEAAiE;gBACjE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;gBACnE,CAAC;gBACD,wBAAwB;gBACxB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC9E,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;iBAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACxF,CAAC;iBAAM,CAAC;gBACN,+DAA+D;gBAC/D,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC9E,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,uBAAuB;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChE,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;QAElE,4BAA4B;QAC5B,MAAM,WAAW,GAAG,IAAI,KAAK,EAAE,CAAC;QAChC,WAAW,CAAC,KAAK,EAAE,CAAC;QAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAExE,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;aAAM,IAAI,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC;YAClD,kBAAkB;YAClB,WAAW,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,EAAE,CAAC;YACnB,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,eAAe,CAAC,MAAe;QACnC,MAAM,YAAY,GAAY,EAAE,CAAC;QAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YAED,8BAA8B;YAC9B,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxC,IAAI,CAAC,UAAU;oBAAE,MAAM;gBACvB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE/D,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,IAAI,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC5E,OAAO,IAAI,CAAC;YACd,CAAC;YACD,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,qCAAqC,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;YACjD,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,oBAAoB;QACpB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAEnB,6BAA6B;QAC7B,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,MAA6B;QACzC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,sBAAsB;gBACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,MAAM,CAAC;gBACf,CAAC;gBAED,4BAA4B;gBAC5B,OAAO,IAAI,EAAE,CAAC;oBACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;oBACtC,IAAI,CAAC,QAAQ;wBAAE,MAAM;oBACrB,MAAM,QAAQ,CAAC;gBACjB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,wCAAwC;gBACxC,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS;gBAAE,MAAM;YACtB,MAAM,SAAS,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,mBAAmB;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC;IACvF,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,OAAsB;QAClE,iBAAiB;QACjB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEnB,sBAAsB;QACtB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;QACzC,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACjD,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,qBAAqB;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,2BAA2B;QAC3B,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;QAEzC,oEAAoE;QACpE,IAAI,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACnC,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;oBAChC,qDAAqD;oBACrD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;oBAChC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC5D,6CAA6C;wBAC7C,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBACtD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACtC,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,kCAAkC,CAAC,CAAC;QAElE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACK,kBAAkB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,mBAAmB,CAAC,CAAC;QACpD,CAAC;QAED,qDAAqD;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAE5E,IAAI,WAAW,EAAE,CAAC;YAChB,8DAA8D;YAC9D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YAED,iEAAiE;YACjE,MAAM,WAAW,GAAG,IAAI,CAAC,MAA2B,CAAC;YACrD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC;gBACnD,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,MAAM,EAAE,WAAW,CAAC,WAAW;gBAC/B,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,SAAS,EAAE,WAAW,CAAC,SAAS;gBAChC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;gBAChD,WAAW,EAAE,WAAW,CAAC,WAAW;aACrC,CAAC,CAAC;YACH,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,qEAAqE,CAAC,CAAC;YAErG,6CAA6C;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,oCAAoC,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,kDAAkD;YAClD,IAAI,IAAY,CAAC;YACjB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;gBACxB,IAAI,GAAG,cAAc,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,YAAY,GAAG,CAAC,WAAW,cAAc,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;gBAE5H,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;oBAClB,IAAI,IAAI,eAAe,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;gBAClE,CAAC;gBAED,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;oBAC1B,IAAI,IAAI,iBAAiB,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;gBACpF,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;gBACxB,wCAAwC;gBACxC,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC3D,+DAA+D;gBAC/D,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;gBACzF,IAAI,GAAG,eAAe,GAAG,CAAC,UAAU,eAAe,aAAa,mBAAmB,aAAa,cAAc,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YACvJ,CAAC;YAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACtE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,gBAAgB;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;QAC/E,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,mBAAmB,CAAC,CAAC;QACpD,CAAC;QAED,sDAAsD;QACtD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,sBAAsB,CAAC,WAAmB;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YACtE,qCAAqC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;YAC7D,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,+BAA+B,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC1C,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACzC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC;QACpB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;QACtC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAElB,yBAAyB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9D,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,oCAAoC,CAAC,CAAC;QAEpE,kCAAkC;QAClC,MAAM,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,WAAW,CAAC,MAAc,EAAE,GAAW,EAAE,GAAW,EAAE,KAAuB;QAC3E,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAE/D,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;QACpE,CAAC;QAED,OAAQ,MAAc,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,YAAY,CAAC,MAAc,EAAE,GAAW,EAAE,GAAW,EAAE,EAAU,EAAE,KAAuB;QACxF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACjE,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,aAAa;IACxB;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,KAAa,EAAE,MAAc,EAAE,KAAc;QACxD,MAAM,IAAI,GAAG,SAAS,KAAK,IAAI,MAAM,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,KAAa,EAAE,MAAc,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;QACrD,OAAO,QAAQ,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,WAAmC;QAC/C,MAAM,UAAU,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,CAAC;QAC/G,OAAO,UAAU,UAAU,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,KAAa;QACzB,OAAO,UAAU,KAAK,SAAS,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK;QACV,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,IAAkB,EAAE,KAAa,EAAE,QAAgB;QAC7D,OAAO,UAAU,IAAI,OAAO,KAAK,MAAM,QAAQ,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC;QACzB,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAc;QAC1B,OAAO,UAAU,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,YAAqC,EAAE,UAAmB,EAAE,aAAsB;QAC/F,MAAM,UAAU,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,CAAC;QACjH,IAAI,MAAM,GAAG,uBAAuB,UAAU,EAAE,CAAC;QACjD,IAAI,UAAU;YAAE,MAAM,IAAI,iBAAiB,UAAU,EAAE,CAAC;QACxD,IAAI,aAAa;YAAE,MAAM,IAAI,oBAAoB,aAAa,EAAE,CAAC;QACjE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,MAAc;QAC1B,OAAO,UAAU,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAkB,EAAE,KAAa,EAAE,QAAgB;QAC9D,OAAO,WAAW,IAAI,OAAO,KAAK,MAAM,QAAQ,EAAE,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,WAA6C,SAAS;QAC5E,OAAO,eAAe,MAAM,aAAa,QAAQ,EAAE,CAAC;IACtD,CAAC;CACF"}
@@ -0,0 +1,318 @@
1
+ /**
2
+ * HardwareContext - High-level Hardware Acceleration API
3
+ *
4
+ * Provides simplified access to hardware acceleration features.
5
+ * Automatically detects and configures hardware devices for encoding/decoding.
6
+ *
7
+ * Wraps the low-level HardwareDeviceContext and HardwareFramesContext.
8
+ * Manages lifecycle of hardware resources with automatic cleanup.
9
+ *
10
+ * @module api/hardware
11
+ */
12
+ import { HardwareDeviceContext, HardwareFramesContext } from '../lib/index.js';
13
+ import type { AVCodecID, AVHWDeviceType, AVPixelFormat } from '../lib/index.js';
14
+ import type { HardwareOptions } from './types.js';
15
+ /**
16
+ * HardwareContext - Simplified hardware acceleration management.
17
+ *
18
+ * Provides automatic detection and configuration of hardware acceleration.
19
+ * Manages device contexts and frame contexts for hardware encoding/decoding.
20
+ *
21
+ * Supports various hardware types including VideoToolbox (macOS), CUDA,
22
+ * VAAPI (Linux), D3D11VA/D3D12VA (Windows), and more.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * import { HardwareContext } from 'node-av/api';
27
+ *
28
+ * // Auto-detect best available hardware
29
+ * const hw = await HardwareContext.auto();
30
+ * if (hw) {
31
+ * console.log(`Using hardware: ${hw.deviceType}`);
32
+ * decoder.hwDeviceCtx = hw.deviceContext;
33
+ * }
34
+ *
35
+ * // Use specific hardware
36
+ * const cuda = await HardwareContext.create(AV_HWDEVICE_TYPE_CUDA);
37
+ * encoder.hwDeviceCtx = cuda.deviceContext;
38
+ *
39
+ * // Clean up when done
40
+ * hw?.dispose();
41
+ * cuda.dispose();
42
+ * ```
43
+ */
44
+ export declare class HardwareContext implements Disposable {
45
+ private _deviceContext;
46
+ private _framesContext?;
47
+ private _deviceType;
48
+ private _deviceName?;
49
+ private _devicePixelFormat;
50
+ private _isDisposed;
51
+ private waitingComponents;
52
+ /**
53
+ * Create a new HardwareContext instance.
54
+ *
55
+ * Private constructor - use HardwareContext.create() or HardwareContext.auto() to create instances.
56
+ *
57
+ * Stores the device context and type for later use.
58
+ *
59
+ * @param deviceContext - Initialized hardware device context
60
+ * @param deviceType - Hardware device type
61
+ * @param deviceName - Optional device name/identifier
62
+ */
63
+ private constructor();
64
+ /**
65
+ * Auto-detect and create the best available hardware context.
66
+ *
67
+ * Tries hardware types in order of preference based on platform.
68
+ * Returns null if no hardware acceleration is available.
69
+ *
70
+ * Platform-specific preferences:
71
+ * - macOS: VideoToolbox
72
+ * - Windows: D3D12VA, D3D11VA, DXVA2, QSV, CUDA
73
+ * - Linux: VAAPI, VDPAU, CUDA, Vulkan, DRM
74
+ *
75
+ * @param options - Optional hardware configuration
76
+ *
77
+ * @returns Promise resolving to HardwareContext or null
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * const hw = await HardwareContext.auto();
82
+ * if (hw) {
83
+ * console.log(`Auto-detected: ${hw.deviceTypeName}`);
84
+ * }
85
+ * ```
86
+ */
87
+ static auto(options?: HardwareOptions): Promise<HardwareContext | null>;
88
+ /**
89
+ * Create a hardware context for a specific device type.
90
+ *
91
+ * Creates and initializes a hardware device context using FFmpeg's
92
+ * av_hwdevice_ctx_create() internally.
93
+ *
94
+ * @param device - Device type name (e.g., AV_HWDEVICE_TYPE_CUDA, AV_HWDEVICE_TYPE_VAAPI, AV_HWDEVICE_TYPE_VIDEOTOOLBOX)
95
+ * @param deviceName - Optional device name/index
96
+ * @param options - Optional device initialization options
97
+ *
98
+ * @returns Promise resolving to HardwareContext
99
+ *
100
+ * @throws {Error} If device type is not supported or initialization fails
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * // Create CUDA context
105
+ * const cuda = await HardwareContext.create(AV_HWDEVICE_TYPE_CUDA, '0');
106
+ *
107
+ * // Create VAAPI context
108
+ * const vaapi = await HardwareContext.create(AV_HWDEVICE_TYPE_VAAPI, '/dev/dri/renderD128');
109
+ * ```
110
+ */
111
+ static create(device: AVHWDeviceType, deviceName?: string, options?: Record<string, string>): Promise<HardwareContext>;
112
+ /**
113
+ * List all available hardware device types.
114
+ *
115
+ * Uses av_hwdevice_iterate_types() internally to enumerate
116
+ * all hardware types supported by the FFmpeg build.
117
+ *
118
+ * @returns Array of available device type names
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * const available = HardwareContext.listAvailable();
123
+ * console.log('Available hardware:', available.join(', '));
124
+ * ```
125
+ */
126
+ static listAvailable(): string[];
127
+ /**
128
+ * Get the hardware device context.
129
+ *
130
+ * This can be assigned to CodecContext.hwDeviceCtx for hardware acceleration.
131
+ *
132
+ * @returns Hardware device context
133
+ */
134
+ get deviceContext(): HardwareDeviceContext;
135
+ /**
136
+ * Get the hardware frames context.
137
+ *
138
+ * Created on-demand when needed for frame allocation.
139
+ *
140
+ * @returns Hardware frames context or undefined
141
+ */
142
+ get framesContext(): HardwareFramesContext | undefined;
143
+ /**
144
+ * Set the hardware frames context.
145
+ *
146
+ * First component to set it "wins" - subsequent sets are ignored.
147
+ * This is typically called by the decoder after decoding the first frame,
148
+ * allowing other components (encoder, filters) to share the same frames context.
149
+ *
150
+ * @param framesContext - The hardware frames context to set
151
+ */
152
+ set framesContext(framesContext: HardwareFramesContext | undefined);
153
+ /**
154
+ * Get the device type enum value.
155
+ *
156
+ * @returns AVHWDeviceType enum value
157
+ */
158
+ get deviceType(): AVHWDeviceType;
159
+ /**
160
+ * Get the hardware device type name.
161
+ *
162
+ * Uses FFmpeg's native av_hwdevice_get_type_name() function.
163
+ *
164
+ * @returns Device type name as string (e.g., 'cuda', 'videotoolbox')
165
+ */
166
+ get deviceTypeName(): string;
167
+ /**
168
+ * Get the device name/identifier.
169
+ *
170
+ * @returns Device name or undefined
171
+ */
172
+ get deviceName(): string | undefined;
173
+ /**
174
+ * Get the device pixel format.
175
+ *
176
+ * @returns Device pixel format
177
+ */
178
+ get devicePixelFormat(): AVPixelFormat;
179
+ /**
180
+ * Check if this hardware context has been disposed.
181
+ *
182
+ * @returns True if disposed
183
+ */
184
+ get isDisposed(): boolean;
185
+ /**
186
+ * Create or ensure a frames context exists for this hardware device.
187
+ *
188
+ * If a frames context already exists with different dimensions, throws an error.
189
+ * This is used for raw/generated frames that need hardware processing.
190
+ *
191
+ * @param width - Frame width
192
+ * @param height - Frame height
193
+ * @param swFormat - Software pixel format (default: AV_PIX_FMT_NV12)
194
+ * @param initialPoolSize - Initial frame pool size (default: 20)
195
+ *
196
+ * @returns HardwareFramesContext - Either existing or newly created
197
+ *
198
+ * @throws {Error} If frames context exists with incompatible dimensions
199
+ *
200
+ * @example
201
+ * ```typescript
202
+ * // For raw frames
203
+ * hw.ensureFramesContext(1920, 1080, AV_PIX_FMT_YUV420P);
204
+ * ```
205
+ */
206
+ ensureFramesContext(width: number, height: number, swFormat?: AVPixelFormat, initialPoolSize?: number): HardwareFramesContext;
207
+ /**
208
+ * Wait for frames context to become available.
209
+ *
210
+ * Used by components that need hw_frames_ctx but don't have it yet.
211
+ * Resolves when another component (typically decoder) sets the frames context.
212
+ *
213
+ * @param timeout - Maximum time to wait in milliseconds (default: 5000)
214
+ *
215
+ * @returns Promise that resolves with the frames context
216
+ *
217
+ * @throws {Error} If timeout expires or HardwareContext is disposed
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * // Wait up to 3 seconds for frames context
222
+ * const framesCtx = await hw.waitForFramesContext(3000);
223
+ * ```
224
+ */
225
+ waitForFramesContext(timeout?: number): Promise<HardwareFramesContext>;
226
+ /**
227
+ * Get the hardware pixel format for this device type.
228
+ *
229
+ * Maps device types to their corresponding pixel formats.
230
+ *
231
+ * Returns the appropriate AV_PIX_FMT_* constant for the hardware type.
232
+ *
233
+ * @returns Hardware pixel format
234
+ */
235
+ getHardwarePixelFormat(): AVPixelFormat;
236
+ /**
237
+ * Check if this hardware type supports a specific codec.
238
+ *
239
+ * Checks both decoder and encoder support by querying FFmpeg's codec configurations.
240
+ *
241
+ * Uses avcodec_get_hw_config() internally to check hardware support.
242
+ *
243
+ * @param codecId - Codec ID from AVCodecID enum
244
+ * @param isEncoder - Check for encoder support (default: false for decoder)
245
+ *
246
+ * @returns True if codec is supported by this hardware
247
+ */
248
+ supportsCodec(codecId: AVCodecID, isEncoder?: boolean): boolean;
249
+ /**
250
+ * Check if this hardware device type supports a specific pixel format.
251
+ *
252
+ * @param codecId - Codec ID from AVCodecID enum
253
+ * @param pixelFormat - Pixel format to check
254
+ * @param isEncoder - Check for encoder support (default: false for decoder)
255
+ *
256
+ * @returns True if pixel format is supported by this hardware
257
+ */
258
+ supportsPixelFormat(codecId: AVCodecID, pixelFormat: AVPixelFormat, isEncoder?: boolean): boolean;
259
+ /**
260
+ * Find all codecs that support this hardware device.
261
+ *
262
+ * Uses FFmpeg's native codec list to find compatible codecs.
263
+ *
264
+ * Iterates through all codecs using av_codec_iterate() and checks
265
+ * their hardware configurations.
266
+ *
267
+ * @param isEncoder - Find encoders (true) or decoders (false)
268
+ *
269
+ * @returns Array of codec names that support this hardware
270
+ */
271
+ findSupportedCodecs(isEncoder?: boolean): string[];
272
+ /**
273
+ * Clean up and free hardware resources.
274
+ *
275
+ * Safe to call multiple times - subsequent calls are no-ops.
276
+ * Called automatically by Decoder/Encoder on close.
277
+ *
278
+ * Frees both frames context (if created) and device context.
279
+ * Notifies any waiting components that disposal occurred.
280
+ */
281
+ dispose(): void;
282
+ /**
283
+ * Create hardware context from device type.
284
+ *
285
+ * Internal factory method using av_hwdevice_ctx_create().
286
+ *
287
+ * @param deviceType - AVHWDeviceType enum value
288
+ * @param deviceName - Optional device name/index
289
+ * @param options - Optional device options
290
+ *
291
+ * @returns HardwareContext or null if creation fails
292
+ */
293
+ private static createFromType;
294
+ /**
295
+ * Get platform-specific preference order for hardware types.
296
+ *
297
+ * Returns the optimal hardware types for the current platform.
298
+ *
299
+ * @returns Array of AVHWDeviceType values in preference order
300
+ */
301
+ private static getPreferenceOrder;
302
+ /**
303
+ * Automatic cleanup when using 'using' statement.
304
+ *
305
+ * Implements the Disposable interface for automatic cleanup.
306
+ *
307
+ * Calls dispose() to free hardware resources.
308
+ *
309
+ * @example
310
+ * ```typescript
311
+ * {
312
+ * using hw = await HardwareContext.auto();
313
+ * // Use hardware context...
314
+ * } // Automatically disposed
315
+ * ```
316
+ */
317
+ [Symbol.dispose](): void;
318
+ }