Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2016-09-15 17:57:48 +0300
committerPaul B Mahol <onemda@gmail.com>2016-09-15 17:59:31 +0300
commit4d677c7ae37d1df57cc79ea7577c2e4cd1de8e3a (patch)
tree377954ef05e41b15ddc8150c919993b511f4d093 /libavformat/msf.c
parent022260271b1786796ec035d86d28b9bf9b177060 (diff)
avformat/msf: add support for ATRAC3 codec
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavformat/msf.c')
-rw-r--r--libavformat/msf.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libavformat/msf.c b/libavformat/msf.c
index 0551e9bc24..24654e6569 100644
--- a/libavformat/msf.c
+++ b/libavformat/msf.c
@@ -44,6 +44,7 @@ static int msf_read_header(AVFormatContext *s)
{
unsigned codec, align, size;
AVStream *st;
+ int ret;
avio_skip(s->pb, 4);
@@ -68,6 +69,17 @@ static int msf_read_header(AVFormatContext *s)
case 0: st->codecpar->codec_id = AV_CODEC_ID_PCM_S16BE; break;
case 3: st->codecpar->block_align = 16 * st->codecpar->channels;
st->codecpar->codec_id = AV_CODEC_ID_ADPCM_PSX; break;
+ case 4:
+ case 5:
+ case 6: st->codecpar->block_align = (codec == 4 ? 96 : codec == 5 ? 152 : 192) * st->codecpar->channels;
+ ret = ff_alloc_extradata(st->codecpar, 14);
+ if (ret < 0)
+ return ret;
+ memset(st->codecpar->extradata, 0, st->codecpar->extradata_size);
+ AV_WL16(st->codecpar->extradata, 1);
+ AV_WL16(st->codecpar->extradata+4, 4096);
+ AV_WL16(st->codecpar->extradata+10, 1);
+ st->codecpar->codec_id = AV_CODEC_ID_ATRAC3; break;
case 7: st->need_parsing = AVSTREAM_PARSE_FULL_RAW;
st->codecpar->codec_id = AV_CODEC_ID_MP3; break;
default: