summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2015-10-24 20:41:32 +0200
committerPaul B Mahol <onemda@gmail.com>2015-10-26 10:08:01 +0100
commit035ae3c0096f6c0a3f199d331ed4094ff5beafd1 (patch)
tree5eb7e43f1e39621980e9cb2ceef6c098c95aa40c /libavformat
parent2ccc1b304e08a5f5e045c056e897ed377bf670f7 (diff)
avcodec: add SDX2 DPCM decoder
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/aiff.h1
-rw-r--r--libavformat/aiffdec.c1
-rw-r--r--libavformat/genh.c4
3 files changed, 6 insertions, 0 deletions
diff --git a/libavformat/aiff.h b/libavformat/aiff.h
index 4470254022..392f326be9 100644
--- a/libavformat/aiff.h
+++ b/libavformat/aiff.h
@@ -52,6 +52,7 @@ static const AVCodecTag ff_codec_aiff_tags[] = {
{ AV_CODEC_ID_ADPCM_IMA_QT, MKTAG('i','m','a','4') },
{ AV_CODEC_ID_QDM2, MKTAG('Q','D','M','2') },
{ AV_CODEC_ID_QCELP, MKTAG('Q','c','l','p') },
+ { AV_CODEC_ID_SDX2_DPCM, MKTAG('S','D','X','2') },
{ AV_CODEC_ID_NONE, 0 },
};
diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c
index 8d2701a184..17c0011f99 100644
--- a/libavformat/aiffdec.c
+++ b/libavformat/aiffdec.c
@@ -159,6 +159,7 @@ static int get_aiff_header(AVFormatContext *s, int size,
codec->bits_per_coded_sample = 5;
case AV_CODEC_ID_ADPCM_G722:
case AV_CODEC_ID_MACE6:
+ case AV_CODEC_ID_SDX2_DPCM:
codec->block_align = 1*codec->channels;
break;
case AV_CODEC_ID_GSM:
diff --git a/libavformat/genh.c b/libavformat/genh.c
index 6e4abae7cf..97068b4483 100644
--- a/libavformat/genh.c
+++ b/libavformat/genh.c
@@ -84,6 +84,7 @@ static int genh_read_header(AVFormatContext *s)
case 5: st->codec->codec_id = st->codec->block_align > 0 ?
AV_CODEC_ID_PCM_S8_PLANAR :
AV_CODEC_ID_PCM_S8; break;
+ case 6: st->codec->codec_id = AV_CODEC_ID_SDX2_DPCM; break;
case 7: ret = ff_alloc_extradata(st->codec, 2);
if (ret < 0)
return ret;
@@ -168,6 +169,9 @@ static int genh_read_packet(AVFormatContext *s, AVPacket *pkt)
}
}
ret = 0;
+ } else if (codec->codec_id == AV_CODEC_ID_SDX2_DPCM) {
+ ret = av_get_packet(s->pb, pkt, codec->block_align * 1024);
+
} else {
ret = av_get_packet(s->pb, pkt, codec->block_align ? codec->block_align : 1024 * codec->channels);
}