celt_free(st);
}
-static void haar1(float *X, int N, int stride)
-{
- int i, k;
- for (k=0;k<stride;k++)
- {
- for (i=k;i<N*stride;i+=2*stride)
- {
- float a, b;
- a = X[i];
- b = X[i+stride];
- X[i] = .707107f*(a+b);
- X[i+stride] = .707107f*(a-b);
- }
- }
-}
-
-static void time_dct(float *X, int N, int B, int stride)
-{
- switch (B)
- {
- case 1:
- break;
- case 2:
- haar1(X, B*N, stride);
- break;
- default:
- celt_warning("time_dct not defined for B > 2");
- };
-}
-
-static void time_idct(float *X, int N, int B, int stride)
-{
- switch (B)
- {
- case 1:
- break;
- case 2:
- haar1(X, B*N, stride);
- break;
- default:
- celt_warning("time_dct not defined for B > 2");
- };
-}
static void compute_mdcts(mdct_lookup *mdct_lookup, float *window, float *in, float *out, int N, int B, int C)
{
}
}
-int celt_encode(CELTEncoder *st, short *pcm, unsigned char *compressed, int nbCompressedBytes)
+int celt_encode(CELTEncoder *st, celt_int16_t *pcm, unsigned char *compressed, int nbCompressedBytes)
{
int i, c, N, B, C, N4;
N = st->block_size;
//for (i=30;i<N*B;i++)
// X[i*C+1] = P[i*C+1] = 0;
/* Get a tiny bit more frequency resolution and prevent unstable energy when quantising */
- time_dct(X, N, B, C);
- time_dct(P, N, B, C);
-
/* Pitch prediction */
compute_pitch_gain(st->mode, X, P, gains, bandE);
/* Residual quantisation */
quant_bands(st->mode, X, P, mask, &st->alloc, nbCompressedBytes*8, &st->enc);
- time_idct(X, N, B, C);
if (C==2)
- //haar1(X, B*N*C, 1);
stereo_mix(st->mode, X, bandE, -1);
renormalise_bands(st->mode, X);
}
}
-int celt_decode(CELTDecoder *st, char *data, int len, short *pcm)
+int celt_decode(CELTDecoder *st, char *data, int len, celt_int16_t *pcm)
{
int i, c, N, B, C;
N = st->block_size;
}
if (C==2)
- //haar1(P, B*N*C, 1);
stereo_mix(st->mode, P, bandE, 1);
- time_dct(P, N, B, C);
/* Get the pitch gains */
unquant_pitch(gains, st->mode->nbPBands, &dec);
/* Decode fixed codebook and merge with pitch */
unquant_bands(st->mode, X, P, &st->alloc, len*8, &dec);
- time_idct(X, N, B, C);
if (C==2)
- //haar1(X, B*N*C, 1);
stereo_mix(st->mode, X, bandE, -1);
renormalise_bands(st->mode, X);
#ifndef CELT_H
#define CELT_H
+#include "celt_types.h"
+
#ifdef __cplusplus
extern "C" {
#endif
void celt_encoder_destroy(CELTEncoder *st);
-int celt_encode(CELTEncoder *st, short *pcm, unsigned char *compressed, int nbCompressedBytes);
+int celt_encode(CELTEncoder *st, celt_int16_t *pcm, unsigned char *compressed, int nbCompressedBytes);
/* Decoder stuff */
void celt_decoder_destroy(CELTDecoder *st);
-int celt_decode(CELTDecoder *st, char *data, int len, short *pcm);
+int celt_decode(CELTDecoder *st, char *data, int len, celt_int16_t *pcm);
#ifdef __cplusplus
}
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#ifndef CELT_HEADER_H
+#define CELT_HEADER_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#include "celt.h"
+#include "celt_types.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;
+ 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_init_header(CELTHeader *header, int rate, int nb_channels, const struct CELTMode *m);
+void celt_init_header(CELTHeader *header, celt_int32_t rate, celt_int32_t nb_channels, const struct CELTMode *m);
+
+int celt_header_to_packet(const CELTHeader *header, char *packet, celt_uint32_t size);
+
+int celt_packet_to_header(const char *packet, celt_uint32_t size, CELTHeader *header);
-int celt_header_to_packet(const CELTHeader *header, char *packet, int size);
+#ifdef __cplusplus
+}
+#endif
-int celt_packet_to_header(const char *packet, int size, CELTHeader *header);
+#endif /* CELT_HEADER_H */