ref: 17e5b805a52bf2ba8522853c538e105a842ac173
parent: 2fecbdf084f74394183d198e6283c94e731ed5a5
author: Jean-Marc Valin <[email protected]>
date: Fri Feb 1 04:02:05 EST 2008
clean up... oh and actually committed the header definition
--- a/libcelt/celt_header.h
+++ b/libcelt/celt_header.h
@@ -51,11 +51,11 @@
celt_int32_t extra_headers;
} CELTHeader;
-void celt_init_header(CELTHeader *header, celt_int32_t rate, celt_int32_t nb_channels, const struct CELTMode *m);
+void celt_header_init(CELTHeader *header, celt_int32_t rate, celt_int32_t nb_channels, const CELTMode *m);
-int celt_header_to_packet(const CELTHeader *header, char *packet, celt_uint32_t size);
+int celt_header_to_packet(const CELTHeader *header, unsigned char *packet, celt_uint32_t size);
-int celt_packet_to_header(const char *packet, celt_uint32_t size, CELTHeader *header);
+int celt_header_from_packet(const unsigned char *packet, celt_uint32_t size, CELTHeader *header);
#ifdef __cplusplus
}
--- /dev/null
+++ b/libcelt/header.c
@@ -1,0 +1,74 @@
+/* (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_header.h"
+#include "os_support.h"
+
+/*typedef struct {
+ char codec_id[8];
+ char codec_version[20];
+ celt_int32_t version_id;
+ celt_int32_t header_size;
+ celt_int32_t mode;
+ celt_int32_t sample_rate;
+ celt_int32_t nb_channels;
+ celt_int32_t bytes_per_packet;
+ celt_int32_t extra_headers;
+} CELTHeader;*/
+
+void celt_header_init(CELTHeader *header, celt_int32_t rate, celt_int32_t nb_channels, const CELTMode *m)
+{
+ CELT_COPY(header->codec_id, "CELT ", 8);
+ CELT_COPY(header->codec_version, "experimental ", 20);
+
+ header->version_id = 0x80000000;
+ header->header_size = 56;
+ header->mode = 0;
+ header->sample_rate = rate;
+ header->nb_channels = nb_channels;
+ header->bytes_per_packet = -1;
+ header->extra_headers = 0xdeadbeef;
+}
+
+int celt_header_to_packet(const CELTHeader *header, unsigned char *packet, celt_uint32_t size)
+{
+ CELT_MEMSET(packet, 0, sizeof(*header));
+ /* FIXME: Do it in a endian-safe, alignment-safe, overflow-safe manner */
+ CELT_COPY(packet, (char*)header, sizeof(*header));
+ return sizeof(*header);
+}
+
+int celt_header_from_packet(const unsigned char *packet, celt_uint32_t size, CELTHeader *header)
+{
+ CELT_COPY((char*)header, packet, sizeof(*header));
+ return sizeof(*header);
+}
+
--- a/tools/celtenc.c
+++ b/tools/celtenc.c
@@ -246,9 +246,8 @@
int quiet=0;
int nbBytes;
const CELTMode *mode=celt_mono;
- int modeID = -1;
void *st;
- char bits[MAX_FRAME_BYTES];
+ unsigned char bits[MAX_FRAME_BYTES];
int with_skeleton = 0;
struct option long_options[] =
{
@@ -282,7 +281,6 @@
int bytes_written=0, ret, result;
int id=-1;
CELTHeader header;
- celt_int32_t complexity=3;
char vendor_string[64];
char *comments;
int comments_length;
@@ -289,10 +287,8 @@
int close_in=0, close_out=0;
int eos=0;
celt_int32_t bitrate=0;
- double cumul_bits=0, enc_frames=0;
char first_bytes[12];
int wave_input=0;
- celt_int32_t tmp;
celt_int32_t lookahead = 0;
int bytes_per_packet=48;
@@ -439,7 +435,7 @@
}
celt_mode_info(mode, CELT_GET_FRAME_SIZE, &frame_size);
- celt_init_header(&header, rate, 1, mode);
+ celt_header_init(&header, rate, 1, mode);
header.nb_channels = chan;
{
@@ -490,11 +486,11 @@
/*Write header*/
{
- char header_data[100];
+ unsigned char header_data[100];
int packet_size = celt_header_to_packet(&header, header_data, 100);
op.packet = header_data;
op.bytes = packet_size;
- fprintf(stderr, "header size is %d\n", op.bytes);
+ fprintf(stderr, "header size is %d\n", (int)op.bytes);
op.b_o_s = 1;
op.e_o_s = 0;
op.granulepos = 0;