mirror of
https://github.com/visualboyadvance-m/visualboyadvance-m
synced 2025-10-05 23:52:49 +02:00
Compare commits
3 Commits
fc34bbbd12
...
5a21d94269
Author | SHA1 | Date | |
---|---|---|---|
|
5a21d94269 | ||
|
f653261f97 | ||
|
4208f5af6e |
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Aleksandar Hadzhivelichkov <Raphaelo245@gmail.com>, 2022\n"
|
||||
"Language-Team: Bulgarian (http://app.transifex.com/bgk/vba-m/language/bg/)\n"
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Language: bg\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -26,6 +26,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Устройство по подразбиране"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Не можа да се създаде главен прозорец"
|
||||
|
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Irriep Nala Novram <per.morvan.bzh29@gmail.com>, 2017,2019\n"
|
||||
"Language-Team: Breton (http://app.transifex.com/bgk/vba-m/language/br/)\n"
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Language: br\n"
|
||||
"Plural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -26,6 +26,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Trobarzhell dre-ziouer"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "N'hall ket krouiñ ar prenestr-pennañ"
|
||||
|
@@ -12,7 +12,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Patrik Jager <patrikusp@gmail.com>, 2018\n"
|
||||
"Language-Team: Czech (http://app.transifex.com/bgk/vba-m/language/cs/)\n"
|
||||
@@ -22,7 +22,7 @@ msgstr ""
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -30,6 +30,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Výchozí zařízení"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Nelze vytvořit hlavní okno"
|
||||
|
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Orfeas Artinopoulos, 2025\n"
|
||||
"Language-Team: Greek (http://app.transifex.com/bgk/vba-m/language/el/)\n"
|
||||
@@ -19,7 +19,7 @@ msgstr ""
|
||||
"Language: el\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -27,6 +27,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Προεπιλεγμένη συσκευή"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Αδυναμία δημιουργίας κεντρικού παραθύρου"
|
||||
|
@@ -31,7 +31,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Eequiis Vásquez, 2025\n"
|
||||
"Language-Team: Spanish (http://app.transifex.com/bgk/vba-m/language/es/)\n"
|
||||
@@ -41,7 +41,7 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -49,6 +49,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Dispositivo por defecto"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "No se pudo crear la ventana principal"
|
||||
|
@@ -24,7 +24,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Rene Moreira, 2025\n"
|
||||
"Language-Team: Spanish (Latin America) (http://app.transifex.com/bgk/vba-m/language/es_419/)\n"
|
||||
@@ -34,7 +34,7 @@ msgstr ""
|
||||
"Language: es_419\n"
|
||||
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -42,6 +42,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Dispositivo predeterminado"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "No se pudo crear ventana principal"
|
||||
|
@@ -20,7 +20,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Thibault <thibaultbruneliere@gmail.com>, 2019\n"
|
||||
"Language-Team: French (France) (http://app.transifex.com/bgk/vba-m/language/fr_FR/)\n"
|
||||
@@ -30,7 +30,7 @@ msgstr ""
|
||||
"Language: fr_FR\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -38,6 +38,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Périphérique par défaut"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Impossible de créer la fenêtre principale"
|
||||
|
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: David Rebolo Magariños <drgaga345@gmail.com>, 2021\n"
|
||||
"Language-Team: Galician (http://app.transifex.com/bgk/vba-m/language/gl/)\n"
|
||||
@@ -21,7 +21,7 @@ msgstr ""
|
||||
"Language: gl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -29,6 +29,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Dispositivo por defecto"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Non se pode crear a xanela principal"
|
||||
|
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Ds886 <daniel.ashkenazi@gmail.com>, 2022\n"
|
||||
"Language-Team: Hebrew (Israel) (http://app.transifex.com/bgk/vba-m/language/he_IL/)\n"
|
||||
@@ -19,7 +19,7 @@ msgstr ""
|
||||
"Language: he_IL\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -27,6 +27,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "מכשיר ברירת מחדל"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "לא יכל ליצור את החלון המרכזי"
|
||||
|
@@ -10,7 +10,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Greg@Cyberdyne, 2018\n"
|
||||
"Language-Team: Hungarian (Hungary) (http://app.transifex.com/bgk/vba-m/language/hu_HU/)\n"
|
||||
@@ -20,7 +20,7 @@ msgstr ""
|
||||
"Language: hu_HU\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -28,6 +28,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Alapértelmezett eszköz"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "A főablak nem nyitható meg"
|
||||
|
@@ -14,7 +14,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Rahman Abd (Ckuzero), 2025\n"
|
||||
"Language-Team: Indonesian (http://app.transifex.com/bgk/vba-m/language/id/)\n"
|
||||
@@ -24,7 +24,7 @@ msgstr ""
|
||||
"Language: id\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -32,6 +32,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Perangkat bawaan"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Tidak dapat membuat window utama"
|
||||
|
@@ -25,7 +25,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: ludo thorn, 2025\n"
|
||||
"Language-Team: Italian (Italy) (http://app.transifex.com/bgk/vba-m/language/it_IT/)\n"
|
||||
@@ -35,7 +35,7 @@ msgstr ""
|
||||
"Language: it_IT\n"
|
||||
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -43,6 +43,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Device predefinito"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Impossibile creare una finestra principale"
|
||||
|
@@ -17,7 +17,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Lanta Liz, 2025\n"
|
||||
"Language-Team: Japanese (http://app.transifex.com/bgk/vba-m/language/ja/)\n"
|
||||
@@ -27,7 +27,7 @@ msgstr ""
|
||||
"Language: ja\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -35,6 +35,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "既定のデバイス"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "メインウィンドウを作成できませんでした"
|
||||
|
@@ -12,7 +12,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Hoseok Seo <ddinghoya@gmail.com>, 2022-2025\n"
|
||||
"Language-Team: Korean (Korea) (http://app.transifex.com/bgk/vba-m/language/ko_KR/)\n"
|
||||
@@ -22,7 +22,7 @@ msgstr ""
|
||||
"Language: ko_KR\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -30,6 +30,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "기본 장치"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "메인 윈도우를 생성할 수 없습니다."
|
||||
|
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: abuyop <abuyop@gmail.com>, 2017\n"
|
||||
"Language-Team: Malay (Malaysia) (http://app.transifex.com/bgk/vba-m/language/ms_MY/)\n"
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Language: ms_MY\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -26,6 +26,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Peranti lalai"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Tidak dapat cipta tetingkap utama"
|
||||
|
@@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>, 2016-2017\n"
|
||||
"Language-Team: Norwegian Bokmål (http://app.transifex.com/bgk/vba-m/language/nb/)\n"
|
||||
@@ -21,7 +21,7 @@ msgstr ""
|
||||
"Language: nb\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -29,6 +29,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Standard enhet"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Kunne ikke opprette hovedvindu"
|
||||
|
@@ -12,7 +12,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: LevensLes The, 2022\n"
|
||||
"Language-Team: Dutch (http://app.transifex.com/bgk/vba-m/language/nl/)\n"
|
||||
@@ -22,7 +22,7 @@ msgstr ""
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -30,6 +30,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Standaard apparaat"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Kon hoofdvenster niet aanmaken"
|
||||
|
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Damian Drakon <dragon1590@gmail.com>, 2019-2020,2022-2023\n"
|
||||
"Language-Team: Polish (Poland) (http://app.transifex.com/bgk/vba-m/language/pl_PL/)\n"
|
||||
@@ -18,7 +18,7 @@ msgstr ""
|
||||
"Language: pl_PL\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -26,6 +26,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Urządzenie domyślne"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Nie można utworzyć okna głównego"
|
||||
|
@@ -39,7 +39,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Mateus, 2020\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://app.transifex.com/bgk/vba-m/language/pt_BR/)\n"
|
||||
@@ -49,7 +49,7 @@ msgstr ""
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -57,6 +57,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Dispositivo padrão"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Não conseguiu criar a janela principal"
|
||||
|
@@ -25,7 +25,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Кирилл kirillovich, 2025\n"
|
||||
"Language-Team: Russian (Russia) (http://app.transifex.com/bgk/vba-m/language/ru_RU/)\n"
|
||||
@@ -35,7 +35,7 @@ msgstr ""
|
||||
"Language: ru_RU\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -43,6 +43,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Устройство по умолчанию"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Невозможно создать главное окно"
|
||||
|
@@ -16,7 +16,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Daniel Nylander <po@danielnylander.se>, 2025\n"
|
||||
"Language-Team: Swedish (http://app.transifex.com/bgk/vba-m/language/sv/)\n"
|
||||
@@ -26,7 +26,7 @@ msgstr ""
|
||||
"Language: sv\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -34,6 +34,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Standardenhet"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Kunde inte skapa huvudfönster"
|
||||
|
@@ -17,7 +17,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: adalet Mustafa, 2025\n"
|
||||
"Language-Team: Turkish (http://app.transifex.com/bgk/vba-m/language/tr/)\n"
|
||||
@@ -27,7 +27,7 @@ msgstr ""
|
||||
"Language: tr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -35,6 +35,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Varsayılan cihaz"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Ana pencere yaratılamadı"
|
||||
|
@@ -9,7 +9,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: Svyatoslav <zarazafamila@gmail.com>, 2023\n"
|
||||
"Language-Team: Ukrainian (http://app.transifex.com/bgk/vba-m/language/uk/)\n"
|
||||
@@ -19,7 +19,7 @@ msgstr ""
|
||||
"Language: uk\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -27,6 +27,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "Типовий пристрій"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "Неможливо створити головне вікно."
|
||||
|
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -25,6 +25,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr ""
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr ""
|
||||
|
@@ -24,7 +24,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VBA-M\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2025-09-30 16:00+0000\n"
|
||||
"POT-Creation-Date: 2025-10-04 04:00+0000\n"
|
||||
"PO-Revision-Date: 2011-12-03 19:42+0000\n"
|
||||
"Last-Translator: 天绝星 <c.cejhb@gmail.com>, 2017,2019-2020,2022-2025\n"
|
||||
"Language-Team: Chinese (China) (http://app.transifex.com/bgk/vba-m/language/zh_CN/)\n"
|
||||
@@ -34,7 +34,7 @@ msgstr ""
|
||||
"Language: zh_CN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:184 audio/internal/coreaudio.cpp:541
|
||||
#: audio/internal/coreaudio.cpp:375 audio/internal/coreaudio.cpp:581
|
||||
#: audio/internal/sdl.cpp:179 audio/internal/sdl.cpp:197
|
||||
#: audio/internal/sdl.cpp:328 audio/internal/sdl.cpp:339
|
||||
#: audio/internal/sdl.cpp:359 audio/internal/faudio.cpp:490
|
||||
@@ -42,6 +42,10 @@ msgstr ""
|
||||
msgid "Default device"
|
||||
msgstr "默认设备"
|
||||
|
||||
#: audio/internal/coreaudio.cpp:381
|
||||
msgid "Could not get CoreAudio device"
|
||||
msgstr ""
|
||||
|
||||
#: cmdevents.cpp:63 wxvbam.cpp:634
|
||||
msgid "Could not create main window"
|
||||
msgstr "无法创建主窗口"
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#include <AudioToolbox/AudioToolbox.h>
|
||||
#include <stdlib.h>
|
||||
#include <memory.h>
|
||||
#include <mutex>
|
||||
|
||||
#include <wx/arrstr.h>
|
||||
#include <wx/log.h>
|
||||
@@ -109,7 +110,8 @@ public:
|
||||
int soundBufferLen = 0;
|
||||
AudioTimeStamp starttime;
|
||||
AudioTimeStamp timestamp;
|
||||
AudioQueueTimelineRef timeline;
|
||||
AudioQueueTimelineRef timeline = NULL;
|
||||
std::mutex buffer_mutex;
|
||||
|
||||
private:
|
||||
AudioDeviceID GetCoreAudioDevice(wxString name);
|
||||
@@ -145,6 +147,7 @@ static void PlaybackBufferReadyCallback(void *inUserData, AudioQueueRef inAQ, Au
|
||||
cadevice->buffers[curbuf]->mAudioDataByteSize = 0;
|
||||
}
|
||||
|
||||
std::lock_guard<std::mutex> lock(cadevice->buffer_mutex);
|
||||
if (cadevice->filled_buffers > 0) {
|
||||
cadevice->filled_buffers--;
|
||||
}
|
||||
@@ -180,84 +183,72 @@ AudioDeviceID CoreAudioAudio::GetCoreAudioDevice(wxString name)
|
||||
AudioBufferList *buflist = NULL;
|
||||
OSStatus result = 0;
|
||||
CFStringRef cfstr = NULL;
|
||||
|
||||
if (name == _("Default device")) {
|
||||
if (AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &default_playback_device_address, 0, NULL, &size) != kAudioHardwareNoError) {
|
||||
return 0;
|
||||
} else if ((devs = (AudioDeviceID *)malloc(size)) == NULL) {
|
||||
return 0;
|
||||
} else if (AudioObjectGetPropertyData(kAudioObjectSystemObject, &default_playback_device_address, 0, NULL, &size, devs) != kAudioHardwareNoError) {
|
||||
free(devs);
|
||||
return 0;
|
||||
}
|
||||
dev = devs[0];
|
||||
|
||||
free(devs);
|
||||
|
||||
return dev;
|
||||
} else {
|
||||
if (AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &devlist_address, 0, NULL, &size) != kAudioHardwareNoError) {
|
||||
return 0;
|
||||
} else if ((devs = (AudioDeviceID *)malloc(size)) == NULL) {
|
||||
return 0;
|
||||
} else if (AudioObjectGetPropertyData(kAudioObjectSystemObject, &devlist_address, 0, NULL, &size, devs) != kAudioHardwareNoError) {
|
||||
free(devs);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const UInt32 total_devices = (UInt32) (size / sizeof(AudioDeviceID));
|
||||
for (UInt32 i = 0; i < total_devices; i++)
|
||||
{
|
||||
if (AudioObjectGetPropertyDataSize(devs[i], &addr, 0, NULL, &size) != noErr) {
|
||||
continue;
|
||||
} else if ((buflist = (AudioBufferList *)malloc(size)) == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
result = AudioObjectGetPropertyData(devs[i], &addr, 0, NULL, &size, buflist);
|
||||
|
||||
if (result != noErr) {
|
||||
free(buflist);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (buflist->mNumberBuffers == 0) {
|
||||
free(buflist);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
size = sizeof(CFStringRef);
|
||||
|
||||
if (AudioObjectGetPropertyData(devs[i], &nameaddr, 0, NULL, &size, &cfstr) != kAudioHardwareNoError) {
|
||||
free(buflist);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
CFIndex len = CFStringGetMaximumSizeForEncoding(CFStringGetLength(cfstr), kCFStringEncodingUTF8);
|
||||
const char *name = (const char *)malloc(len + 1);
|
||||
CFStringGetCString(cfstr, (char *)name, len + 1, kCFStringEncodingUTF8);
|
||||
|
||||
if (name != NULL)
|
||||
{
|
||||
const wxString device_name(name, wxConvLibc);
|
||||
if (device_name == name) {
|
||||
dev = devs[i];
|
||||
free(devs);
|
||||
free(buflist);
|
||||
free((void *)name);
|
||||
|
||||
return dev;
|
||||
}
|
||||
}
|
||||
|
||||
free(buflist);
|
||||
free((void *)name);
|
||||
}
|
||||
if (AudioObjectGetPropertyDataSize(kAudioObjectSystemObject, &devlist_address, 0, NULL, &size) != kAudioHardwareNoError) {
|
||||
return 0;
|
||||
} else if ((devs = (AudioDeviceID *)malloc(size)) == NULL) {
|
||||
return 0;
|
||||
} else if (AudioObjectGetPropertyData(kAudioObjectSystemObject, &devlist_address, 0, NULL, &size, devs) != kAudioHardwareNoError) {
|
||||
free(devs);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
const UInt32 total_devices = (UInt32) (size / sizeof(AudioDeviceID));
|
||||
for (UInt32 i = 0; i < total_devices; i++)
|
||||
{
|
||||
if (AudioObjectGetPropertyDataSize(devs[i], &addr, 0, NULL, &size) != noErr) {
|
||||
continue;
|
||||
} else if ((buflist = (AudioBufferList *)malloc(size)) == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
result = AudioObjectGetPropertyData(devs[i], &addr, 0, NULL, &size, buflist);
|
||||
|
||||
if (result != noErr) {
|
||||
free(buflist);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (buflist->mNumberBuffers == 0) {
|
||||
free(buflist);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
size = sizeof(CFStringRef);
|
||||
|
||||
if (AudioObjectGetPropertyData(devs[i], &nameaddr, 0, NULL, &size, &cfstr) != kAudioHardwareNoError) {
|
||||
free(buflist);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
CFIndex len = CFStringGetMaximumSizeForEncoding(CFStringGetLength(cfstr), kCFStringEncodingUTF8);
|
||||
const char *device_name_cstr = (const char *)malloc(len + 1);
|
||||
CFStringGetCString(cfstr, (char *)device_name_cstr, len + 1, kCFStringEncodingUTF8);
|
||||
|
||||
if (device_name_cstr != NULL)
|
||||
{
|
||||
const wxString device_name(device_name_cstr, wxConvLibc);
|
||||
if (device_name == name) {
|
||||
dev = devs[i];
|
||||
free(devs);
|
||||
free(buflist);
|
||||
free((void *)device_name_cstr);
|
||||
CFRelease(cfstr);
|
||||
|
||||
return dev;
|
||||
}
|
||||
}
|
||||
|
||||
free(buflist);
|
||||
free((void *)device_name_cstr);
|
||||
CFRelease(cfstr);
|
||||
}
|
||||
|
||||
free(devs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -269,16 +260,37 @@ initialized(false)
|
||||
void CoreAudioAudio::deinit() {
|
||||
if (!initialized)
|
||||
return;
|
||||
|
||||
AudioObjectRemovePropertyListener(device, &alive_address, DeviceAliveNotification, this);
|
||||
|
||||
for (int i = 0; i < OPTION(kSoundBuffers); i++) {
|
||||
AudioQueueFreeBuffer(audioQueue, buffers[i]);
|
||||
|
||||
if (device != 0) {
|
||||
AudioObjectRemovePropertyListener(device, &alive_address, DeviceAliveNotification, this);
|
||||
}
|
||||
|
||||
if (buffers != NULL) {
|
||||
for (int i = 0; i < OPTION(kSoundBuffers); i++) {
|
||||
if (buffers[i] != NULL) {
|
||||
AudioQueueFreeBuffer(audioQueue, buffers[i]);
|
||||
}
|
||||
}
|
||||
free(buffers);
|
||||
buffers = NULL;
|
||||
}
|
||||
|
||||
AudioQueueStop(audioQueue, TRUE);
|
||||
|
||||
if (timeline != NULL) {
|
||||
AudioQueueDisposeTimeline(audioQueue, timeline);
|
||||
timeline = NULL;
|
||||
}
|
||||
|
||||
if (audioQueue != NULL) {
|
||||
AudioQueueDispose(audioQueue, TRUE);
|
||||
audioQueue = NULL;
|
||||
}
|
||||
|
||||
device = 0;
|
||||
|
||||
current_buffer = 0;
|
||||
filled_buffers = 0;
|
||||
|
||||
initialized = false;
|
||||
}
|
||||
|
||||
@@ -293,24 +305,20 @@ static bool AssignDeviceToAudioQueue(CoreAudioAudio *cadevice)
|
||||
kAudioDevicePropertyScopeOutput,
|
||||
kAudioObjectPropertyElementMain
|
||||
};
|
||||
|
||||
|
||||
OSStatus result;
|
||||
CFStringRef devuid;
|
||||
UInt32 devuidsize = sizeof(devuid);
|
||||
result = AudioObjectGetPropertyData(cadevice->device, &prop, 0, NULL, &devuidsize, &devuid);
|
||||
|
||||
|
||||
if (result != noErr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
result = AudioQueueSetProperty(cadevice->audioQueue, kAudioQueueProperty_CurrentDevice, &devuid, devuidsize);
|
||||
|
||||
if (result != noErr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
CFRelease(devuid); // Release devuid; we're done with it and AudioQueueSetProperty should have retained if it wants to keep it.
|
||||
|
||||
|
||||
return (bool)(result == noErr);
|
||||
}
|
||||
|
||||
@@ -362,12 +370,19 @@ bool CoreAudioAudio::init(long sampleRate) {
|
||||
|
||||
AudioChannelLayout layout;
|
||||
memset(&layout, 0, sizeof(layout));
|
||||
|
||||
device = GetCoreAudioDevice(OPTION(kSoundAudioDevice));
|
||||
|
||||
if (device == 0) {
|
||||
fprintf(stderr, "Couldn't get Core Audio device\n");
|
||||
return false;
|
||||
|
||||
const wxString device_name = OPTION(kSoundAudioDevice);
|
||||
const bool use_default_device = (device_name.IsEmpty() || device_name == _("Default device"));
|
||||
|
||||
if (!use_default_device) {
|
||||
device = GetCoreAudioDevice(device_name);
|
||||
|
||||
if (device == 0) {
|
||||
wxLogError(_("Could not get CoreAudio device"));
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
device = 0;
|
||||
}
|
||||
|
||||
description.mFormatID = kAudioFormatLinearPCM;
|
||||
@@ -382,16 +397,20 @@ bool CoreAudioAudio::init(long sampleRate) {
|
||||
|
||||
soundBufferLen = (sampleRate / 60) * description.mBytesPerPacket;
|
||||
|
||||
PrepareDevice(this);
|
||||
if (!use_default_device) {
|
||||
PrepareDevice(this);
|
||||
AudioObjectAddPropertyListener(device, &alive_address, DeviceAliveNotification, this);
|
||||
}
|
||||
|
||||
AudioObjectAddPropertyListener(device, &alive_address, DeviceAliveNotification, this);
|
||||
result = AudioQueueNewOutput(&description, PlaybackBufferReadyCallback, this, NULL, NULL, 0, &audioQueue);
|
||||
|
||||
if (result != noErr) {
|
||||
return false;
|
||||
}
|
||||
|
||||
AssignDeviceToAudioQueue(this);
|
||||
if (!use_default_device) {
|
||||
AssignDeviceToAudioQueue(this);
|
||||
}
|
||||
|
||||
layout.mChannelLayoutTag = kAudioChannelLayoutTag_Stereo;
|
||||
result = AudioQueueSetProperty(audioQueue, kAudioQueueProperty_ChannelLayout, &layout, sizeof(layout));
|
||||
@@ -466,10 +485,17 @@ void CoreAudioAudio::setBuffer(uint16_t* finalWave, int length) {
|
||||
this_buf = buffers[current_buffer];
|
||||
|
||||
if (this_buf == NULL) {
|
||||
fprintf(stderr, "Current buffer is NULL\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// Bounds checking: ensure we don't write past buffer capacity
|
||||
if (this_buf->mAudioDataByteSize + length > this_buf->mAudioDataBytesCapacity) {
|
||||
length = this_buf->mAudioDataBytesCapacity - this_buf->mAudioDataByteSize;
|
||||
if (length <= 0) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
memcpy((uint8_t *)this_buf->mAudioData + this_buf->mAudioDataByteSize, finalWave, length);
|
||||
this_buf->mAudioDataByteSize += (UInt32)length;
|
||||
|
||||
@@ -495,10 +521,11 @@ void CoreAudioAudio::write(uint16_t* finalWave, int length) {
|
||||
{
|
||||
setBuffer(finalWave, (avail * (description.mBitsPerChannel / 8)));
|
||||
|
||||
finalWave += (avail * (description.mBitsPerChannel / 8));
|
||||
finalWave += avail;
|
||||
samples -= avail;
|
||||
|
||||
if (buffers[current_buffer]->mAudioDataByteSize >= buffers[current_buffer]->mAudioDataBytesCapacity) {
|
||||
std::lock_guard<std::mutex> lock(buffer_mutex);
|
||||
current_buffer++;
|
||||
filled_buffers++;
|
||||
}
|
||||
@@ -507,7 +534,13 @@ void CoreAudioAudio::write(uint16_t* finalWave, int length) {
|
||||
current_buffer = 0;
|
||||
}
|
||||
|
||||
while (filled_buffers >= OPTION(kSoundBuffers)) {
|
||||
while (true) {
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(buffer_mutex);
|
||||
if (filled_buffers < OPTION(kSoundBuffers)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
wxMilliSleep(((soundGetSampleRate() / 60) * 4) / (soundGetSampleRate() >> 7));
|
||||
}
|
||||
}
|
||||
@@ -515,6 +548,7 @@ void CoreAudioAudio::write(uint16_t* finalWave, int length) {
|
||||
setBuffer(finalWave, samples * (description.mBitsPerChannel / 8));
|
||||
|
||||
if (buffers[current_buffer]->mAudioDataByteSize >= buffers[current_buffer]->mAudioDataBytesCapacity) {
|
||||
std::lock_guard<std::mutex> lock(buffer_mutex);
|
||||
current_buffer++;
|
||||
filled_buffers++;
|
||||
}
|
||||
@@ -523,7 +557,13 @@ void CoreAudioAudio::write(uint16_t* finalWave, int length) {
|
||||
current_buffer = 0;
|
||||
}
|
||||
|
||||
while (filled_buffers >= OPTION(kSoundBuffers)) {
|
||||
while (true) {
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(buffer_mutex);
|
||||
if (filled_buffers < OPTION(kSoundBuffers)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
wxMilliSleep(((soundGetSampleRate() / 60) * 4) / (soundGetSampleRate() >> 7));
|
||||
}
|
||||
}
|
||||
@@ -592,6 +632,7 @@ std::vector<AudioDevice> GetCoreAudioDevices() {
|
||||
|
||||
free(buflist);
|
||||
free((void *)name);
|
||||
CFRelease(cfstr);
|
||||
}
|
||||
|
||||
return devices;
|
||||
|
@@ -6,10 +6,10 @@
|
||||
namespace audio {
|
||||
namespace internal {
|
||||
|
||||
// Returns the set of OpenAL devices.
|
||||
// Returns the set of CoreAudio devices.
|
||||
std::vector<AudioDevice> GetCoreAudioDevices();
|
||||
|
||||
// Creates an OpenAL sound driver.
|
||||
// Creates a CoreAudio sound driver.
|
||||
std::unique_ptr<SoundDriver> CreateCoreAudioDriver();
|
||||
|
||||
} // namespace internal
|
||||
|
Reference in New Issue
Block a user