Changeset 2590:3b00e11c57b1 in roaraudio


Ignore:
Timestamp:
09/10/09 00:12:32 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

better RIFF/WAVE support

Location:
roard
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • roard/codecfilter_wave.c

    r2505 r2590  
    6060 char tbuf[44]; 
    6161 struct roar_stream * s = ROAR_STREAM(self->stream); 
     62 uint16_t tmp16; 
     63 uint32_t tmp32; 
     64 int codec = -1; 
    6265 
    6366 if ( self->opened ) { 
     
    7073  // TODO: write better code here! 
    7174 
    72   memcpy(&(s->info.rate    ), tbuf+24, 4); 
    73   memcpy(&(s->info.channels), tbuf+22, 2); 
    74   memcpy(&(s->info.bits    ), tbuf+34, 2); 
     75  memcpy(&tmp32, tbuf+24, 4); 
     76  s->info.rate = ROAR_LE2HOST32(tmp32); 
     77 
     78  memcpy(&tmp16, tbuf+22, 2); 
     79  s->info.channels = ROAR_LE2HOST16(tmp16); 
     80 
     81  memcpy(&tmp16, tbuf+34, 2); 
     82  s->info.bits = ROAR_LE2HOST16(tmp16); 
     83 
     84  memcpy(&tmp16, tbuf+20, 2); 
     85 
     86  switch (ROAR_LE2HOST16(tmp16)) { 
     87   case ROAR_RIFF_WAVE_CID_PCM: 
     88     if ( s->info.bits == 8 ) { 
     89      codec = ROAR_CODEC_PCM_U_LE; 
     90     } else { 
     91      codec = ROAR_CODEC_PCM_S_LE; 
     92     } 
     93    break; 
     94   case ROAR_RIFF_WAVE_CID_ALAW: 
     95     codec = ROAR_CODEC_ALAW; 
     96    break; 
     97   case ROAR_RIFF_WAVE_CID_MULAW: 
     98     codec = ROAR_CODEC_MULAW; 
     99    break; 
     100   case ROAR_RIFF_WAVE_CID_IEEE_FLOAT: 
     101   default: 
     102     return -1; 
     103  } 
     104 
     105  s->info.codec = codec; 
    75106 
    76107  self->opened = 1; 
  • roard/include/codecfilter_wave.h

    r2505 r2590  
    3030#ifndef ROAR_WITHOUT_CF_WAVE 
    3131 
     32// most important codec IDs: 
     33#define ROAR_RIFF_WAVE_CID_PCM        0x0001 
     34#define ROAR_RIFF_WAVE_CID_IEEE_FLOAT 0x0003 
     35#define ROAR_RIFF_WAVE_CID_ALAW       0x0006 
     36#define ROAR_RIFF_WAVE_CID_MULAW      0x0007 
     37 
    3238struct codecfilter_wave_inst { 
    3339 struct roar_stream_server * stream; 
Note: See TracChangeset for help on using the changeset viewer.