mirror of
https://github.com/moonlight-stream/moonlight-embedded.git
synced 2025-08-17 00:46:13 +00:00
General codebase clean-ups (no code changes)
* Remove trailing spaces * Replace TABs with spaces * Add missing indentation
This commit is contained in:
parent
c8e090a5e1
commit
434dba31de
@ -345,24 +345,24 @@ static bool verifySignature(const char *data, int dataLength, char *signature, i
|
|||||||
BIO* bio = BIO_new(BIO_s_mem());
|
BIO* bio = BIO_new(BIO_s_mem());
|
||||||
BIO_puts(bio, cert);
|
BIO_puts(bio, cert);
|
||||||
x509 = PEM_read_bio_X509(bio, NULL, NULL, NULL);
|
x509 = PEM_read_bio_X509(bio, NULL, NULL, NULL);
|
||||||
|
|
||||||
BIO_free(bio);
|
BIO_free(bio);
|
||||||
|
|
||||||
if (!x509) {
|
if (!x509) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
EVP_PKEY* pubKey = X509_get_pubkey(x509);
|
EVP_PKEY* pubKey = X509_get_pubkey(x509);
|
||||||
EVP_MD_CTX *mdctx = NULL;
|
EVP_MD_CTX *mdctx = NULL;
|
||||||
mdctx = EVP_MD_CTX_create();
|
mdctx = EVP_MD_CTX_create();
|
||||||
EVP_DigestVerifyInit(mdctx, NULL, EVP_sha256(), NULL, pubKey);
|
EVP_DigestVerifyInit(mdctx, NULL, EVP_sha256(), NULL, pubKey);
|
||||||
EVP_DigestVerifyUpdate(mdctx, data, dataLength);
|
EVP_DigestVerifyUpdate(mdctx, data, dataLength);
|
||||||
int result = EVP_DigestVerifyFinal(mdctx, signature, signatureLength);
|
int result = EVP_DigestVerifyFinal(mdctx, signature, signatureLength);
|
||||||
|
|
||||||
X509_free(x509);
|
X509_free(x509);
|
||||||
EVP_PKEY_free(pubKey);
|
EVP_PKEY_free(pubKey);
|
||||||
EVP_MD_CTX_destroy(mdctx);
|
EVP_MD_CTX_destroy(mdctx);
|
||||||
|
|
||||||
return result > 0;
|
return result > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -618,7 +618,7 @@ int gs_pair(PSERVER_DATA server, char* pin) {
|
|||||||
cleanup:
|
cleanup:
|
||||||
if (ret != GS_OK)
|
if (ret != GS_OK)
|
||||||
gs_unpair(server);
|
gs_unpair(server);
|
||||||
|
|
||||||
if (result != NULL)
|
if (result != NULL)
|
||||||
free(result);
|
free(result);
|
||||||
|
|
||||||
|
@ -35,15 +35,15 @@ static size_t _write_curl(void *contents, size_t size, size_t nmemb, void *userp
|
|||||||
{
|
{
|
||||||
size_t realsize = size * nmemb;
|
size_t realsize = size * nmemb;
|
||||||
PHTTP_DATA mem = (PHTTP_DATA)userp;
|
PHTTP_DATA mem = (PHTTP_DATA)userp;
|
||||||
|
|
||||||
mem->memory = realloc(mem->memory, mem->size + realsize + 1);
|
mem->memory = realloc(mem->memory, mem->size + realsize + 1);
|
||||||
if(mem->memory == NULL)
|
if(mem->memory == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
memcpy(&(mem->memory[mem->size]), contents, realsize);
|
memcpy(&(mem->memory[mem->size]), contents, realsize);
|
||||||
mem->size += realsize;
|
mem->size += realsize;
|
||||||
mem->memory[mem->size] = 0;
|
mem->memory[mem->size] = 0;
|
||||||
|
|
||||||
return realsize;
|
return realsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ int http_request(char* url, PHTTP_DATA data) {
|
|||||||
data->size = 0;
|
data->size = 0;
|
||||||
}
|
}
|
||||||
CURLcode res = curl_easy_perform(curl);
|
CURLcode res = curl_easy_perform(curl);
|
||||||
|
|
||||||
if(res != CURLE_OK) {
|
if(res != CURLE_OK) {
|
||||||
gs_error = curl_easy_strerror(res);
|
gs_error = curl_easy_strerror(res);
|
||||||
return GS_FAILED;
|
return GS_FAILED;
|
||||||
@ -99,7 +99,7 @@ int http_request(char* url, PHTTP_DATA data) {
|
|||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
printf("Response:\n%s\n\n", data->memory);
|
printf("Response:\n%s\n\n", data->memory);
|
||||||
|
|
||||||
return GS_OK;
|
return GS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,13 +39,13 @@ CERT_KEY_PAIR mkcert_generate() {
|
|||||||
X509 *x509 = NULL;
|
X509 *x509 = NULL;
|
||||||
EVP_PKEY *pkey = NULL;
|
EVP_PKEY *pkey = NULL;
|
||||||
PKCS12 *p12 = NULL;
|
PKCS12 *p12 = NULL;
|
||||||
|
|
||||||
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
|
CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
|
||||||
bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
|
bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
|
||||||
|
|
||||||
OpenSSL_add_all_algorithms();
|
OpenSSL_add_all_algorithms();
|
||||||
ERR_load_crypto_strings();
|
ERR_load_crypto_strings();
|
||||||
|
|
||||||
mkcert(&x509, &pkey, NUM_BITS, SERIAL, NUM_YEARS);
|
mkcert(&x509, &pkey, NUM_BITS, SERIAL, NUM_YEARS);
|
||||||
|
|
||||||
p12 = PKCS12_create("limelight", "GameStream", pkey, x509, NULL, 0, 0, 0, 0, 0);
|
p12 = PKCS12_create("limelight", "GameStream", pkey, x509, NULL, 0, 0, 0, 0, 0);
|
||||||
@ -54,9 +54,9 @@ CERT_KEY_PAIR mkcert_generate() {
|
|||||||
ENGINE_cleanup();
|
ENGINE_cleanup();
|
||||||
#endif
|
#endif
|
||||||
CRYPTO_cleanup_all_ex_data();
|
CRYPTO_cleanup_all_ex_data();
|
||||||
|
|
||||||
BIO_free(bio_err);
|
BIO_free(bio_err);
|
||||||
|
|
||||||
return (CERT_KEY_PAIR) {x509, pkey, p12};
|
return (CERT_KEY_PAIR) {x509, pkey, p12};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,12 +70,12 @@ void mkcert_save(const char* certFile, const char* p12File, const char* keyPairF
|
|||||||
FILE* certFilePtr = fopen(certFile, "w");
|
FILE* certFilePtr = fopen(certFile, "w");
|
||||||
FILE* keyPairFilePtr = fopen(keyPairFile, "w");
|
FILE* keyPairFilePtr = fopen(keyPairFile, "w");
|
||||||
FILE* p12FilePtr = fopen(p12File, "wb");
|
FILE* p12FilePtr = fopen(p12File, "wb");
|
||||||
|
|
||||||
//TODO: error check
|
//TODO: error check
|
||||||
PEM_write_PrivateKey(keyPairFilePtr, certKeyPair.pkey, NULL, NULL, 0, NULL, NULL);
|
PEM_write_PrivateKey(keyPairFilePtr, certKeyPair.pkey, NULL, NULL, 0, NULL, NULL);
|
||||||
PEM_write_X509(certFilePtr, certKeyPair.x509);
|
PEM_write_X509(certFilePtr, certKeyPair.x509);
|
||||||
i2d_PKCS12_fp(p12FilePtr, certKeyPair.p12);
|
i2d_PKCS12_fp(p12FilePtr, certKeyPair.p12);
|
||||||
|
|
||||||
fclose(p12FilePtr);
|
fclose(p12FilePtr);
|
||||||
fclose(certFilePtr);
|
fclose(certFilePtr);
|
||||||
fclose(keyPairFilePtr);
|
fclose(keyPairFilePtr);
|
||||||
@ -86,7 +86,7 @@ int mkcert(X509 **x509p, EVP_PKEY **pkeyp, int bits, int serial, int years) {
|
|||||||
EVP_PKEY *pk;
|
EVP_PKEY *pk;
|
||||||
RSA *rsa;
|
RSA *rsa;
|
||||||
X509_NAME *name = NULL;
|
X509_NAME *name = NULL;
|
||||||
|
|
||||||
if (*pkeyp == NULL) {
|
if (*pkeyp == NULL) {
|
||||||
if ((pk=EVP_PKEY_new()) == NULL) {
|
if ((pk=EVP_PKEY_new()) == NULL) {
|
||||||
abort();
|
abort();
|
||||||
@ -95,7 +95,7 @@ int mkcert(X509 **x509p, EVP_PKEY **pkeyp, int bits, int serial, int years) {
|
|||||||
} else {
|
} else {
|
||||||
pk = *pkeyp;
|
pk = *pkeyp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*x509p == NULL) {
|
if (*x509p == NULL) {
|
||||||
if ((x = X509_new()) == NULL) {
|
if ((x = X509_new()) == NULL) {
|
||||||
goto err;
|
goto err;
|
||||||
@ -106,8 +106,8 @@ int mkcert(X509 **x509p, EVP_PKEY **pkeyp, int bits, int serial, int years) {
|
|||||||
|
|
||||||
if ((rsa = RSA_new()) == NULL)
|
if ((rsa = RSA_new()) == NULL)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
BIGNUM* bne = BN_new();
|
BIGNUM* bne = BN_new();
|
||||||
if (bne == NULL) {
|
if (bne == NULL) {
|
||||||
abort();
|
abort();
|
||||||
goto err;
|
goto err;
|
||||||
@ -123,37 +123,37 @@ int mkcert(X509 **x509p, EVP_PKEY **pkeyp, int bits, int serial, int years) {
|
|||||||
abort();
|
abort();
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
X509_set_version(x, 2);
|
X509_set_version(x, 2);
|
||||||
ASN1_INTEGER_set(X509_get_serialNumber(x), serial);
|
ASN1_INTEGER_set(X509_get_serialNumber(x), serial);
|
||||||
X509_gmtime_adj(X509_get_notBefore(x), 0);
|
X509_gmtime_adj(X509_get_notBefore(x), 0);
|
||||||
X509_gmtime_adj(X509_get_notAfter(x), (long)60*60*24*365*years);
|
X509_gmtime_adj(X509_get_notAfter(x), (long)60*60*24*365*years);
|
||||||
X509_set_pubkey(x, pk);
|
X509_set_pubkey(x, pk);
|
||||||
|
|
||||||
name = X509_get_subject_name(x);
|
name = X509_get_subject_name(x);
|
||||||
|
|
||||||
/* This function creates and adds the entry, working out the
|
/* This function creates and adds the entry, working out the
|
||||||
* correct string type and performing checks on its length.
|
* correct string type and performing checks on its length.
|
||||||
*/
|
*/
|
||||||
X509_NAME_add_entry_by_txt(name,"CN", MBSTRING_ASC, (unsigned char*)"NVIDIA GameStream Client", -1, -1, 0);
|
X509_NAME_add_entry_by_txt(name,"CN", MBSTRING_ASC, (unsigned char*)"NVIDIA GameStream Client", -1, -1, 0);
|
||||||
|
|
||||||
/* Its self signed so set the issuer name to be the same as the
|
/* Its self signed so set the issuer name to be the same as the
|
||||||
* subject.
|
* subject.
|
||||||
*/
|
*/
|
||||||
X509_set_issuer_name(x, name);
|
X509_set_issuer_name(x, name);
|
||||||
|
|
||||||
/* Add various extensions: standard extensions */
|
/* Add various extensions: standard extensions */
|
||||||
add_ext(x, NID_key_usage, "critical,digitalSignature,keyEncipherment");
|
add_ext(x, NID_key_usage, "critical,digitalSignature,keyEncipherment");
|
||||||
|
|
||||||
add_ext(x, NID_subject_key_identifier, "hash");
|
add_ext(x, NID_subject_key_identifier, "hash");
|
||||||
|
|
||||||
if (!X509_sign(x, pk, EVP_sha256())) {
|
if (!X509_sign(x, pk, EVP_sha256())) {
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
*x509p = x;
|
*x509p = x;
|
||||||
*pkeyp = pk;
|
*pkeyp = pk;
|
||||||
|
|
||||||
return(1);
|
return(1);
|
||||||
err:
|
err:
|
||||||
return(0);
|
return(0);
|
||||||
@ -178,7 +178,7 @@ int add_ext(X509 *cert, int nid, char *value)
|
|||||||
if (!ex) {
|
if (!ex) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
X509_add_ext(cert, ex, -1);
|
X509_add_ext(cert, ex, -1);
|
||||||
X509_EXTENSION_free(ex);
|
X509_EXTENSION_free(ex);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -132,7 +132,7 @@ static void XMLCALL _xml_write_data(void *userData, const XML_Char *s, int len)
|
|||||||
search->memory = realloc(search->memory, search->size + len + 1);
|
search->memory = realloc(search->memory, search->size + len + 1);
|
||||||
if(search->memory == NULL)
|
if(search->memory == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
memcpy(&(search->memory[search->size]), s, len);
|
memcpy(&(search->memory[search->size]), s, len);
|
||||||
search->size += len;
|
search->size += len;
|
||||||
search->memory[search->size] = 0;
|
search->memory[search->size] = 0;
|
||||||
@ -162,7 +162,7 @@ int xml_search(char* data, size_t len, char* node, char** result) {
|
|||||||
|
|
||||||
XML_ParserFree(parser);
|
XML_ParserFree(parser);
|
||||||
*result = search.memory;
|
*result = search.memory;
|
||||||
|
|
||||||
return GS_OK;
|
return GS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,16 +180,16 @@ static void omx_renderer_cleanup() {
|
|||||||
static void omx_renderer_decode_and_play_sample(char* data, int length) {
|
static void omx_renderer_decode_and_play_sample(char* data, int length) {
|
||||||
int decodeLen = opus_multistream_decode(decoder, data, length, pcmBuffer, FRAME_SIZE, 0);
|
int decodeLen = opus_multistream_decode(decoder, data, length, pcmBuffer, FRAME_SIZE, 0);
|
||||||
if (decodeLen > 0) {
|
if (decodeLen > 0) {
|
||||||
buf = ilclient_get_input_buffer(component, 100, 1);
|
buf = ilclient_get_input_buffer(component, 100, 1);
|
||||||
buf->nOffset = 0;
|
buf->nOffset = 0;
|
||||||
buf->nFlags = OMX_BUFFERFLAG_TIME_UNKNOWN;
|
buf->nFlags = OMX_BUFFERFLAG_TIME_UNKNOWN;
|
||||||
int bufLength = decodeLen * sizeof(short) * channelCount;
|
int bufLength = decodeLen * sizeof(short) * channelCount;
|
||||||
memcpy(buf->pBuffer, pcmBuffer, bufLength);
|
memcpy(buf->pBuffer, pcmBuffer, bufLength);
|
||||||
buf->nFilledLen = bufLength;
|
buf->nFilledLen = bufLength;
|
||||||
int r = OMX_EmptyThisBuffer(ilclient_get_handle(component), buf);
|
int r = OMX_EmptyThisBuffer(ilclient_get_handle(component), buf);
|
||||||
if (r != OMX_ErrorNone) {
|
if (r != OMX_ErrorNone) {
|
||||||
fprintf(stderr, "Empty buffer error\n");
|
fprintf(stderr, "Empty buffer error\n");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
printf("Opus error from decode: %d\n", decodeLen);
|
printf("Opus error from decode: %d\n", decodeLen);
|
||||||
}
|
}
|
||||||
|
@ -333,7 +333,7 @@ void config_parse(int argc, char* argv[], PCONFIGURATION config) {
|
|||||||
char* config_file = get_path("moonlight.conf", "/etc");
|
char* config_file = get_path("moonlight.conf", "/etc");
|
||||||
if (config_file)
|
if (config_file)
|
||||||
config_file_parse(config_file, config);
|
config_file_parse(config_file, config);
|
||||||
|
|
||||||
if (argc == 2 && access(argv[1], F_OK) == 0) {
|
if (argc == 2 && access(argv[1], F_OK) == 0) {
|
||||||
config->action = "stream";
|
config->action = "stream";
|
||||||
if (!config_file_parse(argv[1], config))
|
if (!config_file_parse(argv[1], config))
|
||||||
|
@ -64,7 +64,7 @@ static void on_cec_keypress(void* userdata, const cec_keypress* key) {
|
|||||||
value = 0;
|
value = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value != 0) {
|
if (value != 0) {
|
||||||
short code = 0x80 << 8 | value;
|
short code = 0x80 << 8 | value;
|
||||||
LiSendKeyboardEvent(code, (key->duration > 0)?KEY_ACTION_UP:KEY_ACTION_DOWN, 0);
|
LiSendKeyboardEvent(code, (key->duration > 0)?KEY_ACTION_UP:KEY_ACTION_DOWN, 0);
|
||||||
@ -80,25 +80,25 @@ void cec_init() {
|
|||||||
snprintf(g_config.strDeviceName, sizeof(g_config.strDeviceName), "Moonlight");
|
snprintf(g_config.strDeviceName, sizeof(g_config.strDeviceName), "Moonlight");
|
||||||
g_config.callbacks = &g_callbacks;
|
g_config.callbacks = &g_callbacks;
|
||||||
g_config.deviceTypes.types[0] = CEC_DEVICE_TYPE_PLAYBACK_DEVICE;
|
g_config.deviceTypes.types[0] = CEC_DEVICE_TYPE_PLAYBACK_DEVICE;
|
||||||
|
|
||||||
if (libcecc_initialise(&g_config, &g_iface, NULL) != 1) {
|
if (libcecc_initialise(&g_config, &g_iface, NULL) != 1) {
|
||||||
fprintf(stderr, "Failed to initialize libcec interface\n");
|
fprintf(stderr, "Failed to initialize libcec interface\n");
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_iface.init_video_standalone(g_iface.connection);
|
g_iface.init_video_standalone(g_iface.connection);
|
||||||
|
|
||||||
cec_adapter devices[10];
|
cec_adapter devices[10];
|
||||||
int8_t iDevicesFound = g_iface.find_adapters(g_iface.connection, devices, sizeof(devices) / sizeof(devices), NULL);
|
int8_t iDevicesFound = g_iface.find_adapters(g_iface.connection, devices, sizeof(devices) / sizeof(devices), NULL);
|
||||||
|
|
||||||
if (iDevicesFound <= 0) {
|
if (iDevicesFound <= 0) {
|
||||||
fprintf(stderr, "No CEC devices found\n");
|
fprintf(stderr, "No CEC devices found\n");
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
libcecc_destroy(&g_iface);
|
libcecc_destroy(&g_iface);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(g_strPort, devices[0].comm);
|
strcpy(g_strPort, devices[0].comm);
|
||||||
if (!g_iface.open(g_iface.connection, g_strPort, 5000)) {
|
if (!g_iface.open(g_iface.connection, g_strPort, 5000)) {
|
||||||
fprintf(stderr, "Unable to open the device on port %s\n", g_strPort);
|
fprintf(stderr, "Unable to open the device on port %s\n", g_strPort);
|
||||||
@ -106,6 +106,6 @@ void cec_init() {
|
|||||||
libcecc_destroy(&g_iface);
|
libcecc_destroy(&g_iface);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_iface.set_active_source(g_iface.connection, g_config.deviceTypes.types[0]);
|
g_iface.set_active_source(g_iface.connection, g_config.deviceTypes.types[0]);
|
||||||
}
|
}
|
||||||
|
@ -645,7 +645,7 @@ void evdev_map(char* device) {
|
|||||||
char* buf = str_guid;
|
char* buf = str_guid;
|
||||||
for (int i = 0; i < 16; i++)
|
for (int i = 0; i < 16; i++)
|
||||||
buf += sprintf(buf, "%02x", ((unsigned char*) guid)[i]);
|
buf += sprintf(buf, "%02x", ((unsigned char*) guid)[i]);
|
||||||
|
|
||||||
struct mapping map;
|
struct mapping map;
|
||||||
strncpy(map.name, libevdev_get_name(evdev), sizeof(map.name));
|
strncpy(map.name, libevdev_get_name(evdev), sizeof(map.name));
|
||||||
strncpy(map.guid, str_guid, sizeof(map.guid));
|
strncpy(map.guid, str_guid, sizeof(map.guid));
|
||||||
|
@ -28,20 +28,20 @@ struct mapping {
|
|||||||
|
|
||||||
bool reverse_leftx, reverse_lefty;
|
bool reverse_leftx, reverse_lefty;
|
||||||
bool reverse_rightx, reverse_righty;
|
bool reverse_rightx, reverse_righty;
|
||||||
|
|
||||||
short abs_leftx, abs_lefty;
|
short abs_leftx, abs_lefty;
|
||||||
short abs_rightx, abs_righty;
|
short abs_rightx, abs_righty;
|
||||||
|
|
||||||
short hat_dpright, hat_dpleft, hat_dpup, hat_dpdown;
|
short hat_dpright, hat_dpleft, hat_dpup, hat_dpdown;
|
||||||
short hat_dir_dpright, hat_dir_dpleft, hat_dir_dpup, hat_dir_dpdown;
|
short hat_dir_dpright, hat_dir_dpleft, hat_dir_dpup, hat_dir_dpdown;
|
||||||
short btn_dpup, btn_dpdown, btn_dpleft, btn_dpright;
|
short btn_dpup, btn_dpdown, btn_dpleft, btn_dpright;
|
||||||
|
|
||||||
short btn_a, btn_x, btn_y, btn_b;
|
short btn_a, btn_x, btn_y, btn_b;
|
||||||
short btn_back, btn_start, btn_guide;
|
short btn_back, btn_start, btn_guide;
|
||||||
short btn_leftstick, btn_rightstick;
|
short btn_leftstick, btn_rightstick;
|
||||||
short btn_leftshoulder, btn_rightshoulder;
|
short btn_leftshoulder, btn_rightshoulder;
|
||||||
|
|
||||||
short abs_lefttrigger, abs_righttrigger;
|
short abs_lefttrigger, abs_righttrigger;
|
||||||
short btn_lefttrigger, btn_righttrigger;
|
short btn_lefttrigger, btn_righttrigger;
|
||||||
|
|
||||||
struct mapping* next;
|
struct mapping* next;
|
||||||
|
@ -74,14 +74,14 @@ void loop_add_fd(int fd, FdHandler handler, int events) {
|
|||||||
void loop_remove_fd(int fd) {
|
void loop_remove_fd(int fd) {
|
||||||
numFds--;
|
numFds--;
|
||||||
int fdindex;
|
int fdindex;
|
||||||
|
|
||||||
for (int i=0;i<numFds;i++) {
|
for (int i=0;i<numFds;i++) {
|
||||||
if (fds[i].fd == fd) {
|
if (fds[i].fd == fd) {
|
||||||
fdindex = i;
|
fdindex = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fdindex != numFds && numFds > 0) {
|
if (fdindex != numFds && numFds > 0) {
|
||||||
memcpy(&fds[fdindex], &fds[numFds], sizeof(struct pollfd));
|
memcpy(&fds[fdindex], &fds[numFds], sizeof(struct pollfd));
|
||||||
memcpy(&fdHandlers[fdindex], &fdHandlers[numFds], sizeof(FdHandler));
|
memcpy(&fdHandlers[fdindex], &fdHandlers[numFds], sizeof(FdHandler));
|
||||||
|
12
src/main.c
12
src/main.c
@ -211,19 +211,19 @@ int main(int argc, char* argv[]) {
|
|||||||
|
|
||||||
if (config.action == NULL || strcmp("help", config.action) == 0)
|
if (config.action == NULL || strcmp("help", config.action) == 0)
|
||||||
help();
|
help();
|
||||||
|
|
||||||
if (config.debug_level > 0)
|
if (config.debug_level > 0)
|
||||||
printf("Moonlight Embedded %d.%d.%d (%s)\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, COMPILE_OPTIONS);
|
printf("Moonlight Embedded %d.%d.%d (%s)\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, COMPILE_OPTIONS);
|
||||||
|
|
||||||
if (strcmp("map", config.action) == 0) {
|
if (strcmp("map", config.action) == 0) {
|
||||||
if (config.inputsCount != 1) {
|
if (config.inputsCount != 1) {
|
||||||
printf("You need to specify one input device using -input.\n");
|
printf("You need to specify one input device using -input.\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
evdev_create(config.inputs[0], NULL, config.debug_level > 0);
|
evdev_create(config.inputs[0], NULL, config.debug_level > 0);
|
||||||
evdev_map(config.inputs[0]);
|
evdev_map(config.inputs[0]);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.address == NULL) {
|
if (config.address == NULL) {
|
||||||
@ -240,7 +240,7 @@ int main(int argc, char* argv[]) {
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char host_config_file[128];
|
char host_config_file[128];
|
||||||
sprintf(host_config_file, "hosts/%s.conf", config.address);
|
sprintf(host_config_file, "hosts/%s.conf", config.address);
|
||||||
if (access(host_config_file, R_OK) != -1)
|
if (access(host_config_file, R_OK) != -1)
|
||||||
|
@ -139,7 +139,7 @@ void egl_init(EGLNativeDisplayType native_display, NativeWindowType native_windo
|
|||||||
glGenBuffers(1, &ebo);
|
glGenBuffers(1, &ebo);
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);
|
||||||
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements), elements, GL_STATIC_DRAW);
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements), elements, GL_STATIC_DRAW);
|
||||||
|
|
||||||
GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER);
|
GLuint vertex_shader = glCreateShader(GL_VERTEX_SHADER);
|
||||||
glShaderSource(vertex_shader, 1, &vertex_source, NULL);
|
glShaderSource(vertex_shader, 1, &vertex_source, NULL);
|
||||||
glCompileShader(vertex_shader);
|
glCompileShader(vertex_shader);
|
||||||
|
@ -170,6 +170,6 @@ int ffmpeg_decode(unsigned char* indata, int inlen) {
|
|||||||
av_strerror(err, errorstring, sizeof(errorstring));
|
av_strerror(err, errorstring, sizeof(errorstring));
|
||||||
fprintf(stderr, "Decode failed - %s\n", errorstring);
|
fprintf(stderr, "Decode failed - %s\n", errorstring);
|
||||||
}
|
}
|
||||||
|
|
||||||
return err < 0 ? err : 0;
|
return err < 0 ? err : 0;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* This file is part of Moonlight Embedded.
|
* This file is part of Moonlight Embedded.
|
||||||
*
|
*
|
||||||
* Based on Moonlight Pc implementation
|
* Based on Moonlight Pc implementation
|
||||||
*
|
*
|
||||||
* Moonlight is free software; you can redistribute it and/or modify
|
* Moonlight is free software; you can redistribute it and/or modify
|
||||||
|
@ -46,7 +46,7 @@ static enum AVPixelFormat va_get_format(AVCodecContext* context, const enum AVPi
|
|||||||
fprintf(stderr, "Failed to initialize VAAPI frame context");
|
fprintf(stderr, "Failed to initialize VAAPI frame context");
|
||||||
return AV_PIX_FMT_NONE;
|
return AV_PIX_FMT_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
context->pix_fmt = AV_PIX_FMT_VAAPI;
|
context->pix_fmt = AV_PIX_FMT_VAAPI;
|
||||||
context->hw_device_ctx = device_ref;
|
context->hw_device_ctx = device_ref;
|
||||||
context->hw_frames_ctx = hw_ctx;
|
context->hw_frames_ctx = hw_ctx;
|
||||||
|
@ -139,11 +139,11 @@ static int decoder_renderer_setup(int videoFormat, int width, int height, int re
|
|||||||
}
|
}
|
||||||
|
|
||||||
close(fd_fb);
|
close(fd_fb);
|
||||||
|
|
||||||
int regfbcount = MIN_FRAME_BUFFER_COUNT + 2;
|
int regfbcount = MIN_FRAME_BUFFER_COUNT + 2;
|
||||||
int picWidth = ((width + 15) & ~15);
|
int picWidth = ((width + 15) & ~15);
|
||||||
int picHeight = ((height + 15) & ~15);
|
int picHeight = ((height + 15) & ~15);
|
||||||
|
|
||||||
char v4l_device[16];
|
char v4l_device[16];
|
||||||
sprintf(v4l_device, "/dev/video%d", 17);
|
sprintf(v4l_device, "/dev/video%d", 17);
|
||||||
fd = open(v4l_device, O_RDWR, 0);
|
fd = open(v4l_device, O_RDWR, 0);
|
||||||
@ -192,7 +192,7 @@ static int decoder_renderer_setup(int videoFormat, int width, int height, int re
|
|||||||
fprintf(stderr, "Not enough video buffers\n");
|
fprintf(stderr, "Not enough video buffers\n");
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < regfbcount; i++) {
|
for (int i = 0; i < regfbcount; i++) {
|
||||||
struct v4l2_buffer buffer = {0};
|
struct v4l2_buffer buffer = {0};
|
||||||
struct vpu_buf *buf;
|
struct vpu_buf *buf;
|
||||||
@ -233,7 +233,7 @@ static int decoder_renderer_setup(int videoFormat, int width, int height, int re
|
|||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vpu_setup(buffers, regfbcount, width, height);
|
vpu_setup(buffers, regfbcount, width, height);
|
||||||
|
|
||||||
if (pipe(pipefd) == -1 || pipe(clearpipefd) == -1) {
|
if (pipe(pipefd) == -1 || pipe(clearpipefd) == -1) {
|
||||||
|
@ -143,7 +143,7 @@ void vpu_setup(struct vpu_buf* buffers[], int bufferCount, int width, int height
|
|||||||
}
|
}
|
||||||
fb[i].bufMvCol = mvcol_md[i].phy_addr;
|
fb[i].bufMvCol = mvcol_md[i].phy_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bufinfo.avcSliceBufInfo.bufferBase = slice_mem_desc.phy_addr;
|
bufinfo.avcSliceBufInfo.bufferBase = slice_mem_desc.phy_addr;
|
||||||
bufinfo.avcSliceBufInfo.bufferSize = phy_slicebuf_size;
|
bufinfo.avcSliceBufInfo.bufferSize = phy_slicebuf_size;
|
||||||
|
|
||||||
@ -237,7 +237,7 @@ bool vpu_decode(PDECODE_UNIT decodeUnit) {
|
|||||||
fprintf(stderr, "Failed to decode frame\n");
|
fprintf(stderr, "Failed to decode frame\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
currentFrame = outinfo.indexFrameDisplay;
|
currentFrame = outinfo.indexFrameDisplay;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -249,7 +249,7 @@ void vpu_clear(int disp_clr_index) {
|
|||||||
void vpu_cleanup() {
|
void vpu_cleanup() {
|
||||||
IOFreePhyMem(&ps_mem_desc);
|
IOFreePhyMem(&ps_mem_desc);
|
||||||
IOFreePhyMem(&slice_mem_desc);
|
IOFreePhyMem(&slice_mem_desc);
|
||||||
|
|
||||||
IOFreeVirtMem(&mem_desc);
|
IOFreeVirtMem(&mem_desc);
|
||||||
IOFreePhyMem(&mem_desc);
|
IOFreePhyMem(&mem_desc);
|
||||||
vpu_UnInit();
|
vpu_UnInit();
|
||||||
|
@ -39,7 +39,7 @@ static int sdl_setup(int videoFormat, int width, int height, int redrawRate, voi
|
|||||||
fprintf(stderr, "Couldn't initialize video decoding\n");
|
fprintf(stderr, "Couldn't initialize video decoding\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ffmpeg_buffer = malloc(DECODER_BUFFER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE);
|
ffmpeg_buffer = malloc(DECODER_BUFFER_SIZE + AV_INPUT_BUFFER_PADDING_SIZE);
|
||||||
if (ffmpeg_buffer == NULL) {
|
if (ffmpeg_buffer == NULL) {
|
||||||
fprintf(stderr, "Not enough memory\n");
|
fprintf(stderr, "Not enough memory\n");
|
||||||
|
@ -57,7 +57,7 @@ static int frame_handle(int pipefd) {
|
|||||||
if (frame) {
|
if (frame) {
|
||||||
if (ffmpeg_decoder == SOFTWARE)
|
if (ffmpeg_decoder == SOFTWARE)
|
||||||
egl_draw(frame->data);
|
egl_draw(frame->data);
|
||||||
#ifdef HAVE_VAAPI
|
#ifdef HAVE_VAAPI
|
||||||
else if (ffmpeg_decoder == VAAPI)
|
else if (ffmpeg_decoder == VAAPI)
|
||||||
vaapi_queue(frame, window, display_width, display_height);
|
vaapi_queue(frame, window, display_width, display_height);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user