fix prototypes of sbc functions a bit

This commit is contained in:
Lennart Poettering 2009-03-19 17:44:42 +01:00
parent 794775bb51
commit 291d21c4ba
3 changed files with 32 additions and 17 deletions

View file

@ -949,7 +949,7 @@ static int a2dp_process_render(struct userdata *u) {
void *d; void *d;
const void *p; const void *p;
unsigned frame_count; unsigned frame_count;
int written; size_t written;
uint64_t writing_at; uint64_t writing_at;
pa_assert(u); pa_assert(u);
@ -975,14 +975,14 @@ static int a2dp_process_render(struct userdata *u) {
writing_at = u->write_index; writing_at = u->write_index;
do { do {
int encoded; ssize_t encoded;
if (!u->write_memchunk.memblock) if (!u->write_memchunk.memblock)
pa_sink_render_full(u->sink, u->block_size, &u->write_memchunk); pa_sink_render_full(u->sink, u->block_size, &u->write_memchunk);
p = (const uint8_t*) pa_memblock_acquire(u->write_memchunk.memblock) + u->write_memchunk.index; p = (const uint8_t*) pa_memblock_acquire(u->write_memchunk.memblock) + u->write_memchunk.index;
encoded = sbc_encode(&a2dp->sbc, encoded = sbc_encode(&a2dp->sbc,
(void*) p, u->write_memchunk.length, p, u->write_memchunk.length,
d, left, d, left,
&written); &written);
@ -997,10 +997,11 @@ static int a2dp_process_render(struct userdata *u) {
return -1; return -1;
} }
pa_assert(written >= 0);
pa_assert((size_t) encoded <= u->write_memchunk.length); pa_assert((size_t) encoded <= u->write_memchunk.length);
pa_assert((size_t) encoded == sbc_get_codesize(&a2dp->sbc));
pa_assert((size_t) written <= left); pa_assert((size_t) written <= left);
pa_assert((size_t) written == sbc_get_frame_length(&a2dp->sbc));
/* pa_log_debug("SBC: encoded: %d; written: %d", encoded, written); */ /* pa_log_debug("SBC: encoded: %d; written: %d", encoded, written); */
@ -1019,7 +1020,7 @@ static int a2dp_process_render(struct userdata *u) {
frame_count++; frame_count++;
} while ((uint8_t*) d - (uint8_t*) a2dp->buffer + written < (ptrdiff_t) u->link_mtu); } while (((uint8_t*) d - ((uint8_t*) a2dp->buffer + sbc_get_frame_length(&a2dp->sbc))) < (ptrdiff_t) u->link_mtu);
/* write it to the fifo */ /* write it to the fifo */
memset(a2dp->buffer, 0, sizeof(*header) + sizeof(*payload)); memset(a2dp->buffer, 0, sizeof(*header) + sizeof(*payload));

View file

@ -1044,8 +1044,10 @@ int sbc_decode(sbc_t *sbc, void *input, int input_len, void *output,
return framelen; return framelen;
} }
int sbc_encode(sbc_t *sbc, void *input, int input_len, void *output, ssize_t sbc_encode(sbc_t *sbc,
int output_len, int *written) const void *input, size_t input_len,
void *output, size_t output_len,
size_t *written)
{ {
struct sbc_priv *priv; struct sbc_priv *priv;
int framelen, samples; int framelen, samples;
@ -1133,9 +1135,9 @@ void sbc_finish(sbc_t *sbc)
memset(sbc, 0, sizeof(sbc_t)); memset(sbc, 0, sizeof(sbc_t));
} }
int sbc_get_frame_length(sbc_t *sbc) size_t sbc_get_frame_length(sbc_t *sbc)
{ {
int ret; size_t ret;
uint8_t subbands, channels, blocks, joint; uint8_t subbands, channels, blocks, joint;
struct sbc_priv *priv; struct sbc_priv *priv;
@ -1164,7 +1166,7 @@ int sbc_get_frame_length(sbc_t *sbc)
return ret; return ret;
} }
int sbc_get_frame_duration(sbc_t *sbc) unsigned sbc_get_frame_duration(sbc_t *sbc)
{ {
uint8_t subbands, blocks; uint8_t subbands, blocks;
uint16_t frequency; uint16_t frequency;
@ -1202,7 +1204,7 @@ int sbc_get_frame_duration(sbc_t *sbc)
return (1000000 * blocks * subbands) / frequency; return (1000000 * blocks * subbands) / frequency;
} }
uint16_t sbc_get_codesize(sbc_t *sbc) size_t sbc_get_codesize(sbc_t *sbc)
{ {
uint16_t subbands, channels, blocks; uint16_t subbands, channels, blocks;
struct sbc_priv *priv; struct sbc_priv *priv;

View file

@ -31,6 +31,7 @@ extern "C" {
#endif #endif
#include <stdint.h> #include <stdint.h>
#include <sys/types.h>
/* sampling frequency */ /* sampling frequency */
#define SBC_FREQ_16000 0x00 #define SBC_FREQ_16000 0x00
@ -84,11 +85,22 @@ int sbc_reinit(sbc_t *sbc, unsigned long flags);
int sbc_parse(sbc_t *sbc, void *input, int input_len); int sbc_parse(sbc_t *sbc, void *input, int input_len);
int sbc_decode(sbc_t *sbc, void *input, int input_len, void *output, int sbc_decode(sbc_t *sbc, void *input, int input_len, void *output,
int output_len, int *len); int output_len, int *len);
int sbc_encode(sbc_t *sbc, void *input, int input_len, void *output,
int output_len, int *written); /* Encodes ONE input block into ONE output block */
int sbc_get_frame_length(sbc_t *sbc); ssize_t sbc_encode(sbc_t *sbc,
int sbc_get_frame_duration(sbc_t *sbc); const void *input, size_t input_len,
uint16_t sbc_get_codesize(sbc_t *sbc); void *output, size_t output_len,
size_t *written);
/* Returns the output block size in bytes */
size_t sbc_get_frame_length(sbc_t *sbc);
/* Returns the time one input/output block takes to play in msec*/
unsigned sbc_get_frame_duration(sbc_t *sbc);
/* Returns the input block size in bytes */
size_t sbc_get_codesize(sbc_t *sbc);
const char *sbc_get_implementation_info(sbc_t *sbc); const char *sbc_get_implementation_info(sbc_t *sbc);
void sbc_finish(sbc_t *sbc); void sbc_finish(sbc_t *sbc);