shithub: opus

Download patch

ref: ccc988b82227954959ac53dd7b3d8785c3b53683
parent: 4618eee0927273de24a16c8b0d201716dda7893e
author: Jean-Marc Valin <[email protected]>
date: Thu Jan 31 04:59:15 EST 2008

type abstraction header and header definition (still incomplete)

--- a/libcelt/Makefile.am
+++ b/libcelt/Makefile.am
@@ -2,7 +2,7 @@
 #AUTOMAKE_OPTIONS = no-dependencies
 
 
-pkginclude_HEADERS = celt.h
+pkginclude_HEADERS = celt.h celt_types.h celt_header.h
 #EXTRA_DIST=
 
 #INCLUDES = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_builddir) @OGG_CFLAGS@
@@ -20,8 +20,8 @@
 libcelt_la_LDFLAGS = -version-info @CELT_LT_CURRENT@:@CELT_LT_REVISION@:@CELT_LT_AGE@
 
 noinst_HEADERS = arch.h bands.h bitrdec.h bitree.h bitrenc.h cwrs.h \
-	ecintrin.h entcode.h entdec.h entenc.h fftwrap.h laplace.h \
-	mfrngcod.h mdct.h modes.h os_support.h pgain_table.h pitch.h psy.h \
+	ecintrin.h entcode.h entdec.h entenc.h fftwrap.h laplace.h mdct.h \
+	mfrngcod.h modes.h os_support.h pgain_table.h pitch.h psy.h \
 	quant_bands.h quant_pitch.h rate.h smallft.h vq.h
 
 noinst_PROGRAMS = testcelt
--- /dev/null
+++ b/libcelt/celt_header.h
@@ -1,0 +1,50 @@
+/* (C) 2008 Jean-Marc Valin, CSIRO
+*/
+/*
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+   
+   - Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+   
+   - Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+   
+   - Neither the name of the Xiph.org Foundation nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+   
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "celt.h"
+
+typedef struct {
+   char codec_id[8];
+   char codec_version[20];
+   int version_id;
+   int header_size;
+   int mode;
+   int sample_rate;
+   int nb_channels;
+   int bytes_per_packet;
+   int extra_headers;
+} CELTHeader;
+
+void celt_init_header(CELTHeader *header, int rate, int nb_channels, const struct CELTMode *m);
+
+int celt_header_to_packet(const CELTHeader *header, char *packet, int size);
+
+int celt_packet_to_header(const char *packet, int size, CELTHeader *header);
--- /dev/null
+++ b/libcelt/celt_types.h
@@ -1,0 +1,139 @@
+/* celt_types.h taken from libogg */
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
+ *                                                                  *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002             *
+ * by the Xiph.Org Foundation http://www.xiph.org/                  *
+ *                                                                  *
+ ********************************************************************
+
+ function: #ifdef jail to whip a few platforms into the UNIX ideal.
+ last mod: $Id: os_types.h 7524 2004-08-11 04:20:36Z conrad $
+
+ ********************************************************************/
+/**
+   @file celt_types.h
+   @brief CELT types
+*/
+#ifndef _CELT_TYPES_H
+#define _CELT_TYPES_H
+
+/* Taken from Paul Hsieh's stdint.h */
+#if (defined(__STDC__) && __STDC__ && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) )
+#include <stdint.h>
+
+   typedef int16_t celt_int16_t;
+   typedef uint16_t celt_uint16_t;
+   typedef int32_t celt_int32_t;
+   typedef uint32_t celt_uint32_t;
+
+#elif defined(_WIN32) 
+
+#  if defined(__CYGWIN__)
+#    include <_G_config.h>
+     typedef _G_int32_t celt_int32_t;
+     typedef _G_uint32_t celt_uint32_t;
+     typedef _G_int16_t celt_int16_t;
+     typedef _G_uint16_t celt_uint16_t;
+#  elif defined(__MINGW32__)
+     typedef short celt_int16_t;
+     typedef unsigned short celt_uint16_t;
+     typedef int celt_int32_t;
+     typedef unsigned int celt_uint32_t;
+#  elif defined(__MWERKS__)
+     typedef int celt_int32_t;
+     typedef unsigned int celt_uint32_t;
+     typedef short celt_int16_t;
+     typedef unsigned short celt_uint16_t;
+#  else
+     /* MSVC/Borland */
+     typedef __int32 celt_int32_t;
+     typedef unsigned __int32 celt_uint32_t;
+     typedef __int16 celt_int16_t;
+     typedef unsigned __int16 celt_uint16_t;
+#  endif
+
+#elif defined(__MACOS__)
+
+#  include <sys/types.h>
+   typedef SInt16 celt_int16_t;
+   typedef UInt16 celt_uint16_t;
+   typedef SInt32 celt_int32_t;
+   typedef UInt32 celt_uint32_t;
+
+#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
+
+#  include <sys/types.h>
+   typedef int16_t celt_int16_t;
+   typedef u_int16_t celt_uint16_t;
+   typedef int32_t celt_int32_t;
+   typedef u_int32_t celt_uint32_t;
+
+#elif defined(__BEOS__)
+
+   /* Be */
+#  include <inttypes.h>
+   typedef int16_t celt_int16_t;
+   typedef u_int16_t celt_uint16_t;
+   typedef int32_t celt_int32_t;
+   typedef u_int32_t celt_uint32_t;
+
+#elif defined (__EMX__)
+
+   /* OS/2 GCC */
+   typedef short celt_int16_t;
+   typedef unsigned short celt_uint16_t;
+   typedef int celt_int32_t;
+   typedef unsigned int celt_uint32_t;
+
+#elif defined (DJGPP)
+
+   /* DJGPP */
+   typedef short celt_int16_t;
+   typedef int celt_int32_t;
+   typedef unsigned int celt_uint32_t;
+
+#elif defined(R5900)
+
+   /* PS2 EE */
+   typedef int celt_int32_t;
+   typedef unsigned celt_uint32_t;
+   typedef short celt_int16_t;
+
+#elif defined(__SYMBIAN32__)
+
+   /* Symbian GCC */
+   typedef signed short celt_int16_t;
+   typedef unsigned short celt_uint16_t;
+   typedef signed int celt_int32_t;
+   typedef unsigned int celt_uint32_t;
+
+#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X)
+
+   typedef short celt_int16_t;
+   typedef unsigned short celt_uint16_t;
+   typedef long celt_int32_t;
+   typedef unsigned long celt_uint32_t;
+
+#elif defined(CONFIG_TI_C6X)
+
+   typedef short celt_int16_t;
+   typedef unsigned short celt_uint16_t;
+   typedef int celt_int32_t;
+   typedef unsigned int celt_uint32_t;
+
+#else
+
+   /* Give up, take a reasonable guess */
+   typedef short celt_int16_t;
+   typedef unsigned short celt_uint16_t;
+   typedef long celt_int32_t;
+   typedef unsigned long celt_uint32_t;
+
+#endif
+
+#endif  /* _CELT_TYPES_H */