]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/async.c
ffplay: dynamically allocate filename buffer
[ffmpeg] / libavformat / async.c
index 60ea14c9e0e85e21e59ff83f2ce50972c4098ccd..003212d5b6c981d1ccb30d0c37f0a3359a883369 100644 (file)
@@ -50,7 +50,7 @@ typedef struct Context {
     URLContext     *inner;
 
     int             seek_request;
-    size_t          seek_pos;
+    int64_t         seek_pos;
     int             seek_whence;
     int             seek_completed;
     int64_t         seek_ret;
@@ -58,8 +58,8 @@ typedef struct Context {
     int             io_error;
     int             io_eof_reached;
 
-    size_t          logical_pos;
-    size_t          logical_size;
+    int64_t         logical_pos;
+    int64_t         logical_size;
     AVFifoBuffer   *fifo;
 
     pthread_cond_t  cond_wakeup_main;
@@ -91,6 +91,7 @@ static void *async_buffer_task(void *arg)
     Context      *c    = h->priv_data;
     AVFifoBuffer *fifo = c->fifo;
     int           ret  = 0;
+    int64_t       seek_ret;
 
     while (1) {
         int fifo_space, to_copy;
@@ -105,17 +106,17 @@ static void *async_buffer_task(void *arg)
         }
 
         if (c->seek_request) {
-            ret = ffurl_seek(c->inner, c->seek_pos, c->seek_whence);
-            if (ret < 0) {
+            seek_ret = ffurl_seek(c->inner, c->seek_pos, c->seek_whence);
+            if (seek_ret < 0) {
                 c->io_eof_reached = 1;
-                c->io_error       = ret;
+                c->io_error       = (int)seek_ret;
             } else {
                 c->io_eof_reached = 0;
                 c->io_error       = 0;
             }
 
             c->seek_completed = 1;
-            c->seek_ret       = ret;
+            c->seek_ret       = seek_ret;
             c->seek_request   = 0;
 
             av_fifo_reset(fifo);
@@ -170,7 +171,7 @@ static int async_open(URLContext *h, const char *arg, int flags, AVDictionary **
     c->interrupt_callback = h->interrupt_callback;
     ret = ffurl_open(&c->inner, arg, flags, &interrupt_callback, options);
     if (ret != 0) {
-        av_log(h, AV_LOG_ERROR, "ffurl_open failed : %s, %s\n", strerror(ret), arg);
+        av_log(h, AV_LOG_ERROR, "ffurl_open failed : %s, %s\n", av_err2str(ret), arg);
         goto url_fail;
     }
 
@@ -179,25 +180,25 @@ static int async_open(URLContext *h, const char *arg, int flags, AVDictionary **
 
     ret = pthread_mutex_init(&c->mutex, NULL);
     if (ret != 0) {
-        av_log(h, AV_LOG_ERROR, "pthread_mutex_init failed : %s\n", strerror(ret));
+        av_log(h, AV_LOG_ERROR, "pthread_mutex_init failed : %s\n", av_err2str(ret));
         goto mutex_fail;
     }
 
     ret = pthread_cond_init(&c->cond_wakeup_main, NULL);
     if (ret != 0) {
-        av_log(h, AV_LOG_ERROR, "pthread_cond_init failed : %s\n", strerror(ret));
+        av_log(h, AV_LOG_ERROR, "pthread_cond_init failed : %s\n", av_err2str(ret));
         goto cond_wakeup_main_fail;
     }
 
     ret = pthread_cond_init(&c->cond_wakeup_background, NULL);
     if (ret != 0) {
-        av_log(h, AV_LOG_ERROR, "pthread_cond_init failed : %s\n", strerror(ret));
+        av_log(h, AV_LOG_ERROR, "pthread_cond_init failed : %s\n", av_err2str(ret));
         goto cond_wakeup_background_fail;
     }
 
     ret = pthread_create(&c->async_buffer_thread, NULL, async_buffer_task, h);
     if (ret) {
-        av_log(h, AV_LOG_ERROR, "pthread_create failed : %s\n", strerror(ret));
+        av_log(h, AV_LOG_ERROR, "pthread_create failed : %s\n", av_err2str(ret));
         goto thread_fail;
     }
 
@@ -229,7 +230,7 @@ static int async_close(URLContext *h)
 
     ret = pthread_join(c->async_buffer_thread, NULL);
     if (ret != 0)
-        av_log(h, AV_LOG_ERROR, "pthread_join(): %s\n", strerror(ret));
+        av_log(h, AV_LOG_ERROR, "pthread_join(): %s\n", av_err2str(ret));
 
     pthread_cond_destroy(&c->cond_wakeup_background);
     pthread_cond_destroy(&c->cond_wakeup_main);
@@ -325,7 +326,7 @@ static int64_t async_seek(URLContext *h, int64_t pos, int whence)
         av_log(h, AV_LOG_TRACE, "async_seek: fask_seek %"PRId64" from %d dist:%d/%d\n",
                 new_logical_pos, (int)c->logical_pos,
                 (int)(new_logical_pos - c->logical_pos), fifo_size);
-        async_read_internal(h, NULL, new_logical_pos - c->logical_pos, 1, fifo_do_not_copy_func);
+        async_read_internal(h, NULL, (int)(new_logical_pos - c->logical_pos), 1, fifo_do_not_copy_func);
         return c->logical_pos;
     } else if (c->logical_size <= 0) {
         /* can not seek */
@@ -394,8 +395,8 @@ URLProtocol ff_async_protocol = {
 
 typedef struct TestContext {
     AVClass        *class;
-    size_t          logical_pos;
-    size_t          logical_size;
+    int64_t         logical_pos;
+    int64_t         logical_size;
 } TestContext;
 
 static int async_test_open(URLContext *h, const char *arg, int flags, AVDictionary **options)