[FFmpeg-cvslog] r10786 - trunk/libavformat/electronicarts.c

aurel subversion
Thu Oct 18 23:55:52 CEST 2007


Author: aurel
Date: Thu Oct 18 23:55:51 2007
New Revision: 10786

Log:
move audio header parsing in it's own function

Modified:
   trunk/libavformat/electronicarts.c

Modified: trunk/libavformat/electronicarts.c
==============================================================================
--- trunk/libavformat/electronicarts.c	(original)
+++ trunk/libavformat/electronicarts.c	Thu Oct 18 23:55:51 2007
@@ -71,37 +71,15 @@ static uint32_t read_arbitary(ByteIOCont
 }
 
 /*
- * Process EA file header
- * Returns 1 if the EA file is valid and successfully opened, 0 otherwise
+ * Process PT/GSTR sound header
+ * return 1 if success, 0 if invalid format, otherwise AVERROR_xxx
  */
-static int process_ea_header(AVFormatContext *s) {
+static int process_audio_header_elements(AVFormatContext *s)
+{
     int inHeader = 1;
-    uint32_t blockid, size = 0;
-    int num, den;
     EaDemuxContext *ea = s->priv_data;
     ByteIOContext *pb = &s->pb;
 
-    blockid = get_le32(pb);
-    if (blockid == MVhd_TAG) {
-        size = get_le32(pb);
-        url_fskip(pb, 16);
-        den = get_le32(pb);
-        num = get_le32(pb);
-        ea->time_base = (AVRational) {num, den};
-        url_fskip(pb, size-32);
-        blockid = get_le32(pb);
-    }
-    if (blockid != SCHl_TAG)
-        return 0;
-    size += get_le32(pb);
-    blockid = get_le32(pb);
-    if (blockid == GSTR_TAG) {
-        url_fskip(pb, 4);
-    } else if (blockid != PT00_TAG) {
-        av_log (s, AV_LOG_ERROR, "PT header missing\n");
-        return 0;
-    }
-
     while (inHeader) {
         int inSubheader;
         uint8_t byte;
@@ -154,6 +132,42 @@ static int process_ea_header(AVFormatCon
         }
     }
 
+    return 1;
+}
+
+/*
+ * Process EA file header
+ * Returns 1 if the EA file is valid and successfully opened, 0 otherwise
+ */
+static int process_ea_header(AVFormatContext *s) {
+    uint32_t blockid, size = 0;
+    int num, den;
+    EaDemuxContext *ea = s->priv_data;
+    ByteIOContext *pb = &s->pb;
+
+    blockid = get_le32(pb);
+    if (blockid == MVhd_TAG) {
+        size = get_le32(pb);
+        url_fskip(pb, 16);
+        den = get_le32(pb);
+        num = get_le32(pb);
+        ea->time_base = (AVRational) {num, den};
+        url_fskip(pb, size-32);
+        blockid = get_le32(pb);
+    }
+    if (blockid != SCHl_TAG)
+        return 0;
+    size += get_le32(pb);
+    blockid = get_le32(pb);
+    if (blockid == GSTR_TAG) {
+        url_fskip(pb, 4);
+    } else if (blockid != PT00_TAG) {
+        av_log (s, AV_LOG_ERROR, "PT header missing\n");
+        return 0;
+    }
+
+    process_audio_header_elements(s);
+
     /* skip to the start of the data */
     url_fseek(pb, size, SEEK_SET);
 




More information about the ffmpeg-cvslog mailing list