diff --git a/libavformat/mmsh.c b/libavformat/mmsh.c index 94dc1675dd..beef0a87ba 100644 --- a/libavformat/mmsh.c +++ b/libavformat/mmsh.c @@ -366,6 +366,25 @@ static int mmsh_read(URLContext *h, uint8_t *buf, int size) return res; } +static int64_t mmsh_read_seek(URLContext *h, int stream_index, + int64_t timestamp, int flags) +{ + MMSHContext *mmsh = h->priv_data; + MMSContext *mms = &mmsh->mms; + int ret; + + ret= mmsh_open_internal(h, mmsh->location, 0, timestamp, 0); + if(ret>=0){ + if (mms->mms_hd) + ffurl_close(mms->mms_hd); + av_freep(&mms->streams); + av_freep(&mms->asf_header); + av_free(mmsh); + }else + h->priv_data= mmsh; + return ret; +} + URLProtocol ff_mmsh_protocol = { .name = "mmsh", .url_open = mmsh_open, @@ -373,4 +392,5 @@ URLProtocol ff_mmsh_protocol = { .url_write = NULL, .url_seek = NULL, .url_close = mmsh_close, + .url_read_seek = mmsh_read_seek, };