Lines Matching refs:ring
72 RingBuffer ring;
83 static int ring_init(RingBuffer *ring, unsigned int capacity, int read_back_capacity)
85 memset(ring, 0, sizeof(RingBuffer));
86 ring->fifo = av_fifo_alloc2(capacity + read_back_capacity, 1, 0);
87 if (!ring->fifo)
90 ring->read_back_capacity = read_back_capacity;
94 static void ring_destroy(RingBuffer *ring)
96 av_fifo_freep2(&ring->fifo);
99 static void ring_reset(RingBuffer *ring)
101 av_fifo_reset2(ring->fifo);
102 ring->read_pos = 0;
105 static int ring_size(RingBuffer *ring)
107 return av_fifo_can_read(ring->fifo) - ring->read_pos;
110 static int ring_space(RingBuffer *ring)
112 return av_fifo_can_write(ring->fifo);
115 static int ring_read(RingBuffer *ring, void *dest, int buf_size)
119 av_assert2(buf_size <= ring_size(ring));
121 ret = av_fifo_peek(ring->fifo, dest, buf_size, ring->read_pos);
122 ring->read_pos += buf_size;
124 if (ring->read_pos > ring->read_back_capacity) {
125 av_fifo_drain2(ring->fifo, ring->read_pos - ring->read_back_capacity);
126 ring->read_pos = ring->read_back_capacity;
145 static int ring_write(RingBuffer *ring, URLContext *h, size_t size)
149 av_assert2(size <= ring_space(ring));
150 ret = av_fifo_write_from_cb(ring->fifo, wrapped_url_read, h, &size);
157 static int ring_size_of_read_back(RingBuffer *ring)
159 return ring->read_pos;
162 static int ring_drain(RingBuffer *ring, int offset)
164 av_assert2(offset >= -ring_size_of_read_back(ring));
165 av_assert2(offset <= ring_size(ring));
166 ring->read_pos += offset;
188 RingBuffer *ring = &c->ring;
209 ring_reset(ring);
222 fifo_space = ring_space(ring);
232 ret = ring_write(ring, h, to_copy);
256 ret = ring_init(&c->ring, BUFFER_CAPACITY, READ_BACK_CAPACITY);
310 ring_destroy(&c->ring);
333 ring_destroy(&c->ring);
341 RingBuffer *ring = &c->ring;
354 fifo_size = ring_size(ring);
357 ring_read(ring, dest, to_copy);
393 RingBuffer *ring = &c->ring;
414 fifo_size = ring_size(ring);
415 fifo_size_of_read_back = ring_size_of_read_back(ring);
432 ring_drain(ring, pos_delta);