@@ -5,14 +5,21 @@ import { getId3Data } from '@svta/common-media-library/id3/getId3Data';
55import * as ADTS from './adts' ;
66import BaseAudioDemuxer from './base-audio-demuxer' ;
77import * as MpegAudio from './mpegaudio' ;
8+ import SampleAesDecrypter from '../sample-aes' ;
89import type { HlsConfig } from '../../config' ;
910import type { HlsEventEmitter } from '../../events' ;
10- import type { DemuxedAudioTrack } from '../../types/demuxer' ;
11+ import type {
12+ AACAudioSample ,
13+ DemuxedAudioTrack ,
14+ DemuxerResult ,
15+ KeyData ,
16+ } from '../../types/demuxer' ;
1117import type { ILogger } from '../../utils/logger' ;
1218
1319class AACDemuxer extends BaseAudioDemuxer {
1420 private readonly observer : HlsEventEmitter ;
1521 private readonly config : HlsConfig ;
22+ private sampleAes : SampleAesDecrypter | null = null ;
1623
1724 constructor ( observer : HlsEventEmitter , config ) {
1825 super ( ) ;
@@ -91,6 +98,29 @@ class AACDemuxer extends BaseAudioDemuxer {
9198 return frame ;
9299 }
93100 }
101+
102+ demuxSampleAes (
103+ data : Uint8Array ,
104+ keyData : KeyData ,
105+ timeOffset : number ,
106+ ) : Promise < DemuxerResult > {
107+ const demuxResult = this . demux ( data , timeOffset ) ;
108+ const sampleAes = ( this . sampleAes = new SampleAesDecrypter (
109+ this . observer ,
110+ this . config ,
111+ keyData ,
112+ ) ) ;
113+
114+ return new Promise ( ( resolve ) => {
115+ sampleAes . decryptAacSamples (
116+ demuxResult . audioTrack . samples as AACAudioSample [ ] ,
117+ 0 ,
118+ ( ) => {
119+ resolve ( demuxResult ) ;
120+ } ,
121+ ) ;
122+ } ) ;
123+ }
94124}
95125
96126export default AACDemuxer ;
0 commit comments