gecko-dev/media/libmkv/gecko_fix.patch
Randy Lin 8179f228c6 Bug 891705 - [MediaEncoder] Implement WebM 1.0 container writer. r=giles, r=gps, r=rillian
This is an integrated patch which includes:
1. Bug 891705: [MediaEncoder] Implement WebM 1.0 container writer. r=giles, r=gps
2. Bug 950567: [MediaEncoder] Phase-in libmkv library. r=giles
3. bug 883749: Implement Vorbis encoding. r=rillian
4. bug 881840: Implement VP8 track encoder. r=rillian
2014-01-15 14:21:14 +08:00

134 lines
4.0 KiB
Diff

diff --git a/EbmlBufferWriter.h b/EbmlBufferWriter.h
index c135f29..d5116ce 100644
--- a/EbmlBufferWriter.h
+++ b/EbmlBufferWriter.h
@@ -11,6 +11,9 @@ typedef struct {
unsigned int offset;
} EbmlGlobal;
+void Ebml_Write(EbmlGlobal *glob, const void *buffer_in, unsigned long len);
+void Ebml_Serialize(EbmlGlobal *glob, const void *buffer_in,
+ int buffer_size, unsigned long len);
void Ebml_StartSubElement(EbmlGlobal *glob, EbmlLoc *ebmlLoc, unsigned long class_id);
void Ebml_EndSubElement(EbmlGlobal *glob, EbmlLoc *ebmlLoc);
diff --git a/EbmlIDs.h b/EbmlIDs.h
index 44d4385..3b5da19 100644
--- a/EbmlIDs.h
+++ b/EbmlIDs.h
@@ -119,7 +119,7 @@ enum mkv {
/* video */
Video = 0xE0,
FlagInterlaced = 0x9A,
- StereoMode = 0x53B8,
+ WEBM_StereoMode = 0x53B8,
AlphaMode = 0x53C0,
PixelWidth = 0xB0,
PixelHeight = 0xBA,
diff --git a/EbmlWriter.c b/EbmlWriter.c
index ebefc1a..087e817 100644
--- a/EbmlWriter.c
+++ b/EbmlWriter.c
@@ -12,6 +12,7 @@
#include <wchar.h>
#include <string.h>
#include <limits.h>
+#include "EbmlBufferWriter.h"
#if defined(_MSC_VER)
#define LITERALU64(n) n
#else
diff --git a/EbmlWriter.h b/EbmlWriter.h
index a0a848b..3aee2b3 100644
--- a/EbmlWriter.h
+++ b/EbmlWriter.h
@@ -7,10 +7,16 @@
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#ifndef EBMLWRITER_HPP
#define EBMLWRITER_HPP
#include <stddef.h>
#include "vpx/vpx_integer.h"
+#include "EbmlBufferWriter.h"
/* note: you must define write and serialize functions as well as your own
* EBML_GLOBAL
@@ -18,9 +24,9 @@
* These functions MUST be implemented
*/
-typedef struct EbmlGlobal EbmlGlobal;
-void Ebml_Serialize(EbmlGlobal *glob, const void *, int, unsigned long);
-void Ebml_Write(EbmlGlobal *glob, const void *, unsigned long);
+// typedef struct EbmlGlobal EbmlGlobal;
+// void Ebml_Serialize(EbmlGlobal *glob, const void *, int, unsigned long);
+// void Ebml_Write(EbmlGlobal *glob, const void *, unsigned long);
/*****/
@@ -41,3 +47,7 @@ void Ebml_SerializeData(EbmlGlobal *glob, unsigned long class_id, unsigned char
void Ebml_WriteVoid(EbmlGlobal *glob, unsigned long vSize);
/* TODO need date function */
#endif
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/WebMElement.c b/WebMElement.c
index 02eefa4..0d5056d 100644
--- a/WebMElement.c
+++ b/WebMElement.c
@@ -6,8 +6,6 @@
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
-
-#include "EbmlBufferWriter.h"
#include "EbmlIDs.h"
#include "WebMElement.h"
#include <stdio.h>
diff --git a/WebMElement.h b/WebMElement.h
index d9ad0a0..987582a 100644
--- a/WebMElement.h
+++ b/WebMElement.h
@@ -6,10 +6,15 @@
// in the file PATENTS. All contributing project authors may
// be found in the AUTHORS file in the root of the source tree.
+#ifdef __cplusplus
+extern "C" {
+#endif
#ifndef MKV_CONTEXT_HPP
#define MKV_CONTEXT_HPP 1
+#include "EbmlWriter.h"
+
void writeSimpleBock(EbmlGlobal *ebml, unsigned char trackNumber, unsigned short timeCode,
int isKeyframe, unsigned char lacingFlag, int discardable,
unsigned char *data, unsigned long dataLength);
@@ -24,12 +29,14 @@ void writeVideoTrack(EbmlGlobal *ebml, unsigned int trackNumber, int flagLacing,
double frameRate);
void writeAudioTrack(EbmlGlobal *glob, unsigned int trackNumber, int flagLacing,
char *codecId, double samplingFrequency, unsigned int channels,
- unsigned char *private, unsigned long privateSize);
+ unsigned char *private_, unsigned long privateSize);
void writeSimpleBlock(EbmlGlobal *ebml, unsigned char trackNumber, short timeCode,
int isKeyframe, unsigned char lacingFlag, int discardable,
unsigned char *data, unsigned long dataLength);
+#endif
-
-#endif
\ No newline at end of file
+#ifdef __cplusplus
+}
+#endif