summaryrefslogtreecommitdiff
path: root/src/bimu
diff options
context:
space:
mode:
Diffstat (limited to 'src/bimu')
-rw-r--r--src/bimu/client.c5
-rw-r--r--src/bimu/client.h6
-rw-r--r--src/bimu/handler.h8
-rw-r--r--src/bimu/handlers/codec_server.c6
-rw-r--r--src/bimu/server.c4
-rw-r--r--src/bimu/server.h6
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;