[FFmpeg-cvslog] iff demuxer: 16SV support
Paul B Mahol
git at videolan.org
Wed Nov 28 16:59:07 CET 2012
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Wed Nov 28 15:53:25 2012 +0000| [01eed8c607628bcbac1e689660cd217d1cd1c83e] | committer: Paul B Mahol
iff demuxer: 16SV support
Signed-off-by: Paul B Mahol <onemda at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=01eed8c607628bcbac1e689660cd217d1cd1c83e
---
libavcodec/utils.c | 2 ++
libavformat/iff.c | 8 +++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 32bda51..a33d9c7 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -2297,6 +2297,8 @@ void avcodec_default_free_buffers(AVCodecContext *avctx)
int av_get_exact_bits_per_sample(enum AVCodecID codec_id)
{
switch (codec_id) {
+ case AV_CODEC_ID_8SVX_EXP:
+ case AV_CODEC_ID_8SVX_FIB:
case AV_CODEC_ID_ADPCM_CT:
case AV_CODEC_ID_ADPCM_IMA_APC:
case AV_CODEC_ID_ADPCM_IMA_EA_SEAD:
diff --git a/libavformat/iff.c b/libavformat/iff.c
index fbd0a0d..c8936d3 100644
--- a/libavformat/iff.c
+++ b/libavformat/iff.c
@@ -37,6 +37,7 @@
#include "internal.h"
#define ID_8SVX MKTAG('8','S','V','X')
+#define ID_16SV MKTAG('1','6','S','V')
#define ID_VHDR MKTAG('V','H','D','R')
#define ID_ATAK MKTAG('A','T','A','K')
#define ID_RLSE MKTAG('R','L','S','E')
@@ -123,6 +124,7 @@ static int iff_probe(AVProbeData *p)
if ( AV_RL32(d) == ID_FORM &&
(AV_RL32(d+8) == ID_8SVX ||
+ AV_RL32(d+8) == ID_16SV ||
AV_RL32(d+8) == ID_PBM ||
AV_RL32(d+8) == ID_ACBM ||
AV_RL32(d+8) == ID_DEEP ||
@@ -301,6 +303,9 @@ static int iff_read_header(AVFormatContext *s)
case AVMEDIA_TYPE_AUDIO:
avpriv_set_pts_info(st, 32, 1, st->codec->sample_rate);
+ if (st->codec->codec_tag == ID_16SV)
+ st->codec->codec_id = AV_CODEC_ID_PCM_S16BE_PLANAR;
+ else {
switch (iff->svx8_compression) {
case COMP_NONE:
st->codec->codec_id = AV_CODEC_ID_PCM_S8_PLANAR;
@@ -316,8 +321,9 @@ static int iff_read_header(AVFormatContext *s)
"Unknown SVX8 compression method '%d'\n", iff->svx8_compression);
return -1;
}
+ }
- st->codec->bits_per_coded_sample = iff->svx8_compression == COMP_NONE ? 8 : 4;
+ st->codec->bits_per_coded_sample = av_get_bits_per_sample(st->codec->codec_id);
st->codec->bit_rate = st->codec->channels * st->codec->sample_rate * st->codec->bits_per_coded_sample;
st->codec->block_align = st->codec->channels * st->codec->bits_per_coded_sample;
break;
More information about the ffmpeg-cvslog
mailing list