Skip to content

Commit f40f4ed

Browse files
committed
feat: added demuxer module
1 parent b08c5fa commit f40f4ed

File tree

22 files changed

+3930
-4
lines changed

22 files changed

+3930
-4
lines changed

src/rust/Cargo.lock

Lines changed: 4 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/rust/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ cfg-if = "1.0.0"
2828
num-integer = "0.1.45"
2929
lib_ccxr = { path = "lib_ccxr" }
3030
url = "2.5.2"
31+
libc = "0.2.169"
3132

3233
[build-dependencies]
3334
bindgen = "0.64.0"

src/rust/lib_ccxr/Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/rust/lib_ccxr/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ strum = "0.26.3"
1515
strum_macros = "0.26.4"
1616
crc32fast = "1.3.2"
1717
num_enum = "0.6.1"
18+
libc = "0.2.169"
1819

1920
[features]
2021
default = [

src/rust/lib_ccxr/src/activity.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,16 @@ use std::io;
22
use std::io::Write;
33

44
use crate::common::Options;
5+
use std::sync::atomic::{AtomicUsize, Ordering};
6+
7+
pub static mut NET_ACTIVITY_GUI: AtomicUsize = AtomicUsize::new(0);
58

69
pub trait ActivityExt {
710
fn activity_report_version(&mut self);
11+
fn activity_input_file_closed(&mut self);
12+
fn activity_input_file_open(&mut self, filename: &str);
13+
fn activity_report_data_read(&mut self);
14+
815
}
916
impl ActivityExt for Options {
1017
fn activity_report_version(&mut self) {
@@ -15,4 +22,33 @@ impl ActivityExt for Options {
1522
stderr.flush().unwrap();
1623
}
1724
}
25+
fn activity_input_file_closed(&mut self) {
26+
if self.gui_mode_reports {
27+
let mut stderr = io::stderr();
28+
writeln!(stderr, "###INPUTFILECLOSED").unwrap();
29+
stderr.flush().unwrap();
30+
}
31+
}
32+
33+
fn activity_input_file_open(&mut self, filename: &str) {
34+
if self.gui_mode_reports {
35+
let mut stderr = io::stderr();
36+
writeln!(stderr, "###INPUTFILEOPEN#{}", filename).unwrap();
37+
stderr.flush().unwrap();
38+
}
39+
}
40+
41+
fn activity_report_data_read(&mut self) {
42+
if self.gui_mode_reports {
43+
let mut stderr = io::stderr();
44+
writeln!(stderr, "###DATAREAD#{}", unsafe { NET_ACTIVITY_GUI.load(Ordering::SeqCst)/ 1000 }).unwrap();
45+
stderr.flush().unwrap();
46+
}
47+
}
48+
1849
}
50+
pub fn update_net_activity_gui(value: usize) {
51+
unsafe {
52+
NET_ACTIVITY_GUI.store(value, Ordering::SeqCst);
53+
}
54+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
pub struct AvcCtx {
2+
pub cc_count: u8, // Number of closed caption blocks
3+
pub cc_data: *mut u8, // Pointer to buffer holding CC data
4+
pub cc_databufsize: i64, // Buffer size for CC data
5+
pub cc_buffer_saved: i32, // Was the CC buffer saved after the last update?
6+
7+
pub got_seq_para: i32, // Flag indicating if sequence parameters were received
8+
pub nal_ref_idc: u32, // NAL reference ID
9+
pub seq_parameter_set_id: i64, // Sequence parameter set ID
10+
pub log2_max_frame_num: i32, // Log2 of max frame number
11+
pub pic_order_cnt_type: i32, // Picture order count type
12+
pub log2_max_pic_order_cnt_lsb: i32, // Log2 of max picture order count LSB
13+
pub frame_mbs_only_flag: i32, // Flag indicating if only frame MBs are used
14+
15+
// Use and throw stats for debugging (TODO: clean up later)
16+
pub num_nal_unit_type_7: i64, // Number of NAL units of type 7
17+
pub num_vcl_hrd: i64, // Number of VCL HRD parameters encountered
18+
pub num_nal_hrd: i64, // Number of NAL HRD parameters encountered
19+
pub num_jump_in_frames: i64, // Number of frame jumps detected
20+
pub num_unexpected_sei_length: i64, // Number of unexpected SEI lengths
21+
22+
pub ccblocks_in_avc_total: i32, // Total CC blocks in AVC stream
23+
pub ccblocks_in_avc_lost: i32, // Lost CC blocks in AVC stream
24+
25+
pub frame_num: i64, // Current frame number
26+
pub lastframe_num: i64, // Last processed frame number
27+
pub currref: i32, // Current reference index
28+
pub maxidx: i32, // Maximum index value for ordering
29+
pub lastmaxidx: i32, // Last max index
30+
31+
// Used to find tref zero in PTS mode
32+
pub minidx: i32, // Minimum reference index
33+
pub lastminidx: i32, // Last minimum reference index
34+
35+
// Used to remember the max temporal reference number (POC mode)
36+
pub maxtref: i32, // Max temporal reference
37+
pub last_gop_maxtref: i32, // Last GOP max temporal reference
38+
39+
// Used for PTS ordering of CC blocks
40+
pub currefpts: i64, // Current reference PTS
41+
pub last_pic_order_cnt_lsb: i64, // Last picture order count LSB
42+
pub last_slice_pts: i64, // Last slice PTS
43+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod avc_functions;

src/rust/lib_ccxr/src/common/constants.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,18 @@ pub enum DataSource {
246246
Network,
247247
Tcp,
248248
}
249+
impl From<u32> for DataSource {
250+
fn from(value: u32) -> Self {
251+
match value {
252+
0 => DataSource::File,
253+
1 => DataSource::Stdin,
254+
2 => DataSource::Network,
255+
3 => DataSource::Tcp,
256+
_ => DataSource::File, // Default or fallback case
257+
}
258+
}
259+
}
260+
249261

250262
#[derive(Default, Debug, PartialEq, Eq, Clone, Copy)]
251263
pub enum StreamMode {
@@ -627,3 +639,8 @@ impl Language {
627639
}
628640
}
629641
}
642+
impl PartialEq for BufferdataType {
643+
fn eq(&self, other: &Self) -> bool {
644+
std::mem::discriminant(self) == std::mem::discriminant(other)
645+
}
646+
}

src/rust/lib_ccxr/src/common/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
//! | `language[NB_LANGUAGE]` | [`Language`] |
1818
1919
mod constants;
20-
mod options;
20+
pub mod options;
2121

2222
pub use constants::*;
2323
pub use options::*;

src/rust/lib_ccxr/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ pub mod subtitle;
55
pub mod teletext;
66
pub mod time;
77
pub mod util;
8+
pub mod avc_functions;

0 commit comments

Comments
 (0)