From c78bd18c8dbbf5aeec824bcd5013a95ec8f38086 Mon Sep 17 00:00:00 2001 From: Martin Algesten Date: Wed, 1 May 2024 14:07:56 +0200 Subject: [PATCH] encode() -> PacketProducer --- src/encoder.rs | 19 +++++++------------ src/lib.rs | 2 +- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/encoder.rs b/src/encoder.rs index 87c23bd..809a376 100644 --- a/src/encoder.rs +++ b/src/encoder.rs @@ -3,9 +3,9 @@ use std::ptr; use tracing::Level; - -use super::{sys, av_log_set_callback, set_log_level, log_callback, Codec, Error, CodecKind, err_code_to_string, FrameRef, Packet}; use super::sys::AVPixelFormat as PixelFormat; +use super::{av_log_set_callback, err_code_to_string, log_callback, set_log_level}; +use super::{sys, Codec, CodecKind, Error, FrameRef, Packet}; use super::{RawFrame, RawPacket}; pub struct Encoder { @@ -139,10 +139,7 @@ impl Encoder { unsafe { Codec::from_ptr(self.codec) } } - pub fn encode( - &mut self, - frame: &dyn FrameRef, - ) -> Result>, Error> { + pub fn encode(&mut self, frame: &dyn FrameRef) -> Result { let pts = self.pts_counter; self.pts_counter += 1; @@ -155,22 +152,20 @@ impl Encoder { } } - Ok(EncoderIterator { + Ok(PacketProducer { enc: self, pkt: Some(RawPacket::new()), }) } } -struct EncoderIterator<'a> { +pub struct PacketProducer<'a> { enc: &'a mut Encoder, pkt: Option, } -impl<'a> Iterator for EncoderIterator<'a> { - type Item = Result, Error>; - - fn next(&mut self) -> Option { +impl<'a> PacketProducer<'a> { + pub fn next<'b>(&'b mut self) -> Option, Error>> { let pkt = self.pkt.as_mut()?; unsafe { diff --git a/src/lib.rs b/src/lib.rs index 9ba90fa..2e85c51 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,7 +8,7 @@ mod sys; use sys::AVPixelFormat as PixelFormat; mod encoder; -pub use encoder::{Encoder, EncoderConfig, EncoderProfile}; +pub use encoder::{Encoder, EncoderConfig, EncoderProfile, PacketProducer}; mod error; pub use error::Error;