From 682d2900f6c76b2cb43cf6d18c722b8f9aed3b01 Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jean-marc.valin@octasic.com>
Date: Wed, 8 Sep 2010 18:01:02 -0400
Subject: [PATCH] Frame packing (now it compiles)

---
 src/framepack.c | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/framepack.c b/src/framepack.c
index ae1084a44..994343555 100644
--- a/src/framepack.c
+++ b/src/framepack.c
@@ -71,15 +71,18 @@ int count_frames(unsigned char *packet, int len)
             return count;
         else
             return -1;
-    } else if (sz == 6)
+    } else /* if (sz == 6 || sz == 7) */
     {
         /* Many packets, different sizes */
         int count = 0;
         int pos = 1;
         int bytes = 1;
+        int extra = 0;
+        if (sz==7)
+            extra = 1;
         while (bytes < len)
         {
-            int tmp=1;
+            int tmp=extra+1;
             int flen = decode_length(packet+pos, len-bytes);
             if (flen==-1)
                 return -1;
@@ -93,16 +96,24 @@ int count_frames(unsigned char *packet, int len)
             return -1;
         else
             return count;
-    } else {
-
     }
 }
 
 #define MAX_FRAMES 256
-int hybrid_merge_packets(unsigned char **packets, int *len, unsigned *output, int maxlen)
+int hybrid_merge_packets(unsigned char **packets, int *plen, int nb_packets,
+        unsigned *output, int maxlen)
 {
+    int i;
     unsigned char cfg[MAX_FRAMES];
-    unsigned char len[MAX_FRAMES];
+    unsigned char flen[MAX_FRAMES];
     int nb_frames=0;
 
+    for (i=0;i<nb_packets;i++)
+    {
+        int tmp = count_frames(packets[i], plen[i]);
+        if (tmp<=0)
+            return -1;
+        nb_frames += tmp;
+    }
+    return nb_frames;
 }
-- 
GitLab