Enable av_read_pause(), av_read_play() and the ASF demuxer's av_read_seek()

to use the protocol-native functionality if available.
Patch by Björn Axelsson: bjorn point axelsson at intinor dot se
Original thread: [FFmpeg-devel] [PATCH][4/4] Enable use of the extended API
Date: Thu Nov 22 16:01:06 CET 2007

Originally committed as revision 11248 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Björn Axelsson 2007-12-17 09:28:46 +00:00 committed by Benoit Fouet
parent 08c015c075
commit fa13095a5d
2 changed files with 18 additions and 6 deletions

View File

@ -1049,6 +1049,14 @@ static int asf_read_seek(AVFormatContext *s, int stream_index, int64_t pts, int
if (asf->packet_size <= 0) if (asf->packet_size <= 0)
return -1; return -1;
/* Try using the protocol's read_seek if available */
if(s->pb && s->pb->read_seek) {
int ret = av_url_read_fseek(s->pb, stream_index, pts, flags);
if(ret >= 0)
asf_reset_header(s);
return ret;
}
if (!asf->index_read) if (!asf->index_read)
asf_build_simple_index(s, stream_index); asf_build_simple_index(s, stream_index);

View File

@ -2030,16 +2030,20 @@ int av_find_stream_info(AVFormatContext *ic)
int av_read_play(AVFormatContext *s) int av_read_play(AVFormatContext *s)
{ {
if (!s->iformat->read_play) if (s->iformat->read_play)
return AVERROR(ENOSYS); return s->iformat->read_play(s);
return s->iformat->read_play(s); if (s->pb && s->pb->read_play)
return av_url_read_fplay(s->pb);
return AVERROR(ENOSYS);
} }
int av_read_pause(AVFormatContext *s) int av_read_pause(AVFormatContext *s)
{ {
if (!s->iformat->read_pause) if (s->iformat->read_pause)
return AVERROR(ENOSYS); return s->iformat->read_pause(s);
return s->iformat->read_pause(s); if (s->pb && s->pb->read_pause)
return av_url_read_fpause(s->pb);
return AVERROR(ENOSYS);
} }
void av_close_input_file(AVFormatContext *s) void av_close_input_file(AVFormatContext *s)