* "Real" compatible demuxer.
* Copyright (c) 2000, 2001 Fabrice Bellard
*
- * This file is part of FFmpeg.
+ * This file is part of Libav.
*
- * FFmpeg is free software; you can redistribute it and/or
+ * Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
- * FFmpeg is distributed in the hope that it will be useful,
+ * Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
+ * License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
version = avio_rb16(pb); /* version */
if (version == 3) {
int header_size = avio_rb16(pb);
- int64_t startpos = url_ftell(pb);
- url_fskip(pb, 14);
+ int64_t startpos = avio_tell(pb);
+ avio_skip(pb, 14);
rm_read_metadata(s, 0);
- if ((startpos + header_size) >= url_ftell(pb) + 2) {
+ if ((startpos + header_size) >= avio_tell(pb) + 2) {
// fourcc (should always be "lpcJ")
avio_r8(pb);
get_str8(pb, buf, sizeof(buf));
}
// Skip extra header crap (this should never happen)
- if ((startpos + header_size) > url_ftell(pb))
- url_fskip(pb, header_size + startpos - url_ftell(pb));
+ if ((startpos + header_size) > avio_tell(pb))
+ avio_skip(pb, header_size + startpos - avio_tell(pb));
st->codec->sample_rate = 8000;
st->codec->channels = 1;
st->codec->codec_type = AVMEDIA_TYPE_AUDIO;
int flavor, sub_packet_h, coded_framesize, sub_packet_size;
int codecdata_length;
/* old version (4) */
- url_fskip(pb, 2); /* unused */
+ avio_skip(pb, 2); /* unused */
avio_rb32(pb); /* .ra4 */
avio_rb32(pb); /* data size */
avio_rb16(pb); /* version2 */
int ret;
av_set_pts_info(st, 64, 1, 1000);
- codec_pos = url_ftell(pb);
+ codec_pos = avio_tell(pb);
v = avio_rb32(pb);
if (v == MKTAG(0xfd, 'a', 'r', '.')) {
/* ra type header */
if (rm_read_audio_stream_info(s, pb, st, rst, 0))
return -1;
} else {
- int fps, fps2;
+ int fps;
if (avio_rl32(pb) != MKTAG('V', 'I', 'D', 'O')) {
fail1:
av_log(st->codec, AV_LOG_ERROR, "Unsupported video codec\n");
fps= avio_rb16(pb);
st->codec->codec_type = AVMEDIA_TYPE_VIDEO;
avio_rb32(pb);
- fps2= avio_rb16(pb);
+ avio_skip(pb, 2);
avio_rb16(pb);
- if ((ret = rm_read_extradata(pb, st->codec, codec_data_size - (url_ftell(pb) - codec_pos))) < 0)
+ if ((ret = rm_read_extradata(pb, st->codec, codec_data_size - (avio_tell(pb) - codec_pos))) < 0)
return ret;
// av_log(s, AV_LOG_DEBUG, "fps= %d fps2= %d\n", fps, fps2);
skip:
/* skip codec info */
- size = url_ftell(pb) - codec_pos;
- url_fskip(pb, codec_data_size - size);
+ size = avio_tell(pb) - codec_pos;
+ avio_skip(pb, codec_data_size - size);
return 0;
}
size = avio_rb32(pb);
if (size < 20)
return -1;
- url_fskip(pb, 2);
+ avio_skip(pb, 2);
n_pkts = avio_rb32(pb);
str_id = avio_rb16(pb);
next_off = avio_rb32(pb);
goto skip;
for (n = 0; n < n_pkts; n++) {
- url_fskip(pb, 2);
+ avio_skip(pb, 2);
pts = avio_rb32(pb);
pos = avio_rb32(pb);
- url_fskip(pb, 4); /* packet no. */
+ avio_skip(pb, 4); /* packet no. */
av_add_index_entry(st, pos, pts, 0, 0, AVINDEX_KEYFRAME);
}
skip:
- if (next_off && url_ftell(pb) != next_off &&
- url_fseek(pb, next_off, SEEK_SET) < 0)
+ if (next_off && avio_tell(pb) != next_off &&
+ avio_seek(pb, next_off, SEEK_SET) < 0)
return -1;
} while (next_off);
avio_rb32(pb); /* number of headers */
for(;;) {
- if (url_feof(pb))
+ if (pb->eof_reached)
return -1;
tag = avio_rl32(pb);
tag_size = avio_rb32(pb);
avio_rb16(pb);
-#if 0
- printf("tag=%c%c%c%c (%08x) size=%d\n",
- (tag) & 0xff,
- (tag >> 8) & 0xff,
- (tag >> 16) & 0xff,
- (tag >> 24) & 0xff,
- tag,
- tag_size);
-#endif
+ av_dlog(s, "tag=%c%c%c%c (%08x) size=%d\n",
+ (tag ) & 0xff,
+ (tag >> 8) & 0xff,
+ (tag >> 16) & 0xff,
+ (tag >> 24) & 0xff,
+ tag,
+ tag_size);
if (tag_size < 10 && tag != MKTAG('D', 'A', 'T', 'A'))
return -1;
switch(tag) {
goto header_end;
default:
/* unknown tag: skip it */
- url_fskip(pb, tag_size - 10);
+ avio_skip(pb, tag_size - 10);
break;
}
}
avio_rb32(pb); /* next data header */
if (!data_off)
- data_off = url_ftell(pb) - 18;
- if (indx_off && !url_is_streamed(pb) && !(s->flags & AVFMT_FLAG_IGNIDX) &&
- url_fseek(pb, indx_off, SEEK_SET) >= 0) {
+ data_off = avio_tell(pb) - 18;
+ if (indx_off && pb->seekable && !(s->flags & AVFMT_FLAG_IGNIDX) &&
+ avio_seek(pb, indx_off, SEEK_SET) >= 0) {
rm_read_index(s);
- url_fseek(pb, data_off + 18, SEEK_SET);
+ avio_seek(pb, data_off + 18, SEEK_SET);
}
return 0;
AVStream *st;
uint32_t state=0xFFFFFFFF;
- while(!url_feof(pb)){
+ while(!pb->eof_reached){
int len, num, i;
- *pos= url_ftell(pb) - 3;
+ *pos= avio_tell(pb) - 3;
if(rm->remaining_len > 0){
num= rm->current_stream;
len= rm->remaining_len;
if(state == MKBETAG('I', 'N', 'D', 'X')){
int n_pkts, expected_len;
len = avio_rb32(pb);
- url_fskip(pb, 2);
+ avio_skip(pb, 2);
n_pkts = avio_rb32(pb);
expected_len = 20 + n_pkts * 14;
if (len == 20)
if (i == s->nb_streams) {
skip:
/* skip packet if unknown number */
- url_fskip(pb, len);
+ avio_skip(pb, len);
rm->remaining_len = 0;
continue;
}
vst->videobufpos = 8*vst->slices + 1;
vst->cur_slice = 0;
vst->curpic_num = pic_num;
- vst->pktpos = url_ftell(pb);
+ vst->pktpos = avio_tell(pb);
}
if(type == 2)
len = FFMIN(len, pos);
len = !ast->audio_framesize ? RAW_PACKET_SIZE :
ast->coded_framesize * ast->sub_packet_h / 2;
flags = (seq++ == 1) ? 2 : 0;
- pos = url_ftell(s->pb);
+ pos = avio_tell(s->pb);
} else {
len=sync(s, ×tamp, &flags, &i, &pos);
if (len > 0)
st = s->streams[i];
}
- if(len<0 || url_feof(s->pb))
+ if(len<0 || s->pb->eof_reached)
return AVERROR(EIO);
res = ff_rm_parse_packet (s, s->pb, st, st->priv_data, len, pkt,
if(rm->old_format)
return AV_NOPTS_VALUE;
- url_fseek(s->pb, pos, SEEK_SET);
+ avio_seek(s->pb, pos, SEEK_SET);
rm->remaining_len=0;
for(;;){
int seq=1;
break;
}
- url_fskip(s->pb, len);
+ avio_skip(s->pb, len);
}
*ppos = pos;
return dts;