summaryrefslogtreecommitdiff
path: root/libavcodec/utils.c
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2012-01-19 18:36:40 -0500
committerJustin Ruggles <justin.ruggles@gmail.com>2012-03-05 13:08:15 -0500
commit6699d07480f58bc20068b2d90fcd6ca8e3aa46b8 (patch)
treed31c35afadc3b04f3f81518ac54211de28f1d5aa /libavcodec/utils.c
parent27c7ca9c12bb42d5c44d46f24cd970469d0ef55a (diff)
avcodec: add av_get_exact_bits_per_sample() function
This only returns bits per sample when it is exactly correct. That is, the codec contains only raw samples with no frame headers or padding. This applies to basically all PCM codecs and a small subset of ADPCM codecs.
Diffstat (limited to 'libavcodec/utils.c')
-rw-r--r--libavcodec/utils.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index d4384108df..458b1f358b 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -1681,21 +1681,15 @@ void avcodec_default_free_buffers(AVCodecContext *avctx)
}
}
-int av_get_bits_per_sample(enum CodecID codec_id){
+int av_get_exact_bits_per_sample(enum CodecID codec_id)
+{
switch(codec_id){
- case CODEC_ID_ADPCM_SBPRO_2:
- return 2;
- case CODEC_ID_ADPCM_SBPRO_3:
- return 3;
- case CODEC_ID_ADPCM_SBPRO_4:
case CODEC_ID_ADPCM_CT:
case CODEC_ID_ADPCM_IMA_APC:
- case CODEC_ID_ADPCM_IMA_WAV:
- case CODEC_ID_ADPCM_IMA_QT:
- case CODEC_ID_ADPCM_SWF:
- case CODEC_ID_ADPCM_MS:
- case CODEC_ID_ADPCM_YAMAHA:
+ case CODEC_ID_ADPCM_IMA_EA_SEAD:
+ case CODEC_ID_ADPCM_IMA_WS:
case CODEC_ID_ADPCM_G722:
+ case CODEC_ID_ADPCM_YAMAHA:
return 4;
case CODEC_ID_PCM_ALAW:
case CODEC_ID_PCM_MULAW:
@@ -1730,6 +1724,24 @@ int av_get_bits_per_sample(enum CodecID codec_id){
}
}
+int av_get_bits_per_sample(enum CodecID codec_id)
+{
+ switch (codec_id) {
+ case CODEC_ID_ADPCM_SBPRO_2:
+ return 2;
+ case CODEC_ID_ADPCM_SBPRO_3:
+ return 3;
+ case CODEC_ID_ADPCM_SBPRO_4:
+ case CODEC_ID_ADPCM_IMA_WAV:
+ case CODEC_ID_ADPCM_IMA_QT:
+ case CODEC_ID_ADPCM_SWF:
+ case CODEC_ID_ADPCM_MS:
+ return 4;
+ default:
+ return av_get_exact_bits_per_sample(codec_id);
+ }
+}
+
#if !HAVE_THREADS
int ff_thread_init(AVCodecContext *s){
return -1;