Форум: "Прочее";
Текущий архив: 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