diff stream/stream_ffmpeg.c @ 34544:36ef1a75aa48

Some hacks to allow stream_ffmpeg to compile against newer FFmpeg. Keep the old code so that it is still possible to compile against older FFmpeg without using internal API.
author reimar
date Sat, 28 Jan 2012 13:47:01 +0000
parents 30f5e5cd3676
children bbbe7b6abc62
line wrap: on
line diff
--- a/stream/stream_ffmpeg.c	Sat Jan 28 13:22:57 2012 +0000
+++ b/stream/stream_ffmpeg.c	Sat Jan 28 13:47:01 2012 +0000
@@ -26,6 +26,16 @@
 #include "m_struct.h"
 #include "av_helpers.h"
 
+#ifndef URL_RDONLY
+#include "libavformat/url.h"
+#define url_read_complete ffurl_read_complete
+#define url_write ffurl_write
+#define url_seek ffurl_seek
+#define url_filesize ffurl_size
+#define url_close ffurl_close
+#define url_open(c, n, f) ffurl_open(c, n, f, NULL, NULL)
+#endif
+
 static int fill_buffer(stream_t *s, char *buffer, int max_len)
 {
     int r = url_read_complete(s->priv, buffer, max_len);
@@ -51,6 +61,7 @@
 
 static int control(stream_t *s, int cmd, void *arg)
 {
+    URLContext *ctx = s->priv;
     int64_t size, ts;
     double pts;
     switch(cmd) {
@@ -64,7 +75,13 @@
     case STREAM_CTRL_SEEK_TO_TIME:
         pts = *(double *)arg;
         ts = pts * AV_TIME_BASE;
+#ifdef URL_RDONLY
         ts = av_url_read_seek(s->priv, -1, ts, 0);
+#else
+        if (!ctx->prot->url_read_seek)
+            break;
+        ts = ctx->prot->url_read_seek(s->priv, -1, ts, 0);
+#endif
         if (ts >= 0)
             return 1;
         break;
@@ -90,9 +107,9 @@
 
     init_avformat();
     if (mode == STREAM_READ)
-        flags = URL_RDONLY;
+        flags = AVIO_FLAG_READ;
     else if (mode == STREAM_WRITE)
-        flags = URL_WRONLY;
+        flags = AVIO_FLAG_WRITE;
     else {
         mp_msg(MSGT_OPEN, MSGL_ERR, "[ffmpeg] Unknown open mode %d\n", mode);
         res = STREAM_UNSUPPORTED;