mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2026-10-26 14:00:08 +00:00
Merge tag 'v2.4.5' into raspbian/stretch
This commit is contained in:
commit
06809bf331
7 files changed
+66
-88
No files matched your search
+39
-61
@@ -1,8 +1,8 @@
|
|||||||
cmake_minimum_required(VERSION 3.1)
|
cmake_minimum_required(VERSION 3.1)
|
||||||
project(moonlight-embedded VERSION 2.4.4 LANGUAGES C)
|
project(moonlight-embedded VERSION 2.4.5 LANGUAGES C)
|
||||||
SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
|
||||||
|
SET(CMAKE_C_STANDARD 99)
|
||||||
include(${CMAKE_ROOT}/Modules/GNUInstallDirs.cmake)
|
include(${CMAKE_ROOT}/Modules/GNUInstallDirs.cmake)
|
||||||
set_property(GLOBAL PROPERTY C_STANDARD 99)
|
|
||||||
|
|
||||||
aux_source_directory(./src SRC_LIST)
|
aux_source_directory(./src SRC_LIST)
|
||||||
list(APPEND SRC_LIST ./src/input/evdev.c ./src/input/mapping.c ./src/input/udev.c)
|
list(APPEND SRC_LIST ./src/input/evdev.c ./src/input/mapping.c ./src/input/udev.c)
|
||||||
@@ -52,55 +52,6 @@ endif()
|
|||||||
SET(MOONLIGHT_COMMON_INCLUDE_DIR ./third_party/moonlight-common-c/src)
|
SET(MOONLIGHT_COMMON_INCLUDE_DIR ./third_party/moonlight-common-c/src)
|
||||||
SET(GAMESTREAM_INCLUDE_DIR ./libgamestream)
|
SET(GAMESTREAM_INCLUDE_DIR ./libgamestream)
|
||||||
|
|
||||||
if(NOT AMLOGIC_FOUND AND NOT BROADCOM_FOUND AND NOT FREESCALE_FOUND AND NOT SOFTWARE_FOUND)
|
|
||||||
message(FATAL_ERROR "No video output available")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (SOFTWARE_FOUND)
|
|
||||||
list(APPEND SRC_LIST ./src/video/ffmpeg.c)
|
|
||||||
if (SDL_FOUND)
|
|
||||||
list(APPEND SRC_LIST ./src/video/sdl.c ./src/audio/sdl.c ./src/input/sdl.c)
|
|
||||||
list(APPEND MOONLIGHT_DEFINITIONS HAVE_SDL)
|
|
||||||
list(APPEND MOONLIGHT_OPTIONS SDL)
|
|
||||||
endif()
|
|
||||||
if (X11_FOUND)
|
|
||||||
list(APPEND SRC_LIST ./src/video/x11.c ./src/video/egl.c ./src/input/x11.c)
|
|
||||||
list(APPEND MOONLIGHT_DEFINITIONS HAVE_X11)
|
|
||||||
list(APPEND MOONLIGHT_OPTIONS X11)
|
|
||||||
endif()
|
|
||||||
if(VDPAU_ACCEL_FOUND)
|
|
||||||
list(APPEND SRC_LIST ./src/video/ffmpeg_vdpau.c)
|
|
||||||
list(APPEND MOONLIGHT_DEFINITIONS HAVE_VDPAU)
|
|
||||||
list(APPEND MOONLIGHT_OPTIONS VDPAU)
|
|
||||||
endif()
|
|
||||||
if(VA_ACCEL_FOUND)
|
|
||||||
list(APPEND SRC_LIST ./src/video/ffmpeg_vaapi.c)
|
|
||||||
list(APPEND MOONLIGHT_DEFINITIONS HAVE_VAAPI)
|
|
||||||
list(APPEND MOONLIGHT_OPTIONS VAAPI)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (AMLOGIC_FOUND OR BROADCOM_FOUND OR FREESCALE_FOUND OR X11_FOUND)
|
|
||||||
list(APPEND MOONLIGHT_DEFINITIONS HAVE_EMBEDDED)
|
|
||||||
list(APPEND MOONLIGHT_OPTIONS EMBEDDED)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ALSA_FOUND)
|
|
||||||
list(APPEND SRC_LIST ./src/audio/alsa.c)
|
|
||||||
list(APPEND MOONLIGHT_DEFINITIONS HAVE_ALSA)
|
|
||||||
list(APPEND MOONLIGHT_OPTIONS ALSA)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (PULSE_FOUND)
|
|
||||||
list(APPEND SRC_LIST ./src/audio/pulse.c)
|
|
||||||
list(APPEND MOONLIGHT_DEFINITIONS HAVE_PULSE)
|
|
||||||
list(APPEND MOONLIGHT_OPTIONS PULSE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (CEC_FOUND)
|
|
||||||
list(APPEND SRC_LIST ./src/input/cec.c)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include_directories("${PROJECT_BINARY_DIR}")
|
include_directories("${PROJECT_BINARY_DIR}")
|
||||||
|
|
||||||
add_subdirectory(libgamestream)
|
add_subdirectory(libgamestream)
|
||||||
@@ -111,6 +62,7 @@ target_link_libraries(moonlight gamestream)
|
|||||||
if (CEC_FOUND)
|
if (CEC_FOUND)
|
||||||
list(APPEND MOONLIGHT_DEFINITIONS HAVE_LIBCEC)
|
list(APPEND MOONLIGHT_DEFINITIONS HAVE_LIBCEC)
|
||||||
list(APPEND MOONLIGHT_OPTIONS CEC)
|
list(APPEND MOONLIGHT_OPTIONS CEC)
|
||||||
|
target_sources(moonlight PRIVATE ./src/input/cec.c)
|
||||||
target_include_directories(moonlight PRIVATE ./third_party/libcec ${CEC_INCLUDE_DIRS})
|
target_include_directories(moonlight PRIVATE ./third_party/libcec ${CEC_INCLUDE_DIRS})
|
||||||
target_link_libraries(moonlight ${CEC_LIBRARIES})
|
target_link_libraries(moonlight ${CEC_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
@@ -145,39 +97,65 @@ if(FREESCALE_FOUND)
|
|||||||
install(TARGETS moonlight-imx DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
install(TARGETS moonlight-imx DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(SDL_FOUND)
|
|
||||||
target_include_directories(moonlight PRIVATE ${SDL_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(moonlight ${SDL_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(X11_FOUND)
|
|
||||||
target_include_directories(moonlight PRIVATE ${XLIB_INCLUDE_DIRS} ${EGL_INCLUDE_DIRS} ${GLES_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(moonlight ${XLIB_LIBRARIES} ${EGL_LIBRARIES} ${GLES_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (SOFTWARE_FOUND)
|
if (SOFTWARE_FOUND)
|
||||||
|
target_sources(moonlight PRIVATE ./src/video/ffmpeg.c)
|
||||||
target_include_directories(moonlight PRIVATE ${AVCODEC_INCLUDE_DIRS} ${AVUTIL_INCLUDE_DIRS})
|
target_include_directories(moonlight PRIVATE ${AVCODEC_INCLUDE_DIRS} ${AVUTIL_INCLUDE_DIRS})
|
||||||
target_link_libraries(moonlight ${AVCODEC_LIBRARIES} ${AVUTIL_LIBRARIES})
|
target_link_libraries(moonlight ${AVCODEC_LIBRARIES} ${AVUTIL_LIBRARIES})
|
||||||
|
if(SDL_FOUND)
|
||||||
|
list(APPEND MOONLIGHT_DEFINITIONS HAVE_SDL)
|
||||||
|
list(APPEND MOONLIGHT_OPTIONS SDL)
|
||||||
|
target_sources(moonlight PRIVATE ./src/video/sdl.c ./src/audio/sdl.c ./src/input/sdl.c)
|
||||||
|
target_include_directories(moonlight PRIVATE ${SDL_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(moonlight ${SDL_LIBRARIES})
|
||||||
|
endif()
|
||||||
|
if(X11_FOUND)
|
||||||
|
list(APPEND MOONLIGHT_DEFINITIONS HAVE_X11)
|
||||||
|
list(APPEND MOONLIGHT_OPTIONS X11)
|
||||||
|
target_sources(moonlight PRIVATE ./src/video/x11.c ./src/video/egl.c ./src/input/x11.c)
|
||||||
|
target_include_directories(moonlight PRIVATE ${XLIB_INCLUDE_DIRS} ${EGL_INCLUDE_DIRS} ${GLES_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(moonlight ${XLIB_LIBRARIES} ${EGL_LIBRARIES} ${GLES_LIBRARIES})
|
||||||
|
endif()
|
||||||
if(VDPAU_ACCEL_FOUND)
|
if(VDPAU_ACCEL_FOUND)
|
||||||
|
list(APPEND MOONLIGHT_DEFINITIONS HAVE_VDPAU)
|
||||||
|
list(APPEND MOONLIGHT_OPTIONS VDPAU)
|
||||||
|
target_sources(moonlight PRIVATE ./src/video/ffmpeg_vdpau.c)
|
||||||
target_include_directories(moonlight PRIVATE ${VDPAU_INCLUDE_DIRS})
|
target_include_directories(moonlight PRIVATE ${VDPAU_INCLUDE_DIRS})
|
||||||
target_link_libraries(moonlight ${VDPAU_LIBRARIES})
|
target_link_libraries(moonlight ${VDPAU_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
if(VA_ACCEL_FOUND)
|
if(VA_ACCEL_FOUND)
|
||||||
|
list(APPEND MOONLIGHT_DEFINITIONS HAVE_VAAPI)
|
||||||
|
list(APPEND MOONLIGHT_OPTIONS VAAPI)
|
||||||
|
target_sources(moonlight PRIVATE ./src/video/ffmpeg_vaapi.c)
|
||||||
target_include_directories(moonlight PRIVATE ${LIBVA_INCLUDE_DIRS} ${LIBVA_X11_INCLUDE_DIRS})
|
target_include_directories(moonlight PRIVATE ${LIBVA_INCLUDE_DIRS} ${LIBVA_X11_INCLUDE_DIRS})
|
||||||
target_link_libraries(moonlight ${LIBVA_LIBRARIES} ${LIBVA_X11_LIBRARIES})
|
target_link_libraries(moonlight ${LIBVA_LIBRARIES} ${LIBVA_X11_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ALSA_FOUND)
|
if (ALSA_FOUND)
|
||||||
|
list(APPEND MOONLIGHT_DEFINITIONS HAVE_ALSA)
|
||||||
|
list(APPEND MOONLIGHT_OPTIONS ALSA)
|
||||||
|
target_sources(moonlight PRIVATE ./src/audio/alsa.c)
|
||||||
target_include_directories(moonlight PRIVATE ${ALSA_INCLUDE_DIR})
|
target_include_directories(moonlight PRIVATE ${ALSA_INCLUDE_DIR})
|
||||||
target_link_libraries(moonlight ${ALSA_LIBRARY})
|
target_link_libraries(moonlight ${ALSA_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (PULSE_FOUND)
|
if (PULSE_FOUND)
|
||||||
|
list(APPEND MOONLIGHT_DEFINITIONS HAVE_PULSE)
|
||||||
|
list(APPEND MOONLIGHT_OPTIONS PULSE)
|
||||||
|
target_sources(moonlight PRIVATE ./src/audio/pulse.c)
|
||||||
target_include_directories(moonlight PRIVATE ${PULSE_INCLUDE_DIRS})
|
target_include_directories(moonlight PRIVATE ${PULSE_INCLUDE_DIRS})
|
||||||
target_link_libraries(moonlight ${PULSE_LIBRARIES})
|
target_link_libraries(moonlight ${PULSE_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (AMLOGIC_FOUND OR BROADCOM_FOUND OR FREESCALE_FOUND OR X11_FOUND)
|
||||||
|
list(APPEND MOONLIGHT_DEFINITIONS HAVE_EMBEDDED)
|
||||||
|
list(APPEND MOONLIGHT_OPTIONS EMBEDDED)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(NOT AMLOGIC_FOUND AND NOT BROADCOM_FOUND AND NOT FREESCALE_FOUND AND NOT SOFTWARE_FOUND)
|
||||||
|
message(FATAL_ERROR "No video output available")
|
||||||
|
endif()
|
||||||
|
|
||||||
configure_file("./src/configuration.h.in" "${PROJECT_BINARY_DIR}/configuration.h")
|
configure_file("./src/configuration.h.in" "${PROJECT_BINARY_DIR}/configuration.h")
|
||||||
|
|
||||||
set_property(TARGET moonlight PROPERTY COMPILE_DEFINITIONS ${MOONLIGHT_DEFINITIONS})
|
set_property(TARGET moonlight PROPERTY COMPILE_DEFINITIONS ${MOONLIGHT_DEFINITIONS})
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
set(SO_VERSION 2)
|
set(SO_VERSION 2)
|
||||||
set_property(GLOBAL PROPERTY C_STANDARD 99)
|
|
||||||
|
|
||||||
find_package(LibUUID REQUIRED)
|
find_package(LibUUID REQUIRED)
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
|
|||||||
+23
-21
@@ -22,6 +22,7 @@
|
|||||||
#include "mkcert.h"
|
#include "mkcert.h"
|
||||||
#include "client.h"
|
#include "client.h"
|
||||||
#include "errors.h"
|
#include "errors.h"
|
||||||
|
#include "limits.h"
|
||||||
|
|
||||||
#include <Limelight.h>
|
#include <Limelight.h>
|
||||||
|
|
||||||
@@ -58,12 +59,13 @@ static EVP_PKEY *privateKey;
|
|||||||
const char* gs_error;
|
const char* gs_error;
|
||||||
|
|
||||||
static int mkdirtree(const char* directory) {
|
static int mkdirtree(const char* directory) {
|
||||||
char buffer[1024];
|
char buffer[PATH_MAX];
|
||||||
char* p = buffer;
|
char* p = buffer;
|
||||||
|
|
||||||
// The passed in string could be a string literal
|
// The passed in string could be a string literal
|
||||||
// so we must copy it first
|
// so we must copy it first
|
||||||
strcpy(p, directory);
|
strncpy(p, directory, PATH_MAX - 1);
|
||||||
|
buffer[PATH_MAX - 1] = '\0';
|
||||||
|
|
||||||
while (*p != 0) {
|
while (*p != 0) {
|
||||||
// Find the end of the path element
|
// Find the end of the path element
|
||||||
@@ -86,8 +88,8 @@ static int mkdirtree(const char* directory) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int load_unique_id(const char* keyDirectory) {
|
static int load_unique_id(const char* keyDirectory) {
|
||||||
char uniqueFilePath[4096];
|
char uniqueFilePath[PATH_MAX];
|
||||||
sprintf(uniqueFilePath, "%s/%s", keyDirectory, UNIQUE_FILE_NAME);
|
snprintf(uniqueFilePath, PATH_MAX, "%s/%s", keyDirectory, UNIQUE_FILE_NAME);
|
||||||
|
|
||||||
FILE *fd = fopen(uniqueFilePath, "r");
|
FILE *fd = fopen(uniqueFilePath, "r");
|
||||||
if (fd == NULL) {
|
if (fd == NULL) {
|
||||||
@@ -111,11 +113,11 @@ static int load_unique_id(const char* keyDirectory) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int load_cert(const char* keyDirectory) {
|
static int load_cert(const char* keyDirectory) {
|
||||||
char certificateFilePath[4096];
|
char certificateFilePath[PATH_MAX];
|
||||||
sprintf(certificateFilePath, "%s/%s", keyDirectory, CERTIFICATE_FILE_NAME);
|
snprintf(certificateFilePath, PATH_MAX, "%s/%s", keyDirectory, CERTIFICATE_FILE_NAME);
|
||||||
|
|
||||||
char keyFilePath[4096];
|
char keyFilePath[PATH_MAX];
|
||||||
sprintf(&keyFilePath[0], "%s/%s", keyDirectory, KEY_FILE_NAME);
|
snprintf(&keyFilePath[0], PATH_MAX, "%s/%s", keyDirectory, KEY_FILE_NAME);
|
||||||
|
|
||||||
FILE *fd = fopen(certificateFilePath, "r");
|
FILE *fd = fopen(certificateFilePath, "r");
|
||||||
if (fd == NULL) {
|
if (fd == NULL) {
|
||||||
@@ -123,8 +125,8 @@ static int load_cert(const char* keyDirectory) {
|
|||||||
CERT_KEY_PAIR cert = mkcert_generate();
|
CERT_KEY_PAIR cert = mkcert_generate();
|
||||||
printf("done\n");
|
printf("done\n");
|
||||||
|
|
||||||
char p12FilePath[4096];
|
char p12FilePath[PATH_MAX];
|
||||||
sprintf(p12FilePath, "%s/%s", keyDirectory, P12_FILE_NAME);
|
snprintf(p12FilePath, PATH_MAX, "%s/%s", keyDirectory, P12_FILE_NAME);
|
||||||
|
|
||||||
mkcert_save(certificateFilePath, p12FilePath, keyFilePath, cert);
|
mkcert_save(certificateFilePath, p12FilePath, keyFilePath, cert);
|
||||||
mkcert_free(cert);
|
mkcert_free(cert);
|
||||||
@@ -190,7 +192,7 @@ static int load_server_status(PSERVER_DATA server) {
|
|||||||
// is not already paired. Since we can't pair without knowing the server version, we
|
// is not already paired. Since we can't pair without knowing the server version, we
|
||||||
// make another request over HTTP if the HTTPS request fails. We can't just use HTTP
|
// make another request over HTTP if the HTTPS request fails. We can't just use HTTP
|
||||||
// for everything because it doesn't accurately tell us if we're paired.
|
// for everything because it doesn't accurately tell us if we're paired.
|
||||||
sprintf(url, "%s://%s:%d/serverinfo?uniqueid=%s&uuid=%s",
|
snprintf(url, sizeof(url), "%s://%s:%d/serverinfo?uniqueid=%s&uuid=%s",
|
||||||
i == 0 ? "https" : "http", server->serverInfo.address, i == 0 ? 47984 : 47989, unique_id, uuid_str);
|
i == 0 ? "https" : "http", server->serverInfo.address, i == 0 ? 47984 : 47989, unique_id, uuid_str);
|
||||||
|
|
||||||
PHTTP_DATA data = http_create_data();
|
PHTTP_DATA data = http_create_data();
|
||||||
@@ -375,7 +377,7 @@ int gs_unpair(PSERVER_DATA server) {
|
|||||||
|
|
||||||
uuid_generate_random(uuid);
|
uuid_generate_random(uuid);
|
||||||
uuid_unparse(uuid, uuid_str);
|
uuid_unparse(uuid, uuid_str);
|
||||||
sprintf(url, "http://%s:47989/unpair?uniqueid=%s&uuid=%s", server->serverInfo.address, unique_id, uuid_str);
|
snprintf(url, sizeof(url), "http://%s:47989/unpair?uniqueid=%s&uuid=%s", server->serverInfo.address, unique_id, uuid_str);
|
||||||
ret = http_request(url, data);
|
ret = http_request(url, data);
|
||||||
|
|
||||||
http_free_data(data);
|
http_free_data(data);
|
||||||
@@ -406,7 +408,7 @@ int gs_pair(PSERVER_DATA server, char* pin) {
|
|||||||
|
|
||||||
uuid_generate_random(uuid);
|
uuid_generate_random(uuid);
|
||||||
uuid_unparse(uuid, uuid_str);
|
uuid_unparse(uuid, uuid_str);
|
||||||
sprintf(url, "http://%s:47989/pair?uniqueid=%s&uuid=%s&devicename=roth&updateState=1&phrase=getservercert&salt=%s&clientcert=%s", server->serverInfo.address, unique_id, uuid_str, salt_hex, cert_hex);
|
snprintf(url, sizeof(url), "http://%s:47989/pair?uniqueid=%s&uuid=%s&devicename=roth&updateState=1&phrase=getservercert&salt=%s&clientcert=%s", server->serverInfo.address, unique_id, uuid_str, salt_hex, cert_hex);
|
||||||
PHTTP_DATA data = http_create_data();
|
PHTTP_DATA data = http_create_data();
|
||||||
if (data == NULL)
|
if (data == NULL)
|
||||||
return GS_OUT_OF_MEMORY;
|
return GS_OUT_OF_MEMORY;
|
||||||
@@ -465,7 +467,7 @@ int gs_pair(PSERVER_DATA server, char* pin) {
|
|||||||
|
|
||||||
uuid_generate_random(uuid);
|
uuid_generate_random(uuid);
|
||||||
uuid_unparse(uuid, uuid_str);
|
uuid_unparse(uuid, uuid_str);
|
||||||
sprintf(url, "http://%s:47989/pair?uniqueid=%s&uuid=%s&devicename=roth&updateState=1&clientchallenge=%s", server->serverInfo.address, unique_id, uuid_str, challenge_hex);
|
snprintf(url, sizeof(url), "http://%s:47989/pair?uniqueid=%s&uuid=%s&devicename=roth&updateState=1&clientchallenge=%s", server->serverInfo.address, unique_id, uuid_str, challenge_hex);
|
||||||
if ((ret = http_request(url, data)) != GS_OK)
|
if ((ret = http_request(url, data)) != GS_OK)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@@ -524,7 +526,7 @@ int gs_pair(PSERVER_DATA server, char* pin) {
|
|||||||
|
|
||||||
uuid_generate_random(uuid);
|
uuid_generate_random(uuid);
|
||||||
uuid_unparse(uuid, uuid_str);
|
uuid_unparse(uuid, uuid_str);
|
||||||
sprintf(url, "http://%s:47989/pair?uniqueid=%s&uuid=%s&devicename=roth&updateState=1&serverchallengeresp=%s", server->serverInfo.address, unique_id, uuid_str, challenge_response_hex);
|
snprintf(url, sizeof(url), "http://%s:47989/pair?uniqueid=%s&uuid=%s&devicename=roth&updateState=1&serverchallengeresp=%s", server->serverInfo.address, unique_id, uuid_str, challenge_response_hex);
|
||||||
if ((ret = http_request(url, data)) != GS_OK)
|
if ((ret = http_request(url, data)) != GS_OK)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@@ -575,7 +577,7 @@ int gs_pair(PSERVER_DATA server, char* pin) {
|
|||||||
|
|
||||||
uuid_generate_random(uuid);
|
uuid_generate_random(uuid);
|
||||||
uuid_unparse(uuid, uuid_str);
|
uuid_unparse(uuid, uuid_str);
|
||||||
sprintf(url, "http://%s:47989/pair?uniqueid=%s&uuid=%s&devicename=roth&updateState=1&clientpairingsecret=%s", server->serverInfo.address, unique_id, uuid_str, client_pairing_secret_hex);
|
snprintf(url, sizeof(url), "http://%s:47989/pair?uniqueid=%s&uuid=%s&devicename=roth&updateState=1&clientpairingsecret=%s", server->serverInfo.address, unique_id, uuid_str, client_pairing_secret_hex);
|
||||||
if ((ret = http_request(url, data)) != GS_OK)
|
if ((ret = http_request(url, data)) != GS_OK)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@@ -594,7 +596,7 @@ int gs_pair(PSERVER_DATA server, char* pin) {
|
|||||||
|
|
||||||
uuid_generate_random(uuid);
|
uuid_generate_random(uuid);
|
||||||
uuid_unparse(uuid, uuid_str);
|
uuid_unparse(uuid, uuid_str);
|
||||||
sprintf(url, "https://%s:47984/pair?uniqueid=%s&uuid=%s&devicename=roth&updateState=1&phrase=pairchallenge", server->serverInfo.address, unique_id, uuid_str);
|
snprintf(url, sizeof(url), "https://%s:47984/pair?uniqueid=%s&uuid=%s&devicename=roth&updateState=1&phrase=pairchallenge", server->serverInfo.address, unique_id, uuid_str);
|
||||||
if ((ret = http_request(url, data)) != GS_OK)
|
if ((ret = http_request(url, data)) != GS_OK)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
@@ -636,7 +638,7 @@ int gs_applist(PSERVER_DATA server, PAPP_LIST *list) {
|
|||||||
|
|
||||||
uuid_generate_random(uuid);
|
uuid_generate_random(uuid);
|
||||||
uuid_unparse(uuid, uuid_str);
|
uuid_unparse(uuid, uuid_str);
|
||||||
sprintf(url, "https://%s:47984/applist?uniqueid=%s&uuid=%s", server->serverInfo.address, unique_id, uuid_str);
|
snprintf(url, sizeof(url), "https://%s:47984/applist?uniqueid=%s&uuid=%s", server->serverInfo.address, unique_id, uuid_str);
|
||||||
if (http_request(url, data) != GS_OK)
|
if (http_request(url, data) != GS_OK)
|
||||||
ret = GS_IO_ERROR;
|
ret = GS_IO_ERROR;
|
||||||
else if (xml_status(data->memory, data->size) == GS_ERROR)
|
else if (xml_status(data->memory, data->size) == GS_ERROR)
|
||||||
@@ -687,9 +689,9 @@ int gs_start_app(PSERVER_DATA server, STREAM_CONFIGURATION *config, int appId, b
|
|||||||
if (server->currentGame == 0) {
|
if (server->currentGame == 0) {
|
||||||
int channelCounnt = config->audioConfiguration == AUDIO_CONFIGURATION_STEREO ? CHANNEL_COUNT_STEREO : CHANNEL_COUNT_51_SURROUND;
|
int channelCounnt = config->audioConfiguration == AUDIO_CONFIGURATION_STEREO ? CHANNEL_COUNT_STEREO : CHANNEL_COUNT_51_SURROUND;
|
||||||
int mask = config->audioConfiguration == AUDIO_CONFIGURATION_STEREO ? CHANNEL_MASK_STEREO : CHANNEL_MASK_51_SURROUND;
|
int mask = config->audioConfiguration == AUDIO_CONFIGURATION_STEREO ? CHANNEL_MASK_STEREO : CHANNEL_MASK_51_SURROUND;
|
||||||
sprintf(url, "https://%s:47984/launch?uniqueid=%s&uuid=%s&appid=%d&mode=%dx%dx%d&additionalStates=1&sops=%d&rikey=%s&rikeyid=%d&localAudioPlayMode=%d&surroundAudioInfo=%d", server->serverInfo.address, unique_id, uuid_str, appId, config->width, config->height, config->fps, sops, rikey_hex, rikeyid, localaudio, (mask << 16) + channelCounnt);
|
snprintf(url, sizeof(url), "https://%s:47984/launch?uniqueid=%s&uuid=%s&appid=%d&mode=%dx%dx%d&additionalStates=1&sops=%d&rikey=%s&rikeyid=%d&localAudioPlayMode=%d&surroundAudioInfo=%d", server->serverInfo.address, unique_id, uuid_str, appId, config->width, config->height, config->fps, sops, rikey_hex, rikeyid, localaudio, (mask << 16) + channelCounnt);
|
||||||
} else
|
} else
|
||||||
sprintf(url, "https://%s:47984/resume?uniqueid=%s&uuid=%s&rikey=%s&rikeyid=%d", server->serverInfo.address, unique_id, uuid_str, rikey_hex, rikeyid);
|
snprintf(url, sizeof(url), "https://%s:47984/resume?uniqueid=%s&uuid=%s&rikey=%s&rikeyid=%d", server->serverInfo.address, unique_id, uuid_str, rikey_hex, rikeyid);
|
||||||
|
|
||||||
if ((ret = http_request(url, data)) == GS_OK)
|
if ((ret = http_request(url, data)) == GS_OK)
|
||||||
server->currentGame = appId;
|
server->currentGame = appId;
|
||||||
@@ -726,7 +728,7 @@ int gs_quit_app(PSERVER_DATA server) {
|
|||||||
|
|
||||||
uuid_generate_random(uuid);
|
uuid_generate_random(uuid);
|
||||||
uuid_unparse(uuid, uuid_str);
|
uuid_unparse(uuid, uuid_str);
|
||||||
sprintf(url, "https://%s:47984/cancel?uniqueid=%s&uuid=%s", server->serverInfo.address, unique_id, uuid_str);
|
snprintf(url, sizeof(url), "https://%s:47984/cancel?uniqueid=%s&uuid=%s", server->serverInfo.address, unique_id, uuid_str);
|
||||||
if ((ret = http_request(url, data)) != GS_OK)
|
if ((ret = http_request(url, data)) != GS_OK)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -389,7 +389,6 @@ static bool evdev_handle_mapping_event(struct input_event *ev, struct input_devi
|
|||||||
struct input_abs_parms parms;
|
struct input_abs_parms parms;
|
||||||
evdev_init_parms(dev, &parms, ev->code);
|
evdev_init_parms(dev, &parms, ev->code);
|
||||||
|
|
||||||
printf("%d: %d >< %d / %d\n", ev->code, ev->value, parms.avg + parms.range/2, parms.avg - parms.range/2);
|
|
||||||
if (ev->value > parms.avg + parms.range/2) {
|
if (ev->value > parms.avg + parms.range/2) {
|
||||||
*currentAbs = dev->abs_map[ev->code];
|
*currentAbs = dev->abs_map[ev->code];
|
||||||
*currentReverse = false;
|
*currentReverse = false;
|
||||||
@@ -419,7 +418,7 @@ static void evdev_drain(void) {
|
|||||||
|
|
||||||
static int evdev_handle(int fd) {
|
static int evdev_handle(int fd) {
|
||||||
for (int i=0;i<numDevices;i++) {
|
for (int i=0;i<numDevices;i++) {
|
||||||
if (devices[i].fd = fd) {
|
if (devices[i].fd == fd) {
|
||||||
int rc;
|
int rc;
|
||||||
struct input_event ev;
|
struct input_event ev;
|
||||||
while ((rc = libevdev_next_event(devices[i].dev, LIBEVDEV_READ_FLAG_NORMAL, &ev)) >= 0) {
|
while ((rc = libevdev_next_event(devices[i].dev, LIBEVDEV_READ_FLAG_NORMAL, &ev)) >= 0) {
|
||||||
|
|||||||
+1
-1
@@ -139,7 +139,7 @@ static void help() {
|
|||||||
printf("\tstream\t\t\tStream computer to device\n");
|
printf("\tstream\t\t\tStream computer to device\n");
|
||||||
printf("\tlist\t\t\tList available games and applications\n");
|
printf("\tlist\t\t\tList available games and applications\n");
|
||||||
printf("\tquit\t\t\tQuit the application or game being streamed\n");
|
printf("\tquit\t\t\tQuit the application or game being streamed\n");
|
||||||
printf("\tmap\t\t\tCreate mapping file for gamepad\n");
|
printf("\tmap\t\t\tCreate mapping for gamepad\n");
|
||||||
printf("\thelp\t\t\tShow this help\n");
|
printf("\thelp\t\t\tShow this help\n");
|
||||||
printf("\n Global Options\n\n");
|
printf("\n Global Options\n\n");
|
||||||
printf("\t-config <config>\tLoad configuration file\n");
|
printf("\t-config <config>\tLoad configuration file\n");
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
#include "ffmpeg_vdpau.h"
|
#include "ffmpeg_vdpau.h"
|
||||||
|
|
||||||
#include <vdpau/vdpau.h>
|
#include <vdpau/vdpau_x11.h>
|
||||||
#include <libavutil/pixfmt.h>
|
#include <libavutil/pixfmt.h>
|
||||||
#include <libavutil/imgutils.h>
|
#include <libavutil/imgutils.h>
|
||||||
#include <libavcodec/vdpau.h>
|
#include <libavcodec/vdpau.h>
|
||||||
|
|||||||
Vendored
+1
-1
Submodule third_party/moonlight-common-c updated: a1bdb36766...186cef0e3a.
Reference in new issue
Block a user