@ -84,6 +84,7 @@ struct PayloadContext {
uint8_t * mlti_data ;
unsigned int mlti_data_size ;
char buffer [ RTP_MAX_PACKET_LENGTH + FF_INPUT_BUFFER_PADDING_SIZE ] ;
int audio_pkt_cnt [ MAX_STREAMS ] ; /**< remaining audio packets in rmdec */
} ;
void
@ -294,9 +295,8 @@ rdt_parse_packet (PayloadContext *rdt, AVStream *st,
{
int seq = 1 , res ;
ByteIOContext pb ;
RMContext * rm = rdt - > rmctx - > priv_data ;
if ( rm - > audio_pkt_cnt = = 0 ) {
if ( rdt - > audio_pkt_cnt = = 0 ) {
int pos ;
init_put_byte ( & pb , buf , len , 0 , NULL , NULL , NULL , NULL ) ;
@ -306,7 +306,8 @@ rdt_parse_packet (PayloadContext *rdt, AVStream *st,
pos = url_ftell ( & pb ) ;
if ( res < 0 )
return res ;
if ( rm - > audio_pkt_cnt > 0 & &
rdt - > audio_pkt_cnt [ st - > id ] = res ;
if ( rdt - > audio_pkt_cnt [ st - > id ] > 0 & &
st - > codec - > codec_id = = CODEC_ID_AAC ) {
memcpy ( rdt - > buffer , buf + pos , len - pos ) ;
rdt - > rmctx - > pb = av_alloc_put_byte ( rdt - > buffer , len - pos , 0 ,
@ -314,14 +315,14 @@ rdt_parse_packet (PayloadContext *rdt, AVStream *st,
}
} else {
ff_rm_retrieve_cache ( rdt - > rmctx , rdt - > rmctx - > pb , st , pkt ) ;
if ( rm - > audio_pkt_cnt = = 0 & &
if ( rdt - > audio_pkt_cnt [ st - > id ] = = 0 & &
st - > codec - > codec_id = = CODEC_ID_AAC )
av_freep ( & rdt - > rmctx - > pb ) ;
}
pkt - > stream_index = st - > index ;
pkt - > pts = * timestamp ;
return rm - > audio_pkt_cnt > 0 ;
return rdt - > audio_pkt_cnt [ st - > id ] > 0 ;
}
int