ring: remove this

The code is OK, and it could be restored if it's needed again. But it is
unused now, so remove it.
This commit is contained in:
wm4 2020-08-28 20:27:41 +02:00
parent 40c2e71d33
commit 654eef9b82
3 changed files with 0 additions and 240 deletions

View File

@ -1,131 +0,0 @@
/*
* This file is part of mpv.
* Copyright (c) 2012 wm4
* Copyright (c) 2013 Stefano Pigozzi <stefano.pigozzi@gmail.com>
*
* mpv is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* mpv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include <inttypes.h>
#include <assert.h>
#include "common/common.h"
#include "mpv_talloc.h"
#include "osdep/atomic.h"
#include "ring.h"
struct mp_ring {
uint8_t *buffer;
/* Positions of the first readable/writeable chunks. Do not read these
* fields. Use the atomic private accessors `mp_ring_get_wpos`
* and `mp_ring_get_rpos`. */
atomic_ullong rpos, wpos;
};
static unsigned long long mp_ring_get_wpos(struct mp_ring *buffer)
{
return atomic_load(&buffer->wpos);
}
static unsigned long long mp_ring_get_rpos(struct mp_ring *buffer)
{
return atomic_load(&buffer->rpos);
}
struct mp_ring *mp_ring_new(void *talloc_ctx, int size)
{
struct mp_ring *ringbuffer =
talloc_zero(talloc_ctx, struct mp_ring);
*ringbuffer = (struct mp_ring) {
.buffer = talloc_size(talloc_ctx, size),
};
return ringbuffer;
}
int mp_ring_read(struct mp_ring *buffer, unsigned char *dest, int len)
{
int size = mp_ring_size(buffer);
int buffered = mp_ring_buffered(buffer);
int read_len = MPMIN(len, buffered);
int read_ptr = mp_ring_get_rpos(buffer) % size;
int len1 = MPMIN(size - read_ptr, read_len);
int len2 = read_len - len1;
if (dest) {
memcpy(dest, buffer->buffer + read_ptr, len1);
memcpy(dest + len1, buffer->buffer, len2);
}
atomic_fetch_add(&buffer->rpos, read_len);
return read_len;
}
int mp_ring_drain(struct mp_ring *buffer, int len)
{
return mp_ring_read(buffer, NULL, len);
}
int mp_ring_write(struct mp_ring *buffer, unsigned char *src, int len)
{
int size = mp_ring_size(buffer);
int free = mp_ring_available(buffer);
int write_len = MPMIN(len, free);
int write_ptr = mp_ring_get_wpos(buffer) % size;
int len1 = MPMIN(size - write_ptr, write_len);
int len2 = write_len - len1;
memcpy(buffer->buffer + write_ptr, src, len1);
memcpy(buffer->buffer, src + len1, len2);
atomic_fetch_add(&buffer->wpos, write_len);
return write_len;
}
void mp_ring_reset(struct mp_ring *buffer)
{
atomic_store(&buffer->wpos, 0);
atomic_store(&buffer->rpos, 0);
}
int mp_ring_available(struct mp_ring *buffer)
{
return mp_ring_size(buffer) - mp_ring_buffered(buffer);
}
int mp_ring_size(struct mp_ring *buffer)
{
return talloc_get_size(buffer->buffer);
}
int mp_ring_buffered(struct mp_ring *buffer)
{
return (mp_ring_get_wpos(buffer) - mp_ring_get_rpos(buffer));
}
char *mp_ring_repr(struct mp_ring *buffer, void *talloc_ctx)
{
return talloc_asprintf(
talloc_ctx,
"Ringbuffer { .size = %dB, .buffered = %dB, .available = %dB }",
mp_ring_size(buffer),
mp_ring_buffered(buffer),
mp_ring_available(buffer));
}

View File

@ -1,108 +0,0 @@
/*
* This file is part of mpv.
* Copyright (c) 2012 wm4
* Copyright (c) 2013 Stefano Pigozzi <stefano.pigozzi@gmail.com>
*
* mpv is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* mpv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MPV_MP_RING_H
#define MPV_MP_RING_H
/**
* A simple non-blocking SPSC (single producer, single consumer) ringbuffer
* implementation. Thread safety is accomplished through atomic operations.
*/
struct mp_ring;
/**
* Instantiate a new ringbuffer
*
* talloc_ctx: talloc context of the newly created object
* size: total size in bytes
* return: the newly created ringbuffer
*/
struct mp_ring *mp_ring_new(void *talloc_ctx, int size);
/**
* Read data from the ringbuffer
*
* buffer: target ringbuffer instance
* dest: destination buffer for the read data. If NULL read data is discarded.
* len: maximum number of bytes to read
* return: number of bytes read
*/
int mp_ring_read(struct mp_ring *buffer, unsigned char *dest, int len);
/**
* Write data to the ringbuffer
*
* buffer: target ringbuffer instance
* src: source buffer for the write data
* len: maximum number of bytes to write
* return: number of bytes written
*/
int mp_ring_write(struct mp_ring *buffer, unsigned char *src, int len);
/**
* Drain data from the ringbuffer
*
* buffer: target ringbuffer instance
* len: maximum number of bytes to drain
* return: number of bytes drained
*/
int mp_ring_drain(struct mp_ring *buffer, int len);
/**
* Reset the ringbuffer discarding any content
*
* buffer: target ringbuffer instance
*/
void mp_ring_reset(struct mp_ring *buffer);
/**
* Get the available size for writing
*
* buffer: target ringbuffer instance
* return: number of bytes that can be written
*/
int mp_ring_available(struct mp_ring *buffer);
/**
* Get the total size
*
* buffer: target ringbuffer instance
* return: total ringbuffer size in bytes
*/
int mp_ring_size(struct mp_ring *buffer);
/**
* Get the available size for reading
*
* buffer: target ringbuffer instance
* return: number of bytes ready for reading
*/
int mp_ring_buffered(struct mp_ring *buffer);
/**
* Get a string representation of the ringbuffer
*
* buffer: target ringbuffer instance
* talloc_ctx: talloc context of the newly created string
* return: string representing the ringbuffer
*/
char *mp_ring_repr(struct mp_ring *buffer, void *talloc_ctx);
#endif

View File

@ -319,7 +319,6 @@ def build(ctx):
( "misc/natural_sort.c" ),
( "misc/node.c" ),
( "misc/rendezvous.c" ),
( "misc/ring.c" ),
( "misc/thread_pool.c" ),
( "misc/thread_tools.c" ),