[MPlayer-cvslog] r30576 - trunk/spudec.c

reimar subversion at mplayerhq.hu
Sun Feb 14 14:57:31 CET 2010


Author: reimar
Date: Sun Feb 14 14:57:30 2010
New Revision: 30576

Log:
Avoid using sscanf for basic parsing, it is horribly slow.
Now uses strncmp as a first step, which is 40 times faster.

Modified:
   trunk/spudec.c

Modified: trunk/spudec.c
==============================================================================
--- trunk/spudec.c	Sun Feb 14 14:49:31 2010	(r30575)
+++ trunk/spudec.c	Sun Feb 14 14:57:30 2010	(r30576)
@@ -1161,9 +1161,13 @@ static void spudec_parse_extradata(spude
   buffer[extradata_len] = 0;
 
   do {
-    sscanf(ptr, "size: %dx%d", &this->orig_frame_width, &this->orig_frame_height);
-    if (sscanf(ptr, "palette: %x, %x, %x, %x, %x, %x, %x, %x,"
-                            " %x, %x, %x, %x, %x, %x, %x, %x",
+    if (*ptr == '#')
+        continue;
+    if (!strncmp(ptr, "size: ", 6))
+        sscanf(ptr + 6, "%dx%d", &this->orig_frame_width, &this->orig_frame_height);
+    if (!strncmp(ptr, "palette: ", 9) &&
+        sscanf(ptr + 9, "%x, %x, %x, %x, %x, %x, %x, %x, "
+                        "%x, %x, %x, %x, %x, %x, %x, %x",
                &pal[ 0], &pal[ 1], &pal[ 2], &pal[ 3],
                &pal[ 4], &pal[ 5], &pal[ 6], &pal[ 7],
                &pal[ 8], &pal[ 9], &pal[10], &pal[11],
@@ -1174,7 +1178,8 @@ static void spudec_parse_extradata(spude
     }
     if (!strncasecmp(ptr, "forced subs: on", 15))
       this->forced_subs_only = 1;
-    if (sscanf(ptr, "custom colors: ON, tridx: %x, colors: %x, %x, %x, %x",
+    if (!strncmp(ptr, "custom colors: ON, tridx: ", 26) &&
+        sscanf(ptr + 26, "%x, colors: %x, %x, %x, %x",
                &tridx, cuspal+0, cuspal+1, cuspal+2, cuspal+3) == 5) {
       for (i=0; i<4; i++) {
         cuspal[i] = vobsub_rgb_to_yuv(cuspal[i]);


More information about the MPlayer-cvslog mailing list