var N=Object.create;var T=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var F=r=>T(r,"__esModule",{value:!0}),a=(r,e)=>T(r,"name",{value:e,configurable:!0});var K=(r,e)=>{for(var t in e)T(r,t,{get:e[t],enumerable:!0})},R=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Y(e))!Z.call(r,n)&&(t||n!=="default")&&T(r,n,{get:()=>e[n],enumerable:!(s=j(e,n))||s.enumerable});return r},v=(r,e)=>R(F(T(r!=null?N(J(r)):{},"default",!e&&r&&r.__esModule?{get:()=>r.default,enumerable:!0}:{value:r,enumerable:!0})),r),Q=(r=>(e,t)=>r&&r.get(e)||(t=R(F({}),e,1),r&&r.set(e,t),t))(typeof WeakMap!="undefined"?new WeakMap:0);var ae={};K(ae,{OggDemuxer:()=>k,OpusDecoder:()=>y,OpusEncoder:()=>b,WebmDemuxer:()=>x,WebmElements:()=>l,WebmHeader:()=>f,default:()=>ie,ffmpeg:()=>P,ffmpeg_download:()=>D,initializeFFmpeg:()=>_});var L=require("stream");var E=class{constructor(e){let t=require("play-opus");this.options=e,this.encoder=new t.OpusHandler(e.rate,e.channels)}encode(e){return this.encoder.encode(e)}decode(e){return this.encoder.decode(e)}encode_ctl(e,t){this.encode_ctl(e,t)}decode_ctl(e,t){this.decode_ctl(e,t)}delete(){this.encoder.delete()}};a(E,"OpusHandler");var w=class{constructor(e){let t=require("opusscript");this.options=e,this.encoder=new t(e.rate,e.channels)}encode(e){return this.encoder.encode(e,this.options.frameSize)}decode(e){return this.encoder.decode(e)}encode_ctl(e,t){this.encode_ctl(e,t)}decode_ctl(e,t){this.decode_ctl(e,t)}delete(){this.encoder.delete()}};a(w,"OpusHandler");var A={"play-opus":r=>new E(r),opusscript:r=>new w(r)};function C(r,e){if(e){if(e!=="opusscript"&&e!=="play-opus")return new Error(`Supported modules for play-media : - play-opus - opusscript`);try{require(e)}catch{return new Error(`Module [${e}] Not Found.`)}return A[e](r)}else{for(let[t,s]of Object.entries(A))try{return require(t),s(r)}catch{continue}return new Error(`No modules found. Try to install one of following : - play-opus - opusscript`)}}a(C,"createOpusHandler");var g=class extends L.Duplex{constructor(e){super(e.duplex);let t=C(e,e.encoder);if(t instanceof Error)throw t;this.encoder=t,this.pcm_length=e.frameSize*e.channels*2}encode(e){return this.encoder.encode(e)}decode(e){return this.encoder.decode(e)}cleanup(){this.encoder.delete()}_read(){}_destroy(e,t){this.cleanup(),t(e)}_final(e){this.cleanup(),this.push(null),e()}bitrate(e){return this.applyCTL(4002,e)}setFEC(e){return this.applyCTL(4012,e?1:0)}setPLP(e){return this.applyCTL(4014,Math.min(100,Math.max(0,e*100)))}};a(g,"OpusDuplexStream");var b=class extends g{constructor(e){super(e);this.remaining=Buffer.allocUnsafe(0)}_write(e,t,s){let n=Buffer.concat([this.remaining,e]),i=0;for(;n.length>=i+this.pcm_length;){let u=n.slice(i,i+this.pcm_length),p;try{p=this.encode(u)}catch(m){s(m);return}this.push(p),i+=this.pcm_length}i>0&&(this.remaining=n.slice(i)),s()}applyCTL(e,t){this.encoder.encode_ctl(e,t)}};a(b,"OpusEncoder");var X=Buffer.from("OpusHead"),I=Buffer.from("OpusTags"),y=class extends g{constructor(e){super(e)}_write(e,t,s){if(e.compare(X,0,8,0,8)===0)this.opusHead=e,this.emit("opusHead",e);else if(e.compare(I,0,8,0,8)===0)this.opusTags=e,this.emit("opusTags",e);else{let n;try{n=this.encoder.decode(e)}catch(i){s(i);return}this.push(n)}s()}applyCTL(e,t){this.encoder.decode_ctl(e,t)}};a(y,"OpusDecoder");var M=require("stream"),ee=26,te=0,re=Buffer.from("OggS"),se=Buffer.from("OpusHead"),ne=Buffer.from("OpusTags"),k=class extends M.Duplex{constructor(e){super(e)}_read(){}_write(e,t,s){for(this.remaining&&(e=Buffer.concat([this.remaining,e]),this.remaining=void 0);;){let n=this.readOggPage(e);if(n)n instanceof Error?s(n):e=n;else break}this.remaining=e,this.ogg_head=void 0,s()}readOggPage(e){if(this.ogg_head)return this.readOggData(e);{let t=this.readOggHead(e);return t?t instanceof Error?t:this.readOggData(t):!1}}readOggData(e){if(!this.ogg_head||e.length=8&&n.compare(ne,0,8,0,8)===0?this.emit("tags",n):this.push(n);else if(n.compare(se,0,8,0,8)===0)this.emit("head",n),this.opus_head=n;else return new Error("Unknown Segment Found");t+=s}return this.ogg_head=void 0,e.slice(t)}readOggHead(e){if(e.length=s.length)return!1;m=s.readUInt8(u),u++,p+=m}n.push(p),i+=p}return this.ogg_head={sizes:n,totalSize:i,pageSegments:t},e.slice(27+t)}_destroy(e,t){this._cleanup(),t(e)}_final(e){this._cleanup(),this.push(null),e()}_cleanup(){this.remaining=void 0,this.opus_head=void 0,this.ogg_head=void 0}};a(k,"OggDemuxer");var q=require("stream");var o={string:r=>r.toString("utf-8"),uint:r=>parseInt(r.toString("hex"),16),float:r=>parseFloat(r.toString("utf-8"))},l={"1a45dfa3":{name:"ebml",type:0},"4286":{name:"ebmlVersion",type:2,return:o.uint},"42f7":{name:"ebmlReadVersion",type:2,return:o.uint},"42f2":{name:"ebmlMaxIDLength",type:2,return:o.uint},"42f3":{name:"ebmlMaxSizeLength",type:2,return:o.uint},"4282":{name:"docType",type:1,return:o.string},"4287":{name:"docTypeVersion",type:2,return:o.uint},"4285":{name:"docTypeReadVersion",type:2,return:o.uint},"18538067":{name:"segment",type:0},"114d9b74":{name:"seekHead",type:0},"4dbb":{name:"seek",type:0},"53ab":{name:"seekId",type:3},"53ac":{name:"seekPosition",type:2,return:o.uint},"1549a966":{name:"info",type:0},"4489":{name:"duration",type:4,return:o.float},"4d80":{name:"muxingApp",type:1,return:o.string},"5741":{name:"writingApp",type:1,return:o.string},"1f43b675":{name:"cluster",type:0},e7:{name:"clusterTimecode",type:2,return:o.uint},a3:{name:"simpleBlock",type:3},"1654ae6b":{name:"tracks",type:0},ae:{name:"trackEntry",type:0},d7:{name:"trackNumber",type:2,return:o.uint},"83":{name:"trackType",type:2,return:o.uint},"86":{name:"codecID",type:1,return:o.string},e1:{name:"audio",type:0},b5:{name:"samplingFrequency",type:4,return:o.float},"9f":{name:"channels",type:2,return:o.uint},"6264":{name:"bitDepth",type:2,return:o.uint},"1c53bb6b":{name:"cues",type:0},bb:{name:"cuePoint",type:0},b3:{name:"cueTime",type:2,return:o.uint},b7:{name:"cueTrackPositions",type:0},f7:{name:"cueTrack",type:2,return:o.uint},f1:{name:"cueClusterPosition",type:2,return:o.uint}};var f=class{constructor(){this.ebml={},this.segment={},this.audioTrack=-1}parse(e,t){switch(e.name){case"ebml":this.ebml={};break;case"ebmlVersion":e.return&&(this.ebml.version=e.return(t));break;case"ebmlReadVersion":e.return&&(this.ebml.readVersion=e.return(t));break;case"ebmlMaxIDLength":e.return&&(this.ebml.maxIDLength=e.return(t));break;case"ebmlMaxSizeLength":e.return&&(this.ebml.maxSizeWidth=e.return(t));break;case"docType":if(e.return){let s=e.return(t);if(s!=="webm")return new Error("This is not a Webm Stream. [ DocType !== webm ]");this.ebml.docType=s}break;case"docTypeVersion":e.return&&(this.ebml.docTypeVersion=e.return(t));break;case"docTypeReadVersion":e.return&&(this.ebml.docTypeReadVersion=e.return(t));break;case"segment":this.segment={};break;case"seekHead":this.segment.seekHead=[];break;case"seekPosition":e.return&&this.segment.seekHead.push({position:e.return(t)});break;case"info":this.segment.info={};break;case"duration":e.return&&(this.segment.info.duration=e.return(t));break;case"muxingApp":e.return&&(this.segment.info.muxingApp=e.return(t));break;case"writingApp":e.return&&(this.segment.info.writingApp=e.return(t));break;case"cluster":this.segment.cluster={};break;case"clusterTimecode":e.return&&(this.segment.cluster.time=e.return(t));break;case"simpleBlock":break;case"tracks":this.segment.tracks=[];break;case"trackEntry":this.segment.tracks.push({});break;case"trackNumber":e.return&&(this.segment.tracks[this.segment.tracks.length-1].trackNumber=e.return(t));break;case"trackType":if(e.return){let s=e.return(t);s===2&&(this.audioTrack=this.segment.tracks.length-1),this.segment.tracks[this.segment.tracks.length-1].trackType=s}break;case"codecID":if(e.return){let s=e.return(t);if(s!=="A_OPUS"&&this.segment.tracks[this.segment.tracks.length-1].trackType===2)return new Error("Audio Codec is not OPUS");this.segment.tracks[this.segment.tracks.length-1].codecID=s}break;case"audio":this.segment.tracks[this.segment.tracks.length-1].audio={};break;case"samplingFrequency":e.return&&(this.segment.tracks[this.segment.tracks.length-1].audio.rate=e.return(t));break;case"channels":e.return&&(this.segment.tracks[this.segment.tracks.length-1].audio.channels=e.return(t));break;case"bitDepth":e.return&&(this.segment.tracks[this.segment.tracks.length-1].audio.bitDepth=e.return(t));break;case"cues":this.segment.cues=[];break;case"cuePoint":this.segment.cues.push({});break;case"cueTime":e.return&&(this.segment.cues[this.segment.cues.length-1].time=e.return(t));break;case"cueTrack":e.return&&(this.segment.cues[this.segment.cues.length-1].track=e.return(t));break;case"cueClusterPosition":e.return&&(this.segment.cues[this.segment.cues.length-1].position=e.return(t));break;default:break}}};a(f,"WebmHeader");var x=class extends q.Duplex{constructor(e){super(e);this.cursor=0,this.header=new f,this.headfound=!1,this.data_length=0,this.data_size=0}get vint_length(){let e=0;for(;e<8&&!(1<<7-e&this.chunk[this.cursor]);e++);return++e}get vint_value(){if(!this.chunk)return!1;let e=this.vint_length;if(this.chunk.lengththis.cursor;){let e=this.cursor,t=this.vint_length;if(this.chunk.length400){h.default.stdout.write(`We don't currently support your platform and architecture. If you want support for ffmpeg static build, create a issue at play-audio repository with following logs. Platform : ${t} Arch : ${e} `);return}else n.statusCode>300&&(n=await z(n.headers.location));let u=d.default.createWriteStream(s);if(n.pipe((0,$.createGunzip)()).pipe(u),r.debug===!0){let p=parseInt(n.headers["content-length"])-1,m=0;n.on("data",U=>{m+=U.length,h.default.stdout.clearLine(0),h.default.stdout.cursorTo(0),h.default.stdout.write(`FFmpeg Download status : ${(m/p*100).toFixed(0)} %`)})}u.once("finish",()=>{d.default.chmodSync(s,"755"),h.default.stdout.write(` `)})}a(D,"ffmpeg_download");function z(r,e={}){return new Promise((t,s)=>{let n=new V.URL(r);e.method??="GET";let i={host:n.hostname,path:n.pathname+n.search,headers:e.headers??{},method:e.method},u=(0,G.request)(i,t);u.on("error",p=>{s(p)}),e.method==="POST"&&u.write(e.body),u.end()})}a(z,"https_getter");async function _(r){let t=`ffmpeg${O.default.platform()==="win32"?".exe":""}`,s=[];switch(r){case"npx":s=[t],t="npx";break;case"local":let i=[(0,S.resolve)(`./node_modules/.bin/${t}`),(0,S.resolve)(`../node_modules/.bin/${t}`)];if(d.default.existsSync(i[0]))t=i[0];else if(d.default.existsSync(i[1]))t=i[1];else return!1;break;case void 0:return await _("local")===!1?_("global"):!0}s.push("-h");let n=(0,H.spawn)(t,s,{shell:!0,windowsHide:!0});return new Promise(i=>{n.once("close",u=>{u===0?(B=t,i(!0)):i(!1)})})}a(_,"initializeFFmpeg");var ie={OpusDecoder:y,OggDemuxer:k,OpusEncoder:b,WebmDemuxer:x,WebmHeader:f,WebmElements:l,ffmpeg_download:D,ffmpeg:P,initializeFFmpeg:_};module.exports=Q(ae);0&&(module.exports={OggDemuxer,OpusDecoder,OpusEncoder,WebmDemuxer,WebmElements,WebmHeader,ffmpeg,ffmpeg_download,initializeFFmpeg}); //# sourceMappingURL=index.js.map