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

Вниз

Файлы smk (Smacker Video) можно бесплатно использовать в   Найти похожие ветки 

 
Смак   (2007-10-12 04:10) [0]

своих пректах?

Их сайт: http://www.radgametools.com/

У меня файлик есть smackw32.dll, с его помощью можно проигрывать smk-файлы. Только не знаю, это бесплатно вообще можно использовать или как?


 
GrayFace   (2007-10-12 08:11) [1]

а почему smk, а не bik? Насчет того, как проигрывать, могу помоч, я их уже использовал. Но не знаю, разрешено ли это.


 
tesseract ©   (2007-10-12 10:32) [2]


>  Только не знаю, это бесплатно вообще можно использовать
> или как?


За бесплатно будет вылетать nag-screen  - написано же.


 
Смак   (2007-10-13 04:18) [3]


> GrayFace   (12.10.07 08:11) [1]
>
> а почему smk, а не bik?

С bik какие-то глюки почему-то. Толи заголовочный файл не тот, толи с длл что-то.


> Насчет того, как проигрывать, могу
> помоч, я их уже использовал.

Помоги пожалуйста! Мне нужно через GLScene или OpenGL. Там проблема с прозрачостью возникает. Прозрачный фон создаёт вокруг видео небольшую кайму, которая сильно раздражает. Не знаю как побороть. Если выводить на Canvas, то такого нет.

Кроме того, если проигрывать в реал-тайм, то это несколько тормозит (или возможно я как-то не так делаю?), а если кэшировать, то памяти надо очень много.


 
Смак   (2007-10-13 07:40) [4]


> tesseract ©   (12.10.07 10:32) [2]
> >  Только не знаю, это бесплатно вообще можно использовать
> > или как?
> За бесплатно будет вылетать nag-screen  - написано же.


Там нету nag-screen. Только длл и заголовочный файл к ней.


 
GrayFace   (2007-10-13 19:56) [5]

Кинь, plz, на sergroj -гав- mail.ru заголовочный файл.

Смак   (13.10.07 4:18) [3]
Мне нужно через GLScene или OpenGL. Там проблема с прозрачостью возникает. Прозрачный фон создаёт вокруг видео небольшую кайму, которая сильно раздражает. Не знаю как побороть. Если выводить на Canvas, то такого нет.

Я умею выводить только на битмапку. Все изучал опытным путем (PE Explorer, дизассемблер) + с помощью небольшого описания из Википедии.


 
tesseract ©   (2007-10-13 20:09) [6]


> Там нету nag-screen. Только длл и заголовочный файл к ней.


Так в лицензии написано. Простым ангийским языком.


 
Смак   (2007-10-14 04:03) [7]


> GrayFace   (13.10.07 19:56) [5]
>
> Кинь, plz, на sergroj -гав- mail.ru заголовочный файл.


Лучше я прямо сюда. Может ещё кому-нибудь будет интересно.


unit smackw32;

interface
uses windows;

const
 smkdll = "Smackw32.dll";

Type

 TrgbTriple = packed record
   Red,
   Green,
   Blue  : byte;
 end;

 HSmack = ^TSmack;
 TSmack = record
   MAGICID : array [0..3] of char;
   Width,
   Height,
   TotalFrames  : Longword;

   data1   : array [0..87] of byte;
   HasbeenPlayed : LongBool; // i don"t know. perhaps some palette realization
                             // flag ?
   Palette : array [0..255] of TrgbTriple;
   data2   : array [1..5] of byte;
   CurrentFrame:LongWord;
   data3   : array [0..200] of byte;
   // somewhere these exists:
   // LastRectx,
   //LastRecty,
   //LastRectw,
   //LastRecth,
   //LargestInTrack
 end;

 u16 = Word;
 Pword = ^word;

 HSmackBlit = pointer;

 TSMACKCURSOR = type longword; // force strong typecheck

{SmackSetSystemRes}
const
 SMACKRES_DEFAULT = 0;
 SMACKRES_512x384 = 1;
 SMACKRES_640x480 = 2;
 SMACKRES_800x600 = 3;
 SMACKRES_1024x768= 4;

{ SmackOpen() }

const
 SMACKOPEN_FRAMERATE  = $80;
 SMACKOPE_NOSKIP      = $400;
 SMACKOPEN_SIMULATE   = $800;
 SMACKOPEN_FILEHANDLE = $1000;
 SMACKOPEN_TRACKS     = $2000;
 SMACKOPEN_HEIGHTx2INT= $100000;
 SMACKOPEN_HEIGHTx2DBL= $200000;
 SMACKOPEN_CRASH      = $2000000;
 SMACKOPEN_NEEDPAN         = $20;
 SMACKOPEN_NEEDVOLUME      = $40;
 SMACKOPEN_AUTOEXTRA       = $0; // smacker determines the extra buffer size

{SURFACE TYPES?}
const
 SMACKBUFFER8       =$0;        // 8bit palettized
 SMACKBUFFER555     =$80000000; // 15bit
 SMACKBUFFER565     =$C0000000; // 16bit
 SMACKBUFFERREVERSED=$1;        // "OR" this to choose bottom->top
 SMACKBUFFERUNKNOWN =$FFFFFFFF; // Unsupported surface

//Rectangles. Get access to smackerdata via SmackToBufferRect()
 // SMACKSURFACEFAST = ??
 // SMACKSURFACESLOW = ??
 // SMACKSURFACEDIRECT = ??

// Volume & Pan
const
 SMACKPANCENTER = HIGH(SmallInt);
 SMACKVOLCENTER = HIGH(SmallInt);
 // Track bits
 SMACKTRACK1 = $2000;
 SMACKTRACK2 = $4000;
 SMACKTRACK3 = $8000;
 SMACKTRACK4 = $10000;
 SMACKTRACK5 = $20000;
 SMACKTRACK6 = $40000;
 SMACKTRACK7 = $80000;
 SMACKTRACKALL=$FE000;

function SmackOpen(FileName:pchar;flags:Longword;
                  extrabuf:LongWord=SMACKOPEN_AUTOEXTRA):HSmack;overload;
stdcall  external smkdll name "_SmackOpen@12";
function SmackOpen(FileHandle:THandle;flags:Longword;
                  extrabuf:LongWord=SMACKOPEN_AUTOEXTRA):HSmack;overload;
stdcall  external smkdll name "_SmackOpen@12";

function SmackSetSystemRes(mode:LongWord):Longword;stdcall
 external smkdll name "_SmackSetSystemRes@4";

procedure SmackFrameRate(framerate:LongWord);stdcall
 external smkdll name "_SmackFrameRate@4";

procedure SmackNextFrame(smk:HSmack);stdcall
 external smkdll name "_SmackNextFrame@4";

procedure SmackDoFrame(smk:HSmack);stdcall
 external smkdll name "_SmackDoFrame@4";

{procedure SmackToScreen(smk:HSmack;left,top,Pitch:LongWord;WinTbl:pword;SetBank,Flags:Long Word);stdcall
 external smkdll name "_SmackToScreen@28";}
 { Works under DOS API only...}

procedure SmackToBuffer(smk:HSmack;left,Top,Pitch,Height:LongWord;pBuf:Pointer;Flags:LongW ord);
 stdcall external smkdll name "_SmackToBuffer@28";

function SmackWait(smk:HSmack):LongBool;stdcall
 external smkdll name "_SmackWait@4";

procedure SmackSimulate(Datarate:longword);stdcall
 external smkdll name "_SmackSimulate@4";

procedure SmackClose(smk:HSmack);stdcall
 external smkdll name "_SmackClose@4";

function SmackSoundUseDirectSound(DS:Pointer):longbool;stdcall
 external smkdll name "_SmackSoundUseDirectSound@4";

function SmackSoundUseWin:longbool;stdcall
 external smkdll name "_SmackSoundUseWin@0";

procedure SmackSoundCheck;stdcall
 external smkdll name "_SmackSoundCheck@0";

function SmackSoundSetDirectSoundHWND(HWND:LongWord):longBool;stdcall
 external smkdll name"_SmackSoundSetDirectSoundHWND@4";

function SmackSoundOnOff(smk:HSmack;TurnOn:Longword):LongBool;stdcall
 external smkdll name"_SmackSoundOnOff@8";

function SmackSoundInTrack(smk:Hsmack;trackflags:LongWord):LongBool;stdcall
 external smkdll name"_SmackSoundInTrack@8";

function SmackDDSurfaceType(Primary:Pointer):LongWord;stdcall
 external smkdll name"_SmackDDSurfaceType@4";

function SmackBlitOpen(Flags:LongWord):HSmackBlit;stdcall
 external smkdll name"_SmackBlitOpen@4";

procedure SmackBlitClose(smkblt:HSmackBlit);StdCall
 external smkdll name"_SmackBlitClose@4";

procedure SmackBlit(blit:HSMACKBLIT; Dest:Pointer;destpitch,destx,desty:LongWord;
                   src:Pointer; srcpitch,srcx,srcy,srcw,srch:LongWord);
stdcall external smkdll name"_SmackBlit@44";

Function SmackCheckCursor(wnd:HWND;Rect:TRECT):TSMACKCURSOR;
overload; stdcall; external smkdll name"_SmackCheckCursor@20";

Function SmackCheckCursor(wnd:HWND;top,left,width,height:longword):TSMACKCURSOR;
overload; stdcall; external smkdll name"_SmackCheckCursor@20";

procedure SmackRestoreCursor(Cursor:TSMACKCURSOR);
stdcall external smkdll name"_SmackRestoreCursor@4";

procedure SmackVolumePan(Smack:HSmack;Tracks:Longword;Volume,Pan:longword);
 stdcall external smkdll name"_SmackVolumePan@16";

function GetSmackerVersion(vname:string="ProductVersion"):string;

implementation

function GetSmackerVersion(vname:string="ProductVersion"):string;
const
 FMTLEN = 1024;
var
 Info,
 Lang : pointer;
 infosize,LangLen,destlen:longword;
 fmt,Dest:pchar;
 hw,lw:longword;
 P:pointer;
begin

 infosize := GetFileVersionInfoSize(smkdll,hw);
 if infosize=0 then exit;
 GetMem(Info,infosize);
 if GetFileVersionInfo(smkdll,0,infosize,info) then
 begin
   lang:=nil;
   VerQueryValue(Info,"/VarFileInfo/Translation",Lang,LangLen);
   if langlen<>0 then
     begin
       hw := Plongword(Lang)^ and $0000FFFF;
       lw := Plongword(Lang)^ and $FFFF0000;
     end
   else
     begin
       lw :=$0409;
       hw :=$04E4;
     end;

   p :=  pchar(vname);
   GetMem(fmt,FMTLEN);
   asm
     push [p]; push [hw]; push [lw]; // marshall 3 parameters
   end;
   wsprintf(fmt,"\StringFileInfo\%4.4x%4.4x\%s");
   asm
     add esp, 20; // ditch 2+3 parameters (wsprintf uses cdecl)
   end;

   if VerQueryValue(Info,fmt,pointer(dest),destlen) then  result := dest;

   FreeMem(fmt,FMTLEN);
 end;

 if infosize >0 then FreeMem(info,infosize);
end;
end.


 
Смак   (2007-10-14 04:06) [8]


> tesseract ©   (13.10.07 20:09) [6]
>
> > Там нету nag-screen. Только длл и заголовочный файл к
> ней.
>
> Так в лицензии написано. Простым ангийским языком.

Платить то надо?


 
Dmitry S ©   (2007-10-14 06:19) [9]


> sergroj -гав- mail.ru

Зачем такой "изврат", если чуть выше твое же мыло, причем оформленное как надо, даже с mailto: ? :)

Sorry за оффтоп:)


 
Dimaxx ©   (2007-10-14 20:04) [10]


> С bik какие-то глюки почему-то. Толи заголовочный файл не
> тот, толи с длл что-то.

Немного другой формат. BIK я научился проигрывать. Нашел в инете radbink.h и rad.h от radgametools api. Потом нашел портированный челом на паскаль этот api, но он старый и с ошибками. Пришлось сделать свой на основе найденного. Работает. Кстати, слегка притормаживает. Как избавиться - хз. Да и руки не доходят, да и не надо мне это щас. Пробовал чисто ради интереса.


 
Смак   (2007-10-15 05:05) [11]


> Dimaxx ©   (14.10.07 20:04) [10]
>
>
> > С bik какие-то глюки почему-то. Толи заголовочный файл
> не
> > тот, толи с длл что-то.
>
> Немного другой формат. BIK я научился проигрывать. Нашел
> в инете radbink.h и rad.h от radgametools api. Потом нашел
> портированный челом на паскаль этот api, но он старый и
> с ошибками. Пришлось сделать свой на основе найденного.
> Работает. Кстати, слегка притормаживает. Как избавиться
> - хз. Да и руки не доходят, да и не надо мне это щас. Пробовал
> чисто ради интереса.


А можешь сюда исправленный вариант выложить?


 
Смак   (2007-10-16 05:26) [12]

Up


 
Dimaxx ©   (2007-10-16 13:14) [13]

До дома доберусь - выложу. Есть пример, но он на КОЛ.


 
Dimaxx ©   (2007-10-16 13:31) [14]

Он у мну оказывается с собой... Бери: www.1sv.ru/delphi/bink.zip

В архиве вышеуказанные rad.h и radbink.h, binkw32.dll (c которой я работал) и, собсна, сам radbink.pas.

Порт, найденный мною лежит на http://home1.stofanet.dk/nitezhifter
Там же лежит порт на Smaker, но я его еще не пробовал юзать.


 
GrayFace   (2007-10-21 17:25) [15]

Мой модуль для работы с ними тут: http://www.grayface.nm.ru/RSBinkPlayer.rar
Заточен под проигрывание старого и нового форматов bik, т.к. в Heroes3 используется старая beta-версия с форматом, не поддерживаемым новым Bink"ом.

Dmitry S ©   (14.10.07 6:19) [9]
Зачем такой "изврат", если чуть выше твое же мыло, причем оформленное как надо, даже с mailto: ? :)

Точно, а я думал, что убрал его из настроек :)



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

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

Наверх




Память: 0.52 MB
Время: 0.123 c
15-1193238321
@!!ex
2007-10-24 19:05
2007.11.25
Проблемы с видухой.


11-1177948951
dss
2007-04-30 20:02
2007.11.25
TextAlign


15-1192793813
DevilDevil
2007-10-19 15:36
2007.11.25
Визуальные компоненты на TDataModule


4-1179212932
tralala
2007-05-15 11:08
2007.11.25
Есть ли возможность отловить обрашение к реестру?


15-1192724934
Ученик
2007-10-18 20:28
2007.11.25
Как переустановить ipaq file store?