hi...
I try to decode AAC data from RTSP stream. The GetFrame function wlways returns error (AAC_BAD_STREAM,UMC_ERR_INVALID_STREAM).
The code as follows.
a=rtpmap:98 mpeg4-generic/8000/2
a=fmtp:98 streamtype=5; profile-level-id=15; mode=AAC-hbr; config=1590; SizeLength=13;IndexLength=3; IndexDeltaLength=3; Profile=1;
pData ={
00 10 0a 60 21 0a 05 01 05 02 c2 10 a1 1c 89 b7 0c bb df 47 35 d6 6a f7 d4 e7 5c 65 3a e6 15 72
b4 ad 20 ec 5d bf 72 33 45 18 bc 4c 0c 4a 62 07 75 6d 01 8b e7 65 6d 75 91 66 7e 81 58 cc 7f fb
73 40 82 17 35 5c 9c 02 a2 0a e3 5d 09 b8 e8 2a b6 a8 a3 9a ac cf 90 02 86 f2 df 26 11 7f 3d fa\\
a3 4a 7c b9 29 73 f9 b1 cb 3f c3 a3 fe 28 46 3e 4b e9 d7 37 b0 dd fa 2f 31 e8 6c 11 85 10 48 6a
4f e8 d4 b9 70 db b8 b7 fe cb 6a 6d 8e e1 84 67 81 9e 33 6c 1c e8 11 0b 28 fc 8e 9e 97 24 2f 36
a6 5e 50 b4 d3 05 2f 7a 34 02 af d5 f1 ac 0c f7 62 3d 47 21 34 7d 02 8a 46 43 1a 7c a6 48 32 3f
52 c9 19 0b b6 f2 0c 76 7b b9 6f d0 c0 e9 ca d7 98 13 29 ba 7c f1 28 35 56 5c ae ac 30 ab 9a 9e
95 5e d8 b5 0d 75 13 13 db d5 d7 19 4e 89 50 f9 ea 4f eb 52 45 e9 f2 09 9f 36 ab af bf e2 3a 7a
ab 7d f9 9a b8 32 dc f5 f6 b4 98 d1 b3 8d 17 74 74 04 14 0b 08 42 84 72 20 7f 4e 19 77 be 8e 6b
ac 00 00 00 07 62 ed fb 91 9a 28 c5 e2 60 62 53 10 3b ab 68 0c 5f 3b 2b 6b ac 8b 33 f4 0a c6 63
ff db 9a 04 10 b9 aa e4 e0 15 10 57 1a c2 01 c0
};
iData=336;
resultSpecialHeaderSize = 4
// offset header
pData+=resultSpecialHeaderSize;
iData-=resultSpecialHeaderSize;
//UMC::AACDecoder
UMC::AudioCodec *pHandle=(UMC::AudioCodec *)m_pHandle;
UMC::MediaData *pDataIn=(UMC::MediaData *)m_pDataIn;
UMC::AudioData *pDataOut=(UMC::AudioData *)m_pDataOut;
pDataIn->SetBufferPointer(pData,iData);
pDataIn->SetDataSize(iData);
UMC::Status status ;
UMC::AudioCodecParams param;
param.m_info_in.sample_frequency = 8000;
param.m_info_in.bitrate = 32000;
param.m_info_in.bitPerSample = 16;
param.m_info_in.channels = 2;
param.m_info_in.stream_type = UMC::AAC_MPEG4_STREAM;
param.profile = AAC_PROFILE_MAIN;
param.m_pData = pDataIn;
if(pHandle->Init(¶m)!=UMC::UMC_OK)
{
return false;
}
pDataIn->SetBufferPointer(pData,iData);
pDataIn->SetDataSize(iData);
if(!m_pDataOut)
{
m_pDataOut=PF_NEW(UMC::AudioData);
pDataOut=(UMC::AudioData *)m_pDataOut;
}
pDataOut->SetBufferPointer(pBuffer,iBuffer);
status = pHandle->GetFrame(pDataIn,pDataOut);
if(status!=UMC::UMC_OK)
return false;
(AAC_BAD_STREAM,UMC_ERR_INVALID_STREAM)
How to fix the error ?
Thx.
链接已复制
Actually, this is not a bug of AAC Decoder. Our decoder doesnt work with RTP packet, so stream should be properly prepared. First of all, you need to initialize decoder using AudioSpecifigConfig() (0x1590 in this case) and then pass audio data.You may find an example of this usage in the following forum discussion
http://software.intel.com/en-us/forums/showthread.php?t=74291
Vipin
