From 3e9c83ec4e915139d0d0435463f007e7b7667cdb Mon Sep 17 00:00:00 2001 From: Zhiming Wang Date: Wed, 22 Jul 2020 20:45:50 +0800 Subject: [PATCH] examples/avi-to-ppm: allow more than one stream in the input file Only decode packets in the best video stream. See #17. --- examples/avi-to-ppm.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/avi-to-ppm.rs b/examples/avi-to-ppm.rs index 9182056..3cfe0de 100644 --- a/examples/avi-to-ppm.rs +++ b/examples/avi-to-ppm.rs @@ -16,6 +16,7 @@ fn main() -> Result<(), ffmpeg::Error> { .streams() .best(Type::Video) .ok_or_else(|| ffmpeg::Error::StreamNotFound)?; + let video_stream_index = input.index(); let mut decoder = input.codec().decoder().video()?; @@ -29,9 +30,12 @@ fn main() -> Result<(), ffmpeg::Error> { Flags::BILINEAR, )?; - for (i, (_, p)) in ictx.packets().enumerate() { + for (i, (stream, packet)) in ictx.packets().enumerate() { + if stream.index() != video_stream_index { + continue; + } let mut frame = Video::empty(); - match decoder.decode(&p, &mut frame) { + match decoder.decode(&packet, &mut frame) { Ok(_) => { let mut rgb_frame = Video::empty(); scaler.run(&frame, &mut rgb_frame)?;