|  |  | @@ -632,6 +632,27 @@ ff_rm_parse_packet (AVFormatContext *s, AVStream *st, int len, AVPacket *pkt, | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | static void | 
		
	
		
			
			|  |  |  | ff_rm_retrieve_cache (AVFormatContext *s, AVStream *st, AVPacket *pkt) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | ByteIOContext *pb = &s->pb; | 
		
	
		
			
			|  |  |  | RMContext *rm = s->priv_data; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | assert (rm->audio_pkt_cnt > 0); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (st->codec->codec_id == CODEC_ID_AAC) | 
		
	
		
			
			|  |  |  | av_get_packet(pb, pkt, rm->sub_packet_lengths[rm->sub_packet_cnt - rm->audio_pkt_cnt]); | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | av_new_packet(pkt, st->codec->block_align); | 
		
	
		
			
			|  |  |  | memcpy(pkt->data, rm->audiobuf + st->codec->block_align * | 
		
	
		
			
			|  |  |  | (rm->sub_packet_h * rm->audio_framesize / st->codec->block_align - rm->audio_pkt_cnt), | 
		
	
		
			
			|  |  |  | st->codec->block_align); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | rm->audio_pkt_cnt--; | 
		
	
		
			
			|  |  |  | pkt->flags = 0; | 
		
	
		
			
			|  |  |  | pkt->stream_index = st->index; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | static int rm_read_packet(AVFormatContext *s, AVPacket *pkt) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | RMContext *rm = s->priv_data; | 
		
	
	
		
			
				|  |  | @@ -645,17 +666,7 @@ static int rm_read_packet(AVFormatContext *s, AVPacket *pkt) | 
		
	
		
			
			|  |  |  | if (rm->audio_pkt_cnt) { | 
		
	
		
			
			|  |  |  | // If there are queued audio packet return them first | 
		
	
		
			
			|  |  |  | st = s->streams[rm->audio_stream_num]; | 
		
	
		
			
			|  |  |  | if (st->codec->codec_id == CODEC_ID_AAC) | 
		
	
		
			
			|  |  |  | av_get_packet(pb, pkt, rm->sub_packet_lengths[rm->sub_packet_cnt - rm->audio_pkt_cnt]); | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | av_new_packet(pkt, st->codec->block_align); | 
		
	
		
			
			|  |  |  | memcpy(pkt->data, rm->audiobuf + st->codec->block_align * | 
		
	
		
			
			|  |  |  | (rm->sub_packet_h * rm->audio_framesize / st->codec->block_align - rm->audio_pkt_cnt), | 
		
	
		
			
			|  |  |  | st->codec->block_align); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | rm->audio_pkt_cnt--; | 
		
	
		
			
			|  |  |  | pkt->flags = 0; | 
		
	
		
			
			|  |  |  | pkt->stream_index = st->index; | 
		
	
		
			
			|  |  |  | ff_rm_retrieve_cache(s, st, pkt); | 
		
	
		
			
			|  |  |  | } else if (rm->old_format) { | 
		
	
		
			
			|  |  |  | st = s->streams[0]; | 
		
	
		
			
			|  |  |  | if (st->codec->codec_id == CODEC_ID_RA_288) { | 
		
	
	
		
			
				|  |  | 
 |