Mercurial > libavcodec.hg
comparison pcm.c @ 7477:2f6a2fd238fb libavcodec
Simplify PCM codec; replace switch() statements with av_get_bits_per_sample().
| author | pross |
|---|---|
| date | Mon, 04 Aug 2008 07:49:50 +0000 |
| parents | 2321e0384521 |
| children | d4e19b465fcb |
comparison
equal
deleted
inserted
replaced
| 7476:2321e0384521 | 7477:2f6a2fd238fb |
|---|---|
| 119 break; | 119 break; |
| 120 default: | 120 default: |
| 121 break; | 121 break; |
| 122 } | 122 } |
| 123 | 123 |
| 124 switch(avctx->codec->id) { | 124 avctx->block_align = avctx->channels * av_get_bits_per_sample(avctx->codec->id)/8; |
| 125 case CODEC_ID_PCM_S32LE: | |
| 126 case CODEC_ID_PCM_S32BE: | |
| 127 case CODEC_ID_PCM_U32LE: | |
| 128 case CODEC_ID_PCM_U32BE: | |
| 129 case CODEC_ID_PCM_F32BE: | |
| 130 avctx->block_align = 4 * avctx->channels; | |
| 131 break; | |
| 132 case CODEC_ID_PCM_S24LE: | |
| 133 case CODEC_ID_PCM_S24BE: | |
| 134 case CODEC_ID_PCM_U24LE: | |
| 135 case CODEC_ID_PCM_U24BE: | |
| 136 case CODEC_ID_PCM_S24DAUD: | |
| 137 avctx->block_align = 3 * avctx->channels; | |
| 138 break; | |
| 139 case CODEC_ID_PCM_S16LE: | |
| 140 case CODEC_ID_PCM_S16BE: | |
| 141 case CODEC_ID_PCM_U16LE: | |
| 142 case CODEC_ID_PCM_U16BE: | |
| 143 avctx->block_align = 2 * avctx->channels; | |
| 144 break; | |
| 145 case CODEC_ID_PCM_S8: | |
| 146 case CODEC_ID_PCM_U8: | |
| 147 case CODEC_ID_PCM_MULAW: | |
| 148 case CODEC_ID_PCM_ALAW: | |
| 149 avctx->block_align = avctx->channels; | |
| 150 break; | |
| 151 default: | |
| 152 break; | |
| 153 } | |
| 154 | |
| 155 avctx->coded_frame= avcodec_alloc_frame(); | 125 avctx->coded_frame= avcodec_alloc_frame(); |
| 156 avctx->coded_frame->key_frame= 1; | 126 avctx->coded_frame->key_frame= 1; |
| 157 | 127 |
| 158 return 0; | 128 return 0; |
| 159 } | 129 } |
| 195 { | 165 { |
| 196 int n, sample_size, v; | 166 int n, sample_size, v; |
| 197 short *samples; | 167 short *samples; |
| 198 unsigned char *dst; | 168 unsigned char *dst; |
| 199 | 169 |
| 200 switch(avctx->codec->id) { | 170 sample_size = av_get_bits_per_sample(avctx->codec->id)/8; |
| 201 case CODEC_ID_PCM_S32LE: | |
| 202 case CODEC_ID_PCM_S32BE: | |
| 203 case CODEC_ID_PCM_U32LE: | |
| 204 case CODEC_ID_PCM_U32BE: | |
| 205 case CODEC_ID_PCM_F32BE: | |
| 206 sample_size = 4; | |
| 207 break; | |
| 208 case CODEC_ID_PCM_S24LE: | |
| 209 case CODEC_ID_PCM_S24BE: | |
| 210 case CODEC_ID_PCM_U24LE: | |
| 211 case CODEC_ID_PCM_U24BE: | |
| 212 case CODEC_ID_PCM_S24DAUD: | |
| 213 sample_size = 3; | |
| 214 break; | |
| 215 case CODEC_ID_PCM_S16LE: | |
| 216 case CODEC_ID_PCM_S16BE: | |
| 217 case CODEC_ID_PCM_U16LE: | |
| 218 case CODEC_ID_PCM_U16BE: | |
| 219 sample_size = 2; | |
| 220 break; | |
| 221 default: | |
| 222 sample_size = 1; | |
| 223 break; | |
| 224 } | |
| 225 n = buf_size / sample_size; | 171 n = buf_size / sample_size; |
| 226 samples = data; | 172 samples = data; |
| 227 dst = frame; | 173 dst = frame; |
| 228 | 174 |
| 229 switch(avctx->codec->id) { | 175 switch(avctx->codec->id) { |
