ref: 5b286b3f0769059769c9431f952a005146e8f5b1
parent: b9a3af2eda4ea67ee6e71f402052c36c6b9a79a7
author: knik <knik>
date: Wed Jul 16 12:27:34 EDT 2003
Used ID_FIL element to write libfaac info.
--- a/libfaac/bitstream.c
+++ b/libfaac/bitstream.c
@@ -24,9 +24,10 @@
Copyright (c) 1997.
**********************************************************************/
/*
- * $Id: bitstream.c,v 1.25 2003/03/24 10:08:10 menno Exp $
+ * $Id: bitstream.c,v 1.26 2003/07/16 16:27:34 knik Exp $
*/
+#include <stdio.h>
#include <stdlib.h>
#include "coder.h"
@@ -101,6 +102,46 @@
+static int WriteFAACStr(BitStream *bitStream, char *version, int write)
+{
+ int i;
+ char str[200];
+ int len, padbits, count;
+ int bitcnt;
+
+ sprintf(str, "libfaac %s", version);
+
+ len = strlen(str) + 1;
+ padbits = (8 - ((bitStream->numBit + 7) % 8)) % 8;
+ count = len + 3;
+
+ bitcnt = LEN_SE_ID + 4 + ((count < 15) ? 0 : 8) + count * 8;
+ if (!write)
+ return bitcnt;
+
+ PutBit(bitStream, ID_FIL, LEN_SE_ID);
+ if (count < 15)
+ {
+ PutBit(bitStream, count, 4);
+ }
+ else
+ {
+ PutBit(bitStream, 15, 4);
+ PutBit(bitStream, count - 14, 8);
+ }
+
+ PutBit(bitStream, 0, padbits);
+ PutBit(bitStream, 0, 8);
+ PutBit(bitStream, 0, 8); // just in case
+ for (i = 0; i < len; i++)
+ PutBit(bitStream, str[i], 8);
+
+ PutBit(bitStream, 0, 8 - padbits);
+
+ return bitcnt;
+}
+
+
int WriteBitstream(faacEncHandle hEncoder,
CoderInfo *coderInfo,
ChannelInfo *channelInfo,
@@ -119,6 +160,9 @@
bits = 0; // compilier will remove it, byt anyone will see that current size of bitstream is 0
}
+ if (hEncoder->frameNum == 4)
+ WriteFAACStr(bitStream, hEncoder->config.name, 1);
+
for (channel = 0; channel < numChannel; channel++) {
if (channelInfo[channel].present) {
@@ -203,6 +247,8 @@
bits = 0; // compilier will remove it, byt anyone will see that current size of bitstream is 0
}
+ if (hEncoder->frameNum == 4)
+ bits += WriteFAACStr(bitStream, hEncoder->config.name, 0);
for (channel = 0; channel < numChannel; channel++) {