diff --git a/src/codec/packet/mod.rs b/src/codec/packet/mod.rs index 8fad4c9..c22dd91 100644 --- a/src/codec/packet/mod.rs +++ b/src/codec/packet/mod.rs @@ -191,4 +191,12 @@ impl<'a> Iterator for SideDataIter<'a> { } } } + + fn size_hint(&self) -> (usize, Option) { + unsafe { + ((*self.ptr).side_data_elems as usize, Some((*self.ptr).side_data_elems as usize)) + } + } } + +impl<'a> ExactSizeIterator for SideDataIter<'a> { } diff --git a/src/codec/subtitle/mod.rs b/src/codec/subtitle/mod.rs index af78c21..9d61823 100644 --- a/src/codec/subtitle/mod.rs +++ b/src/codec/subtitle/mod.rs @@ -118,8 +118,16 @@ impl<'a> Iterator for RectIter<'a> { } } } + + fn size_hint(&self) -> (usize, Option) { + unsafe { + ((*self.ptr).num_rects as usize, Some((*self.ptr).num_rects as usize)) + } + } } +impl<'a> ExactSizeIterator for RectIter<'a> { } + pub enum Rect<'a> { None, Bitmap(Bitmap<'a>), diff --git a/src/device/extensions.rs b/src/device/extensions.rs index e396509..c518055 100644 --- a/src/device/extensions.rs +++ b/src/device/extensions.rs @@ -66,4 +66,12 @@ impl<'a> Iterator for DeviceIter<'a> { } } } + + fn size_hint(&self) -> (usize, Option) { + unsafe { + ((*self.ptr).nb_devices as usize, Some((*self.ptr).nb_devices as usize)) + } + } } + +impl<'a> ExactSizeIterator for DeviceIter<'a> { } diff --git a/src/format/context.rs b/src/format/context.rs index d5b24ef..ee26e83 100644 --- a/src/format/context.rs +++ b/src/format/context.rs @@ -216,8 +216,16 @@ impl<'a> Iterator for StreamIter<'a> { } } } + + fn size_hint(&self) -> (usize, Option) { + unsafe { + ((*self.ptr).nb_streams as usize, Some((*self.ptr).nb_streams as usize)) + } + } } +impl<'a> ExactSizeIterator for StreamIter<'a> { } + pub struct StreamIterMut<'a> { ptr: *const AVFormatContext, cur: c_uint, @@ -245,8 +253,16 @@ impl<'a> Iterator for StreamIterMut<'a> { } } } + + fn size_hint(&self) -> (usize, Option) { + unsafe { + ((*self.ptr).nb_streams as usize, Some((*self.ptr).nb_streams as usize)) + } + } } +impl<'a> ExactSizeIterator for StreamIterMut<'a> { } + pub struct PacketIter<'a> { context: &'a mut Context, } diff --git a/src/format/stream/stream.rs b/src/format/stream/stream.rs index efc04ad..7204ed1 100644 --- a/src/format/stream/stream.rs +++ b/src/format/stream/stream.rs @@ -113,4 +113,12 @@ impl<'a> Iterator for SideDataIter<'a> { } } } + + fn size_hint(&self) -> (usize, Option) { + unsafe { + ((*self.ptr).nb_side_data as usize, Some((*self.ptr).nb_side_data as usize)) + } + } } + +impl<'a> ExactSizeIterator for SideDataIter<'a> { }