Changeset 1012:e0923fe24fa9 in roaraudio for roard/codecfilter_wave.c
- Timestamp:
- 12/20/08 22:48:23 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/codecfilter_wave.c
r668 r1012 83 83 int cf_wave_write(CODECFILTER_USERDATA_T inst, char * buf, int len) { 84 84 struct codecfilter_wave_inst * self = (struct codecfilter_wave_inst *) inst; 85 struct roar_stream * s = ROAR_STREAM(self->stream); 86 char header[44]; 87 int32_t tmp32; 88 int16_t tmp16; 89 int16_t bits; 90 int16_t codec; 85 91 86 return 0; 92 ROAR_WARN("cf_wave_write(inst=%p, buf=%p, len=%i) = ?", inst, buf, len); 93 ROAR_WARN("cf_wave_write(inst=%p, buf=%p, len=%i): self->opened=%i", inst, buf, len, self->opened); 94 95 if ( self->opened ) { 96 return stream_vio_s_write(self->stream, buf, len); 97 } else { 98 99 if ( s->fh == -1 ) { 100 errno = EAGAIN; 101 return -1; 102 } 103 104 memcpy(header , "RIFF\367\377\377\177WAVEfmt \020", 17); 105 memcpy(header+36, "data\313\377\377\177", 8); 106 107 switch (s->info.codec) { 108 case ROAR_CODEC_PCM_S_LE: 109 codec = 0x0001; 110 break; 111 default: 112 ROAR_ERR("cf_wave_write(*) Codec not supported!"); 113 return -1; 114 break; 115 } 116 117 ROAR_WARN("cf_wave_write(*) Codec supported!"); 118 119 bits = s->info.bits; 120 memcpy(header+24, &(s->info.rate ), 4); 121 memcpy(header+22, &(s->info.channels), 2); 122 memcpy(header+34, &bits, 2); 123 124 tmp16 = s->info.channels * bits / 8; 125 memcpy(header+32, &tmp16, 2); 126 tmp32 = tmp16 * s->info.rate; 127 memcpy(header+28, &tmp32, 4); 128 memcpy(header+20, &codec, 2); 129 130 if ( stream_vio_s_write(self->stream, header, 44) != 44 ) 131 return -1; 132 133 self->opened = 1; 134 135 errno = EAGAIN; 136 // return -1; 137 138 len = stream_vio_s_write(self->stream, buf, len); 139 140 cf_wave_close(inst); 141 ROAR_STREAM_SERVER(s)->codecfilter = -1; 142 143 return len; 144 145 // return stream_vio_s_write(self->stream, buf, len); 146 } 147 148 return -1; 87 149 } 88 150
Note: See TracChangeset
for help on using the changeset viewer.