diff options
Diffstat (limited to 'src/bimu')
| -rw-r--r-- | src/bimu/client.c | 5 | ||||
| -rw-r--r-- | src/bimu/client.h | 6 | ||||
| -rw-r--r-- | src/bimu/handler.h | 8 | ||||
| -rw-r--r-- | src/bimu/handlers/codec_server.c | 6 | ||||
| -rw-r--r-- | src/bimu/server.c | 4 | ||||
| -rw-r--r-- | src/bimu/server.h | 6 |
6 files changed, 18 insertions, 17 deletions
diff --git a/src/bimu/client.c b/src/bimu/client.c index 8a72753..c592906 100644 --- a/src/bimu/client.c +++ b/src/bimu/client.c @@ -2,7 +2,10 @@ #include "../codec/libav/packet_ext.h" +#include "handlers/codec.h" + #include "client.h" +#include "common.h" static void data_connection_callback(void *userdata, struct aki_packet_stream *stream) { @@ -109,7 +112,7 @@ static void control_connection_closed_callback(void *userdata, struct aki_packet static void parse_info_packet(struct bmu_client *client, struct aki_packet *packet) { - client->duration = aki_packet_read_s64(packet); + client->duration = aki_packet_read_u64(packet); u32 count = aki_packet_read_u32(packet); for (u32 i = 0; i < count; i++) { struct bmu_client_stream *stream = al_alloc_object(struct bmu_client_stream); diff --git a/src/bimu/client.h b/src/bimu/client.h index 0ebf282..8c9803b 100644 --- a/src/bimu/client.h +++ b/src/bimu/client.h @@ -3,9 +3,7 @@ #include <al/types.h> #include <aki/packet_stream.h> -#include "handlers/codec.h" - -#include "common.h" +#include "../codec/codec.h" struct bmu_client_stream { u8 type; @@ -23,7 +21,7 @@ struct bmu_client { struct aki_packet_stream control; struct aki_packet_stream data; bool corked; - s64 duration; + u64 duration; array(s32) subscribed; array(struct bmu_client_stream *) streams; void (*callback)(void *, u8, struct bmu_client_stream *stream, void *); diff --git a/src/bimu/handler.h b/src/bimu/handler.h index 9b9d348..3646dd6 100644 --- a/src/bimu/handler.h +++ b/src/bimu/handler.h @@ -9,8 +9,8 @@ struct bmu_server_handler { bool (*init)(struct bmu_server_handler *, struct cch_handle *, struct aki_packet_pool *); void (*write_info)(struct bmu_server_handler *, struct aki_packet *); void (*subscribe)(struct bmu_server_handler *, s32, bool); - s64 (*get_duration)(struct bmu_server_handler *); - bool (*seek)(struct bmu_server_handler *, s64); + u64 (*get_duration)(struct bmu_server_handler *); + bool (*seek)(struct bmu_server_handler *, u64); bool (*step)(struct bmu_server_handler *); void (*free)(struct bmu_server_handler **); void *userdata; @@ -23,8 +23,8 @@ enum { }; enum { - BIMU_CLIENT_SET = 0, - BIMU_CLIENT_CONFIGURE, + BIMU_CLIENT_CONFIGURE = 0, + BIMU_CLIENT_SET, BIMU_CLIENT_DATA, BIMU_CLIENT_REMOVE_BUFFERS, BIMU_CLIENT_EOF, diff --git a/src/bimu/handlers/codec_server.c b/src/bimu/handlers/codec_server.c index ca1c1b8..a30ce68 100644 --- a/src/bimu/handlers/codec_server.c +++ b/src/bimu/handlers/codec_server.c @@ -30,7 +30,7 @@ static bool codec_server_init(struct bmu_server_handler *handler, struct cch_han static void codec_server_write_info(struct bmu_server_handler *handler, struct aki_packet *packet) { struct bmu_codec_server *codec = (struct bmu_codec_server *)handler; - aki_packet_write_s64(packet, codec->demux->get_duration(codec->demux)); + aki_packet_write_u64(packet, codec->demux->get_duration(codec->demux)); aki_packet_write_u32(packet, codec->demux->streams.size); struct camu_stream *stream; al_array_foreach_ptr(codec->demux->streams, i, stream) { @@ -58,13 +58,13 @@ static void codec_server_subscribe(struct bmu_server_handler *handler, s32 index } } -static s64 codec_server_get_duration(struct bmu_server_handler *handler) +static u64 codec_server_get_duration(struct bmu_server_handler *handler) { struct bmu_codec_server *codec = (struct bmu_codec_server *)handler; return codec->demux->get_duration(codec->demux); } -static bool codec_server_seek(struct bmu_server_handler *handler, s64 pos) +static bool codec_server_seek(struct bmu_server_handler *handler, u64 pos) { struct bmu_codec_server *codec = (struct bmu_codec_server *)handler; return codec->demux->seek(codec->demux, pos); diff --git a/src/bimu/server.c b/src/bimu/server.c index b823827..e1aedce 100644 --- a/src/bimu/server.c +++ b/src/bimu/server.c @@ -86,7 +86,7 @@ static void send_start_packet(struct bmu_node_connection *connection) struct aki_packet *packet = aki_packet_create(); aki_packet_write_u8(packet, BIMU_CONTROL_START); u64 ts = aki_get_timestamp() - START_DELAY; - s64 seek_pos = connection->node->seek_pos; + u64 seek_pos = connection->node->seek_pos; if (!connection->node->paused) { if (connection->node->start >= 0) { if ((ts - DELAY_GIVE) < (u64)connection->node->start) { @@ -98,7 +98,7 @@ static void send_start_packet(struct bmu_node_connection *connection) connection->node->start = ts; } } - s64 duration = connection->handler->get_duration(connection->handler); + u64 duration = connection->handler->get_duration(connection->handler); if (seek_pos > duration) seek_pos = duration; // -1 signals to not call seek. We have to distinguish between a seek to 0 // and the start of a stream. diff --git a/src/bimu/server.h b/src/bimu/server.h index d954fa9..09fed99 100644 --- a/src/bimu/server.h +++ b/src/bimu/server.h @@ -25,7 +25,7 @@ struct bmu_node_connection { struct aki_packet_pool pool; s32 running; u8 paused; - s64 seek_pos; + u64 seek_pos; struct cch_handle handle; struct bmu_server_handler *handler; struct aki_thread thread; @@ -35,8 +35,8 @@ struct bmu_node { u16 id; struct cch_entry *entry; bool paused; - s64 start; - s64 seek_pos; + u64 start; + u64 seek_pos; u16 connection_id; array(struct bmu_node_connection *) connections; struct bmu_server *server; |