2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
"use strict";(self.webpackChunkmontana_messenger=self.webpackChunkmontana_messenger||[]).push([[2315],{42315(e,t,a){a.r(t),a.d(t,{AsfParser:()=>L});var n=a(17833),r=a(45207);function i(e){let t,a=e.trim();if(36!==a.length||"-"!==a[8]||"-"!==a[13]||"-"!==a[18]||"-"!==a[23])throw new Error(`Invalid GUID format: ${e}`);const n=new Uint8Array(16);t=parseInt(a.slice(0,8),16),n[0]=255&t,n[1]=t>>>8&255,n[2]=t>>>16&255,n[3]=t>>>24&255,t=parseInt(a.slice(9,13),16),n[4]=255&t,n[5]=t>>>8&255,t=parseInt(a.slice(14,18),16),n[6]=255&t,n[7]=t>>>8&255,t=parseInt(a.slice(19,23),16),n[8]=t>>>8&255,n[9]=255&t,t=parseInt(a.slice(24,32),16),n[10]=t>>>24&255,n[11]=t>>>16&255,n[12]=t>>>8&255,n[13]=255&t,t=parseInt(a.slice(32,36),16),n[14]=t>>>8&255,n[15]=255&t;for(let t=0;t<16;t++)if(!Number.isFinite(n[t]))throw new Error(`Invalid GUID format: ${e}`);if(!/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(a))throw new Error(`Invalid GUID format: ${e}`);return n}class s{constructor(e){if(16!==e.length)throw new Error("GUID must be exactly 16 bytes");this.bytes=e}static fromString(e){return new s(i(e))}toString(){const e=this.bytes,t=e=>e.toString(16).padStart(2,"0");return`${t(e[3])+t(e[2])+t(e[1])+t(e[0])}-${t(e[5])+t(e[4])}-${t(e[7])+t(e[6])}-${t(e[8])+t(e[9])}-${t(e[10])+t(e[11])+t(e[12])+t(e[13])+t(e[14])+t(e[15])}`.toUpperCase()}equals(e,t=0){if(t<0||e.length-t<16)return!1;const a=this.bytes;for(let n=0;n<16;n++)if(e[t+n]!==a[n])return!1;return!0}}class o{static fromBin(e,t=0){return new o(o.decode(e,t))}static decode(e,t=0){return new s(e.subarray(t,t+16)).toString()}static decodeMediaType(e){switch(e.str){case o.AudioMedia.str:return"audio";case o.VideoMedia.str:return"video";case o.CommandMedia.str:return"command";case o.Degradable_JPEG_Media.str:return"degradable-jpeg";case o.FileTransferMedia.str:return"file-transfer";case o.BinaryMedia.str:return"binary"}}static encode(e){return i(e)}constructor(e){this.str=e}equals(e){return this.str===e.str}toBin(){return o.encode(this.str)}}o.HeaderObject=new o("75B22630-668E-11CF-A6D9-00AA0062CE6C"),o.DataObject=new o("75B22636-668E-11CF-A6D9-00AA0062CE6C"),o.SimpleIndexObject=new o("33000890-E5B1-11CF-89F4-00A0C90349CB"),o.IndexObject=new o("D6E229D3-35DA-11D1-9034-00A0C90349BE"),o.MediaObjectIndexObject=new o("FEB103F8-12AD-4C64-840F-2A1D2F7AD48C"),o.TimecodeIndexObject=new o("3CB73FD0-0C4A-4803-953D-EDF7B6228F0C"),o.FilePropertiesObject=new o("8CABDCA1-A947-11CF-8EE4-00C00C205365"),o.StreamPropertiesObject=new o("B7DC0791-A9B7-11CF-8EE6-00C00C205365"),o.HeaderExtensionObject=new o("5FBF03B5-A92E-11CF-8EE3-00C00C205365"),o.CodecListObject=new o("86D15240-311D-11D0-A3A4-00A0C90348F6"),o.ScriptCommandObject=new o("1EFB1A30-0B62-11D0-A39B-00A0C90348F6"),o.MarkerObject=new o("F487CD01-A951-11CF-8EE6-00C00C205365"),o.BitrateMutualExclusionObject=new o("D6E229DC-35DA-11D1-9034-00A0C90349BE"),o.ErrorCorrectionObject=new o("75B22635-668E-11CF-A6D9-00AA0062CE6C"),o.ContentDescriptionObject=new o("75B22633-668E-11CF-A6D9-00AA0062CE6C"),o.ExtendedContentDescriptionObject=new o("D2D0A440-E307-11D2-97F0-00A0C95EA850"),o.ContentBrandingObject=new o("2211B3FA-BD23-11D2-B4B7-00A0C955FC6E"),o.StreamBitratePropertiesObject=new o("7BF875CE-468D-11D1-8D82-006097C9A2B2"),o.ContentEncryptionObject=new o("2211B3FB-BD23-11D2-B4B7-00A0C955FC6E"),o.ExtendedContentEncryptionObject=new o("298AE614-2622-4C17-B935-DAE07EE9289C"),o.DigitalSignatureObject=new o("2211B3FC-BD23-11D2-B4B7-00A0C955FC6E"),o.PaddingObject=new o("1806D474-CADF-4509-A4BA-9AABCB96AAE8"),o.ExtendedStreamPropertiesObject=new o("14E6A5CB-C672-4332-8399-A96952065B5A"),o.AdvancedMutualExclusionObject=new o("A08649CF-4775-4670-8A16-6E35357566CD"),o.GroupMutualExclusionObject=new o("D1465A40-5A79-4338-B71B-E36B8FD6C249"),o.StreamPrioritizationObject=new o("D4FED15B-88D3-454F-81F0-ED5C45999E24"),o.BandwidthSharingObject=new o("A69609E6-517B-11D2-B6AF-00C04FD908E9"),o.LanguageListObject=new o("7C4346A9-EFE0-4BFC-B229-393EDE415C85"),o.MetadataObject=new o("C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA"),o.MetadataLibraryObject=new o("44231C94-9498-49D1-A141-1D134E457054"),o.IndexParametersObject=new o("D6E229DF-35DA-11D1-9034-00A0C90349BE"),o.MediaObjectIndexParametersObject=new o("6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7"),o.TimecodeIndexParametersObject=new o("F55E496D-9797-4B5D-8C8B-604DFE9BFB24"),o.CompatibilityObject=new o("26F18B5D-4584-47EC-9F5F-0E651F0452C9"),o.AdvancedContentEncryptionObject=new o("43058533-6981-49E6-9B74-AD12CB86D58C"),o.AudioMedia=new o("F8699E40-5B4D-11CF-A8FD-00805F5C442B"),o.VideoMedia=new o("BC19EFC0-5B4D-11CF-A8FD-00805F5C442B"),o.CommandMedia=new o("59DACFC0-59E6-11D0-A3AC-00A0C90348F6"),o.JFIF_Media=new o("B61BE100-5B4E-11CF-A8FD-00805F5C442B"),o.Degradable_JPEG_Media=new o("35907DE0-E415-11CF-A917-00805F5C442B"),o.FileTransferMedia=new o("91BD222C-F21C-497A-8B6D-5AA86BFC0185"),o.BinaryMedia=new o("3AFB65E2-47EF-40F2-AC2C-70A90D71D343"),o.ASF_Index_Placeholder_Object=new o("D9AADE20-7C17-4F9C-BC28-8555DD98E2A2");const c=o;var d=a(4017),u=a(56185);function b(e){return u.F6(u.sc(e,"utf-16le"))}const g=[b,w,function(e,t=0){return 1===l(e,t)},function(e,t=0){return d.UINT32_LE.get(e,t)},function(e,t=0){return d.UINT64_LE.get(e,t)},l,w];function w(e){return new Uint8Array(e)}function l(e,t=0){return d.UINT16_LE.get(e,t)}var C=a(47675),D=a(63324);class A extends((0,D.fO)("ASF")){}const E={len:30,get:(e,t)=>({objectId:c.fromBin(e,t),objectSize:Number(d.UINT64_LE.get(e,t+16)),numberOfHeaderObjects:d.UINT32_LE.get(e,t+24)})},m={len:24,get:(e,t)=>({objectId:c.fromBin(e,t),objectSize:Number(d.UINT64_LE.get(e,t+16))})};class F{constructor(e){this.len=Number(e.objectSize)-m.len}postProcessTag(e,t,a,n){if("WM/Picture"===t)e.push({id:t,value:N.fromBuffer(n)});else{const r=g[a];if(!r)throw new A(`unexpected value headerType: ${a}`);e.push({id:t,value:r(n)})}}}class f extends F{get(e,t){return null}}class B extends F{get(e,t){return{fileId:c.fromBin(e,t),fileSize:d.UINT64_LE.get(e,t+16),creationDate:d.UINT64_LE.get(e,t+24),dataPacketsCount:d.UINT64_LE.get(e,t+32),playDuration:d.UINT64_LE.get(e,t+40),sendDuration:d.UINT64_LE.get(e,t+48),preroll:d.UINT64_LE.get(e,t+56),flags:{broadcast:u.mh(e,t+64,24),seekable:u.mh(e,t+64,25)},minimumDataPacketSize:d.UINT32_LE.get(e,t+68),maximumDataPacketSize:d.UINT32_LE.get(e,t+72),maximumBitrate:d.UINT32_LE.get(e,t+76)}}}B.guid=c.FilePropertiesObject;class j extends F{get(e,t){return{streamType:c.decodeMediaType(c.fromBin(e,t)),errorCorrectionType:c.fromBin(e,t+8)}}}j.guid=c.StreamPropertiesObject;class h{constructor(){this.len=22}get(e,t){const a=new DataView(e.buffer,t);return{reserved1:c.fromBin(e,t),reserved2:a.getUint16(16,!0),extensionDataSize:a.getUint16(18,!0)}}}h.guid=c.HeaderExtensionObject;const I={len:20,get:(e,t)=>({entryCount:new DataView(e.buffer,t).getUint16(16,!0)})};async function p(e){const t=await e.readNumber(d.UINT16_LE);return(await e.readToken(new d.StringType(2*t,"utf-16le"))).replace("\0","")}async function O(e){const t=await e.readToken(I),a=[];for(let n=0;n<t.entryCount;++n)a.push(await k(e));return a}async function T(e){const t=await e.readNumber(d.UINT16_LE),a=new Uint8Array(t);return await e.readBuffer(a),a}async function k(e){const t=await e.readNumber(d.UINT16_LE);return{type:{videoCodec:!(1&~t),audioCodec:!(2&~t)},codecName:await p(e),description:await p(e),information:await T(e)}}class y extends F{get(e,t){const a=[],n=new DataView(e.buffer,t);let r=10;for(let i=0;i<y.contentDescTags.length;++i){const s=n.getUint16(2*i,!0);if(s>0){const n=y.contentDescTags[i],o=r+s;a.push({id:n,value:b(e.subarray(t+r,t+o))}),r=o}}return a}}y.guid=c.ContentDescriptionObject,y.contentDescTags=["Title","Author","Copyright","Description","Rating"];class S extends F{get(e,t){const a=[],n=new DataView(e.buffer,t),r=n.getUint16(0,!0);let i=2;for(let s=0;s<r;s+=1){const r=n.getUint16(i,!0);i+=2;const s=b(e.subarray(t+i,t+i+r));i+=r;const o=n.getUint16(i,!0);i+=2;const c=n.getUint16(i,!0);i+=2;const d=e.subarray(t+i,t+i+c);i+=c,this.postProcessTag(a,s,o,d)}return a}}S.guid=c.ExtendedContentDescriptionObject;class U extends F{get(e,t){const a=new DataView(e.buffer,t);return{startTime:d.UINT64_LE.get(e,t),endTime:d.UINT64_LE.get(e,t+8),dataBitrate:a.getInt32(12,!0),bufferSize:a.getInt32(16,!0),initialBufferFullness:a.getInt32(20,!0),alternateDataBitrate:a.getInt32(24,!0),alternateBufferSize:a.getInt32(28,!0),alternateInitialBufferFullness:a.getInt32(32,!0),maximumObjectSize:a.getInt32(36,!0),flags:{reliableFlag:u.mh(e,t+40,0),seekableFlag:u.mh(e,t+40,1),resendLiveCleanpointsFlag:u.mh(e,t+40,2)},streamNumber:a.getInt16(42,!0),streamLanguageId:a.getInt16(44,!0),averageTimePerFrame:a.getInt32(52,!0),streamNameCount:a.getInt32(54,!0),payloadExtensionSystems:a.getInt32(56,!0),streamNames:[],streamPropertiesObject:null}}}U.guid=c.ExtendedStreamPropertiesObject;class x extends F{get(e,t){const a=[],n=new DataView(e.buffer,t),r=n.getUint16(0,!0);let i=2;for(let s=0;s<r;s+=1){i+=4;const r=n.getUint16(i,!0);i+=2;const s=n.getUint16(i,!0);i+=2;const o=n.getUint32(i,!0);i+=4;const c=b(e.subarray(t+i,t+i+r));i+=r;const d=e.subarray(t+i,t+i+o);i+=o,this.postProcessTag(a,c,s,d)}return a}}x.guid=c.MetadataObject;class z extends x{}z.guid=c.MetadataLibraryObject;class N{static fromBuffer(e){return new N(e.length).get(e,0)}constructor(e){this.len=e}get(e,t){const a=new DataView(e.buffer,t),n=a.getUint8(0),r=a.getInt32(1,!0);let i=5;for(;0!==a.getUint16(i);)i+=2;const s=new d.StringType(i-5,"utf-16le").get(e,5);for(;0!==a.getUint16(i);)i+=2;const o=new d.StringType(i-5,"utf-16le").get(e,5);return{type:C.n5[n],format:s,description:o,size:r,data:e.slice(i+4)}}}var _=a(74604);const P=n("music-metadata:parser:ASF");class L extends _.s{async parse(){const e=await this.tokenizer.readToken(E);if(!e.objectId.equals(c.HeaderObject))throw new A(`expected asf header; but was not found; got: ${e.objectId.str}`);await this.parseObjectHeader(e.numberOfHeaderObjects)}async parseObjectHeader(e){let t;do{const e=await this.tokenizer.readToken(m);switch(P("header GUID=%s",e.objectId.str),e.objectId.str){case B.guid.str:{const t=await this.tokenizer.readToken(new B(e));this.metadata.setFormat("duration",Number(t.playDuration/BigInt(1e3))/1e4-Number(t.preroll)/1e3),this.metadata.setFormat("bitrate",t.maximumBitrate);break}case j.guid.str:{const t=await this.tokenizer.readToken(new j(e));this.metadata.setFormat("container",`ASF/${t.streamType}`);break}case h.guid.str:{const e=await this.tokenizer.readToken(new h);await this.parseExtensionObject(e.extensionDataSize);break}case y.guid.str:t=await this.tokenizer.readToken(new y(e)),await this.addTags(t);break;case S.guid.str:t=await this.tokenizer.readToken(new S(e)),await this.addTags(t);break;case c.CodecListObject.str:{const e=await O(this.tokenizer);e.forEach(e=>{this.metadata.addStreamInfo({type:e.type.videoCodec?r.S.video:r.S.audio,codecName:e.codecName})});const t=e.filter(e=>e.type.audioCodec).map(e=>e.codecName).join("/");this.metadata.setFormat("codec",t);break}case c.StreamBitratePropertiesObject.str:await this.tokenizer.ignore(e.objectSize-m.len);break;case c.PaddingObject.str:P("Padding: %s bytes",e.objectSize-m.len),await this.tokenizer.ignore(e.objectSize-m.len);break;default:this.metadata.addWarning(`Ignore ASF-Object-GUID: ${e.objectId.str}`),P("Ignore ASF-Object-GUID: %s",e.objectId.str),await this.tokenizer.readToken(new f(e))}}while(--e)}async addTags(e){await Promise.all(e.map(({id:e,value:t})=>this.metadata.addTag("asf",e,t)))}async parseExtensionObject(e){do{const t=await this.tokenizer.readToken(m),a=t.objectSize-m.len;if(a<0)throw new A(`Invalid ASF header object size: ${t.objectSize}`);switch(t.objectId.str){case U.guid.str:await this.tokenizer.readToken(new U(t));break;case x.guid.str:{const e=await this.tokenizer.readToken(new x(t));await this.addTags(e);break}case z.guid.str:{const e=await this.tokenizer.readToken(new z(t));await this.addTags(e);break}case c.PaddingObject.str:case c.CompatibilityObject.str:case c.ASF_Index_Placeholder_Object.str:await this.tokenizer.ignore(a);break;default:this.metadata.addWarning(`Ignore ASF-Object-GUID: ${t.objectId.str}`),await this.tokenizer.readToken(new f(t))}e-=t.objectSize}while(e>0)}}}}]);
|
|
//# sourceMappingURL=2315.038bb21694c526adfefa.js.map
|