Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];

Вниз

Преобразование 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
14-33368
Soft
2003-07-25 14:55
2003.08.11
Программирование как Высшая форма творчества


4-33410
sucer
2003-06-07 18:46
2003.08.11
Недать нарисоваться на экране


8-33227
Lister
2003-04-16 16:26
2003.08.11
Анимированная форма


8-33230
valery_f
2003-04-17 18:08
2003.08.11
ADPCM compression


1-33153
IgorRu
2003-07-26 21:37
2003.08.11
Как сохранить Форму в файл и затем в работающем проекте восст....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский