Changeset 942:7e85e08c6501 in roaraudio for roard/driver_oss.c
- Timestamp:
- 12/07/08 22:13:45 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/driver_oss.c
r935 r942 30 30 int driver_oss_open(struct roar_vio_calls * inst, char * device, struct roar_audio_info * info, int fh) { 31 31 int tmp; 32 int ctmp; 33 char * es; 32 34 33 35 #ifdef ROAR_DEFAULT_OSS_DEV … … 62 64 } 63 65 64 switch (info->bits) { 65 case 8: tmp = AFMT_S8; break; 66 case 16: 67 switch (info->codec) { 68 case ROAR_CODEC_PCM_S_LE: tmp = AFMT_S16_LE; break; 69 case ROAR_CODEC_PCM_S_BE: tmp = AFMT_S16_BE; break; 70 default : er(); 66 switch (info->codec) { 67 case ROAR_CODEC_PCM_S_LE: 68 switch (info->bits) { 69 case 8: tmp = AFMT_S8; break; 70 case 16: tmp = AFMT_S16_LE; break; 71 // case 24: tmp = AFMT_S24_PACKED; break; 72 #ifdef AFMT_S32_LE 73 case 32: tmp = AFMT_S32_LE; break; 74 #endif 75 default: er(); 71 76 } 72 77 break; 73 default: er(); 78 case ROAR_CODEC_PCM_S_BE: 79 switch (info->bits) { 80 case 8: tmp = AFMT_S8; break; 81 case 16: tmp = AFMT_S16_BE; break; 82 // case 24: tmp = AFMT_S24_PACKED; break; 83 #ifdef AFMT_S32_BE 84 case 32: tmp = AFMT_S32_BE; break; 85 #endif 86 default: er(); 87 } 88 break; 89 case ROAR_CODEC_PCM_U_LE: 90 switch (info->bits) { 91 case 8: tmp = AFMT_U8; break; 92 case 16: tmp = AFMT_U16_LE; break; 93 default: er(); 94 } 95 break; 96 case ROAR_CODEC_PCM_U_BE: 97 switch (info->bits) { 98 case 8: tmp = AFMT_U8; break; 99 case 16: tmp = AFMT_U16_BE; break; 100 default: er(); 101 } 102 case ROAR_CODEC_ALAW: 103 tmp = AFMT_A_LAW; 104 break; 105 case ROAR_CODEC_MULAW: 106 tmp = AFMT_MU_LAW; 107 break; 108 #ifdef AFMT_VORBIS 109 case ROAR_CODEC_OGG_VORBIS: 110 tmp = AFMT_VORBIS; 111 break; 112 #endif 113 default: 114 er(); 115 break; 74 116 } 75 117 118 ctmp = tmp; 76 119 if ( ioctl(fh, SNDCTL_DSP_SAMPLESIZE, &tmp) == -1 ) { 120 ROAR_ERR("driver_oss_open(*): can not set sample format"); 121 er(); 122 } 123 124 if ( tmp != ctmp ) { 125 es = NULL; 126 switch (tmp) { 127 case AFMT_S8 : es = "bits=8,codec=pcm"; break; 128 case AFMT_U8 : es = "bits=8,codec=pcm_u_le"; break; 129 case AFMT_S16_LE: es = "bits=16,codec=pcm_s_le"; break; 130 case AFMT_S16_BE: es = "bits=16,codec=pcm_s_be"; break; 131 case AFMT_U16_LE: es = "bits=16,codec=pcm_u_le"; break; 132 case AFMT_U16_BE: es = "bits=16,codec=pcm_u_be"; break; 133 #ifdef AFMT_S32_LE 134 case AFMT_S32_LE: es = "bits=32,codec=pcm_s_le"; break; 135 #endif 136 #ifdef AFMT_S32_BE 137 case AFMT_S32_BE: es = "bits=32,codec=pcm_s_be"; break; 138 #endif 139 case AFMT_A_LAW : es = "codec=alaw"; break; 140 case AFMT_MU_LAW: es = "codec=mulaw"; break; 141 #ifdef AFMT_VORBIS 142 case AFMT_VORBIS: es = "codec=ogg_vorbis"; break; 143 #endif 144 } 145 146 if ( es != NULL ) { 147 ROAR_ERR("driver_oss_open(*): can not set requested codec, OSS retruned another codec then requested, to use this restart with -oO %s or set codec manuelly via -oO codec=somecodec", es); 148 } else { 149 ROAR_ERR("driver_oss_open(*): can not set requested codec, set codec manuelly via -oO codec=somecodec"); 150 } 77 151 er(); 78 152 } … … 81 155 82 156 if ( ioctl(fh, SNDCTL_DSP_SPEED, &tmp) == -1 ) { 157 ROAR_ERR("driver_oss_open(*): can not set sample rate"); 83 158 er(); 84 159 } 85 160 86 161 if ( tmp < info->rate * 0.98 || tmp > info->rate * 1.02 ) { 162 ROAR_ERR("driver_oss_open(*): sample rate out of acceptable accuracy"); 87 163 er(); 88 164 }
Note: See TracChangeset
for help on using the changeset viewer.