source: roaraudio/roard/codecfilter_wave.c @ 565:f4d86cf146d5

Last change on this file since 565:f4d86cf146d5 was 565:f4d86cf146d5, checked in by phi, 16 years ago

cleanup and comment

File size: 1.6 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 *inst = (CODECFILTER_USERDATA_T) self;
18
19 memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info));
20 return 0;
21}
22
23int cf_wave_close(CODECFILTER_USERDATA_T   inst) {
24// struct codecfilter_wave_inst * self = (struct codecfilter_wave_inst *) inst;
25
26 if ( !inst )
27  return -1;
28
29 free(inst);
30 return 0;
31}
32
33int cf_wave_read(CODECFILTER_USERDATA_T   inst, char * buf, int len) {
34 struct codecfilter_wave_inst * self = (struct codecfilter_wave_inst *) inst;
35 int fh = ((struct roar_stream *)self->stream)->fh;
36 int r = -1;
37 char tbuf[44];
38 struct roar_stream * s = ROAR_STREAM(self->stream);
39
40 if ( self->opened ) {
41  return read(fh, buf, len);
42 } else {
43  if (read(fh, tbuf, 44) != 44) {
44   close(fh);
45   return -1;
46  }
47
48  // TODO: write better code here!
49
50  memcpy(&(s->info.rate    ), tbuf+24, 4);
51  memcpy(&(s->info.channels), tbuf+22, 2);
52  memcpy(&(s->info.bits    ), tbuf+34, 2);
53
54  self->opened = 1;
55
56  errno = EAGAIN;
57  return -1;
58 }
59
60 return r;
61}
62
63int cf_wave_write(CODECFILTER_USERDATA_T   inst, char * buf, int len) {
64 struct codecfilter_wave_inst * self = (struct codecfilter_wave_inst *) inst;
65
66 return 0;
67}
68
69//ll
Note: See TracBrowser for help on using the repository browser.