projects
/
nihav.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
binkdmx: pass file version as audio extradata
[nihav.git]
/
nihav-rad
/
src
/
demuxers
/
bink.rs
diff --git
a/nihav-rad/src/demuxers/bink.rs
b/nihav-rad/src/demuxers/bink.rs
index 4e0be7f0a55d9822b444fc323b25a35ddf578fa6..29d756fc76c328ac98b8eddc1fd1ac263133a587 100644
(file)
--- a/
nihav-rad/src/demuxers/bink.rs
+++ b/
nihav-rad/src/demuxers/bink.rs
@@
-9,7
+9,7
@@
const BINK_AUD_FLAG_DCT: u8 = 0x10;
const BINK_AUD_FLAG_STEREO: u8 = 0x20;
impl AudioTrack {
const BINK_AUD_FLAG_STEREO: u8 = 0x20;
impl AudioTrack {
- fn new(strmgr: &mut StreamManager, srate: u32, flags: u8, str_id: usize) -> DemuxerResult<Self> {
+ fn new(strmgr: &mut StreamManager, srate: u32, flags: u8, str_id: usize
, magic: &[u8; 4]
) -> DemuxerResult<Self> {
let channels = if (flags & BINK_AUD_FLAG_STEREO) != 0 { 2 } else { 1 };
let codecname = if (flags & BINK_AUD_FLAG_DCT) != 0 {
"bink-audio-dct"
let channels = if (flags & BINK_AUD_FLAG_STEREO) != 0 { 2 } else { 1 };
let codecname = if (flags & BINK_AUD_FLAG_DCT) != 0 {
"bink-audio-dct"
@@
-17,7
+17,9
@@
impl AudioTrack {
"bink-audio-rdft"
};
let ahdr = NAAudioInfo::new(srate, channels, SND_F32P_FORMAT, 1);
"bink-audio-rdft"
};
let ahdr = NAAudioInfo::new(srate, channels, SND_F32P_FORMAT, 1);
- let ainfo = NACodecInfo::new(codecname, NACodecTypeInfo::Audio(ahdr), None);
+ let mut edata: Vec<u8> = Vec::with_capacity(4);
+ edata.extend_from_slice(magic);
+ let ainfo = NACodecInfo::new(codecname, NACodecTypeInfo::Audio(ahdr), Some(edata));
let res = strmgr.add_stream(NAStream::new(StreamType::Audio, (str_id + 1) as u32, ainfo, 1, srate));
validate!(res.is_some());
let id = res.unwrap();
let res = strmgr.add_stream(NAStream::new(StreamType::Audio, (str_id + 1) as u32, ainfo, 1, srate));
validate!(res.is_some());
let id = res.unwrap();
@@
-87,7
+89,7
@@
impl<'a> DemuxCore<'a> for BinkDemuxer<'a> {
let srate = src.read_u24le()?;
let flags = src.read_byte()?;
validate!(srate > 0);
let srate = src.read_u24le()?;
let flags = src.read_byte()?;
validate!(srate > 0);
- self.ainfo.push(AudioTrack::new(strmgr, srate, flags, i)?);
+ self.ainfo.push(AudioTrack::new(strmgr, srate, flags, i
, &magic
)?);
}
for _ in 0..num_audio {
let _trk_id = src.read_u32le()?;
}
for _ in 0..num_audio {
let _trk_id = src.read_u32le()?;