summaryrefslogtreecommitdiff
path: root/src/liana/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'src/liana/handlers')
-rw-r--r--src/liana/handlers/cdio_server.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/liana/handlers/cdio_server.c b/src/liana/handlers/cdio_server.c
index c67330d..65bd990 100644
--- a/src/liana/handlers/cdio_server.c
+++ b/src/liana/handlers/cdio_server.c
@@ -6,7 +6,7 @@
#include "cdio.h"
-#define SECTORS_PER_PACKET 8
+#define SAMPLES_PER_PACKET 128
static bool cdio_server_init(struct lia_server_handler *handler, struct cch_handle *handle)
{
@@ -75,7 +75,8 @@ static void cdio_server_step(struct lia_server_handler *handler)
static void cdio_server_write_packet(struct lia_server_handler *handler, struct nn_packet *packet)
{
struct lia_cdio_server *cdio = (struct lia_cdio_server *)handler;
- off_t size = CDIO_CD_FRAMESIZE_RAW * SECTORS_PER_PACKET;
+ size_t bps = camu_audio_format_bytes_per_sample(&cdio->fmt) * cdio->fmt.channel_count;
+ off_t size = bps * SAMPLES_PER_PACKET;
nn_buffer_ensure_space(&cdio->buffer, size);
s32 ret = cch_handle_read(cdio->handle, nn_buffer_get_ptr(&cdio->buffer, 0), size);
if (ret == CAMU_ERR_EOF) {
@@ -87,7 +88,8 @@ static void cdio_server_write_packet(struct lia_server_handler *handler, struct
nn_packet_write_u8(packet, LIANA_PACKET_DATA);
nn_packet_write_s32(packet, 0);
nn_packet_write_f64(packet, cdio->pts);
- s32 sample_count = ret / (camu_audio_format_bytes_per_sample(&cdio->fmt) * cdio->fmt.channel_count);
+ al_assert(ret % bps == 0);
+ s32 sample_count = ret / bps;
nn_packet_write_s32(packet, sample_count);
cdio->buffer.size = ret;
nn_packet_write_buffer(packet, &cdio->buffer);