From cae6b4a56636de900b5fdbf166c79ba2bb3e05f4 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 8 Jun 2017 21:50:00 -0700 Subject: [PATCH] Update moonlight-common-c with latest bugfixes --- auddec.cpp | 14 ++++++++------ connectionlistener.cpp | 13 ++++++------- moonlight-common-c | 2 +- moonlight.hpp | 4 ++-- viddec.cpp | 14 ++++++++------ 5 files changed, 25 insertions(+), 22 deletions(-) diff --git a/auddec.cpp b/auddec.cpp index 0c19f14..bfbdc94 100644 --- a/auddec.cpp +++ b/auddec.cpp @@ -34,7 +34,7 @@ static void AudioPlayerSampleCallback(void* samples, uint32_t buffer_size, void* } } -void MoonlightInstance::AudDecInit(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig) { +int MoonlightInstance::AudDecInit(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig) { int rc; g_Instance->m_OpusDecoder = opus_multistream_decoder_create(opusConfig->sampleRate, @@ -49,6 +49,8 @@ void MoonlightInstance::AudDecInit(int audioConfiguration, POPUS_MULTISTREAM_CON // Start playback now g_Instance->m_AudioPlayer.StartPlayback(); + + return 0; } void MoonlightInstance::AudDecCleanup(void) { @@ -83,8 +85,8 @@ void MoonlightInstance::AudDecDecodeAndPlaySample(char* sampleData, int sampleLe } AUDIO_RENDERER_CALLBACKS MoonlightInstance::s_ArCallbacks = { - MoonlightInstance::AudDecInit, - MoonlightInstance::AudDecCleanup, - MoonlightInstance::AudDecDecodeAndPlaySample, - CAPABILITY_DIRECT_SUBMIT -}; \ No newline at end of file + .init = MoonlightInstance::AudDecInit, + .cleanup = MoonlightInstance::AudDecCleanup, + .decodeAndPlaySample = MoonlightInstance::AudDecDecodeAndPlaySample, + .capabilities = CAPABILITY_DIRECT_SUBMIT +}; diff --git a/connectionlistener.cpp b/connectionlistener.cpp index 73991d7..5aa0a33 100644 --- a/connectionlistener.cpp +++ b/connectionlistener.cpp @@ -39,11 +39,10 @@ void MoonlightInstance::ClDisplayTransientMessage(const char* message) { } CONNECTION_LISTENER_CALLBACKS MoonlightInstance::s_ClCallbacks = { - MoonlightInstance::ClStageStarting, - NULL, - MoonlightInstance::ClStageFailed, - MoonlightInstance::ClConnectionStarted, - MoonlightInstance::ClConnectionTerminated, - MoonlightInstance::ClDisplayMessage, - MoonlightInstance::ClDisplayTransientMessage + .stageStarting = MoonlightInstance::ClStageStarting, + .stageFailed = MoonlightInstance::ClStageFailed, + .connectionStarted = MoonlightInstance::ClConnectionStarted, + .connectionTerminated = MoonlightInstance::ClConnectionTerminated, + .displayMessage = MoonlightInstance::ClDisplayMessage, + .displayTransientMessage = MoonlightInstance::ClDisplayTransientMessage }; diff --git a/moonlight-common-c b/moonlight-common-c index 20821e7..c01deff 160000 --- a/moonlight-common-c +++ b/moonlight-common-c @@ -1 +1 @@ -Subproject commit 20821e7eb67000b76180e77a735a37abe6b66736 +Subproject commit c01deff683d9192a71f851815dbea4bba14e4f04 diff --git a/moonlight.hpp b/moonlight.hpp index 1aa3967..8309f28 100644 --- a/moonlight.hpp +++ b/moonlight.hpp @@ -125,11 +125,11 @@ class MoonlightInstance : public pp::Instance, public pp::MouseLock { bool InitializeRenderingSurface(int width, int height); void DidChangeFocus(bool got_focus); - static void VidDecSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags); + static int VidDecSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags); static void VidDecCleanup(void); static int VidDecSubmitDecodeUnit(PDECODE_UNIT decodeUnit); - static void AudDecInit(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig); + static int AudDecInit(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig); static void AudDecCleanup(void); static void AudDecDecodeAndPlaySample(char* sampleData, int sampleLength); diff --git a/viddec.cpp b/viddec.cpp index ecab06b..a1d005d 100644 --- a/viddec.cpp +++ b/viddec.cpp @@ -137,7 +137,7 @@ bool MoonlightInstance::InitializeRenderingSurface(int width, int height) { return true; } -void MoonlightInstance::VidDecSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags) { +int MoonlightInstance::VidDecSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags) { g_Instance->m_VideoDecoder = new pp::VideoDecoder(g_Instance); s_DecodeBufferLength = INITIAL_DECODE_BUFFER_LEN; @@ -176,7 +176,7 @@ void MoonlightInstance::VidDecSetup(int videoFormat, int width, int height, int // No decoders available at all. We can't continue. ClDisplayMessage("No hardware or software H.264 decoders available!"); g_Instance->StopConnection(); - return; + return -1; } else if (!(drFlags & DR_FLAG_FORCE_SW_DECODE)) { // Tell the user we had to fall back @@ -186,6 +186,8 @@ void MoonlightInstance::VidDecSetup(int videoFormat, int width, int height, int pp::Module::Get()->core()->CallOnMainThread(0, g_Instance->m_CallbackFactory.NewCallback(&MoonlightInstance::DispatchGetPicture)); + + return 0; } void MoonlightInstance::DispatchGetPicture(uint32_t unused) { @@ -485,8 +487,8 @@ void MoonlightInstance::PictureReady(int32_t result, PP_VideoPicture picture) { } DECODER_RENDERER_CALLBACKS MoonlightInstance::s_DrCallbacks = { - MoonlightInstance::VidDecSetup, - MoonlightInstance::VidDecCleanup, - MoonlightInstance::VidDecSubmitDecodeUnit, - CAPABILITY_SLICES_PER_FRAME(4) + .setup = MoonlightInstance::VidDecSetup, + .cleanup = MoonlightInstance::VidDecCleanup, + .submitDecodeUnit = MoonlightInstance::VidDecSubmitDecodeUnit, + .capabilities = CAPABILITY_SLICES_PER_FRAME(4) };