diff --git a/codec-cfg.c b/codec-cfg.c index 0b26969d00..4b3d665e9b 100644 --- a/codec-cfg.c +++ b/codec-cfg.c @@ -228,6 +228,7 @@ static short get_driver(char *s,int audioflag) "rle", "xanim", "msvidc", + "fli", NULL }; char **drv=audioflag?audiodrv:videodrv; diff --git a/codec-cfg.h b/codec-cfg.h index 319ff31207..0055951968 100644 --- a/codec-cfg.h +++ b/codec-cfg.h @@ -43,6 +43,7 @@ #define VFM_RLE 9 #define VFM_XANIM 10 #define VFM_MSVIDC 11 +#define VFM_FLI 12 #ifndef GUID_TYPE #define GUID_TYPE diff --git a/dec_video.c b/dec_video.c index 1ef2d7ed4c..761f629472 100644 --- a/dec_video.c +++ b/dec_video.c @@ -123,6 +123,15 @@ void AVI_Decode_Video1_8( unsigned char *palette_map, int bytes_per_pixel); +void AVI_Decode_Fli( + unsigned char *encoded, + int encoded_size, + unsigned char *decoded, + int width, + int height, + int bytes_per_pixel); + + //**************************************************************************// // The OpenDivX stuff: //**************************************************************************// @@ -556,6 +565,12 @@ switch(sh_video->codec->driver){ (char*)memalign(64, sh_video->disp_w*sh_video->disp_h*bpp); // FIXME!!! } break; + case VFM_FLI: { + int bpp=((out_fmt&255)+7)/8; // RGB only + sh_video->our_out_buffer = + (char*)memalign(64, sh_video->disp_w*sh_video->disp_h*bpp); // FIXME!!! + } + break; } } sh_video->inited=1; @@ -805,6 +820,13 @@ if(verbose>1){ (char *)sh_video->bih+40, ((out_fmt&255)+7)/8); blit_frame = 3; break; + case VFM_FLI: + AVI_Decode_Fli( + start, in_size, sh_video->our_out_buffer, + sh_video->disp_w, sh_video->disp_h, + ((out_fmt&255)+7)/8); + blit_frame = 3; + break; } // switch //------------------------ frame decoded. --------------------