aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2005-02-28 02:51:53 +0000
committerMichael Niedermayer <michaelni@gmx.at>2005-02-28 02:51:53 +0000
commit72aef1987efcbdb16f32d94efbc6f9db794ddccf (patch)
tree2c2894d8d02d0ce4ff07ddf49df676ffd61cc3ff
parentb7aa4a59c1b58a8757aa9fbcf65bdb326e8f639a (diff)
downloadffmpeg-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.c26
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),