source: roaraudio/roard/codecfilter_wave.c @ 562:1f94749e6f9d

Last change on this file since 562:1f94749e6f9d was 562:1f94749e6f9d, checked in by phi, 16 years ago

first small changes to make it compile ;)

File size: 1.8 KB
Line 
1//codecfilter_wave.c:
2
3#include "roard.h"
4
5int cf_wave_open(CODECFILTER_USERDATA_T * inst, int codec,
6                                            struct roar_stream_server * info,
7                                            struct roar_codecfilter   * filter) {
8 struct codecfilter_wave_inst * self = malloc(sizeof(struct codecfilter_wave_inst));
9 struct roar_stream * s = (struct roar_stream *) info;
10
11 if ( !self )
12  return -1;
13
14 self->stream               = info;
15 self->opened               = 0;
16
17/*
18 if ( s->dir == ROAR_DIR_PLAY ) {
19   self->decoder = celt_decoder_create(self->mode);
20 } else if ( s->dir == ROAR_DIR_MONITOR ) {
21   self->encoder = celt_encoder_create(self->mode);
22 } else {
23  celt_mode_destroy(self->mode);
24  free(self);
25  return -1;
26 }
27*/
28
29 *inst = (CODECFILTER_USERDATA_T) self;
30
31 memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info));
32 return 0;
33}
34
35int cf_wave_close(CODECFILTER_USERDATA_T   inst) {
36// struct codecfilter_wave_inst * self = (struct codecfilter_wave_inst *) inst;
37
38 if ( !inst )
39  return -1;
40
41 free(inst);
42 return 0;
43}
44
45int cf_wave_read(CODECFILTER_USERDATA_T   inst, char * buf, int len) {
46 struct codecfilter_wave_inst * self = (struct codecfilter_wave_inst *) inst;
47 int fh = ((struct roar_stream *)self->stream)->fh;
48 int r = -1;
49 char tbuf[44];
50 struct roar_stream * s = ROAR_STREAM(self->stream);
51
52 if ( self->opened ) {
53  return read(fh, buf, len);
54 } else {
55  if (read(fh, tbuf, 44) != 44) {
56   close(fh);
57   return -1;
58  }
59
60  memcpy(&(s->info.rate    ), tbuf+24, 4);
61  memcpy(&(s->info.channels), tbuf+22, 2);
62  memcpy(&(s->info.bits    ), tbuf+34, 2);
63
64  errno = EAGAIN;
65  return -1;
66 }
67
68 return r;
69}
70
71int cf_wave_write(CODECFILTER_USERDATA_T   inst, char * buf, int len) {
72 struct codecfilter_wave_inst * self = (struct codecfilter_wave_inst *) inst;
73
74 return 0;
75}
76
77//ll
Note: See TracBrowser for help on using the repository browser.