summaryrefslogtreecommitdiff
path: root/src/liana
diff options
context:
space:
mode:
Diffstat (limited to 'src/liana')
-rw-r--r--src/liana/common.h1
-rw-r--r--src/liana/handlers/cdio_client.c2
-rw-r--r--src/liana/handlers/cdio_server.c2
-rw-r--r--src/liana/handlers/codec.h6
-rw-r--r--src/liana/handlers/codec_client.c8
-rw-r--r--src/liana/handlers/dvd_server.c2
-rw-r--r--src/liana/list.c7
-rw-r--r--src/liana/vcr.c9
8 files changed, 23 insertions, 14 deletions
diff --git a/src/liana/common.h b/src/liana/common.h
deleted file mode 100644
index 6f70f09..0000000
--- a/src/liana/common.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
diff --git a/src/liana/handlers/cdio_client.c b/src/liana/handlers/cdio_client.c
index 6d61e59..af93dcc 100644
--- a/src/liana/handlers/cdio_client.c
+++ b/src/liana/handlers/cdio_client.c
@@ -24,7 +24,7 @@ static bool cdio_client_handle_packet(struct lia_client_handler *handler, struct
frame->audio.sample_count = nn_packet_read_s32(packet);
struct nn_buffer buffer;
nn_packet_read_buffer(packet, &buffer);
- frame->data = al_malloc(buffer.size);
+ frame->data = (u8 *)al_malloc(buffer.size);
al_memcpy(frame->data, nn_buffer_get_ptr(&buffer, 0), buffer.size);
cdio->handler.callback(cdio->handler.userdata, LIANA_CLIENT_DATA, cdio->handler.stream, frame);
return true;
diff --git a/src/liana/handlers/cdio_server.c b/src/liana/handlers/cdio_server.c
index e1d574d..0fafae7 100644
--- a/src/liana/handlers/cdio_server.c
+++ b/src/liana/handlers/cdio_server.c
@@ -87,7 +87,7 @@ static void cdio_server_write_packet(struct lia_server_handler *handler, struct
nn_packet_write_f64(packet, cdio->pts);
s32 sample_count = ret / (camu_audio_format_bytes_per_sample(&cdio->fmt) * cdio->fmt.channel_count);
nn_packet_write_s32(packet, sample_count);
- nn_buffer_set_size(&cdio->buffer, ret);
+ cdio->buffer.size = ret;
nn_packet_write_buffer(packet, &cdio->buffer);
cdio->pts += camu_audio_format_samples_to_sec(&cdio->fmt, sample_count);
}
diff --git a/src/liana/handlers/codec.h b/src/liana/handlers/codec.h
index 696cbb8..be43f63 100644
--- a/src/liana/handlers/codec.h
+++ b/src/liana/handlers/codec.h
@@ -5,6 +5,12 @@
#include "../server.h"
#include "../handler.h"
+// FFmpeg Independence:
+// - [ ] CAMU_CODEC_* only for explicitly non-ffmpeg codecs.
+// - [ ] Map between av_guess_format() and CAMU_CODEC_
+// - [ ] Runtime selection.
+// - [ ] Audio support.
+
#ifdef LIANA_SERVER
struct lia_codec_server {
struct lia_server_handler handler;
diff --git a/src/liana/handlers/codec_client.c b/src/liana/handlers/codec_client.c
index b85fc43..267187f 100644
--- a/src/liana/handlers/codec_client.c
+++ b/src/liana/handlers/codec_client.c
@@ -39,8 +39,7 @@ static bool codec_client_init(struct lia_client_handler *handler, struct camu_re
#ifdef CAMU_HAVE_FFMPEG
static bool push_av_packet(struct lia_codec_client *codec, AVPacket *pkt)
{
- s32 ret = codec->dec->push_av_packet(codec->dec, pkt);
- return ret == CAMU_OK;
+ return codec->dec->push_av_packet(codec->dec, pkt) == CAMU_OK;
}
static void passthrough_subtitle(struct lia_codec_client *codec, AVPacket *pkt)
@@ -73,7 +72,7 @@ static bool codec_client_handle_packet(struct lia_client_handler *handler, struc
break;
#ifdef CAMU_HAVE_FFMPEG
case CAMU_FFMPEG_COMPAT:
- codec->dec->push_av_packet(codec->dec, NULL);
+ push_av_packet(codec, NULL);
break;
#endif
}
@@ -117,6 +116,9 @@ static bool codec_client_handle_packet(struct lia_client_handler *handler, struc
}
if (codec->dec) {
success = push_av_packet(codec, pkt);
+ if (!success) {
+ success = push_av_packet(codec, pkt);
+ }
} else {
passthrough_subtitle(codec, pkt);
success = true;
diff --git a/src/liana/handlers/dvd_server.c b/src/liana/handlers/dvd_server.c
index f564325..5a9c793 100644
--- a/src/liana/handlers/dvd_server.c
+++ b/src/liana/handlers/dvd_server.c
@@ -4,7 +4,7 @@
static s32 dvd_stream_read(void *userdata, void *buffer, s32 size)
{
struct lia_dvd_server *dvd = (struct lia_dvd_server *)userdata;
- return cch_handle_read(dvd->handle, buffer, size);
+ return cch_handle_read(dvd->handle, (u8 *)buffer, size);
}
static s32 dvd_stream_seek(void *userdata, u64 pos)
diff --git a/src/liana/list.c b/src/liana/list.c
index 2a1458f..610ee80 100644
--- a/src/liana/list.c
+++ b/src/liana/list.c
@@ -456,8 +456,8 @@ static bool handle_end(struct lia_list *list, u32 id, u32 reset_id)
// Looping:
// - Main issue is rolling back an entry that skipped onto queued
- // before it's looping state was synced.
- // - Maybe we can track which sink END comes from.
+ // before it's looping state was synced. Maybe we can track which
+ // sink END comes from.
if (reset_id != entry->reset_id) {
log_warn("Got end() with out of order or incorrect reset id, ignoring.");
@@ -815,7 +815,8 @@ void lia_list_clear(struct lia_list *list)
void lia_list_close(struct lia_list *list)
{
- // @TODO: Consider sinks being in use. Wait for list->sinks to be empty?
+ // @TODO: Consider sinks being in use.
+ // Wait for list->sinks to be empty?
struct lia_list_entry *entry;
al_array_foreach(list->entries, i, entry) {
entry_unload(list, entry);
diff --git a/src/liana/vcr.c b/src/liana/vcr.c
index 228d758..352fb03 100644
--- a/src/liana/vcr.c
+++ b/src/liana/vcr.c
@@ -66,7 +66,7 @@ static nn_thread_result NNWT_THREADCALL vcr_track_thread(void *userdata)
nn_thread_set_priority(NNWT_THREAD_SCHED_FIFO, 32);
struct lia_vcr_track *track = (struct lia_vcr_track *)userdata;
struct lia_vcr *vcr = track->vcr;
- const char thread_name[16]; // 16 = limit.
+ const char thread_name[16] = "\0"; // 16 = limit.
al_snprintf((char *)thread_name, sizeof(thread_name), "vcr:%hu", vcr->node_id);
nn_thread_set_name(thread_name);
@@ -298,7 +298,7 @@ void lia_vcr_push_packet(struct lia_vcr *vcr, struct nn_packet *packet)
break;
}
case LIANA_PACKET_EOF:
- case LIANA_PACKET_ERROR:
+ case LIANA_PACKET_ERROR: {
al_array_foreach(vcr->tracks, i, track) {
nn_packet_cache_send_packet(&track->cache, NULL);
}
@@ -311,6 +311,7 @@ void lia_vcr_push_packet(struct lia_vcr *vcr, struct nn_packet *packet)
log_warn("Forcing EOF because we got an error packet.");
}
break;
+ }
default:
log_warn("Erroneous packet.");
break;
@@ -332,8 +333,8 @@ void lia_vcr_uncork(struct lia_vcr_track *track)
{
if (al_atomic_load(s32)(&track->state, AL_ATOMIC_RELAXED) != VCR_TRACK_STOPPED) {
// We will get here during normal operation. Early returning is historically
- // tricky in vcr_uncork(). If I'm understanding correctly, asserting that cond_is_waiting()
- // just below means we are safe.
+ // tricky in vcr_uncork(). If I'm understanding correctly, asserting that
+ // cond_is_waiting() just below means we are safe.
return;
}
// Lock before setting track->state to avoid a race with cork().