Propagate errors in Input::packets().
This commit is contained in:
parent
fa2b8d13ad
commit
05bad6e9e0
@ -45,7 +45,7 @@ fn main() -> Result<(), ffmpeg::Error> {
|
||||
Ok(())
|
||||
};
|
||||
|
||||
for (stream, packet) in ictx.packets() {
|
||||
for (stream, packet) in ictx.packets().filter_map(Result::ok) {
|
||||
if stream.index() == video_stream_index {
|
||||
decoder.send_packet(&packet)?;
|
||||
receive_and_process_decoded_frames(&mut decoder)?;
|
||||
|
@ -42,7 +42,7 @@ fn main() {
|
||||
octx.set_metadata(ictx.metadata().to_owned());
|
||||
octx.write_header().unwrap();
|
||||
|
||||
for (stream, mut packet) in ictx.packets() {
|
||||
for (stream, mut packet) in ictx.packets().filter_map(Result::ok) {
|
||||
let ist_index = stream.index();
|
||||
let ost_index = stream_mapping[ist_index];
|
||||
if ost_index < 0 {
|
||||
|
@ -225,7 +225,7 @@ fn main() {
|
||||
octx.set_metadata(ictx.metadata().to_owned());
|
||||
octx.write_header().unwrap();
|
||||
|
||||
for (stream, mut packet) in ictx.packets() {
|
||||
for (stream, mut packet) in ictx.packets().filter_map(Result::ok) {
|
||||
if stream.index() == transcoder.stream {
|
||||
packet.rescale_ts(stream.time_base(), transcoder.in_time_base);
|
||||
transcoder.send_packet_to_decoder(&packet);
|
||||
|
@ -238,7 +238,7 @@ fn main() {
|
||||
ost_time_bases[ost_index] = octx.stream(ost_index as _).unwrap().time_base();
|
||||
}
|
||||
|
||||
for (stream, mut packet) in ictx.packets() {
|
||||
for (stream, mut packet) in ictx.packets().filter_map(Result::ok) {
|
||||
let ist_index = stream.index();
|
||||
let ost_index = stream_mapping[ist_index];
|
||||
if ost_index < 0 {
|
||||
|
@ -159,24 +159,22 @@ impl<'a> PacketIter<'a> {
|
||||
}
|
||||
|
||||
impl<'a> Iterator for PacketIter<'a> {
|
||||
type Item = (Stream<'a>, Packet);
|
||||
type Item = Result<(Stream<'a>, Packet), Error>;
|
||||
|
||||
fn next(&mut self) -> Option<<Self as Iterator>::Item> {
|
||||
let mut packet = Packet::empty();
|
||||
|
||||
loop {
|
||||
match packet.read(self.context) {
|
||||
Ok(..) => unsafe {
|
||||
return Some((
|
||||
Stream::wrap(mem::transmute_copy(&self.context), packet.stream()),
|
||||
packet,
|
||||
));
|
||||
},
|
||||
match packet.read(self.context) {
|
||||
Ok(..) => unsafe {
|
||||
Some(Ok((
|
||||
Stream::wrap(mem::transmute_copy(&self.context), packet.stream()),
|
||||
packet,
|
||||
)))
|
||||
},
|
||||
|
||||
Err(Error::Eof) => return None,
|
||||
Err(Error::Eof) => None,
|
||||
|
||||
Err(..) => (),
|
||||
}
|
||||
Err(e) => Some(Err(e)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user