Вверх ↑
Этот топик читают: Гость
Ответов: 2060
Рейтинг: 28
#1: 2007-09-19 22:33:53 ЛС | профиль | цитата
Уважаемый All, Возможно ли на HiAsm сгенерировать вот такую Dll?
code_1936.txt
карма: 1

0
файлы: 1code_1936.txt [2.6KB] [304]
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2007-09-19 23:02:47 ЛС | профиль | цитата
в пакете на базе FTCG теоритически возможно. В стандартном - однозначно нет.
карма: 27
0
Ответов: 2060
Рейтинг: 28
#3: 2007-09-20 13:45:09 ЛС | профиль | цитата
All я не сильно разбираюсь в Делфи. У меня вопрос как мне вставить в DLL таймер и запустить его. Вот эта схема не работает, помогоите плиз. Пишет [Error] invertt.dpr(11): Undeclared identifier: 'Create'
library invertt;

uses
avisynth_c in '..\avisynth_c.pas', extctrls;

type
PByteArray = ^TByteArray;
TByteArray = array[0..32767] of Byte;
Timer = TTimer;

constructor Create;
begin
inherited;
Timer.Enabled:=true;
Timer.OnTimer:=Next;
end;

function invertt_get_frame(p: PAVS_FilterInfo; n: Integer): PAVS_VideoFrame; stdcall;
var
src, dest: PAVS_VideoFrame;
row_size, height, src_pitch, dest_pitch: Integer;
src_data, dest_data: PByte;
x, y: Integer;
width, r: Integer;
begin
src := avs_get_frame(p^.child, n);
dest := avs_new_video_frame(p^.env, @p^.vi);

src_data := avs_get_read_ptr(src);
dest_data := avs_get_write_ptr(dest);
src_pitch := avs_get_pitch(src);
dest_pitch := avs_get_pitch(dest);

row_size := avs_get_row_size(src);
height := avs_get_height(src);
width := row_size div 3;

for y := 0 to height - 1 do
begin

for x := 0 to width - 1 do
Begin
PByteArray(dest_data)^[ x*3 ] := PByteArray(src_data)^[ x*3 ] + random (2*r) - r; // Ñþäà ñìîòðè
PByteArray(dest_data)^[ x*3+1 ] := PByteArray(src_data)^[ x*3+1 ] + random (2*r) - r;
PByteArray(dest_data)^[ x*3+2 ] := PByteArray(src_data)^[ x*3+2 ] + random (2*r) - r;
End;
Inc(src_data, src_pitch);
Inc(dest_data, dest_pitch);
end;

avs_release_video_frame(src);
Result := dest;
end;

function invertt_inplace_get_frame(p: PAVS_FilterInfo; n: Integer): PAVS_VideoFrame; stdcall;
var
frame: PAVS_VideoFrame;
row_size, height, pitch: Integer;
data: PByte;
x, y: Integer;
begin
frame := avs_get_frame(p^.child, n);

avs_make_writable(p^.env, frame);

data := avs_get_write_ptr(frame);
pitch := avs_get_pitch(frame);
row_size := avs_get_row_size(frame);
height := avs_get_height(frame);

for y := 0 to height - 1 do
begin
for x := 0 to row_size - 1 do
// PByteArray(data)^[x] := not PByteArray(data)^[x];
Inc(data, pitch);
end;

Result := frame;
end;

function create_invertt(env: PAVS_ScriptEnvironment; args: MSVC_AVS_Value; use_inplace: Pointer): MSVC_AVS_Value; stdcall;
var
v: AVS_Value;
fi: PAVS_FilterInfo;
new_clip: PAVS_Clip;
begin;
new_clip := avs_new_c_filter(env, fi, avs_array_elt(AVS_Value(args), 0), true);
if (avs_is_planar(@fi^.vi)) then
v := avs_new_value_error('Videoooo must be on a single plane')
else
begin
if use_inplace = nil then
fi^.get_frame := @invertt_get_frame
else
fi^.get_frame := @invertt_inplace_get_frame;

v := avs_new_value_clip(new_clip);
end;
avs_release_clip(new_clip);
Result := MSVC_AVS_Value(v);
end;

function avisynth_c_plugin_init(env: PAVS_ScriptEnvironment): PChar; stdcall;
begin
avs_add_function(env, 'Invertt', 'c', @create_invertt, nil);
avs_add_function(env, 'InverttInplace', 'c', @create_invertt, pointer(1));
Result := '`Invertt'' sample plugin';
end;

exports
avisynth_c_plugin_init;
end.
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2007-09-20 13:58:11 ЛС | профиль | цитата
Эдик, за вставку кода без использования соответствующих тегов сообщения будут удаляться. Не нужно захламлять индексатор поиска всякой фигней.
карма: 27
0
Ответов: 9906
Рейтинг: 351
#5: 2007-09-20 14:14:38 ЛС | профиль | цитата
Мне вот даже интересно стало...

Это Эдик писал, или его пароль кто-то расковырял
карма: 9

0
Ответов: 2060
Рейтинг: 28
#6: 2007-09-20 14:25:59 ЛС | профиль | цитата
Galkov писал(а):
Это Эдик писал, или его пароль кто-то расковырял

Я писал. Галков как объявить Таймер и потом его использовать?
На счёт паролей, так их ещё год назад все расковыряли, и даже сюда на сайт выложили. Надо бы пароль сменить.

[size=-2]------ Добавлено в 14:25
В этом коде всё работает, кроме этого
constructor Create;
begin
inherited;
Timer.Enabled:=true;
Timer.OnTimer:=Next;
end;
карма: 1

0
Ответов: 2060
Рейтинг: 28
#7: 2007-09-21 20:01:50 ЛС | профиль | цитата
Люди кто нибудь мне поможет вот по этоиу вопросу? http://hiasm.1gb.ru/xf/topic.php?p=67729#P67729
карма: 1

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#8: 2007-09-21 20:23:52 ЛС | профиль | цитата
Эдик, а ты посмотрет в компоненте Timer не пробовал, вроде не первый день HiAsm юзаешь? А ты его чем компилишь, Дельфями что ли? Попробуй приписать KOL в секции uses и откомпилируй повторно. К тому же, таймер по-дурацки у тебя создается.
карма: 22

0
Ответов: 2060
Рейтинг: 28
#9: 2007-09-21 21:16:24 ЛС | профиль | цитата
nesco писал(а):
А ты его чем компилишь, Дельфями что ли?

да. Это плагин для программы по видеообработке.
карма: 1

0
9
Сообщение
...
Прикрепленные файлы
(файлы не залиты)