aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/mmsh.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-10-31 20:50:04 +0100
committerMichael Niedermayer <michaelni@gmx.at>2011-10-31 20:50:04 +0100
commit8475ec190c688e39cc8d2b4aa9048196ca7e775e (patch)
treeda6ac365c8832f12a74e3220da8baf33472b707b /libavformat/mmsh.c
parent86a4e55e663c144dd355b4320be4dc4c95b726eb (diff)
downloadffmpeg-8475ec190c688e39cc8d2b4aa9048196ca7e775e.tar.gz
mmsh: mmsh_read_seek()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/mmsh.c')
-rw-r--r--libavformat/mmsh.c20
1 files changed, 20 insertions, 0 deletions
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,
};