########################### # D E P E N D E N C I E S # ########################### - DSPack (only "src\DSPack" and "src\DirectX9" are necessary) https://code.google.com/p/dspack/source/browse/#svn%2Ftrunk%2Fsrc%2FDSPack - TNT Unicode Controls 2.3.0 http://www.yunqa.de/delphi/doku.php/products/tntunicodecontrols/index - pngimage 1.564 http://www.trichview.com/forums/viewtopic.php?t=89 ######################## N O T N E E D E D A N Y M O R E ####################### #- Blowfish Advanced CS source (ZLibEx.pas, bfacslib.pas, Compress.pas, config.inc)# #http://sourceforge.net/projects/bfacs/files/Blowfish%20Advanced%20CS/2.57/ # #################################################################################### ------------------------------------------------------------------------------------ - ResourceEditor (for 'Version.res' to edit cursor, version info and DSP-Worx png) http://melander.dk/reseditor/ ========================================================================================== --------------------- |DCBassSourceMod.dpr| --------------------- //Project -> Options -> Directories/Conditionals -> Search path: add "DSPack_src\DSPack", //"DSPack_src\DirectX9", "TntUnicodeControls" and "pngimage". Then assigning the following //is sufficient: library DCBassSourceMod; uses BassFilter in 'BassFilter.pas', BassDecoder in 'BassDecoder.pas', DCBassSourceIntf in 'Interface\DCBassSourceIntf.pas', formPropAbout in 'PropertyPages\formPropAbout.pas' {frmPropAbout}, formPropSettings in 'PropertyPages\formPropSettings.pas' {frmPropSettings}; --------------------------------------------------------------------------------- //Without the use of 'Search path:', at least the following needs to be assigned: library DCBassSourceMod; uses BaseClass in '..\..\DSPack\src\DSPack\BaseClass.pas', DXSUtil in '..\..\DSPack\src\DSPack\DXSUtil.pas', DXTypes in '..\..\DSPack\src\DirectX9\DXTypes.pas', Direct3D9 in '..\..\DSPack\src\DirectX9\Direct3D9.pas', DirectDraw in '..\..\DSPack\src\DirectX9\DirectDraw.pas', DirectShow9 in '..\..\DSPack\src\DirectX9\DirectShow9.pas', DirectSound in '..\..\DSPack\src\DirectX9\DirectSound.pas', DxDiag in '..\..\DSPack\src\DirectX9\DxDiag.pas', WMF9 in '..\..\DSPack\src\DirectX9\WMF9.pas', TntClasses in '..\..\TntUnicodeControls\Source\TntClasses.pas', TntFormatStrUtils in '..\..\TntUnicodeControls\Source\TntFormatStrUtils.pas', TntSystem in '..\..\TntUnicodeControls\Source\TntSystem.pas', TntSysUtils in '..\..\TntUnicodeControls\Source\TntSysUtils.pas', TntWideStrings in '..\..\TntUnicodeControls\Source\TntWideStrings.pas', TntWideStrUtils in '..\..\TntUnicodeControls\Source\TntWideStrUtils.pas', TntWindows in '..\..\TntUnicodeControls\Source\TntWindows.pas', pngimage in '..\..\pngimage\pngimage.pas', pnglang in '..\..\pngimage\pnglang.pas', zlibpas in '..\..\pngimage\zlibpas.pas', BassFilter in 'BassFilter.pas', BassDecoder in 'BassDecoder.pas', DCBassSourceIntf in 'Interface\DCBassSourceIntf.pas', formPropAbout in 'PropertyPages\formPropAbout.pas' {frmPropAbout}, formPropSettings in 'PropertyPages\formPropSettings.pas' {frmPropSettings}; ------------------------------------------------------------------------------ //Assigning everything is thus not necessary. It would even hurt the filesize! library DCBassSourceMod; uses BaseClass in '..\..\DSPack\src\DSPack\BaseClass.pas', DXSUtil in '..\..\DSPack\src\DSPack\DXSUtil.pas', D3DX8 in '..\..\DSPack\src\DirectX9\D3DX8.pas', D3DX9 in '..\..\DSPack\src\DirectX9\D3DX9.pas', DX7toDX8 in '..\..\DSPack\src\DirectX9\DX7toDX8.pas', DXFile in '..\..\DSPack\src\DirectX9\DXFile.pas', DXTypes in '..\..\DSPack\src\DirectX9\DXTypes.pas', Direct3D in '..\..\DSPack\src\DirectX9\Direct3D.pas', Direct3D8 in '..\..\DSPack\src\DirectX9\Direct3D8.pas', Direct3D9 in '..\..\DSPack\src\DirectX9\Direct3D9.pas', DirectDraw in '..\..\DSPack\src\DirectX9\DirectDraw.pas', DirectInput in '..\..\DSPack\src\DirectX9\DirectInput.pas', DirectMusic in '..\..\DSPack\src\DirectX9\DirectMusic.pas', DirectPlay8 in '..\..\DSPack\src\DirectX9\DirectPlay8.pas', DirectSetup in '..\..\DSPack\src\DirectX9\DirectSetup.pas', DirectShow9 in '..\..\DSPack\src\DirectX9\DirectShow9.pas', DirectSound in '..\..\DSPack\src\DirectX9\DirectSound.pas', DxDiag in '..\..\DSPack\src\DirectX9\DxDiag.pas', WMF9 in '..\..\DSPack\src\DirectX9\WMF9.pas', dxerr8 in '..\..\DSPack\src\DirectX9\dxerr8.pas', dxerr9 in '..\..\DSPack\src\DirectX9\dxerr9.pas', TntClasses in '..\..\TntUnicodeControls\Source\TntClasses.pas', TntFormatStrUtils in '..\..\TntUnicodeControls\Source\TntFormatStrUtils.pas', TntSystem in '..\..\TntUnicodeControls\Source\TntSystem.pas', TntSysUtils in '..\..\TntUnicodeControls\Source\TntSysUtils.pas', TntWideStrings in '..\..\TntUnicodeControls\Source\TntWideStrings.pas', TntWideStrUtils in '..\..\TntUnicodeControls\Source\TntWideStrUtils.pas', TntWindows in '..\..\TntUnicodeControls\Source\TntWindows.pas', pngimage in '..\..\pngimage\pngimage.pas', pnglang in '..\..\pngimage\pnglang.pas', zlibpas in '..\..\pngimage\zlibpas.pas', ZLibEx in '..\..\bfacs\ZLibEx.pas', bfacslib in '..\..\bfacs\bfacslib.pas', Compress in '..\..\bfacs\Compress.pas', BassFilter in 'BassFilter.pas', BassDecoder in 'BassDecoder.pas', DCBassSourceIntf in 'Interface\DCBassSourceIntf.pas', formPropAbout in 'PropertyPages\formPropAbout.pas' {frmPropAbout}, formPropSettings in 'PropertyPages\formPropSettings.pas' {frmPropSettings}; ============================================================================= ============================================================================= ########################### # C H A N G E S M A D E # ########################### ------------- |Version.res| ------------- Changes: - version info - cursor position (upper left corner) - cursor height correction (index finger 1px shorter, as the original) - cursor hotspot (index fingertip) ============================================================================= ----------------- |BassDecoder.pas| ----------------- uses Windows, SysUtils, SyncObjs, TntWideStrUtils; ...... BASS_EXTENSIONS_COUNT = 32; // of 33; test BASS_EXTENSIONS: array[0..BASS_EXTENSIONS_COUNT -1] of TBassExtension = ( (Extension: '.wav'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.aif'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.aicf'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.aiff'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.cda'; IsMOD: False; DLL: 'basscd.dll'), (Extension: '.mpa'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.mp2'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.m1a'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.m2a'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.mp3'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.ogg'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.oga'; IsMOD: False; DLL: 'bass.dll'), (Extension: '.opus'; IsMOD: False; DLL: 'bassopus.dll'), (Extension: '.m4a'; IsMOD: False; DLL: 'bass_aac.dll'), (Extension: '.m4b'; IsMOD: False; DLL: 'bass_aac.dll'), (Extension: '.aac'; IsMOD: False; DLL: 'bass_aac.dll'), (Extension: '.mpc'; IsMOD: False; DLL: 'bass_mpc.dll'), (Extension: '.ac3'; IsMOD: False; DLL: 'bass_ac3.dll'), // test (Extension: '.alac'; IsMOD: False; DLL: 'bass_alac.dll'), (Extension: '.ape'; IsMOD: False; DLL: 'bass_ape.dll'), (Extension: '.flac'; IsMOD: False; DLL: 'bassflac.dll'), (Extension: '.ofr'; IsMOD: False; DLL: 'bass_ofr.dll'), (Extension: '.ofs'; IsMOD: False; DLL: 'bass_ofr.dll'), (Extension: '.tak'; IsMOD: False; DLL: 'bass_tak.dll'), (Extension: '.tta'; IsMOD: False; DLL: 'bass_tta.dll'), (Extension: '.wv'; IsMOD: False; DLL: 'basswv.dll'), (Extension: '.it'; IsMOD: True; DLL: 'bass.dll'), (Extension: '.mo3'; IsMOD: True; DLL: 'bass.dll'), (Extension: '.mod'; IsMOD: True; DLL: 'bass.dll'), (Extension: '.mtm'; IsMOD: True; DLL: 'bass.dll'), (Extension: '.s3m'; IsMOD: True; DLL: 'bass.dll'), (Extension: '.umx'; IsMOD: True; DLL: 'bass.dll'), (Extension: '.xm'; IsMOD: True; DLL: 'bass.dll') ); BASS_PLUGINS_COUNT = 11; // of 12; test BASS_PLUGINS: array[0..BASS_PLUGINS_COUNT -1] of WideString = ( 'bass_aac.dll', 'bass_ac3.dll', // test 'bass_alac.dll', 'bass_ape.dll', 'basscd.dll', 'bassflac.dll', 'bass_mpc.dll', 'bass_ofr.dll', 'bassopus.dll', 'bass_tak.dll', 'bass_tta.dll', 'basswv.dll' ); ...... BASS_CTYPE_STREAM_OGG = $10002; BASS_CTYPE_STREAM_OPUS = $11200; // really necessary to specify? ...... FOFRDLL: THandle; FTAKDLL: THandle; ...... var pathofr: WideString; pathtak: WideString; begin inherited Create; pathofr := GetFilterDirectory + WideString('OptimFROG.dll'); pathtak := GetFilterDirectory + WideString('tak_deco_lib.dll'); FOFRDLL := LoadLibraryW(PWideChar(pathofr)); FTAKDLL := LoadLibraryW(PWideChar(pathtak)); FMetaDataCallback := AMetaDataCallback; FBufferCallback := ABufferCallback; FBuffersizeMS := ABuffersizeMS; FPrebufferMS := APrebufferMS; LoadBASS; LoadPlugins; end; destructor TBassDecoder.Destroy; begin Close; if (FOFRDLL <> 0) then FreeLibrary(FOFRDLL); if (FTAKDLL <> 0) then FreeLibrary(FTAKDLL); inherited Destroy; end; ...... BASS_SetConfig(BASS_CONFIG_NET_AGENT, Integer(PChar('DC-Bass Source Mod'))); ...... FStream := BASS_StreamCreateFile(False, PWideChar(AFileName), 0, 0, BASS_STREAM_DECODE or BASS_UNICODE); // original FStream := BASS_StreamCreateFile(False, PWideChar(AFileName), 0, 0, BASS_STREAM_DECODE or BASS_UNICODE or BASS_STREAM_PRESCAN); // fix for bad VBR-headers ...... BASS_CTYPE_STREAM_OGG: Result := 'ogg'; BASS_CTYPE_STREAM_OPUS: Result := 'opus'; ============================================================================== ---------------- |BassFilter.pas| ---------------- const DIRECTSHOW_SOURCE_FILTER_PATH = 'Media Type\Extensions\'; BASS_BLOCK_SIZE = 2048; MSEC_REFTIME_FACTOR = 10000; REGISTER_EXTENSION_FILE = WideString('Formats.ini'); ...... procedure TBassSource.LoadSettings; var reg: TRegistry; begin reg := TRegistry.Create; reg.Rootkey := HKEY_CURRENT_USER; if reg.OpenKey('SOFTWARE\DSP-worx\DC-Bass Source Mod', False) then ...... procedure TBassSource.SaveSettings; var reg: TRegistry; begin reg := TRegistry.Create; reg.RootKey := HKEY_CURRENT_USER; if Reg.OpenKey('SOFTWARE\DSP-worx\DC-Bass Source Mod', True) then ...... function DllUnregisterServer: HResult; ... end; if Reg.OpenKey('HKEY_CURRENT_USER\SOFTWARE\DSP-worx\DC-Bass Source Mod', True) then begin reg.RootKey := HKEY_CURRENT_USER; reg.DeleteKey('SOFTWARE\DSP-worx\DC-Bass Source Mod'); reg.CloseKey; end; reg.Free; Result := BaseClass.DllUnregisterServer; end; ... TBCClassFactory.CreateFilter( TBassSource, 'DC-Bass Source Mod', CLSID_DCBassSource, CLSID_LegacyAmFilterCategory, MERIT_PREFERRED, 1, @DSHOW_PINS ); --------------------------------------------------------- //MERIT_PREFERRED = 0x800000, MERIT_NORMAL = 0x600000 //MERIT_UNLIKELY = 0x400000, MERIT_DO_NOT_USE = 0x200000 ============================================================================== ---------------------- |formPropSettings.pas| ---------------------- function GetLastFolder: String; ... if reg.OpenKey('Software\DSP-worx\DC-Bass Source Mod', False) then ... procedure SetLastFolder(AFolder: String); ... if reg.OpenKey('Software\DSP-worx\DC-Bass Source Mod', True) then ... end;