source: roaraudio/roard/codecfilter_celt.c @ 325:238cef78b66d

Last change on this file since 325:238cef78b66d was 325:238cef78b66d, checked in by phi, 16 years ago

done some basic stuff for CELT

File size: 2.0 KB
Line 
1//codecfilter_celt.c:
2
3#include "roard.h"
4
5int cf_celt_open(CODECFILTER_USERDATA_T * inst, int codec,
6                                            struct roar_stream_server * info,
7                                            struct roar_codecfilter   * filter) {
8 struct codecfilter_celt_inst * self = malloc(sizeof(struct codecfilter_celt_inst));
9 struct roar_stream * s = (struct roar_stream *) info;
10
11 if ( !self )
12  return -1;
13
14/*
15 CELTMode * mode;
16 CELTEncoder * encoder;
17 CELTDecoder * decoder;
18 int frame_size;
19 int lookahead;
20 int out_size;
21 char * ibuf;
22 char * obuf;
23 char * rest;
24 int s_buf;
25 int f_rest; /-* how much is in rest? *-/
26*/
27
28 self->stream               = info;
29 self->frame_size           = 256;
30 self->lookahead            = self->frame_size;
31 self->mode                 = celt_mode_create(s->info.rate, s->info.channels, self->frame_size, self->lookahead, NULL);
32 self->encoder              = NULL;
33 self->decoder              = NULL;
34
35 if ( !self->mode ) {
36  free(self);
37  return -1;
38 }
39
40 if ( s->dir == ROAR_DIR_PLAY ) {
41   self->decoder = celt_decoder_create(self->mode);
42 } else if ( s->dir == ROAR_DIR_MONITOR ) {
43   self->encoder = celt_encoder_create(self->mode);
44 } else {
45  celt_mode_destroy(self->mode);
46  free(self);
47  return -1;
48 }
49
50 *inst = (CODECFILTER_USERDATA_T) self;
51
52 ((struct roar_stream*)info)->info.codec = ROAR_CODEC_DEFAULT;
53
54 return 0;
55}
56
57int cf_celt_close(CODECFILTER_USERDATA_T   inst) {
58 struct codecfilter_celt_inst * self = (struct codecfilter_celt_inst *) inst;
59
60 if ( !inst )
61  return -1;
62
63 if ( self->encoder )
64 celt_encoder_destroy(self->encoder);
65
66 if ( self->decoder )
67 celt_decoder_destroy(self->decoder);
68
69 if ( self->mode )
70  celt_mode_destroy(self->mode);
71
72 free(inst);
73 return 0;
74}
75
76int cf_celt_read(CODECFILTER_USERDATA_T   inst, char * buf, int len) {
77 struct codecfilter_celt_inst * self = (struct codecfilter_celt_inst *) inst;
78
79 return 0;
80}
81
82int cf_celt_write(CODECFILTER_USERDATA_T   inst, char * buf, int len) {
83 struct codecfilter_celt_inst * self = (struct codecfilter_celt_inst *) inst;
84
85 return 0;
86}
87
88//ll
Note: See TracBrowser for help on using the repository browser.