1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7263],{7263:(e,a,n)=>{n.r(a),n.d(a,{MatroskaParser:()=>b});var t=n(3220),i=n(7429);let r={string:0,uint:1,uid:2,bool:3,binary:4,float:5},l={name:"dtd",container:{0x1a45dfa3:{name:"ebml",container:{17030:{name:"ebmlVersion",value:r.uint},17143:{name:"ebmlReadVersion",value:r.uint},17138:{name:"ebmlMaxIDWidth",value:r.uint},17139:{name:"ebmlMaxSizeWidth",value:r.uint},17026:{name:"docType",value:r.string},17031:{name:"docTypeVersion",value:r.uint},17029:{name:"docTypeReadVersion",value:r.uint}}},0x18538067:{name:"segment",container:{0x114d9b74:{name:"seekHead",container:{19899:{name:"seek",multiple:!0,container:{21419:{name:"id",value:r.binary},21420:{name:"position",value:r.uint}}}}},0x1549a966:{name:"info",container:{29604:{name:"uid",value:r.uid},29572:{name:"filename",value:r.string},3979555:{name:"prevUID",value:r.uid},3965867:{name:"prevFilename",value:r.string},4110627:{name:"nextUID",value:r.uid},4096955:{name:"nextFilename",value:r.string},2807729:{name:"timecodeScale",value:r.uint},17545:{name:"duration",value:r.float},17505:{name:"dateUTC",value:r.uint},31657:{name:"title",value:r.string},19840:{name:"muxingApp",value:r.string},22337:{name:"writingApp",value:r.string}}}
1,0x1f43b675:{name:"cluster",multiple:!0,container:{231:{name:"timecode",value:r.uid},22743:{name:"silentTracks ",multiple:!0},167:{name:"position",value:r.uid},171:{name:"prevSize",value:r.uid},160:{name:"blockGroup"},163:{name:"simpleBlock"}}},0x1654ae6b:{name:"tracks",container:{174:{name:"entries",multiple:!0,container:{215:{name:"trackNumber",value:r.uint},29637:{name:"uid",value:r.uid},131:{name:"trackType",value:r.uint},185:{name:"flagEnabled",value:r.bool},136:{name:"flagDefault",value:r.bool},21930:{name:"flagForced",value:r.bool},156:{name:"flagLacing",value:r.bool},28135:{name:"minCache",value:r.uint},28136:{name:"maxCache",value:r.uint},2352003:{name:"defaultDuration",value:r.uint},2306383:{name:"timecodeScale",value:r.float},21358:{name:"name",value:r.string},2274716:{name:"language",value:r.string},134:{name:"codecID",value:r.string},25506:{name:"codecPrivate",value:r.binary},2459272:{name:"codecName",value:r.string},3839639:{name:"codecSettings",value:r.string},3883072:{name:"codecInfoUrl",value:r.string},2536e3:{name:"codecDownloadUrl",value:r.string},170:{name:"codecDecodeAll",value:r.bool},28587:{name:"trackOverlay",value:r.uint},224:{name:"video",container:{154:{name:"flagInterlaced",value:r.bool},21432:{name:"stereoMode",value:r.uint},176:{name:"pixelWidth",value:r.uint},186:{name:"pixelHeight",value:r.uint},21680:{name:"displayWidth",value:r.uint},21690:{name:"displayHeight",value:r.uint},21683:{name:"aspectRatioType",value:r.uint},3061028:{name:"colourSpace",value:r.uint},3126563:{name:"gammaValue",value:r.float}}},225:{name:"audio",container:{181:{name:"samplingFrequency",value:r.float},30901:{name:"outputSamplingFrequency",value:r.float}
1,159:{name:"channels",value:r.uint},148:{name:"channels",value:r.uint},32123:{name:"channelPositions",value:r.binary},25188:{name:"bitDepth",value:r.uint}}},28032:{name:"contentEncodings",container:{25152:{name:"contentEncoding",container:{20529:{name:"order",value:r.uint},20530:{name:"scope",value:r.bool},20531:{name:"type",value:r.uint},20532:{name:"contentEncoding",container:{16980:{name:"contentCompAlgo",value:r.uint},16981:{name:"contentCompSettings",value:r.binary}}},20533:{name:"contentEncoding",container:{18401:{name:"contentEncAlgo",value:r.uint},18402:{name:"contentEncKeyID",value:r.binary},18403:{name:"contentSignature ",value:r.binary},18404:{name:"ContentSigKeyID ",value:r.binary},18405:{name:"contentSigAlgo ",value:r.uint},18406:{name:"contentSigHashAlgo ",value:r.uint}}},25188:{name:"bitDepth",value:r.uint}}}}}}}}},0x1c53bb6b:{name:"cues",container:{187:{name:"cuePoint",container:{179:{name:"cueTime",value:r.uid},183:{name:"positions",container:{247:{name:"track",value:r.uint},241:{name:"clusterPosition",value:r.uint},21368:{name:"blockNumber",value:r.uint},234:{name:"codecState",value:r.uint},219:{name:"reference",container:{150:{name:"time",value:r.uint},151:{name:"cluster",value:r.uint},21343:{name:"number",value:r.uint},235:{name:"codecState",value:r.uint}}},240:{name:"relativePosition",value:r.uint}}}}}}},0x1941a469:{name:"attachments",container:{24999:{name:"attachedFiles",multiple:!0,container:{18046:{name:"description",value:r.string},18030:{name:"name",value:r.string},18016:{name:"mimeType",value:r.string},18012:{name:"data",value:r.binary},18094:{name:"uid",value:r.uid}}}}},0x1043a770:{name:"chapters",container:{17849:{name:"editionEntry",container:{182:{name:"chapterAtom",container:{29636:{name:"uid",value:r.uid},145:{name:"timeStart",value:r.uint},146:{name:"timeEnd",value:r.uid},152:{name:"hidden",value:r.bool},17816:{name:"enabled",value:r.uid},143:{name:"track",container:{137:{name:"trackNumber",value:r.uid},128:{name:"display",container:{133:{name:"string",value:r.string},17276:{name:"language ",value:r.string},17278:{name:"country ",value:r.string}}}}}}}}}}},0x1254c367:{name:"tags",container:{29555:{name:"tag",multiple:!0,container:{25536:{name:"target",container:{25541:{name:"tagTrackUID",value:r.uid},25540:{name:"tagChapterUID",value:r.uint},25542:{name:"tagAttachmentUID",value:r.uid},25546:{name:"targetType",value:r.string},26826:{name:"targetTypeValue",value:r.uint},25545:{name:"tagEditionUID",value:r.uid}}},26568:{name:"simpleTags",multiple:!0,container:{17827:{name:"name",value:r.string},17543:{name:"string",value:r.string},17541:{name:"binary",value:r.binary},17530:{name:"language",value:r.string},17531:{name:"languageIETF",value:r.string},17540:{name:"default",value:r.bool}}}}}}}}}}};var u=n(8185),s=n(6896),o=n(2168),m=n(2277);let c=t("music-metadata:parser:ebml");class d extends(0,m.fO)("EBML"){}let g={ReadNext:0,IgnoreElement:2,SkipSiblings:3,TerminateParsing:4,SkipElement:5};class p{constructor(e){this.parserMap=new Map,this.ebmlMaxIDLength=4,this.ebmlMaxSizeLength=8,this.tokenizer=e,this.parserMap.set(r.uint,e=>this.readUint(e)),this.parserMap.set(r.string,e=>this.readString(e)),this.parserMap.set(r.binary,e=>this.readBuffer(e)),this.parserMap.set(r.uid,async e=>this.readBuffer(e)),this.parserMap.set(r.bool,e=>this.readFlag(e)),this.parserMap.set(r.float,e=>this.readFloat(e))}async iterate(e,a,n){return this.parseContainer(function e(a){return a.container&&Object.keys(a.container).map(e=>{let n=a.container[e];return n.id=Number.parseInt(e,10),n}).forEach(n=>{n.parent=a,e(n)}),a}(e),a,n)}async parseContainer(e,a,n){let t={};for(;this.tokenizer.position<a;){let i,r=this.tokenizer.position;try{i=await this.readElement()}catch(e){if(e instanceof o.d1)break;throw e}let l=e.container[i.id];if(l)switch(n.startNext(l)){case g.ReadNext:if(i.id,c(`Read element: name=${h(l)}{id=0x${i.id.toString(16)}, container=${!!l.container}} at position=${r}`),l.container){let e=await this.parseContainer(l,i.len>=0?this.tokenizer.position+i.len:-1,n);l.multiple?(t[l.name]||(t[l.name]=[]),t[l.name].push(e)):t[l.name]=e,await n.elementValue(l,e,r)}else{let e=this.parserMap.get(l.value);if("function"==typeof e){let a=await e(i);t[l.name]=a,await n.elementValue(l,a,r)}}break;
1case g.SkipElement:c(`Go to next element: name=${h(l)}, element.id=0x${i.id}, container=${!!l.container} at position=${r}`);break;case g.IgnoreElement:c(`Ignore element: name=${h(l)}, element.id=0x${i.id}, container=${!!l.container} at position=${r}`),await this.tokenizer.ignore(i.len);break;case g.SkipSiblings:c(`Ignore remaining container, at: name=${h(l)}, element.id=0x${i.id}, container=${!!l.container} at position=${r}`),await this.tokenizer.ignore(a-this.tokenizer.position);break;case g.TerminateParsing:return c(`Terminate parsing at element: name=${h(l)}, element.id=0x${i.id}, container=${!!l.container} at position=${r}`),t}else 236===i.id||c(`parseEbml: parent=${h(e)}, unknown child: id=${i.id.toString(16)} at position=${r}`),await this.tokenizer.ignore(i.len)}return t}async readVintData(e){let a=await this.tokenizer.peekNumber(s.UINT8),n=128,t=1;for(;(a&n)==0;){if(t>e)throw new d("VINT value exceeding maximum size");++t,n>>=1}let i=new Uint8Array(t);return await this.tokenizer.readBuffer(i),i}async readElement(){let e=await this.readVintData(this.ebmlMaxIDLength),a=await this.readVintData(this.ebmlMaxSizeLength);return a[0]^=128>>a.length-1,{id:v(e,e.length),len:v(a,a.length)}}async readFloat(e){switch(e.len){case 0:return 0;case 4:return this.tokenizer.readNumber(s.Float32_BE);case 8:case 10:return this.tokenizer.readNumber(s.Float64_BE);default:throw new d(`Invalid IEEE-754 float length: ${e.len}`)}}async readFlag(e){return await this.readUint(e)===1}async readUint(e){return v(await this.readBuffer(e),e.len)}async readString(e){return(await this.tokenizer.readToken(new s.StringType(e.len,"utf-8"))).replace(/\x00.*$/g,"")}async readBuffer(e){let a=new Uint8Array(e.len);return await this.tokenizer.readBuffer(a),a}}function v(e,a){return Number(function(e,a){let n=new Uint8Array(8),t=e.subarray(0,a);try{return n.set(t,8-a),s.UINT64_BE.get(n,0)}catch(e){return BigInt(-1)}}(e,a))}function h(e){let a="";return e.parent&&"dtd"!==e.parent.name&&(a+=`${h(e.parent)}/`),a+e.name}let f=t("music-metadata:parser:matroska");class b extends i.s{constructor(){super(...arguments),this.seekHeadOffset=0,this.flagUseIndexToSkipClusters=this.options.mkvUseIndex??!1}async parse(){let e=this.tokenizer.fileInfo.size??Number.MAX_SAFE_INTEGER,a=new p(this.tokenizer);f("Initializing DTD end MatroskaIterator"),await a.iterate(l,e,{startNext:e=>{switch(e.id){case 0x1c53bb6b:return f(`Skip element: name=${e.name}, id=0x${e.id.toString(16)}`),g.IgnoreElement;case 0x1f43b675:if(this.flagUseIndexToSkipClusters&&this.seekHead){let e=this.seekHead.seek.find(e=>e.position+this.seekHeadOffset>this.tokenizer.position);if(e){let a=e.position+this.seekHeadOffset-this.tokenizer.position;return f(`Use index to go to next position, ignoring ${a} bytes`),this.tokenizer.ignore(a),g.SkipElement}}return g.IgnoreElement;default:return g.ReadNext}},elementValue:async(e,a,n)=>{switch(f(`Received: name=${e.name}, value=${a}`),e.id){case 17026:this.metadata.setFormat("container",`EBML/${a}`);break;case 0x114d9b74:this.seekHead=a,this.seekHeadOffset=n;break;case 0x1549a966:{let e=a.timecodeScale?a.timecodeScale:1e6;if("number"==typeof a.duration){let n=a.duration*e/1e9;await this.addTag("segment:title",a.title),this.metadata.setFormat("duration",Number(n))}}break;case 0x1654ae6b:if(a?.entries){a.entries.forEach(e=>{let a={codecName:e.codecID.replace("A_","").replace("V_",""),codecSettings:e.codecSettings,flagDefault:e.flagDefault,flagLacing:e.flagLacing,flagEnabled:e.flagEnabled,language:e.language,name:e.name,type:e.trackType,audio:e.audio,video:e.video};this.metadata.addStreamInfo(a)});let e=a.entries.filter(e=>e.trackType===u.S.audio).reduce((e,a)=>!e||a.flagDefault&&!e.flagDefault||a.trackNumber<e.trackNumber?a:e,null);e&&(this.metadata.setFormat("codec",e.codecID.replace("A_","")),this.metadata.setFormat("sampleRate",e.audio.samplingFrequency),this.metadata.setFormat("numberOfChannels",e.audio.channels))}break;case 0x1254c367:await Promise.all(a.tag.map(async e=>{let a=e.target,n=a?.targetTypeValue?u.yK[a.targetTypeValue]:a?.targetType?a.targetType:"track";await Promise.all(e.simpleTags.map(async e=>{let a=e.string?e.string:e.binary;await this.addTag(`${n}:${e.name}`,a)}))}));break;case 0x1941a469:await Promise.all(a.attachedFiles.filter(e=>e.mimeType.startsWith("image/")).map(e=>this.addTag("picture",{data:e.data,format:e.mimeType,description:e.description,name:e.name})))}}})}async addTag(e,a){await this.metadata.addTag("matroska",e,a)}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.