[SCM] libav/experimental: move audio header parsing in its own function

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:08:25 UTC 2013


The following commit has been merged in the experimental branch:
commit 215eb1028d155cae2184673ab36cddd101b1390b
Author: Aurelien Jacobs <aurel at gnuage.org>
Date:   Thu Oct 18 21:55:51 2007 +0000

    move audio header parsing in its own function
    
    Originally committed as revision 10786 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/electronicarts.c b/libavformat/electronicarts.c
index c96d8cc..9c20290 100644
--- a/libavformat/electronicarts.c
+++ b/libavformat/electronicarts.c
@@ -71,37 +71,15 @@ static uint32_t read_arbitary(ByteIOContext *pb) {
 }
 
 /*
- * 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(AVFormatContext *s) {
         }
     }
 
+    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);
 

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list