Skip to content

Commit 5f4bb1f

Browse files
authored
Merge pull request #445 from nathansizemore/h264-reader-buffer-size
Adds configurable capacity to H264Reader.
2 parents 1e2cfd5 + 2f96919 commit 5f4bb1f

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

examples/examples/play-from-disk-h264/play-from-disk-h264.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ async fn main() -> Result<()> {
172172
// Open a H264 file and start reading using our H264Reader
173173
let file = File::open(&video_file_name)?;
174174
let reader = BufReader::new(file);
175-
let mut h264 = H264Reader::new(reader);
175+
let mut h264 = H264Reader::new(reader, 1_048_576);
176176

177177
// Wait for connection established
178178
notify_video.notified().await;

media/src/io/h264_reader/h264_reader_test.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::io::Cursor;
44
#[test]
55
fn test_data_does_not_start_with_h264header() -> Result<()> {
66
let test_function = |input: &[u8]| {
7-
let mut reader = H264Reader::new(Cursor::new(input));
7+
let mut reader = H264Reader::new(Cursor::new(input), 1_048_576);
88
if let Err(err) = reader.next_nal() {
99
assert_eq!(err, Error::ErrDataIsNotH264Stream);
1010
} else {
@@ -24,7 +24,7 @@ fn test_data_does_not_start_with_h264header() -> Result<()> {
2424
#[test]
2525
fn test_parse_header() -> Result<()> {
2626
let h264bytes = &[0x0, 0x0, 0x1, 0xAB];
27-
let mut reader = H264Reader::new(Cursor::new(h264bytes));
27+
let mut reader = H264Reader::new(Cursor::new(h264bytes), 1_048_576);
2828

2929
let nal = reader.next_nal()?;
3030

@@ -40,7 +40,7 @@ fn test_parse_header() -> Result<()> {
4040
#[test]
4141
fn test_eof() -> Result<()> {
4242
let test_function = |input: &[u8]| {
43-
let mut reader = H264Reader::new(Cursor::new(input));
43+
let mut reader = H264Reader::new(Cursor::new(input), 1_048_576);
4444
if let Err(err) = reader.next_nal() {
4545
assert_eq!(Error::ErrIoEOF, err);
4646
} else {
@@ -62,7 +62,7 @@ fn test_skip_sei() -> Result<()> {
6262
0x0, 0x0, 0x0, 0x1, 0xAB,
6363
];
6464

65-
let mut reader = H264Reader::new(Cursor::new(h264bytes));
65+
let mut reader = H264Reader::new(Cursor::new(h264bytes), 1_048_576);
6666

6767
let nal = reader.next_nal()?;
6868
assert_eq!(nal.data[0], 0xAA);
@@ -81,7 +81,7 @@ fn test_issue1734_next_nal() -> Result<()> {
8181
];
8282

8383
for test in tests {
84-
let mut reader = H264Reader::new(Cursor::new(test));
84+
let mut reader = H264Reader::new(Cursor::new(test), 1_048_576);
8585

8686
// Just make sure it doesn't crash
8787
while reader.next_nal().is_ok() {
@@ -95,7 +95,7 @@ fn test_issue1734_next_nal() -> Result<()> {
9595
#[test]
9696
fn test_trailing01after_start_code() -> Result<()> {
9797
let test = vec![0x0, 0x0, 0x0, 0x1, 0x01, 0x0, 0x0, 0x0, 0x1, 0x01];
98-
let mut r = H264Reader::new(Cursor::new(test));
98+
let mut r = H264Reader::new(Cursor::new(test), 1_048_576);
9999

100100
for _ in 0..=1 {
101101
let _nal = r.next_nal()?;

media/src/io/h264_reader/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,15 @@ pub struct H264Reader<R: Read> {
142142
}
143143

144144
impl<R: Read> H264Reader<R> {
145-
/// new creates new H264Reader
146-
pub fn new(reader: R) -> H264Reader<R> {
145+
/// new creates new `H264Reader` with `capacity` sized read buffer.
146+
pub fn new(reader: R, capacity: usize) -> H264Reader<R> {
147147
H264Reader {
148148
reader,
149149
nal_buffer: BytesMut::new(),
150150
count_of_consecutive_zero_bytes: 0,
151151
nal_prefix_parsed: false,
152152
read_buffer: vec![],
153-
temp_buf: vec![0u8; 4096],
153+
temp_buf: vec![0u8; capacity],
154154
}
155155
}
156156

0 commit comments

Comments
 (0)