Revert to r17908.
Originally committed as revision 17918 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		
							parent
							
								
									d2af569710
								
							
						
					
					
						commit
						7ccefd08f6
					
				| @ -468,7 +468,7 @@ static int sync(AVFormatContext *s, int64_t *timestamp, int *flags, int *stream_ | |||||||
| skip: | skip: | ||||||
|             /* skip packet if unknown number */ |             /* skip packet if unknown number */ | ||||||
|             url_fskip(pb, len); |             url_fskip(pb, len); | ||||||
|             rm->remaining_len = 0; |             rm->remaining_len -= len; | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
|         *stream_index= i; |         *stream_index= i; | ||||||
| @ -691,8 +691,9 @@ ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb, | |||||||
| static int rm_read_packet(AVFormatContext *s, AVPacket *pkt) | static int rm_read_packet(AVFormatContext *s, AVPacket *pkt) | ||||||
| { | { | ||||||
|     RMDemuxContext *rm = s->priv_data; |     RMDemuxContext *rm = s->priv_data; | ||||||
|  |     ByteIOContext *pb = s->pb; | ||||||
|     AVStream *st; |     AVStream *st; | ||||||
|     int i, len, seq = 1; |     int i, len; | ||||||
|     int64_t timestamp, pos; |     int64_t timestamp, pos; | ||||||
|     int flags; |     int flags; | ||||||
| 
 | 
 | ||||||
| @ -701,19 +702,37 @@ static int rm_read_packet(AVFormatContext *s, AVPacket *pkt) | |||||||
|         st = s->streams[rm->audio_stream_num]; |         st = s->streams[rm->audio_stream_num]; | ||||||
|         ff_rm_retrieve_cache(s, s->pb, st, st->priv_data, pkt); |         ff_rm_retrieve_cache(s, s->pb, st, st->priv_data, pkt); | ||||||
|     } else if (rm->old_format) { |     } else if (rm->old_format) { | ||||||
|         RMStream *ast = s->streams[0]->priv_data; |         RMStream *ast; | ||||||
|         int res, y, h = ast->audio_framesize ? ast->sub_packet_h : 1; |  | ||||||
| 
 | 
 | ||||||
|         timestamp = AV_NOPTS_VALUE; |         st = s->streams[0]; | ||||||
|         len = ast->audio_framesize ? ast->coded_framesize * h / 2 : RAW_PACKET_SIZE; |         ast = st->priv_data; | ||||||
|         for (y = 0; y < h; y++) { |         if (st->codec->codec_id == CODEC_ID_RA_288) { | ||||||
|             flags = !y ? 2 : 0; |             int x, y; | ||||||
|             res = ff_rm_parse_packet(s, s->pb, s->streams[0], ast, len, pkt, | 
 | ||||||
|                                      &seq, &flags, ×tamp); |             for (y = 0; y < ast->sub_packet_h; y++) | ||||||
|  |                 for (x = 0; x < ast->sub_packet_h/2; x++) | ||||||
|  |                     if (get_buffer(pb, ast->pkt.data+x*2*ast->audio_framesize+y*ast->coded_framesize, ast->coded_framesize) <= 0) | ||||||
|  |                         return AVERROR(EIO); | ||||||
|  |             rm->audio_stream_num = 0; | ||||||
|  |             rm->audio_pkt_cnt = ast->sub_packet_h * ast->audio_framesize / st->codec->block_align - 1; | ||||||
|  |             // Release first audio packet
 | ||||||
|  |             av_new_packet(pkt, st->codec->block_align); | ||||||
|  |             memcpy(pkt->data, ast->pkt.data, st->codec->block_align); //FIXME avoid this
 | ||||||
|  |             pkt->flags |= PKT_FLAG_KEY; // Mark first packet as keyframe
 | ||||||
|  |             pkt->stream_index = 0; | ||||||
|  |         } else { | ||||||
|  |             /* just read raw bytes */ | ||||||
|  |             len = RAW_PACKET_SIZE; | ||||||
|  |             len= av_get_packet(pb, pkt, len); | ||||||
|  |             pkt->stream_index = 0; | ||||||
|  |             if (len <= 0) { | ||||||
|  |                 return AVERROR(EIO); | ||||||
|  |             } | ||||||
|  |             pkt->size = len; | ||||||
|         } |         } | ||||||
|         if (res < 0) |         rm_ac3_swap_bytes(st, pkt); | ||||||
|             return res; |  | ||||||
|     } else { |     } else { | ||||||
|  |         int seq=1; | ||||||
| resync: | resync: | ||||||
|         len=sync(s, ×tamp, &flags, &i, &pos); |         len=sync(s, ×tamp, &flags, &i, &pos); | ||||||
|         if(len<0) |         if(len<0) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user