diff --git a/gfx/video_defines.h b/gfx/video_defines.h index ccea92e98a..f990192087 100644 --- a/gfx/video_defines.h +++ b/gfx/video_defines.h @@ -75,6 +75,14 @@ enum rotation ORIENTATION_END }; +enum video_rotation_type +{ + VIDEO_ROTATION_NORMAL = 0, + VIDEO_ROTATION_90_DEG, + VIDEO_ROTATION_180_DEG, + VIDEO_ROTATION_270_DEG +}; + enum autoswitch_refresh_rate { AUTOSWITCH_REFRESH_RATE_EXCLUSIVE_FULLSCREEN = 0, diff --git a/gfx/video_driver.c b/gfx/video_driver.c index e74effb3f8..bf19a6bdc9 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -185,6 +185,7 @@ static const gfx_ctx_driver_t *gfx_ctx_gl_drivers[] = { NULL }; +/* Beware when changing this - it must match with enum aspect_ratio order */ struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = { { 4.0f / 3.0f , "4:3" }, { 16.0f / 9.0f , "16:9" }, @@ -206,11 +207,11 @@ struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END] = { { 19.0f / 14.0f, "19:14" }, { 30.0f / 17.0f, "30:17" }, { 32.0f / 9.0f , "32:9" }, - { 0.0f , "Config" }, - { 1.0f , "Square pixel" }, - { 1.0f , "Core provided" }, - { 0.0f , "Custom" }, - { 4.0f / 3.0f , "Full" } + { 0.0f , "" }, /* config - initialized in video_driver_init_internal */ + { 1.0f , "" }, /* square pixel - initialized in video_driver_set_viewport_square_pixel */ + { 1.0f , "" }, /* core provided - initialized in video_driver_init_internal */ + { 0.0f , "" }, /* custom - initialized in video_driver_init_internal */ + { 4.0f / 3.0f , "" } /* full - initialized in video_driver_init_internal */ }; static void *video_null_init(const video_info_t *video, @@ -1621,7 +1622,8 @@ void video_driver_set_viewport_square_pixel(struct retro_game_geometry *geom) snprintf(aspectratio_lut[ASPECT_RATIO_SQUARE].name, sizeof(aspectratio_lut[ASPECT_RATIO_SQUARE].name), - "1:1 PAR (%u:%u DAR)", aspect_x, aspect_y); + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_SQUARE_PIXEL), + aspect_x, aspect_y); aspectratio_lut[ASPECT_RATIO_SQUARE].value = (float)aspect_x / aspect_y; } @@ -3294,6 +3296,19 @@ bool video_driver_init_internal(bool *video_is_threaded, bool verbosity_enabled) scale = video_st->state_scale; #endif + strlcpy(aspectratio_lut[ASPECT_RATIO_CONFIG].name, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CONFIG), + sizeof(aspectratio_lut[ASPECT_RATIO_CONFIG].name)); + strlcpy(aspectratio_lut[ASPECT_RATIO_CORE].name, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CORE_PROVIDED), + sizeof(aspectratio_lut[ASPECT_RATIO_CORE].name)); + strlcpy(aspectratio_lut[ASPECT_RATIO_CUSTOM].name, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CUSTOM), + sizeof(aspectratio_lut[ASPECT_RATIO_CUSTOM].name)); + strlcpy(aspectratio_lut[ASPECT_RATIO_FULL].name, + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_FULL), + sizeof(aspectratio_lut[ASPECT_RATIO_FULL].name)); + /* Update core-dependent aspect ratio values. */ video_driver_set_viewport_square_pixel(geom); video_driver_set_viewport_core(); diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index bc26af2a1a..baeace260f 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -1946,6 +1946,26 @@ MSG_HASH( MENU_ENUM_SUBLABEL_VIDEO_ASPECT_RATIO, "Floating point value for video aspect ratio (width / height)." ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CONFIG, + "Config" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_SQUARE_PIXEL, + "1:1 PAR (%u:%u DAR)" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CORE_PROVIDED, + "Core provided" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CUSTOM, + "Custom" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_FULL, + "Full" + ) #if defined(DINGUX) MSG_HASH( MENU_ENUM_LABEL_VALUE_VIDEO_DINGUX_IPU_KEEP_ASPECT, @@ -2352,6 +2372,10 @@ MSG_HASH( /* Settings > Audio > Mixer Settings > Mixer Stream */ +MSG_HASH( + MENU_ENUM_LABEL_MIXER_STREAM, + "Mixer stream #%d: %s" + ) MSG_HASH( MENU_ENUM_LABEL_VALUE_MIXER_ACTION_PLAY, "Play" @@ -8367,6 +8391,38 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_SELECT_FILE, "Select File" ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_NORMAL, + "Normal" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_90_DEG, + "90 deg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_180_DEG, + "180 deg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_270_DEG, + "270 deg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_NORMAL, + "Normal" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_VERTICAL, + "90 deg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED, + "180 deg" + ) +MSG_HASH( + MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED_ROTATED, + "270 deg" + ) /* Settings Options */ diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index 6d5f54048a..1fe6d20be1 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -367,9 +367,7 @@ static int action_get_title_dropdown_item( static int action_get_title_mixer_stream_actions(const char *path, const char *label, unsigned menu_type, char *s, size_t len) { unsigned offset = (menu_type - MENU_SETTINGS_AUDIO_MIXER_STREAM_ACTIONS_BEGIN); - /* TODO/FIXME - Localize */ - size_t _len = strlcpy(s, "Mixer Stream", len); - snprintf(s + _len, len - _len, " #%d: %s", offset + 1, audio_driver_mixer_get_stream_name(offset)); + snprintf(s, len , msg_hash_to_str(MENU_ENUM_LABEL_MIXER_STREAM), offset + 1, audio_driver_mixer_get_stream_name(offset)); return 0; } #endif diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index d5247c9f41..b05a384b8e 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -6343,7 +6343,7 @@ unsigned menu_displaylist_build_list( { char msg[128]; char msg_lbl[128]; - snprintf(msg, sizeof(msg), "Mixer Stream #%d :\n", i+1); + snprintf(msg, sizeof(msg), msg_hash_to_str(MENU_ENUM_LABEL_MIXER_STREAM), i+1, "\n"); snprintf(msg_lbl, sizeof(msg_lbl), "audio_mixer_stream_%d\n", i); if (menu_entries_append(list, msg, msg_lbl, MSG_UNKNOWN, diff --git a/menu/menu_setting.c b/menu/menu_setting.c index b1b1bdf125..1f7b95cafe 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -6383,16 +6383,25 @@ static void setting_get_string_representation_uint_video_rotation(rarch_setting_ { if (setting) { - char rotation_lut[4][32] = + switch (*setting->value.target.unsigned_integer) { - "Normal", - "90 deg", - "180 deg", - "270 deg" - }; - - strlcpy(s, rotation_lut[*setting->value.target.unsigned_integer], - len); + case VIDEO_ROTATION_NORMAL: + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_NORMAL), + len); + break; + case VIDEO_ROTATION_90_DEG: + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_90_DEG), + len); + break; + case VIDEO_ROTATION_180_DEG: + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_180_DEG), + len); + break; + case VIDEO_ROTATION_270_DEG: + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_270_DEG), + len); + break; + } } } @@ -6401,16 +6410,25 @@ static void setting_get_string_representation_uint_screen_orientation(rarch_sett { if (setting) { - char rotation_lut[4][32] = + switch (*setting->value.target.unsigned_integer) { - "Normal", - "90 deg", - "180 deg", - "270 deg" - }; - - strlcpy(s, rotation_lut[*setting->value.target.unsigned_integer], - len); + case ORIENTATION_NORMAL: + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_NORMAL), + len); + break; + case ORIENTATION_VERTICAL: + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_VERTICAL), + len); + break; + case ORIENTATION_FLIPPED: + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED), + len); + break; + case ORIENTATION_FLIPPED_ROTATED: + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED_ROTATED), + len); + break; + } } } diff --git a/msg_hash.h b/msg_hash.h index 1768da63fc..2d4fe2ad57 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -544,6 +544,7 @@ enum msg_hash_enums MENU_LABEL(VIDEO_STREAM_QUALITY), MENU_LABEL(STREAMING_URL), MENU_LABEL(UDP_STREAM_PORT), + MENU_LABEL(MIXER_STREAM), MENU_LABEL(ADD_TO_MIXER), MENU_LABEL(ADD_TO_MIXER_AND_PLAY), MENU_LABEL(ADD_TO_MIXER_AND_COLLECTION), @@ -1186,7 +1187,17 @@ enum msg_hash_enums MENU_LABEL(VIDEO_VIEWPORT_CUSTOM_WIDTH), MENU_LABEL(VIDEO_VIEWPORT_CUSTOM_HEIGHT), MENU_LABEL(VIDEO_GAMMA), + MENU_LABEL(VIDEO_ALLOW_ROTATE), + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_NORMAL, + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_90_DEG, + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_180_DEG, + MENU_ENUM_LABEL_VALUE_VIDEO_ROTATION_270_DEG, + MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_NORMAL, + MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_VERTICAL, + MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED, + MENU_ENUM_LABEL_VALUE_VIDEO_ORIENTATION_FLIPPED_ROTATED, + MENU_LABEL(VIDEO_SHARED_CONTEXT), MENU_LABEL(DRIVER_SWITCH_ENABLE), MENU_LABEL(VIDEO_THREADED), @@ -2774,6 +2785,11 @@ enum msg_hash_enums MENU_LABEL(VIDEO_FORCE_ASPECT), MENU_LABEL(VIDEO_ASPECT_RATIO_AUTO), MENU_LABEL(VIDEO_ASPECT_RATIO_INDEX), + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CONFIG, + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_SQUARE_PIXEL, + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CORE_PROVIDED, + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_CUSTOM, + MENU_ENUM_LABEL_VALUE_VIDEO_ASPECT_RATIO_FULL, #if defined(DINGUX) MENU_LABEL(VIDEO_DINGUX_IPU_KEEP_ASPECT), MENU_LABEL(VIDEO_DINGUX_IPU_FILTER_TYPE),