X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-acorn%2Fsrc%2Fdemuxers%2Farmovie.rs;h=64d222f36593210ee6c6f162608b0d879ae883d9;hb=41a3a050e538044e6d749693f9ba97d9b447a737;hp=5d97da9d7e317b52e2c46a930d52fcf9bff88ef4;hpb=e981a888dc75b454113445f643bd34a84652832c;p=nihav.git diff --git a/nihav-acorn/src/demuxers/armovie.rs b/nihav-acorn/src/demuxers/armovie.rs index 5d97da9..64d222f 100644 --- a/nihav-acorn/src/demuxers/armovie.rs +++ b/nihav-acorn/src/demuxers/armovie.rs @@ -2,6 +2,9 @@ use nihav_core::demuxers::*; const VIDEO_CODECS: &[(i32, &str)] = &[ ( 1, "movinglines"), + ( 2, "arm_rawvideo"), + ( 3, "arm_rawvideo"), + ( 5, "arm_rawvideo"), ( 7, "movingblocks"), ( 17, "movingblockshq"), ( 19, "supermovingblocks"), @@ -272,8 +275,11 @@ impl<'a> RawDemuxCore<'a> for ARMovieDemuxer<'a> { } let tb_den = tbase as u32; + let mut edata = vec![video_codec as u8, (video_codec >> 8) as u8]; + edata.extend_from_slice(&vformat); + let vci = NACodecTypeInfo::Video(NAVideoInfo::new(width, height, false, YUV420_FORMAT)); - let vinfo = NACodecInfo::new(codec_name, vci, Some(vformat)); + let vinfo = NACodecInfo::new(codec_name, vci, Some(edata)); let ret = strmgr.add_stream(NAStream::new(StreamType::Video, stream_id, vinfo, tb_num, tb_den, (frm_per_chunk * num_chunks) as u64)); if ret.is_some() { stream_id += 1; @@ -290,9 +296,10 @@ impl<'a> RawDemuxCore<'a> for ARMovieDemuxer<'a> { for ((&id, &sratestr), (&chan, &fmt)) in sound_ids.iter().zip(srates.iter()) .zip(channels.iter().zip(sndformats.iter())) { let codec_id = parse_uint(id)?; - let codec_name = if codec_id == 1 { "pcm" } else { "unknown" }; + let codec_name = if codec_id == 1 { "arm_rawaudio" } else { "unknown" }; let channels = parse_uint(chan)?; validate!(channels > 0 && channels < 16); + let edata = fmt.to_owned(); let bits = parse_uint(fmt)?; let mut srate = parse_uint(sratestr)?; if srate > 0 && srate < 1000 { // probably in microseconds instead of Hertz @@ -302,7 +309,7 @@ impl<'a> RawDemuxCore<'a> for ARMovieDemuxer<'a> { let fmt = if bits == 8 { SND_U8_FORMAT } else { SND_S16_FORMAT }; let aci = NACodecTypeInfo::Audio(NAAudioInfo::new(srate, channels as u8, fmt, 0)); - let ainfo = NACodecInfo::new(codec_name, aci, None); + let ainfo = NACodecInfo::new(codec_name, aci, Some(edata)); let ret = strmgr.add_stream(NAStream::new(StreamType::Audio, stream_id, ainfo, 1, srate, 0)); if let Some(id) = ret { self.audio_ids.push(id);