diff utils.c @ 542:be81a0f1974d libavformat

SCR timestamp fix try #1
author michael
date Sun, 03 Oct 2004 02:42:01 +0000
parents 26a477a5ebda
children b832a27355ec
line wrap: on
line diff
--- a/utils.c	Fri Oct 01 20:05:04 2004 +0000
+++ b/utils.c	Sun Oct 03 02:42:01 2004 +0000
@@ -264,6 +264,34 @@
     *wptr_ptr = wptr;
 }
 
+/* get data from the fifo (return -1 if not enough data) */
+int put_fifo(ByteIOContext *pb, FifoBuffer *f, int buf_size, uint8_t **rptr_ptr)
+{
+    uint8_t *rptr = *rptr_ptr;
+    int size, len;
+
+    if (f->wptr >= rptr) {
+        size = f->wptr - rptr;
+    } else {
+        size = (f->end - rptr) + (f->wptr - f->buffer);
+    }
+    
+    if (size < buf_size)
+        return -1;
+    while (buf_size > 0) {
+        len = f->end - rptr;
+        if (len > buf_size)
+            len = buf_size;
+        put_buffer(pb, rptr, len);
+        rptr += len;
+        if (rptr >= f->end)
+            rptr = f->buffer;
+        buf_size -= len;
+    }
+    *rptr_ptr = rptr;
+    return 0;
+}
+
 int filename_number_test(const char *filename)
 {
     char buf[1024];