summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--codec-cfg.c1
-rw-r--r--codec-cfg.h1
-rw-r--r--dec_video.c22
3 files changed, 24 insertions, 0 deletions
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. --------------------