packages feed

mediabus-fdk-aac-0.3.0.0: src/Data/MediaBus/FdkAac/EncoderFdkWrapper.c

#include <stdio.h>

#include <stdint.h>

#include "fdk-aac/aacenc_lib.h"

uintptr_t inline_c_Data_MediaBus_FdkAac_EncoderFdkWrapper_0_e88399b3eaf706673efe095f84ff92194fa12ff2(int * aacEncoderCfgErrorP_inline_c_0, unsigned configChannelMode_inline_c_1, unsigned configModules_inline_c_2, unsigned configChannels_inline_c_3, int * aacEncoderCfgErrorP_inline_c_4, unsigned configAot_inline_c_5, int * aacEncoderCfgErrorP_inline_c_6, unsigned configSbrMode_inline_c_7, int * aacEncoderCfgErrorP_inline_c_8, unsigned configSampleRate_inline_c_9, int * aacEncoderCfgErrorP_inline_c_10, int * aacEncoderCfgErrorP_inline_c_11, unsigned configBitRateMode_inline_c_12, int * aacEncoderCfgErrorP_inline_c_13, unsigned configBitRate_inline_c_14, int * aacEncoderCfgErrorP_inline_c_15, unsigned configBandwidth_inline_c_16, unsigned configBandwidth_inline_c_17, int * aacEncoderCfgErrorP_inline_c_18, int * aacEncoderCfgErrorP_inline_c_19, unsigned configSignallingMode_inline_c_20, int * aacEncoderCfgErrorP_inline_c_21, unsigned configAfterburner_inline_c_22, int * aacEncoderCfgErrorP_inline_c_23, int * aacEncoderCfgErrorP_inline_c_24, int * aacEncoderCfgErrorP_inline_c_25, unsigned confBufMaxLen_inline_c_26, unsigned char * confBufP_inline_c_27, unsigned * confBufSizeP_inline_c_28, unsigned * encDelayP_inline_c_29, unsigned * frameSizeP_inline_c_30, int * errorCodeP_inline_c_31) {

              AACENC_ERROR e = AACENC_OK;
              HANDLE_AACENCODER phAacEncoder;
              AACENC_InfoStruct pInfo;
              CHANNEL_MODE channelMode;
              *(aacEncoderCfgErrorP_inline_c_0) = 13;

              switch (configChannelMode_inline_c_1) {
                  case 1: channelMode = MODE_1;       break;
                  case 2: channelMode = MODE_2;       break;
                  case 3: channelMode = MODE_1_2;     break;
                  case 4: channelMode = MODE_1_2_1;   break;
                  case 5: channelMode = MODE_1_2_2;   break;
                  case 6: channelMode = MODE_1_2_2_1; break;
                 default: channelMode = 0;            break;
              }

              e = aacEncOpen(&phAacEncoder, configModules_inline_c_2, configChannels_inline_c_3);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_4) = 0;
                goto e0;
              }
              e = aacEncoder_SetParam(phAacEncoder, AACENC_AOT, (const UINT) configAot_inline_c_5);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_6) = 1;
                goto e1;
              }
              e = aacEncoder_SetParam(phAacEncoder, AACENC_SBR_MODE, (const UINT) configSbrMode_inline_c_7);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_8) = 2;
                goto e1;
              }
              e = aacEncoder_SetParam(phAacEncoder, AACENC_SAMPLERATE, (const UINT) configSampleRate_inline_c_9);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_10) = 3;
                goto e1;
              }
              e = aacEncoder_SetParam(phAacEncoder, AACENC_CHANNELMODE, channelMode);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_11) = 4;
                goto e1;
              }
              e = aacEncoder_SetParam(phAacEncoder, AACENC_BITRATEMODE, (const UINT) configBitRateMode_inline_c_12);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_13) = 5;
                goto e1;
              }
              e = aacEncoder_SetParam(phAacEncoder, AACENC_BITRATE, (const UINT) configBitRate_inline_c_14);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_15) = 6;
                goto e1;
              }
              if ((const UINT) configBandwidth_inline_c_16 != 0) {
                e = aacEncoder_SetParam(phAacEncoder, AACENC_BANDWIDTH, (const UINT) configBandwidth_inline_c_17);
                if (e != AACENC_OK) {
                  *(aacEncoderCfgErrorP_inline_c_18) = 7;
                  goto e1;
                }
              }
              e = aacEncoder_SetParam(phAacEncoder, AACENC_TRANSMUX, TT_MP4_RAW); // TODO extract from TRANSPORT_TYPE in FDK_audio.h
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_19) = 8;
                goto e1;
              }
              e = aacEncoder_SetParam(phAacEncoder, AACENC_SIGNALING_MODE, (const UINT) configSignallingMode_inline_c_20);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_21) = 9;
                goto e1;
              }
              e = aacEncoder_SetParam(phAacEncoder, AACENC_AFTERBURNER, (const UINT) configAfterburner_inline_c_22);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_23) = 10;
                goto e1;
              }
              e = aacEncEncode(phAacEncoder, NULL, NULL, NULL, NULL);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_24) = 11;
                goto e1;
              }
              e = aacEncInfo(phAacEncoder, &pInfo);
              if (e != AACENC_OK) {
                *(aacEncoderCfgErrorP_inline_c_25) = 12;
                goto e1;
              }

              for (unsigned int i = 0; i < pInfo.confSize && i < confBufMaxLen_inline_c_26; ++i) {
                 *(confBufP_inline_c_27 + i) = pInfo.confBuf[i];
              }
              *(confBufSizeP_inline_c_28) = pInfo.confSize;
              *(encDelayP_inline_c_29)    = pInfo.encoderDelay;
              *(frameSizeP_inline_c_30)   = pInfo.frameLength;
              return ((uintptr_t) phAacEncoder);

              e1:
                 if (AACENC_OK != aacEncClose(&phAacEncoder)) {
                    printf("Failed to free the AAC Encoder.\n");
                 }

              e0:
                 *(errorCodeP_inline_c_31) = e;
                 return (uintptr_t)NULL;
            
}


int inline_c_Data_MediaBus_FdkAac_EncoderFdkWrapper_1_922d89f2c2b9a2bb7dbc4bbc946440f71a320f2a(uintptr_t encoderHandle_inline_c_0, long vec_inline_c_1, short * vec_inline_c_2, long vec_inline_c_3, long unsafeOutBuffer_inline_c_4, unsigned char * unsafeOutBuffer_inline_c_5, int * numOutBytesP_inline_c_6, int * numInSamplesP_inline_c_7, int * numAncBytesP_inline_c_8) {

            AACENC_ERROR e;
            HANDLE_AACENCODER phAacEncoder = (HANDLE_AACENCODER) encoderHandle_inline_c_0;

            
            AACENC_BufDesc inBuffDesc;
            INT inBuffIds[1]             = {IN_AUDIO_DATA};
            INT inBuffSizes[1]           = {vec_inline_c_1 * 2};
            INT inBuffElSizes[1]         = {2};
            void* inBuffBuffers[1]       = {vec_inline_c_2};
            inBuffDesc.numBufs           = 1;
            inBuffDesc.bufs              = inBuffBuffers;
            inBuffDesc.bufferIdentifiers = inBuffIds;
            inBuffDesc.bufSizes          = inBuffSizes;
            inBuffDesc.bufElSizes        = inBuffElSizes;
            AACENC_InArgs inArgs         =
              { .numInSamples = vec_inline_c_3
              , .numAncBytes = 0 };

            
            AACENC_BufDesc outBuffDesc;
            INT outBuffIds[1]             = {OUT_BITSTREAM_DATA};
            INT outBuffSizes[1]           = {unsafeOutBuffer_inline_c_4};
            INT outBuffElSizes[1]         = {1};
            void* outBuffBuffers[1]       = {unsafeOutBuffer_inline_c_5};
            outBuffDesc.numBufs           = 1;
            outBuffDesc.bufs              = outBuffBuffers;
            outBuffDesc.bufferIdentifiers = outBuffIds;
            outBuffDesc.bufSizes          = outBuffSizes;
            outBuffDesc.bufElSizes        = outBuffElSizes;
            AACENC_OutArgs outArgs;

            e = aacEncEncode (phAacEncoder, &inBuffDesc, &outBuffDesc,
                              &inArgs, &outArgs);
            *(numOutBytesP_inline_c_6)  = outArgs.numOutBytes;
            *(numInSamplesP_inline_c_7) = outArgs.numInSamples;
            *(numAncBytesP_inline_c_8)  = outArgs.numAncBytes;

            return e;
         
}


int inline_c_Data_MediaBus_FdkAac_EncoderFdkWrapper_2_666791a4914d28907cccec9952c8fb7e36c63ac9(uintptr_t encoderHandle_inline_c_0, long unsafeOutBuffer_inline_c_1, unsigned char * unsafeOutBuffer_inline_c_2, int * numOutBytesP_inline_c_3, int * numInSamplesP_inline_c_4, int * numAncBytesP_inline_c_5) {

            AACENC_ERROR e;
            HANDLE_AACENCODER phAacEncoder = (HANDLE_AACENCODER) encoderHandle_inline_c_0;

            
            AACENC_BufDesc inBuffDesc;
            inBuffDesc.numBufs           = 0;

            AACENC_InArgs inArgs =
              { .numInSamples = -1
              , .numAncBytes = 0 };

            AACENC_BufDesc outBuffDesc;
            INT outBuffIds[1]             = {OUT_BITSTREAM_DATA};
            INT outBuffSizes[1]           = {unsafeOutBuffer_inline_c_1};
            INT outBuffElSizes[1]         = {1};
            void* outBuffBuffers[1]       = {unsafeOutBuffer_inline_c_2};
            outBuffDesc.numBufs           = 1;
            outBuffDesc.bufs              = outBuffBuffers;
            outBuffDesc.bufferIdentifiers = outBuffIds;
            outBuffDesc.bufSizes          = outBuffSizes;
            outBuffDesc.bufElSizes        = outBuffElSizes;
            AACENC_OutArgs outArgs;

            e = aacEncEncode (phAacEncoder, &inBuffDesc, &outBuffDesc,
                              &inArgs, &outArgs);
            *(numOutBytesP_inline_c_3)  = outArgs.numOutBytes;
            *(numInSamplesP_inline_c_4) = outArgs.numInSamples;
            *(numAncBytesP_inline_c_5)  = outArgs.numAncBytes;

            return e;
      
}


int inline_c_Data_MediaBus_FdkAac_EncoderFdkWrapper_3_8fd9c8ff1f367d8600d391d8958211c9959d567d(uintptr_t encoderHandle_inline_c_0) {

             HANDLE_AACENCODER phAacEncoder = (HANDLE_AACENCODER) encoderHandle_inline_c_0;
             return aacEncClose(&phAacEncoder);
          
}