projects
/
nihav.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rmmux: improve the audio packet timestamp handling
[nihav.git]
/
nihav-realmedia
/
src
/
muxers
/
rmvb
/
videostream.rs
diff --git
a/nihav-realmedia/src/muxers/rmvb/videostream.rs
b/nihav-realmedia/src/muxers/rmvb/videostream.rs
index 708874d6afabe01b17640c5dfe285e04cc026b5c..d1aeccea883061acb9acd128215b6c779b41c030 100644
(file)
--- a/
nihav-realmedia/src/muxers/rmvb/videostream.rs
+++ b/
nihav-realmedia/src/muxers/rmvb/videostream.rs
@@
-17,10
+17,10
@@
impl RMStreamWriter for DummyStreamWriter {
fn write_header(&mut self, _bw: &mut ByteWriter, _stream: &NAStream) -> MuxerResult<()> {
Ok(())
}
fn write_header(&mut self, _bw: &mut ByteWriter, _stream: &NAStream) -> MuxerResult<()> {
Ok(())
}
- fn queue_packet(&mut self, _pkt: NAPacket) -> bool {
+ fn queue_packet(&mut self, _pkt: NAPacket
, _ms: u32
) -> bool {
true
}
true
}
- fn get_packet(&mut self) -> Option<(Vec<u8>, bool)> {
+ fn get_packet(&mut self) -> Option<(Vec<u8>,
u32,
bool)> {
None
}
fn flush(&mut self) { }
None
}
fn flush(&mut self) { }
@@
-35,6
+35,7
@@
struct VideoStreamWriter {
nslices: usize,
cur_slice: usize,
seq_no: u8,
nslices: usize,
cur_slice: usize,
seq_no: u8,
+ time: u32,
}
impl RMStreamWriter for VideoStreamWriter {
}
impl RMStreamWriter for VideoStreamWriter {
@@
-75,7
+76,7
@@
impl RMStreamWriter for VideoStreamWriter {
bw.seek(SeekFrom::Start(end))?;
Ok(())
}
bw.seek(SeekFrom::Start(end))?;
Ok(())
}
- fn queue_packet(&mut self, pkt: NAPacket) -> bool {
+ fn queue_packet(&mut self, pkt: NAPacket
, ms: u32
) -> bool {
if self.nslices == 0 {
let src = pkt.get_buffer();
let nslices = usize::from(src[0]) + 1;
if self.nslices == 0 {
let src = pkt.get_buffer();
let nslices = usize::from(src[0]) + 1;
@@
-84,13
+85,14
@@
impl RMStreamWriter for VideoStreamWriter {
self.cur_slice = 0;
self.buf.resize(src.len(), 0);
self.buf.copy_from_slice(&src);
self.cur_slice = 0;
self.buf.resize(src.len(), 0);
self.buf.copy_from_slice(&src);
+ self.time = ms;
}
true
} else {
false
}
}
}
true
} else {
false
}
}
- fn get_packet(&mut self) -> Option<(Vec<u8>, bool)> {
+ fn get_packet(&mut self) -> Option<(Vec<u8>,
u32,
bool)> {
if self.cur_slice < self.nslices {
let first = self.cur_slice == 0;
let hdr_size = self.nslices * 8 + 1;
if self.cur_slice < self.nslices {
let first = self.cur_slice == 0;
let hdr_size = self.nslices * 8 + 1;
@@
-138,7
+140,7
@@
impl RMStreamWriter for VideoStreamWriter {
self.cur_slice = 0;
self.seq_no = self.seq_no.wrapping_add(1);
}
self.cur_slice = 0;
self.seq_no = self.seq_no.wrapping_add(1);
}
- Some((ret, first))
+ Some((ret,
self.time,
first))
} else {
None
}
} else {
None
}
@@
-161,6
+163,7
@@
pub fn create_video_stream(stream: &NAStream) -> MuxerResult<Box<dyn RMStreamWri
nslices: 0,
cur_slice: 0,
seq_no: 0,
nslices: 0,
cur_slice: 0,
seq_no: 0,
+ time: 0,
}));
}
}
}));
}
}