Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.11;
Скачать: CL | DM;

Вниз

Преобразование Pointer а Array в Плагине Winamp?   Найти похожие ветки 

 
crash_rider ©   (2003-07-29 21:23) [0]

Помогите пожалуйста!HELP! ME!. :-(

Я работаю на 6 Delphi. (В "Input Plugin" PCMData : Pointer) это данные типа pointer! а в Плагинах визуализации нужно, чтобы
spectrumData и waveformData были типа array[1..2,0..575]of byte;!
Как это преобразовать ??????????????????????????????????????????????????????????

Я пытался копировать куски памяти с помощью процедуры CopyMemory
перед этим преобразовывая Array в Pointer

procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD);
begin
Move(Source^, Destination^, Length);
end;

////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
PCMData Pointer; здесь у нас Pointer
////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

и

array[1..2,0..575]of byte
я использовал это преобразование указанное ниже
////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
type
tDynArray = array [1..2,0..575] of byte;
pDynArray = ^tDynArray; //Pointer
////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


Помогите ! Мне !. :-(

Visualisation PLugin
+++++++++++++++++ ВЫрезано +++++++++++++++++
spectrumData : array[1..2,0..575]of byte;
waveformData : array[1..2,0..575]of byte;
+++++++++++++++++ CUT +++++++++++++++++

Input plugin
+++++++++++++++++ ВЫрезано +++++++++++++++++
// vis stuff (plug-in)
// simple vis supplying mode
VSAAddPCMData:procedure(PCMData:pointer;nch: integer ; bps:integer;timestamp:integer);cdecl; // sets the vis data directly from PCM data
// quick and easy way to get vis working :)
// needs at least 576 samples :)

// advanced vis supplying mode, only use if you"re cool. Use VSAAddPCMData for most stuff.
VSAGetMode:function(var specNch:integer; var waveNch:integer):integer;cdecl; // use to figure out what to give to VSAAdd
VSAAdd:procedure(data:pointer; timestamp:integer);cdecl; // filled in by winamp, called by plug-in

+++++++++++++++++ CUT +++++++++++++++++


 
Набережных С. ©   (2003-07-29 22:25) [1]

Попробуй так:
type
PPCMDataArr = ^TPCMDataArr;
TPCMDataArr = array[1..2,0..575]of byte;

А потом просто PPCMDataArr(PCMData)[1, 33].
С ходу не уверен, но если формат массива совпадает, то пройдет.


 
nikus ©   (2003-07-30 00:21) [2]

Что-то я не пойму, какой ты плагин пишешь? Visualization или Input? Для визуализации справедливо следующее:


type
PWinampVisModule = ^TwinampVisModule;
TWinampVisModule = record
{...}
spectrumData : Array [0..1, 0..575] of Byte;
waveformData : Array [0..1, 0..575] of Byte;
{...}
end;

PwinampVisHeader = ^TwinampVisHeader;
TwinampVisHeader = record
{...}
getModule : function (Which : Integer) : winampVisModule; cdecl;
end;

{forward}
function GetModule(Which :integer) : PWinAMPVisModule; cdecl;
function winampVisGetHeader : PwinampVisHeader; cdecl; export;

const
HDR : TWinAMPVisHeader = ({...} GetModule : GetModule);
VisModule : TWinAMPVisModule = ( {...} );

lementation

function WinAMPVisGetHeader : PWinAMPVisHeader;
begin
Result := @HDR;
end;

function GetModule(Which : integer) : PwinampVisModule;
begin
if which = 0 then Result := @VisModule else Result := nil;
end;

exports winampVisGetHeader;


Итак, DLL-ка экспортирует функцию winampVisGetHeader. Winamp её запускает, и получает адрес записи HDR, из которой читает описание плагина + адрес функции getModule. Затем он запускает getModule с параметром 0 и получает адрес записи VisModule. Именно по этому адресу он потом будет записывать spectrumData и waveformData. А ты будешь обращаться к ним как к обычным массивам: VisModule.spectrumData[][] и VisModule.waveformData[][]

ЗЫ Слишком сложную тему ты поднял, толком ничего не объяснив...



Страницы: 1 вся ветка

Текущий архив: 2003.08.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
11-33089
asp
2002-12-01 22:08
2003.08.11
TabControl


6-33238
killer
2003-06-03 03:39
2003.08.11
Избранное в Internet Explorer и Delphi


14-33354
Ткаченко Сергей
2003-07-16 11:35
2003.08.11
Не обновляется SQL запрос


14-33311
b0bi
2003-07-24 15:33
2003.08.11
Определение объёма по плоскому изображению


1-33112
Nucl
2003-07-29 17:24
2003.08.11
Как клонировать компоненты на форме