diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2005-02-28 02:51:53 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2005-02-28 02:51:53 +0000 |
commit | 72aef1987efcbdb16f32d94efbc6f9db794ddccf (patch) | |
tree | 2c2894d8d02d0ce4ff07ddf49df676ffd61cc3ff | |
parent | b7aa4a59c1b58a8757aa9fbcf65bdb326e8f639a (diff) | |
download | ffmpeg-72aef1987efcbdb16f32d94efbc6f9db794ddccf.tar.gz |
ra288 demuxing support (doesnt really work, might be demuxer or decoder bug)
Originally committed as revision 3992 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavformat/rm.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/libavformat/rm.c b/libavformat/rm.c index e6779a69a0..b48cfda8c8 100644 --- a/libavformat/rm.c +++ b/libavformat/rm.c @@ -500,19 +500,21 @@ static void rm_read_audio_stream_info(AVFormatContext *s, AVStream *st, st->codec.codec_type = CODEC_TYPE_AUDIO; st->codec.codec_id = CODEC_ID_RA_144; } else { + int flavor, sub_packet_h, coded_framesize; /* old version (4) */ get_be32(pb); /* .ra4 */ - get_be32(pb); - get_be16(pb); + get_be32(pb); /* data size */ + get_be16(pb); /* version2 */ get_be32(pb); /* header size */ - get_be16(pb); /* add codec info */ - get_be32(pb); /* coded frame size */ + flavor= get_be16(pb); /* add codec info / flavor */ + coded_framesize= get_be32(pb); /* coded frame size */ get_be32(pb); /* ??? */ get_be32(pb); /* ??? */ get_be32(pb); /* ??? */ - get_be16(pb); /* 1 */ - get_be16(pb); /* coded frame size */ - get_be32(pb); + sub_packet_h= get_be16(pb); /* 1 */ + get_be16(pb); /* frame size */ + get_be16(pb); /* sub packet size */ + get_be16(pb); /* ??? */ st->codec.sample_rate = get_be16(pb); get_be32(pb); st->codec.channels = get_be16(pb); @@ -521,6 +523,16 @@ static void rm_read_audio_stream_info(AVFormatContext *s, AVStream *st, st->codec.codec_type = CODEC_TYPE_AUDIO; if (!strcmp(buf, "dnet")) { st->codec.codec_id = CODEC_ID_AC3; + } else if (!strcmp(buf, "28_8")) { + st->codec.codec_id = CODEC_ID_RA_288; + st->codec.extradata_size= 10; + st->codec.extradata= av_mallocz(st->codec.extradata_size); + /* this is completly braindead and broken, the idiot who added this codec and endianness + specific reordering to mplayer and libavcodec/ra288.c should be drowned in a see of cola */ + //FIXME pass the unpermutated extradata + ((uint16_t*)st->codec.extradata)[1]= sub_packet_h; + ((uint16_t*)st->codec.extradata)[2]= flavor; + ((uint16_t*)st->codec.extradata)[3]= coded_framesize; } else { st->codec.codec_id = CODEC_ID_NONE; pstrcpy(st->codec.codec_name, sizeof(st->codec.codec_name), |