mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-23 04:24:35 +02:00
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 packet if unknown number */
|
||||
url_fskip(pb, len);
|
||||
rm->remaining_len = 0;
|
||||
rm->remaining_len -= len;
|
||||
continue;
|
||||
}
|
||||
*stream_index= i;
|
||||
@ -691,8 +691,9 @@ ff_rm_retrieve_cache (AVFormatContext *s, ByteIOContext *pb,
|
||||
static int rm_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
{
|
||||
RMDemuxContext *rm = s->priv_data;
|
||||
ByteIOContext *pb = s->pb;
|
||||
AVStream *st;
|
||||
int i, len, seq = 1;
|
||||
int i, len;
|
||||
int64_t timestamp, pos;
|
||||
int flags;
|
||||
|
||||
@ -701,19 +702,37 @@ static int rm_read_packet(AVFormatContext *s, AVPacket *pkt)
|
||||
st = s->streams[rm->audio_stream_num];
|
||||
ff_rm_retrieve_cache(s, s->pb, st, st->priv_data, pkt);
|
||||
} else if (rm->old_format) {
|
||||
RMStream *ast = s->streams[0]->priv_data;
|
||||
int res, y, h = ast->audio_framesize ? ast->sub_packet_h : 1;
|
||||
RMStream *ast;
|
||||
|
||||
timestamp = AV_NOPTS_VALUE;
|
||||
len = ast->audio_framesize ? ast->coded_framesize * h / 2 : RAW_PACKET_SIZE;
|
||||
for (y = 0; y < h; y++) {
|
||||
flags = !y ? 2 : 0;
|
||||
res = ff_rm_parse_packet(s, s->pb, s->streams[0], ast, len, pkt,
|
||||
&seq, &flags, ×tamp);
|
||||
st = s->streams[0];
|
||||
ast = st->priv_data;
|
||||
if (st->codec->codec_id == CODEC_ID_RA_288) {
|
||||
int x, y;
|
||||
|
||||
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)
|
||||
return res;
|
||||
rm_ac3_swap_bytes(st, pkt);
|
||||
} else {
|
||||
int seq=1;
|
||||
resync:
|
||||
len=sync(s, ×tamp, &flags, &i, &pos);
|
||||
if(len<0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user