Commit b80f9916 authored by michael's avatar michael

ra288 demuxing support (doesnt really work, might be demuxer or decoder bug)


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@3992 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent df1481e2
...@@ -500,19 +500,21 @@ static void rm_read_audio_stream_info(AVFormatContext *s, AVStream *st, ...@@ -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_type = CODEC_TYPE_AUDIO;
st->codec.codec_id = CODEC_ID_RA_144; st->codec.codec_id = CODEC_ID_RA_144;
} else { } else {
int flavor, sub_packet_h, coded_framesize;
/* old version (4) */ /* old version (4) */
get_be32(pb); /* .ra4 */ get_be32(pb); /* .ra4 */
get_be32(pb); get_be32(pb); /* data size */
get_be16(pb); get_be16(pb); /* version2 */
get_be32(pb); /* header size */ get_be32(pb); /* header size */
get_be16(pb); /* add codec info */ flavor= get_be16(pb); /* add codec info / flavor */
get_be32(pb); /* coded frame size */ coded_framesize= get_be32(pb); /* coded frame size */
get_be32(pb); /* ??? */ get_be32(pb); /* ??? */
get_be32(pb); /* ??? */ get_be32(pb); /* ??? */
get_be32(pb); /* ??? */ get_be32(pb); /* ??? */
get_be16(pb); /* 1 */ sub_packet_h= get_be16(pb); /* 1 */
get_be16(pb); /* coded frame size */ get_be16(pb); /* frame size */
get_be32(pb); get_be16(pb); /* sub packet size */
get_be16(pb); /* ??? */
st->codec.sample_rate = get_be16(pb); st->codec.sample_rate = get_be16(pb);
get_be32(pb); get_be32(pb);
st->codec.channels = get_be16(pb); st->codec.channels = get_be16(pb);
...@@ -521,6 +523,16 @@ static void rm_read_audio_stream_info(AVFormatContext *s, AVStream *st, ...@@ -521,6 +523,16 @@ static void rm_read_audio_stream_info(AVFormatContext *s, AVStream *st,
st->codec.codec_type = CODEC_TYPE_AUDIO; st->codec.codec_type = CODEC_TYPE_AUDIO;
if (!strcmp(buf, "dnet")) { if (!strcmp(buf, "dnet")) {
st->codec.codec_id = CODEC_ID_AC3; 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 { } else {
st->codec.codec_id = CODEC_ID_NONE; st->codec.codec_id = CODEC_ID_NONE;
pstrcpy(st->codec.codec_name, sizeof(st->codec.codec_name), pstrcpy(st->codec.codec_name, sizeof(st->codec.codec_name),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment