projects
/
nihav.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
49db8a1
)
switch NAStream reference to Arc
author
Kostya Shishkov
<kostya.shishkov@gmail.com>
Mon, 29 Apr 2019 11:15:59 +0000
(13:15 +0200)
committer
Kostya Shishkov
<kostya.shishkov@gmail.com>
Mon, 29 Apr 2019 11:15:59 +0000
(13:15 +0200)
nihav-core/src/demuxers/mod.rs
patch
|
blob
|
blame
|
history
nihav-core/src/frame.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/demuxers/mod.rs
patch
|
blob
|
blame
|
history
nihav-realmedia/src/demuxers/realmedia.rs
patch
|
blob
|
blame
|
history
diff --git
a/nihav-core/src/demuxers/mod.rs
b/nihav-core/src/demuxers/mod.rs
index 48529d499b0e6a59d0bb3ac1f7d3e93698c1b740..b3546fe49214a78df51611d826253de72f329055 100644
(file)
--- a/
nihav-core/src/demuxers/mod.rs
+++ b/
nihav-core/src/demuxers/mod.rs
@@
-1,4
+1,3
@@
-use std::rc::Rc;
pub use crate::frame::*;
pub use crate::io::byteio::*;
pub use crate::frame::*;
pub use crate::io::byteio::*;
@@
-23,12
+22,12
@@
pub trait DemuxCore<'a> {
}
pub trait NAPacketReader {
}
pub trait NAPacketReader {
- fn read_packet(&mut self, str:
Rc<NAStream>
, ts: NATimeInfo, keyframe: bool, size: usize) -> DemuxerResult<NAPacket>;
+ fn read_packet(&mut self, str:
NAStreamRef
, ts: NATimeInfo, keyframe: bool, size: usize) -> DemuxerResult<NAPacket>;
fn fill_packet(&mut self, pkt: &mut NAPacket) -> DemuxerResult<()>;
}
impl<'a> NAPacketReader for ByteReader<'a> {
fn fill_packet(&mut self, pkt: &mut NAPacket) -> DemuxerResult<()>;
}
impl<'a> NAPacketReader for ByteReader<'a> {
- fn read_packet(&mut self, str:
Rc<NAStream>
, ts: NATimeInfo, kf: bool, size: usize) -> DemuxerResult<NAPacket> {
+ fn read_packet(&mut self, str:
NAStreamRef
, ts: NATimeInfo, kf: bool, size: usize) -> DemuxerResult<NAPacket> {
let mut buf: Vec<u8> = Vec::with_capacity(size);
if buf.capacity() < size { return Err(DemuxerError::MemoryError); }
buf.resize(size, 0);
let mut buf: Vec<u8> = Vec::with_capacity(size);
if buf.capacity() < size { return Err(DemuxerError::MemoryError); }
buf.resize(size, 0);
@@
-47,7
+46,7
@@
impl<'a> NAPacketReader for ByteReader<'a> {
}
pub struct StreamManager {
}
pub struct StreamManager {
- streams: Vec<
Rc<NAStream>
>,
+ streams: Vec<
NAStreamRef
>,
ignored: Vec<bool>,
no_ign: bool,
}
ignored: Vec<bool>,
no_ign: bool,
}
@@
-66,18
+65,18
@@
impl StreamManager {
let stream_num = self.streams.len();
let mut str = stream.clone();
str.set_num(stream_num);
let stream_num = self.streams.len();
let mut str = stream.clone();
str.set_num(stream_num);
- self.streams.push(
Rc::new(str
));
+ self.streams.push(
str.into_ref(
));
self.ignored.push(false);
Some(stream_num)
}
self.ignored.push(false);
Some(stream_num)
}
- pub fn get_stream(&self, idx: usize) -> Option<
Rc<NAStream>
> {
+ pub fn get_stream(&self, idx: usize) -> Option<
NAStreamRef
> {
if idx < self.streams.len() {
Some(self.streams[idx].clone())
} else {
None
}
}
if idx < self.streams.len() {
Some(self.streams[idx].clone())
} else {
None
}
}
- pub fn get_stream_by_id(&self, id: u32) -> Option<
Rc<NAStream>
> {
+ pub fn get_stream_by_id(&self, id: u32) -> Option<
NAStreamRef
> {
for i in 0..self.streams.len() {
if self.streams[i].get_id() == id {
return Some(self.streams[i].clone());
for i in 0..self.streams.len() {
if self.streams[i].get_id() == id {
return Some(self.streams[i].clone());
@@
-117,18
+116,18
@@
impl StreamManager {
}
pub struct StreamIter<'a> {
}
pub struct StreamIter<'a> {
- streams: &'a Vec<
Rc<NAStream>
>,
+ streams: &'a Vec<
NAStreamRef
>,
pos: usize,
}
impl<'a> StreamIter<'a> {
pos: usize,
}
impl<'a> StreamIter<'a> {
- pub fn new(streams: &'a Vec<
Rc<NAStream>
>) -> Self {
+ pub fn new(streams: &'a Vec<
NAStreamRef
>) -> Self {
StreamIter { streams: streams, pos: 0 }
}
}
impl<'a> Iterator for StreamIter<'a> {
StreamIter { streams: streams, pos: 0 }
}
}
impl<'a> Iterator for StreamIter<'a> {
- type Item =
Rc<NAStream>
;
+ type Item =
NAStreamRef
;
fn next(&mut self) -> Option<Self::Item> {
if self.pos >= self.streams.len() { return None; }
fn next(&mut self) -> Option<Self::Item> {
if self.pos >= self.streams.len() { return None; }
@@
-150,10
+149,10
@@
impl<'a> Demuxer<'a> {
streams: str,
}
}
streams: str,
}
}
- pub fn get_stream(&self, idx: usize) -> Option<
Rc<NAStream>
> {
+ pub fn get_stream(&self, idx: usize) -> Option<
NAStreamRef
> {
self.streams.get_stream(idx)
}
self.streams.get_stream(idx)
}
- pub fn get_stream_by_id(&self, id: u32) -> Option<
Rc<NAStream>
> {
+ pub fn get_stream_by_id(&self, id: u32) -> Option<
NAStreamRef
> {
self.streams.get_stream_by_id(id)
}
pub fn get_num_streams(&self) -> usize {
self.streams.get_stream_by_id(id)
}
pub fn get_num_streams(&self) -> usize {
diff --git
a/nihav-core/src/frame.rs
b/nihav-core/src/frame.rs
index bc3216bd2b3a37a9247f4414caf951be723bf64e..d97850b7c7b59cd5a8f9d28975f10f842e0cee7d 100644
(file)
--- a/
nihav-core/src/frame.rs
+++ b/
nihav-core/src/frame.rs
@@
-739,6
+739,8
@@
pub struct NAStream {
tb_den: u32,
}
tb_den: u32,
}
+pub type NAStreamRef = Arc<NAStream>;
+
pub fn reduce_timebase(tb_num: u32, tb_den: u32) -> (u32, u32) {
if tb_num == 0 { return (tb_num, tb_den); }
if (tb_den % tb_num) == 0 { return (1, tb_den / tb_num); }
pub fn reduce_timebase(tb_num: u32, tb_den: u32) -> (u32, u32) {
if tb_num == 0 { return (tb_num, tb_den); }
if (tb_den % tb_num) == 0 { return (1, tb_den / tb_num); }
@@
-769,6
+771,7
@@
impl NAStream {
self.tb_num = n;
self.tb_den = d;
}
self.tb_num = n;
self.tb_den = d;
}
+ pub fn into_ref(self) -> NAStreamRef { Arc::new(self) }
}
impl fmt::Display for NAStream {
}
impl fmt::Display for NAStream {
@@
-779,7
+782,7
@@
impl fmt::Display for NAStream {
#[allow(dead_code)]
pub struct NAPacket {
#[allow(dead_code)]
pub struct NAPacket {
- stream:
Rc<NAStream>
,
+ stream:
NAStreamRef
,
ts: NATimeInfo,
buffer: NABufferRef<Vec<u8>>,
keyframe: bool,
ts: NATimeInfo,
buffer: NABufferRef<Vec<u8>>,
keyframe: bool,
@@
-787,12
+790,12
@@
pub struct NAPacket {
}
impl NAPacket {
}
impl NAPacket {
- pub fn new(str:
Rc<NAStream>
, ts: NATimeInfo, kf: bool, vec: Vec<u8>) -> Self {
+ pub fn new(str:
NAStreamRef
, ts: NATimeInfo, kf: bool, vec: Vec<u8>) -> Self {
// let mut vec: Vec<u8> = Vec::new();
// vec.resize(size, 0);
NAPacket { stream: str, ts: ts, keyframe: kf, buffer: NABufferRef::new(vec) }
}
// let mut vec: Vec<u8> = Vec::new();
// vec.resize(size, 0);
NAPacket { stream: str, ts: ts, keyframe: kf, buffer: NABufferRef::new(vec) }
}
- pub fn get_stream(&self) ->
Rc<NAStream>
{ self.stream.clone() }
+ pub fn get_stream(&self) ->
NAStreamRef
{ self.stream.clone() }
pub fn get_time_information(&self) -> NATimeInfo { self.ts }
pub fn get_pts(&self) -> Option<u64> { self.ts.get_pts() }
pub fn get_dts(&self) -> Option<u64> { self.ts.get_dts() }
pub fn get_time_information(&self) -> NATimeInfo { self.ts }
pub fn get_pts(&self) -> Option<u64> { self.ts.get_pts() }
pub fn get_dts(&self) -> Option<u64> { self.ts.get_dts() }
diff --git
a/nihav-realmedia/src/demuxers/mod.rs
b/nihav-realmedia/src/demuxers/mod.rs
index 5acf1f419f985dd155f6b31ed7870d83b56175a8..ebe9ee39f032c1332002f433bf987393e43499d1 100644
(file)
--- a/
nihav-realmedia/src/demuxers/mod.rs
+++ b/
nihav-realmedia/src/demuxers/mod.rs
@@
-1,4
+1,3
@@
-use std::rc::Rc;
use nihav_core::demuxers::*;
macro_rules! validate {
use nihav_core::demuxers::*;
macro_rules! validate {
diff --git
a/nihav-realmedia/src/demuxers/realmedia.rs
b/nihav-realmedia/src/demuxers/realmedia.rs
index 4b6ecef2201c6eaf8abb794643d1e39969e48241..f3f73b9521f31ff6c74eba4290016ead7f7bd10b 100644
(file)
--- a/
nihav-realmedia/src/demuxers/realmedia.rs
+++ b/
nihav-realmedia/src/demuxers/realmedia.rs
@@
-136,7
+136,7
@@
impl RMAudioStream {
}
RMAudioStream { deint: deint, iinfo: iinfo, buf: buf, sub_packet: 0 }
}
}
RMAudioStream { deint: deint, iinfo: iinfo, buf: buf, sub_packet: 0 }
}
- fn read_apackets(&mut self, queued_packets: &mut Vec<NAPacket>, src: &mut ByteReader, stream:
Rc<NAStream>
, ts: u32, keyframe: bool, payload_size: usize) -> DemuxerResult<NAPacket> {
+ fn read_apackets(&mut self, queued_packets: &mut Vec<NAPacket>, src: &mut ByteReader, stream:
NAStreamRef
, ts: u32, keyframe: bool, payload_size: usize) -> DemuxerResult<NAPacket> {
let (tb_num, tb_den) = stream.get_timebase();
let ts = NATimeInfo::new(Some(ts as u64), None, None, tb_num, tb_den);
let (tb_num, tb_den) = stream.get_timebase();
let ts = NATimeInfo::new(Some(ts as u64), None, None, tb_num, tb_den);
@@
-379,7
+379,7
@@
fn read_14or30(src: &mut ByteReader) -> DemuxerResult<(bool, u32)> {
}
}
}
}
-fn read_video_buf(src: &mut ByteReader, stream:
Rc<NAStream>
, ts: u32, keyframe: bool, frame_size: usize) -> DemuxerResult<NAPacket> {
+fn read_video_buf(src: &mut ByteReader, stream:
NAStreamRef
, ts: u32, keyframe: bool, frame_size: usize) -> DemuxerResult<NAPacket> {
let size = (frame_size as usize) + 9;
let mut vec: Vec<u8> = Vec::with_capacity(size);
vec.resize(size, 0);
let size = (frame_size as usize) + 9;
let mut vec: Vec<u8> = Vec::with_capacity(size);
vec.resize(size, 0);
@@
-392,7
+392,7
@@
fn read_video_buf(src: &mut ByteReader, stream: Rc<NAStream>, ts: u32, keyframe:
Ok(NAPacket::new(stream, ts, keyframe, vec))
}
Ok(NAPacket::new(stream, ts, keyframe, vec))
}
-fn read_multiple_frame(src: &mut ByteReader, stream:
Rc<NAStream>
, keyframe: bool, skip_mtype: bool) -> DemuxerResult<NAPacket> {
+fn read_multiple_frame(src: &mut ByteReader, stream:
NAStreamRef
, keyframe: bool, skip_mtype: bool) -> DemuxerResult<NAPacket> {
if !skip_mtype {
let mtype = src.read_byte()?;
validate!(mtype == 0xC0);
if !skip_mtype {
let mtype = src.read_byte()?;
validate!(mtype == 0xC0);
@@
-554,7
+554,7
@@
println!(" got ainfo {:?}", ainfo);
Ok(())
}
#[allow(unused_variables)]
Ok(())
}
#[allow(unused_variables)]
- fn parse_packet_payload(src: &mut ByteReader, rmstream: &mut RMStreamType, stream:
Rc<NAStream>
, slice_buf: &mut Vec<u8>, queued_pkts: &mut Vec<NAPacket>, keyframe: bool, ts: u32, payload_size: usize) -> DemuxerResult<NAPacket> {
+ fn parse_packet_payload(src: &mut ByteReader, rmstream: &mut RMStreamType, stream:
NAStreamRef
, slice_buf: &mut Vec<u8>, queued_pkts: &mut Vec<NAPacket>, keyframe: bool, ts: u32, payload_size: usize) -> DemuxerResult<NAPacket> {
match rmstream {
RMStreamType::Video(ref mut vstr) => {
match rmstream {
RMStreamType::Video(ref mut vstr) => {