@@ -9,21 +9,6 @@ use std::{
99 time:: Duration ,
1010} ;
1111
12- /// Maximum queue size for H.264 writer to prevent memory overflow.
13- ///
14- /// This constant defines the maximum number of encoded frames that can be
15- /// queued for writing to disk. If the queue fills up, older frames may be
16- /// dropped to maintain real-time performance.
17- ///
18- /// # Examples
19- ///
20- /// ```no_run
21- /// use recorder::{H264Writer, MAX_H264_WRITER_QUEUE_SIZE};
22- ///
23- /// let writer = H264Writer::new("output.h264".into(), MAX_H264_WRITER_QUEUE_SIZE);
24- /// ```
25- pub const MAX_H264_WRITER_QUEUE_SIZE : usize = 64 ;
26-
2712/// H.264 file writer that handles frame queuing and file output.
2813///
2914/// This struct manages the writing of encoded H.264 frames to disk using
@@ -41,9 +26,9 @@ pub const MAX_H264_WRITER_QUEUE_SIZE: usize = 64;
4126/// # Examples
4227///
4328/// ```no_run
44- /// use recorder::{H264Writer, EncodedFrame, MAX_H264_WRITER_QUEUE_SIZE };
29+ /// use recorder::{H264Writer, EncodedFrame};
4530///
46- /// let writer = H264Writer::new("output.h264".into(), MAX_H264_WRITER_QUEUE_SIZE );
31+ /// let writer = H264Writer::new("output.h264".into(), 2 );
4732///
4833/// // Write frames as they become available
4934/// // writer.write_frame(encoded_frame);
@@ -70,26 +55,25 @@ impl H264Writer {
7055 /// # Arguments
7156 ///
7257 /// * `output_path` - Path where the H.264 file will be created
73- /// * `queue_size` - Maximum number of frames to queue (must be > 0 and ≤ MAX_H264_WRITER_QUEUE_SIZE )
58+ /// * `queue_size` - Maximum number of frames to queue (must be > 0)
7459 ///
7560 /// # Returns
7661 ///
7762 /// A new `H264Writer` instance ready to receive frames.
7863 ///
7964 /// # Panics
8065 ///
81- /// Panics if `queue_size` is 0 or exceeds `MAX_H264_WRITER_QUEUE_SIZE` .
66+ /// Panics if `queue_size` is 0.
8267 ///
8368 /// # Examples
8469 ///
8570 /// ```no_run
86- /// use recorder::{H264Writer, MAX_H264_WRITER_QUEUE_SIZE };
71+ /// use recorder::{H264Writer};
8772 ///
88- /// let writer = H264Writer::new("recording.h264".into(), 1024 );
73+ /// let writer = H264Writer::new("recording.h264".into(), 8 );
8974 /// ```
9075 pub fn new ( output_path : PathBuf , queue_size : usize ) -> Self {
9176 assert ! ( queue_size > 0 ) ;
92- assert ! ( queue_size <= MAX_H264_WRITER_QUEUE_SIZE ) ;
9377
9478 let ( frame_sender, frame_receiver) = bounded :: < EncodedFrame > ( queue_size) ;
9579
@@ -142,6 +126,11 @@ impl H264Writer {
142126 log:: info!( "Creating H.264 file: {}" , output_path. display( ) ) ;
143127
144128 while let Ok ( frame) = frame_receiver. recv ( ) {
129+ log:: debug!(
130+ "h264 writer thread frame receiver remained: {}" ,
131+ frame_receiver. capacity( ) . unwrap_or_default( ) - frame_receiver. len( )
132+ ) ;
133+
145134 match frame {
146135 EncodedFrame :: Frame ( ( _frame_index, frame_data) ) => {
147136 if let Err ( e) = h264_file. write_all ( & frame_data) {
0 commit comments