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

Вниз

Файлы 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.045 c
15-1193395304
Sour Smile
2007-10-26 14:41
2007.11.25
Стандартные заголовочные файлы


15-1192772022
vajo
2007-10-19 09:33
2007.11.25
Переводчики шутят


2-1193946555
Вовка
2007-11-01 22:49
2007.11.25
Помогите нужна лаба


1-1189049650
Nikfel
2007-09-06 07:34
2007.11.25
Добавление пункта в системное контекстное меню эксплорера


2-1194152483
Alex8
2007-11-04 08:01
2007.11.25
Объединение трех таблиц





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский