From b8cccb5ae18f35ea7d210c513bafe10b19fafbd7 Mon Sep 17 00:00:00 2001 From: Mohamed Tarek Date: Sat, 25 Jul 2009 15:47:13 +0000 Subject: Adding support for playback of aac audio in rm container, with seeking. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22031 a1c6a512-1295-4272-9138-f99709370657 --- apps/codecs/librm/rm.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'apps/codecs/librm') diff --git a/apps/codecs/librm/rm.c b/apps/codecs/librm/rm.c index c9c40986ba..a48fb51cc6 100644 --- a/apps/codecs/librm/rm.c +++ b/apps/codecs/librm/rm.c @@ -529,13 +529,28 @@ int rm_get_packet(uint8_t **src,RMContext *rmctx, RMPacket *pkt) advance_buffer(src,12); consumed += 12; - for(x = 0 ; x < w/sps; x++) - { - place = sps*(h*x+((h+1)/2)*(y&1)+(y>>1)); - pkt->frames[place/sps] = *src; - advance_buffer(src,sps); - consumed += sps; - } + if (rmctx->codec_type == cook) { + for(x = 0 ; x < w/sps; x++) + { + place = sps*(h*x+((h+1)/2)*(y&1)+(y>>1)); + pkt->frames[place/sps] = *src; + advance_buffer(src,sps); + consumed += sps; + } + } + else if (rmctx->codec_type == aac) { + rmctx->sub_packet_cnt = (get_uint16be(*src) & 0xf0) >> 4; + advance_buffer(src, 2); + consumed += 2; + if (rmctx->sub_packet_cnt) { + for(x = 0; x < rmctx->sub_packet_cnt; x++) { + rmctx->sub_packet_lengths[x] = get_uint16be(*src); + advance_buffer(src, 2); + consumed += 2; + } + rmctx->audio_pkt_cnt = --rmctx->sub_packet_cnt; + } + } rmctx->audio_pkt_cnt++; }while(++(rmctx->sub_packet_cnt) < h); -- cgit v1.2.3