decoder/wavpack: move code to WavpackInput::ReadBytes()
This commit is contained in:
parent
65c135b451
commit
13b78d0d89
|
@ -333,6 +333,8 @@ struct WavpackInput {
|
||||||
|
|
||||||
constexpr WavpackInput(Decoder &_decoder, InputStream &_is)
|
constexpr WavpackInput(Decoder &_decoder, InputStream &_is)
|
||||||
:decoder(_decoder), is(_is), last_byte(EOF) {}
|
:decoder(_decoder), is(_is), last_byte(EOF) {}
|
||||||
|
|
||||||
|
int32_t ReadBytes(void *data, size_t bcount);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -347,13 +349,19 @@ wpin(void *id)
|
||||||
|
|
||||||
static int32_t
|
static int32_t
|
||||||
wavpack_input_read_bytes(void *id, void *data, int32_t bcount)
|
wavpack_input_read_bytes(void *id, void *data, int32_t bcount)
|
||||||
|
{
|
||||||
|
return wpin(id)->ReadBytes(data, bcount);
|
||||||
|
}
|
||||||
|
|
||||||
|
int32_t
|
||||||
|
WavpackInput::ReadBytes(void *data, size_t bcount)
|
||||||
{
|
{
|
||||||
uint8_t *buf = (uint8_t *)data;
|
uint8_t *buf = (uint8_t *)data;
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
|
|
||||||
if (wpin(id)->last_byte != EOF) {
|
if (last_byte != EOF) {
|
||||||
*buf++ = wpin(id)->last_byte;
|
*buf++ = last_byte;
|
||||||
wpin(id)->last_byte = EOF;
|
last_byte = EOF;
|
||||||
--bcount;
|
--bcount;
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
@ -361,9 +369,7 @@ wavpack_input_read_bytes(void *id, void *data, int32_t bcount)
|
||||||
/* wavpack fails if we return a partial read, so we just wait
|
/* wavpack fails if we return a partial read, so we just wait
|
||||||
until the buffer is full */
|
until the buffer is full */
|
||||||
while (bcount > 0) {
|
while (bcount > 0) {
|
||||||
size_t nbytes = decoder_read(
|
size_t nbytes = decoder_read(&decoder, is, buf, bcount);
|
||||||
&wpin(id)->decoder, wpin(id)->is, buf, bcount
|
|
||||||
);
|
|
||||||
if (nbytes == 0) {
|
if (nbytes == 0) {
|
||||||
/* EOF, error or a decoder command */
|
/* EOF, error or a decoder command */
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue