diff --git a/libavformat/avio.c b/libavformat/avio.c index 6a08a5e07ee5e0366d4584527c796525e45a2947..8466cd5ee8d17b2999a4c6a150699226861c1cf6 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -192,18 +192,11 @@ void url_set_interrupt_cb(URLInterruptCB *interrupt_cb) url_interrupt_cb = interrupt_cb; } -int av_url_read_play(URLContext *h) -{ - if (!h->prot->url_read_play) - return AVERROR(ENOSYS); - return h->prot->url_read_play(h); -} - -int av_url_read_pause(URLContext *h) +int av_url_read_pause(URLContext *h, int pause) { if (!h->prot->url_read_pause) return AVERROR(ENOSYS); - return h->prot->url_read_pause(h); + return h->prot->url_read_pause(h, pause); } int av_url_read_seek(URLContext *h, diff --git a/libavformat/avio.h b/libavformat/avio.h index d3fa10f006c7252761c36ab4a76bb8ff1c9f90b0..bdeb502611ae55dc0853c10dedd8f5a268f8be34 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -82,12 +82,12 @@ void url_set_interrupt_cb(URLInterruptCB *interrupt_cb); /* not implemented */ int url_poll(URLPollEntry *poll_table, int n, int timeout); -/** Start playing or resume paused playout. Only meaningful if using a network - * streaming protocol (e.g. MMS). */ -int av_url_read_play(URLContext *h); -/** Pause playing - only meaningful if using a network streaming protocol - * (e.g. MMS). */ -int av_url_read_pause(URLContext *h); +/** + * Pause and resume playing - only meaningful if using a network streaming + * protocol (e.g. MMS). + * @param pause 1 for pause, 0 for resume + */ +int av_url_read_pause(URLContext *h, int pause); /** * Seek to a given timestamp relative to some component stream. * Only meaningful if using a network streaming protocol (e.g. MMS.) @@ -123,8 +123,7 @@ typedef struct URLProtocol { offset_t (*url_seek)(URLContext *h, offset_t pos, int whence); int (*url_close)(URLContext *h); struct URLProtocol *next; - int (*url_read_play)(URLContext *h); - int (*url_read_pause)(URLContext *h); + int (*url_read_pause)(URLContext *h, int pause); int (*url_read_seek)(URLContext *h, int stream_index, int64_t timestamp, int flags); } URLProtocol; @@ -154,8 +153,7 @@ typedef struct { unsigned char *checksum_ptr; unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size); int error; ///< contains the error code or 0 if no error happened - int (*read_play)(void *opaque); - int (*read_pause)(void *opaque); + int (*read_pause)(void *opaque, int pause); int (*read_seek)(void *opaque, int stream_index, int64_t timestamp, int flags); } ByteIOContext; @@ -190,8 +188,7 @@ offset_t url_fsize(ByteIOContext *s); int url_feof(ByteIOContext *s); int url_ferror(ByteIOContext *s); -int av_url_read_fplay(ByteIOContext *h); -int av_url_read_fpause(ByteIOContext *h); +int av_url_read_fpause(ByteIOContext *h, int pause); int av_url_read_fseek(ByteIOContext *h, int stream_index, int64_t timestamp, int flags); diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index d3777d15c027b243285b6d14c66aac8203330b97..025e0b69803ca944ca44846335037b09911d920a 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -55,7 +55,6 @@ int init_put_byte(ByteIOContext *s, s->pos = buffer_size; s->buf_end = s->buffer + buffer_size; } - s->read_play = NULL; s->read_pause = NULL; s->read_seek = NULL; return 0; @@ -532,8 +531,7 @@ int url_fdopen(ByteIOContext **s, URLContext *h) (*s)->is_streamed = h->is_streamed; (*s)->max_packet_size = max_packet_size; if(h->prot) { - (*s)->read_play = (int (*)(void *))h->prot->url_read_play; - (*s)->read_pause = (int (*)(void *))h->prot->url_read_pause; + (*s)->read_pause = (int (*)(void *, int))h->prot->url_read_pause; (*s)->read_seek = (int (*)(void *, int, int64_t, int))h->prot->url_read_seek; } return 0; @@ -641,18 +639,11 @@ int url_fget_max_packet_size(ByteIOContext *s) return s->max_packet_size; } -int av_url_read_fplay(ByteIOContext *s) -{ - if (!s->read_play) - return AVERROR(ENOSYS); - return s->read_play(s->opaque); -} - -int av_url_read_fpause(ByteIOContext *s) +int av_url_read_fpause(ByteIOContext *s, int pause) { if (!s->read_pause) return AVERROR(ENOSYS); - return s->read_pause(s->opaque); + return s->read_pause(s->opaque, pause); } int av_url_read_fseek(ByteIOContext *s, diff --git a/libavformat/utils.c b/libavformat/utils.c index f4cf10f14d7c414fb579e0dcb379d6f3ef5eb14e..e5e04bf74519339f5d02f594f989c579d81a4115 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2042,8 +2042,8 @@ int av_read_play(AVFormatContext *s) { if (s->iformat->read_play) return s->iformat->read_play(s); - if (s->pb && s->pb->read_play) - return av_url_read_fplay(s->pb); + if (s->pb && s->pb->read_pause) + return av_url_read_fpause(s->pb, 0); return AVERROR(ENOSYS); } @@ -2052,7 +2052,7 @@ int av_read_pause(AVFormatContext *s) if (s->iformat->read_pause) return s->iformat->read_pause(s); if (s->pb && s->pb->read_pause) - return av_url_read_fpause(s->pb); + return av_url_read_fpause(s->pb, 1); return AVERROR(ENOSYS); }