summaryrefslogtreecommitdiff
path: root/apps/codecs/librm
diff options
context:
space:
mode:
authorMohamed Tarek <mt@rockbox.org>2009-07-25 15:47:13 +0000
committerMohamed Tarek <mt@rockbox.org>2009-07-25 15:47:13 +0000
commitb8cccb5ae18f35ea7d210c513bafe10b19fafbd7 (patch)
tree901a2d75ad40134a005c3bbb68949f551fc9c50e /apps/codecs/librm
parent8f572ca525bf3812799e627a4a716300e412c244 (diff)
downloadrockbox-b8cccb5ae18f35ea7d210c513bafe10b19fafbd7.zip
rockbox-b8cccb5ae18f35ea7d210c513bafe10b19fafbd7.tar.gz
rockbox-b8cccb5ae18f35ea7d210c513bafe10b19fafbd7.tar.bz2
rockbox-b8cccb5ae18f35ea7d210c513bafe10b19fafbd7.tar.xz
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
Diffstat (limited to 'apps/codecs/librm')
-rw-r--r--apps/codecs/librm/rm.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/apps/codecs/librm/rm.c b/apps/codecs/librm/rm.c
index c9c4098..a48fb51 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);