From f1566a45ac7de81f31a1b419d88e1742089ae56d Mon Sep 17 00:00:00 2001 From: whiteshark0 Date: Tue, 13 Apr 2010 16:23:14 +0000 Subject: =?UTF-8?q?-=20save=20input=20device=20names=20as=20UTF8Strings=20?= =?UTF-8?q?-=20device=20names=20of=20basslib=20are=20assumed=20to=20be=20i?= =?UTF-8?q?n=20local=20encoding=20-=20device=20names=20of=20portaudio=20ar?= =?UTF-8?q?e=20assumed=20to=20be=20in=20utf-8=20fixes:=20display=20of=20de?= =?UTF-8?q?vice=20names=20w/=20special=20characters=20w/=20basslib=20('?= =?UTF-8?q?=C3=A4'=20for=20me)=20to-do:=20proof=20encoding=20of=20device?= =?UTF-8?q?=20names=20for=20basslib=20and=20portaudio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2234 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/base/URecord.pas | 6 +++--- src/media/UAudioInput_Bass.pas | 10 +++++++--- src/media/UAudioInput_Portaudio.pas | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/base/URecord.pas b/src/base/URecord.pas index a3f665e5..c4612adb 100644 --- a/src/base/URecord.pas +++ b/src/base/URecord.pas @@ -102,7 +102,7 @@ type TAudioInputDevice = class public CfgIndex: integer; // index of this device in Ini.InputDeviceConfig - Name: string; // soundcard name + Name: UTF8String; // soundcard name Source: array of TAudioInputSource; // soundcard input-sources SourceRestore: integer; // source-index that will be selected after capturing (-1: not detected) MicSource: integer; // source-index of mic (-1: none detected) @@ -143,7 +143,7 @@ type private Started: boolean; protected - function UnifyDeviceName(const name: string; deviceIndex: integer): string; + function UnifyDeviceName(const name: UTF8String; deviceIndex: integer): UTF8String; public function GetName: String; virtual; abstract; function InitializeRecord: boolean; virtual; abstract; @@ -741,7 +741,7 @@ begin Started := false; end; -function TAudioInputBase.UnifyDeviceName(const name: string; deviceIndex: integer): string; +function TAudioInputBase.UnifyDeviceName(const name: UTF8String; deviceIndex: integer): UTF8String; var count: integer; // count of devices with this name diff --git a/src/media/UAudioInput_Bass.pas b/src/media/UAudioInput_Bass.pas index 9d4417f1..e51ba254 100644 --- a/src/media/UAudioInput_Bass.pas +++ b/src/media/UAudioInput_Bass.pas @@ -46,6 +46,7 @@ uses UIni, ULog, UAudioCore_Bass, + UTextEncoding, UCommon, // (Note: for MakeLong on non-windows platforms) {$IFDEF MSWINDOWS} Windows, // (Note: for MakeLong) @@ -352,7 +353,7 @@ end; function TAudioInput_Bass.EnumDevices(): boolean; var - Descr: PChar; + Descr: UTF8String; SourceName: PChar; Flags: integer; BassDeviceID: integer; @@ -389,9 +390,12 @@ begin BassDevice := TBassInputDevice.Create(); AudioInputProcessor.DeviceList[DeviceIndex] := BassDevice; - Descr := DeviceInfo.name; - BassDevice.BassDeviceID := BassDeviceID; + + // bass device name seems to be encoded w/ local encoding + // to-do : check if this is correct + Descr := DecodeStringUTF8(DeviceInfo.name, encLocale); + BassDevice.Name := UnifyDeviceName(Descr, DeviceIndex); // zero info-struct as some fields might not be set (e.g. freq is just set on Vista and MacOSX) diff --git a/src/media/UAudioInput_Portaudio.pas b/src/media/UAudioInput_Portaudio.pas index c5ec8115..95b0f104 100644 --- a/src/media/UAudioInput_Portaudio.pas +++ b/src/media/UAudioInput_Portaudio.pas @@ -271,7 +271,7 @@ var i: integer; paApiIndex: TPaHostApiIndex; paApiInfo: PPaHostApiInfo; - deviceName: string; + deviceName: UTF8String; deviceIndex: TPaDeviceIndex; deviceInfo: PPaDeviceInfo; channelCnt: integer; -- cgit v1.2.3