GlintAacEncoder constructor
GlintAacEncoder({})
quality: 0 = speed, 1 = normal (default), 2 = best. vbrQuality
0..9 selects constant-quality VBR (null = CBR at bitrate).
Implementation
GlintAacEncoder({
int sampleRate = 44100,
int channels = 2,
int bitrate = 128,
int quality = 1,
int? vbrQuality,
}) : channels = channels {
_lib = _loadLibrary();
final create = _lib.lookupFunction<GlintAacCreateNative, GlintAacCreate>(
'glint_aac_create');
final spfFn =
_lib.lookupFunction<GlintSamplesPerFrameNative, GlintSamplesPerFrame>(
'glint_aac_samples_per_frame');
_aacEncode =
_lib.lookupFunction<GlintEncodeNative, GlintEncode>('glint_aac_encode');
_aacFlush =
_lib.lookupFunction<GlintFlushNative, GlintFlush>('glint_aac_flush');
_aacDestroy = _lib
.lookupFunction<GlintDestroyNative, GlintDestroy>('glint_aac_destroy');
final cfgPtr = calloc<GlintAacConfig>(); // calloc zeroes reserved[]
cfgPtr.ref.sampleRate = sampleRate;
cfgPtr.ref.numChannels = channels;
cfgPtr.ref.bitrate = bitrate;
cfgPtr.ref.quality = quality;
if (vbrQuality != null) {
cfgPtr.ref.vbr = 1;
cfgPtr.ref.vbrQuality = vbrQuality;
}
_handle = create(cfgPtr);
calloc.free(cfgPtr);
if (_handle == nullptr) {
throw StateError('glint_aac_create returned null');
}
samplesPerFrame = spfFn(_handle);
}