summaryrefslogtreecommitdiff
path: root/apps/codecs/librm
diff options
context:
space:
mode:
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 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)
529 529
530 advance_buffer(src,12); 530 advance_buffer(src,12);
531 consumed += 12; 531 consumed += 12;
532 for(x = 0 ; x < w/sps; x++) 532 if (rmctx->codec_type == cook) {
533 { 533 for(x = 0 ; x < w/sps; x++)
534 place = sps*(h*x+((h+1)/2)*(y&1)+(y>>1)); 534 {
535 pkt->frames[place/sps] = *src; 535 place = sps*(h*x+((h+1)/2)*(y&1)+(y>>1));
536 advance_buffer(src,sps); 536 pkt->frames[place/sps] = *src;
537 consumed += sps; 537 advance_buffer(src,sps);
538 } 538 consumed += sps;
539 }
540 }
541 else if (rmctx->codec_type == aac) {
542 rmctx->sub_packet_cnt = (get_uint16be(*src) & 0xf0) >> 4;
543 advance_buffer(src, 2);
544 consumed += 2;
545 if (rmctx->sub_packet_cnt) {
546 for(x = 0; x < rmctx->sub_packet_cnt; x++) {
547 rmctx->sub_packet_lengths[x] = get_uint16be(*src);
548 advance_buffer(src, 2);
549 consumed += 2;
550 }
551 rmctx->audio_pkt_cnt = --rmctx->sub_packet_cnt;
552 }
553 }
539 rmctx->audio_pkt_cnt++; 554 rmctx->audio_pkt_cnt++;
540 }while(++(rmctx->sub_packet_cnt) < h); 555 }while(++(rmctx->sub_packet_cnt) < h);
541 556