1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4108],{4108:(e,a,t)=>{t.r(a),t.d(a,{WavPackContentError:()=>u,WavPackParser:()=>p});var i=t(6896),s=t(1750),o=t(6454),n=t(7429);let r=[6e3,8e3,9600,11025,12e3,16e3,22050,24e3,32e3,44100,48e3,64e3,88200,96e3,192e3,-1],l={len:32,get:(e,a)=>{let t=i.UINT32_LE.get(e,a+24),s={BlockID:o.e.get(e,a),blockSize:i.UINT32_LE.get(e,a+4),version:i.UINT16_LE.get(e,a+8),totalSamples:i.UINT32_LE.get(e,a+12),blockIndex:i.UINT32_LE.get(e,a+16),blockSamples:i.UINT32_LE.get(e,a+20),flags:{bitsPerSample:(1+k(t,0,2))*8,isMono:d(t,2),isHybrid:d(t,3),isJointStereo:d(t,4),crossChannel:d(t,5),hybridNoiseShaping:d(t,6),floatingPoint:d(t,7),samplingRate:r[k(t,23,4)],isDSD:d(t,31)},crc:new i.Uint8ArrayType(4).get(e,a+28)};return s.flags.isDSD&&(s.totalSamples*=8),s}},c={len:1,get:(e,a)=>({functionId:k(e[a],0,6),isOptional:d(e[a],5),isOddSize:d(e[a],6),largeBlock:d(e[a],7)})};function d(e,a){return 1===k(e,a,1)}function k(e,a,t){return e>>>a&0xffffffff>>>32-t}var m=t(3220),f=t(402),h=t(2277);let g=m("music-metadata:parser:WavPack");class u extends(0,h.fO)("WavPack"){}class p extends n.s{constructor(){super(...arguments),this.audioDataSize=0}async parse(){return this.metadata.setAudioOnly(),this.audioDataSize=0,await this.parseWavPackBlocks(),(0,s.tryParseApeHeader)(this.metadata,this.tokenizer,this.options)}async parseWavPackBlocks(){do{if("wvpk"!==await this.tokenizer.peekToken(o.e))break;let e=await this.tokenizer.readToken(l);if("wvpk"!==e.BlockID)throw new u("Invalid WavPack Block-ID");g(`WavPack header blockIndex=${e.blockIndex}, len=${l.len}`),0!==e.blockIndex||this.metadata.format.container||(this.metadata.setFormat("container","WavPack"),this.metadata.setFormat("lossless",!e.flags.isHybrid),this.metadata.setFormat("bitsPerSample",e.flags.bitsPerSample),e.flags.isDSD||(this.metadata.setFormat("sampleRate",e.flags.samplingRate),this.metadata.setFormat("duration",e.totalSamples/e.flags.samplingRate)),this.metadata.setFormat("numberOfChannels",e.flags.isMono?1:2),this.metadata.setFormat("numberOfSamples",e.totalSamples),this.metadata.setFormat("codec",e.flags.isDSD?"DSD":"PCM"));let a=e.blockSize-(l.len-8);await (0===e.blockIndex?this.parseMetadataSubBlock(e,a):this.tokenizer.ignore(a)),e.blockSamples>0&&(this.audioDataSize+=e.blockSize)}while(!this.tokenizer.fileInfo.size||this.tokenizer.fileInfo.size-this.tokenizer.position>=l.len);this.metadata.format.duration&&this.metadata.setFormat("bitrate",8*this.audioDataSize/this.metadata.format.duration)}async parseMetadataSubBlock(e,a){let t=a;for(;t>c.len;){let a=await this.tokenizer.readToken(c),s=await this.tokenizer.readNumber(a.largeBlock?i.UINT24_LE:i.UINT8),o=new Uint8Array(2*s-!!a.isOddSize);switch(await this.tokenizer.readBuffer(o),g(`Metadata Sub-Blocks functionId=0x${a.functionId.toString(16)}, id.largeBlock=${a.largeBlock},data-size=${o.length}`),a.functionId){case 0:break;case 14:{g("ID_DSD_BLOCK");let a=1<<i.UINT8.get(o,0),t=e.flags.samplingRate*a*8;if(!e.flags.isDSD)throw new u("Only expect DSD block if DSD-flag is set");this.metadata.setFormat("sampleRate",t),this.metadata.setFormat("duration",e.totalSamples/t);break}case 36:g("ID_ALT_TRAILER: trailer for non-wav files");break;case 38:this.metadata.setFormat("audioMD5",o);break;case 47:g(`ID_BLOCK_CHECKSUM: checksum=${(0,f.EY)(o)}`);break;default:g(`Ignore unsupported meta-sub-block-id functionId=0x${a.functionId.toString(16)}`)}t-=c.len+(a.largeBlock?i.UINT24_LE.len:i.UINT8.len)+2*s,g(`remainingLength=${t}`),a.isOddSize&&this.tokenizer.ignore(1)}if(0!==t)throw new u("metadata-sub-block should fit it remaining length")}}}}]);
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.