changeset 3172:bb38b6b072f8

support for FLI image decoding
author melanson
date Wed, 28 Nov 2001 01:35:55 +0000
parents 3a325e7f6e1d
children 76703fb87686
files codec-cfg.c codec-cfg.h dec_video.c
diffstat 3 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/codec-cfg.c	Wed Nov 28 01:26:03 2001 +0000
+++ b/codec-cfg.c	Wed Nov 28 01:35:55 2001 +0000
@@ -228,6 +228,7 @@
 		"rle",
 		"xanim",
 		"msvidc",
+		"fli",
 		NULL
 	};
         char **drv=audioflag?audiodrv:videodrv;
--- a/codec-cfg.h	Wed Nov 28 01:26:03 2001 +0000
+++ b/codec-cfg.h	Wed Nov 28 01:35:55 2001 +0000
@@ -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
--- a/dec_video.c	Wed Nov 28 01:26:03 2001 +0000
+++ b/dec_video.c	Wed Nov 28 01:35:55 2001 +0000
@@ -123,6 +123,15 @@
   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 @@
      (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 @@
         (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. --------------------