Mercurial > libavcodec.hg
comparison utils.c @ 92:1d3eb6cdc6b5 libavcodec
added pcm codecs
author | glantau |
---|---|
date | Sun, 23 Sep 2001 17:16:51 +0000 |
parents | db55e2d3b380 |
children | 7e263a256a6f |
comparison
equal
deleted
inserted
replaced
91:db55e2d3b380 | 92:1d3eb6cdc6b5 |
---|---|
203 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) | 203 void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) |
204 { | 204 { |
205 const char *codec_name; | 205 const char *codec_name; |
206 AVCodec *p; | 206 AVCodec *p; |
207 char buf1[32]; | 207 char buf1[32]; |
208 int bitrate; | |
208 | 209 |
209 if (encode) | 210 if (encode) |
210 p = avcodec_find_encoder(enc->codec_id); | 211 p = avcodec_find_encoder(enc->codec_id); |
211 else | 212 else |
212 p = avcodec_find_decoder(enc->codec_id); | 213 p = avcodec_find_decoder(enc->codec_id); |
243 snprintf(buf + strlen(buf), buf_size - strlen(buf), | 244 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
244 ", %dx%d, %0.2f fps", | 245 ", %dx%d, %0.2f fps", |
245 enc->width, enc->height, | 246 enc->width, enc->height, |
246 (float)enc->frame_rate / FRAME_RATE_BASE); | 247 (float)enc->frame_rate / FRAME_RATE_BASE); |
247 } | 248 } |
249 bitrate = enc->bit_rate; | |
248 break; | 250 break; |
249 case CODEC_TYPE_AUDIO: | 251 case CODEC_TYPE_AUDIO: |
250 snprintf(buf, buf_size, | 252 snprintf(buf, buf_size, |
251 "Audio: %s", | 253 "Audio: %s", |
252 codec_name); | 254 codec_name); |
254 snprintf(buf + strlen(buf), buf_size - strlen(buf), | 256 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
255 ", %d Hz, %s", | 257 ", %d Hz, %s", |
256 enc->sample_rate, | 258 enc->sample_rate, |
257 enc->channels == 2 ? "stereo" : "mono"); | 259 enc->channels == 2 ? "stereo" : "mono"); |
258 } | 260 } |
261 /* for PCM codecs, compute bitrate directly */ | |
262 switch(enc->codec_id) { | |
263 case CODEC_ID_PCM_S16LE: | |
264 case CODEC_ID_PCM_S16BE: | |
265 case CODEC_ID_PCM_U16LE: | |
266 case CODEC_ID_PCM_U16BE: | |
267 bitrate = enc->sample_rate * 16; | |
268 break; | |
269 case CODEC_ID_PCM_S8: | |
270 case CODEC_ID_PCM_U8: | |
271 case CODEC_ID_PCM_ALAW: | |
272 case CODEC_ID_PCM_MULAW: | |
273 bitrate = enc->sample_rate * 8; | |
274 break; | |
275 default: | |
276 bitrate = enc->bit_rate; | |
277 break; | |
278 } | |
259 break; | 279 break; |
260 default: | 280 default: |
261 abort(); | 281 abort(); |
262 } | 282 } |
263 if (enc->bit_rate != 0) { | 283 if (bitrate != 0) { |
264 snprintf(buf + strlen(buf), buf_size - strlen(buf), | 284 snprintf(buf + strlen(buf), buf_size - strlen(buf), |
265 ", %d kb/s", enc->bit_rate / 1000); | 285 ", %d kb/s", bitrate / 1000); |
266 } | 286 } |
267 } | 287 } |
268 | 288 |
269 /* Picture field are filled with 'ptr' addresses */ | 289 /* Picture field are filled with 'ptr' addresses */ |
270 void avpicture_fill(AVPicture *picture, UINT8 *ptr, | 290 void avpicture_fill(AVPicture *picture, UINT8 *ptr, |
368 register_avcodec(&rv10_encoder); | 388 register_avcodec(&rv10_encoder); |
369 register_avcodec(&mjpeg_encoder); | 389 register_avcodec(&mjpeg_encoder); |
370 register_avcodec(&mpeg4_encoder); | 390 register_avcodec(&mpeg4_encoder); |
371 register_avcodec(&msmpeg4_encoder); | 391 register_avcodec(&msmpeg4_encoder); |
372 #endif /* CONFIG_ENCODERS */ | 392 #endif /* CONFIG_ENCODERS */ |
373 register_avcodec(&pcm_codec); | |
374 register_avcodec(&rawvideo_codec); | 393 register_avcodec(&rawvideo_codec); |
375 | 394 |
376 /* decoders */ | 395 /* decoders */ |
377 #ifdef CONFIG_DECODERS | 396 #ifdef CONFIG_DECODERS |
378 register_avcodec(&h263_decoder); | 397 register_avcodec(&h263_decoder); |
380 register_avcodec(&msmpeg4_decoder); | 399 register_avcodec(&msmpeg4_decoder); |
381 register_avcodec(&mpeg_decoder); | 400 register_avcodec(&mpeg_decoder); |
382 register_avcodec(&h263i_decoder); | 401 register_avcodec(&h263i_decoder); |
383 register_avcodec(&rv10_decoder); | 402 register_avcodec(&rv10_decoder); |
384 register_avcodec(&mjpeg_decoder); | 403 register_avcodec(&mjpeg_decoder); |
385 //#ifdef CONFIG_MPGLIB | |
386 register_avcodec(&mp3_decoder); | 404 register_avcodec(&mp3_decoder); |
387 //#endif | |
388 #ifdef CONFIG_AC3 | 405 #ifdef CONFIG_AC3 |
389 register_avcodec(&ac3_decoder); | 406 register_avcodec(&ac3_decoder); |
390 #endif | 407 #endif |
391 #endif /* CONFIG_DECODERS */ | 408 #endif /* CONFIG_DECODERS */ |
409 | |
410 /* pcm codecs */ | |
411 | |
412 #define PCM_CODEC(id, name) \ | |
413 register_avcodec(& name ## _encoder); \ | |
414 register_avcodec(& name ## _decoder); \ | |
415 | |
416 PCM_CODEC(CODEC_ID_PCM_S16LE, pcm_s16le); | |
417 PCM_CODEC(CODEC_ID_PCM_S16BE, pcm_s16be); | |
418 PCM_CODEC(CODEC_ID_PCM_U16LE, pcm_u16le); | |
419 PCM_CODEC(CODEC_ID_PCM_U16BE, pcm_u16be); | |
420 PCM_CODEC(CODEC_ID_PCM_S8, pcm_s8); | |
421 PCM_CODEC(CODEC_ID_PCM_U8, pcm_u8); | |
422 PCM_CODEC(CODEC_ID_PCM_ALAW, pcm_alaw); | |
423 PCM_CODEC(CODEC_ID_PCM_MULAW, pcm_mulaw); | |
424 | |
425 #undef PCM_CODEC | |
392 } | 426 } |
393 | 427 |
394 static int encode_init(AVCodecContext *s) | 428 static int encode_init(AVCodecContext *s) |
395 { | 429 { |
396 return 0; | 430 return 0; |
406 static int encode_frame(AVCodecContext *avctx, | 440 static int encode_frame(AVCodecContext *avctx, |
407 unsigned char *frame, int buf_size, void *data) | 441 unsigned char *frame, int buf_size, void *data) |
408 { | 442 { |
409 return -1; | 443 return -1; |
410 } | 444 } |
411 | |
412 /* dummy pcm codec */ | |
413 AVCodec pcm_codec = { | |
414 "pcm", | |
415 CODEC_TYPE_AUDIO, | |
416 CODEC_ID_PCM, | |
417 0, | |
418 encode_init, | |
419 encode_frame, | |
420 NULL, | |
421 decode_frame, | |
422 }; | |
423 | 445 |
424 AVCodec rawvideo_codec = { | 446 AVCodec rawvideo_codec = { |
425 "rawvideo", | 447 "rawvideo", |
426 CODEC_TYPE_VIDEO, | 448 CODEC_TYPE_VIDEO, |
427 CODEC_ID_RAWVIDEO, | 449 CODEC_ID_RAWVIDEO, |