diff --git a/lib/raop_handlers.h b/lib/raop_handlers.h index 6493c33..d00912a 100644 --- a/lib/raop_handlers.h +++ b/lib/raop_handlers.h @@ -68,22 +68,47 @@ raop_handler_info(raop_conn_t *conn, plist_t name_node = plist_new_string(name); plist_dict_set_item(res_node, "name", name_node); + 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_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_dict_set_item(audio_latencies_0_node, "type", audio_latencies_0_type_node); + plist_dict_set_item(audio_latencies_0_node, "inputLatencyMicros", audio_latencies_0_input_latency_micros_node); + plist_dict_set_item(audio_latencies_0_node, "audioType", audio_latencies_0_audio_type_node); + plist_dict_set_item(audio_latencies_0_node, "outputLatencyMicros", audio_latencies_0_output_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_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_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); + plist_dict_set_item(audio_latencies_1_node, "inputLatencyMicros", audio_latencies_1_input_latency_micros_node); + plist_dict_set_item(audio_latencies_1_node, "outputLatencyMicros", audio_latencies_1_output_latency_micros_node); + plist_array_append_item(audio_latencies_node, audio_latencies_1_node); + plist_dict_set_item(res_node, "audioLatencies", audio_latencies_node); + 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(0x3fffffc); plist_t audio_format_0_audio_output_formats_node = plist_new_uint(0x3fffffc); + plist_dict_set_item(audio_format_0_node, "audioOutputFormats", audio_format_0_audio_output_formats_node); 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(0x3fffffc); plist_t audio_format_1_audio_output_formats_node = plist_new_uint(0x3fffffc); + plist_dict_set_item(audio_format_1_node, "audioOutputFormats", audio_format_1_audio_output_formats_node); 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); plist_array_append_item(audio_formats_node, audio_format_1_node); plist_dict_set_item(res_node, "audioFormats", audio_formats_node); @@ -102,32 +127,9 @@ raop_handler_info(raop_conn_t *conn, plist_t source_version_node = plist_new_string(GLOBAL_VERSION); plist_dict_set_item(res_node, "sourceVersion", source_version_node); - plist_t keep_alive_send_stats_as_body_node = plist_new_uint(1); + plist_t keep_alive_send_stats_as_body_node = plist_new_bool(1); plist_dict_set_item(res_node, "keepAliveSendStatsAsBody", keep_alive_send_stats_as_body_node); - 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_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_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_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_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); - plist_dict_set_item(audio_latencies_1_node, "inputLatencyMicros", audio_latencies_1_input_latency_micros_node); - plist_array_append_item(audio_latencies_node, audio_latencies_1_node); - plist_dict_set_item(res_node, "audioLatencies", audio_latencies_node); - plist_t model_node = plist_new_string(GLOBAL_MODEL); plist_dict_set_item(res_node, "model", model_node); @@ -136,15 +138,15 @@ raop_handler_info(raop_conn_t *conn, plist_t displays_node = plist_new_array(); plist_t displays_0_node = plist_new_dict(); + plist_t displays_0_width_physical_node = plist_new_uint(0); + plist_t displays_0_height_physical_node = plist_new_uint(0); plist_t displays_0_uuid_node = plist_new_string("e0ff8a27-6738-3d56-8a16-cc53aacee925"); - plist_t displays_0_width_physical_node = plist_new_bool(0); - plist_t displays_0_height_physical_node = plist_new_bool(0); plist_t displays_0_width_node = plist_new_uint(conn->raop->width); plist_t displays_0_height_node = plist_new_uint(conn->raop->height); plist_t displays_0_width_pixels_node = plist_new_uint(conn->raop->width); plist_t displays_0_height_pixels_node = plist_new_uint(conn->raop->height); - plist_t displays_0_rotation_node = plist_new_bool(0); - plist_t displays_0_refresh_rate_node = plist_new_uint(conn->raop->refreshRate); + plist_t displays_0_rotation_node = plist_new_bool(0); /* set to true in AppleTV gen 3 (which has features bit 8 set */ + plist_t displays_0_refresh_rate_node = plist_new_uint(conn->raop->refreshRate); /* set as real 0.166666 = 60hz in AppleTV gen 3 */ plist_t displays_0_max_fps_node = plist_new_uint(conn->raop->maxFPS); plist_t displays_0_overscanned_node = plist_new_bool(conn->raop->overscanned); plist_t displays_0_features = plist_new_uint(14); @@ -156,7 +158,7 @@ raop_handler_info(raop_conn_t *conn, plist_dict_set_item(displays_0_node, "height", displays_0_height_node); plist_dict_set_item(displays_0_node, "widthPixels", displays_0_width_pixels_node); 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, "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);