diff libmpdemux/demux_mkv.c @ 25292:a6a49a7a4be0

Move vobsub palette->yuv convert code into a common function.
author ulion
date Sat, 08 Dec 2007 12:15:03 +0000
parents 4bbc9ad3124c
children 23894348d1e5
line wrap: on
line diff
--- a/libmpdemux/demux_mkv.c	Sat Dec 08 04:29:11 2007 +0000
+++ b/libmpdemux/demux_mkv.c	Sat Dec 08 12:15:03 2007 +0000
@@ -22,6 +22,7 @@
 #include "mp_msg.h"
 #include "help_mp.h"
 
+#include "vobsub.h"
 #include "subreader.h"
 #include "libvo/sub.h"
 
@@ -305,7 +306,7 @@
 static int
 vobsub_parse_palette (sh_sub_t *sh, const char *start)
 {
-  int i, r, g, b, y, u, v, tmp;
+  int i, tmp;
 
   start += 8;
   while (isspace(*start))
@@ -314,14 +315,7 @@
     {
       if (sscanf(start, "%06x", &tmp) != 1)
         break;
-      r = tmp >> 16 & 0xff;
-      g = tmp >> 8 & 0xff;
-      b = tmp & 0xff;
-      y = av_clip_uint8( 0.1494  * r + 0.6061 * g + 0.2445 * b);
-      u = av_clip_uint8( 0.6066  * r - 0.4322 * g - 0.1744 * b + 128);
-      v = av_clip_uint8(-0.08435 * r - 0.3422 * g + 0.4266 * b + 128);
-      y = y * 219 / 255 + 16;
-      sh->palette[i] = y << 16 | u << 8 | v;
+      sh->palette[i] = vobsub_palette_to_yuv(tmp);
       start += 6;
       while ((*start == ',') || isspace(*start))
         start++;