@mediabunny/server 1.55.2 → 1.55.3
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.
|
@@ -560,6 +560,8 @@ var MediabunnyServer = (() => {
|
|
|
560
560
|
throw new Error(`Unexpected value: ${x}`);
|
|
561
561
|
};
|
|
562
562
|
var SECOND_TO_MICROSECOND_FACTOR = 1e6 * (1 + Number.EPSILON);
|
|
563
|
+
var NativePromiseConstructor = (async () => {
|
|
564
|
+
})().constructor;
|
|
563
565
|
var simplifyRational = (rational) => {
|
|
564
566
|
assert(Number.isInteger(rational.num));
|
|
565
567
|
assert(Number.isInteger(rational.den));
|
|
@@ -1056,37 +1058,73 @@ var MediabunnyServer = (() => {
|
|
|
1056
1058
|
throw new TypeError("AAC description must be at least 2 bytes long.");
|
|
1057
1059
|
}
|
|
1058
1060
|
const bitstream = new Bitstream(bytes);
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
objectType = 32 + bitstream.readBits(6);
|
|
1062
|
-
}
|
|
1063
|
-
const frequencyIndex = bitstream.readBits(4);
|
|
1064
|
-
let sampleRate = null;
|
|
1065
|
-
if (frequencyIndex === 15) {
|
|
1066
|
-
sampleRate = bitstream.readBits(24);
|
|
1067
|
-
} else {
|
|
1068
|
-
if (frequencyIndex < aacFrequencyTable.length) {
|
|
1069
|
-
sampleRate = aacFrequencyTable[frequencyIndex];
|
|
1070
|
-
}
|
|
1071
|
-
}
|
|
1061
|
+
const objectType = readAacObjectType(bitstream);
|
|
1062
|
+
const { frequencyIndex, sampleRate } = readAacSamplingFrequency(bitstream);
|
|
1072
1063
|
const channelConfiguration = bitstream.readBits(4);
|
|
1073
1064
|
let numberOfChannels = null;
|
|
1074
1065
|
if (channelConfiguration >= 1 && channelConfiguration <= 7) {
|
|
1075
1066
|
numberOfChannels = aacChannelMap[channelConfiguration];
|
|
1076
1067
|
}
|
|
1068
|
+
let coreObjectType = objectType;
|
|
1069
|
+
let psPresent = false;
|
|
1070
|
+
let outputSampleRate = sampleRate;
|
|
1071
|
+
if (objectType === 5 || objectType === 29) {
|
|
1072
|
+
psPresent = objectType === 29;
|
|
1073
|
+
outputSampleRate = readAacSamplingFrequency(bitstream).sampleRate;
|
|
1074
|
+
coreObjectType = readAacObjectType(bitstream);
|
|
1075
|
+
if (coreObjectType === 22) {
|
|
1076
|
+
bitstream.skipBits(4);
|
|
1077
|
+
}
|
|
1078
|
+
} else {
|
|
1079
|
+
while (bitstream.getBitsLeft() > 15) {
|
|
1080
|
+
const searchStart = bitstream.pos;
|
|
1081
|
+
if (bitstream.readBits(11) !== 695) {
|
|
1082
|
+
bitstream.pos = searchStart + 1;
|
|
1083
|
+
continue;
|
|
1084
|
+
}
|
|
1085
|
+
if (readAacObjectType(bitstream) === 5 && bitstream.readBits(1)) {
|
|
1086
|
+
outputSampleRate = readAacSamplingFrequency(bitstream).sampleRate;
|
|
1087
|
+
if (bitstream.getBitsLeft() > 11 && bitstream.readBits(11) === 1352) {
|
|
1088
|
+
psPresent = !!bitstream.readBits(1);
|
|
1089
|
+
}
|
|
1090
|
+
}
|
|
1091
|
+
break;
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1094
|
+
if (numberOfChannels !== null && numberOfChannels > 1) {
|
|
1095
|
+
psPresent = false;
|
|
1096
|
+
}
|
|
1077
1097
|
return {
|
|
1078
1098
|
objectType,
|
|
1099
|
+
coreObjectType,
|
|
1079
1100
|
frequencyIndex,
|
|
1080
|
-
sampleRate,
|
|
1081
1101
|
channelConfiguration,
|
|
1082
|
-
|
|
1102
|
+
outputSampleRate,
|
|
1103
|
+
outputNumberOfChannels: psPresent && numberOfChannels === 1 ? 2 : numberOfChannels
|
|
1104
|
+
};
|
|
1105
|
+
};
|
|
1106
|
+
var readAacObjectType = (bitstream) => {
|
|
1107
|
+
const objectType = bitstream.readBits(5);
|
|
1108
|
+
return objectType === 31 ? 32 + bitstream.readBits(6) : objectType;
|
|
1109
|
+
};
|
|
1110
|
+
var readAacSamplingFrequency = (bitstream) => {
|
|
1111
|
+
const frequencyIndex = bitstream.readBits(4);
|
|
1112
|
+
if (frequencyIndex === 15) {
|
|
1113
|
+
return {
|
|
1114
|
+
frequencyIndex,
|
|
1115
|
+
sampleRate: bitstream.readBits(24)
|
|
1116
|
+
};
|
|
1117
|
+
}
|
|
1118
|
+
return {
|
|
1119
|
+
frequencyIndex,
|
|
1120
|
+
sampleRate: frequencyIndex < aacFrequencyTable.length ? aacFrequencyTable[frequencyIndex] : null
|
|
1083
1121
|
};
|
|
1084
1122
|
};
|
|
1085
1123
|
var buildAdtsHeaderTemplate = (config) => {
|
|
1086
1124
|
const header = new Uint8Array(7);
|
|
1087
1125
|
const bitstream = new Bitstream(header);
|
|
1088
|
-
const {
|
|
1089
|
-
const profile =
|
|
1126
|
+
const { coreObjectType, frequencyIndex, channelConfiguration } = config;
|
|
1127
|
+
const profile = coreObjectType - 1;
|
|
1090
1128
|
bitstream.writeBits(12, 4095);
|
|
1091
1129
|
bitstream.writeBits(1, 0);
|
|
1092
1130
|
bitstream.writeBits(2, 0);
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
6
6
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
7
7
|
*/
|
|
8
|
-
"use strict";var MediabunnyServer=(()=>{var Bt=Object.create;var me=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var It=Object.getOwnPropertyNames;var Tt=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty;var N=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Pt=(t,e)=>{for(var r in e)me(t,r,{get:e[r],enumerable:!0})},ze=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of It(e))!Ft.call(t,o)&&o!==r&&me(t,o,{get:()=>e[o],enumerable:!(n=wt(e,o))||n.enumerable});return t};var j=(t,e,r)=>(r=t!=null?Bt(Tt(t)):{},ze(e||!t||!t.__esModule?me(r,"default",{value:t,enumerable:!0}):r,t)),Rt=t=>ze(me({},"__esModule",{value:!0}),t);var rr={};Pt(rr,{AvFrameAudioSampleResource:()=>Q,AvFrameVideoSampleResource:()=>q,_serverOptions:()=>Y,registerMediabunnyServer:()=>er,toAvFrame:()=>tr});var k=N("mediabunny"),X=j(N("node-av"));var xe=N("mediabunny"),b=j(N("node-av"));var i=j(N("node-av"));var $={avc:i.AV_CODEC_ID_H264,hevc:i.AV_CODEC_ID_HEVC,vp8:i.AV_CODEC_ID_VP8,vp9:i.AV_CODEC_ID_VP9,av1:i.AV_CODEC_ID_AV1,prores:i.AV_CODEC_ID_PRORES,aac:i.AV_CODEC_ID_AAC,opus:i.AV_CODEC_ID_OPUS,mp3:i.AV_CODEC_ID_MP3,vorbis:i.AV_CODEC_ID_VORBIS,flac:i.AV_CODEC_ID_FLAC,ac3:i.AV_CODEC_ID_AC3,eac3:i.AV_CODEC_ID_EAC3,dts:i.AV_CODEC_ID_DTS},Ie,He=()=>Y.hardwareContext!==void 0&&typeof Y.hardwareContext!="function"?Y.hardwareContext:(Ie===void 0&&(Ie=i.HardwareContext.auto()),Ie),qe=t=>{if(t!==null&&!(t instanceof i.HardwareContext))throw new TypeError("When serverOptions.hardwareContext is a function, it must return or resolve to a NodeAv.HardwareContext or null.")},Te=new Map,We=async t=>{if(typeof Y.hardwareContext=="function"){let e=await Y.hardwareContext(t);return qe(e),e?.getDecoderCodec(t)??null}if(!Te.has(t)){let e=He();Te.set(t,e?.getDecoderCodec(t)??null)}return Te.get(t)},Fe=new Map,Xe=async t=>{if(typeof Y.hardwareContext=="function"){let e=await Y.hardwareContext(t);return qe(e),e?.getEncoderCodec(t)??null}if(!Fe.has(t)){let e=He();Fe.set(t,e?.getEncoderCodec(t)??null)}return Fe.get(t)},Ge=t=>{switch(t){case"bt709":return i.AVCOL_PRI_BT709;case"bt470bg":return i.AVCOL_PRI_BT470BG;case"smpte170m":return i.AVCOL_PRI_SMPTE170M;case"bt2020":return i.AVCOL_PRI_BT2020;case"smpte432":return i.AVCOL_PRI_SMPTE432}return null},fe=t=>{switch(t){case i.AVCOL_PRI_BT709:return"bt709";case i.AVCOL_PRI_BT470BG:return"bt470bg";case i.AVCOL_PRI_SMPTE170M:return"smpte170m";case i.AVCOL_PRI_BT2020:return"bt2020";case i.AVCOL_PRI_SMPTE432:return"smpte432"}return null},Ye=t=>{switch(t){case"bt709":return i.AVCOL_TRC_BT709;case"smpte170m":return i.AVCOL_TRC_SMPTE170M;case"iec61966-2-1":return i.AVCOL_TRC_IEC61966_2_1;case"linear":return i.AVCOL_TRC_LINEAR;case"pq":return i.AVCOL_TRC_SMPTE2084;case"hlg":return i.AVCOL_TRC_ARIB_STD_B67}return null},pe=t=>{switch(t){case i.AVCOL_TRC_BT709:return"bt709";case i.AVCOL_TRC_SMPTE170M:return"smpte170m";case i.AVCOL_TRC_IEC61966_2_1:return"iec61966-2-1";case i.AVCOL_TRC_LINEAR:return"linear";case i.AVCOL_TRC_SMPTE2084:return"pq";case i.AVCOL_TRC_ARIB_STD_B67:return"hlg"}return null},Ke=t=>{switch(t){case"rgb":return i.AVCOL_SPC_RGB;case"bt709":return i.AVCOL_SPC_BT709;case"bt470bg":return i.AVCOL_SPC_BT470BG;case"smpte170m":return i.AVCOL_SPC_SMPTE170M;case"bt2020-ncl":return i.AVCOL_SPC_BT2020_NCL}return null},he=t=>{switch(t){case i.AVCOL_SPC_RGB:return"rgb";case i.AVCOL_SPC_BT709:return"bt709";case i.AVCOL_SPC_BT470BG:return"bt470bg";case i.AVCOL_SPC_SMPTE170M:return"smpte170m";case i.AVCOL_SPC_BT2020_NCL:return"bt2020-ncl"}return null},Qe=t=>{switch(t){case i.AV_PIX_FMT_YUV420P:return"I420";case i.AV_PIX_FMT_YUVJ420P:return"I420";case i.AV_PIX_FMT_YUV420P10LE:return"I420P10";case i.AV_PIX_FMT_YUV420P12LE:return"I420P12";case i.AV_PIX_FMT_YUVA420P:return"I420A";case i.AV_PIX_FMT_YUVA420P10LE:return"I420AP10";case i.AV_PIX_FMT_YUV422P:return"I422";case i.AV_PIX_FMT_YUVJ422P:return"I422";case i.AV_PIX_FMT_YUV422P10LE:return"I422P10";case i.AV_PIX_FMT_YUV422P12LE:return"I422P12";case i.AV_PIX_FMT_YUVA422P:return"I422A";case i.AV_PIX_FMT_YUVA422P10LE:return"I422AP10";case i.AV_PIX_FMT_YUVA422P12LE:return"I422AP12";case i.AV_PIX_FMT_YUV444P:return"I444";case i.AV_PIX_FMT_YUVJ444P:return"I444";case i.AV_PIX_FMT_YUV444P10LE:return"I444P10";case i.AV_PIX_FMT_YUV444P12LE:return"I444P12";case i.AV_PIX_FMT_YUVA444P:return"I444A";case i.AV_PIX_FMT_YUVA444P10LE:return"I444AP10";case i.AV_PIX_FMT_YUVA444P12LE:return"I444AP12";case i.AV_PIX_FMT_NV12:return"NV12";case i.AV_PIX_FMT_RGBA:return"RGBA";case i.AV_PIX_FMT_RGB0:return"RGBX";case i.AV_PIX_FMT_BGRA:return"BGRA";case i.AV_PIX_FMT_BGR0:return"BGRX";default:return null}},Pe=t=>{switch(t){case"I420":return i.AV_PIX_FMT_YUV420P;case"I420P10":return i.AV_PIX_FMT_YUV420P10LE;case"I420P12":return i.AV_PIX_FMT_YUV420P12LE;case"I420A":return i.AV_PIX_FMT_YUVA420P;case"I420AP10":return i.AV_PIX_FMT_YUVA420P10LE;case"I422":return i.AV_PIX_FMT_YUV422P;case"I422P10":return i.AV_PIX_FMT_YUV422P10LE;case"I422P12":return i.AV_PIX_FMT_YUV422P12LE;case"I422A":return i.AV_PIX_FMT_YUVA422P;case"I422AP10":return i.AV_PIX_FMT_YUVA422P10LE;case"I422AP12":return i.AV_PIX_FMT_YUVA422P12LE;case"I444":return i.AV_PIX_FMT_YUV444P;case"I444P10":return i.AV_PIX_FMT_YUV444P10LE;case"I444P12":return i.AV_PIX_FMT_YUV444P12LE;case"I444A":return i.AV_PIX_FMT_YUVA444P;case"I444AP10":return i.AV_PIX_FMT_YUVA444P10LE;case"I444AP12":return i.AV_PIX_FMT_YUVA444P12LE;case"NV12":return i.AV_PIX_FMT_NV12;case"RGBA":return i.AV_PIX_FMT_RGBA;case"RGBX":return i.AV_PIX_FMT_RGB0;case"BGRA":return i.AV_PIX_FMT_BGRA;case"BGRX":return i.AV_PIX_FMT_BGR0;default:return i.AV_PIX_FMT_NONE}},$e=t=>{switch(t){case i.AV_SAMPLE_FMT_U8:return"u8";case i.AV_SAMPLE_FMT_S16:return"s16";case i.AV_SAMPLE_FMT_S32:return"s32";case i.AV_SAMPLE_FMT_FLT:return"f32";case i.AV_SAMPLE_FMT_U8P:return"u8-planar";case i.AV_SAMPLE_FMT_S16P:return"s16-planar";case i.AV_SAMPLE_FMT_S32P:return"s32-planar";case i.AV_SAMPLE_FMT_FLTP:return"f32-planar";default:return null}},Je=t=>{switch(t){case"u8":return i.AV_SAMPLE_FMT_U8;case"s16":return i.AV_SAMPLE_FMT_S16;case"s32":return i.AV_SAMPLE_FMT_S32;case"f32":return i.AV_SAMPLE_FMT_FLT;case"u8-planar":return i.AV_SAMPLE_FMT_U8P;case"s16-planar":return i.AV_SAMPLE_FMT_S16P;case"s32-planar":return i.AV_SAMPLE_FMT_S32P;case"f32-planar":return i.AV_SAMPLE_FMT_FLTP;default:return i.AV_SAMPLE_FMT_NONE}},ee=t=>{switch(t){case 1:return i.AV_CHANNEL_LAYOUT_MONO;case 2:return i.AV_CHANNEL_LAYOUT_STEREO;case 4:return i.AV_CHANNEL_LAYOUT_QUAD;case 6:return i.AV_CHANNEL_LAYOUT_5POINT1_BACK;case 8:return i.AV_CHANNEL_LAYOUT_7POINT1;default:return{nbChannels:t,order:i.AV_CHANNEL_ORDER_UNSPEC,mask:0n}}},Vt=0x603n,je=t=>{switch(t){case 1:return i.AV_CHANNEL_LAYOUT_MONO;case 2:return i.AV_CHANNEL_LAYOUT_STEREO;case 4:return{nbChannels:4,order:i.AV_CHANNEL_ORDER_NATIVE,mask:Vt};case 5:return i.AV_CHANNEL_LAYOUT_5POINT0;case 6:return i.AV_CHANNEL_LAYOUT_5POINT1;default:return{nbChannels:t,order:i.AV_CHANNEL_ORDER_UNSPEC,mask:0n}}};var U=class U{constructor(){}static get level(){return U._level}static set level(e){if(e!==0&&e!==1&&e!==2&&e!==3)throw new TypeError("Invalid log level. Use one of the values of the LogLevel enum.");U._level=e}static get _emitter(){return U._emitterInstance??=new ge}static on(e,r,n){return U._emitter.on(e,r,n)}static _error(...e){U._emitter._emit("error",e),U._level>=1&&console.error(...e)}static _warn(...e){U._emitter._emit("warn",e),U._level>=2&&console.warn(...e)}static _info(...e){U._emitter._emit("info",e),U._level>=3&&console.info(...e)}};U._level=3,U._emitterInstance=null;var te=U;function f(t){if(!t)throw new Error("Assertion failed.")}var ie=t=>t&&t[t.length-1];var A=t=>{let e=0;for(;t.readBits(1)===0&&e<32;)e++;if(e>=32)throw new Error("Invalid exponential-Golomb code.");return(1<<e)-1+t.readBits(e)},K=t=>{let e=A(t);return(e&1)===0?-(e>>1):e+1>>1};var O=t=>t.constructor===Uint8Array?t:ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),Re=t=>t.constructor===DataView?t:ArrayBuffer.isView(t)?new DataView(t.buffer,t.byteOffset,t.byteLength):new DataView(t);var Ze={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12};var et={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pq:16,hlg:18};var tt={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9};var Ve=t=>[...t].map(e=>e.toString(16).padStart(2,"0")).join("");var Ne=t=>(t=t>>1&1431655765|(t&1431655765)<<1,t=t>>2&858993459|(t&858993459)<<2,t=t>>4&252645135|(t&252645135)<<4,t=t>>8&16711935|(t&16711935)<<8,t=t>>16&65535|(t&65535)<<16,t>>>0);var oe=(t,e,r)=>{let n=0,o=t.length-1,s=-1;for(;n<=o;){let a=n+(o-n+1)/2|0;r(t[a])<=e?(s=a,n=a+1):o=a-1}return s};var Me=t=>{throw new Error(`Unexpected value: ${t}`)};var cr=1e6*(1+Number.EPSILON);var Ce=t=>{f(Number.isInteger(t.num)),f(Number.isInteger(t.den)),f(t.den!==0);let e=Math.abs(t.num),r=Math.abs(t.den);for(;r!==0;){let o=e%r;e=r,r=o}let n=e||1;return{num:t.num/n,den:t.den/n}};var ge=class{constructor(){this._listeners=new Map}on(e,r,n){this._listeners.has(e)||this._listeners.set(e,new Set);let o={fn:r,once:n?.once??!1};return this._listeners.get(e).add(o),()=>{this._listeners.get(e)?.delete(o)}}_emit(...e){let[r,n]=e,o=this._listeners.get(r);if(o)for(let s of o){try{s.fn(n)}catch(a){console.error(a)}s.once&&o.delete(s)}}};var re=N("mediabunny"),p=j(N("node-av"));var Nt=new Set([p.AV_PIX_FMT_YUVJ411P,p.AV_PIX_FMT_YUVJ420P,p.AV_PIX_FMT_YUVJ422P,p.AV_PIX_FMT_YUVJ440P,p.AV_PIX_FMT_YUVJ444P]),q=class t extends re.VideoSampleResource{get frame(){if(!this._frame)throw new Error("AvFrameVideoSampleResource has been closed.");return this._frame}constructor(e){if(super(),!(e instanceof p.Frame))throw new TypeError("frame must be a NodeAv.Frame.");if(e.getMediaType()!==p.AVMEDIA_TYPE_VIDEO)throw new Error("AvFrameVideoSampleResource must be initialized with a video frame.");this._frame=e}getFormat(){return Qe(this.frame.format)}getCodedWidth(){return this.frame.width}getCodedHeight(){return this.frame.height}getSquarePixelWidth(){return this.frame.sampleAspectRatio.num>this.frame.sampleAspectRatio.den?Math.round(this.frame.width*this.frame.sampleAspectRatio.num/this.frame.sampleAspectRatio.den):this.frame.width}getSquarePixelHeight(){return this.frame.sampleAspectRatio.num>this.frame.sampleAspectRatio.den?this.frame.height:Math.round(this.frame.height*this.frame.sampleAspectRatio.den/this.frame.sampleAspectRatio.num)}getColorSpace(){return new re.VideoSampleColorSpace({primaries:fe(this.frame.colorPrimaries),transfer:pe(this.frame.colorTrc),matrix:he(this.frame.colorSpace),fullRange:this.frame.colorRange===p.AVCOL_RANGE_JPEG||Nt.has(this.frame.format)?!0:this.frame.colorRange===p.AVCOL_RANGE_MPEG?!1:null})}close(){this.frame.free(),this._frame=null}getDataPlanes(){return f(this.frame.data),this.frame.data.map((e,r)=>({data:O(e),stride:this.frame.linesize[r]}))}async toRgbSample(e,r){let n=this.frame.width,o=this.frame.height,s=new p.SoftwareScaleContext,a=this.frame.format,l=Pe("RGBA");s.getContext(n,o,a,n,o,l,p.SWS_BILINEAR);let m=new p.Frame;m.width=n,m.height=o,m.format=l,m.alloc(),m.allocBuffer();let c=this.frame;try{await s.scaleFrame(m,c)}finally{s.freeContext()}return m.sampleAspectRatio=c.sampleAspectRatio,new re.VideoSample(new t(m),e)}},Ae=async(t,e,r)=>{f(t.format!==null),e.format=Pe(t.format),e.width=t.codedWidth,e.height=t.codedHeight,e.sampleAspectRatio=new p.Rational(t.pixelAspectRatio.num,t.pixelAspectRatio.den),e.colorPrimaries=Ge(t.colorSpace.primaries??"unknown")??p.AVCOL_PRI_UNSPECIFIED,e.colorSpace=Ke(t.colorSpace.matrix??"unknown")??p.AVCOL_SPC_UNSPECIFIED,e.colorTrc=Ye(t.colorSpace.transfer??"unknown")??p.AVCOL_TRC_UNSPECIFIED,e.colorRange=t.colorSpace.fullRange===!1?p.AVCOL_RANGE_MPEG:t.colorSpace.fullRange===!0?p.AVCOL_RANGE_JPEG:p.AVCOL_RANGE_UNSPECIFIED;let n=t.allocationSize();return(!r||r.byteLength!==n)&&(r=Buffer.from({length:n})),await t.copyTo(r),e.fromBuffer(r),r},rt=async(t,e)=>{let r,n=!1;if(t._data instanceof q)r=t._data.frame;else{if(t.format===null)return null;r=new p.Frame,r.alloc(),n=!0,await Ae(t,r,null)}let o=[];(t.squarePixelWidth!==t.codedWidth||t.squarePixelHeight!==t.codedHeight)&&(o.push(`scale=${t.squarePixelWidth}:${t.squarePixelHeight}`),o.push("setsar=1")),e.rotation===90?o.push("transpose=1"):e.rotation===180?o.push("transpose=1,transpose=1"):e.rotation===270&&o.push("transpose=2"),o.push(`crop=${Math.round(e.crop.width)}:${Math.round(e.crop.height)}:${Math.round(e.crop.left)}:${Math.round(e.crop.top)}`),e.fit==="fill"?o.push(`scale=${e.width}:${e.height}`):e.fit==="contain"?(o.push(`scale=${e.width}:${e.height}:force_original_aspect_ratio=decrease`),o.push(`pad=${e.width}:${e.height}:(ow-iw)/2:(oh-ih)/2:color=black@0`)):e.fit==="cover"&&(o.push(`scale=${e.width}:${e.height}:force_original_aspect_ratio=increase`),o.push(`crop=${e.width}:${e.height}`)),o.push("setsar=1");let s=new p.FilterGraph;s.alloc();try{let a=`video_size=${r.width}x${r.height}:pix_fmt=${r.format}:time_base=1/1000000:pixel_aspect=${t.pixelAspectRatio.num}/${t.pixelAspectRatio.den}`,l=s.createFilter(p.Filter.getByName("buffer"),"src",a),m=s.createFilter(p.Filter.getByName("buffersink"),"sink");f(l&&m);let c=p.FilterInOut.createList([{name:"in",filterCtx:l,padIdx:0}]),d=p.FilterInOut.createList([{name:"out",filterCtx:m,padIdx:0}]),h=s.parsePtr(`[in]${o.join(",")}[out]`,d,c);p.FFmpegError.throwIfError(h,"FilterGraph.parsePtr");let y=await s.config();p.FFmpegError.throwIfError(y,"FilterGraph.config");let F=await l.buffersrcAddFrame(r);p.FFmpegError.throwIfError(F,"buffersrcAddFrame"),await l.buffersrcAddFrame(null);let g=new p.Frame;g.alloc();let x=await m.buffersinkGetFrame(g);return p.FFmpegError.throwIfError(x,"buffersinkGetFrame"),new re.VideoSample(new q(g),{timestamp:t.timestamp,duration:t.duration,rotation:0})}finally{s.free(),n&&r.free()}};var be=class extends xe.CustomVideoDecoder{constructor(){super(...arguments);this.codecContext=null;this.preciseTimings=[]}static supports(r,n){return r==="avc"||r==="hevc"||r==="vp8"||r==="vp9"||r==="av1"}async init(){this.frame=new b.Frame,this.frame.alloc(),this.packet=new b.Packet,this.packet.alloc()}async initCodecContext(r){f(this.codecContext===null);let n=$[this.codec];f(n!==void 0);let o;if(this.codec==="vp9"&&r.sideData.alpha?o=b.Codec.findDecoderByName(b.FF_DECODER_LIBVPX_VP9)??b.Codec.findDecoder(n):this.config.hardwareAcceleration==="prefer-software"||this.codec==="av1"?o=b.Codec.findDecoder(n):o=await We(n)??b.Codec.findDecoder(n),!o)throw new Error(`Unable to obtain libav codec for '${this.codec}'.`);let s=new b.CodecContext;s.allocContext3(o),this.pixelAspectRatio=Ce({num:(this.config.displayAspectWidth??this.config.codedWidth??0)*(this.config.codedHeight??0),den:(this.config.displayAspectHeight??this.config.codedHeight??0)*(this.config.codedWidth??0)||1}),s.width=this.config.codedWidth??0,s.height=this.config.codedHeight??0,s.codecType=b.AVMEDIA_TYPE_VIDEO,s.codecId=n,s.extraData=this.config.description?Buffer.from(O(this.config.description)):null,s.sampleAspectRatio=new b.Rational(this.pixelAspectRatio.num,this.pixelAspectRatio.den);let a=await s.open2();b.FFmpegError.throwIfError(a,"Open codec context"),this.codecContext=s}async decode(r){if(this.codecContext===null&&await this.initCodecContext(r),f(this.codecContext),this.packet.isKeyframe=r.type==="key",this.packet.data=Buffer.from(r.data),this.packet.timeBase={num:1,den:1e6},this.packet.pts=BigInt(r.microsecondTimestamp),this.packet.dts=b.AV_NOPTS_VALUE,this.packet.duration=BigInt(r.microsecondDuration),r.sideData.alpha){let a=Buffer.alloc(8+r.sideData.alpha.byteLength);a[7]=1,a.set(r.sideData.alpha,8),this.packet.addSideData(b.AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,a)}let n=oe(this.preciseTimings,r.microsecondTimestamp,a=>a.microsecondTimestamp),o=n!==-1?this.preciseTimings[n]:null;o&&o.microsecondTimestamp===r.microsecondTimestamp?(o.timestamp!==r.timestamp&&(o.timestampIsValid=!1),o.duration!==r.duration&&(o.durationIsValid=!1)):(this.preciseTimings.splice(n+1,0,{microsecondTimestamp:r.microsecondTimestamp,timestamp:r.timestamp,duration:r.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift());let s=await this.codecContext.sendPacket(this.packet);for(b.FFmpegError.throwIfError(s,"Send packet"),this.packet.unref();;){let a=await this.codecContext.receiveFrame(this.frame);if(a===b.AVERROR_EAGAIN||a===b.AVERROR_EOF)break;this.receiveFrame(a)}}receiveFrame(r){b.FFmpegError.throwIfError(r,"Receive frame"),this.frame.sampleAspectRatio=new b.Rational(this.pixelAspectRatio.num,this.pixelAspectRatio.den);let n=Number(this.frame.pts)/1e6,o=Number(this.frame.duration)/1e6,s=oe(this.preciseTimings,Number(this.frame.pts),m=>m.microsecondTimestamp),a=s!==-1?this.preciseTimings[s]:null;a&&a.microsecondTimestamp===Number(this.frame.pts)&&(a.timestampIsValid&&(n=a.timestamp),a.durationIsValid&&(o=a.duration));let l=this.frame.clone();if(!l)throw new Error("Frame clone allocation failed.");this.onSample(new xe.VideoSample(new q(l),{timestamp:n,duration:o}))}async flush(){if(!this.codecContext)return;let r=await this.codecContext.sendPacket(null);for(b.FFmpegError.throwIfError(r,"Flush decoder");;){let n=await this.codecContext.receiveFrame(this.frame);if(n===b.AVERROR_EAGAIN||n===b.AVERROR_EOF)break;this.receiveFrame(n)}this.codecContext.flushBuffers()}close(){this.codecContext?.freeContext(),this.frame.free(),this.packet.free()}};var ae=N("mediabunny"),u=j(N("node-av"));var W=class t{constructor(e){this.bytes=e;this.pos=0}seekToByte(e){this.pos=8*e}readBit(){let e=Math.floor(this.pos/8),r=this.bytes[e]??0,n=7-(this.pos&7),o=(r&1<<n)>>n;return this.pos++,o}readBits(e){if(e===1)return this.readBit();let r=0;for(let n=0;n<e;n++)r<<=1,r|=this.readBit();return r}writeBits(e,r){let n=this.pos+e;for(let o=this.pos;o<n;o++){let s=Math.floor(o/8),a=this.bytes[s],l=7-(o&7);a&=~(1<<l),a|=(r&1<<n-o-1)>>n-o-1<<l,this.bytes[s]=a}this.pos=n}readAlignedByte(){if(this.pos%8!==0)throw new Error("Bitstream is not byte-aligned.");let e=this.pos/8,r=this.bytes[e]??0;return this.pos+=8,r}skipBits(e){this.pos+=e}getBitsLeft(){return this.bytes.length*8-this.pos}clone(){let e=new t(this.bytes);return e.pos=this.pos,e}};var nt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Mt=[-1,1,2,3,4,5,6,8],it=t=>{if(!t||t.byteLength<2)throw new TypeError("AAC description must be at least 2 bytes long.");let e=new W(t),r=e.readBits(5);r===31&&(r=32+e.readBits(6));let n=e.readBits(4),o=null;n===15?o=e.readBits(24):n<nt.length&&(o=nt[n]);let s=e.readBits(4),a=null;return s>=1&&s<=7&&(a=Mt[s]),{objectType:r,frequencyIndex:n,sampleRate:o,channelConfiguration:s,numberOfChannels:a}};var ot=t=>{let e=new Uint8Array(7),r=new W(e),{objectType:n,frequencyIndex:o,channelConfiguration:s}=t,a=n-1;return r.writeBits(12,4095),r.writeBits(1,0),r.writeBits(2,0),r.writeBits(1,1),r.writeBits(2,a),r.writeBits(4,o),r.writeBits(1,0),r.writeBits(3,s),r.writeBits(1,0),r.writeBits(1,0),r.writeBits(1,0),r.writeBits(1,0),r.skipBits(13),r.writeBits(11,2047),r.writeBits(2,0),{header:e,bitstream:r}};var Ut=["pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be","pcm-u8","pcm-s8","ulaw","alaw"],Ot=["aac","opus","mp3","vorbis","flac","ac3","eac3","dts"],Fr=[...Ot,...Ut];var ke=[{maxMacroblocks:99,maxBitrate:64e3,maxDpbMbs:396,level:10},{maxMacroblocks:396,maxBitrate:192e3,maxDpbMbs:900,level:11},{maxMacroblocks:396,maxBitrate:384e3,maxDpbMbs:2376,level:12},{maxMacroblocks:396,maxBitrate:768e3,maxDpbMbs:2376,level:13},{maxMacroblocks:396,maxBitrate:2e6,maxDpbMbs:2376,level:20},{maxMacroblocks:792,maxBitrate:4e6,maxDpbMbs:4752,level:21},{maxMacroblocks:1620,maxBitrate:4e6,maxDpbMbs:8100,level:22},{maxMacroblocks:1620,maxBitrate:1e7,maxDpbMbs:8100,level:30},{maxMacroblocks:3600,maxBitrate:14e6,maxDpbMbs:18e3,level:31},{maxMacroblocks:5120,maxBitrate:2e7,maxDpbMbs:20480,level:32},{maxMacroblocks:8192,maxBitrate:2e7,maxDpbMbs:32768,level:40},{maxMacroblocks:8192,maxBitrate:5e7,maxDpbMbs:32768,level:41},{maxMacroblocks:8704,maxBitrate:5e7,maxDpbMbs:34816,level:42},{maxMacroblocks:22080,maxBitrate:135e6,maxDpbMbs:110400,level:50},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:51},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:52},{maxMacroblocks:139264,maxBitrate:24e7,maxDpbMbs:696320,level:60},{maxMacroblocks:139264,maxBitrate:48e7,maxDpbMbs:696320,level:61},{maxMacroblocks:139264,maxBitrate:8e8,maxDpbMbs:696320,level:62}];var ne=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}];var st=".01.01.01.01.00",at=".0.110.01.01.01.0",Lt=["ap4x","ap4h","apch","apcn","apcs","apco"];var se=t=>{let{codec:e,codecDescription:r,colorSpace:n,avcCodecInfo:o,hevcCodecInfo:s,vp9CodecInfo:a,av1CodecInfo:l,proresFormat:m}=t;if(e==="avc"){if(f(t.avcType!==null),o){let c=new Uint8Array([o.avcProfileIndication,o.profileCompatibility,o.avcLevelIndication]);return`avc${t.avcType}.${Ve(c)}`}if(!r||r.byteLength<4)throw new TypeError("AVC decoder description is not provided or is not at least 4 bytes long.");return`avc${t.avcType}.${Ve(r.subarray(1,4))}`}else if(e==="hevc"){let c,d,h,y,F,g;if(s)c=s.generalProfileSpace,d=s.generalProfileIdc,h=Ne(s.generalProfileCompatibilityFlags),y=s.generalTierFlag,F=s.generalLevelIdc,g=[...s.generalConstraintIndicatorFlags];else{if(!r||r.byteLength<23)throw new TypeError("HEVC decoder description is not provided or is not at least 23 bytes long.");let C=Re(r),_=C.getUint8(1);c=_>>6&3,d=_&31,h=Ne(C.getUint32(2)),y=_>>5&1,F=C.getUint8(12),g=[];for(let T=0;T<6;T++)g.push(C.getUint8(6+T))}let x="hev1.";for(x+=["","A","B","C"][c]+d,x+=".",x+=h.toString(16).toUpperCase(),x+=".",x+=y===0?"L":"H",x+=F;g.length>0&&g[g.length-1]===0;)g.pop();return g.length>0&&(x+=".",x+=g.map(C=>C.toString(16).toUpperCase()).join(".")),x}else{if(e==="vp8")return"vp8";if(e==="vp9"){if(!a){let T=t.width*t.height,B=ie(ne).level;for(let P of ne)if(T<=P.maxPictureSize){B=P.level;break}return`vp09.00.${B.toString().padStart(2,"0")}.08`}let c=a.profile.toString().padStart(2,"0"),d=a.level.toString().padStart(2,"0"),h=a.bitDepth.toString().padStart(2,"0"),y=a.chromaSubsampling.toString().padStart(2,"0"),F=a.colourPrimaries.toString().padStart(2,"0"),g=a.transferCharacteristics.toString().padStart(2,"0"),x=a.matrixCoefficients.toString().padStart(2,"0"),C=a.videoFullRangeFlag.toString().padStart(2,"0"),_=`vp09.${c}.${d}.${h}.${y}`;return _+=`.${F}.${g}.${x}.${C}`,_.endsWith(st)&&(_=_.slice(0,-st.length)),_}else if(e==="av1"){if(!l){let P=t.width*t.height,w=ie(ne).level;for(let E of ne)if(P<=E.maxPictureSize){w=E.level;break}return`av01.0.${w.toString().padStart(2,"0")}M.08`}let c=l.profile,d=l.level.toString().padStart(2,"0"),h=l.tier?"H":"M",y=l.bitDepth.toString().padStart(2,"0"),F=l.monochrome?"1":"0",g=100*l.chromaSubsamplingX+10*l.chromaSubsamplingY+1*(l.chromaSubsamplingX&&l.chromaSubsamplingY?l.chromaSamplePosition:0),x=n?.primaries?Ze[n.primaries]:1,C=n?.transfer?et[n.transfer]:1,_=n?.matrix?tt[n.matrix]:1,T=n?.fullRange?1:0,B=`av01.${c}.${d}${h}.${y}`;return B+=`.${F}.${g.toString().padStart(3,"0")}`,B+=`.${x.toString().padStart(2,"0")}`,B+=`.${C.toString().padStart(2,"0")}`,B+=`.${_.toString().padStart(2,"0")}`,B+=`.${T}`,B.endsWith(at)&&(B=B.slice(0,-at.length)),B}else{if(e==="prores")return m??"apch";e!==null&&Me(e)}}throw new TypeError(`Unhandled codec '${e}'.`)};var Pr=["avc1","avc3","hev1","hvc1","vp8","vp09","av01",...Lt];var _e=function*(t){let e=0,r=-1;for(;e<t.length-2;){let n=t.indexOf(0,e);if(n===-1||n>=t.length-2)break;e=n;let o=0;if(e+3<t.length&&t[e+1]===0&&t[e+2]===0&&t[e+3]===1?o=4:t[e+1]===0&&t[e+2]===1&&(o=3),o===0){e++;continue}r!==-1&&e>r&&(yield{offset:r,length:e-r}),r=e+o,e=r}r!==-1&&r<t.length&&(yield{offset:r,length:t.length-r})};var Ue=t=>t&31,Oe=t=>{let e=[],r=t.length;for(let n=0;n<r;n++)n+2<r&&t[n]===0&&t[n+1]===0&&t[n+2]===3?(e.push(0,0),n+=2):e.push(t[n]);return new Uint8Array(e)},Qr=new Uint8Array([0,0,0,1]);var dt=t=>{try{let e=[],r=[],n=[];for(let l of _e(t)){let m=t.subarray(l.offset,l.offset+l.length),c=Ue(m[0]);c===7?e.push(m):c===8?r.push(m):c===13&&n.push(m)}if(e.length===0||r.length===0)return null;let o=e[0],s=Dt(o);f(s!==null);let a=s.profileIdc===100||s.profileIdc===110||s.profileIdc===122||s.profileIdc===144;return{configurationVersion:1,avcProfileIndication:s.profileIdc,profileCompatibility:s.constraintFlags,avcLevelIndication:s.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:e,pictureParameterSets:r,chromaFormat:a?s.chromaFormatIdc:null,bitDepthLumaMinus8:a?s.bitDepthLumaMinus8:null,bitDepthChromaMinus8:a?s.bitDepthChromaMinus8:null,sequenceParameterSetExt:a?n:null}}catch(e){return te._error("Error building AVC Decoder Configuration Record:",e),null}},At=t=>{let e=[];e.push(t.configurationVersion),e.push(t.avcProfileIndication),e.push(t.profileCompatibility),e.push(t.avcLevelIndication),e.push(252|t.lengthSizeMinusOne&3),e.push(224|t.sequenceParameterSets.length&31);for(let r of t.sequenceParameterSets){let n=r.byteLength;e.push(n>>8),e.push(n&255);for(let o=0;o<n;o++)e.push(r[o])}e.push(t.pictureParameterSets.length);for(let r of t.pictureParameterSets){let n=r.byteLength;e.push(n>>8),e.push(n&255);for(let o=0;o<n;o++)e.push(r[o])}if(t.avcProfileIndication===100||t.avcProfileIndication===110||t.avcProfileIndication===122||t.avcProfileIndication===144){f(t.chromaFormat!==null),f(t.bitDepthLumaMinus8!==null),f(t.bitDepthChromaMinus8!==null),f(t.sequenceParameterSetExt!==null),e.push(252|t.chromaFormat&3),e.push(248|t.bitDepthLumaMinus8&7),e.push(248|t.bitDepthChromaMinus8&7),e.push(t.sequenceParameterSetExt.length);for(let r of t.sequenceParameterSetExt){let n=r.byteLength;e.push(n>>8),e.push(n&255);for(let o=0;o<n;o++)e.push(r[o])}}return new Uint8Array(e)};var ut={1:{num:1,den:1},2:{num:12,den:11},3:{num:10,den:11},4:{num:16,den:11},5:{num:40,den:33},6:{num:24,den:11},7:{num:20,den:11},8:{num:32,den:11},9:{num:80,den:33},10:{num:18,den:11},11:{num:15,den:11},12:{num:64,den:33},13:{num:160,den:99},14:{num:4,den:3},15:{num:3,den:2},16:{num:2,den:1}},Dt=t=>{try{let e=new W(Oe(t));if(e.skipBits(1),e.skipBits(2),e.readBits(5)!==7)return null;let n=e.readAlignedByte(),o=e.readAlignedByte(),s=e.readAlignedByte();A(e);let a=1,l=0,m=0,c=0;if((n===100||n===110||n===122||n===244||n===44||n===83||n===86||n===118||n===128)&&(a=A(e),a===3&&(c=e.readBits(1)),l=A(e),m=A(e),e.skipBits(1),e.readBits(1))){for(let S=0;S<(a!==3?8:12);S++)if(e.readBits(1)){let J=S<6?16:64,z=8,V=8;for(let H=0;H<J;H++){if(V!==0){let Z=K(e);V=(z+Z+256)%256}z=V===0?z:V}}}A(e);let d=A(e);if(d===0)A(e);else if(d===1){e.skipBits(1),K(e),K(e);let L=A(e);for(let S=0;S<L;S++)K(e)}A(e),e.skipBits(1);let h=A(e),y=A(e),F=16*(h+1),g=16*(y+1),x=F,C=g,_=e.readBits(1);if(_||e.skipBits(1),e.skipBits(1),e.readBits(1)){let L=A(e),S=A(e),G=A(e),J=A(e),z,V;if((c===0?a:0)===0)z=1,V=2-_;else{let Z=a===3?1:2,de=a===1?2:1;z=Z,V=de*(2-_)}x-=z*(L+S),C-=V*(G+J)}let B=2,P=2,w=2,E=0,M={num:1,den:1},R=null,D=null;if(e.readBits(1)){if(e.readBits(1)){let de=e.readBits(8);if(de===255)M={num:e.readBits(16),den:e.readBits(16)};else{let De=ut[de];De&&(M=De)}}e.readBits(1)&&e.skipBits(1),e.readBits(1)&&(e.skipBits(3),E=e.readBits(1),e.readBits(1)&&(B=e.readBits(8),P=e.readBits(8),w=e.readBits(8))),e.readBits(1)&&(A(e),A(e)),e.readBits(1)&&(e.skipBits(32),e.skipBits(32),e.skipBits(1));let V=e.readBits(1);V&&ct(e);let H=e.readBits(1);H&&ct(e),(V||H)&&e.skipBits(1),e.skipBits(1),e.readBits(1)&&(e.skipBits(1),A(e),A(e),A(e),A(e),R=A(e),D=A(e))}if(R===null){f(D===null);let L=o&16;if((n===44||n===86||n===100||n===110||n===122||n===244)&&L)R=0,D=0;else{let S=h+1,G=y+1,J=(2-_)*G,z=ke.find(H=>H.level>=s)??ie(ke),V=Math.min(Math.floor(z.maxDpbMbs/(S*J)),16);R=V,D=V}}return f(D!==null),{profileIdc:n,constraintFlags:o,levelIdc:s,frameMbsOnlyFlag:_,chromaFormatIdc:a,bitDepthLumaMinus8:l,bitDepthChromaMinus8:m,codedWidth:F,codedHeight:g,displayWidth:x,displayHeight:C,pixelAspectRatio:M,colourPrimaries:B,matrixCoefficients:w,transferCharacteristics:P,fullRangeFlag:E,numReorderFrames:R,maxDecFrameBuffering:D}}catch(e){return te._error("Error parsing AVC SPS:",e),null}},ct=t=>{let e=A(t);t.skipBits(4),t.skipBits(4);for(let r=0;r<=e;r++)A(t),A(t),t.skipBits(1);t.skipBits(5),t.skipBits(5),t.skipBits(5),t.skipBits(5)};var ve=t=>t>>1&63,zt=t=>{try{let e=new W(Oe(t));e.skipBits(16),e.readBits(4);let r=e.readBits(3),n=e.readBits(1),{general_profile_space:o,general_tier_flag:s,general_profile_idc:a,general_profile_compatibility_flags:l,general_constraint_indicator_flags:m,general_level_idc:c}=Ht(e,r);A(e);let d=A(e),h=0;d===3&&(h=e.readBits(1));let y=A(e),F=A(e),g=y,x=F;if(e.readBits(1)){let S=A(e),G=A(e),J=A(e),z=A(e),V=1,H=1,Z=h===0?d:0;Z===1?(V=2,H=2):Z===2&&(V=2,H=1),g-=(S+G)*V,x-=(J+z)*H}let C=A(e),_=A(e);A(e);let B=e.readBits(1)?0:r,P=0;for(let S=B;S<=r;S++)A(e),P=A(e),A(e);A(e),A(e),A(e),A(e),A(e),A(e),e.readBits(1)&&e.readBits(1)&&qt(e),e.skipBits(1),e.skipBits(1),e.readBits(1)&&(e.skipBits(4),e.skipBits(4),A(e),A(e),e.skipBits(1));let w=A(e);if(Wt(e,w),e.readBits(1)){let S=A(e);for(let G=0;G<S;G++)A(e),e.skipBits(1)}e.skipBits(1),e.skipBits(1);let E=2,M=2,R=2,D=0,ue=0,L={num:1,den:1};if(e.readBits(1)){let S=Gt(e,r);L=S.pixelAspectRatio,E=S.colourPrimaries,M=S.transferCharacteristics,R=S.matrixCoefficients,D=S.fullRangeFlag,ue=S.minSpatialSegmentationIdc}return{displayWidth:g,displayHeight:x,pixelAspectRatio:L,colourPrimaries:E,transferCharacteristics:M,matrixCoefficients:R,fullRangeFlag:D,maxDecFrameBuffering:P+1,spsMaxSubLayersMinus1:r,spsTemporalIdNestingFlag:n,generalProfileSpace:o,generalTierFlag:s,generalProfileIdc:a,generalProfileCompatibilityFlags:l,generalConstraintIndicatorFlags:m,generalLevelIdc:c,chromaFormatIdc:d,bitDepthLumaMinus8:C,bitDepthChromaMinus8:_,minSpatialSegmentationIdc:ue}}catch(e){return te._error("Error parsing HEVC SPS:",e),null}},mt=t=>{try{let e=[],r=[],n=[],o=[];for(let c of _e(t)){let d=t.subarray(c.offset,c.offset+c.length),h=ve(d[0]);h===32?e.push(d):h===33?r.push(d):h===34?n.push(d):(h===39||h===40)&&o.push(d)}if(r.length===0||n.length===0)return null;let s=zt(r[0]);if(!s)return null;let a=0;if(n.length>0){let c=n[0],d=new W(Oe(c));d.skipBits(16),A(d),A(d),d.skipBits(1),d.skipBits(1),d.skipBits(3),d.skipBits(1),d.skipBits(1),A(d),A(d),K(d),d.skipBits(1),d.skipBits(1),d.readBits(1)&&A(d),K(d),K(d),d.skipBits(1),d.skipBits(1),d.skipBits(1),d.skipBits(1);let h=d.readBits(1),y=d.readBits(1);!h&&!y?a=0:h&&!y?a=2:!h&&y?a=3:a=0}let l=[...e.length?[{arrayCompleteness:1,nalUnitType:32,nalUnits:e}]:[],...r.length?[{arrayCompleteness:1,nalUnitType:33,nalUnits:r}]:[],...n.length?[{arrayCompleteness:1,nalUnitType:34,nalUnits:n}]:[],...o.length?[{arrayCompleteness:1,nalUnitType:ve(o[0][0]),nalUnits:o}]:[]];return{configurationVersion:1,generalProfileSpace:s.generalProfileSpace,generalTierFlag:s.generalTierFlag,generalProfileIdc:s.generalProfileIdc,generalProfileCompatibilityFlags:s.generalProfileCompatibilityFlags,generalConstraintIndicatorFlags:s.generalConstraintIndicatorFlags,generalLevelIdc:s.generalLevelIdc,minSpatialSegmentationIdc:s.minSpatialSegmentationIdc,parallelismType:a,chromaFormatIdc:s.chromaFormatIdc,bitDepthLumaMinus8:s.bitDepthLumaMinus8,bitDepthChromaMinus8:s.bitDepthChromaMinus8,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:s.spsMaxSubLayersMinus1+1,temporalIdNested:s.spsTemporalIdNestingFlag,lengthSizeMinusOne:3,arrays:l}}catch(e){return te._error("Error building HEVC Decoder Configuration Record:",e),null}},Ht=(t,e)=>{let r=t.readBits(2),n=t.readBits(1),o=t.readBits(5),s=0;for(let d=0;d<32;d++)s=s<<1|t.readBits(1);let a=new Uint8Array(6);for(let d=0;d<6;d++)a[d]=t.readBits(8);let l=t.readBits(8),m=[],c=[];for(let d=0;d<e;d++)m.push(t.readBits(1)),c.push(t.readBits(1));if(e>0)for(let d=e;d<8;d++)t.skipBits(2);for(let d=0;d<e;d++)m[d]&&t.skipBits(88),c[d]&&t.skipBits(8);return{general_profile_space:r,general_tier_flag:n,general_profile_idc:o,general_profile_compatibility_flags:s,general_constraint_indicator_flags:a,general_level_idc:l}},qt=t=>{for(let e=0;e<4;e++)for(let r=0;r<(e===3?2:6);r++)if(!t.readBits(1))A(t);else{let o=Math.min(64,1<<4+(e<<1));e>1&&K(t);for(let s=0;s<o;s++)K(t)}},Wt=(t,e)=>{let r=[];for(let n=0;n<e;n++)r[n]=Xt(t,n,e,r)},Xt=(t,e,r,n)=>{let o=0,s=0,a=0;if(e!==0&&(s=t.readBits(1)),s){if(e===r){let m=A(t);a=e-(m+1)}else a=e-1;t.readBits(1),A(t);let l=n[a]??0;for(let m=0;m<=l;m++)t.readBits(1)||t.readBits(1);o=n[a]}else{let l=A(t),m=A(t);for(let c=0;c<l;c++)A(t),t.readBits(1);for(let c=0;c<m;c++)A(t),t.readBits(1);o=l+m}return o},Gt=(t,e)=>{let r=2,n=2,o=2,s=0,a=0,l={num:1,den:1};if(t.readBits(1)){let m=t.readBits(8);if(m===255)l={num:t.readBits(16),den:t.readBits(16)};else{let c=ut[m];c&&(l=c)}}return t.readBits(1)&&t.readBits(1),t.readBits(1)&&(t.readBits(3),s=t.readBits(1),t.readBits(1)&&(r=t.readBits(8),n=t.readBits(8),o=t.readBits(8))),t.readBits(1)&&(A(t),A(t)),t.readBits(1),t.readBits(1),t.readBits(1),t.readBits(1)&&(A(t),A(t),A(t),A(t)),t.readBits(1)&&(t.readBits(32),t.readBits(32),t.readBits(1)&&A(t),t.readBits(1)&&Yt(t,!0,e)),t.readBits(1)&&(t.readBits(1),t.readBits(1),t.readBits(1),a=A(t),A(t),A(t),A(t),A(t)),{pixelAspectRatio:l,colourPrimaries:r,transferCharacteristics:n,matrixCoefficients:o,fullRangeFlag:s,minSpatialSegmentationIdc:a}},Yt=(t,e,r)=>{let n=!1,o=!1,s=!1;e&&(n=t.readBits(1)===1,o=t.readBits(1)===1,(n||o)&&(s=t.readBits(1)===1,s&&(t.readBits(8),t.readBits(5),t.readBits(1),t.readBits(5)),t.readBits(4),t.readBits(4),s&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5)));for(let a=0;a<=r;a++){let l=t.readBits(1)===1,m=!0;l||(m=t.readBits(1)===1);let c=!1;m?A(t):c=t.readBits(1)===1;let d=1;c||(d=A(t)+1),n&<(t,d,s),o&<(t,d,s)}},lt=(t,e,r)=>{for(let n=0;n<e;n++)A(t),A(t),r&&(A(t),A(t)),t.readBits(1)},ft=t=>{let e=[];e.push(t.configurationVersion),e.push((t.generalProfileSpace&3)<<6|(t.generalTierFlag&1)<<5|t.generalProfileIdc&31),e.push(t.generalProfileCompatibilityFlags>>>24&255),e.push(t.generalProfileCompatibilityFlags>>>16&255),e.push(t.generalProfileCompatibilityFlags>>>8&255),e.push(t.generalProfileCompatibilityFlags&255),e.push(...t.generalConstraintIndicatorFlags),e.push(t.generalLevelIdc&255),e.push(240|t.minSpatialSegmentationIdc>>8&15),e.push(t.minSpatialSegmentationIdc&255),e.push(252|t.parallelismType&3),e.push(252|t.chromaFormatIdc&3),e.push(248|t.bitDepthLumaMinus8&7),e.push(248|t.bitDepthChromaMinus8&7),e.push(t.avgFrameRate>>8&255),e.push(t.avgFrameRate&255),e.push((t.constantFrameRate&3)<<6|(t.numTemporalLayers&7)<<3|(t.temporalIdNested&1)<<2|t.lengthSizeMinusOne&3),e.push(t.arrays.length&255);for(let r of t.arrays){e.push((r.arrayCompleteness&1)<<7|0|r.nalUnitType&63),e.push(r.nalUnits.length>>8&255),e.push(r.nalUnits.length&255);for(let n of r.nalUnits){e.push(n.length>>8&255),e.push(n.length&255);for(let o=0;o<n.length;o++)e.push(n[o])}}return new Uint8Array(e)};var pt=t=>{let e=new W(t);if(e.readBits(2)!==2)return null;let n=e.readBits(1),s=(e.readBits(1)<<1)+n;if(s===3&&e.skipBits(1),e.readBits(1)===1||e.readBits(1)!==0||(e.skipBits(2),e.readBits(24)!==4817730))return null;let c=8;s>=2&&(c=e.readBits(1)?12:10);let d=e.readBits(3),h=0,y=0;if(d!==7)if(y=e.readBits(1),s===1||s===3){let M=e.readBits(1),R=e.readBits(1);h=!M&&!R?3:M&&!R?2:1,e.skipBits(1)}else h=1;else h=3,y=1;let F=e.readBits(16),g=e.readBits(16),x=F+1,C=g+1,_=x*C,T=ie(ne).level;for(let E of ne)if(_<=E.maxPictureSize){T=E.level;break}return{profile:s,level:T,bitDepth:c,chromaSubsampling:h,videoFullRangeFlag:y,colourPrimaries:d===2?1:d===1?6:2,transferCharacteristics:d===2?1:d===1?6:2,matrixCoefficients:d===7?0:d===2?1:d===1?6:2}},Kt=function*(t){let e=new W(t),r=()=>{let n=0;for(let o=0;o<8;o++){let s=e.readAlignedByte();if(n|=(s&127)<<o*7,!(s&128))break;if(o===7&&s&128)return null}return n>=2**32-1?null:n};for(;e.getBitsLeft()>=8;){e.skipBits(1);let n=e.readBits(4),o=e.readBits(1),s=e.readBits(1);e.skipBits(1),o&&e.skipBits(8);let a;if(s){let l=r();if(l===null)return;a=l}else a=Math.floor(e.getBitsLeft()/8);f(e.pos%8===0),yield{type:n,data:t.subarray(e.pos/8,e.pos/8+a)},e.skipBits(a*8)}},ht=t=>{for(let{type:e,data:r}of Kt(t)){if(e!==1)continue;let n=new W(r),o=n.readBits(3),s=n.readBits(1),a=n.readBits(1),l=0,m=0,c=0;if(a)l=n.readBits(5);else{if(n.readBits(1)&&(n.skipBits(32),n.skipBits(32),n.readBits(1)))return null;let E=n.readBits(1);E&&(c=n.readBits(5),n.skipBits(32),n.skipBits(5),n.skipBits(5));let M=n.readBits(5);for(let R=0;R<=M;R++){n.skipBits(12);let D=n.readBits(5);if(R===0&&(l=D),D>7){let L=n.readBits(1);R===0&&(m=L)}if(E&&n.readBits(1)){let S=c+1;n.skipBits(S),n.skipBits(S),n.skipBits(1)}n.readBits(1)&&n.skipBits(4)}}let d=n.readBits(4),h=n.readBits(4),y=d+1;n.skipBits(y);let F=h+1;n.skipBits(F);let g=0;if(a?g=0:g=n.readBits(1),g&&(n.skipBits(4),n.skipBits(3)),n.skipBits(1),n.skipBits(1),n.skipBits(1),!a){n.skipBits(1),n.skipBits(1),n.skipBits(1),n.skipBits(1);let w=n.readBits(1);w&&(n.skipBits(1),n.skipBits(1));let E=n.readBits(1),M=0;E?M=2:M=n.readBits(1),M>0&&(n.readBits(1)||n.skipBits(1)),w&&n.skipBits(3)}n.skipBits(1),n.skipBits(1),n.skipBits(1);let x=n.readBits(1),C=8;o===2&&x?C=n.readBits(1)?12:10:o<=2&&(C=x?10:8);let _=0;o!==1&&(_=n.readBits(1));let T=1,B=1,P=0;return _||(o===0?(T=1,B=1):o===1?(T=0,B=0):C===12&&(T=n.readBits(1),T&&(B=n.readBits(1))),T&&B&&(P=n.readBits(2))),{profile:o,level:l,tier:m,bitDepth:C,monochrome:_,chromaSubsamplingX:T,chromaSubsamplingY:B,chromaSamplePosition:P}}return null};var $r=[64*2,69*2,96*2,64*2,70*2,96*2,80*2,87*2,120*2,80*2,88*2,120*2,96*2,104*2,144*2,96*2,105*2,144*2,112*2,121*2,168*2,112*2,122*2,168*2,128*2,139*2,192*2,128*2,140*2,192*2,160*2,174*2,240*2,160*2,175*2,240*2,192*2,208*2,288*2,192*2,209*2,288*2,224*2,243*2,336*2,224*2,244*2,336*2,256*2,278*2,384*2,256*2,279*2,384*2,320*2,348*2,480*2,320*2,349*2,480*2,384*2,417*2,576*2,384*2,418*2,576*2,448*2,487*2,672*2,448*2,488*2,672*2,512*2,557*2,768*2,512*2,558*2,768*2,640*2,696*2,960*2,640*2,697*2,960*2,768*2,835*2,1152*2,768*2,836*2,1152*2,896*2,975*2,1344*2,896*2,976*2,1344*2,1024*2,1114*2,1536*2,1024*2,1115*2,1536*2,1152*2,1253*2,1728*2,1152*2,1254*2,1728*2,1280*2,1393*2,1920*2,1280*2,1394*2,1920*2];var Jr=new Uint8Array([5,4,65,67,45,51]),jr=new Uint8Array([5,4,69,65,67,51]);var Qt={apco:u.AV_PROFILE_PRORES_PROXY,apcs:u.AV_PROFILE_PRORES_LT,apcn:u.AV_PROFILE_PRORES_STANDARD,apch:u.AV_PROFILE_PRORES_HQ,ap4h:u.AV_PROFILE_PRORES_4444,ap4x:u.AV_PROFILE_PRORES_XQ},Ee=class extends ae.CustomVideoEncoder{constructor(){super(...arguments);this.codecContext=null;this.scaler=null;this.dstFrame=null;this.lastBuffer=null;this.packetEmitted=!1;this.lastScalerKey=null;this.quantizer=null;this.preciseTimings=[]}static supports(r,n){return n.bitrateMode==="quantizer"?r==="avc"||r==="hevc"||r==="vp9"||r==="av1":r==="avc"||r==="hevc"||r==="vp8"||r==="vp9"||r==="av1"||r==="prores"}async init(){this.frame=new u.Frame,this.frame.alloc(),this.frame.timeBase=new u.Rational(1,1e6),this.packet=new u.Packet,this.packet.alloc();let r=$[this.codec];f(r!==void 0);let n=()=>{if(this.codec==="prores"){let s=u.Codec.findEncoderByName(u.FF_ENCODER_PRORES_KS);if(s)return s}return u.Codec.findEncoder(r)},o=null;if(this.codec==="vp9"&&this.config.alpha==="keep")o=u.Codec.findEncoderByName(u.FF_ENCODER_LIBVPX_VP9)??u.Codec.findEncoder(r);else if(this.config.hardwareAcceleration==="prefer-software")o=n();else{let s=await Xe(r);s&&this.config.bitrateMode==="quantizer"&&!s.name?.endsWith("_nvenc")&&(s=null),o=s??n()}if(!o)throw new Error(`Unable to obtain libav codec for '${this.codec}'.`);this.avCodec=o,this.config.bitrateMode!=="quantizer"&&await this.createCodecContext()}async createCodecContext(){f(this.codecContext===null);let r=new u.CodecContext;r.allocContext3(this.avCodec);let n=u.AV_PIX_FMT_YUV420P;this.avCodec.pixelFormats&&(this.avCodec.pixelFormats.includes(u.AV_PIX_FMT_YUV420P)||(n=this.avCodec.pixelFormats[0]),this.config.alpha==="keep"&&(this.avCodec.pixelFormats.includes(u.AV_PIX_FMT_YUVA420P)?n=u.AV_PIX_FMT_YUVA420P:n=u.avcodecFindBestPixFmtOfList(this.avCodec.pixelFormats,u.AV_PIX_FMT_YUVA444P12LE)));let o=Ce({num:(this.config.displayWidth??this.config.width)*this.config.height,den:(this.config.displayHeight??this.config.height)*this.config.width});r.width=this.config.width,r.height=this.config.height,r.pixelFormat=n,r.timeBase=new u.Rational(1,1e6),r.gopSize=60,r.framerate=new u.Rational(Math.round(this.config.framerate??0)||30,1),r.bitRate=this.config.bitrateMode==="quantizer"?0n:BigInt(this.config.bitrate??new ae.Quality("medium")._toVideoBitrate(this.codec,this.config.width,this.config.height)),r.sampleAspectRatio=new u.Rational(o.num,o.den),this.config.bitrateMode==="constant"&&(r.rcMinRate=r.bitRate,r.rcMaxRate=r.bitRate);let s=this.config.latencyMode==="realtime";if(this.avCodec.name==="libx264"?s&&(r.setOption("tune","zerolatency"),r.setOption("preset","ultrafast")):this.avCodec.name==="libx265"?(r.setOption("x265-params","log-level=error"),s&&(r.setOption("tune","zerolatency"),r.setOption("preset","ultrafast"))):this.avCodec.name==="libvpx"?(s&&r.setOption("deadline","realtime"),r.setOption("cpu-used","8")):this.avCodec.name==="libvpx-vp9"?(r.setOption("deadline","realtime"),s?r.setOption("cpu-used","8"):r.setOption("cpu-used","5")):this.avCodec.name==="libsvtav1"?(process.env.SVT_LOG="1",s&&r.setOption("preset","12")):(this.avCodec.name==="h264_nvenc"||this.avCodec.name==="hevc_nvenc")&&r.setOption("forced-idr","1"),this.config.bitrateMode==="quantizer"){f(this.quantizer!==null);let l;if(this.avCodec.name==="libaom-av1"||this.avCodec.name==="libsvtav1"?l=Math.round(this.quantizer/4):l=this.quantizer,this.avCodec.name==="libx264"||this.avCodec.name==="libx265")r.setOption("qp",String(l));else if(this.avCodec.name==="libvpx-vp9"||this.avCodec.name==="libaom-av1")r.setOption("crf",String(l));else if(this.avCodec.name==="libsvtav1")r.setOption("qp",String(l));else if(this.avCodec.name==="librav1e")r.setOption("qp",String(l));else if(this.avCodec.name?.endsWith("_nvenc"))r.setOption("rc","constqp"),r.setOption("qp",String(l));else throw new Error(`Encoder '${this.avCodec.name}' cannot be used for quantizer-based encoding.`);r.qMin=l,r.qMax=l}if(this.codec==="prores"){let l=Qt[this.config.codec];f(l!==void 0),r.setOption("profile",String(l))}let a=await r.open2();u.FFmpegError.throwIfError(a,"Open codec context"),this.codecContext=r}async encode(r,n){if(this.config.bitrateMode==="quantizer"){let c;if(this.codec==="avc"?c=n.avc?.quantizer:this.codec==="hevc"?c=n.hevc?.quantizer:this.codec==="vp9"?c=n.vp9?.quantizer:c=n.av1?.quantizer,f(c!=null),this.codecContext!==null&&c!==this.quantizer){let d=await this.codecContext.sendFrame(null);for(u.FFmpegError.throwIfError(d,"Send frame");;){let h=await this.codecContext.receivePacket(this.packet);if(h===u.AVERROR_EAGAIN||h===u.AVERROR_EOF)break;this.receivePacket(h)}this.codecContext.freeContext(),this.codecContext=null}this.quantizer=c}if(this.codecContext===null&&await this.createCodecContext(),f(this.codecContext),r._data instanceof q)this.frame.unref(),this.frame.ref(r._data.frame);else{if(r.format===null)throw new Error("Cannot encode foreign VideoSample with unknown (null) format.");this.lastBuffer=await Ae(r,this.frame,this.lastBuffer)}let o=this.frame;if(this.codecContext.pixelFormat!==this.frame.format||this.codecContext.width!==this.frame.width||this.codecContext.height!==this.frame.height){this.scaler||(this.scaler=new u.SoftwareScaleContext);let c=`${this.frame.width}x${this.frame.height}:${this.frame.format}`;if(c!==this.lastScalerKey){this.scaler.getContext(this.frame.width,this.frame.height,this.frame.format,this.codecContext.width,this.codecContext.height,this.codecContext.pixelFormat,u.SWS_FAST_BILINEAR),this.lastScalerKey=c;let h=this.scaler.initContext();u.FFmpegError.throwIfError(h,"initContext")}this.dstFrame||(this.dstFrame=new u.Frame,this.dstFrame.alloc(),this.dstFrame.width=this.codecContext.width,this.dstFrame.height=this.codecContext.height,this.dstFrame.format=this.codecContext.pixelFormat,this.dstFrame.allocBuffer()),await this.scaler.scaleFrame(this.dstFrame,this.frame),this.dstFrame.copyProps(this.frame),o=this.dstFrame}o.pts=BigInt(r.microsecondTimestamp),o.duration=BigInt(r.microsecondDuration),o.timeBase=new u.Rational(1,1e6),o.pictType=n?.keyFrame?u.AV_PICTURE_TYPE_I:u.AV_PICTURE_TYPE_NONE,o.keyFrame=n?.keyFrame?1:0;let a=oe(this.preciseTimings,r.microsecondTimestamp,c=>c.microsecondTimestamp),l=a!==-1?this.preciseTimings[a]:null;l&&l.microsecondTimestamp===r.microsecondTimestamp?(l.timestamp!==r.timestamp&&(l.timestampIsValid=!1),l.duration!==r.duration&&(l.durationIsValid=!1)):(this.preciseTimings.splice(a+1,0,{microsecondTimestamp:r.microsecondTimestamp,timestamp:r.timestamp,duration:r.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift());let m=await this.codecContext.sendFrame(o);for(u.FFmpegError.throwIfError(m,"Send frame");;){let c=await this.codecContext.receivePacket(this.packet);if(c===u.AVERROR_EAGAIN||c===u.AVERROR_EOF)break;this.receivePacket(c)}}receivePacket(r){if(f(this.codecContext),u.FFmpegError.throwIfError(r,"Receive packet"),!this.packet.data)return;let n=O(this.packet.data),o=Number(this.packet.pts)/1e6,s=Number(this.packet.duration)/1e6,a=oe(this.preciseTimings,Number(this.packet.pts),g=>g.microsecondTimestamp),l=a!==-1?this.preciseTimings[a]:null;l&&l.microsecondTimestamp===Number(this.packet.pts)&&(l.timestampIsValid&&(o=l.timestamp),l.durationIsValid&&(s=l.duration));let m={},c=null,d=null;if(this.codec==="avc"||this.codec==="hevc"){let g=!1;if(this.codec==="avc"?g=this.config.avc?.format==="annexb":g=this.config.hevc?.format==="annexb",!this.packetEmitted){let x;if(this.codec==="avc"){let C=dt(this.packet.data);if(!C)throw new Error("Invalid AVC data, could not extract decoder configuration record.");x=At(C)}else{let C=mt(this.packet.data);if(!C)throw new Error("Invalid HEVC data, could not extract decoder configuration record.");x=ft(C)}c=se({width:this.config.width,height:this.config.height,codec:this.codec,codecDescription:x,colorSpace:null,avcType:1,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null,proresFormat:null}),g||(d=x)}if(!g){let C=[];for(let w of _e(n))if(this.codec==="avc"){let E=Ue(n[w.offset]);E!==7&&E!==8&&E!==13&&C.push(w)}else{let E=ve(n[w.offset]);E!==33&&E!==34&&E!==32&&C.push(w)}let _=0;for(let w of C)_+=4+w.length;let T=new Uint8Array(_),B=new DataView(T.buffer),P=0;for(let w of C){let E=w.length;B.setUint32(P,E,!1),P+=4,T.set(n.subarray(w.offset,w.offset+w.length),P),P+=w.length}n=T}}else if(this.codec==="vp8")this.packetEmitted||(c=se({width:this.config.width,height:this.config.height,codec:"vp8",codecDescription:null,colorSpace:null,avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null,proresFormat:null}));else if(this.codec==="vp9"){if(!this.packetEmitted){let g=pt(n);c=se({width:this.config.width,height:this.config.height,codec:"vp9",codecDescription:null,colorSpace:null,avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:g,av1CodecInfo:null,proresFormat:null})}}else if(this.codec==="av1"){if(!this.packetEmitted){let g=ht(n);c=se({width:this.config.width,height:this.config.height,codec:"av1",codecDescription:null,colorSpace:null,avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:g,proresFormat:null})}}else if(this.codec==="prores")this.packetEmitted||(c=se({width:this.config.width,height:this.config.height,codec:"prores",codecDescription:null,colorSpace:null,avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null,proresFormat:this.config.codec}));else throw new Error("Unreachable.");let h={},y=this.packet.getSideData(u.AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL);y&&(h.alpha=O(y).subarray(8));let F=new ae.EncodedPacket(n,this.packet.isKeyframe?"key":"delta",o,s,void 0,void 0,h);c!==null&&(m.decoderConfig={codec:c,codedWidth:this.codecContext.width,codedHeight:this.codecContext.height,displayAspectWidth:this.config.displayWidth??this.codecContext.width,displayAspectHeight:this.config.displayHeight??this.codecContext.height,description:d??void 0,colorSpace:{primaries:fe(this.codecContext.colorPrimaries),matrix:he(this.codecContext.colorSpace),transfer:pe(this.codecContext.colorTrc),fullRange:this.codecContext.colorRange===u.AVCOL_RANGE_JPEG?!0:this.codecContext.colorRange===u.AVCOL_RANGE_MPEG?!1:void 0}}),this.packetEmitted=!0,this.onPacket(F,m)}async flush(){if(this.codecContext){let r=await this.codecContext.sendFrame(null);for(u.FFmpegError.throwIfError(r,"Send frame");;){let n=await this.codecContext.receivePacket(this.packet);if(n===u.AVERROR_EAGAIN||n===u.AVERROR_EOF)break;this.receivePacket(n)}this.codecContext.freeContext(),this.codecContext=null}this.packetEmitted=!1}close(){this.codecContext?.freeContext(),this.frame.free(),this.packet.free(),this.scaler?.freeContext(),this.dstFrame?.free()}};var Be=N("mediabunny"),I=j(N("node-av"));var gt=N("mediabunny"),ce=j(N("node-av"));var Q=class extends gt.AudioSampleResource{get frame(){if(!this._frame)throw new Error("AvFrameAudioSampleResource has been closed.");return this._frame}constructor(e){if(super(),!(e instanceof ce.Frame))throw new TypeError("frame must be a NodeAv.Frame.");if(e.getMediaType()!==ce.AVMEDIA_TYPE_AUDIO)throw new Error("AvFrameAudioSampleResource must be initialized with an audio frame.");this._frame=e}getFormat(){let e=$e(this.frame.format);if(e===null){let r=ce.avGetSampleFmtName(this.frame.format);throw new TypeError(`Unsupported audio sample format: ${r} (${this.frame.format})`)}return e}getSampleRate(){return this.frame.sampleRate}getNumberOfChannels(){return this.frame.channels}getNumberOfFrames(){return this.frame.nbSamples}getTimestamp(){return Number(this.frame.pts)/this.frame.timeBase.den}close(){this.frame.free(),this._frame=null}getDataPlane(e){return f(this.frame.data&&e<this.frame.data.length),O(this.frame.data[e])}},Se=(t,e)=>{e.format=Je(t.format),e.nbSamples=t.numberOfFrames,e.sampleRate=t.sampleRate,e.channelLayout=ee(t.numberOfChannels),e.allocBuffer(),f(e.data);for(let r=0;r<e.data.length;r++)t.copyTo(e.data[r],{planeIndex:r})};var ye=class extends Be.CustomAudioDecoder{constructor(){super(...arguments);this.codecContext=null}static supports(r,n){return r==="aac"||r==="opus"||r==="mp3"||r==="vorbis"||r==="flac"||r==="ac3"||r==="eac3"||r==="dts"}async init(){this.frame=new I.Frame,this.frame.alloc(),this.packet=new I.Packet,this.packet.alloc();let r=$[this.codec];f(r!==void 0);let n=I.Codec.findDecoder(r);if(n===null)throw new Error(`Unable to obtain libav codec for '${this.codec}'.`);let o=new I.CodecContext;o.allocContext3(n),o.sampleRate=this.config.sampleRate,o.channelLayout=ee(this.config.numberOfChannels),o.timeBase=new I.Rational(1,this.config.sampleRate),o.codecType=I.AVMEDIA_TYPE_AUDIO,o.codecId=r,o.extraData=this.config.description?Buffer.from(O(this.config.description)):null;let s=await o.open2();I.FFmpegError.throwIfError(s,"Open codec context"),this.codecContext=o}async decode(r){f(this.codecContext),this.packet.isKeyframe=r.type==="key",this.packet.data=Buffer.from(r.data),this.packet.timeBase={num:1,den:this.config.sampleRate},this.packet.pts=BigInt(Math.round(r.timestamp*this.config.sampleRate)),this.packet.dts=I.AV_NOPTS_VALUE,this.packet.duration=BigInt(Math.round(r.duration*this.config.sampleRate));let n=await this.codecContext.sendPacket(this.packet);for(I.FFmpegError.throwIfError(n,"Send packet"),this.packet.unref();;){let o=await this.codecContext.receiveFrame(this.frame);if(o===I.AVERROR_EAGAIN||o===I.AVERROR_EOF)break;this.receiveFrame(o)}}receiveFrame(r){I.FFmpegError.throwIfError(r,"Receive frame");let n=this.frame.clone();if(!n)throw new Error("Allocation failure during frame clone.");n.timeBase=new I.Rational(1,this.config.sampleRate),this.onSample(new Be.AudioSample(new Q(n)))}async flush(){f(this.codecContext);let r=await this.codecContext.sendPacket(null);for(I.FFmpegError.throwIfError(r,"Flush decoder");;){let n=await this.codecContext.receiveFrame(this.frame);if(n===I.AVERROR_EAGAIN||n===I.AVERROR_EOF)break;this.receiveFrame(n)}this.codecContext.flushBuffers()}close(){this.codecContext?.freeContext(),this.frame.free(),this.packet.free()}};var le=N("mediabunny"),v=j(N("node-av"));var Ct=[8e3,11025,12e3,16e3,22050,24e3,32e3,44100,48e3],bt=[1,2,4,5,6],$t=16384,xt=(t,e,r)=>{if(t<32e3||t>384e4)return!1;let n=r===6,o=r-(n?1:0),s=32*Math.ceil(Math.ceil(t*512/e)/32),a=132+(493+28*32)*o+(n?72:0);return s>=a&&s<=8*$t};var Jt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],jt=[8e3,12e3,16e3,24e3,48e3],Zt=[8e3,11025,12e3,16e3,22050,24e3,32e3,44100,48e3],vt=[32e3,44100,48e3],Le=1024,we=class extends le.CustomAudioEncoder{constructor(){super(...arguments);this.codecContext=null;this.resampler=null;this.dstFrame=null;this.firstExpectedTimestamp=null;this.outputTimestampOffset=0;this.inputParametersKey=null;this.resamplerInputSampleRate=null;this.nextResamplerPts=null;this.packetEmitted=!1;this.adtsHeaderTemplate=null}static supports(r,n){let{numberOfChannels:o,sampleRate:s}=n;return r==="aac"&&o>=1&&o<=48&&Jt.includes(s)||r==="opus"&&o>=1&&o<=255&&jt.includes(s)||r==="mp3"&&o>=1&&o<=2&&Zt.includes(s)||r==="vorbis"&&o>=1&&o<=255&&s<=2e5||r==="flac"&&o>=1&&o<=8&&s<=655350||r==="ac3"&&o>=1&&o<=6&&vt.includes(s)||r==="eac3"&&o>=1&&o<=16&&vt.includes(s)||r==="dts"&&bt.includes(o)&&Ct.includes(s)&&xt(_t(n,r),s,o)}async init(){this.frame=new v.Frame,this.frame.alloc(),this.packet=new v.Packet,this.packet.alloc();let r=$[this.codec];f(r!==void 0);let n=v.Codec.findEncoder(r);if(!n)throw new Error(`Unable to obtain libav codec for '${this.codec}'.`);this.avCodec=n,await this.createCodecContext()}async createCodecContext(){f(this.codecContext===null);let r=new v.CodecContext;r.allocContext3(this.avCodec);let n=v.AV_SAMPLE_FMT_FLTP;this.avCodec.sampleFormats&&!this.avCodec.sampleFormats.includes(v.AV_SAMPLE_FMT_FLTP)&&(n=this.avCodec.sampleFormats[0]),r.sampleRate=this.config.sampleRate,r.channelLayout=this.codec==="dts"?je(this.config.numberOfChannels):ee(this.config.numberOfChannels),r.codecType=v.AVMEDIA_TYPE_AUDIO,r.codecId=$[this.codec],r.sampleFormat=n,r.timeBase=new v.Rational(1,this.config.sampleRate),r.bitRate=BigInt(_t(this.config,this.codec)),this.config.bitrateMode==="constant"&&(r.rcMinRate=r.bitRate,r.rcMaxRate=r.bitRate);let o=this.codec==="dts"?v.Dictionary.fromObject({strict:-2}):null,s=await r.open2(this.avCodec,o);v.FFmpegError.throwIfError(s,"Open codec context"),this.codecContext=r}async encode(r){this.codecContext===null&&(await this.createCodecContext(),f(this.codecContext)),this.firstExpectedTimestamp??=r.timestamp,r._data instanceof Q?(this.frame.unref(),this.frame.ref(r._data.frame)):Se(r,this.frame),this.frame.pts=BigInt(Math.round(r.timestamp*this.config.sampleRate)),this.frame.duration=BigInt(Math.round(r.duration*this.config.sampleRate)),this.frame.timeBase=new v.Rational(1,this.config.sampleRate);let n=`${this.frame.sampleRate}:${this.frame.channels}:${this.frame.format}`;if(this.inputParametersKey!==null&&this.inputParametersKey!==n)throw new Error("Input audio parameters changed. For this audio encoder, you cannot change the input audio parameters over time.");if(this.inputParametersKey=n,this.codecContext.frameSize>0||this.codecContext.sampleFormat!==this.frame.format||this.codecContext.sampleRate!==this.frame.sampleRate||this.codecContext.channels!==this.frame.channels){if(!this.resampler){this.resampler=new v.SoftwareResampleContext,this.resamplerInputSampleRate=this.frame.sampleRate;let a=this.codecContext.channelLayout,l=ee(this.frame.channels),m=this.resampler.allocSetOpts2(a,this.codecContext.sampleFormat,this.codecContext.sampleRate,l,this.frame.format,this.frame.sampleRate);v.FFmpegError.throwIfError(m,"allocSetOpts2");let c=this.resampler.init();v.FFmpegError.throwIfError(c,"init"),this.dstFrame=new v.Frame,this.dstFrame.alloc(),this.dstFrame.channelLayout=a,this.dstFrame.sampleRate=this.codecContext.sampleRate,this.dstFrame.format=this.codecContext.sampleFormat,this.dstFrame.nbSamples=this.codecContext.frameSize||Le,this.dstFrame.duration=BigInt(this.dstFrame.nbSamples),this.dstFrame.allocBuffer(),this.nextResamplerPts=this.frame.pts}let s=this.frame.data;if(!s)throw new DOMException("Frame has no data","EncodingError");await this.resampler.convert(null,0,s,this.frame.nbSamples),await this.pullResampledFrames()}else await this.sendFrameAndReceivePackets(this.frame)}async pullResampledFrames(){f(this.codecContext),f(this.resampler),f(this.dstFrame),f(this.nextResamplerPts!==null);let r=this.codecContext.frameSize||Le;for(;!(this.resampler.getOutSamples(0)<r);)await this.resampler.convert(this.dstFrame.data,r,null,0),this.dstFrame.pts=this.nextResamplerPts,await this.sendFrameAndReceivePackets(this.dstFrame),this.nextResamplerPts+=BigInt(r)}async sendFrameAndReceivePackets(r){f(this.codecContext);let n=await this.codecContext.sendFrame(r);for(v.FFmpegError.throwIfError(n,"Send frame");;){let o=await this.codecContext.receivePacket(this.packet);if(o===v.AVERROR_EAGAIN||o===v.AVERROR_EOF)break;this.receivePacket(o)}}receivePacket(r){if(f(this.codecContext),f(this.firstExpectedTimestamp!==null),v.FFmpegError.throwIfError(r,"Receive packet"),!this.packet.data)return;let n=Number(this.packet.pts)/this.codecContext.sampleRate,o=Number(this.packet.duration)/this.codecContext.sampleRate,s=this.packet.data,a;if(this.packetEmitted)a={};else{this.outputTimestampOffset=Math.max(this.firstExpectedTimestamp-n,0);let m=this.config.codec,c=this.codecContext.extraData?O(this.codecContext.extraData):void 0;if(this.codec==="aac"){if(!c)throw new Error("Extradata expected for AAC.");if(this.config.aac?.format==="adts"){let h=it(c);this.adtsHeaderTemplate=ot(h),c=void 0}}else if(this.codec==="opus"){if(!c)throw new Error("Extradata expected for Opus.")}else if(this.codec==="vorbis"){if(!c)throw new Error("Extradata expected for Vorbis.")}else if(this.codec==="flac"){if(!c)throw new Error("Extradata expected for FLAC.");c=new Uint8Array([102,76,97,67,128,0,0,c.byteLength,...c])}a={decoderConfig:{codec:m,sampleRate:this.codecContext.sampleRate,numberOfChannels:this.codecContext.channels,description:c}}}if(this.adtsHeaderTemplate){let m=s.byteLength+this.adtsHeaderTemplate.header.byteLength;this.adtsHeaderTemplate.bitstream.pos=30,this.adtsHeaderTemplate.bitstream.writeBits(13,m);let c=new Uint8Array(this.adtsHeaderTemplate.header.byteLength+s.byteLength);c.set(this.adtsHeaderTemplate.header,0),c.set(s,this.adtsHeaderTemplate.header.byteLength),s=c}n+=this.outputTimestampOffset;let l=new le.EncodedPacket(s,"key",n,o);this.packetEmitted=!0,this.onPacket(l,a)}async flush(){if(this.codecContext){e:if(this.resampler){f(this.resamplerInputSampleRate!==null);let r=this.resampler.getOutSamples(0);if(r===0)break e;let n=this.codecContext.frameSize||Le;f(r<n);let o=Math.ceil((n-r)/this.codecContext.sampleRate*this.resamplerInputSampleRate);this.resampler.injectSilence(o),await this.pullResampledFrames()}await this.sendFrameAndReceivePackets(null),this.codecContext.freeContext(),this.codecContext=null,this.packetEmitted=!1,this.firstExpectedTimestamp=null,this.outputTimestampOffset=0,this.adtsHeaderTemplate=null,this.resampler?.free(),this.resampler=null,this.inputParametersKey=null,this.resamplerInputSampleRate=null,this.nextResamplerPts=null,this.dstFrame?.free(),this.dstFrame=null}}close(){this.codecContext?.freeContext(),this.frame.free(),this.packet.free(),this.dstFrame?.free(),this.resampler?.free()}},_t=(t,e)=>t.bitrate??new le.Quality("medium")._toAudioBitrate(e)??0;var St=N("@mediabunny/prores");var yt=Symbol.for("@mediabunny/server loaded");globalThis[yt]&&k.Logging._error(`[WARNING]
|
|
9
|
-
@mediabunny/server was loaded twice. This will likely cause the package not to work correctly. Check if multiple dependencies are importing different versions of @mediabunny/server, or if something is being bundled incorrectly.`);globalThis[
|
|
8
|
+
"use strict";var MediabunnyServer=(()=>{var It=Object.create;var me=Object.defineProperty;var Tt=Object.getOwnPropertyDescriptor;var Pt=Object.getOwnPropertyNames;var Ft=Object.getPrototypeOf,Rt=Object.prototype.hasOwnProperty;var N=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Vt=(t,e)=>{for(var r in e)me(t,r,{get:e[r],enumerable:!0})},qe=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Pt(e))!Rt.call(t,o)&&o!==r&&me(t,o,{get:()=>e[o],enumerable:!(n=Tt(e,o))||n.enumerable});return t};var J=(t,e,r)=>(r=t!=null?It(Ft(t)):{},qe(e||!t||!t.__esModule?me(r,"default",{value:t,enumerable:!0}):r,t)),Nt=t=>qe(me({},"__esModule",{value:!0}),t);var ir={};Vt(ir,{AvFrameAudioSampleResource:()=>Q,AvFrameVideoSampleResource:()=>q,_serverOptions:()=>Y,registerMediabunnyServer:()=>rr,toAvFrame:()=>nr});var k=N("mediabunny"),X=J(N("node-av"));var xe=N("mediabunny"),b=J(N("node-av"));var i=J(N("node-av"));var $={avc:i.AV_CODEC_ID_H264,hevc:i.AV_CODEC_ID_HEVC,vp8:i.AV_CODEC_ID_VP8,vp9:i.AV_CODEC_ID_VP9,av1:i.AV_CODEC_ID_AV1,prores:i.AV_CODEC_ID_PRORES,aac:i.AV_CODEC_ID_AAC,opus:i.AV_CODEC_ID_OPUS,mp3:i.AV_CODEC_ID_MP3,vorbis:i.AV_CODEC_ID_VORBIS,flac:i.AV_CODEC_ID_FLAC,ac3:i.AV_CODEC_ID_AC3,eac3:i.AV_CODEC_ID_EAC3,dts:i.AV_CODEC_ID_DTS},Ie,We=()=>Y.hardwareContext!==void 0&&typeof Y.hardwareContext!="function"?Y.hardwareContext:(Ie===void 0&&(Ie=i.HardwareContext.auto()),Ie),Xe=t=>{if(t!==null&&!(t instanceof i.HardwareContext))throw new TypeError("When serverOptions.hardwareContext is a function, it must return or resolve to a NodeAv.HardwareContext or null.")},Te=new Map,Ge=async t=>{if(typeof Y.hardwareContext=="function"){let e=await Y.hardwareContext(t);return Xe(e),e?.getDecoderCodec(t)??null}if(!Te.has(t)){let e=We();Te.set(t,e?.getDecoderCodec(t)??null)}return Te.get(t)},Pe=new Map,Ye=async t=>{if(typeof Y.hardwareContext=="function"){let e=await Y.hardwareContext(t);return Xe(e),e?.getEncoderCodec(t)??null}if(!Pe.has(t)){let e=We();Pe.set(t,e?.getEncoderCodec(t)??null)}return Pe.get(t)},Ke=t=>{switch(t){case"bt709":return i.AVCOL_PRI_BT709;case"bt470bg":return i.AVCOL_PRI_BT470BG;case"smpte170m":return i.AVCOL_PRI_SMPTE170M;case"bt2020":return i.AVCOL_PRI_BT2020;case"smpte432":return i.AVCOL_PRI_SMPTE432}return null},fe=t=>{switch(t){case i.AVCOL_PRI_BT709:return"bt709";case i.AVCOL_PRI_BT470BG:return"bt470bg";case i.AVCOL_PRI_SMPTE170M:return"smpte170m";case i.AVCOL_PRI_BT2020:return"bt2020";case i.AVCOL_PRI_SMPTE432:return"smpte432"}return null},Qe=t=>{switch(t){case"bt709":return i.AVCOL_TRC_BT709;case"smpte170m":return i.AVCOL_TRC_SMPTE170M;case"iec61966-2-1":return i.AVCOL_TRC_IEC61966_2_1;case"linear":return i.AVCOL_TRC_LINEAR;case"pq":return i.AVCOL_TRC_SMPTE2084;case"hlg":return i.AVCOL_TRC_ARIB_STD_B67}return null},pe=t=>{switch(t){case i.AVCOL_TRC_BT709:return"bt709";case i.AVCOL_TRC_SMPTE170M:return"smpte170m";case i.AVCOL_TRC_IEC61966_2_1:return"iec61966-2-1";case i.AVCOL_TRC_LINEAR:return"linear";case i.AVCOL_TRC_SMPTE2084:return"pq";case i.AVCOL_TRC_ARIB_STD_B67:return"hlg"}return null},$e=t=>{switch(t){case"rgb":return i.AVCOL_SPC_RGB;case"bt709":return i.AVCOL_SPC_BT709;case"bt470bg":return i.AVCOL_SPC_BT470BG;case"smpte170m":return i.AVCOL_SPC_SMPTE170M;case"bt2020-ncl":return i.AVCOL_SPC_BT2020_NCL}return null},he=t=>{switch(t){case i.AVCOL_SPC_RGB:return"rgb";case i.AVCOL_SPC_BT709:return"bt709";case i.AVCOL_SPC_BT470BG:return"bt470bg";case i.AVCOL_SPC_SMPTE170M:return"smpte170m";case i.AVCOL_SPC_BT2020_NCL:return"bt2020-ncl"}return null},je=t=>{switch(t){case i.AV_PIX_FMT_YUV420P:return"I420";case i.AV_PIX_FMT_YUVJ420P:return"I420";case i.AV_PIX_FMT_YUV420P10LE:return"I420P10";case i.AV_PIX_FMT_YUV420P12LE:return"I420P12";case i.AV_PIX_FMT_YUVA420P:return"I420A";case i.AV_PIX_FMT_YUVA420P10LE:return"I420AP10";case i.AV_PIX_FMT_YUV422P:return"I422";case i.AV_PIX_FMT_YUVJ422P:return"I422";case i.AV_PIX_FMT_YUV422P10LE:return"I422P10";case i.AV_PIX_FMT_YUV422P12LE:return"I422P12";case i.AV_PIX_FMT_YUVA422P:return"I422A";case i.AV_PIX_FMT_YUVA422P10LE:return"I422AP10";case i.AV_PIX_FMT_YUVA422P12LE:return"I422AP12";case i.AV_PIX_FMT_YUV444P:return"I444";case i.AV_PIX_FMT_YUVJ444P:return"I444";case i.AV_PIX_FMT_YUV444P10LE:return"I444P10";case i.AV_PIX_FMT_YUV444P12LE:return"I444P12";case i.AV_PIX_FMT_YUVA444P:return"I444A";case i.AV_PIX_FMT_YUVA444P10LE:return"I444AP10";case i.AV_PIX_FMT_YUVA444P12LE:return"I444AP12";case i.AV_PIX_FMT_NV12:return"NV12";case i.AV_PIX_FMT_RGBA:return"RGBA";case i.AV_PIX_FMT_RGB0:return"RGBX";case i.AV_PIX_FMT_BGRA:return"BGRA";case i.AV_PIX_FMT_BGR0:return"BGRX";default:return null}},Fe=t=>{switch(t){case"I420":return i.AV_PIX_FMT_YUV420P;case"I420P10":return i.AV_PIX_FMT_YUV420P10LE;case"I420P12":return i.AV_PIX_FMT_YUV420P12LE;case"I420A":return i.AV_PIX_FMT_YUVA420P;case"I420AP10":return i.AV_PIX_FMT_YUVA420P10LE;case"I422":return i.AV_PIX_FMT_YUV422P;case"I422P10":return i.AV_PIX_FMT_YUV422P10LE;case"I422P12":return i.AV_PIX_FMT_YUV422P12LE;case"I422A":return i.AV_PIX_FMT_YUVA422P;case"I422AP10":return i.AV_PIX_FMT_YUVA422P10LE;case"I422AP12":return i.AV_PIX_FMT_YUVA422P12LE;case"I444":return i.AV_PIX_FMT_YUV444P;case"I444P10":return i.AV_PIX_FMT_YUV444P10LE;case"I444P12":return i.AV_PIX_FMT_YUV444P12LE;case"I444A":return i.AV_PIX_FMT_YUVA444P;case"I444AP10":return i.AV_PIX_FMT_YUVA444P10LE;case"I444AP12":return i.AV_PIX_FMT_YUVA444P12LE;case"NV12":return i.AV_PIX_FMT_NV12;case"RGBA":return i.AV_PIX_FMT_RGBA;case"RGBX":return i.AV_PIX_FMT_RGB0;case"BGRA":return i.AV_PIX_FMT_BGRA;case"BGRX":return i.AV_PIX_FMT_BGR0;default:return i.AV_PIX_FMT_NONE}},Je=t=>{switch(t){case i.AV_SAMPLE_FMT_U8:return"u8";case i.AV_SAMPLE_FMT_S16:return"s16";case i.AV_SAMPLE_FMT_S32:return"s32";case i.AV_SAMPLE_FMT_FLT:return"f32";case i.AV_SAMPLE_FMT_U8P:return"u8-planar";case i.AV_SAMPLE_FMT_S16P:return"s16-planar";case i.AV_SAMPLE_FMT_S32P:return"s32-planar";case i.AV_SAMPLE_FMT_FLTP:return"f32-planar";default:return null}},Ze=t=>{switch(t){case"u8":return i.AV_SAMPLE_FMT_U8;case"s16":return i.AV_SAMPLE_FMT_S16;case"s32":return i.AV_SAMPLE_FMT_S32;case"f32":return i.AV_SAMPLE_FMT_FLT;case"u8-planar":return i.AV_SAMPLE_FMT_U8P;case"s16-planar":return i.AV_SAMPLE_FMT_S16P;case"s32-planar":return i.AV_SAMPLE_FMT_S32P;case"f32-planar":return i.AV_SAMPLE_FMT_FLTP;default:return i.AV_SAMPLE_FMT_NONE}},ee=t=>{switch(t){case 1:return i.AV_CHANNEL_LAYOUT_MONO;case 2:return i.AV_CHANNEL_LAYOUT_STEREO;case 4:return i.AV_CHANNEL_LAYOUT_QUAD;case 6:return i.AV_CHANNEL_LAYOUT_5POINT1_BACK;case 8:return i.AV_CHANNEL_LAYOUT_7POINT1;default:return{nbChannels:t,order:i.AV_CHANNEL_ORDER_UNSPEC,mask:0n}}},Mt=0x603n,et=t=>{switch(t){case 1:return i.AV_CHANNEL_LAYOUT_MONO;case 2:return i.AV_CHANNEL_LAYOUT_STEREO;case 4:return{nbChannels:4,order:i.AV_CHANNEL_ORDER_NATIVE,mask:Mt};case 5:return i.AV_CHANNEL_LAYOUT_5POINT0;case 6:return i.AV_CHANNEL_LAYOUT_5POINT1;default:return{nbChannels:t,order:i.AV_CHANNEL_ORDER_UNSPEC,mask:0n}}};var U=class U{constructor(){}static get level(){return U._level}static set level(e){if(e!==0&&e!==1&&e!==2&&e!==3)throw new TypeError("Invalid log level. Use one of the values of the LogLevel enum.");U._level=e}static get _emitter(){return U._emitterInstance??=new ge}static on(e,r,n){return U._emitter.on(e,r,n)}static _error(...e){U._emitter._emit("error",e),U._level>=1&&console.error(...e)}static _warn(...e){U._emitter._emit("warn",e),U._level>=2&&console.warn(...e)}static _info(...e){U._emitter._emit("info",e),U._level>=3&&console.info(...e)}};U._level=3,U._emitterInstance=null;var te=U;function f(t){if(!t)throw new Error("Assertion failed.")}var ie=t=>t&&t[t.length-1];var A=t=>{let e=0;for(;t.readBits(1)===0&&e<32;)e++;if(e>=32)throw new Error("Invalid exponential-Golomb code.");return(1<<e)-1+t.readBits(e)},K=t=>{let e=A(t);return(e&1)===0?-(e>>1):e+1>>1};var O=t=>t.constructor===Uint8Array?t:ArrayBuffer.isView(t)?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):new Uint8Array(t),Re=t=>t.constructor===DataView?t:ArrayBuffer.isView(t)?new DataView(t.buffer,t.byteOffset,t.byteLength):new DataView(t);var tt={bt709:1,bt470bg:5,smpte170m:6,bt2020:9,smpte432:12};var rt={bt709:1,smpte170m:6,linear:8,"iec61966-2-1":13,pq:16,hlg:18};var nt={rgb:0,bt709:1,bt470bg:5,smpte170m:6,"bt2020-ncl":9};var Ve=t=>[...t].map(e=>e.toString(16).padStart(2,"0")).join("");var Ne=t=>(t=t>>1&1431655765|(t&1431655765)<<1,t=t>>2&858993459|(t&858993459)<<2,t=t>>4&252645135|(t&252645135)<<4,t=t>>8&16711935|(t&16711935)<<8,t=t>>16&65535|(t&65535)<<16,t>>>0);var oe=(t,e,r)=>{let n=0,o=t.length-1,s=-1;for(;n<=o;){let a=n+(o-n+1)/2|0;r(t[a])<=e?(s=a,n=a+1):o=a-1}return s};var Me=t=>{throw new Error(`Unexpected value: ${t}`)};var dr=1e6*(1+Number.EPSILON);var Ar=(async()=>{})().constructor;var Ce=t=>{f(Number.isInteger(t.num)),f(Number.isInteger(t.den)),f(t.den!==0);let e=Math.abs(t.num),r=Math.abs(t.den);for(;r!==0;){let o=e%r;e=r,r=o}let n=e||1;return{num:t.num/n,den:t.den/n}};var ge=class{constructor(){this._listeners=new Map}on(e,r,n){this._listeners.has(e)||this._listeners.set(e,new Set);let o={fn:r,once:n?.once??!1};return this._listeners.get(e).add(o),()=>{this._listeners.get(e)?.delete(o)}}_emit(...e){let[r,n]=e,o=this._listeners.get(r);if(o)for(let s of o){try{s.fn(n)}catch(a){console.error(a)}s.once&&o.delete(s)}}};var re=N("mediabunny"),p=J(N("node-av"));var kt=new Set([p.AV_PIX_FMT_YUVJ411P,p.AV_PIX_FMT_YUVJ420P,p.AV_PIX_FMT_YUVJ422P,p.AV_PIX_FMT_YUVJ440P,p.AV_PIX_FMT_YUVJ444P]),q=class t extends re.VideoSampleResource{get frame(){if(!this._frame)throw new Error("AvFrameVideoSampleResource has been closed.");return this._frame}constructor(e){if(super(),!(e instanceof p.Frame))throw new TypeError("frame must be a NodeAv.Frame.");if(e.getMediaType()!==p.AVMEDIA_TYPE_VIDEO)throw new Error("AvFrameVideoSampleResource must be initialized with a video frame.");this._frame=e}getFormat(){return je(this.frame.format)}getCodedWidth(){return this.frame.width}getCodedHeight(){return this.frame.height}getSquarePixelWidth(){return this.frame.sampleAspectRatio.num>this.frame.sampleAspectRatio.den?Math.round(this.frame.width*this.frame.sampleAspectRatio.num/this.frame.sampleAspectRatio.den):this.frame.width}getSquarePixelHeight(){return this.frame.sampleAspectRatio.num>this.frame.sampleAspectRatio.den?this.frame.height:Math.round(this.frame.height*this.frame.sampleAspectRatio.den/this.frame.sampleAspectRatio.num)}getColorSpace(){return new re.VideoSampleColorSpace({primaries:fe(this.frame.colorPrimaries),transfer:pe(this.frame.colorTrc),matrix:he(this.frame.colorSpace),fullRange:this.frame.colorRange===p.AVCOL_RANGE_JPEG||kt.has(this.frame.format)?!0:this.frame.colorRange===p.AVCOL_RANGE_MPEG?!1:null})}close(){this.frame.free(),this._frame=null}getDataPlanes(){return f(this.frame.data),this.frame.data.map((e,r)=>({data:O(e),stride:this.frame.linesize[r]}))}async toRgbSample(e,r){let n=this.frame.width,o=this.frame.height,s=new p.SoftwareScaleContext,a=this.frame.format,l=Fe("RGBA");s.getContext(n,o,a,n,o,l,p.SWS_BILINEAR);let m=new p.Frame;m.width=n,m.height=o,m.format=l,m.alloc(),m.allocBuffer();let c=this.frame;try{await s.scaleFrame(m,c)}finally{s.freeContext()}return m.sampleAspectRatio=c.sampleAspectRatio,new re.VideoSample(new t(m),e)}},Ae=async(t,e,r)=>{f(t.format!==null),e.format=Fe(t.format),e.width=t.codedWidth,e.height=t.codedHeight,e.sampleAspectRatio=new p.Rational(t.pixelAspectRatio.num,t.pixelAspectRatio.den),e.colorPrimaries=Ke(t.colorSpace.primaries??"unknown")??p.AVCOL_PRI_UNSPECIFIED,e.colorSpace=$e(t.colorSpace.matrix??"unknown")??p.AVCOL_SPC_UNSPECIFIED,e.colorTrc=Qe(t.colorSpace.transfer??"unknown")??p.AVCOL_TRC_UNSPECIFIED,e.colorRange=t.colorSpace.fullRange===!1?p.AVCOL_RANGE_MPEG:t.colorSpace.fullRange===!0?p.AVCOL_RANGE_JPEG:p.AVCOL_RANGE_UNSPECIFIED;let n=t.allocationSize();return(!r||r.byteLength!==n)&&(r=Buffer.from({length:n})),await t.copyTo(r),e.fromBuffer(r),r},it=async(t,e)=>{let r,n=!1;if(t._data instanceof q)r=t._data.frame;else{if(t.format===null)return null;r=new p.Frame,r.alloc(),n=!0,await Ae(t,r,null)}let o=[];(t.squarePixelWidth!==t.codedWidth||t.squarePixelHeight!==t.codedHeight)&&(o.push(`scale=${t.squarePixelWidth}:${t.squarePixelHeight}`),o.push("setsar=1")),e.rotation===90?o.push("transpose=1"):e.rotation===180?o.push("transpose=1,transpose=1"):e.rotation===270&&o.push("transpose=2"),o.push(`crop=${Math.round(e.crop.width)}:${Math.round(e.crop.height)}:${Math.round(e.crop.left)}:${Math.round(e.crop.top)}`),e.fit==="fill"?o.push(`scale=${e.width}:${e.height}`):e.fit==="contain"?(o.push(`scale=${e.width}:${e.height}:force_original_aspect_ratio=decrease`),o.push(`pad=${e.width}:${e.height}:(ow-iw)/2:(oh-ih)/2:color=black@0`)):e.fit==="cover"&&(o.push(`scale=${e.width}:${e.height}:force_original_aspect_ratio=increase`),o.push(`crop=${e.width}:${e.height}`)),o.push("setsar=1");let s=new p.FilterGraph;s.alloc();try{let a=`video_size=${r.width}x${r.height}:pix_fmt=${r.format}:time_base=1/1000000:pixel_aspect=${t.pixelAspectRatio.num}/${t.pixelAspectRatio.den}`,l=s.createFilter(p.Filter.getByName("buffer"),"src",a),m=s.createFilter(p.Filter.getByName("buffersink"),"sink");f(l&&m);let c=p.FilterInOut.createList([{name:"in",filterCtx:l,padIdx:0}]),d=p.FilterInOut.createList([{name:"out",filterCtx:m,padIdx:0}]),h=s.parsePtr(`[in]${o.join(",")}[out]`,d,c);p.FFmpegError.throwIfError(h,"FilterGraph.parsePtr");let y=await s.config();p.FFmpegError.throwIfError(y,"FilterGraph.config");let P=await l.buffersrcAddFrame(r);p.FFmpegError.throwIfError(P,"buffersrcAddFrame"),await l.buffersrcAddFrame(null);let g=new p.Frame;g.alloc();let x=await m.buffersinkGetFrame(g);return p.FFmpegError.throwIfError(x,"buffersinkGetFrame"),new re.VideoSample(new q(g),{timestamp:t.timestamp,duration:t.duration,rotation:0})}finally{s.free(),n&&r.free()}};var be=class extends xe.CustomVideoDecoder{constructor(){super(...arguments);this.codecContext=null;this.preciseTimings=[]}static supports(r,n){return r==="avc"||r==="hevc"||r==="vp8"||r==="vp9"||r==="av1"}async init(){this.frame=new b.Frame,this.frame.alloc(),this.packet=new b.Packet,this.packet.alloc()}async initCodecContext(r){f(this.codecContext===null);let n=$[this.codec];f(n!==void 0);let o;if(this.codec==="vp9"&&r.sideData.alpha?o=b.Codec.findDecoderByName(b.FF_DECODER_LIBVPX_VP9)??b.Codec.findDecoder(n):this.config.hardwareAcceleration==="prefer-software"||this.codec==="av1"?o=b.Codec.findDecoder(n):o=await Ge(n)??b.Codec.findDecoder(n),!o)throw new Error(`Unable to obtain libav codec for '${this.codec}'.`);let s=new b.CodecContext;s.allocContext3(o),this.pixelAspectRatio=Ce({num:(this.config.displayAspectWidth??this.config.codedWidth??0)*(this.config.codedHeight??0),den:(this.config.displayAspectHeight??this.config.codedHeight??0)*(this.config.codedWidth??0)||1}),s.width=this.config.codedWidth??0,s.height=this.config.codedHeight??0,s.codecType=b.AVMEDIA_TYPE_VIDEO,s.codecId=n,s.extraData=this.config.description?Buffer.from(O(this.config.description)):null,s.sampleAspectRatio=new b.Rational(this.pixelAspectRatio.num,this.pixelAspectRatio.den);let a=await s.open2();b.FFmpegError.throwIfError(a,"Open codec context"),this.codecContext=s}async decode(r){if(this.codecContext===null&&await this.initCodecContext(r),f(this.codecContext),this.packet.isKeyframe=r.type==="key",this.packet.data=Buffer.from(r.data),this.packet.timeBase={num:1,den:1e6},this.packet.pts=BigInt(r.microsecondTimestamp),this.packet.dts=b.AV_NOPTS_VALUE,this.packet.duration=BigInt(r.microsecondDuration),r.sideData.alpha){let a=Buffer.alloc(8+r.sideData.alpha.byteLength);a[7]=1,a.set(r.sideData.alpha,8),this.packet.addSideData(b.AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,a)}let n=oe(this.preciseTimings,r.microsecondTimestamp,a=>a.microsecondTimestamp),o=n!==-1?this.preciseTimings[n]:null;o&&o.microsecondTimestamp===r.microsecondTimestamp?(o.timestamp!==r.timestamp&&(o.timestampIsValid=!1),o.duration!==r.duration&&(o.durationIsValid=!1)):(this.preciseTimings.splice(n+1,0,{microsecondTimestamp:r.microsecondTimestamp,timestamp:r.timestamp,duration:r.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift());let s=await this.codecContext.sendPacket(this.packet);for(b.FFmpegError.throwIfError(s,"Send packet"),this.packet.unref();;){let a=await this.codecContext.receiveFrame(this.frame);if(a===b.AVERROR_EAGAIN||a===b.AVERROR_EOF)break;this.receiveFrame(a)}}receiveFrame(r){b.FFmpegError.throwIfError(r,"Receive frame"),this.frame.sampleAspectRatio=new b.Rational(this.pixelAspectRatio.num,this.pixelAspectRatio.den);let n=Number(this.frame.pts)/1e6,o=Number(this.frame.duration)/1e6,s=oe(this.preciseTimings,Number(this.frame.pts),m=>m.microsecondTimestamp),a=s!==-1?this.preciseTimings[s]:null;a&&a.microsecondTimestamp===Number(this.frame.pts)&&(a.timestampIsValid&&(n=a.timestamp),a.durationIsValid&&(o=a.duration));let l=this.frame.clone();if(!l)throw new Error("Frame clone allocation failed.");this.onSample(new xe.VideoSample(new q(l),{timestamp:n,duration:o}))}async flush(){if(!this.codecContext)return;let r=await this.codecContext.sendPacket(null);for(b.FFmpegError.throwIfError(r,"Flush decoder");;){let n=await this.codecContext.receiveFrame(this.frame);if(n===b.AVERROR_EAGAIN||n===b.AVERROR_EOF)break;this.receiveFrame(n)}this.codecContext.flushBuffers()}close(){this.codecContext?.freeContext(),this.frame.free(),this.packet.free()}};var ae=N("mediabunny"),u=J(N("node-av"));var W=class t{constructor(e){this.bytes=e;this.pos=0}seekToByte(e){this.pos=8*e}readBit(){let e=Math.floor(this.pos/8),r=this.bytes[e]??0,n=7-(this.pos&7),o=(r&1<<n)>>n;return this.pos++,o}readBits(e){if(e===1)return this.readBit();let r=0;for(let n=0;n<e;n++)r<<=1,r|=this.readBit();return r}writeBits(e,r){let n=this.pos+e;for(let o=this.pos;o<n;o++){let s=Math.floor(o/8),a=this.bytes[s],l=7-(o&7);a&=~(1<<l),a|=(r&1<<n-o-1)>>n-o-1<<l,this.bytes[s]=a}this.pos=n}readAlignedByte(){if(this.pos%8!==0)throw new Error("Bitstream is not byte-aligned.");let e=this.pos/8,r=this.bytes[e]??0;return this.pos+=8,r}skipBits(e){this.pos+=e}getBitsLeft(){return this.bytes.length*8-this.pos}clone(){let e=new t(this.bytes);return e.pos=this.pos,e}};var ot=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],Ut=[-1,1,2,3,4,5,6,8],st=t=>{if(!t||t.byteLength<2)throw new TypeError("AAC description must be at least 2 bytes long.");let e=new W(t),r=ke(e),{frequencyIndex:n,sampleRate:o}=Ue(e),s=e.readBits(4),a=null;s>=1&&s<=7&&(a=Ut[s]);let l=r,m=!1,c=o;if(r===5||r===29)m=r===29,c=Ue(e).sampleRate,l=ke(e),l===22&&e.skipBits(4);else for(;e.getBitsLeft()>15;){let d=e.pos;if(e.readBits(11)!==695){e.pos=d+1;continue}ke(e)===5&&e.readBits(1)&&(c=Ue(e).sampleRate,e.getBitsLeft()>11&&e.readBits(11)===1352&&(m=!!e.readBits(1)));break}return a!==null&&a>1&&(m=!1),{objectType:r,coreObjectType:l,frequencyIndex:n,channelConfiguration:s,outputSampleRate:c,outputNumberOfChannels:m&&a===1?2:a}},ke=t=>{let e=t.readBits(5);return e===31?32+t.readBits(6):e},Ue=t=>{let e=t.readBits(4);return e===15?{frequencyIndex:e,sampleRate:t.readBits(24)}:{frequencyIndex:e,sampleRate:e<ot.length?ot[e]:null}};var at=t=>{let e=new Uint8Array(7),r=new W(e),{coreObjectType:n,frequencyIndex:o,channelConfiguration:s}=t,a=n-1;return r.writeBits(12,4095),r.writeBits(1,0),r.writeBits(2,0),r.writeBits(1,1),r.writeBits(2,a),r.writeBits(4,o),r.writeBits(1,0),r.writeBits(3,s),r.writeBits(1,0),r.writeBits(1,0),r.writeBits(1,0),r.writeBits(1,0),r.skipBits(13),r.writeBits(11,2047),r.writeBits(2,0),{header:e,bitstream:r}};var Lt=["pcm-s16","pcm-s16be","pcm-s24","pcm-s24be","pcm-s32","pcm-s32be","pcm-f32","pcm-f32be","pcm-f64","pcm-f64be","pcm-u8","pcm-s8","ulaw","alaw"],Dt=["aac","opus","mp3","vorbis","flac","ac3","eac3","dts"],Vr=[...Dt,...Lt];var Oe=[{maxMacroblocks:99,maxBitrate:64e3,maxDpbMbs:396,level:10},{maxMacroblocks:396,maxBitrate:192e3,maxDpbMbs:900,level:11},{maxMacroblocks:396,maxBitrate:384e3,maxDpbMbs:2376,level:12},{maxMacroblocks:396,maxBitrate:768e3,maxDpbMbs:2376,level:13},{maxMacroblocks:396,maxBitrate:2e6,maxDpbMbs:2376,level:20},{maxMacroblocks:792,maxBitrate:4e6,maxDpbMbs:4752,level:21},{maxMacroblocks:1620,maxBitrate:4e6,maxDpbMbs:8100,level:22},{maxMacroblocks:1620,maxBitrate:1e7,maxDpbMbs:8100,level:30},{maxMacroblocks:3600,maxBitrate:14e6,maxDpbMbs:18e3,level:31},{maxMacroblocks:5120,maxBitrate:2e7,maxDpbMbs:20480,level:32},{maxMacroblocks:8192,maxBitrate:2e7,maxDpbMbs:32768,level:40},{maxMacroblocks:8192,maxBitrate:5e7,maxDpbMbs:32768,level:41},{maxMacroblocks:8704,maxBitrate:5e7,maxDpbMbs:34816,level:42},{maxMacroblocks:22080,maxBitrate:135e6,maxDpbMbs:110400,level:50},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:51},{maxMacroblocks:36864,maxBitrate:24e7,maxDpbMbs:184320,level:52},{maxMacroblocks:139264,maxBitrate:24e7,maxDpbMbs:696320,level:60},{maxMacroblocks:139264,maxBitrate:48e7,maxDpbMbs:696320,level:61},{maxMacroblocks:139264,maxBitrate:8e8,maxDpbMbs:696320,level:62}];var ne=[{maxPictureSize:36864,maxBitrate:2e5,level:10},{maxPictureSize:73728,maxBitrate:8e5,level:11},{maxPictureSize:122880,maxBitrate:18e5,level:20},{maxPictureSize:245760,maxBitrate:36e5,level:21},{maxPictureSize:552960,maxBitrate:72e5,level:30},{maxPictureSize:983040,maxBitrate:12e6,level:31},{maxPictureSize:2228224,maxBitrate:18e6,level:40},{maxPictureSize:2228224,maxBitrate:3e7,level:41},{maxPictureSize:8912896,maxBitrate:6e7,level:50},{maxPictureSize:8912896,maxBitrate:12e7,level:51},{maxPictureSize:8912896,maxBitrate:18e7,level:52},{maxPictureSize:35651584,maxBitrate:18e7,level:60},{maxPictureSize:35651584,maxBitrate:24e7,level:61},{maxPictureSize:35651584,maxBitrate:48e7,level:62}];var ct=".01.01.01.01.00",lt=".0.110.01.01.01.0",zt=["ap4x","ap4h","apch","apcn","apcs","apco"];var se=t=>{let{codec:e,codecDescription:r,colorSpace:n,avcCodecInfo:o,hevcCodecInfo:s,vp9CodecInfo:a,av1CodecInfo:l,proresFormat:m}=t;if(e==="avc"){if(f(t.avcType!==null),o){let c=new Uint8Array([o.avcProfileIndication,o.profileCompatibility,o.avcLevelIndication]);return`avc${t.avcType}.${Ve(c)}`}if(!r||r.byteLength<4)throw new TypeError("AVC decoder description is not provided or is not at least 4 bytes long.");return`avc${t.avcType}.${Ve(r.subarray(1,4))}`}else if(e==="hevc"){let c,d,h,y,P,g;if(s)c=s.generalProfileSpace,d=s.generalProfileIdc,h=Ne(s.generalProfileCompatibilityFlags),y=s.generalTierFlag,P=s.generalLevelIdc,g=[...s.generalConstraintIndicatorFlags];else{if(!r||r.byteLength<23)throw new TypeError("HEVC decoder description is not provided or is not at least 23 bytes long.");let C=Re(r),_=C.getUint8(1);c=_>>6&3,d=_&31,h=Ne(C.getUint32(2)),y=_>>5&1,P=C.getUint8(12),g=[];for(let T=0;T<6;T++)g.push(C.getUint8(6+T))}let x="hev1.";for(x+=["","A","B","C"][c]+d,x+=".",x+=h.toString(16).toUpperCase(),x+=".",x+=y===0?"L":"H",x+=P;g.length>0&&g[g.length-1]===0;)g.pop();return g.length>0&&(x+=".",x+=g.map(C=>C.toString(16).toUpperCase()).join(".")),x}else{if(e==="vp8")return"vp8";if(e==="vp9"){if(!a){let T=t.width*t.height,B=ie(ne).level;for(let F of ne)if(T<=F.maxPictureSize){B=F.level;break}return`vp09.00.${B.toString().padStart(2,"0")}.08`}let c=a.profile.toString().padStart(2,"0"),d=a.level.toString().padStart(2,"0"),h=a.bitDepth.toString().padStart(2,"0"),y=a.chromaSubsampling.toString().padStart(2,"0"),P=a.colourPrimaries.toString().padStart(2,"0"),g=a.transferCharacteristics.toString().padStart(2,"0"),x=a.matrixCoefficients.toString().padStart(2,"0"),C=a.videoFullRangeFlag.toString().padStart(2,"0"),_=`vp09.${c}.${d}.${h}.${y}`;return _+=`.${P}.${g}.${x}.${C}`,_.endsWith(ct)&&(_=_.slice(0,-ct.length)),_}else if(e==="av1"){if(!l){let F=t.width*t.height,w=ie(ne).level;for(let S of ne)if(F<=S.maxPictureSize){w=S.level;break}return`av01.0.${w.toString().padStart(2,"0")}M.08`}let c=l.profile,d=l.level.toString().padStart(2,"0"),h=l.tier?"H":"M",y=l.bitDepth.toString().padStart(2,"0"),P=l.monochrome?"1":"0",g=100*l.chromaSubsamplingX+10*l.chromaSubsamplingY+1*(l.chromaSubsamplingX&&l.chromaSubsamplingY?l.chromaSamplePosition:0),x=n?.primaries?tt[n.primaries]:1,C=n?.transfer?rt[n.transfer]:1,_=n?.matrix?nt[n.matrix]:1,T=n?.fullRange?1:0,B=`av01.${c}.${d}${h}.${y}`;return B+=`.${P}.${g.toString().padStart(3,"0")}`,B+=`.${x.toString().padStart(2,"0")}`,B+=`.${C.toString().padStart(2,"0")}`,B+=`.${_.toString().padStart(2,"0")}`,B+=`.${T}`,B.endsWith(lt)&&(B=B.slice(0,-lt.length)),B}else{if(e==="prores")return m??"apch";e!==null&&Me(e)}}throw new TypeError(`Unhandled codec '${e}'.`)};var Nr=["avc1","avc3","hev1","hvc1","vp8","vp09","av01",...zt];var _e=function*(t){let e=0,r=-1;for(;e<t.length-2;){let n=t.indexOf(0,e);if(n===-1||n>=t.length-2)break;e=n;let o=0;if(e+3<t.length&&t[e+1]===0&&t[e+2]===0&&t[e+3]===1?o=4:t[e+1]===0&&t[e+2]===1&&(o=3),o===0){e++;continue}r!==-1&&e>r&&(yield{offset:r,length:e-r}),r=e+o,e=r}r!==-1&&r<t.length&&(yield{offset:r,length:t.length-r})};var Le=t=>t&31,De=t=>{let e=[],r=t.length;for(let n=0;n<r;n++)n+2<r&&t[n]===0&&t[n+1]===0&&t[n+2]===3?(e.push(0,0),n+=2):e.push(t[n]);return new Uint8Array(e)},Jr=new Uint8Array([0,0,0,1]);var ut=t=>{try{let e=[],r=[],n=[];for(let l of _e(t)){let m=t.subarray(l.offset,l.offset+l.length),c=Le(m[0]);c===7?e.push(m):c===8?r.push(m):c===13&&n.push(m)}if(e.length===0||r.length===0)return null;let o=e[0],s=Ht(o);f(s!==null);let a=s.profileIdc===100||s.profileIdc===110||s.profileIdc===122||s.profileIdc===144;return{configurationVersion:1,avcProfileIndication:s.profileIdc,profileCompatibility:s.constraintFlags,avcLevelIndication:s.levelIdc,lengthSizeMinusOne:3,sequenceParameterSets:e,pictureParameterSets:r,chromaFormat:a?s.chromaFormatIdc:null,bitDepthLumaMinus8:a?s.bitDepthLumaMinus8:null,bitDepthChromaMinus8:a?s.bitDepthChromaMinus8:null,sequenceParameterSetExt:a?n:null}}catch(e){return te._error("Error building AVC Decoder Configuration Record:",e),null}},mt=t=>{let e=[];e.push(t.configurationVersion),e.push(t.avcProfileIndication),e.push(t.profileCompatibility),e.push(t.avcLevelIndication),e.push(252|t.lengthSizeMinusOne&3),e.push(224|t.sequenceParameterSets.length&31);for(let r of t.sequenceParameterSets){let n=r.byteLength;e.push(n>>8),e.push(n&255);for(let o=0;o<n;o++)e.push(r[o])}e.push(t.pictureParameterSets.length);for(let r of t.pictureParameterSets){let n=r.byteLength;e.push(n>>8),e.push(n&255);for(let o=0;o<n;o++)e.push(r[o])}if(t.avcProfileIndication===100||t.avcProfileIndication===110||t.avcProfileIndication===122||t.avcProfileIndication===144){f(t.chromaFormat!==null),f(t.bitDepthLumaMinus8!==null),f(t.bitDepthChromaMinus8!==null),f(t.sequenceParameterSetExt!==null),e.push(252|t.chromaFormat&3),e.push(248|t.bitDepthLumaMinus8&7),e.push(248|t.bitDepthChromaMinus8&7),e.push(t.sequenceParameterSetExt.length);for(let r of t.sequenceParameterSetExt){let n=r.byteLength;e.push(n>>8),e.push(n&255);for(let o=0;o<n;o++)e.push(r[o])}}return new Uint8Array(e)};var ft={1:{num:1,den:1},2:{num:12,den:11},3:{num:10,den:11},4:{num:16,den:11},5:{num:40,den:33},6:{num:24,den:11},7:{num:20,den:11},8:{num:32,den:11},9:{num:80,den:33},10:{num:18,den:11},11:{num:15,den:11},12:{num:64,den:33},13:{num:160,den:99},14:{num:4,den:3},15:{num:3,den:2},16:{num:2,den:1}},Ht=t=>{try{let e=new W(De(t));if(e.skipBits(1),e.skipBits(2),e.readBits(5)!==7)return null;let n=e.readAlignedByte(),o=e.readAlignedByte(),s=e.readAlignedByte();A(e);let a=1,l=0,m=0,c=0;if((n===100||n===110||n===122||n===244||n===44||n===83||n===86||n===118||n===128)&&(a=A(e),a===3&&(c=e.readBits(1)),l=A(e),m=A(e),e.skipBits(1),e.readBits(1))){for(let E=0;E<(a!==3?8:12);E++)if(e.readBits(1)){let j=E<6?16:64,z=8,V=8;for(let H=0;H<j;H++){if(V!==0){let Z=K(e);V=(z+Z+256)%256}z=V===0?z:V}}}A(e);let d=A(e);if(d===0)A(e);else if(d===1){e.skipBits(1),K(e),K(e);let L=A(e);for(let E=0;E<L;E++)K(e)}A(e),e.skipBits(1);let h=A(e),y=A(e),P=16*(h+1),g=16*(y+1),x=P,C=g,_=e.readBits(1);if(_||e.skipBits(1),e.skipBits(1),e.readBits(1)){let L=A(e),E=A(e),G=A(e),j=A(e),z,V;if((c===0?a:0)===0)z=1,V=2-_;else{let Z=a===3?1:2,de=a===1?2:1;z=Z,V=de*(2-_)}x-=z*(L+E),C-=V*(G+j)}let B=2,F=2,w=2,S=0,M={num:1,den:1},R=null,D=null;if(e.readBits(1)){if(e.readBits(1)){let de=e.readBits(8);if(de===255)M={num:e.readBits(16),den:e.readBits(16)};else{let He=ft[de];He&&(M=He)}}e.readBits(1)&&e.skipBits(1),e.readBits(1)&&(e.skipBits(3),S=e.readBits(1),e.readBits(1)&&(B=e.readBits(8),F=e.readBits(8),w=e.readBits(8))),e.readBits(1)&&(A(e),A(e)),e.readBits(1)&&(e.skipBits(32),e.skipBits(32),e.skipBits(1));let V=e.readBits(1);V&&dt(e);let H=e.readBits(1);H&&dt(e),(V||H)&&e.skipBits(1),e.skipBits(1),e.readBits(1)&&(e.skipBits(1),A(e),A(e),A(e),A(e),R=A(e),D=A(e))}if(R===null){f(D===null);let L=o&16;if((n===44||n===86||n===100||n===110||n===122||n===244)&&L)R=0,D=0;else{let E=h+1,G=y+1,j=(2-_)*G,z=Oe.find(H=>H.level>=s)??ie(Oe),V=Math.min(Math.floor(z.maxDpbMbs/(E*j)),16);R=V,D=V}}return f(D!==null),{profileIdc:n,constraintFlags:o,levelIdc:s,frameMbsOnlyFlag:_,chromaFormatIdc:a,bitDepthLumaMinus8:l,bitDepthChromaMinus8:m,codedWidth:P,codedHeight:g,displayWidth:x,displayHeight:C,pixelAspectRatio:M,colourPrimaries:B,matrixCoefficients:w,transferCharacteristics:F,fullRangeFlag:S,numReorderFrames:R,maxDecFrameBuffering:D}}catch(e){return te._error("Error parsing AVC SPS:",e),null}},dt=t=>{let e=A(t);t.skipBits(4),t.skipBits(4);for(let r=0;r<=e;r++)A(t),A(t),t.skipBits(1);t.skipBits(5),t.skipBits(5),t.skipBits(5),t.skipBits(5)};var ve=t=>t>>1&63,qt=t=>{try{let e=new W(De(t));e.skipBits(16),e.readBits(4);let r=e.readBits(3),n=e.readBits(1),{general_profile_space:o,general_tier_flag:s,general_profile_idc:a,general_profile_compatibility_flags:l,general_constraint_indicator_flags:m,general_level_idc:c}=Wt(e,r);A(e);let d=A(e),h=0;d===3&&(h=e.readBits(1));let y=A(e),P=A(e),g=y,x=P;if(e.readBits(1)){let E=A(e),G=A(e),j=A(e),z=A(e),V=1,H=1,Z=h===0?d:0;Z===1?(V=2,H=2):Z===2&&(V=2,H=1),g-=(E+G)*V,x-=(j+z)*H}let C=A(e),_=A(e);A(e);let B=e.readBits(1)?0:r,F=0;for(let E=B;E<=r;E++)A(e),F=A(e),A(e);A(e),A(e),A(e),A(e),A(e),A(e),e.readBits(1)&&e.readBits(1)&&Xt(e),e.skipBits(1),e.skipBits(1),e.readBits(1)&&(e.skipBits(4),e.skipBits(4),A(e),A(e),e.skipBits(1));let w=A(e);if(Gt(e,w),e.readBits(1)){let E=A(e);for(let G=0;G<E;G++)A(e),e.skipBits(1)}e.skipBits(1),e.skipBits(1);let S=2,M=2,R=2,D=0,ue=0,L={num:1,den:1};if(e.readBits(1)){let E=Kt(e,r);L=E.pixelAspectRatio,S=E.colourPrimaries,M=E.transferCharacteristics,R=E.matrixCoefficients,D=E.fullRangeFlag,ue=E.minSpatialSegmentationIdc}return{displayWidth:g,displayHeight:x,pixelAspectRatio:L,colourPrimaries:S,transferCharacteristics:M,matrixCoefficients:R,fullRangeFlag:D,maxDecFrameBuffering:F+1,spsMaxSubLayersMinus1:r,spsTemporalIdNestingFlag:n,generalProfileSpace:o,generalTierFlag:s,generalProfileIdc:a,generalProfileCompatibilityFlags:l,generalConstraintIndicatorFlags:m,generalLevelIdc:c,chromaFormatIdc:d,bitDepthLumaMinus8:C,bitDepthChromaMinus8:_,minSpatialSegmentationIdc:ue}}catch(e){return te._error("Error parsing HEVC SPS:",e),null}},pt=t=>{try{let e=[],r=[],n=[],o=[];for(let c of _e(t)){let d=t.subarray(c.offset,c.offset+c.length),h=ve(d[0]);h===32?e.push(d):h===33?r.push(d):h===34?n.push(d):(h===39||h===40)&&o.push(d)}if(r.length===0||n.length===0)return null;let s=qt(r[0]);if(!s)return null;let a=0;if(n.length>0){let c=n[0],d=new W(De(c));d.skipBits(16),A(d),A(d),d.skipBits(1),d.skipBits(1),d.skipBits(3),d.skipBits(1),d.skipBits(1),A(d),A(d),K(d),d.skipBits(1),d.skipBits(1),d.readBits(1)&&A(d),K(d),K(d),d.skipBits(1),d.skipBits(1),d.skipBits(1),d.skipBits(1);let h=d.readBits(1),y=d.readBits(1);!h&&!y?a=0:h&&!y?a=2:!h&&y?a=3:a=0}let l=[...e.length?[{arrayCompleteness:1,nalUnitType:32,nalUnits:e}]:[],...r.length?[{arrayCompleteness:1,nalUnitType:33,nalUnits:r}]:[],...n.length?[{arrayCompleteness:1,nalUnitType:34,nalUnits:n}]:[],...o.length?[{arrayCompleteness:1,nalUnitType:ve(o[0][0]),nalUnits:o}]:[]];return{configurationVersion:1,generalProfileSpace:s.generalProfileSpace,generalTierFlag:s.generalTierFlag,generalProfileIdc:s.generalProfileIdc,generalProfileCompatibilityFlags:s.generalProfileCompatibilityFlags,generalConstraintIndicatorFlags:s.generalConstraintIndicatorFlags,generalLevelIdc:s.generalLevelIdc,minSpatialSegmentationIdc:s.minSpatialSegmentationIdc,parallelismType:a,chromaFormatIdc:s.chromaFormatIdc,bitDepthLumaMinus8:s.bitDepthLumaMinus8,bitDepthChromaMinus8:s.bitDepthChromaMinus8,avgFrameRate:0,constantFrameRate:0,numTemporalLayers:s.spsMaxSubLayersMinus1+1,temporalIdNested:s.spsTemporalIdNestingFlag,lengthSizeMinusOne:3,arrays:l}}catch(e){return te._error("Error building HEVC Decoder Configuration Record:",e),null}},Wt=(t,e)=>{let r=t.readBits(2),n=t.readBits(1),o=t.readBits(5),s=0;for(let d=0;d<32;d++)s=s<<1|t.readBits(1);let a=new Uint8Array(6);for(let d=0;d<6;d++)a[d]=t.readBits(8);let l=t.readBits(8),m=[],c=[];for(let d=0;d<e;d++)m.push(t.readBits(1)),c.push(t.readBits(1));if(e>0)for(let d=e;d<8;d++)t.skipBits(2);for(let d=0;d<e;d++)m[d]&&t.skipBits(88),c[d]&&t.skipBits(8);return{general_profile_space:r,general_tier_flag:n,general_profile_idc:o,general_profile_compatibility_flags:s,general_constraint_indicator_flags:a,general_level_idc:l}},Xt=t=>{for(let e=0;e<4;e++)for(let r=0;r<(e===3?2:6);r++)if(!t.readBits(1))A(t);else{let o=Math.min(64,1<<4+(e<<1));e>1&&K(t);for(let s=0;s<o;s++)K(t)}},Gt=(t,e)=>{let r=[];for(let n=0;n<e;n++)r[n]=Yt(t,n,e,r)},Yt=(t,e,r,n)=>{let o=0,s=0,a=0;if(e!==0&&(s=t.readBits(1)),s){if(e===r){let m=A(t);a=e-(m+1)}else a=e-1;t.readBits(1),A(t);let l=n[a]??0;for(let m=0;m<=l;m++)t.readBits(1)||t.readBits(1);o=n[a]}else{let l=A(t),m=A(t);for(let c=0;c<l;c++)A(t),t.readBits(1);for(let c=0;c<m;c++)A(t),t.readBits(1);o=l+m}return o},Kt=(t,e)=>{let r=2,n=2,o=2,s=0,a=0,l={num:1,den:1};if(t.readBits(1)){let m=t.readBits(8);if(m===255)l={num:t.readBits(16),den:t.readBits(16)};else{let c=ft[m];c&&(l=c)}}return t.readBits(1)&&t.readBits(1),t.readBits(1)&&(t.readBits(3),s=t.readBits(1),t.readBits(1)&&(r=t.readBits(8),n=t.readBits(8),o=t.readBits(8))),t.readBits(1)&&(A(t),A(t)),t.readBits(1),t.readBits(1),t.readBits(1),t.readBits(1)&&(A(t),A(t),A(t),A(t)),t.readBits(1)&&(t.readBits(32),t.readBits(32),t.readBits(1)&&A(t),t.readBits(1)&&Qt(t,!0,e)),t.readBits(1)&&(t.readBits(1),t.readBits(1),t.readBits(1),a=A(t),A(t),A(t),A(t),A(t)),{pixelAspectRatio:l,colourPrimaries:r,transferCharacteristics:n,matrixCoefficients:o,fullRangeFlag:s,minSpatialSegmentationIdc:a}},Qt=(t,e,r)=>{let n=!1,o=!1,s=!1;e&&(n=t.readBits(1)===1,o=t.readBits(1)===1,(n||o)&&(s=t.readBits(1)===1,s&&(t.readBits(8),t.readBits(5),t.readBits(1),t.readBits(5)),t.readBits(4),t.readBits(4),s&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5)));for(let a=0;a<=r;a++){let l=t.readBits(1)===1,m=!0;l||(m=t.readBits(1)===1);let c=!1;m?A(t):c=t.readBits(1)===1;let d=1;c||(d=A(t)+1),n&&At(t,d,s),o&&At(t,d,s)}},At=(t,e,r)=>{for(let n=0;n<e;n++)A(t),A(t),r&&(A(t),A(t)),t.readBits(1)},ht=t=>{let e=[];e.push(t.configurationVersion),e.push((t.generalProfileSpace&3)<<6|(t.generalTierFlag&1)<<5|t.generalProfileIdc&31),e.push(t.generalProfileCompatibilityFlags>>>24&255),e.push(t.generalProfileCompatibilityFlags>>>16&255),e.push(t.generalProfileCompatibilityFlags>>>8&255),e.push(t.generalProfileCompatibilityFlags&255),e.push(...t.generalConstraintIndicatorFlags),e.push(t.generalLevelIdc&255),e.push(240|t.minSpatialSegmentationIdc>>8&15),e.push(t.minSpatialSegmentationIdc&255),e.push(252|t.parallelismType&3),e.push(252|t.chromaFormatIdc&3),e.push(248|t.bitDepthLumaMinus8&7),e.push(248|t.bitDepthChromaMinus8&7),e.push(t.avgFrameRate>>8&255),e.push(t.avgFrameRate&255),e.push((t.constantFrameRate&3)<<6|(t.numTemporalLayers&7)<<3|(t.temporalIdNested&1)<<2|t.lengthSizeMinusOne&3),e.push(t.arrays.length&255);for(let r of t.arrays){e.push((r.arrayCompleteness&1)<<7|0|r.nalUnitType&63),e.push(r.nalUnits.length>>8&255),e.push(r.nalUnits.length&255);for(let n of r.nalUnits){e.push(n.length>>8&255),e.push(n.length&255);for(let o=0;o<n.length;o++)e.push(n[o])}}return new Uint8Array(e)};var gt=t=>{let e=new W(t);if(e.readBits(2)!==2)return null;let n=e.readBits(1),s=(e.readBits(1)<<1)+n;if(s===3&&e.skipBits(1),e.readBits(1)===1||e.readBits(1)!==0||(e.skipBits(2),e.readBits(24)!==4817730))return null;let c=8;s>=2&&(c=e.readBits(1)?12:10);let d=e.readBits(3),h=0,y=0;if(d!==7)if(y=e.readBits(1),s===1||s===3){let M=e.readBits(1),R=e.readBits(1);h=!M&&!R?3:M&&!R?2:1,e.skipBits(1)}else h=1;else h=3,y=1;let P=e.readBits(16),g=e.readBits(16),x=P+1,C=g+1,_=x*C,T=ie(ne).level;for(let S of ne)if(_<=S.maxPictureSize){T=S.level;break}return{profile:s,level:T,bitDepth:c,chromaSubsampling:h,videoFullRangeFlag:y,colourPrimaries:d===2?1:d===1?6:2,transferCharacteristics:d===2?1:d===1?6:2,matrixCoefficients:d===7?0:d===2?1:d===1?6:2}},$t=function*(t){let e=new W(t),r=()=>{let n=0;for(let o=0;o<8;o++){let s=e.readAlignedByte();if(n|=(s&127)<<o*7,!(s&128))break;if(o===7&&s&128)return null}return n>=2**32-1?null:n};for(;e.getBitsLeft()>=8;){e.skipBits(1);let n=e.readBits(4),o=e.readBits(1),s=e.readBits(1);e.skipBits(1),o&&e.skipBits(8);let a;if(s){let l=r();if(l===null)return;a=l}else a=Math.floor(e.getBitsLeft()/8);f(e.pos%8===0),yield{type:n,data:t.subarray(e.pos/8,e.pos/8+a)},e.skipBits(a*8)}},Ct=t=>{for(let{type:e,data:r}of $t(t)){if(e!==1)continue;let n=new W(r),o=n.readBits(3),s=n.readBits(1),a=n.readBits(1),l=0,m=0,c=0;if(a)l=n.readBits(5);else{if(n.readBits(1)&&(n.skipBits(32),n.skipBits(32),n.readBits(1)))return null;let S=n.readBits(1);S&&(c=n.readBits(5),n.skipBits(32),n.skipBits(5),n.skipBits(5));let M=n.readBits(5);for(let R=0;R<=M;R++){n.skipBits(12);let D=n.readBits(5);if(R===0&&(l=D),D>7){let L=n.readBits(1);R===0&&(m=L)}if(S&&n.readBits(1)){let E=c+1;n.skipBits(E),n.skipBits(E),n.skipBits(1)}n.readBits(1)&&n.skipBits(4)}}let d=n.readBits(4),h=n.readBits(4),y=d+1;n.skipBits(y);let P=h+1;n.skipBits(P);let g=0;if(a?g=0:g=n.readBits(1),g&&(n.skipBits(4),n.skipBits(3)),n.skipBits(1),n.skipBits(1),n.skipBits(1),!a){n.skipBits(1),n.skipBits(1),n.skipBits(1),n.skipBits(1);let w=n.readBits(1);w&&(n.skipBits(1),n.skipBits(1));let S=n.readBits(1),M=0;S?M=2:M=n.readBits(1),M>0&&(n.readBits(1)||n.skipBits(1)),w&&n.skipBits(3)}n.skipBits(1),n.skipBits(1),n.skipBits(1);let x=n.readBits(1),C=8;o===2&&x?C=n.readBits(1)?12:10:o<=2&&(C=x?10:8);let _=0;o!==1&&(_=n.readBits(1));let T=1,B=1,F=0;return _||(o===0?(T=1,B=1):o===1?(T=0,B=0):C===12&&(T=n.readBits(1),T&&(B=n.readBits(1))),T&&B&&(F=n.readBits(2))),{profile:o,level:l,tier:m,bitDepth:C,monochrome:_,chromaSubsamplingX:T,chromaSubsamplingY:B,chromaSamplePosition:F}}return null};var Zr=[64*2,69*2,96*2,64*2,70*2,96*2,80*2,87*2,120*2,80*2,88*2,120*2,96*2,104*2,144*2,96*2,105*2,144*2,112*2,121*2,168*2,112*2,122*2,168*2,128*2,139*2,192*2,128*2,140*2,192*2,160*2,174*2,240*2,160*2,175*2,240*2,192*2,208*2,288*2,192*2,209*2,288*2,224*2,243*2,336*2,224*2,244*2,336*2,256*2,278*2,384*2,256*2,279*2,384*2,320*2,348*2,480*2,320*2,349*2,480*2,384*2,417*2,576*2,384*2,418*2,576*2,448*2,487*2,672*2,448*2,488*2,672*2,512*2,557*2,768*2,512*2,558*2,768*2,640*2,696*2,960*2,640*2,697*2,960*2,768*2,835*2,1152*2,768*2,836*2,1152*2,896*2,975*2,1344*2,896*2,976*2,1344*2,1024*2,1114*2,1536*2,1024*2,1115*2,1536*2,1152*2,1253*2,1728*2,1152*2,1254*2,1728*2,1280*2,1393*2,1920*2,1280*2,1394*2,1920*2];var en=new Uint8Array([5,4,65,67,45,51]),tn=new Uint8Array([5,4,69,65,67,51]);var jt={apco:u.AV_PROFILE_PRORES_PROXY,apcs:u.AV_PROFILE_PRORES_LT,apcn:u.AV_PROFILE_PRORES_STANDARD,apch:u.AV_PROFILE_PRORES_HQ,ap4h:u.AV_PROFILE_PRORES_4444,ap4x:u.AV_PROFILE_PRORES_XQ},Se=class extends ae.CustomVideoEncoder{constructor(){super(...arguments);this.codecContext=null;this.scaler=null;this.dstFrame=null;this.lastBuffer=null;this.packetEmitted=!1;this.lastScalerKey=null;this.quantizer=null;this.preciseTimings=[]}static supports(r,n){return n.bitrateMode==="quantizer"?r==="avc"||r==="hevc"||r==="vp9"||r==="av1":r==="avc"||r==="hevc"||r==="vp8"||r==="vp9"||r==="av1"||r==="prores"}async init(){this.frame=new u.Frame,this.frame.alloc(),this.frame.timeBase=new u.Rational(1,1e6),this.packet=new u.Packet,this.packet.alloc();let r=$[this.codec];f(r!==void 0);let n=()=>{if(this.codec==="prores"){let s=u.Codec.findEncoderByName(u.FF_ENCODER_PRORES_KS);if(s)return s}return u.Codec.findEncoder(r)},o=null;if(this.codec==="vp9"&&this.config.alpha==="keep")o=u.Codec.findEncoderByName(u.FF_ENCODER_LIBVPX_VP9)??u.Codec.findEncoder(r);else if(this.config.hardwareAcceleration==="prefer-software")o=n();else{let s=await Ye(r);s&&this.config.bitrateMode==="quantizer"&&!s.name?.endsWith("_nvenc")&&(s=null),o=s??n()}if(!o)throw new Error(`Unable to obtain libav codec for '${this.codec}'.`);this.avCodec=o,this.config.bitrateMode!=="quantizer"&&await this.createCodecContext()}async createCodecContext(){f(this.codecContext===null);let r=new u.CodecContext;r.allocContext3(this.avCodec);let n=u.AV_PIX_FMT_YUV420P;this.avCodec.pixelFormats&&(this.avCodec.pixelFormats.includes(u.AV_PIX_FMT_YUV420P)||(n=this.avCodec.pixelFormats[0]),this.config.alpha==="keep"&&(this.avCodec.pixelFormats.includes(u.AV_PIX_FMT_YUVA420P)?n=u.AV_PIX_FMT_YUVA420P:n=u.avcodecFindBestPixFmtOfList(this.avCodec.pixelFormats,u.AV_PIX_FMT_YUVA444P12LE)));let o=Ce({num:(this.config.displayWidth??this.config.width)*this.config.height,den:(this.config.displayHeight??this.config.height)*this.config.width});r.width=this.config.width,r.height=this.config.height,r.pixelFormat=n,r.timeBase=new u.Rational(1,1e6),r.gopSize=60,r.framerate=new u.Rational(Math.round(this.config.framerate??0)||30,1),r.bitRate=this.config.bitrateMode==="quantizer"?0n:BigInt(this.config.bitrate??new ae.Quality("medium")._toVideoBitrate(this.codec,this.config.width,this.config.height)),r.sampleAspectRatio=new u.Rational(o.num,o.den),this.config.bitrateMode==="constant"&&(r.rcMinRate=r.bitRate,r.rcMaxRate=r.bitRate);let s=this.config.latencyMode==="realtime";if(this.avCodec.name==="libx264"?s&&(r.setOption("tune","zerolatency"),r.setOption("preset","ultrafast")):this.avCodec.name==="libx265"?(r.setOption("x265-params","log-level=error"),s&&(r.setOption("tune","zerolatency"),r.setOption("preset","ultrafast"))):this.avCodec.name==="libvpx"?(s&&r.setOption("deadline","realtime"),r.setOption("cpu-used","8")):this.avCodec.name==="libvpx-vp9"?(r.setOption("deadline","realtime"),s?r.setOption("cpu-used","8"):r.setOption("cpu-used","5")):this.avCodec.name==="libsvtav1"?(process.env.SVT_LOG="1",s&&r.setOption("preset","12")):(this.avCodec.name==="h264_nvenc"||this.avCodec.name==="hevc_nvenc")&&r.setOption("forced-idr","1"),this.config.bitrateMode==="quantizer"){f(this.quantizer!==null);let l;if(this.avCodec.name==="libaom-av1"||this.avCodec.name==="libsvtav1"?l=Math.round(this.quantizer/4):l=this.quantizer,this.avCodec.name==="libx264"||this.avCodec.name==="libx265")r.setOption("qp",String(l));else if(this.avCodec.name==="libvpx-vp9"||this.avCodec.name==="libaom-av1")r.setOption("crf",String(l));else if(this.avCodec.name==="libsvtav1")r.setOption("qp",String(l));else if(this.avCodec.name==="librav1e")r.setOption("qp",String(l));else if(this.avCodec.name?.endsWith("_nvenc"))r.setOption("rc","constqp"),r.setOption("qp",String(l));else throw new Error(`Encoder '${this.avCodec.name}' cannot be used for quantizer-based encoding.`);r.qMin=l,r.qMax=l}if(this.codec==="prores"){let l=jt[this.config.codec];f(l!==void 0),r.setOption("profile",String(l))}let a=await r.open2();u.FFmpegError.throwIfError(a,"Open codec context"),this.codecContext=r}async encode(r,n){if(this.config.bitrateMode==="quantizer"){let c;if(this.codec==="avc"?c=n.avc?.quantizer:this.codec==="hevc"?c=n.hevc?.quantizer:this.codec==="vp9"?c=n.vp9?.quantizer:c=n.av1?.quantizer,f(c!=null),this.codecContext!==null&&c!==this.quantizer){let d=await this.codecContext.sendFrame(null);for(u.FFmpegError.throwIfError(d,"Send frame");;){let h=await this.codecContext.receivePacket(this.packet);if(h===u.AVERROR_EAGAIN||h===u.AVERROR_EOF)break;this.receivePacket(h)}this.codecContext.freeContext(),this.codecContext=null}this.quantizer=c}if(this.codecContext===null&&await this.createCodecContext(),f(this.codecContext),r._data instanceof q)this.frame.unref(),this.frame.ref(r._data.frame);else{if(r.format===null)throw new Error("Cannot encode foreign VideoSample with unknown (null) format.");this.lastBuffer=await Ae(r,this.frame,this.lastBuffer)}let o=this.frame;if(this.codecContext.pixelFormat!==this.frame.format||this.codecContext.width!==this.frame.width||this.codecContext.height!==this.frame.height){this.scaler||(this.scaler=new u.SoftwareScaleContext);let c=`${this.frame.width}x${this.frame.height}:${this.frame.format}`;if(c!==this.lastScalerKey){this.scaler.getContext(this.frame.width,this.frame.height,this.frame.format,this.codecContext.width,this.codecContext.height,this.codecContext.pixelFormat,u.SWS_FAST_BILINEAR),this.lastScalerKey=c;let h=this.scaler.initContext();u.FFmpegError.throwIfError(h,"initContext")}this.dstFrame||(this.dstFrame=new u.Frame,this.dstFrame.alloc(),this.dstFrame.width=this.codecContext.width,this.dstFrame.height=this.codecContext.height,this.dstFrame.format=this.codecContext.pixelFormat,this.dstFrame.allocBuffer()),await this.scaler.scaleFrame(this.dstFrame,this.frame),this.dstFrame.copyProps(this.frame),o=this.dstFrame}o.pts=BigInt(r.microsecondTimestamp),o.duration=BigInt(r.microsecondDuration),o.timeBase=new u.Rational(1,1e6),o.pictType=n?.keyFrame?u.AV_PICTURE_TYPE_I:u.AV_PICTURE_TYPE_NONE,o.keyFrame=n?.keyFrame?1:0;let a=oe(this.preciseTimings,r.microsecondTimestamp,c=>c.microsecondTimestamp),l=a!==-1?this.preciseTimings[a]:null;l&&l.microsecondTimestamp===r.microsecondTimestamp?(l.timestamp!==r.timestamp&&(l.timestampIsValid=!1),l.duration!==r.duration&&(l.durationIsValid=!1)):(this.preciseTimings.splice(a+1,0,{microsecondTimestamp:r.microsecondTimestamp,timestamp:r.timestamp,duration:r.duration,timestampIsValid:!0,durationIsValid:!0}),this.preciseTimings.length>128&&this.preciseTimings.shift());let m=await this.codecContext.sendFrame(o);for(u.FFmpegError.throwIfError(m,"Send frame");;){let c=await this.codecContext.receivePacket(this.packet);if(c===u.AVERROR_EAGAIN||c===u.AVERROR_EOF)break;this.receivePacket(c)}}receivePacket(r){if(f(this.codecContext),u.FFmpegError.throwIfError(r,"Receive packet"),!this.packet.data)return;let n=O(this.packet.data),o=Number(this.packet.pts)/1e6,s=Number(this.packet.duration)/1e6,a=oe(this.preciseTimings,Number(this.packet.pts),g=>g.microsecondTimestamp),l=a!==-1?this.preciseTimings[a]:null;l&&l.microsecondTimestamp===Number(this.packet.pts)&&(l.timestampIsValid&&(o=l.timestamp),l.durationIsValid&&(s=l.duration));let m={},c=null,d=null;if(this.codec==="avc"||this.codec==="hevc"){let g=!1;if(this.codec==="avc"?g=this.config.avc?.format==="annexb":g=this.config.hevc?.format==="annexb",!this.packetEmitted){let x;if(this.codec==="avc"){let C=ut(this.packet.data);if(!C)throw new Error("Invalid AVC data, could not extract decoder configuration record.");x=mt(C)}else{let C=pt(this.packet.data);if(!C)throw new Error("Invalid HEVC data, could not extract decoder configuration record.");x=ht(C)}c=se({width:this.config.width,height:this.config.height,codec:this.codec,codecDescription:x,colorSpace:null,avcType:1,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null,proresFormat:null}),g||(d=x)}if(!g){let C=[];for(let w of _e(n))if(this.codec==="avc"){let S=Le(n[w.offset]);S!==7&&S!==8&&S!==13&&C.push(w)}else{let S=ve(n[w.offset]);S!==33&&S!==34&&S!==32&&C.push(w)}let _=0;for(let w of C)_+=4+w.length;let T=new Uint8Array(_),B=new DataView(T.buffer),F=0;for(let w of C){let S=w.length;B.setUint32(F,S,!1),F+=4,T.set(n.subarray(w.offset,w.offset+w.length),F),F+=w.length}n=T}}else if(this.codec==="vp8")this.packetEmitted||(c=se({width:this.config.width,height:this.config.height,codec:"vp8",codecDescription:null,colorSpace:null,avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null,proresFormat:null}));else if(this.codec==="vp9"){if(!this.packetEmitted){let g=gt(n);c=se({width:this.config.width,height:this.config.height,codec:"vp9",codecDescription:null,colorSpace:null,avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:g,av1CodecInfo:null,proresFormat:null})}}else if(this.codec==="av1"){if(!this.packetEmitted){let g=Ct(n);c=se({width:this.config.width,height:this.config.height,codec:"av1",codecDescription:null,colorSpace:null,avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:g,proresFormat:null})}}else if(this.codec==="prores")this.packetEmitted||(c=se({width:this.config.width,height:this.config.height,codec:"prores",codecDescription:null,colorSpace:null,avcType:null,avcCodecInfo:null,hevcCodecInfo:null,vp9CodecInfo:null,av1CodecInfo:null,proresFormat:this.config.codec}));else throw new Error("Unreachable.");let h={},y=this.packet.getSideData(u.AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL);y&&(h.alpha=O(y).subarray(8));let P=new ae.EncodedPacket(n,this.packet.isKeyframe?"key":"delta",o,s,void 0,void 0,h);c!==null&&(m.decoderConfig={codec:c,codedWidth:this.codecContext.width,codedHeight:this.codecContext.height,displayAspectWidth:this.config.displayWidth??this.codecContext.width,displayAspectHeight:this.config.displayHeight??this.codecContext.height,description:d??void 0,colorSpace:{primaries:fe(this.codecContext.colorPrimaries),matrix:he(this.codecContext.colorSpace),transfer:pe(this.codecContext.colorTrc),fullRange:this.codecContext.colorRange===u.AVCOL_RANGE_JPEG?!0:this.codecContext.colorRange===u.AVCOL_RANGE_MPEG?!1:void 0}}),this.packetEmitted=!0,this.onPacket(P,m)}async flush(){if(this.codecContext){let r=await this.codecContext.sendFrame(null);for(u.FFmpegError.throwIfError(r,"Send frame");;){let n=await this.codecContext.receivePacket(this.packet);if(n===u.AVERROR_EAGAIN||n===u.AVERROR_EOF)break;this.receivePacket(n)}this.codecContext.freeContext(),this.codecContext=null}this.packetEmitted=!1}close(){this.codecContext?.freeContext(),this.frame.free(),this.packet.free(),this.scaler?.freeContext(),this.dstFrame?.free()}};var Be=N("mediabunny"),I=J(N("node-av"));var bt=N("mediabunny"),ce=J(N("node-av"));var Q=class extends bt.AudioSampleResource{get frame(){if(!this._frame)throw new Error("AvFrameAudioSampleResource has been closed.");return this._frame}constructor(e){if(super(),!(e instanceof ce.Frame))throw new TypeError("frame must be a NodeAv.Frame.");if(e.getMediaType()!==ce.AVMEDIA_TYPE_AUDIO)throw new Error("AvFrameAudioSampleResource must be initialized with an audio frame.");this._frame=e}getFormat(){let e=Je(this.frame.format);if(e===null){let r=ce.avGetSampleFmtName(this.frame.format);throw new TypeError(`Unsupported audio sample format: ${r} (${this.frame.format})`)}return e}getSampleRate(){return this.frame.sampleRate}getNumberOfChannels(){return this.frame.channels}getNumberOfFrames(){return this.frame.nbSamples}getTimestamp(){return Number(this.frame.pts)/this.frame.timeBase.den}close(){this.frame.free(),this._frame=null}getDataPlane(e){return f(this.frame.data&&e<this.frame.data.length),O(this.frame.data[e])}},Ee=(t,e)=>{e.format=Ze(t.format),e.nbSamples=t.numberOfFrames,e.sampleRate=t.sampleRate,e.channelLayout=ee(t.numberOfChannels),e.allocBuffer(),f(e.data);for(let r=0;r<e.data.length;r++)t.copyTo(e.data[r],{planeIndex:r})};var ye=class extends Be.CustomAudioDecoder{constructor(){super(...arguments);this.codecContext=null}static supports(r,n){return r==="aac"||r==="opus"||r==="mp3"||r==="vorbis"||r==="flac"||r==="ac3"||r==="eac3"||r==="dts"}async init(){this.frame=new I.Frame,this.frame.alloc(),this.packet=new I.Packet,this.packet.alloc();let r=$[this.codec];f(r!==void 0);let n=I.Codec.findDecoder(r);if(n===null)throw new Error(`Unable to obtain libav codec for '${this.codec}'.`);let o=new I.CodecContext;o.allocContext3(n),o.sampleRate=this.config.sampleRate,o.channelLayout=ee(this.config.numberOfChannels),o.timeBase=new I.Rational(1,this.config.sampleRate),o.codecType=I.AVMEDIA_TYPE_AUDIO,o.codecId=r,o.extraData=this.config.description?Buffer.from(O(this.config.description)):null;let s=await o.open2();I.FFmpegError.throwIfError(s,"Open codec context"),this.codecContext=o}async decode(r){f(this.codecContext),this.packet.isKeyframe=r.type==="key",this.packet.data=Buffer.from(r.data),this.packet.timeBase={num:1,den:this.config.sampleRate},this.packet.pts=BigInt(Math.round(r.timestamp*this.config.sampleRate)),this.packet.dts=I.AV_NOPTS_VALUE,this.packet.duration=BigInt(Math.round(r.duration*this.config.sampleRate));let n=await this.codecContext.sendPacket(this.packet);for(I.FFmpegError.throwIfError(n,"Send packet"),this.packet.unref();;){let o=await this.codecContext.receiveFrame(this.frame);if(o===I.AVERROR_EAGAIN||o===I.AVERROR_EOF)break;this.receiveFrame(o)}}receiveFrame(r){I.FFmpegError.throwIfError(r,"Receive frame");let n=this.frame.clone();if(!n)throw new Error("Allocation failure during frame clone.");n.timeBase=new I.Rational(1,this.config.sampleRate),this.onSample(new Be.AudioSample(new Q(n)))}async flush(){f(this.codecContext);let r=await this.codecContext.sendPacket(null);for(I.FFmpegError.throwIfError(r,"Flush decoder");;){let n=await this.codecContext.receiveFrame(this.frame);if(n===I.AVERROR_EAGAIN||n===I.AVERROR_EOF)break;this.receiveFrame(n)}this.codecContext.flushBuffers()}close(){this.codecContext?.freeContext(),this.frame.free(),this.packet.free()}};var le=N("mediabunny"),v=J(N("node-av"));var xt=[8e3,11025,12e3,16e3,22050,24e3,32e3,44100,48e3],vt=[1,2,4,5,6],Jt=16384,_t=(t,e,r)=>{if(t<32e3||t>384e4)return!1;let n=r===6,o=r-(n?1:0),s=32*Math.ceil(Math.ceil(t*512/e)/32),a=132+(493+28*32)*o+(n?72:0);return s>=a&&s<=8*Jt};var Zt=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],er=[8e3,12e3,16e3,24e3,48e3],tr=[8e3,11025,12e3,16e3,22050,24e3,32e3,44100,48e3],St=[32e3,44100,48e3],ze=1024,we=class extends le.CustomAudioEncoder{constructor(){super(...arguments);this.codecContext=null;this.resampler=null;this.dstFrame=null;this.firstExpectedTimestamp=null;this.outputTimestampOffset=0;this.inputParametersKey=null;this.resamplerInputSampleRate=null;this.nextResamplerPts=null;this.packetEmitted=!1;this.adtsHeaderTemplate=null}static supports(r,n){let{numberOfChannels:o,sampleRate:s}=n;return r==="aac"&&o>=1&&o<=48&&Zt.includes(s)||r==="opus"&&o>=1&&o<=255&&er.includes(s)||r==="mp3"&&o>=1&&o<=2&&tr.includes(s)||r==="vorbis"&&o>=1&&o<=255&&s<=2e5||r==="flac"&&o>=1&&o<=8&&s<=655350||r==="ac3"&&o>=1&&o<=6&&St.includes(s)||r==="eac3"&&o>=1&&o<=16&&St.includes(s)||r==="dts"&&vt.includes(o)&&xt.includes(s)&&_t(Et(n,r),s,o)}async init(){this.frame=new v.Frame,this.frame.alloc(),this.packet=new v.Packet,this.packet.alloc();let r=$[this.codec];f(r!==void 0);let n=v.Codec.findEncoder(r);if(!n)throw new Error(`Unable to obtain libav codec for '${this.codec}'.`);this.avCodec=n,await this.createCodecContext()}async createCodecContext(){f(this.codecContext===null);let r=new v.CodecContext;r.allocContext3(this.avCodec);let n=v.AV_SAMPLE_FMT_FLTP;this.avCodec.sampleFormats&&!this.avCodec.sampleFormats.includes(v.AV_SAMPLE_FMT_FLTP)&&(n=this.avCodec.sampleFormats[0]),r.sampleRate=this.config.sampleRate,r.channelLayout=this.codec==="dts"?et(this.config.numberOfChannels):ee(this.config.numberOfChannels),r.codecType=v.AVMEDIA_TYPE_AUDIO,r.codecId=$[this.codec],r.sampleFormat=n,r.timeBase=new v.Rational(1,this.config.sampleRate),r.bitRate=BigInt(Et(this.config,this.codec)),this.config.bitrateMode==="constant"&&(r.rcMinRate=r.bitRate,r.rcMaxRate=r.bitRate);let o=this.codec==="dts"?v.Dictionary.fromObject({strict:-2}):null,s=await r.open2(this.avCodec,o);v.FFmpegError.throwIfError(s,"Open codec context"),this.codecContext=r}async encode(r){this.codecContext===null&&(await this.createCodecContext(),f(this.codecContext)),this.firstExpectedTimestamp??=r.timestamp,r._data instanceof Q?(this.frame.unref(),this.frame.ref(r._data.frame)):Ee(r,this.frame),this.frame.pts=BigInt(Math.round(r.timestamp*this.config.sampleRate)),this.frame.duration=BigInt(Math.round(r.duration*this.config.sampleRate)),this.frame.timeBase=new v.Rational(1,this.config.sampleRate);let n=`${this.frame.sampleRate}:${this.frame.channels}:${this.frame.format}`;if(this.inputParametersKey!==null&&this.inputParametersKey!==n)throw new Error("Input audio parameters changed. For this audio encoder, you cannot change the input audio parameters over time.");if(this.inputParametersKey=n,this.codecContext.frameSize>0||this.codecContext.sampleFormat!==this.frame.format||this.codecContext.sampleRate!==this.frame.sampleRate||this.codecContext.channels!==this.frame.channels){if(!this.resampler){this.resampler=new v.SoftwareResampleContext,this.resamplerInputSampleRate=this.frame.sampleRate;let a=this.codecContext.channelLayout,l=ee(this.frame.channels),m=this.resampler.allocSetOpts2(a,this.codecContext.sampleFormat,this.codecContext.sampleRate,l,this.frame.format,this.frame.sampleRate);v.FFmpegError.throwIfError(m,"allocSetOpts2");let c=this.resampler.init();v.FFmpegError.throwIfError(c,"init"),this.dstFrame=new v.Frame,this.dstFrame.alloc(),this.dstFrame.channelLayout=a,this.dstFrame.sampleRate=this.codecContext.sampleRate,this.dstFrame.format=this.codecContext.sampleFormat,this.dstFrame.nbSamples=this.codecContext.frameSize||ze,this.dstFrame.duration=BigInt(this.dstFrame.nbSamples),this.dstFrame.allocBuffer(),this.nextResamplerPts=this.frame.pts}let s=this.frame.data;if(!s)throw new DOMException("Frame has no data","EncodingError");await this.resampler.convert(null,0,s,this.frame.nbSamples),await this.pullResampledFrames()}else await this.sendFrameAndReceivePackets(this.frame)}async pullResampledFrames(){f(this.codecContext),f(this.resampler),f(this.dstFrame),f(this.nextResamplerPts!==null);let r=this.codecContext.frameSize||ze;for(;!(this.resampler.getOutSamples(0)<r);)await this.resampler.convert(this.dstFrame.data,r,null,0),this.dstFrame.pts=this.nextResamplerPts,await this.sendFrameAndReceivePackets(this.dstFrame),this.nextResamplerPts+=BigInt(r)}async sendFrameAndReceivePackets(r){f(this.codecContext);let n=await this.codecContext.sendFrame(r);for(v.FFmpegError.throwIfError(n,"Send frame");;){let o=await this.codecContext.receivePacket(this.packet);if(o===v.AVERROR_EAGAIN||o===v.AVERROR_EOF)break;this.receivePacket(o)}}receivePacket(r){if(f(this.codecContext),f(this.firstExpectedTimestamp!==null),v.FFmpegError.throwIfError(r,"Receive packet"),!this.packet.data)return;let n=Number(this.packet.pts)/this.codecContext.sampleRate,o=Number(this.packet.duration)/this.codecContext.sampleRate,s=this.packet.data,a;if(this.packetEmitted)a={};else{this.outputTimestampOffset=Math.max(this.firstExpectedTimestamp-n,0);let m=this.config.codec,c=this.codecContext.extraData?O(this.codecContext.extraData):void 0;if(this.codec==="aac"){if(!c)throw new Error("Extradata expected for AAC.");if(this.config.aac?.format==="adts"){let h=st(c);this.adtsHeaderTemplate=at(h),c=void 0}}else if(this.codec==="opus"){if(!c)throw new Error("Extradata expected for Opus.")}else if(this.codec==="vorbis"){if(!c)throw new Error("Extradata expected for Vorbis.")}else if(this.codec==="flac"){if(!c)throw new Error("Extradata expected for FLAC.");c=new Uint8Array([102,76,97,67,128,0,0,c.byteLength,...c])}a={decoderConfig:{codec:m,sampleRate:this.codecContext.sampleRate,numberOfChannels:this.codecContext.channels,description:c}}}if(this.adtsHeaderTemplate){let m=s.byteLength+this.adtsHeaderTemplate.header.byteLength;this.adtsHeaderTemplate.bitstream.pos=30,this.adtsHeaderTemplate.bitstream.writeBits(13,m);let c=new Uint8Array(this.adtsHeaderTemplate.header.byteLength+s.byteLength);c.set(this.adtsHeaderTemplate.header,0),c.set(s,this.adtsHeaderTemplate.header.byteLength),s=c}n+=this.outputTimestampOffset;let l=new le.EncodedPacket(s,"key",n,o);this.packetEmitted=!0,this.onPacket(l,a)}async flush(){if(this.codecContext){e:if(this.resampler){f(this.resamplerInputSampleRate!==null);let r=this.resampler.getOutSamples(0);if(r===0)break e;let n=this.codecContext.frameSize||ze;f(r<n);let o=Math.ceil((n-r)/this.codecContext.sampleRate*this.resamplerInputSampleRate);this.resampler.injectSilence(o),await this.pullResampledFrames()}await this.sendFrameAndReceivePackets(null),this.codecContext.freeContext(),this.codecContext=null,this.packetEmitted=!1,this.firstExpectedTimestamp=null,this.outputTimestampOffset=0,this.adtsHeaderTemplate=null,this.resampler?.free(),this.resampler=null,this.inputParametersKey=null,this.resamplerInputSampleRate=null,this.nextResamplerPts=null,this.dstFrame?.free(),this.dstFrame=null}}close(){this.codecContext?.freeContext(),this.frame.free(),this.packet.free(),this.dstFrame?.free(),this.resampler?.free()}},Et=(t,e)=>t.bitrate??new le.Quality("medium")._toAudioBitrate(e)??0;var Bt=N("@mediabunny/prores");var wt=Symbol.for("@mediabunny/server loaded");globalThis[wt]&&k.Logging._error(`[WARNING]
|
|
9
|
+
@mediabunny/server was loaded twice. This will likely cause the package not to work correctly. Check if multiple dependencies are importing different versions of @mediabunny/server, or if something is being bundled incorrectly.`);globalThis[wt]=!0;var yt=!1,Y={},rr=(t={})=>{if(typeof t!="object"||!t)throw new TypeError("options must be an object.");if(t.hardwareContext!=null&&!(t.hardwareContext instanceof X.HardwareContext||typeof t.hardwareContext=="function"))throw new TypeError("options.hardwareContext, when provided, must be a NodeAv.HardwareContext, a function, or null.");yt||(yt=!0,Y=t,X.Log.setLevel(X.AV_LOG_ERROR),(0,k.registerDecoder)(be),(0,Bt.registerProresDecoder)(),(0,k.registerEncoder)(Se),(0,k.registerDecoder)(ye),(0,k.registerEncoder)(we),(0,k.registerVideoSampleTransformer)(it))},nr=async(t,e)=>{if(!(t instanceof k.VideoSample)&&!(t instanceof k.AudioSample))throw new TypeError("sample must be a VideoSample or an AudioSample.");if(!(e instanceof X.Frame))throw new TypeError("frame must be a NodeAv.Frame.");if(t instanceof k.VideoSample){if(t._data instanceof q)e.unref(),e.ref(t._data.frame);else{if(t.format===null)throw new Error("Cannot convert foreign VideoSample with unknown (null) format.");await Ae(t,e,null)}e.pts=BigInt(t.microsecondTimestamp),e.duration=BigInt(t.microsecondDuration),e.timeBase=new X.Rational(1,1e6)}else t._data instanceof Q?(e.unref(),e.ref(t._data.frame)):Ee(t,e),e.timeBase=new X.Rational(1,t.sampleRate),e.pts=BigInt(Math.round(t.timestamp*t.sampleRate)),e.duration=BigInt(t.numberOfFrames)};return Nt(ir);})();
|
|
10
10
|
if (typeof module === "object" && typeof module.exports === "object") Object.assign(module.exports, MediabunnyServer)
|