mirror of
https://github.com/morgan9e/UxPlay
synced 2026-04-14 00:04:13 +09:00
fixed incorrect framerate and missing maxfps plist settings in raop_handler.h
and added option to set these in the API through raop_set_display (renamed from raop_set_display_size).. Updated uxplay.cpp to include these new options. Moved version slightly to UxPlay-1.31 tested: confirmed to work using gstreamer videosink "fpsdisplaysink" to explicitly show reduction of streaming fps when set below 30 fps.
This commit is contained in:
23
lib/raop.c
23
lib/raop.c
@@ -52,7 +52,8 @@ struct raop_s {
|
||||
|
||||
unsigned short display_width;
|
||||
unsigned short display_height;
|
||||
|
||||
unsigned short display_refresh_rate;
|
||||
unsigned short display_max_fps;
|
||||
};
|
||||
|
||||
struct raop_conn_s {
|
||||
@@ -319,10 +320,12 @@ raop_init(int max_clients, raop_callbacks_t *callbacks) {
|
||||
raop->data_lport = 0;
|
||||
raop->mirror_data_lport = 0;
|
||||
|
||||
/* initialize display width, height */
|
||||
/* initialize display width, height, refresh_rate, max_fps */
|
||||
raop->display_width = 1920;
|
||||
raop->display_height = 1080;
|
||||
|
||||
raop->display_refresh_rate = 60;
|
||||
raop->display_max_fps = 30;
|
||||
|
||||
return raop;
|
||||
}
|
||||
|
||||
@@ -354,11 +357,17 @@ raop_set_log_level(raop_t *raop, int level) {
|
||||
logger_set_level(raop->logger, level);
|
||||
}
|
||||
|
||||
void raop_set_display_size(raop_t *raop, unsigned short width, unsigned short height){
|
||||
assert(raop);
|
||||
void raop_set_display(raop_t *raop, unsigned short width, unsigned short height,
|
||||
unsigned short refresh_rate, unsigned short max_fps){
|
||||
assert(raop);
|
||||
|
||||
if (width) raop->display_width = width;
|
||||
if (height) raop->display_height = height;
|
||||
if (width) raop->display_width = width;
|
||||
if (height) raop->display_height = height;
|
||||
if (refresh_rate) raop->display_refresh_rate = refresh_rate;
|
||||
if (max_fps) raop->display_max_fps = max_fps;
|
||||
if (raop->display_max_fps > raop->display_refresh_rate) {
|
||||
raop->display_max_fps = raop->display_refresh_rate;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -54,7 +54,8 @@ RAOP_API raop_t *raop_init(int max_clients, raop_callbacks_t *callbacks);
|
||||
|
||||
RAOP_API void raop_set_log_level(raop_t *raop, int level);
|
||||
RAOP_API void raop_set_log_callback(raop_t *raop, raop_log_callback_t callback, void *cls);
|
||||
RAOP_API void raop_set_display_size(raop_t *raop, unsigned short width, unsigned short height);
|
||||
RAOP_API void raop_set_display(raop_t *raop, unsigned short width, unsigned short height,
|
||||
unsigned short refresh_rate, unsigned short max_fps);
|
||||
RAOP_API void raop_set_port(raop_t *raop, unsigned short port);
|
||||
RAOP_API void raop_set_udp_ports(raop_t *raop, unsigned short port[3]);
|
||||
RAOP_API void raop_set_tcp_ports(raop_t *raop, unsigned short port[2]);
|
||||
|
||||
@@ -60,16 +60,16 @@ raop_handler_info(raop_conn_t *conn,
|
||||
plist_t audio_formats_node = plist_new_array();
|
||||
plist_t audio_format_0_node = plist_new_dict();
|
||||
plist_t audio_format_0_type_node = plist_new_uint(100);
|
||||
plist_t audio_format_0_audio_input_formats_node = plist_new_uint(67108860);
|
||||
plist_t audio_format_0_audio_output_formats_node = plist_new_uint(67108860);
|
||||
plist_t audio_format_0_audio_input_formats_node = plist_new_uint(0x3fffffc);
|
||||
plist_t audio_format_0_audio_output_formats_node = plist_new_uint(0x3fffffc);
|
||||
plist_dict_set_item(audio_format_0_node, "type", audio_format_0_type_node);
|
||||
plist_dict_set_item(audio_format_0_node, "audioInputFormats", audio_format_0_audio_input_formats_node);
|
||||
plist_dict_set_item(audio_format_0_node, "audioOutputFormats", audio_format_0_audio_output_formats_node);
|
||||
plist_array_append_item(audio_formats_node, audio_format_0_node);
|
||||
plist_t audio_format_1_node = plist_new_dict();
|
||||
plist_t audio_format_1_type_node = plist_new_uint(101);
|
||||
plist_t audio_format_1_audio_input_formats_node = plist_new_uint(67108860);
|
||||
plist_t audio_format_1_audio_output_formats_node = plist_new_uint(67108860);
|
||||
plist_t audio_format_1_audio_input_formats_node = plist_new_uint(0x3fffffc);
|
||||
plist_t audio_format_1_audio_output_formats_node = plist_new_uint(0x3fffffc);
|
||||
plist_dict_set_item(audio_format_1_node, "type", audio_format_1_type_node);
|
||||
plist_dict_set_item(audio_format_1_node, "audioInputFormats", audio_format_1_audio_input_formats_node);
|
||||
plist_dict_set_item(audio_format_1_node, "audioOutputFormats", audio_format_1_audio_output_formats_node);
|
||||
@@ -102,20 +102,20 @@ raop_handler_info(raop_conn_t *conn,
|
||||
|
||||
plist_t audio_latencies_node = plist_new_array();
|
||||
plist_t audio_latencies_0_node = plist_new_dict();
|
||||
plist_t audio_latencies_0_output_latency_micros_node = plist_new_uint(0);
|
||||
plist_t audio_latencies_0_output_latency_micros_node = plist_new_bool(0);
|
||||
plist_t audio_latencies_0_type_node = plist_new_uint(100);
|
||||
plist_t audio_latencies_0_audio_type_node = plist_new_string("default");
|
||||
plist_t audio_latencies_0_input_latency_micros_node = plist_new_uint(0);
|
||||
plist_t audio_latencies_0_input_latency_micros_node = plist_new_bool(0);
|
||||
plist_dict_set_item(audio_latencies_0_node, "outputLatencyMicros", audio_latencies_0_output_latency_micros_node);
|
||||
plist_dict_set_item(audio_latencies_0_node, "type", audio_latencies_0_type_node);
|
||||
plist_dict_set_item(audio_latencies_0_node, "audioType", audio_latencies_0_audio_type_node);
|
||||
plist_dict_set_item(audio_latencies_0_node, "inputLatencyMicros", audio_latencies_0_input_latency_micros_node);
|
||||
plist_array_append_item(audio_latencies_node, audio_latencies_0_node);
|
||||
plist_t audio_latencies_1_node = plist_new_dict();
|
||||
plist_t audio_latencies_1_output_latency_micros_node = plist_new_uint(0);
|
||||
plist_t audio_latencies_1_output_latency_micros_node = plist_new_bool(0);
|
||||
plist_t audio_latencies_1_type_node = plist_new_uint(101);
|
||||
plist_t audio_latencies_1_audio_type_node = plist_new_string("default");
|
||||
plist_t audio_latencies_1_input_latency_micros_node = plist_new_uint(0);
|
||||
plist_t audio_latencies_1_input_latency_micros_node = plist_new_bool(0);
|
||||
plist_dict_set_item(audio_latencies_1_node, "outputLatencyMicros", audio_latencies_1_output_latency_micros_node);
|
||||
plist_dict_set_item(audio_latencies_1_node, "type", audio_latencies_1_type_node);
|
||||
plist_dict_set_item(audio_latencies_1_node, "audioType", audio_latencies_1_audio_type_node);
|
||||
@@ -139,7 +139,8 @@ raop_handler_info(raop_conn_t *conn,
|
||||
plist_t displays_0_width_pixels_node = plist_new_uint(conn->raop->display_width);
|
||||
plist_t displays_0_height_pixels_node = plist_new_uint(conn->raop->display_height);
|
||||
plist_t displays_0_rotation_node = plist_new_bool(0);
|
||||
plist_t displays_0_refresh_rate_node = plist_new_real(1.0 / 60.0);
|
||||
plist_t displays_0_refresh_rate_node = plist_new_uint(conn->raop->display_refresh_rate);
|
||||
plist_t displays_0_max_fps_node = plist_new_uint(conn->raop->display_max_fps);
|
||||
plist_t displays_0_overscanned_node = plist_new_bool(1);
|
||||
plist_t displays_0_features = plist_new_uint(14);
|
||||
|
||||
@@ -152,6 +153,7 @@ raop_handler_info(raop_conn_t *conn,
|
||||
plist_dict_set_item(displays_0_node, "heightPixels", displays_0_height_pixels_node);
|
||||
plist_dict_set_item(displays_0_node, "rotation", displays_0_rotation_node);
|
||||
plist_dict_set_item(displays_0_node, "refreshRate", displays_0_refresh_rate_node);
|
||||
plist_dict_set_item(displays_0_node, "maxFPS", displays_0_max_fps_node);
|
||||
plist_dict_set_item(displays_0_node, "overscanned", displays_0_overscanned_node);
|
||||
plist_dict_set_item(displays_0_node, "features", displays_0_features);
|
||||
plist_array_append_item(displays_node, displays_0_node);
|
||||
|
||||
Reference in New Issue
Block a user