From b8560637d93b632bd6b318baea4dc68b79e2ef85 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Sat, 17 Mar 2012 08:48:57 +0100 Subject: RealAudio Lossless decoder --- libavformat/rm.c | 1 + libavformat/rmdec.c | 9 +++++++++ 2 files changed, 10 insertions(+) (limited to 'libavformat') diff --git a/libavformat/rm.c b/libavformat/rm.c index 9c0ad4a58b..1f9cfe486d 100644 --- a/libavformat/rm.c +++ b/libavformat/rm.c @@ -42,5 +42,6 @@ const AVCodecTag ff_rm_codec_tags[] = { { CODEC_ID_SIPR, MKTAG('s','i','p','r') }, { CODEC_ID_AAC, MKTAG('r','a','a','c') }, { CODEC_ID_AAC, MKTAG('r','a','c','p') }, + { CODEC_ID_RALF, MKTAG('L','S','D',':') }, { CODEC_ID_NONE }, }; diff --git a/libavformat/rmdec.c b/libavformat/rmdec.c index ae6cd0b482..c85208b3fb 100644 --- a/libavformat/rmdec.c +++ b/libavformat/rmdec.c @@ -310,6 +310,15 @@ ff_rm_read_mdpr_codecdata (AVFormatContext *s, AVIOContext *pb, /* ra type header */ if (rm_read_audio_stream_info(s, pb, st, rst, 0)) return -1; + } else if (v == MKBETAG('L', 'S', 'D', ':')) { + avio_seek(pb, -4, SEEK_CUR); + if ((ret = rm_read_extradata(pb, st->codec, codec_data_size)) < 0) + return ret; + + st->codec->codec_type = AVMEDIA_TYPE_AUDIO; + st->codec->codec_tag = AV_RL32(st->codec->extradata); + st->codec->codec_id = ff_codec_get_id(ff_rm_codec_tags, + st->codec->codec_tag); } else { int fps; if (avio_rl32(pb) != MKTAG('V', 'I', 'D', 'O')) { -- cgit v1.2.3