Compare commits

...

11 Commits

Author SHA1 Message Date
Cameron Gutman 11dde835d1 Version 9.1 2020-04-14 22:29:41 -07:00
Cameron Gutman 52c47c288c Disable the 7.1 surround sound option prior to Lollipop 2020-04-12 12:28:42 -07:00
Cameron Gutman 63072aa8e1 Disable SOPS for streams over 60 FPS for GFE 3.20.3 2020-04-12 12:13:38 -07:00
Cameron Gutman 4cca3ac922 Update moonlight-common-c to avoid termination delay on GFE 3.20.3 2020-04-12 12:13:04 -07:00
Cameron Gutman 604bc1ec11 Add Romanian translation from KiralyCraft on Discord 2020-04-12 12:04:04 -07:00
Cameron Gutman 5d7fbf3195 Fix indentation of arrays.xml 2020-04-10 22:17:28 -07:00
Zero O 8c56e6f0d4 Update arrays.xml (#813)
translation update
2020-04-10 22:12:18 -07:00
Zero O 2069be7932 Update arrays.xml (#814)
translation update
2020-04-10 22:11:56 -07:00
Zero O 9c1c2991a9 Update strings.xml (#812)
translation update
2020-04-10 21:13:10 -07:00
Zero O 81dabf2713 Update strings.xml (#811)
translation update
2020-04-10 21:12:48 -07:00
Cameron Gutman 27520cb77e Use GetPrimitiveArrayCritical() for audio data to avoid extra copies 2020-04-09 19:12:09 -07:00
14 changed files with 273 additions and 22 deletions
+2 -2
View File
@@ -7,8 +7,8 @@ android {
minSdkVersion 16
targetSdkVersion 29
versionName "9.0"
versionCode = 219
versionName "9.1"
versionCode = 220
}
flavorDimensions "root"
@@ -621,11 +621,6 @@ public class NvHTTP {
}
public boolean launchApp(ConnectionContext context, int appId, boolean enableHdr) throws IOException, XmlPullParserException {
// Using an FPS value over 60 causes SOPS to default to 720p60,
// so force it to 60 when starting. This won't impact our ability
// to get > 60 FPS while actually streaming though.
int fps = context.streamConfig.getLaunchRefreshRate() > 60 ? 60 : context.streamConfig.getLaunchRefreshRate();
// Using an unsupported resolution (not 720p, 1080p, or 4K) causes
// GFE to force SOPS to 720p60. This is fine for < 720p resolutions like
// 360p or 480p, but it is not ideal for 1440p and other resolutions.
@@ -639,10 +634,20 @@ public class NvHTTP {
enableSops = false;
}
// Using SOPS with FPS values over 60 causes GFE to fall back
// to 720p60. On previous GFE versions, we could avoid this by
// forcing the FPS value to 60 when launching the stream, but
// now on GFE 3.20.3 that seems to trigger some sort of
// frame rate limiter that locks the game to 60 FPS.
if (context.streamConfig.getLaunchRefreshRate() > 60) {
LimeLog.info("Disabling SOPS due to high frame rate: "+context.streamConfig.getLaunchRefreshRate());
enableSops = false;
}
String xmlStr = openHttpConnectionToString(baseUrlHttps +
"/launch?" + buildUniqueIdUuidString() +
"&appid=" + appId +
"&mode=" + context.negotiatedWidth + "x" + context.negotiatedHeight + "x" + fps +
"&mode=" + context.negotiatedWidth + "x" + context.negotiatedHeight + "x" + context.streamConfig.getLaunchRefreshRate() +
"&additionalStates=1&sops=" + (enableSops ? 1 : 0) +
"&rikey="+bytesToHex(context.riKey.getEncoded()) +
"&rikeyid="+context.riKeyId +
@@ -10,7 +10,7 @@ import com.limelight.nvstream.jni.MoonBridge;
public class PreferenceConfiguration {
private static final String LEGACY_RES_FPS_PREF_STRING = "list_resolution_fps";
private static final String LEGACY_ENABLE_51_SURROUND_PREF_STRING = "checkbox_51_surround";
static final String RESOLUTION_PREF_STRING = "list_resolution";
static final String FPS_PREF_STRING = "list_fps";
@@ -26,8 +26,7 @@ public class PreferenceConfiguration {
private static final String LIST_MODE_PREF_STRING = "checkbox_list_mode";
private static final String SMALL_ICONS_PREF_STRING = "checkbox_small_icon_mode";
private static final String MULTI_CONTROLLER_PREF_STRING = "checkbox_multi_controller";
private static final String AUDIO_CONFIG_PREF_STRING = "list_audio_config";
private static final String LEGACY_ENABLE_51_SURROUND_PREF_STRING = "checkbox_51_surround";
static final String AUDIO_CONFIG_PREF_STRING = "list_audio_config";
private static final String USB_DRIVER_PREF_SRING = "checkbox_usb_driver";
private static final String VIDEO_FORMAT_PREF_STRING = "video_format";
private static final String ONSCREEN_CONTROLLER_PREF_STRING = "checkbox_show_onscreen_controls";
@@ -302,6 +302,18 @@ public class StreamSettings extends Activity {
// Never remove 30 FPS or 60 FPS
}
// Android L introduces proper 7.1 surround sound support. Remove the 7.1 option
// for earlier versions of Android to prevent AudioTrack initialization issues.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
LimeLog.info("Excluding 7.1 surround sound option based on OS");
removeValue(PreferenceConfiguration.AUDIO_CONFIG_PREF_STRING, "71", new Runnable() {
@Override
public void run() {
setValue(PreferenceConfiguration.AUDIO_CONFIG_PREF_STRING, "51");
}
});
}
// Android L introduces the drop duplicate behavior of releaseOutputBuffer()
// that the unlock FPS option relies on to not massively increase latency.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
+4 -4
View File
@@ -243,7 +243,7 @@ void BridgeArCleanup() {
void BridgeArDecodeAndPlaySample(char* sampleData, int sampleLength) {
JNIEnv* env = GetThreadEnv();
jshort* decodedData = (*env)->GetShortArrayElements(env, DecodedAudioBuffer, 0);
jshort* decodedData = (*env)->GetPrimitiveArrayCritical(env, DecodedAudioBuffer, NULL);
int decodeLen = opus_multistream_decode(Decoder,
(const unsigned char*)sampleData,
@@ -252,8 +252,8 @@ void BridgeArDecodeAndPlaySample(char* sampleData, int sampleLength) {
OpusConfig.samplesPerFrame,
0);
if (decodeLen > 0) {
// We must release the array elements first to ensure the data is copied before the callback
(*env)->ReleaseShortArrayElements(env, DecodedAudioBuffer, decodedData, 0);
// We must release the array elements before making further JNI calls
(*env)->ReleasePrimitiveArrayCritical(env, DecodedAudioBuffer, decodedData, 0);
(*env)->CallStaticVoidMethod(env, GlobalBridgeClass, BridgeArPlaySampleMethod, DecodedAudioBuffer);
if ((*env)->ExceptionCheck(env)) {
@@ -263,7 +263,7 @@ void BridgeArDecodeAndPlaySample(char* sampleData, int sampleLength) {
}
else {
// We can abort here to avoid the copy back since no data was modified
(*env)->ReleaseShortArrayElements(env, DecodedAudioBuffer, decodedData, JNI_ABORT);
(*env)->ReleasePrimitiveArrayCritical(env, DecodedAudioBuffer, decodedData, JNI_ABORT);
}
}
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="audio_config_names">
<item>Stereo</item>
<item>Sunet Surround 5.1</item>
<item>Sunet Surround 7.1</item>
</string-array>
<string-array name="decoder_names">
<item>Auto-selectează decodorul</item>
<item>Forțează decodarea Software</item>
<item>Forțează decodarea Hardware</item>
</string-array>
<string-array name="video_format_names">
<item>Folosește H.265 doar dacă e stabil</item>
<item>Folosește H.265 mereu (se poate bloca)</item>
<item>Nu folosi H.265</item>
</string-array>
</resources>
+193
View File
@@ -0,0 +1,193 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Shortcut strings -->
<string name="scut_deleted_pc">PC șters</string>
<string name="scut_not_paired">PC neîmperecheat</string>
<string name="scut_pc_not_found">PC negăsit</string>
<string name="scut_invalid_uuid">PC-ul este invalid</string>
<string name="scut_invalid_app_id">Aplicația este invalidă</string>
<!-- Help strings -->
<string name="help_loading_title">Ajutor</string>
<string name="help_loading_msg">Se încarcă pagina de ajutor…</string>
<!-- PC view menu entries -->
<string name="pcview_menu_app_list">Vezi lista de jocuri</string>
<string name="pcview_menu_pair_pc">Împerechează PC-ul</string>
<string name="pcview_menu_unpair_pc">Desperechează</string>
<string name="pcview_menu_send_wol">Trimite o cerere Wake-On-LAN</string>
<string name="pcview_menu_delete_pc">Șterge PC</string>
<string name="pcview_menu_details">Vezi detalii</string>
<!-- Pair messages -->
<string name="pairing">Se împerechează…</string>
<string name="pair_pc_offline">PC-ul nu este accesibil</string>
<string name="pair_pc_ingame">PC-ul rulează un joc acum. Trebuie să închizi jocul pentru a-l putea împerechea.</string>
<string name="pair_pairing_title">Se împerechează</string>
<string name="pair_pairing_msg">Te rugăm să introduci urmatorul PIN în PC-ul pe care îl împerechezi:</string>
<string name="pair_incorrect_pin">PIN-ul este greșit</string>
<string name="pair_fail">Împerecherea a eșuat</string>
<string name="pair_already_in_progress">Împerecherea este deja în curs</string>
<!-- WOL messages -->
<string name="wol_pc_online">PC-ul este accesibil</string>
<string name="wol_no_mac">Nu s-a putut porni PC-ul deoarece GFE nu a comunicat o adresa MAC</string>
<string name="wol_waking_pc">Se pornește PC-ul…</string>
<string name="wol_waking_msg">Poate dura puțin până PC-ul pornește. Dacă nu pornește, verifică dacă este configurat corect pentru Wake-On-LAN.</string>
<string name="wol_fail">Nu s-au putut trimite pachetele Wake-On-LAN</string>
<!-- Unpair messages -->
<string name="unpairing">Desperecherechere…</string>
<string name="unpair_success">Desperecherechere efectuată cu succes</string>
<string name="unpair_fail">Desperecherea a eșuat</string>
<string name="unpair_error">Dispozitivul nu este împerecheat</string>
<!-- Errors -->
<string name="error_pc_offline">PC-ul este inaccesibil</string>
<string name="error_manager_not_running">Serviciul ComputerManager nu este pornit. Te rugăm să aștepți câteva secunde sau să repornești aplicația.</string>
<string name="error_unknown_host">Nu am putut identifica hostul</string>
<string name="error_404">GFE a returnat un cod de eroare HTTP 404. Asigură-te ca PC-ul are o placa video suportată.
Este posibil sa apară această eroare daca folosești o alta aplicație de remote desktop. Încearcă să repornești PC-ul sau să reinstalezi GFE.
</string>
<string name="title_decoding_error">Decodorul video s-a închis în mod neașteptat</string>
<string name="message_decoding_error">Moonlight s-a închis în mod neașteptat datorită unei incompatibilități cu decodorul video al acestui dispozitiv. Asigură-te ca folosești ultima versiune de GFE. Dacă problema persistă, ajustează setările de streaming.</string>
<string name="title_decoding_reset">Resetează setările video</string>
<string name="message_decoding_reset">Decodorul video al acestui dispozitiv continuă să se blocheze folosind setările video curente. Au fost resetate cele implicite.</string>
<string name="error_usb_prohibited">Accesul USB este interzis de către administratorul dispozitivului. Verifică setarile Knox sau MDM.</string>
<string name="unable_to_pin_shortcut">Launcher-ul tău curent nu permite crearea de scurtături fixate.</string>
<string name="video_decoder_init_failed">Inițializarea decodorului video a eșuat. Este posibil ca acest dispozitiv să nu suporte rezoluția sau rata cadrelor selectată.</string>
<!-- Start application messages -->
<string name="conn_establishing_title">Se stabilește conexiunea</string>
<string name="conn_establishing_msg">Se pornește conexiunea</string>
<string name="conn_metered">Atenție: Conexiunea ta curentă este contorizată!</string>
<string name="conn_client_latency">Latența medie a decodării cadrelor:</string>
<string name="conn_client_latency_hw">latența decodorului hardware:</string>
<string name="conn_hardware_latency">Latența medie a decodării cadrelor (hardware):</string>
<string name="conn_starting">Se pornește</string>
<string name="conn_error_title">Eroare la conectare</string>
<string name="conn_error_msg">Pornirea a eșuat</string>
<string name="conn_terminated_title">Conexiunea închisă</string>
<string name="conn_terminated_msg">Conexiunea a fost terminată</string>
<!-- General strings -->
<string name="ip_hint">Adresa IP a PC-ului cu GFE</string>
<string name="searching_pc">Se caută PC-uri cu GameStream activat…\n\n
Asigură-te ca GameStream este activat în setările Geforce Experience SHIELD.</string>
<string name="yes">Da</string>
<string name="no">Nu</string>
<string name="lost_connection">S-a pierdut conexiunea catre PC</string>
<string name="title_details">Detalii</string>
<string name="help">Ajutor</string>
<string name="delete_pc_msg">Sigur dorești să ștergi acest PC?</string>
<string name="slow_connection_msg">Conexiune inceată catre PC\nRedu rata de biți</string>
<string name="poor_connection_msg">Conexiune slabă catre PC</string>
<string name="perf_overlay_text">Dimensiunile video: %1$s\nDecodor: %2$s\nRata cadrelor estimata PC: %3$.2f FPS\nRata cadrelor primite din rețea: %4$.2f FPS\nRata de afisare a cadrelor: %5$.2f FPS\nCadre pierdute de rețea: %6$.2f%%\nTimpul mediu de primire: %7$.2f ms\nTimpul mediu de decodare: %8$.2f ms</string>
<!-- AppList activity -->
<string name="applist_connect_msg">Se conectează la PC…</string>
<string name="applist_menu_resume">Continuă Sesiunea</string>
<string name="applist_menu_quit">Închide Sesiunea</string>
<string name="applist_menu_quit_and_start">Închide Jocul Curent si Pornește</string>
<string name="applist_menu_cancel">Anulează</string>
<string name="applist_menu_details">Vezi detalii</string>
<string name="applist_menu_scut">Creează o scurtătură</string>
<string name="applist_menu_tv_channel">Adaugă la canal</string>
<string name="applist_refresh_title">Lista de aplicații</string>
<string name="applist_refresh_msg">Reîmprospătare aplicații…</string>
<string name="applist_refresh_error_title">Eroare</string>
<string name="applist_refresh_error_msg">Nu s-a putut obține lista de aplicații</string>
<string name="applist_quit_app">Închidere în curs</string>
<string name="applist_quit_success">Închis cu succes</string>
<string name="applist_quit_fail">Nu s-a putut închide lista</string>
<string name="applist_quit_confirmation">Sigur dorești să închizi aplicația curentă? Toate datele nesalvate vor fi pierdute.</string>
<string name="applist_details_id">ID-ul aplicației:</string>
<!-- Add computer manually activity -->
<string name="title_add_pc">Adaugă PC manual</string>
<string name="msg_add_pc">Conectare în curs…</string>
<string name="addpc_fail">Nu s-a putut efectua conectarea la adresa introdusă. Asigurăte ca porturile nu sunt blocate in firewall.</string>
<string name="addpc_success">PC adăugat cu succes</string>
<string name="addpc_unknown_host">Nu am putut identifica adresa PC-ului. Asigură-te că ai introdus-o corect.</string>
<string name="addpc_enter_ip">Trebuie să introduci o adresa IP</string>
<string name="addpc_wrong_sitelocal">Adresa introdusă nu pare corectă. Pentru conectare prin Internet, este nevoie de adresa publică a routerului.</string>
<!-- Preferences -->
<string name="category_basic_settings">Setări de bază</string>
<string name="title_resolution_list">Rezolutia video</string>
<string name="summary_resolution_list">Crește-o pentru a îmbunătăți claritatea imaginii. Descrește-o pentru dispozitive neperformante sau conexiune slabă.</string>
<string name="title_fps_list">Rata cadrelor</string>
<string name="summary_fps_list">Crește-o pentru a îmbunătăți fluiditatea imaginilor. Descrește-o pentru dispozitive neperformante sau conexiune slabă.</string>
<string name="title_seekbar_bitrate">Rata de biți</string>
<string name="summary_seekbar_bitrate">Crește-o pentru a îmbunătăți calitatea imaginilor. Descrește-o pentru dispozitive neperformante sau conexiune slabă.</string>
<string name="suffix_seekbar_bitrate">Kbps</string>
<string name="title_unlock_fps">Deblochează toate ratele de cadre posibile</string>
<string name="summary_unlock_fps">Fluxul video de rate mai mari poate reduce latența folosind dispozitive performante, dar poate introduce erori daca nu sunt suportate.</string>
<string name="title_checkbox_stretch_video">Întindeți video pe ecranul complet</string>
<string name="title_checkbox_disable_warnings">Dezactivează mesajele de avertizare</string>
<string name="summary_checkbox_disable_warnings">Dezactivează mesajele de avertizare privind rețeaua în timpul conexiunii</string>
<string name="title_checkbox_enable_pip">Activează modul Picture-In-Picture</string>
<string name="summary_checkbox_enable_pip">Permite vizualizarea (dar nu și controlul) când efectuezi multitasking</string>
<string name="category_audio_settings">Setări Audio</string>
<string name="title_audio_config_list">Configurarea sunetului surround</string>
<string name="summary_audio_config_list">Activeaza sunetul 5.1 sau 7.1 pentru sisteme home-theater</string>
<string name="category_input_settings">Setări de control</string>
<string name="title_checkbox_multi_controller">Detectează automat prezența controllerelor.</string>
<string name="summary_checkbox_multi_controller">Dezactivarea acestei opțiuni implică prezența constantă a unui controller</string>
<string name="title_checkbox_vibrate_fallback">Simuleaza efectul de vibratie</string>
<string name="summary_checkbox_vibrate_fallback">Dacă controllerul nu suportă vibrații, va vibra dispozitivul în schimb.</string>
<string name="title_seekbar_deadzone">Zona moartă a stickului analogic</string>
<string name="suffix_seekbar_deadzone">%</string>
<string name="title_checkbox_xb1_driver">Driver pentru controllerele de Xbox 360/One</string>
<string name="summary_checkbox_xb1_driver">Activează un driver USB pentru dispozitivele fără suport nativ pentru controllere Xbox</string>
<string name="title_checkbox_usb_bind_all">Inlocuiește driverul implicit pentru controllere</string>
<string name="summary_checkbox_usb_bind_all">Forțează driverul USB Moonlight să preia toate controllerele Xbox suportate</string>
<string name="title_checkbox_mouse_emulation">Simulează mouse cu controllerul</string>
<string name="summary_checkbox_mouse_emulation">Apăsarea lungă pe butonul Start schimba modul de operare a controllerului în modul mouse.</string>
<string name="title_checkbox_mouse_nav_buttons">Activează butoanele de înainte și înapoi ale mousului</string>
<string name="summary_checkbox_mouse_nav_buttons">Această opțiune poate afecta click dreapta pentru unele dispozitive problematice.</string>
<string name="category_on_screen_controls_settings">Setări ale controalelor pe ecran</string>
<string name="title_checkbox_show_onscreen_controls">Afișează controale pe ecran</string>
<string name="summary_checkbox_show_onscreen_controls">Afișează un controller virtual pe ecran</string>
<string name="title_checkbox_vibrate_osc">Activează vibrațiile</string>
<string name="summary_checkbox_vibrate_osc">Dispozitivul va vibra asemănător unui controller</string>
<string name="title_only_l3r3">Afișează doar L3 si R3</string>
<string name="summary_only_l3r3">Ascunde toate butoanele în afară de L3 and R3</string>
<string name="title_reset_osc">Șterge schema salvată a controalelor</string>
<string name="summary_reset_osc">Resetează toate controalele de pe ecran la poziția și dimensiunea implicită</string>
<string name="dialog_title_reset_osc">Resetarea schemei de controale</string>
<string name="dialog_text_reset_osc">Sigur dorești să ștergi schema salvată a controalelor de pe ecran?</string>
<string name="toast_reset_osc_success">Controalele de pe ecran au fost resetate la setarile implicite</string>
<string name="title_osc_opacity">Modifică opacitatea controalelor de pe ecran</string>
<string name="summary_osc_opacity">Ajustează gradul de transparență al controalelor de pe ecran</string>
<string name="dialog_title_osc_opacity">Modifică opacitatea</string>
<string name="suffix_osc_opacity">%</string>
<string name="category_ui_settings">Setari UI</string>
<string name="title_language_list">Limba (Language)</string>
<string name="summary_language_list">Limba folosită de către Moonlight</string>
<string name="title_checkbox_list_mode">Folosește liste în loc de grile</string>
<string name="summary_checkbox_list_mode">Aplicațiile și PC-urile vor fi afișate in liste in loc de grile</string>
<string name="title_checkbox_small_icon_mode">Folosește iconițe mici</string>
<string name="summary_checkbox_small_icon_mode">Iconițele folosite în grile vor fi mici pentru a încăpea mai multe odata</string>
<string name="category_host_settings">Setările PC-ului gazdă</string>
<string name="title_checkbox_enable_sops">Optimizarea setărilor de joc</string>
<string name="summary_checkbox_enable_sops">Permite GFE să modifice setările jocurilor pentru experiența optimă</string>
<string name="title_checkbox_host_audio">Redă audio si pe PC</string>
<string name="summary_checkbox_host_audio">Sunetul se va auzi atat pe acest dispozitiv cât și pe PC</string>
<string name="category_advanced_settings">Setări avansate</string>
<string name="title_disable_frame_drop">Nu pierde cadre intenționat</string>
<string name="summary_disable_frame_drop">Poate să reducă micro-stuttering pe anumite device-uri, dar s-ar putea să crească latența</string>
<string name="title_video_format">Modifica setările H.265</string>
<string name="summary_video_format">H.265 funcționează cu o conexiune mai slaba, dar necesită un dispozitiv recent, performant</string>
<string name="title_enable_hdr">Activează HDR (Experimental)</string>
<string name="summary_enable_hdr">Folosește HDR daca aplicația si placa video suportă. Necesită o placa video seria GTX 1000 sau mai nouă.</string>
<string name="title_enable_perf_overlay">Activează statisticile de performanță</string>
<string name="summary_enable_perf_overlay">Afișează în timp real statisticile de performanță ale conexiunii.</string>
</resources>
+9 -3
View File
@@ -1,15 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<string-array name="decoder_names">
<item>自动选择解码器</item>
<item>强制软解</item>
<item>强制硬解</item>
</string-array>
</string-array>
<string-array name="video_format_names">
<string-array name="video_format_names">
<item>如果稳定才使用H.265</item>
<item>强制使用H.265(不稳定)</item>
<item>不使用H.265</item>
</string-array>
<string-array name="audio_config_names">
<item>立体声</item>
<item>5.1环绕声</item>
<item>7.1环绕声</item>
</string-array>
</resources>
@@ -134,6 +134,8 @@
<string name="summary_checkbox_enable_pip">允许多任务时观看串流画面(但不操作)</string>
<string name="category_audio_settings"> 音频设置 </string>
<string name="title_audio_config_list"> 环绕声设置 </string>
<string name="summary_audio_config_list"> 为家庭影院系统启用5.1或7.1环绕声 </string>
<string name="category_input_settings">输入设置</string>
<string name="title_checkbox_multi_controller"> 自动检测手柄 </string>
+9 -3
View File
@@ -1,15 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="decoder_names">
<string-array name="decoder_names">
<item>自動選擇解碼器</item>
<item>強制軟解</item>
<item>強制硬解</item>
</string-array>
</string-array>
<string-array name="video_format_names">
<string-array name="video_format_names">
<item>如果穩定才使用H.265</item>
<item>強制使用H.265(不穩定)</item>
<item>不使用H.265</item>
</string-array>
<string-array name="audio_config_names">
<item>身歷聲</item>
<item>5.1環繞聲</item>
<item>7.1環繞聲</item>
</string-array>
</resources>
@@ -134,6 +134,8 @@
<string name="summary_checkbox_enable_pip">允許多工時觀看串流畫面(但不操作)</string>
<string name="category_audio_settings"> 音訊設置 </string>
<string name="title_audio_config_list"> 環繞聲設置 </string>
<string name="summary_audio_config_list"> 為家庭劇院系統啟用5.1或7.1環繞聲 </string>
<string name="category_input_settings">輸入設置</string>
<string name="title_checkbox_multi_controller"> 自動檢測手柄 </string>
+2
View File
@@ -54,6 +54,7 @@
<item>Español</item>
<item>Français</item>
<item>Deutsch</item>
<item>Română</item>
</string-array>
<string-array name="language_values" translatable="false">
<item>default</item>
@@ -68,6 +69,7 @@
<item>es</item>
<item>fr</item>
<item>de</item>
<item>ro</item>
</string-array>
<string-array name="decoder_names">
@@ -0,0 +1,4 @@
- Improved support for GFE 3.20.3.63
- Audio performance optimization
- Added Romanian translation
- Updated Simplified Chinese and Traditional Chinese translations