node-av 1.3.0 → 2.1.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.
- package/README.md +47 -40
- package/binding.gyp +12 -0
- package/dist/api/bitstream-filter.d.ts +134 -2
- package/dist/api/bitstream-filter.js +200 -2
- package/dist/api/bitstream-filter.js.map +1 -1
- package/dist/api/decoder.d.ts +261 -105
- package/dist/api/decoder.js +384 -171
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/encoder.d.ts +338 -74
- package/dist/api/encoder.js +546 -188
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter-presets.d.ts +479 -1513
- package/dist/api/filter-presets.js +1044 -2005
- package/dist/api/filter-presets.js.map +1 -1
- package/dist/api/filter.d.ts +370 -150
- package/dist/api/filter.js +647 -364
- package/dist/api/filter.js.map +1 -1
- package/dist/api/hardware.d.ts +25 -31
- package/dist/api/hardware.js +36 -70
- package/dist/api/hardware.js.map +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/io-stream.d.ts +6 -0
- package/dist/api/io-stream.js +2 -0
- package/dist/api/io-stream.js.map +1 -1
- package/dist/api/media-input.d.ts +208 -2
- package/dist/api/media-input.js +356 -8
- package/dist/api/media-input.js.map +1 -1
- package/dist/api/media-output.d.ts +142 -104
- package/dist/api/media-output.js +446 -179
- package/dist/api/media-output.js.map +1 -1
- package/dist/api/pipeline.d.ts +82 -17
- package/dist/api/pipeline.js +80 -42
- package/dist/api/pipeline.js.map +1 -1
- package/dist/api/types.d.ts +24 -57
- package/dist/api/utils.js +2 -0
- package/dist/api/utils.js.map +1 -1
- package/dist/lib/audio-fifo.d.ts +103 -0
- package/dist/lib/audio-fifo.js +109 -0
- package/dist/lib/audio-fifo.js.map +1 -1
- package/dist/lib/binding.d.ts +1 -0
- package/dist/lib/binding.js.map +1 -1
- package/dist/lib/bitstream-filter-context.d.ts +79 -0
- package/dist/lib/bitstream-filter-context.js +83 -0
- package/dist/lib/bitstream-filter-context.js.map +1 -1
- package/dist/lib/bitstream-filter.d.ts +2 -0
- package/dist/lib/bitstream-filter.js +2 -0
- package/dist/lib/bitstream-filter.js.map +1 -1
- package/dist/lib/codec-context.d.ts +168 -0
- package/dist/lib/codec-context.js +178 -0
- package/dist/lib/codec-context.js.map +1 -1
- package/dist/lib/codec-parameters.d.ts +3 -0
- package/dist/lib/codec-parameters.js +3 -0
- package/dist/lib/codec-parameters.js.map +1 -1
- package/dist/lib/codec-parser.d.ts +6 -0
- package/dist/lib/codec-parser.js +6 -0
- package/dist/lib/codec-parser.js.map +1 -1
- package/dist/lib/codec.d.ts +12 -0
- package/dist/lib/codec.js +12 -0
- package/dist/lib/codec.js.map +1 -1
- package/dist/lib/dictionary.d.ts +18 -2
- package/dist/lib/dictionary.js +18 -2
- package/dist/lib/dictionary.js.map +1 -1
- package/dist/lib/error.d.ts +8 -0
- package/dist/lib/error.js +9 -0
- package/dist/lib/error.js.map +1 -1
- package/dist/lib/filter-context.d.ts +119 -2
- package/dist/lib/filter-context.js +119 -0
- package/dist/lib/filter-context.js.map +1 -1
- package/dist/lib/filter-graph.d.ts +80 -0
- package/dist/lib/filter-graph.js +84 -0
- package/dist/lib/filter-graph.js.map +1 -1
- package/dist/lib/filter-inout.d.ts +1 -0
- package/dist/lib/filter-inout.js +1 -0
- package/dist/lib/filter-inout.js.map +1 -1
- package/dist/lib/filter.d.ts +2 -0
- package/dist/lib/filter.js +2 -0
- package/dist/lib/filter.js.map +1 -1
- package/dist/lib/format-context.d.ts +356 -20
- package/dist/lib/format-context.js +375 -23
- package/dist/lib/format-context.js.map +1 -1
- package/dist/lib/frame.d.ts +84 -1
- package/dist/lib/frame.js +96 -0
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/hardware-device-context.d.ts +8 -0
- package/dist/lib/hardware-device-context.js +8 -0
- package/dist/lib/hardware-device-context.js.map +1 -1
- package/dist/lib/hardware-frames-context.d.ts +55 -0
- package/dist/lib/hardware-frames-context.js +57 -0
- package/dist/lib/hardware-frames-context.js.map +1 -1
- package/dist/lib/input-format.d.ts +43 -3
- package/dist/lib/input-format.js +48 -0
- package/dist/lib/input-format.js.map +1 -1
- package/dist/lib/io-context.d.ts +212 -0
- package/dist/lib/io-context.js +228 -0
- package/dist/lib/io-context.js.map +1 -1
- package/dist/lib/log.d.ts +2 -0
- package/dist/lib/log.js +2 -0
- package/dist/lib/log.js.map +1 -1
- package/dist/lib/native-types.d.ts +39 -1
- package/dist/lib/option.d.ts +90 -0
- package/dist/lib/option.js +97 -0
- package/dist/lib/option.js.map +1 -1
- package/dist/lib/output-format.d.ts +4 -0
- package/dist/lib/output-format.js +4 -0
- package/dist/lib/output-format.js.map +1 -1
- package/dist/lib/packet.d.ts +7 -0
- package/dist/lib/packet.js +7 -0
- package/dist/lib/packet.js.map +1 -1
- package/dist/lib/rational.d.ts +1 -0
- package/dist/lib/rational.js +1 -0
- package/dist/lib/rational.js.map +1 -1
- package/dist/lib/software-resample-context.d.ts +64 -0
- package/dist/lib/software-resample-context.js +66 -0
- package/dist/lib/software-resample-context.js.map +1 -1
- package/dist/lib/software-scale-context.d.ts +98 -0
- package/dist/lib/software-scale-context.js +102 -0
- package/dist/lib/software-scale-context.js.map +1 -1
- package/dist/lib/stream.d.ts +1 -0
- package/dist/lib/stream.js +1 -0
- package/dist/lib/stream.js.map +1 -1
- package/dist/lib/utilities.d.ts +60 -0
- package/dist/lib/utilities.js +60 -0
- package/dist/lib/utilities.js.map +1 -1
- package/package.json +18 -18
- package/release_notes.md +0 -29
package/dist/api/decoder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/api/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"decoder.js","sourceRoot":"","sources":["../../src/api/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAMtF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,OAAO,OAAO;IACV,YAAY,CAAe;IAC3B,KAAK,CAAQ;IACb,KAAK,CAAQ;IACb,MAAM,CAAS;IACf,WAAW,GAAG,IAAI,CAAC;IACnB,QAAQ,GAAG,KAAK,CAAC;IACjB,QAAQ,CAA0B;IAE1C;;;;;;;;;;;OAWG;IACH,YAAoB,YAA0B,EAAE,KAAY,EAAE,MAAc,EAAE,QAAiC;QAC7G,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+CG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,UAA0B,EAAE;QAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,8BAA8B;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,uCAAuC;QACvC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACxC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAElC,mCAAmC;QACnC,MAAM,GAAG,GAAG,YAAY,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,YAAY,CAAC,WAAW,EAAE,CAAC;YAC3B,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;QACnE,CAAC;QAED,uBAAuB;QACvB,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE3C,gBAAgB;QAChB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;QAC7C,CAAC;QAED,uDAAuD;QACvD,8DAA8D;QAC9D,iDAAiD;QACjD,MAAM,WAAW,GAAG,KAAK,CAAC,4BAA4B,EAAE,CAAC;QACzD,IAAI,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACpC,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAElF,aAAa;QACb,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,YAAY,CAAC,WAAW,EAAE,CAAC;YAC3B,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC9F,CAAC;IAED;;;;;;;;;;;OAWG;IACH,IAAI,aAAa;QACf,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,UAAU;QACR,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,CAAC;IACtE,CAAC;IAED;;;;;;;;;;;OAWG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,yBAAyB;QACzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YAC3C,8CAA8C;YAC9C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;YAED,kCAAkC;YAClC,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;gBAC/B,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,UAAU,CAAC,MAAc;QACvB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,yBAAyB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YAC3C,8CAA8C;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACjC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC;YACf,CAAC;YAED,kCAAkC;YAClC,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;gBAC/B,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqDG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,OAA8B;QAC1C,kBAAkB;QAClB,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,sCAAsC;gBACtC,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC7C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBACxC,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,yCAAyC;gBACzC,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,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;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,CAAC,UAAU,CAAC,OAAyB;QACnC,kBAAkB;QAClB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,sCAAsC;gBACtC,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBACtC,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,yCAAyC;gBACzC,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS;gBAAE,MAAM;YACtB,MAAM,SAAS,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACnC,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;gBAC3B,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,SAAS;QACP,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACnC,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;gBAC3B,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,CAAC,WAAW;QAChB,oBAAoB;QACpB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAEnB,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,CAAC,eAAe;QACd,oBAAoB;QACpB,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,KAAK,CAAC,OAAO;QACX,4BAA4B;QAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEnB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7D,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACd,qCAAqC;YACrC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACzD,kCAAkC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,QAAQ;YACR,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,WAAW;QACT,4BAA4B;QAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAEnB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3D,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YACd,qCAAqC;YACrC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACzD,kCAAkC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,QAAQ;YACR,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAEhC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,eAAe;QACb,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF"}
|
package/dist/api/encoder.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Codec, CodecContext, Packet } from '../lib/index.js';
|
|
|
2
2
|
import type { AVCodecID } from '../constants/constants.js';
|
|
3
3
|
import type { FFEncoderCodec } from '../constants/encoders.js';
|
|
4
4
|
import type { Frame } from '../lib/index.js';
|
|
5
|
-
import type { EncoderOptions
|
|
5
|
+
import type { EncoderOptions } from './types.js';
|
|
6
6
|
/**
|
|
7
7
|
* High-level encoder for audio and video streams.
|
|
8
8
|
*
|
|
@@ -39,17 +39,18 @@ import type { EncoderOptions, StreamInfo } from './types.js';
|
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
41
41
|
* ```typescript
|
|
42
|
-
* // Hardware-accelerated encoding
|
|
42
|
+
* // Hardware-accelerated encoding with lazy initialization
|
|
43
43
|
* import { HardwareContext } from 'node-av/api';
|
|
44
|
-
* import {
|
|
44
|
+
* import { FF_ENCODER_H264_VIDEOTOOLBOX } from 'node-av/constants';
|
|
45
45
|
*
|
|
46
|
-
* const hw = HardwareContext.
|
|
47
|
-
* const
|
|
48
|
-
*
|
|
46
|
+
* const hw = HardwareContext.auto();
|
|
47
|
+
* const encoderCodec = hw?.getEncoderCodec('h264') ?? FF_ENCODER_H264_VIDEOTOOLBOX;
|
|
48
|
+
* const encoder = await Encoder.create(encoderCodec, {
|
|
49
|
+
* timeBase: video.timeBase,
|
|
49
50
|
* bitrate: '10M'
|
|
50
51
|
* });
|
|
51
52
|
*
|
|
52
|
-
* //
|
|
53
|
+
* // Hardware context will be detected from first frame's hw_frames_ctx
|
|
53
54
|
* for await (const packet of encoder.packets(frames)) {
|
|
54
55
|
* await output.writePacket(packet);
|
|
55
56
|
* packet.free();
|
|
@@ -64,12 +65,16 @@ export declare class Encoder implements Disposable {
|
|
|
64
65
|
private codecContext;
|
|
65
66
|
private packet;
|
|
66
67
|
private codec;
|
|
67
|
-
private
|
|
68
|
-
private
|
|
68
|
+
private initialized;
|
|
69
|
+
private isClosed;
|
|
70
|
+
private opts?;
|
|
69
71
|
/**
|
|
70
72
|
* @param codecContext - Configured codec context
|
|
73
|
+
*
|
|
71
74
|
* @param codec - Encoder codec
|
|
72
|
-
*
|
|
75
|
+
*
|
|
76
|
+
* @param opts - Encoder options as Dictionary
|
|
77
|
+
*
|
|
73
78
|
* @internal
|
|
74
79
|
*/
|
|
75
80
|
private constructor();
|
|
@@ -77,25 +82,26 @@ export declare class Encoder implements Disposable {
|
|
|
77
82
|
* Create an encoder with specified codec and options.
|
|
78
83
|
*
|
|
79
84
|
* Initializes an encoder with the appropriate codec and configuration.
|
|
80
|
-
*
|
|
81
|
-
*
|
|
85
|
+
* Uses lazy initialization - encoder is opened when first frame is received.
|
|
86
|
+
* Hardware context will be automatically detected from first frame if not provided.
|
|
82
87
|
*
|
|
83
88
|
* Direct mapping to avcodec_find_encoder_by_name() or avcodec_find_encoder().
|
|
84
89
|
*
|
|
85
90
|
* @param encoderCodec - Codec name, ID, or instance to use for encoding
|
|
86
|
-
*
|
|
87
|
-
* @param options - Encoder configuration options
|
|
91
|
+
*
|
|
92
|
+
* @param options - Encoder configuration options including required timeBase
|
|
93
|
+
*
|
|
88
94
|
* @returns Configured encoder instance
|
|
89
95
|
*
|
|
90
|
-
* @throws {Error} If encoder not found or
|
|
96
|
+
* @throws {Error} If encoder not found or timeBase not provided
|
|
91
97
|
*
|
|
92
|
-
* @throws {FFmpegError} If codec
|
|
98
|
+
* @throws {FFmpegError} If codec allocation fails
|
|
93
99
|
*
|
|
94
100
|
* @example
|
|
95
101
|
* ```typescript
|
|
96
102
|
* // From decoder stream info
|
|
97
|
-
* const
|
|
98
|
-
*
|
|
103
|
+
* const encoder = await Encoder.create(FF_ENCODER_LIBX264, {
|
|
104
|
+
* timeBase: video.timeBase,
|
|
99
105
|
* bitrate: '5M',
|
|
100
106
|
* gopSize: 60,
|
|
101
107
|
* options: {
|
|
@@ -109,12 +115,7 @@ export declare class Encoder implements Disposable {
|
|
|
109
115
|
* ```typescript
|
|
110
116
|
* // With custom stream info
|
|
111
117
|
* const encoder = await Encoder.create(FF_ENCODER_AAC, {
|
|
112
|
-
*
|
|
113
|
-
* sampleRate: 48000,
|
|
114
|
-
* sampleFormat: AV_SAMPLE_FMT_FLTP,
|
|
115
|
-
* channelLayout: AV_CH_LAYOUT_STEREO,
|
|
116
|
-
* timeBase: { num: 1, den: 48000 }
|
|
117
|
-
* }, {
|
|
118
|
+
* timeBase: audio.timeBase,
|
|
118
119
|
* bitrate: '192k'
|
|
119
120
|
* });
|
|
120
121
|
* ```
|
|
@@ -123,16 +124,16 @@ export declare class Encoder implements Disposable {
|
|
|
123
124
|
* ```typescript
|
|
124
125
|
* // Hardware encoder
|
|
125
126
|
* const hw = HardwareContext.auto();
|
|
126
|
-
* const
|
|
127
|
-
*
|
|
127
|
+
* const encoderCodec = hw?.getEncoderCodec('h264') ?? FF_ENCODER_H264_VIDEOTOOLBOX;
|
|
128
|
+
* const encoder = await Encoder.create(encoderCodec, {
|
|
129
|
+
* timeBase: video.timeBase,
|
|
128
130
|
* bitrate: '8M'
|
|
129
131
|
* });
|
|
130
132
|
* ```
|
|
131
133
|
*
|
|
132
|
-
* @see {@link Decoder.getOutputStreamInfo} For stream info source
|
|
133
134
|
* @see {@link EncoderOptions} For configuration options
|
|
134
135
|
*/
|
|
135
|
-
static create(encoderCodec: FFEncoderCodec | AVCodecID | Codec,
|
|
136
|
+
static create(encoderCodec: FFEncoderCodec | AVCodecID | Codec, options: EncoderOptions): Promise<Encoder>;
|
|
136
137
|
/**
|
|
137
138
|
* Check if encoder is open.
|
|
138
139
|
*
|
|
@@ -144,6 +145,22 @@ export declare class Encoder implements Disposable {
|
|
|
144
145
|
* ```
|
|
145
146
|
*/
|
|
146
147
|
get isEncoderOpen(): boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Check if encoder has been initialized.
|
|
150
|
+
*
|
|
151
|
+
* Returns true after first frame has been processed and encoder opened.
|
|
152
|
+
* Useful for checking if encoder has received frame properties.
|
|
153
|
+
*
|
|
154
|
+
* @returns true if encoder has been initialized with frame data
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```typescript
|
|
158
|
+
* if (!encoder.isEncoderInitialized) {
|
|
159
|
+
* console.log('Encoder will initialize on first frame');
|
|
160
|
+
* }
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
get isEncoderInitialized(): boolean;
|
|
147
164
|
/**
|
|
148
165
|
* Check if encoder uses hardware acceleration.
|
|
149
166
|
*
|
|
@@ -159,16 +176,30 @@ export declare class Encoder implements Disposable {
|
|
|
159
176
|
* @see {@link HardwareContext} For hardware setup
|
|
160
177
|
*/
|
|
161
178
|
isHardware(): boolean;
|
|
179
|
+
/**
|
|
180
|
+
* Check if encoder is ready for processing.
|
|
181
|
+
*
|
|
182
|
+
* @returns true if initialized and ready
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```typescript
|
|
186
|
+
* if (encoder.isReady()) {
|
|
187
|
+
* const packet = await encoder.encode(frame);
|
|
188
|
+
* }
|
|
189
|
+
* ```
|
|
190
|
+
*/
|
|
191
|
+
isReady(): boolean;
|
|
162
192
|
/**
|
|
163
193
|
* Encode a frame to a packet.
|
|
164
194
|
*
|
|
165
195
|
* Sends a frame to the encoder and attempts to receive an encoded packet.
|
|
196
|
+
* On first frame, automatically initializes encoder with frame properties.
|
|
166
197
|
* Handles internal buffering - may return null if more frames needed.
|
|
167
|
-
* Automatically manages encoder state and hardware context binding.
|
|
168
198
|
*
|
|
169
199
|
* Direct mapping to avcodec_send_frame() and avcodec_receive_packet().
|
|
170
200
|
*
|
|
171
201
|
* @param frame - Raw frame to encode (or null to flush)
|
|
202
|
+
*
|
|
172
203
|
* @returns Encoded packet or null if more data needed
|
|
173
204
|
*
|
|
174
205
|
* @throws {Error} If encoder is closed
|
|
@@ -202,6 +233,50 @@ export declare class Encoder implements Disposable {
|
|
|
202
233
|
* @see {@link flush} For end-of-stream handling
|
|
203
234
|
*/
|
|
204
235
|
encode(frame: Frame | null): Promise<Packet | null>;
|
|
236
|
+
/**
|
|
237
|
+
* Encode a frame to a packet synchronously.
|
|
238
|
+
* Synchronous version of encode.
|
|
239
|
+
*
|
|
240
|
+
* Sends a frame to the encoder and attempts to receive an encoded packet.
|
|
241
|
+
* On first frame, automatically initializes encoder with frame properties.
|
|
242
|
+
* Handles internal buffering - may return null if more frames needed.
|
|
243
|
+
*
|
|
244
|
+
* Direct mapping to avcodec_send_frame() and avcodec_receive_packet().
|
|
245
|
+
*
|
|
246
|
+
* @param frame - Raw frame to encode (or null to flush)
|
|
247
|
+
*
|
|
248
|
+
* @returns Encoded packet or null if more data needed
|
|
249
|
+
*
|
|
250
|
+
* @throws {Error} If encoder is closed
|
|
251
|
+
*
|
|
252
|
+
* @throws {FFmpegError} If encoding fails
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* ```typescript
|
|
256
|
+
* const packet = encoder.encodeSync(frame);
|
|
257
|
+
* if (packet) {
|
|
258
|
+
* console.log(`Encoded packet with PTS: ${packet.pts}`);
|
|
259
|
+
* output.writePacketSync(packet);
|
|
260
|
+
* packet.free();
|
|
261
|
+
* }
|
|
262
|
+
* ```
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```typescript
|
|
266
|
+
* // Encode loop
|
|
267
|
+
* for (const frame of decoder.framesSync(packets)) {
|
|
268
|
+
* const packet = encoder.encodeSync(frame);
|
|
269
|
+
* if (packet) {
|
|
270
|
+
* output.writePacketSync(packet);
|
|
271
|
+
* packet.free();
|
|
272
|
+
* }
|
|
273
|
+
* frame.free();
|
|
274
|
+
* }
|
|
275
|
+
* ```
|
|
276
|
+
*
|
|
277
|
+
* @see {@link encode} For async version
|
|
278
|
+
*/
|
|
279
|
+
encodeSync(frame: Frame | null): Packet | null;
|
|
205
280
|
/**
|
|
206
281
|
* Encode frame stream to packet stream.
|
|
207
282
|
*
|
|
@@ -211,7 +286,9 @@ export declare class Encoder implements Disposable {
|
|
|
211
286
|
* Primary interface for stream-based encoding.
|
|
212
287
|
*
|
|
213
288
|
* @param frames - Async iterable of frames (freed automatically)
|
|
214
|
-
*
|
|
289
|
+
*
|
|
290
|
+
* @yields {Packet} Encoded packets (caller must free)
|
|
291
|
+
*
|
|
215
292
|
* @throws {Error} If encoder is closed
|
|
216
293
|
*
|
|
217
294
|
* @throws {FFmpegError} If encoding fails
|
|
@@ -230,11 +307,11 @@ export declare class Encoder implements Disposable {
|
|
|
230
307
|
* // With frame filtering
|
|
231
308
|
* async function* filteredFrames() {
|
|
232
309
|
* for await (const frame of decoder.frames(input.packets())) {
|
|
233
|
-
* await filter.
|
|
234
|
-
* const filtered = await filter.getFrame();
|
|
310
|
+
* const filtered = await filter.process(frame);
|
|
235
311
|
* if (filtered) {
|
|
236
312
|
* yield filtered;
|
|
237
313
|
* }
|
|
314
|
+
* frame.free();
|
|
238
315
|
* }
|
|
239
316
|
* }
|
|
240
317
|
*
|
|
@@ -263,23 +340,70 @@ export declare class Encoder implements Disposable {
|
|
|
263
340
|
*/
|
|
264
341
|
packets(frames: AsyncIterable<Frame>): AsyncGenerator<Packet>;
|
|
265
342
|
/**
|
|
266
|
-
*
|
|
343
|
+
* Encode frame stream to packet stream synchronously.
|
|
344
|
+
* Synchronous version of packets.
|
|
267
345
|
*
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
346
|
+
* High-level sync generator for complete encoding pipeline.
|
|
347
|
+
* Automatically manages frame memory, encoder state,
|
|
348
|
+
* and flushes buffered packets at end.
|
|
349
|
+
* Primary interface for stream-based encoding.
|
|
271
350
|
*
|
|
272
|
-
*
|
|
351
|
+
* @param frames - Iterable of frames (freed automatically)
|
|
273
352
|
*
|
|
274
|
-
* @
|
|
353
|
+
* @yields {Packet} Encoded packets (caller must free)
|
|
275
354
|
*
|
|
276
355
|
* @throws {Error} If encoder is closed
|
|
277
356
|
*
|
|
357
|
+
* @throws {FFmpegError} If encoding fails
|
|
358
|
+
*
|
|
278
359
|
* @example
|
|
279
360
|
* ```typescript
|
|
280
|
-
* //
|
|
361
|
+
* // Basic encoding pipeline
|
|
362
|
+
* for (const packet of encoder.packetsSync(decoder.framesSync(packets))) {
|
|
363
|
+
* output.writePacketSync(packet);
|
|
364
|
+
* packet.free(); // Must free output packets
|
|
365
|
+
* }
|
|
366
|
+
* ```
|
|
367
|
+
*
|
|
368
|
+
* @example
|
|
369
|
+
* ```typescript
|
|
370
|
+
* // With frame filtering
|
|
371
|
+
* function* filteredFrames() {
|
|
372
|
+
* for (const frame of decoder.framesSync(packets)) {
|
|
373
|
+
* const filtered = filter.processSync(frame);
|
|
374
|
+
* if (filtered) {
|
|
375
|
+
* yield filtered;
|
|
376
|
+
* }
|
|
377
|
+
* frame.free();
|
|
378
|
+
* }
|
|
379
|
+
* }
|
|
380
|
+
*
|
|
381
|
+
* for (const packet of encoder.packetsSync(filteredFrames())) {
|
|
382
|
+
* output.writePacketSync(packet);
|
|
383
|
+
* packet.free();
|
|
384
|
+
* }
|
|
385
|
+
* ```
|
|
386
|
+
*
|
|
387
|
+
* @see {@link packets} For async version
|
|
388
|
+
*/
|
|
389
|
+
packetsSync(frames: Iterable<Frame>): Generator<Packet>;
|
|
390
|
+
/**
|
|
391
|
+
* Flush encoder and signal end-of-stream.
|
|
392
|
+
*
|
|
393
|
+
* Sends null frame to encoder to signal end-of-stream.
|
|
394
|
+
* Does nothing if encoder was never initialized or is closed.
|
|
395
|
+
* Must call receive() to get remaining buffered packets.
|
|
396
|
+
*
|
|
397
|
+
* Direct mapping to avcodec_send_frame(NULL).
|
|
398
|
+
*
|
|
399
|
+
* @example
|
|
400
|
+
* ```typescript
|
|
401
|
+
* // Signal end of stream
|
|
402
|
+
* await encoder.flush();
|
|
403
|
+
*
|
|
404
|
+
* // Then get remaining packets
|
|
281
405
|
* let packet;
|
|
282
|
-
* while ((packet = await encoder.
|
|
406
|
+
* while ((packet = await encoder.receive()) !== null) {
|
|
283
407
|
* console.log('Got buffered packet');
|
|
284
408
|
* await output.writePacket(packet);
|
|
285
409
|
* packet.free();
|
|
@@ -287,18 +411,44 @@ export declare class Encoder implements Disposable {
|
|
|
287
411
|
* ```
|
|
288
412
|
*
|
|
289
413
|
* @see {@link flushPackets} For async iteration
|
|
290
|
-
* @see {@link
|
|
414
|
+
* @see {@link receive} For getting buffered packets
|
|
291
415
|
*/
|
|
292
|
-
flush(): Promise<
|
|
416
|
+
flush(): Promise<void>;
|
|
417
|
+
/**
|
|
418
|
+
* Flush encoder and signal end-of-stream synchronously.
|
|
419
|
+
* Synchronous version of flush.
|
|
420
|
+
*
|
|
421
|
+
* Sends null frame to encoder to signal end-of-stream.
|
|
422
|
+
* Does nothing if encoder was never initialized or is closed.
|
|
423
|
+
* Must call receiveSync() to get remaining buffered packets.
|
|
424
|
+
*
|
|
425
|
+
* Direct mapping to avcodec_send_frame(NULL).
|
|
426
|
+
*
|
|
427
|
+
* @example
|
|
428
|
+
* ```typescript
|
|
429
|
+
* // Signal end of stream
|
|
430
|
+
* encoder.flushSync();
|
|
431
|
+
*
|
|
432
|
+
* // Then get remaining packets
|
|
433
|
+
* let packet;
|
|
434
|
+
* while ((packet = encoder.receiveSync()) !== null) {
|
|
435
|
+
* console.log('Got buffered packet');
|
|
436
|
+
* output.writePacketSync(packet);
|
|
437
|
+
* packet.free();
|
|
438
|
+
* }
|
|
439
|
+
* ```
|
|
440
|
+
*
|
|
441
|
+
* @see {@link flush} For async version
|
|
442
|
+
*/
|
|
443
|
+
flushSync(): void;
|
|
293
444
|
/**
|
|
294
445
|
* Flush all buffered packets as async generator.
|
|
295
446
|
*
|
|
296
447
|
* Convenient async iteration over remaining packets.
|
|
297
|
-
* Automatically handles repeated
|
|
298
|
-
*
|
|
448
|
+
* Automatically handles flush and repeated receive calls.
|
|
449
|
+
* Returns immediately if encoder was never initialized or is closed.
|
|
299
450
|
*
|
|
300
|
-
* @yields Buffered packets
|
|
301
|
-
* @throws {Error} If encoder is closed
|
|
451
|
+
* @yields {Packet} Buffered packets
|
|
302
452
|
*
|
|
303
453
|
* @example
|
|
304
454
|
* ```typescript
|
|
@@ -310,21 +460,121 @@ export declare class Encoder implements Disposable {
|
|
|
310
460
|
* }
|
|
311
461
|
* ```
|
|
312
462
|
*
|
|
313
|
-
* @see {@link flush} For
|
|
463
|
+
* @see {@link flush} For signaling end-of-stream
|
|
314
464
|
* @see {@link packets} For complete pipeline
|
|
315
465
|
*/
|
|
316
466
|
flushPackets(): AsyncGenerator<Packet>;
|
|
467
|
+
/**
|
|
468
|
+
* Flush all buffered packets as generator synchronously.
|
|
469
|
+
* Synchronous version of flushPackets.
|
|
470
|
+
*
|
|
471
|
+
* Convenient sync iteration over remaining packets.
|
|
472
|
+
* Automatically handles flush and repeated receive calls.
|
|
473
|
+
* Returns immediately if encoder was never initialized or is closed.
|
|
474
|
+
*
|
|
475
|
+
* @yields {Packet} Buffered packets
|
|
476
|
+
*
|
|
477
|
+
* @example
|
|
478
|
+
* ```typescript
|
|
479
|
+
* // Flush at end of encoding
|
|
480
|
+
* for (const packet of encoder.flushPacketsSync()) {
|
|
481
|
+
* console.log('Processing buffered packet');
|
|
482
|
+
* output.writePacketSync(packet);
|
|
483
|
+
* packet.free();
|
|
484
|
+
* }
|
|
485
|
+
* ```
|
|
486
|
+
*
|
|
487
|
+
* @see {@link flushPackets} For async version
|
|
488
|
+
*/
|
|
489
|
+
flushPacketsSync(): Generator<Packet>;
|
|
490
|
+
/**
|
|
491
|
+
* Receive packet from encoder.
|
|
492
|
+
*
|
|
493
|
+
* Gets encoded packets from the codec's internal buffer.
|
|
494
|
+
* Handles packet cloning and error checking.
|
|
495
|
+
* Returns null if encoder is closed, not initialized, or no packets available.
|
|
496
|
+
* Call repeatedly until null to drain all buffered packets.
|
|
497
|
+
*
|
|
498
|
+
* Direct mapping to avcodec_receive_packet().
|
|
499
|
+
*
|
|
500
|
+
* @returns Cloned packet or null if no packets available
|
|
501
|
+
*
|
|
502
|
+
* @throws {FFmpegError} If receive fails with error other than AVERROR_EAGAIN or AVERROR_EOF
|
|
503
|
+
*
|
|
504
|
+
* @example
|
|
505
|
+
* ```typescript
|
|
506
|
+
* const packet = await encoder.receive();
|
|
507
|
+
* if (packet) {
|
|
508
|
+
* console.log(`Got packet with PTS: ${packet.pts}`);
|
|
509
|
+
* await output.writePacket(packet);
|
|
510
|
+
* packet.free();
|
|
511
|
+
* }
|
|
512
|
+
* ```
|
|
513
|
+
*
|
|
514
|
+
* @example
|
|
515
|
+
* ```typescript
|
|
516
|
+
* // Drain all buffered packets
|
|
517
|
+
* let packet;
|
|
518
|
+
* while ((packet = await encoder.receive()) !== null) {
|
|
519
|
+
* console.log(`Packet size: ${packet.size}`);
|
|
520
|
+
* await output.writePacket(packet);
|
|
521
|
+
* packet.free();
|
|
522
|
+
* }
|
|
523
|
+
* ```
|
|
524
|
+
*
|
|
525
|
+
* @see {@link encode} For sending frames and receiving packets
|
|
526
|
+
* @see {@link flush} For signaling end-of-stream
|
|
527
|
+
*/
|
|
528
|
+
receive(): Promise<Packet | null>;
|
|
529
|
+
/**
|
|
530
|
+
* Receive packet from encoder synchronously.
|
|
531
|
+
* Synchronous version of receive.
|
|
532
|
+
*
|
|
533
|
+
* Gets encoded packets from the codec's internal buffer.
|
|
534
|
+
* Handles packet cloning and error checking.
|
|
535
|
+
* Returns null if encoder is closed, not initialized, or no packets available.
|
|
536
|
+
* Call repeatedly until null to drain all buffered packets.
|
|
537
|
+
*
|
|
538
|
+
* Direct mapping to avcodec_receive_packet().
|
|
539
|
+
*
|
|
540
|
+
* @returns Cloned packet or null if no packets available
|
|
541
|
+
*
|
|
542
|
+
* @throws {FFmpegError} If receive fails with error other than AVERROR_EAGAIN or AVERROR_EOF
|
|
543
|
+
*
|
|
544
|
+
* @example
|
|
545
|
+
* ```typescript
|
|
546
|
+
* const packet = encoder.receiveSync();
|
|
547
|
+
* if (packet) {
|
|
548
|
+
* console.log(`Got packet with PTS: ${packet.pts}`);
|
|
549
|
+
* output.writePacketSync(packet);
|
|
550
|
+
* packet.free();
|
|
551
|
+
* }
|
|
552
|
+
* ```
|
|
553
|
+
*
|
|
554
|
+
* @example
|
|
555
|
+
* ```typescript
|
|
556
|
+
* // Drain all buffered packets
|
|
557
|
+
* let packet;
|
|
558
|
+
* while ((packet = encoder.receiveSync()) !== null) {
|
|
559
|
+
* console.log(`Packet size: ${packet.size}`);
|
|
560
|
+
* output.writePacketSync(packet);
|
|
561
|
+
* packet.free();
|
|
562
|
+
* }
|
|
563
|
+
* ```
|
|
564
|
+
*
|
|
565
|
+
* @see {@link receive} For async version
|
|
566
|
+
*/
|
|
567
|
+
receiveSync(): Packet | null;
|
|
317
568
|
/**
|
|
318
569
|
* Close encoder and free resources.
|
|
319
570
|
*
|
|
320
571
|
* Releases codec context and internal packet buffer.
|
|
321
572
|
* Safe to call multiple times.
|
|
322
|
-
* Does NOT dispose hardware context - caller is responsible.
|
|
323
573
|
* Automatically called by Symbol.dispose.
|
|
324
574
|
*
|
|
325
575
|
* @example
|
|
326
576
|
* ```typescript
|
|
327
|
-
* const encoder = await Encoder.create(FF_ENCODER_LIBX264,
|
|
577
|
+
* const encoder = await Encoder.create(FF_ENCODER_LIBX264, { ... });
|
|
328
578
|
* try {
|
|
329
579
|
* // Use encoder
|
|
330
580
|
* } finally {
|
|
@@ -336,49 +586,63 @@ export declare class Encoder implements Disposable {
|
|
|
336
586
|
*/
|
|
337
587
|
close(): void;
|
|
338
588
|
/**
|
|
339
|
-
*
|
|
589
|
+
* Initialize encoder from first frame.
|
|
340
590
|
*
|
|
341
|
-
*
|
|
342
|
-
*
|
|
591
|
+
* Sets codec context parameters from frame properties.
|
|
592
|
+
* Configures hardware context if present in frame.
|
|
593
|
+
* Opens encoder with accumulated options.
|
|
343
594
|
*
|
|
344
|
-
* @
|
|
595
|
+
* @param frame - First frame to encode
|
|
345
596
|
*
|
|
346
|
-
* @
|
|
347
|
-
* ```typescript
|
|
348
|
-
* const codec = encoder.getCodec();
|
|
349
|
-
* console.log(`Using codec: ${codec.name}`);
|
|
350
|
-
* console.log(`Capabilities: ${codec.capabilities}`);
|
|
351
|
-
* ```
|
|
597
|
+
* @throws {FFmpegError} If encoder open fails
|
|
352
598
|
*
|
|
353
|
-
* @
|
|
599
|
+
* @internal
|
|
354
600
|
*/
|
|
355
|
-
|
|
601
|
+
private initialize;
|
|
356
602
|
/**
|
|
357
|
-
*
|
|
603
|
+
* Initialize encoder from first frame synchronously.
|
|
604
|
+
* Synchronous version of initialize.
|
|
605
|
+
*
|
|
606
|
+
* Sets codec context parameters from frame properties.
|
|
607
|
+
* Configures hardware context if present in frame.
|
|
608
|
+
* Opens encoder with accumulated options.
|
|
358
609
|
*
|
|
359
|
-
*
|
|
360
|
-
* Returns null if encoder is closed.
|
|
610
|
+
* @param frame - First frame to encode
|
|
361
611
|
*
|
|
362
|
-
* @
|
|
612
|
+
* @throws {FFmpegError} If encoder open fails
|
|
363
613
|
*
|
|
364
614
|
* @internal
|
|
615
|
+
*
|
|
616
|
+
* @see {@link initialize} For async version
|
|
365
617
|
*/
|
|
366
|
-
|
|
618
|
+
private initializeSync;
|
|
367
619
|
/**
|
|
368
|
-
*
|
|
620
|
+
* Get encoder codec.
|
|
369
621
|
*
|
|
370
|
-
*
|
|
371
|
-
*
|
|
622
|
+
* Returns the codec used by this encoder.
|
|
623
|
+
* Useful for checking codec capabilities and properties.
|
|
372
624
|
*
|
|
373
|
-
*
|
|
625
|
+
* @returns Codec instance
|
|
374
626
|
*
|
|
375
|
-
* @
|
|
627
|
+
* @internal
|
|
376
628
|
*
|
|
377
|
-
* @
|
|
629
|
+
* @see {@link Codec} For codec details
|
|
630
|
+
*/
|
|
631
|
+
getCodec(): Codec;
|
|
632
|
+
/**
|
|
633
|
+
* Get underlying codec context.
|
|
634
|
+
*
|
|
635
|
+
* Returns the codec context for advanced operations.
|
|
636
|
+
* Useful for accessing low-level codec properties and settings.
|
|
637
|
+
* Returns null if encoder is closed or not initialized.
|
|
638
|
+
*
|
|
639
|
+
* @returns Codec context or null if closed/not initialized
|
|
378
640
|
*
|
|
379
641
|
* @internal
|
|
642
|
+
*
|
|
643
|
+
* @see {@link CodecContext} For context details
|
|
380
644
|
*/
|
|
381
|
-
|
|
645
|
+
getCodecContext(): CodecContext | null;
|
|
382
646
|
/**
|
|
383
647
|
* Dispose of encoder.
|
|
384
648
|
*
|
|
@@ -388,7 +652,7 @@ export declare class Encoder implements Disposable {
|
|
|
388
652
|
* @example
|
|
389
653
|
* ```typescript
|
|
390
654
|
* {
|
|
391
|
-
* using encoder = await Encoder.create(FF_ENCODER_LIBX264,
|
|
655
|
+
* using encoder = await Encoder.create(FF_ENCODER_LIBX264, { ... });
|
|
392
656
|
* // Encode frames...
|
|
393
657
|
* } // Automatically closed
|
|
394
658
|
* ```
|