Skip to content

Commit 370b905

Browse files
committed
Add Sample AES decryption support in AACDemuxer
1 parent 178333c commit 370b905

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

src/demux/audio/aacdemuxer.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,21 @@ import { getId3Data } from '@svta/common-media-library/id3/getId3Data';
55
import * as ADTS from './adts';
66
import BaseAudioDemuxer from './base-audio-demuxer';
77
import * as MpegAudio from './mpegaudio';
8+
import SampleAesDecrypter from '../sample-aes';
89
import type { HlsConfig } from '../../config';
910
import 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';
1117
import type { ILogger } from '../../utils/logger';
1218

1319
class 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

96126
export default AACDemuxer;

0 commit comments

Comments
 (0)