1
0
Fork 0
mirror of https://github.com/alfg/mp4-rust.git synced 2024-06-02 13:39:54 +00:00

Fix buggy file without enabled track

This commit is contained in:
Ian Jun 2020-11-13 00:07:29 +09:00
parent 6c84994405
commit 5db8d56283
3 changed files with 8 additions and 4 deletions

View file

@ -401,7 +401,7 @@ impl<W: Write> WriteDesc<&mut W> for DecoderConfigDescriptor {
write_desc(writer, Self::desc_tag(), size)?;
writer.write_u8(self.object_type_indication)?;
writer.write_u8((self.stream_type << 2) + (self.up_stream & 0x02))?;
writer.write_u8((self.stream_type << 2) + (self.up_stream & 0x02) + 1)?; // 1 reserved
writer.write_u24::<BigEndian>(self.buffer_size_db)?;
writer.write_u32::<BigEndian>(self.max_bitrate)?;
writer.write_u32::<BigEndian>(self.avg_bitrate)?;

View file

@ -23,7 +23,7 @@ impl Default for TkhdBox {
fn default() -> Self {
TkhdBox {
version: 0,
flags: 1, // XXX enum Track_enabled
flags: 3, // XXX enum Track_enabled | Track_in_movie
creation_time: 0,
modification_time: 0,
track_id: 0,
@ -199,7 +199,7 @@ mod tests {
fn test_tkhd32() {
let src_box = TkhdBox {
version: 0,
flags: 1, // XXX enum Track_enabled
flags: 3, // XXX enum Track_enabled | Track_in_movie
creation_time: 100,
modification_time: 200,
track_id: 1,
@ -238,7 +238,7 @@ mod tests {
fn test_tkhd64() {
let src_box = TkhdBox {
version: 1,
flags: 1, // XXX enum Track_enabled
flags: 3, // XXX enum Track_enabled | Track_in_movie
creation_time: 100,
modification_time: 200,
track_id: 1,

View file

@ -469,6 +469,10 @@ impl Mp4TrackWriter {
trak.mdia.mdhd.timescale = config.timescale;
trak.mdia.mdhd.language = config.language.to_owned();
trak.mdia.hdlr.handler_type = config.track_type.into();
trak.mdia.hdlr.name = match config.track_type { // XXX enum or something
TrackType::Video => String::from("VideoHandler"),
TrackType::Audio => String::from("SoundHandler"),
};
// XXX largesize
trak.mdia.minf.stbl.stco = Some(StcoBox::default());
match config.media_conf {