common.*: add common routine to eliminate palette from pixmap.
[vlc.git] / modules / codec / ogt / common.c
index 925de46..81574f2 100644 (file)
@@ -2,7 +2,7 @@
  * Common SVCD and VCD subtitle routines.
  *****************************************************************************
  * Copyright (C) 2003 VideoLAN
- * $Id: common.c,v 1.1 2003/12/28 04:51:52 rocky Exp $
+ * $Id: common.c,v 1.2 2003/12/30 04:43:52 rocky Exp $
  *
  * Author: Rocky Bernstein
  *   based on code from:
@@ -161,6 +161,25 @@ vout_thread_t *VCDSubFindVout( decoder_t *p_dec )
 }
 
 
+
+/* Remove color palette by expanding pixel entries to contain the
+   palette values. We work from the free space at the end to the
+   beginning so we can expand inline.
+    */
+void
+VCDInlinePalette ( /*inout*/ uint8_t *p_dest, decoder_sys_t *p_sys,
+                  unsigned int i_height, unsigned int i_width ) 
+{
+  int n = (i_height * i_width) - 1;
+  uint8_t    *p_from = p_dest;
+  ogt_yuvt_t *p_to   = (ogt_yuvt_t *) p_dest;
+  
+  for ( ; n >= 0 ; n-- ) {
+    p_to[n] = p_sys->pi_palette[p_from[n]];
+  }
+}
+
+
 /* Scales down (reduces size) of p_dest in the x direction as 
    determined through aspect ratio x_scale by y_scale. Scaling
    is done in place. p_spu->i_width, is updated to new width