Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

AAC Decoding with ipp samples

evertonesm
Beginner
301 Views

Hello!

I'm trying to decoding a AAC sound from a IP camera. To do this I'm developing a C++ dll.

Actually I don't know how exactly to do this, I'm following the steps bellow:

1 - Initializing the Decoder

{ code }

m_Params.m_info_in.stream_type = UMC::UNDEF_AUDIO;

m_Params.lpMemoryAllocator = NULL;

m_Params.m_pData = NULL;

m_Params.ModeDecodeHEAACprofile = HEAAC_LP_MODE;

m_Params.ModeDwnsmplHEAACprofile = HEAAC_DWNSMPL_ON;

m_Params.flag_SBR_support_lev = SBR_DISABLE;

m_Params.m_info_out.bitPerSample = 16;

m_Params.m_info_out.channels = 2;

m_Params.m_info_out.sample_frequency = 44100;

m_Params.m_info_in.bitrate = 128000;

// Initialization of AAC decoder

UMC::Status status = m_Decoder.Init(&m_Params);

{ code }

2 - Getting the Suggested input and output buffers

{ code }

// Audio Paramas functions

UMC::AudioCodecParams audio_codec_params;

m_Decoder.GetInfo(&audio_codec_params);

// Get Buffers Size

*inBuffer = int(audio_codec_params.m_SuggestedInputSize);

*outBuffer = int(audio_codec_params.m_SuggestedOutputSize);

{ code }

3 - Sending the camera audio according to suggested sizes

{ code }

AACDecStatus AACAudioDecoder::DecodeData(void *Data, int *Len, void *Out, int *OutLen, int *OutSize){

// Status

UMC::Status status;

// Set the input buffer pointer to the input data

m_inMediaBuffer.SetBufferPointer((Ipp8u *)Data, (size_t)*Len);

m_inMediaBuffer.SetDataSize((size_t)*Len);

// Set the output buffer pointer to the output data

m_outMediaBuffer.SetBufferPointer((Ipp8u *)Out, (size_t )*OutLen);

m_outMediaBuffer.SetDataSize((size_t)*OutLen);

// Encode audio pack

status = m_Decoder.GetFrame(&m_inMediaBuffer, &m_outMediaBuffer);

// Return Data Out size

*OutSize = m_outMediaBuffer.GetDataSize();

// Check if the encoding was sucessfull

}

{ code }

But in the 3 part I always receive status = UMC_ERR_UNSUPPORTED;

I'm sending bellow the camera information of thedata:

v=0

o=RTSP 948498866 755 IN IP4 0.0.0.0

s=RTSP server

c=IN IP4 0.0.0.0

t=0 0

a=charset:Shift_JIS

a=range:npt=0-

a=control:*

a=etag:1234567890

m=video 0 RTP/AVP 96

b=AS:0

a=rtpmap:96 MP4V-ES/30000

a=control:trackID=1

a=fmtp:96 profile-level-id=3;config=000001B003000001B509000001000000012000C488800F519044C1463F;decode_buf=76800

m=audio 0 RTP/AVP 97

a=control:trackID=6

a=rtpmap:97 mpeg4-generic/44100/2

a=fmtp:97 streamtype=5; profile-level-id=15; mode=AAC-hbr; config=1210;SizeLength=13; IndexLength=3; IndexDeltaLength=3; CTSDeltaLength=0; DTSDeltaLength=0;

I saw that the format is mpeg4-generic but I can't initialize with this specifications AAC_MPEG4_STREAM without this error: UMC_ERR_INVALID_PARAM;

I'm not find anyexampleto initialize with this header.

AnyoneKnow what I'm doing wrong?

Thanks in advance,

Everton Soares Manso

0 Kudos
1 Reply
PaulF_IntelCorp
Employee
301 Views
Hello Everton,

Were you able to make any progress?

Regards,

Paul
0 Kudos
Reply