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