gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r6063 - Extractor/src/plugins


From: gnunet
Subject: [GNUnet-SVN] r6063 - Extractor/src/plugins
Date: Sun, 30 Dec 2007 03:57:27 -0700 (MST)

Author: holindho
Date: 2007-12-30 03:57:27 -0700 (Sun, 30 Dec 2007)
New Revision: 6063

Removed:
   Extractor/src/plugins/amfparser.c
   Extractor/src/plugins/amfparser.h
Modified:
   Extractor/src/plugins/Makefile.am
   Extractor/src/plugins/flvextractor.c
Log:
put AMF parser inside flvextractor for now (until it's used by some other
extractor)


Modified: Extractor/src/plugins/Makefile.am
===================================================================
--- Extractor/src/plugins/Makefile.am   2007-12-30 09:50:40 UTC (rev 6062)
+++ Extractor/src/plugins/Makefile.am   2007-12-30 10:57:27 UTC (rev 6063)
@@ -126,8 +126,7 @@
 noinst_LTLIBRARIES = \
   libpack.la \
   libconvert.la \
-  libconvert_numeric.la \
-  libamfparser.la
+  libconvert_numeric.la
 
 if HAVE_ZLIB
 libextractor_qt_la_LDFLAGS = \
@@ -243,12 +242,6 @@
   convert_numeric.c \
   convert_numeric.h 
 
-libamfparser_la_SOURCES = \
-  amfparser.c \
-  amfparser.h 
-libamfparser_la_LIBADD = \
-  libconvert_numeric.la
-
 libextractor_zip_la_SOURCES = \
   zipextractor.c
 libextractor_zip_la_LDFLAGS = \
@@ -273,7 +266,7 @@
 libextractor_flv_la_LDFLAGS = \
   $(PLUGINFLAGS)  $(retaincommand)
 libextractor_flv_la_LIBADD = \
-  libamfparser.la
+  libconvert_numeric.la
 
 libextractor_real_la_SOURCES = \
   realextractor.c 

Deleted: Extractor/src/plugins/amfparser.c
===================================================================
--- Extractor/src/plugins/amfparser.c   2007-12-30 09:50:40 UTC (rev 6062)
+++ Extractor/src/plugins/amfparser.c   2007-12-30 10:57:27 UTC (rev 6063)
@@ -1,370 +0,0 @@
-/*
-     This file is part of libextractor.
-     Copyright (C) 2007 Heikki Lindholm
-
-     libextractor is free software; you can redistribute it and/or modify
-     it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
-     option) any later version.
-
-     libextractor is distributed in the hope that it will be useful, but
-     WITHOUT ANY WARRANTY; without even the implied warranty of
-     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-     General Public License for more details.
-
-     You should have received a copy of the GNU General Public License
-     along with libextractor; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
- */
-
-/*
- * see http://osflash.org/documentation/amf
- */
-#include "platform.h"
-#include "convert_numeric.h"
-#include "amfparser.h"
-
-#define DEBUG 0
-
-/* core datatypes */
-
-static inline unsigned long readLong(const unsigned char **data)
-{
-  const unsigned char *ptr = *data;
-  unsigned long val;
-
-  val = (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3];
-  ptr += 4;
-  *data = ptr;
-  return val;
-}
-
-static inline unsigned long readMediumInt(const unsigned char **data)
-{
-  const unsigned char *ptr = *data;
-  unsigned long val;
-
-  val = (ptr[0] << 16) | (ptr[1] << 8) | ptr[2];
-  ptr += 3;
-  *data = ptr;
-  return val;
-}
-
-static inline unsigned short readInt(const unsigned char **data)
-{
-  const unsigned char *ptr = *data;
-  unsigned short val;
-
-  val = (ptr[0] << 8) | ptr[1];
-  ptr += 2;
-  *data = ptr;
-  return val;
-}
-
-static inline double readDouble(const unsigned char **data)
-{
-  const unsigned char *ptr = *data;
-  double val;
-
-  floatformat_to_double(&floatformat_ieee_double_big, 
-                        (const void *)ptr, 
-                        &val);
-  ptr += 8;
-  *data = ptr;
-  return val;
-}
-
-
-/* actionscript types */
-
-static int readASNumber(const unsigned char **data,
-                               size_t *len,
-                               double *retval)
-{
-  const unsigned char *ptr = *data;
-  double val;
-
-  if (*len < 8)
-    return -1;
-
-  val = readDouble(&ptr);
-  *len -= 8;
-
-  *retval = val;
-  *data = ptr;
-  return 0;
-}
-
-static int readASBoolean(const unsigned char **data,
-                                size_t *len,
-                                int *retval)
-{
-  const unsigned char *ptr = *data;
-  int val;
-  
-  if (*len < 1)
-    return -1;
-
-  val = (*ptr != 0x00);
-#if DEBUG
-  printf("asbool: %d\n", val);
-#endif
-  ptr += 1;
-  *len -= 1;
-
-  *retval = val;
-  *data = ptr;
-  return 0;
-}
-
-static int readASDate(const unsigned char **data,
-                             size_t *len,
-                             double *millis,
-                             short *zone)
-{
-  const unsigned char *ptr = *data;
-
-  if (*len < 10)
-    return -1;
-
-  *millis = readDouble(&ptr);
-  *len -= 8;
-
-  *zone = readInt(&ptr);
-  len -= 2;
-
-#if DEBUG
-  printf("asdate: %f tz: %d\n", *millis, *zone);
-#endif
-
-  *data = ptr;
-  return 0;
-}
-
-static int readASString(const unsigned char **data,
-                               size_t *len,
-                               char **retval)
-{
-  const unsigned char *ptr = *data;
-  char *ret;
-  int slen;
- 
-  if (*len < 2)
-    return -1;
-
-  slen = readInt(&ptr);
-
-  if (*len < (2 + slen))
-    return -1;
-
-  ret = malloc(slen+1);
-  if (ret == NULL)
-    return -1;
-  memcpy(ret, ptr, slen);
-  ret[slen] = '\0';
-#if DEBUG
-  printf("asstring: %p %s\n", ret, ret);
-#endif
-  ptr += slen;
-  *len -= (2 + slen);
-
-  *retval = ret;
-  *data = ptr;
-  return 0;
-}
-
-int parse_amf(const unsigned char **data, 
-              size_t *len,
-              AMFParserHandler *handler) 
-{
-  const unsigned char *ptr = *data;
-  unsigned char astype;
-  int ret;
-
-  ret = 0;
-  astype = *ptr++;
-  (*(handler->as_begin_callback))(astype, handler->userdata);
-  switch (astype) {
-    case ASTYPE_NUMBER:
-    {
-      double val;
-      ret = readASNumber(&ptr, len, &val);
-      if (ret == 0)
-        (*(handler->as_end_callback))(astype, 
-                                      &val, 
-                                      handler->userdata);
-      break;
-    }
-    case ASTYPE_BOOLEAN:
-    {
-      int val;
-      ret = readASBoolean(&ptr, len, &val);
-      if (ret == 0)
-        (*(handler->as_end_callback))(astype, 
-                                      &val, 
-                                      handler->userdata);
-      break;
-    }
-    case ASTYPE_STRING:
-    {
-      char *val;
-      ret = readASString(&ptr, len, &val);
-      if (ret == 0) {
-        (*(handler->as_end_callback))(astype, 
-                                      val, 
-                                      handler->userdata);
-        free(val);
-      }
-      break;
-    }
-    case ASTYPE_DATE:
-    {
-      void *tmp[2];
-      double millis;
-      short tz;
-      ret = readASDate(&ptr, len, &millis, &tz);
-      tmp[0] = &millis;
-      tmp[1] = &tz;
-      if (ret == 0)
-        (*(handler->as_end_callback))(astype, 
-                                      &tmp, 
-                                      handler->userdata);
-      break;
-    }
-    case ASTYPE_NULL:
-    case ASTYPE_UNDEFINED:
-    case ASTYPE_UNSUPPORTED:
-      ret = 0;
-      (*(handler->as_end_callback))(astype, NULL, handler->userdata);
-      break;
-    case ASTYPE_ENDOFOBJECT:
-      ret = 0;
-      (*(handler->as_end_callback))(astype, NULL, handler->userdata);
-#if DEBUG
-      printf("asendofboject\n");
-#endif
-      break;
-    case ASTYPE_ARRAY:
-    {
-      long i, alen;
-#if DEBUG
-      printf("asarray:\n");
-#endif
-      if (*len < 4) {
-        ret = -1;
-        break;
-      }
-      alen = readLong(&ptr);
-      *len -= 4;
-#if DEBUG
-      printf(" len: %ld\n", alen);
-#endif
-      for (i = 0; i < alen; i++) {
-        ret = parse_amf(&ptr, len, handler);
-        if (ret == -1)
-         break;
-      }
-      (*(handler->as_end_callback))(ASTYPE_ARRAY, 
-                                    NULL, 
-                                    handler->userdata);
-#if DEBUG
-      printf("asarray: END\n");
-#endif
-      break;
-    }  
-    case ASTYPE_OBJECT:
-    {
-      char *key;
-      unsigned char type;
-#if DEBUG
-      printf("asobject:\n");
-#endif
-      ret = readASString(&ptr, len, &key);
-      if (ret == -1)
-        break;
-      (*(handler->as_key_callback))(key, 
-                                    handler->userdata);
-      free(key);
-      type = *ptr;
-      while (type != ASTYPE_ENDOFOBJECT) {
-        ret = parse_amf(&ptr, len, handler);
-        if (ret == -1)
-          break;
-        ret = readASString(&ptr, len, &key);
-        if (ret == -1)
-          break;
-        (*(handler->as_key_callback))(key, 
-                                      handler->userdata);
-        free(key);
-        type = *ptr;      
-      }
-      if (ret == 0)
-        (*(handler->as_end_callback))(ASTYPE_OBJECT, 
-                                      NULL, 
-                                      handler->userdata);
-#if DEBUG
-      printf("asobject END:\n");
-#endif
-      break;
-    }  
-    case ASTYPE_MIXEDARRAY:
-    {
-      char *key;
-      unsigned char type;
-      long max_index;
-#if DEBUG
-      printf("asmixedarray:\n");
-#endif
-      if (*len < 4) {
-        ret = -1;
-        break;
-      }
-      max_index = readLong(&ptr);
-      *len -= 4;
-#if DEBUG
-      printf(" max index: %ld\n", max_index);
-#endif
-      ret = readASString(&ptr, len, &key);
-      if (ret == -1)
-        break;
-      (*(handler->as_key_callback))(key, 
-                                    handler->userdata);
-      free(key);
-      type = *ptr;
-      while (type != ASTYPE_ENDOFOBJECT) {
-        ret = parse_amf(&ptr, len, handler);
-        if (ret == -1)
-          break;
-        ret = readASString(&ptr, len, &key);
-        if (ret == -1)
-          break;
-        (*(handler->as_key_callback))(key, 
-                                      handler->userdata);
-        free(key);
-        type = *ptr;      
-      }
-      if (ret == 0)
-        (*(handler->as_end_callback))(astype, 
-                                      NULL, 
-                                      handler->userdata);
-#if DEBUG
-      printf("asmixedarray: END\n");
-#endif
-      break;
-    }  
-    default:
-      ret = -1;
-      (*(handler->as_end_callback))(astype, 
-                                    NULL, 
-                                    handler->userdata);
-#if DEBUG
-      printf("asunknown %x\n", astype);
-#endif
-      break;
-  }
-
-  *data = ptr;
-  return ret;
-}
-

Deleted: Extractor/src/plugins/amfparser.h
===================================================================
--- Extractor/src/plugins/amfparser.h   2007-12-30 09:50:40 UTC (rev 6062)
+++ Extractor/src/plugins/amfparser.h   2007-12-30 10:57:27 UTC (rev 6063)
@@ -1,60 +0,0 @@
-/*
-     This file is part of libextractor.
-     Copyright (C) 2007 Heikki Lindholm
-
-     libextractor is free software; you can redistribute it and/or modify
-     it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
-     option) any later version.
-
-     libextractor is distributed in the hope that it will be useful, but
-     WITHOUT ANY WARRANTY; without even the implied warranty of
-     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-     General Public License for more details.
-
-     You should have received a copy of the GNU General Public License
-     along with libextractor; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
- */
-
-/*
- * see http://osflash.org/documentation/amf
- */
-
-#ifndef AMFPARSER_H
-#define AMFPARSER_H
-
-/* Actionscript types */
-#define ASTYPE_NUMBER       0x00
-#define ASTYPE_BOOLEAN      0x01
-#define ASTYPE_STRING       0x02
-#define ASTYPE_OBJECT       0x03
-#define ASTYPE_MOVIECLIP    0x04
-#define ASTYPE_NULL         0x05
-#define ASTYPE_UNDEFINED    0x06
-#define ASTYPE_REFERENCE    0x07
-#define ASTYPE_MIXEDARRAY   0x08
-#define ASTYPE_ENDOFOBJECT  0x09
-#define ASTYPE_ARRAY        0x0a
-#define ASTYPE_DATE         0x0b
-#define ASTYPE_LONGSTRING   0x0c
-#define ASTYPE_UNSUPPORTED  0x0d
-#define ASTYPE_RECORDSET    0x0e
-#define ASTYPE_XML          0x0f
-#define ASTYPE_TYPEDOBJECT  0x10
-#define ASTYPE_AMF3DATA     0x11
-
-typedef struct {
-  void * userdata;
-  void (*as_begin_callback)(unsigned char type, void * userdata);
-  void (*as_key_callback)(char * key, void * userdata);
-  void (*as_end_callback)(unsigned char type, void * value, void * userdata);
-} AMFParserHandler;
-
-extern int parse_amf(const unsigned char **data, 
-                     size_t *len,
-                     AMFParserHandler *handler);
-
-#endif /* AMFPARSER_H */
-

Modified: Extractor/src/plugins/flvextractor.c
===================================================================
--- Extractor/src/plugins/flvextractor.c        2007-12-30 09:50:40 UTC (rev 
6062)
+++ Extractor/src/plugins/flvextractor.c        2007-12-30 10:57:27 UTC (rev 
6063)
@@ -24,7 +24,7 @@
  */
 #include "platform.h"
 #include "extractor.h"
-#include "amfparser.h"
+#include "convert_numeric.h"
 #include <string.h>
 
 #define DEBUG 0
@@ -46,6 +46,382 @@
   return result;
 }
 
+/*
+ * AMF parser
+ */
+
+/* Actionscript types */
+#define ASTYPE_NUMBER       0x00
+#define ASTYPE_BOOLEAN      0x01
+#define ASTYPE_STRING       0x02
+#define ASTYPE_OBJECT       0x03
+#define ASTYPE_MOVIECLIP    0x04
+#define ASTYPE_NULL         0x05
+#define ASTYPE_UNDEFINED    0x06
+#define ASTYPE_REFERENCE    0x07
+#define ASTYPE_MIXEDARRAY   0x08
+#define ASTYPE_ENDOFOBJECT  0x09
+#define ASTYPE_ARRAY        0x0a
+#define ASTYPE_DATE         0x0b
+#define ASTYPE_LONGSTRING   0x0c
+#define ASTYPE_UNSUPPORTED  0x0d
+#define ASTYPE_RECORDSET    0x0e
+#define ASTYPE_XML          0x0f
+#define ASTYPE_TYPEDOBJECT  0x10
+#define ASTYPE_AMF3DATA     0x11
+
+typedef struct {
+  void * userdata;
+  void (*as_begin_callback)(unsigned char type, void * userdata);
+  void (*as_key_callback)(char * key, void * userdata);
+  void (*as_end_callback)(unsigned char type, void * value, void * userdata);
+} AMFParserHandler;
+
+/* core datatypes */
+
+static inline unsigned long readLong(const unsigned char **data)
+{
+  const unsigned char *ptr = *data;
+  unsigned long val;
+
+  val = (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3];
+  ptr += 4;
+  *data = ptr;
+  return val;
+}
+
+static inline unsigned long readMediumInt(const unsigned char **data)
+{
+  const unsigned char *ptr = *data;
+  unsigned long val;
+
+  val = (ptr[0] << 16) | (ptr[1] << 8) | ptr[2];
+  ptr += 3;
+  *data = ptr;
+  return val;
+}
+
+static inline unsigned short readInt(const unsigned char **data)
+{
+  const unsigned char *ptr = *data;
+  unsigned short val;
+
+  val = (ptr[0] << 8) | ptr[1];
+  ptr += 2;
+  *data = ptr;
+  return val;
+}
+
+static inline double readDouble(const unsigned char **data)
+{
+  const unsigned char *ptr = *data;
+  double val;
+
+  floatformat_to_double(&floatformat_ieee_double_big, 
+                        (const void *)ptr, 
+                        &val);
+  ptr += 8;
+  *data = ptr;
+  return val;
+}
+
+
+/* actionscript types */
+
+static int readASNumber(const unsigned char **data,
+                               size_t *len,
+                               double *retval)
+{
+  const unsigned char *ptr = *data;
+  double val;
+
+  if (*len < 8)
+    return -1;
+
+  val = readDouble(&ptr);
+  *len -= 8;
+
+  *retval = val;
+  *data = ptr;
+  return 0;
+}
+
+static int readASBoolean(const unsigned char **data,
+                                size_t *len,
+                                int *retval)
+{
+  const unsigned char *ptr = *data;
+  int val;
+  
+  if (*len < 1)
+    return -1;
+
+  val = (*ptr != 0x00);
+#if DEBUG
+  printf("asbool: %d\n", val);
+#endif
+  ptr += 1;
+  *len -= 1;
+
+  *retval = val;
+  *data = ptr;
+  return 0;
+}
+
+static int readASDate(const unsigned char **data,
+                             size_t *len,
+                             double *millis,
+                             short *zone)
+{
+  const unsigned char *ptr = *data;
+
+  if (*len < 10)
+    return -1;
+
+  *millis = readDouble(&ptr);
+  *len -= 8;
+
+  *zone = readInt(&ptr);
+  len -= 2;
+
+#if DEBUG
+  printf("asdate: %f tz: %d\n", *millis, *zone);
+#endif
+
+  *data = ptr;
+  return 0;
+}
+
+static int readASString(const unsigned char **data,
+                               size_t *len,
+                               char **retval)
+{
+  const unsigned char *ptr = *data;
+  char *ret;
+  int slen;
+ 
+  if (*len < 2)
+    return -1;
+
+  slen = readInt(&ptr);
+
+  if (*len < (2 + slen))
+    return -1;
+
+  ret = malloc(slen+1);
+  if (ret == NULL)
+    return -1;
+  memcpy(ret, ptr, slen);
+  ret[slen] = '\0';
+#if DEBUG
+  printf("asstring: %p %s\n", ret, ret);
+#endif
+  ptr += slen;
+  *len -= (2 + slen);
+
+  *retval = ret;
+  *data = ptr;
+  return 0;
+}
+
+static int parse_amf(const unsigned char **data, 
+              size_t *len,
+              AMFParserHandler *handler) 
+{
+  const unsigned char *ptr = *data;
+  unsigned char astype;
+  int ret;
+
+  ret = 0;
+  astype = *ptr++;
+  (*(handler->as_begin_callback))(astype, handler->userdata);
+  switch (astype) {
+    case ASTYPE_NUMBER:
+    {
+      double val;
+      ret = readASNumber(&ptr, len, &val);
+      if (ret == 0)
+        (*(handler->as_end_callback))(astype, 
+                                      &val, 
+                                      handler->userdata);
+      break;
+    }
+    case ASTYPE_BOOLEAN:
+    {
+      int val;
+      ret = readASBoolean(&ptr, len, &val);
+      if (ret == 0)
+        (*(handler->as_end_callback))(astype, 
+                                      &val, 
+                                      handler->userdata);
+      break;
+    }
+    case ASTYPE_STRING:
+    {
+      char *val;
+      ret = readASString(&ptr, len, &val);
+      if (ret == 0) {
+        (*(handler->as_end_callback))(astype, 
+                                      val, 
+                                      handler->userdata);
+        free(val);
+      }
+      break;
+    }
+    case ASTYPE_DATE:
+    {
+      void *tmp[2];
+      double millis;
+      short tz;
+      ret = readASDate(&ptr, len, &millis, &tz);
+      tmp[0] = &millis;
+      tmp[1] = &tz;
+      if (ret == 0)
+        (*(handler->as_end_callback))(astype, 
+                                      &tmp, 
+                                      handler->userdata);
+      break;
+    }
+    case ASTYPE_NULL:
+    case ASTYPE_UNDEFINED:
+    case ASTYPE_UNSUPPORTED:
+      ret = 0;
+      (*(handler->as_end_callback))(astype, NULL, handler->userdata);
+      break;
+    case ASTYPE_ENDOFOBJECT:
+      ret = 0;
+      (*(handler->as_end_callback))(astype, NULL, handler->userdata);
+#if DEBUG
+      printf("asendofboject\n");
+#endif
+      break;
+    case ASTYPE_ARRAY:
+    {
+      long i, alen;
+#if DEBUG
+      printf("asarray:\n");
+#endif
+      if (*len < 4) {
+        ret = -1;
+        break;
+      }
+      alen = readLong(&ptr);
+      *len -= 4;
+#if DEBUG
+      printf(" len: %ld\n", alen);
+#endif
+      for (i = 0; i < alen; i++) {
+        ret = parse_amf(&ptr, len, handler);
+        if (ret == -1)
+         break;
+      }
+      (*(handler->as_end_callback))(ASTYPE_ARRAY, 
+                                    NULL, 
+                                    handler->userdata);
+#if DEBUG
+      printf("asarray: END\n");
+#endif
+      break;
+    }  
+    case ASTYPE_OBJECT:
+    {
+      char *key;
+      unsigned char type;
+#if DEBUG
+      printf("asobject:\n");
+#endif
+      ret = readASString(&ptr, len, &key);
+      if (ret == -1)
+        break;
+      (*(handler->as_key_callback))(key, 
+                                    handler->userdata);
+      free(key);
+      type = *ptr;
+      while (type != ASTYPE_ENDOFOBJECT) {
+        ret = parse_amf(&ptr, len, handler);
+        if (ret == -1)
+          break;
+        ret = readASString(&ptr, len, &key);
+        if (ret == -1)
+          break;
+        (*(handler->as_key_callback))(key, 
+                                      handler->userdata);
+        free(key);
+        type = *ptr;      
+      }
+      if (ret == 0)
+        (*(handler->as_end_callback))(ASTYPE_OBJECT, 
+                                      NULL, 
+                                      handler->userdata);
+#if DEBUG
+      printf("asobject END:\n");
+#endif
+      break;
+    }  
+    case ASTYPE_MIXEDARRAY:
+    {
+      char *key;
+      unsigned char type;
+      long max_index;
+#if DEBUG
+      printf("asmixedarray:\n");
+#endif
+      if (*len < 4) {
+        ret = -1;
+        break;
+      }
+      max_index = readLong(&ptr);
+      *len -= 4;
+#if DEBUG
+      printf(" max index: %ld\n", max_index);
+#endif
+      ret = readASString(&ptr, len, &key);
+      if (ret == -1)
+        break;
+      (*(handler->as_key_callback))(key, 
+                                    handler->userdata);
+      free(key);
+      type = *ptr;
+      while (type != ASTYPE_ENDOFOBJECT) {
+        ret = parse_amf(&ptr, len, handler);
+        if (ret == -1)
+          break;
+        ret = readASString(&ptr, len, &key);
+        if (ret == -1)
+          break;
+        (*(handler->as_key_callback))(key, 
+                                      handler->userdata);
+        free(key);
+        type = *ptr;      
+      }
+      if (ret == 0)
+        (*(handler->as_end_callback))(astype, 
+                                      NULL, 
+                                      handler->userdata);
+#if DEBUG
+      printf("asmixedarray: END\n");
+#endif
+      break;
+    }  
+    default:
+      ret = -1;
+      (*(handler->as_end_callback))(astype, 
+                                    NULL, 
+                                    handler->userdata);
+#if DEBUG
+      printf("asunknown %x\n", astype);
+#endif
+      break;
+  }
+
+  *data = ptr;
+  return ret;
+}
+
+/*
+ * FLV parser
+ */
+
 /* from tarextractor, modified to take timezone */
 /* TODO: check that the output date is correct */
 static int
@@ -158,30 +534,6 @@
   return (retval < rsize) ? 0 : EOVERFLOW;
 }
 
-static inline unsigned long readBEInt32(const unsigned char **data)
-{
-  const unsigned char *ptr = *data;
-  unsigned long val;
-
-  val = (ptr[0] << 24) | (ptr[1] << 16) | (ptr[2] << 8) | ptr[3];
-  ptr += 4;
-  *data = ptr;
-  return val;
-}
-
-static inline unsigned long readBEInt24(const unsigned char **data)
-{
-  const unsigned char *ptr = *data;
-  unsigned long val;
-
-  val = (ptr[0] << 16) | (ptr[1] << 8) | ptr[2];
-  ptr += 3;
-  *data = ptr;
-  return val;
-}
-
-/* FLV parser */
-
 typedef struct
 {
   char signature[3];
@@ -219,7 +571,7 @@
   ptr += 3;
   hdr->version = *ptr++;
   hdr->flags = *ptr++;
-  hdr->offset = readBEInt32(&ptr);
+  hdr->offset = readLong(&ptr);
   if (hdr->offset != FLV_HEADER_SIZE)
     return -1;
 
@@ -236,7 +588,7 @@
   if ((ptr + 4) > end)
     return -1;
 
-  *prev_size = readBEInt32(&ptr);
+  *prev_size = readLong(&ptr);
 
   *data = ptr;
   return 0;
@@ -252,10 +604,10 @@
     return -1;
 
   hdr->type = *ptr++;
-  hdr->bodyLength = readBEInt24(&ptr);
-  hdr->timestamp = readBEInt24(&ptr);
+  hdr->bodyLength = readMediumInt(&ptr);
+  hdr->timestamp = readMediumInt(&ptr);
   hdr->timestamp = (*ptr++ << 24) | hdr->timestamp;
-  hdr->streamId = readBEInt24(&ptr);
+  hdr->streamId = readMediumInt(&ptr);
 
   *data = ptr;
   return 0;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]