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) {