24 lines
818 B
Haxe
24 lines
818 B
Haxe
package mpeg.audio;
|
|
|
|
using Lambda;
|
|
|
|
class Utils {
|
|
public static function calculateAudioLengthSamples(mpegAudio:MpegAudio) {
|
|
return mpegAudio.frames
|
|
.map(function(frame) { return lookupSamplesPerFrame(frame.header.version, frame.header.layer); })
|
|
.fold(function(frameSampleCount, totalSampleCount) { return frameSampleCount + totalSampleCount; },
|
|
-mpegAudio.encoderDelay - mpegAudio.endPadding);
|
|
}
|
|
|
|
public static function lookupSamplesPerFrame(mpegVersion:MpegVersion, layer:Layer) {
|
|
return switch (layer) {
|
|
case Layer1: 384;
|
|
case Layer2: 1152;
|
|
case Layer3: switch (mpegVersion) {
|
|
case Version1: 1152;
|
|
case Version2, Version25: 576;
|
|
};
|
|
};
|
|
}
|
|
}
|