music_pipe: renamed struct output_buffer to struct music_pipe
.. and rename ob_chunk to struct music_chunk.
This commit is contained in:
parent
767b4c95bd
commit
8964c69a64
@ -20,6 +20,7 @@
|
|||||||
#include "crossfade.h"
|
#include "crossfade.h"
|
||||||
#include "audio.h"
|
#include "audio.h"
|
||||||
#include "pcm_utils.h"
|
#include "pcm_utils.h"
|
||||||
|
#include "pipe.h"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -48,7 +49,7 @@ unsigned cross_fade_calc(float duration, float total_time,
|
|||||||
return chunks;
|
return chunks;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cross_fade_apply(ob_chunk * a, const ob_chunk * b,
|
void cross_fade_apply(struct music_chunk *a, const struct music_chunk *b,
|
||||||
const struct audio_format *format,
|
const struct audio_format *format,
|
||||||
unsigned int current_chunk, unsigned int num_chunks)
|
unsigned int current_chunk, unsigned int num_chunks)
|
||||||
{
|
{
|
||||||
|
@ -20,15 +20,14 @@
|
|||||||
#ifndef MPD_CROSSFADE_H
|
#ifndef MPD_CROSSFADE_H
|
||||||
#define MPD_CROSSFADE_H
|
#define MPD_CROSSFADE_H
|
||||||
|
|
||||||
#include "pipe.h"
|
|
||||||
|
|
||||||
struct audio_format;
|
struct audio_format;
|
||||||
|
struct music_chunk;
|
||||||
|
|
||||||
unsigned cross_fade_calc(float duration, float total_time,
|
unsigned cross_fade_calc(float duration, float total_time,
|
||||||
const struct audio_format *af,
|
const struct audio_format *af,
|
||||||
unsigned max_chunks);
|
unsigned max_chunks);
|
||||||
|
|
||||||
void cross_fade_apply(ob_chunk * a, const ob_chunk * b,
|
void cross_fade_apply(struct music_chunk *a, const struct music_chunk *b,
|
||||||
const struct audio_format *format,
|
const struct audio_format *format,
|
||||||
unsigned int current_chunk, unsigned int num_chunks);
|
unsigned int current_chunk, unsigned int num_chunks);
|
||||||
|
|
||||||
|
14
src/pipe.c
14
src/pipe.c
@ -23,7 +23,7 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
struct output_buffer ob;
|
struct music_pipe ob;
|
||||||
|
|
||||||
void
|
void
|
||||||
ob_init(unsigned int size, struct notify *notify)
|
ob_init(unsigned int size, struct notify *notify)
|
||||||
@ -82,7 +82,7 @@ static void output_buffer_expand(unsigned i)
|
|||||||
|
|
||||||
void ob_flush(void)
|
void ob_flush(void)
|
||||||
{
|
{
|
||||||
ob_chunk *chunk = ob_get_chunk(ob.end);
|
struct music_chunk *chunk = ob_get_chunk(ob.end);
|
||||||
|
|
||||||
if (chunk->chunkSize > 0) {
|
if (chunk->chunkSize > 0) {
|
||||||
unsigned int next = successor(ob.end);
|
unsigned int next = successor(ob.end);
|
||||||
@ -139,7 +139,8 @@ int ob_absolute(const unsigned relative)
|
|||||||
return (int)i;
|
return (int)i;
|
||||||
}
|
}
|
||||||
|
|
||||||
ob_chunk * ob_get_chunk(const unsigned i)
|
struct music_chunk *
|
||||||
|
ob_get_chunk(const unsigned i)
|
||||||
{
|
{
|
||||||
assert(i < ob.size);
|
assert(i < ob.size);
|
||||||
|
|
||||||
@ -152,11 +153,12 @@ ob_chunk * ob_get_chunk(const unsigned i)
|
|||||||
* @return the chunk which has room for more data; NULL if there is no
|
* @return the chunk which has room for more data; NULL if there is no
|
||||||
* room.
|
* room.
|
||||||
*/
|
*/
|
||||||
static ob_chunk *tail_chunk(float data_time, uint16_t bitRate)
|
static struct music_chunk *
|
||||||
|
tail_chunk(float data_time, uint16_t bitRate)
|
||||||
{
|
{
|
||||||
const size_t frame_size = audio_format_frame_size(&ob.audioFormat);
|
const size_t frame_size = audio_format_frame_size(&ob.audioFormat);
|
||||||
unsigned int next;
|
unsigned int next;
|
||||||
ob_chunk *chunk;
|
struct music_chunk *chunk;
|
||||||
|
|
||||||
chunk = ob_get_chunk(ob.end);
|
chunk = ob_get_chunk(ob.end);
|
||||||
assert(chunk->chunkSize <= sizeof(chunk->data));
|
assert(chunk->chunkSize <= sizeof(chunk->data));
|
||||||
@ -189,7 +191,7 @@ size_t ob_append(const void *data0, size_t datalen,
|
|||||||
const unsigned char *data = data0;
|
const unsigned char *data = data0;
|
||||||
const size_t frame_size = audio_format_frame_size(&ob.audioFormat);
|
const size_t frame_size = audio_format_frame_size(&ob.audioFormat);
|
||||||
size_t ret = 0, dataToSend;
|
size_t ret = 0, dataToSend;
|
||||||
ob_chunk *chunk = NULL;
|
struct music_chunk *chunk = NULL;
|
||||||
|
|
||||||
/* no partial frames allowed */
|
/* no partial frames allowed */
|
||||||
assert((datalen % frame_size) == 0);
|
assert((datalen % frame_size) == 0);
|
||||||
|
13
src/pipe.h
13
src/pipe.h
@ -27,19 +27,19 @@
|
|||||||
/* pick 1020 since its devisible for 8,16,24, and 32-bit audio */
|
/* pick 1020 since its devisible for 8,16,24, and 32-bit audio */
|
||||||
#define CHUNK_SIZE 1020
|
#define CHUNK_SIZE 1020
|
||||||
|
|
||||||
typedef struct _OutputBufferChunk {
|
struct music_chunk {
|
||||||
uint16_t chunkSize;
|
uint16_t chunkSize;
|
||||||
uint16_t bitRate;
|
uint16_t bitRate;
|
||||||
float times;
|
float times;
|
||||||
char data[CHUNK_SIZE];
|
char data[CHUNK_SIZE];
|
||||||
} ob_chunk;
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A ring set of buffers where the decoder appends data after the end,
|
* A ring set of buffers where the decoder appends data after the end,
|
||||||
* and the player consumes data from the beginning.
|
* and the player consumes data from the beginning.
|
||||||
*/
|
*/
|
||||||
struct output_buffer {
|
struct music_pipe {
|
||||||
ob_chunk *chunks;
|
struct music_chunk *chunks;
|
||||||
|
|
||||||
unsigned int size;
|
unsigned int size;
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ struct output_buffer {
|
|||||||
struct notify *notify;
|
struct notify *notify;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct output_buffer ob;
|
extern struct music_pipe ob;
|
||||||
|
|
||||||
void
|
void
|
||||||
ob_init(unsigned int size, struct notify *notify);
|
ob_init(unsigned int size, struct notify *notify);
|
||||||
@ -100,7 +100,8 @@ unsigned ob_available(void);
|
|||||||
*/
|
*/
|
||||||
int ob_absolute(const unsigned relative);
|
int ob_absolute(const unsigned relative);
|
||||||
|
|
||||||
ob_chunk * ob_get_chunk(const unsigned i);
|
struct music_chunk *
|
||||||
|
ob_get_chunk(const unsigned i);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Append a data block to the buffer.
|
* Append a data block to the buffer.
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
#include "main_notify.h"
|
#include "main_notify.h"
|
||||||
#include "crossfade.h"
|
#include "crossfade.h"
|
||||||
#include "song.h"
|
#include "song.h"
|
||||||
|
#include "pipe.h"
|
||||||
|
|
||||||
enum xfade_state {
|
enum xfade_state {
|
||||||
XFADE_DISABLED = -1,
|
XFADE_DISABLED = -1,
|
||||||
@ -205,8 +206,9 @@ static void processDecodeInput(struct player *player)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int playChunk(ob_chunk * chunk,
|
static int
|
||||||
const struct audio_format *format, double sizeToTime)
|
playChunk(struct music_chunk *chunk, const struct audio_format *format,
|
||||||
|
double sizeToTime)
|
||||||
{
|
{
|
||||||
pc.elapsedTime = chunk->times;
|
pc.elapsedTime = chunk->times;
|
||||||
pc.bitRate = chunk->bitRate;
|
pc.bitRate = chunk->bitRate;
|
||||||
@ -355,7 +357,7 @@ static void do_play(void)
|
|||||||
notify_wait(&pc.notify);
|
notify_wait(&pc.notify);
|
||||||
else if (!ob_is_empty() &&
|
else if (!ob_is_empty() &&
|
||||||
(int)ob.begin != player.next_song_chunk) {
|
(int)ob.begin != player.next_song_chunk) {
|
||||||
ob_chunk *beginChunk = ob_get_chunk(ob.begin);
|
struct music_chunk *beginChunk = ob_get_chunk(ob.begin);
|
||||||
unsigned int fadePosition;
|
unsigned int fadePosition;
|
||||||
if (player.xfade == XFADE_ENABLED &&
|
if (player.xfade == XFADE_ENABLED &&
|
||||||
player.next_song_chunk >= 0 &&
|
player.next_song_chunk >= 0 &&
|
||||||
|
Loading…
Reference in New Issue
Block a user