# HG changeset patch
# User Diego 'Flameeyes' Pettenò <[EMAIL PROTECTED]>
# Date 1181317127 -7200
# Node ID 3967a042e533538daf2bf6f7d145190487744935
# Parent  dd59a55edb5b5257879bef0529dcdf4bbc8f4262
Update parse_meta_atom to use a switch case rather than a series of if. By the 
way, the code is totally broken and does not work as intended.

diff -r 3967a042e533538daf2bf6f7d145190487744935 -r 
dd59a55edb5b5257879bef0529dcdf4bbc8f4262 src/demuxers/demux_qt.c
--- a/src/demuxers/demux_qt.c   Fri Jun 08 17:38:47 2007 +0200
+++ b/src/demuxers/demux_qt.c   Wed Jun 06 21:52:15 2007 +0200
@@ -729,50 +729,53 @@ static int is_qt_file(input_plugin_t *qt
 
 /* parse out a meta data atom */
 static void parse_meta_atom(qt_info *info, unsigned char *meta_atom) {
-  int i;
-  unsigned int meta_atom_size = BE_32(&meta_atom[0]);
-  qt_atom current_atom;
-  int string_size;
-
-  for (i = 0; i < meta_atom_size - 4; i++) {
-    current_atom = BE_32(&meta_atom[i]);
-
-    if (current_atom == ART_ATOM) {
-      string_size = BE_32(&meta_atom[i + 4]) - 16 + 1;
+  uint32_t i = 4;
+  uint32_t meta_atom_size = BE_32(&meta_atom[0]);
+
+  while ( i < meta_atom_size ) {
+    qt_atom current_atom = BE_32(&meta_atom[i]);
+    uint32_t sub_atom_size = BE_32(&meta_atom[i + 4]);
+    uint32_t string_size = sub_atom_size - 16 + 1;
+    
+    switch (current_atom) {
+    case ART_ATOM:
       info->artist = xine_xmalloc(string_size);
       strncpy(info->artist, &meta_atom[i + 20], string_size - 1);
       info->artist[string_size - 1] = 0;
-    } else if (current_atom == NAM_ATOM) {
-      string_size = BE_32(&meta_atom[i + 4]) - 16 + 1;
+      break;
+    case NAM_ATOM:
       info->name = xine_xmalloc(string_size);
       strncpy(info->name, &meta_atom[i + 20], string_size - 1);
       info->name[string_size - 1] = 0;
-    } else if (current_atom == ALB_ATOM) {
-      string_size = BE_32(&meta_atom[i + 4]) - 16 + 1;
+      break;
+    case ALB_ATOM:
       info->album = xine_xmalloc(string_size);
       strncpy(info->album, &meta_atom[i + 20], string_size - 1);
       info->album[string_size - 1] = 0;
-    } else if (current_atom == GEN_ATOM) {
-      string_size = BE_32(&meta_atom[i + 4]) - 16 + 1;
+      break;
+    case GEN_ATOM:
       info->genre = xine_xmalloc(string_size);
       strncpy(info->genre, &meta_atom[i + 20], string_size - 1);
       info->genre[string_size - 1] = 0;
-    } else if (current_atom == TOO_ATOM) {
-      string_size = BE_32(&meta_atom[i + 4]) - 16 + 1;
+      break;
+    case TOO_ATOM:
       info->comment = xine_xmalloc(string_size);
       strncpy(info->comment, &meta_atom[i + 20], string_size - 1);
       info->comment[string_size - 1] = 0;
-    } else if (current_atom == WRT_ATOM) {
-      string_size = BE_32(&meta_atom[i + 4]) - 16 + 1;
+      break;
+    case WRT_ATOM:
       info->composer = xine_xmalloc(string_size);
       strncpy(info->composer, &meta_atom[i + 20], string_size - 1);
       info->composer[string_size - 1] = 0;
-    } else if (current_atom == DAY_ATOM) {
-      string_size = BE_32(&meta_atom[i + 4]) - 16 + 1;
+      break;
+    case DAY_ATOM:
       info->year = xine_xmalloc(string_size);
       strncpy(info->year, &meta_atom[i + 20], string_size - 1);
       info->year[string_size - 1] = 0;
-    }
+      break;
+    }
+
+    i += sub_atom_size;
   }
 
 }

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Xine-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xine-cvslog

Reply via email to