Skip to content
Snippets Groups Projects
Verified Commit 7cf88b07 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

reduce duplicated code

parent d00866a7
Branches
No related tags found
No related merge requests found
......@@ -60,27 +60,13 @@ impl AVFormatContext {
Ok(AVInputFormat::new(base))
}
pub fn streams(&self) -> Vec<AVStream> {
Vec::from(unsafe {
pub fn streams(&self) -> impl Iterator<Item = AVStream> {
unsafe {
std::slice::from_raw_parts((*self.base).streams, (*self.base).nb_streams as usize)
})
.iter()
.filter_map(|stream: &*mut ffi::AVStream| unsafe { (*stream).as_mut() })
.map(|stream| AVStream::new(stream))
.collect()
}
pub fn find_stream<P>(&self, predicate: P) -> Option<AVStream>
where
P: FnMut(&AVStream) -> bool,
{
Vec::from(unsafe {
std::slice::from_raw_parts((*self.base).streams, (*self.base).nb_streams as usize)
})
.iter()
.filter_map(|stream: &*mut ffi::AVStream| unsafe { (*stream).as_mut() })
.map(|stream| AVStream::new(stream))
.find(predicate)
}
pub fn read_frame(&mut self, packet: &mut AVPacket) -> Result<(), Error> {
......
#![allow(dead_code)]
pub mod spritesheet;
pub mod stream_metadata;
......@@ -40,7 +41,8 @@ pub fn extract(
);
let mut stream: AVStream = avformat_context
.find_stream(|stream| {
.streams()
.find(|stream| {
if let Ok(codec_parameters) = stream.codec_parameters() {
return codec_parameters.codec_type() == AVMediaType::Video;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment