diff --git a/src/codec/context.rs b/src/codec/context.rs index 549e264..4474d2b 100644 --- a/src/codec/context.rs +++ b/src/codec/context.rs @@ -62,10 +62,12 @@ impl Context { } } - pub fn set_flags(&mut self, value: Flags) { + pub fn set_flags(&mut self, value: Flags) -> &mut Self { unsafe { (*self.as_mut_ptr()).flags = value.bits() as c_int; } + + self } pub fn id(&self) -> Id { @@ -86,12 +88,14 @@ impl Context { } } - pub fn set_threading(&mut self, config: threading::Config) { + pub fn set_threading(&mut self, config: threading::Config) -> &mut Self { unsafe { (*self.as_mut_ptr()).thread_type = config.kind.into(); (*self.as_mut_ptr()).thread_count = config.count as c_int; (*self.as_mut_ptr()).thread_safe_callbacks = if config.safe { 1 } else { 0 }; } + + self } pub fn threading(&self) -> threading::Config { diff --git a/src/codec/decoder/audio.rs b/src/codec/decoder/audio.rs index 66872be..55ebd66 100644 --- a/src/codec/decoder/audio.rs +++ b/src/codec/decoder/audio.rs @@ -64,16 +64,20 @@ impl Audio { } } - pub fn set_channel_layout(&mut self, value: ChannelLayout) { + pub fn set_channel_layout(&mut self, value: ChannelLayout) -> &mut Self { unsafe { (*self.as_mut_ptr()).channel_layout = value.bits(); } + + self } - pub fn request_channel_layout(&mut self, value: ChannelLayout) { + pub fn request_channel_layout(&mut self, value: ChannelLayout) -> &mut Self { unsafe { (*self.as_mut_ptr()).request_channel_layout = value.bits(); } + + self } pub fn audio_service(&mut self) -> AudioService { diff --git a/src/codec/decoder/video.rs b/src/codec/decoder/video.rs index e075534..af196b2 100644 --- a/src/codec/decoder/video.rs +++ b/src/codec/decoder/video.rs @@ -84,28 +84,36 @@ impl Video { } } - pub fn set_slice_count(&mut self, value: usize) { + pub fn set_slice_count(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).slice_count = value as c_int; } + + self } - pub fn set_slice_flags(&mut self, value: slice::Flags) { + pub fn set_slice_flags(&mut self, value: slice::Flags) -> &mut Self { unsafe { (*self.as_mut_ptr()).slice_flags = value.bits(); } + + self } - pub fn skip_top(&mut self, value: usize) { + pub fn skip_top(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).skip_top = value as c_int; } + + self } - pub fn skip_bottom(&mut self, value: usize) { + pub fn skip_bottom(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).skip_bottom = value as c_int; } + + self } pub fn references(&self) -> usize { @@ -114,10 +122,12 @@ impl Video { } } - pub fn set_field_order(&mut self, value: FieldOrder) { + pub fn set_field_order(&mut self, value: FieldOrder) -> &mut Self { unsafe { (*self.as_mut_ptr()).field_order = value.into(); } + + self } // intra_matrix diff --git a/src/codec/encoder/audio.rs b/src/codec/encoder/audio.rs index adf42a7..1fe07d5 100644 --- a/src/codec/encoder/audio.rs +++ b/src/codec/encoder/audio.rs @@ -54,10 +54,12 @@ impl Audio { } } - pub fn set_rate(&mut self, rate: i32) { + pub fn set_rate(&mut self, rate: i32) -> &mut Self { unsafe { (*self.as_mut_ptr()).sample_rate = rate; } + + self } pub fn rate(&self) -> u32 { @@ -66,10 +68,12 @@ impl Audio { } } - pub fn set_format(&mut self, value: format::Sample) { + pub fn set_format(&mut self, value: format::Sample) -> &mut Self { unsafe { (*self.as_mut_ptr()).sample_fmt = value.into(); } + + self } pub fn format(&self) -> format::Sample { @@ -78,10 +82,12 @@ impl Audio { } } - pub fn set_channel_layout(&mut self, value: ChannelLayout) { + pub fn set_channel_layout(&mut self, value: ChannelLayout) -> &mut Self { unsafe { (*self.as_mut_ptr()).channel_layout = value.bits(); } + + self } pub fn channel_layout(&self) -> ChannelLayout { @@ -90,10 +96,12 @@ impl Audio { } } - pub fn set_channels(&mut self, value: i32) { + pub fn set_channels(&mut self, value: i32) -> &mut Self { unsafe { (*self.as_mut_ptr()).channels = value; } + + self } pub fn channels(&self) -> u16 { diff --git a/src/codec/encoder/encoder.rs b/src/codec/encoder/encoder.rs index 7011d56..06bbca8 100644 --- a/src/codec/encoder/encoder.rs +++ b/src/codec/encoder/encoder.rs @@ -35,31 +35,39 @@ impl Encoder { } } - pub fn set_bit_rate(&mut self, value: usize) { + pub fn set_bit_rate(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).bit_rate = value as c_int; } + + self } - pub fn set_max_bit_rate(&mut self, value: usize) { + pub fn set_max_bit_rate(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).rc_max_rate = value as c_int; } + + self } - pub fn set_tolerance(&mut self, value: usize) { + pub fn set_tolerance(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).bit_rate_tolerance = value as c_int; } + + self } - pub fn set_quality(&mut self, value: usize) { + pub fn set_quality(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).global_quality = value as c_int; } + + self } - pub fn set_compression(&mut self, value: Option) { + pub fn set_compression(&mut self, value: Option) -> &mut Self { unsafe { if let Some(value) = value { (*self.as_mut_ptr()).compression_level = value as c_int; @@ -68,15 +76,19 @@ impl Encoder { (*self.as_mut_ptr()).compression_level = -1; } } + + self } - pub fn set_time_base>(&mut self, value: R) { + pub fn set_time_base>(&mut self, value: R) -> &mut Self { unsafe { (*self.as_mut_ptr()).time_base = value.into().into(); } + + self } - pub fn set_frame_rate>(&mut self, value: Option) { + pub fn set_frame_rate>(&mut self, value: Option) -> &mut Self { unsafe { if let Some(value) = value { (*self.as_mut_ptr()).framerate = value.into().into(); @@ -86,6 +98,8 @@ impl Encoder { (*self.as_mut_ptr()).framerate.den = 1; } } + + self } } diff --git a/src/codec/encoder/video.rs b/src/codec/encoder/video.rs index 6104e1b..f8cd4e3 100644 --- a/src/codec/encoder/video.rs +++ b/src/codec/encoder/video.rs @@ -54,10 +54,12 @@ impl Video { } } - pub fn set_width(&mut self, value: u32) { + pub fn set_width(&mut self, value: u32) -> &mut Self { unsafe { (*self.as_mut_ptr()).width = value as c_int; } + + self } pub fn width(&self) -> u32 { @@ -66,10 +68,12 @@ impl Video { } } - pub fn set_height(&mut self, value: u32) { + pub fn set_height(&mut self, value: u32) -> &mut Self { unsafe { (*self.as_mut_ptr()).height = value as c_int; } + + self } pub fn height(&self) -> u32 { @@ -78,16 +82,20 @@ impl Video { } } - pub fn set_gop(&mut self, value: u32) { + pub fn set_gop(&mut self, value: u32) -> &mut Self { unsafe { (*self.as_mut_ptr()).gop_size = value as c_int; } + + self } - pub fn set_format(&mut self, value: format::Pixel) { + pub fn set_format(&mut self, value: format::Pixel) -> &mut Self { unsafe { (*self.as_mut_ptr()).pix_fmt = value.into(); } + + self } pub fn format(&self) -> format::Pixel { @@ -96,151 +104,199 @@ impl Video { } } - pub fn set_motion_estimation(&mut self, value: MotionEstimation) { + pub fn set_motion_estimation(&mut self, value: MotionEstimation) -> &mut Self { unsafe { (*self.as_mut_ptr()).me_method = value.into(); } + + self } - pub fn set_max_b_frames(&mut self, value: usize) { + pub fn set_max_b_frames(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).max_b_frames = value as c_int; } + + self } - pub fn set_b_quant_factor(&mut self, value: f32) { + pub fn set_b_quant_factor(&mut self, value: f32) -> &mut Self { unsafe { (*self.as_mut_ptr()).b_quant_factor = value as c_float; } + + self } - pub fn set_b_quant_offset(&mut self, value: f32) { + pub fn set_b_quant_offset(&mut self, value: f32) -> &mut Self { unsafe { (*self.as_mut_ptr()).b_quant_offset = value as c_float; } + + self } - pub fn set_i_quant_factor(&mut self, value: f32) { + pub fn set_i_quant_factor(&mut self, value: f32) -> &mut Self { unsafe { (*self.as_mut_ptr()).i_quant_factor = value as c_float; } + + self } - pub fn set_i_quant_offset(&mut self, value: f32) { + pub fn set_i_quant_offset(&mut self, value: f32) -> &mut Self { unsafe { (*self.as_mut_ptr()).i_quant_offset = value as c_float; } + + self } - pub fn set_lumi_masking(&mut self, value: f32) { + pub fn set_lumi_masking(&mut self, value: f32) -> &mut Self { unsafe { (*self.as_mut_ptr()).lumi_masking = value as c_float; } + + self } - pub fn set_temporal_cplx_masking(&mut self, value: f32) { + pub fn set_temporal_cplx_masking(&mut self, value: f32) -> &mut Self { unsafe { (*self.as_mut_ptr()).temporal_cplx_masking = value as c_float; } + + self } - pub fn set_spatial_cplx_masking(&mut self, value: f32) { + pub fn set_spatial_cplx_masking(&mut self, value: f32) -> &mut Self { unsafe { (*self.as_mut_ptr()).spatial_cplx_masking = value as c_float; } + + self } - pub fn set_p_masking(&mut self, value: f32) { + pub fn set_p_masking(&mut self, value: f32) -> &mut Self { unsafe { (*self.as_mut_ptr()).p_masking = value as c_float; } + + self } - pub fn set_dark_masking(&mut self, value: f32) { + pub fn set_dark_masking(&mut self, value: f32) -> &mut Self { unsafe { (*self.as_mut_ptr()).dark_masking = value as c_float; } + + self } - pub fn set_prediction(&mut self, value: Prediction) { + pub fn set_prediction(&mut self, value: Prediction) -> &mut Self { unsafe { (*self.as_mut_ptr()).prediction_method = value.into(); } + + self } - pub fn set_aspect_ratio>(&mut self, value: R) { + pub fn set_aspect_ratio>(&mut self, value: R) -> &mut Self { unsafe { (*self.as_mut_ptr()).sample_aspect_ratio = value.into().into(); } + + self } - pub fn set_me_comparison(&mut self, value: Comparison) { + pub fn set_me_comparison(&mut self, value: Comparison) -> &mut Self { unsafe { (*self.as_mut_ptr()).me_cmp = value.into(); } + + self } - pub fn set_me_sub_comparison(&mut self, value: Comparison) { + pub fn set_me_sub_comparison(&mut self, value: Comparison) -> &mut Self { unsafe { (*self.as_mut_ptr()).me_sub_cmp = value.into(); } + + self } - pub fn set_mb_comparison(&mut self, value: Comparison) { + pub fn set_mb_comparison(&mut self, value: Comparison) -> &mut Self { unsafe { (*self.as_mut_ptr()).mb_cmp = value.into(); } + + self } - pub fn set_ildct_comparison(&mut self, value: Comparison) { + pub fn set_ildct_comparison(&mut self, value: Comparison) -> &mut Self { unsafe { (*self.as_mut_ptr()).ildct_cmp = value.into(); } + + self } - pub fn set_dia_size(&mut self, value: usize) { + pub fn set_dia_size(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).dia_size = value as c_int; } + + self } - pub fn set_last_predictors(&mut self, value: usize) { + pub fn set_last_predictors(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).last_predictor_count = value as c_int; } + + self } - pub fn set_pre_me(&mut self, value: MotionEstimation) { + pub fn set_pre_me(&mut self, value: MotionEstimation) -> &mut Self { unsafe { (*self.as_mut_ptr()).pre_me = value.into(); } + + self } - pub fn set_me_pre_comparison(&mut self, value: Comparison) { + pub fn set_me_pre_comparison(&mut self, value: Comparison) -> &mut Self { unsafe { (*self.as_mut_ptr()).me_pre_cmp = value.into(); } + + self } - pub fn set_pre_dia_size(&mut self, value: usize) { + pub fn set_pre_dia_size(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).pre_dia_size = value as c_int; } + + self } - pub fn set_me_subpel_quality(&mut self, value: usize) { + pub fn set_me_subpel_quality(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).me_subpel_quality = value as c_int; } + + self } - pub fn set_me_range(&mut self, value: usize) { + pub fn set_me_range(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).me_range = value as c_int; } + + self } - pub fn set_intra_quant_bias(&mut self, value: Option) { + pub fn set_intra_quant_bias(&mut self, value: Option) -> &mut Self { unsafe { if let Some(value) = value { (*self.as_mut_ptr()).intra_quant_bias = value as c_int; @@ -249,9 +305,11 @@ impl Video { (*self.as_mut_ptr()).intra_quant_bias = FF_DEFAULT_QUANT_BIAS; } } + + self } - pub fn set_inter_quant_bias(&mut self, value: Option) { + pub fn set_inter_quant_bias(&mut self, value: Option) -> &mut Self { unsafe { if let Some(value) = value { (*self.as_mut_ptr()).inter_quant_bias = value as c_int; @@ -260,18 +318,24 @@ impl Video { (*self.as_mut_ptr()).inter_quant_bias = FF_DEFAULT_QUANT_BIAS; } } + + self } - pub fn set_mb_decision(&mut self, value: Decision) { + pub fn set_mb_decision(&mut self, value: Decision) -> &mut Self { unsafe { (*self.as_mut_ptr()).mb_decision = value.into(); } + + self } - pub fn set_intra_dc_precision(&mut self, value: u8) { + pub fn set_intra_dc_precision(&mut self, value: u8) -> &mut Self { unsafe { (*self.as_mut_ptr()).intra_dc_precision = value as c_int; } + + self } } diff --git a/src/codec/packet/mod.rs b/src/codec/packet/mod.rs index 6559cba..6b539fb 100644 --- a/src/codec/packet/mod.rs +++ b/src/codec/packet/mod.rs @@ -69,21 +69,25 @@ impl Packet { } } - pub fn rescale_ts(&mut self, source: S, destination: D) + pub fn rescale_ts(&mut self, source: S, destination: D) -> &mut Self where S: Into, D: Into { unsafe { av_packet_rescale_ts(self.as_mut_ptr(), source.into().into(), destination.into().into()); } + + self } pub fn flags(&self) -> Flags { Flags::from_bits_truncate(self.0.flags) } - pub fn set_flags(&mut self, value: Flags) { + pub fn set_flags(&mut self, value: Flags) -> &mut Self { self.0.flags = value.bits(); + + self } pub fn is_key(&self) -> bool { @@ -98,8 +102,10 @@ impl Packet { self.0.stream_index as usize } - pub fn set_stream(&mut self, index: usize) { + pub fn set_stream(&mut self, index: usize) -> &mut Self { self.0.stream_index = index as c_int; + + self } pub fn pts(&self) -> Option { diff --git a/src/codec/subtitle/mod.rs b/src/codec/subtitle/mod.rs index b26c87b..e79ffc7 100644 --- a/src/codec/subtitle/mod.rs +++ b/src/codec/subtitle/mod.rs @@ -69,24 +69,30 @@ impl Subtitle { } } - pub fn set_pts(&mut self, value: Option) { + pub fn set_pts(&mut self, value: Option) -> &mut Self { self.0.pts = value.unwrap_or(AV_NOPTS_VALUE); + + self } pub fn start(&self) -> u32 { self.0.start_display_time as u32 } - pub fn set_start(&mut self, value: u32) { + pub fn set_start(&mut self, value: u32) -> &mut Self { self.0.start_display_time = value as uint32_t; + + self } pub fn end(&self) -> u32 { self.0.end_display_time as u32 } - pub fn set_end(&mut self, value: u32) { + pub fn set_end(&mut self, value: u32) -> &mut Self { self.0.end_display_time = value as uint32_t; + + self } pub fn rects(&self) -> RectIter { diff --git a/src/filter/context/context.rs b/src/filter/context/context.rs index ba02db5..fefa4df 100644 --- a/src/filter/context/context.rs +++ b/src/filter/context/context.rs @@ -2,7 +2,7 @@ use std::marker::PhantomData; use ffi::*; use libc::c_void; -use ::{option, format, Error, ChannelLayout}; +use ::{option, format, ChannelLayout}; use super::{Source, Sink}; pub struct Context<'a> { @@ -38,20 +38,28 @@ impl<'a> Context<'a> { } } - pub fn set_pixel_format(&mut self, value: format::Pixel) -> Result<(), Error> { - option::Settable::set::(self, "pix_fmts", &value.into()) + pub fn set_pixel_format(&mut self, value: format::Pixel) -> &mut Self { + let _ = option::Settable::set::(self, "pix_fmts", &value.into()); + + self } - pub fn set_sample_format(&mut self, value: format::Sample) -> Result<(), Error> { - option::Settable::set::(self, "sample_fmts", &value.into()) + pub fn set_sample_format(&mut self, value: format::Sample) -> &mut Self { + let _ = option::Settable::set::(self, "sample_fmts", &value.into()); + + self } - pub fn set_sample_rate(&mut self, value: u32) -> Result<(), Error> { - option::Settable::set(self, "sample_rates", &(value as i64)) + pub fn set_sample_rate(&mut self, value: u32) -> &mut Self { + let _ = option::Settable::set(self, "sample_rates", &(value as i64)); + + self } - pub fn set_channel_layout(&mut self, value: ChannelLayout) -> Result<(), Error> { - option::Settable::set(self, "channel_layouts", &value.bits()) + pub fn set_channel_layout(&mut self, value: ChannelLayout) -> &mut Self { + let _ = option::Settable::set(self, "channel_layouts", &value.bits()); + + self } } diff --git a/src/filter/context/sink.rs b/src/filter/context/sink.rs index 1720413..3c21063 100644 --- a/src/filter/context/sink.rs +++ b/src/filter/context/sink.rs @@ -32,9 +32,11 @@ impl<'a> Sink<'a> { } } - pub fn set_frame_size(&mut self, value: u32) { + pub fn set_frame_size(&mut self, value: u32) -> &mut Self { unsafe { av_buffersink_set_frame_size(self.ctx.as_mut_ptr(), value); } + + self } } diff --git a/src/format/context/input.rs b/src/format/context/input.rs index fba7c19..b1b1bad 100644 --- a/src/format/context/input.rs +++ b/src/format/context/input.rs @@ -49,12 +49,6 @@ impl Input { } } - pub fn set_video_codec(&mut self, mut value: Codec) { - unsafe { - av_format_set_video_codec(self.as_mut_ptr(), value.as_mut_ptr()); - } - } - pub fn audio_codec(&self) -> Option { unsafe { let ptr = av_format_get_audio_codec(self.as_ptr()); @@ -68,12 +62,6 @@ impl Input { } } - pub fn set_audio_codec(&mut self, mut value: Codec) { - unsafe { - av_format_set_audio_codec(self.as_mut_ptr(), value.as_mut_ptr()); - } - } - pub fn subtitle_codec(&self) -> Option { unsafe { let ptr = av_format_get_subtitle_codec(self.as_ptr()); @@ -87,12 +75,6 @@ impl Input { } } - pub fn set_subtitle_codec(&mut self, mut value: Codec) { - unsafe { - av_format_set_subtitle_codec(self.as_mut_ptr(), value.as_mut_ptr()); - } - } - pub fn data_codec(&self) -> Option { unsafe { let ptr = av_format_get_data_codec(self.as_ptr()); @@ -106,12 +88,6 @@ impl Input { } } - pub fn set_data_codec(&mut self, mut value: Codec) { - unsafe { - av_format_set_data_codec(self.as_mut_ptr(), value.as_mut_ptr()); - } - } - pub fn probe_score(&self) -> i32 { unsafe { av_format_get_probe_score(self.as_ptr()) diff --git a/src/format/context/output.rs b/src/format/context/output.rs index dc1e4cc..f134341 100644 --- a/src/format/context/output.rs +++ b/src/format/context/output.rs @@ -83,10 +83,12 @@ impl Output { } } - pub fn set_metadata(&mut self, dictionary: Dictionary) { + pub fn set_metadata(&mut self, dictionary: Dictionary) -> &mut Self { unsafe { (*self.as_mut_ptr()).metadata = dictionary.disown(); } + + self } } diff --git a/src/format/stream/stream_mut.rs b/src/format/stream/stream_mut.rs index 4c98c19..0ba1642 100644 --- a/src/format/stream/stream_mut.rs +++ b/src/format/stream/stream_mut.rs @@ -29,16 +29,20 @@ impl<'a> StreamMut<'a> { } impl<'a> StreamMut<'a> { - pub fn set_time_base>(&mut self, value: R) { + pub fn set_time_base>(&mut self, value: R) -> &mut Self { unsafe { (*self.as_mut_ptr()).time_base = value.into().into(); } + + self } - pub fn set_frame_rate>(&mut self, value: R) { + pub fn set_frame_rate>(&mut self, value: R) -> &mut Self { unsafe { av_stream_set_r_frame_rate(self.as_mut_ptr(), value.into().into()); } + + self } } diff --git a/src/util/frame/audio.rs b/src/util/frame/audio.rs index 0875b63..039ae9e 100644 --- a/src/util/frame/audio.rs +++ b/src/util/frame/audio.rs @@ -19,9 +19,9 @@ impl Audio { #[inline] pub unsafe fn alloc(&mut self, format: format::Sample, samples: usize, layout: ChannelLayout) { - self.set_format(format); - self.set_samples(samples); - self.set_channel_layout(layout); + self.set_format(format) + .set_samples(samples) + .set_channel_layout(layout); av_frame_get_buffer(self.as_mut_ptr(), 0); } @@ -58,10 +58,12 @@ impl Audio { } #[inline] - pub fn set_format(&mut self, value: format::Sample) { + pub fn set_format(&mut self, value: format::Sample) -> &mut Self { unsafe { (*self.as_mut_ptr()).format = mem::transmute::(value.into()); } + + self } #[inline] @@ -72,10 +74,12 @@ impl Audio { } #[inline] - pub fn set_channel_layout(&mut self, value: ChannelLayout) { + pub fn set_channel_layout(&mut self, value: ChannelLayout) -> &mut Self { unsafe { av_frame_set_channel_layout(self.as_mut_ptr(), value.bits() as int64_t); } + + self } #[inline] @@ -86,10 +90,12 @@ impl Audio { } #[inline] - pub fn set_channels(&mut self, value: u16) { + pub fn set_channels(&mut self, value: u16) -> &mut Self { unsafe { av_frame_set_channels(self.as_mut_ptr(), value as c_int); } + + self } #[inline] @@ -100,10 +106,12 @@ impl Audio { } #[inline] - pub fn set_rate(&mut self, value: u32) { + pub fn set_rate(&mut self, value: u32) -> &mut Self { unsafe { av_frame_set_sample_rate(self.as_mut_ptr(), value as c_int); } + + self } #[inline] @@ -114,10 +122,12 @@ impl Audio { } #[inline] - pub fn set_samples(&mut self, value: usize) { + pub fn set_samples(&mut self, value: usize) -> &mut Self { unsafe { (*self.as_mut_ptr()).nb_samples = value as c_int; } + + self } #[inline] diff --git a/src/util/frame/mod.rs b/src/util/frame/mod.rs index 05bbf5b..9070425 100644 --- a/src/util/frame/mod.rs +++ b/src/util/frame/mod.rs @@ -85,10 +85,12 @@ impl Frame { } } - pub fn set_pts(&mut self, value: Option) { + pub fn set_pts(&mut self, value: Option) -> &mut Self { unsafe { (*self.as_mut_ptr()).pts = value.unwrap_or(AV_NOPTS_VALUE); } + + self } pub fn timestamp(&self) -> Option { @@ -118,10 +120,12 @@ impl Frame { } } - pub fn set_metadata(&mut self, value: Dictionary) { + pub fn set_metadata(&mut self, value: Dictionary) -> &mut Self { unsafe { av_frame_set_metadata(self.as_mut_ptr(), value.disown()); } + + self } pub fn side_data(&self, kind: side_data::Type) -> Option { diff --git a/src/util/frame/video.rs b/src/util/frame/video.rs index d4b5142..ad3bc5c 100644 --- a/src/util/frame/video.rs +++ b/src/util/frame/video.rs @@ -22,9 +22,9 @@ impl Video { #[inline] pub unsafe fn alloc(&mut self, format: format::Pixel, width: u32, height: u32) { - self.set_format(format); - self.set_width(width); - self.set_height(height); + self.set_format(format) + .set_width(width) + .set_height(height); av_frame_get_buffer(self.as_mut_ptr(), 32); } @@ -61,10 +61,12 @@ impl Video { } #[inline] - pub fn set_format(&mut self, value: format::Pixel) { + pub fn set_format(&mut self, value: format::Pixel) -> &mut Self { unsafe { (*self.as_mut_ptr()).format = mem::transmute::(value.into()); } + + self } #[inline] @@ -75,10 +77,12 @@ impl Video { } #[inline] - pub fn set_kind(&mut self, value: picture::Type) { + pub fn set_kind(&mut self, value: picture::Type) -> &mut Self { unsafe { (*self.as_mut_ptr()).pict_type = value.into(); } + + self } #[inline] @@ -110,10 +114,12 @@ impl Video { } #[inline] - pub fn set_width(&mut self, value: u32) { + pub fn set_width(&mut self, value: u32) -> &mut Self { unsafe { (*self.as_mut_ptr()).width = value as c_int; } + + self } #[inline] @@ -124,10 +130,12 @@ impl Video { } #[inline] - pub fn set_height(&mut self, value: u32) { + pub fn set_height(&mut self, value: u32) -> &mut Self { unsafe { (*self.as_mut_ptr()).height = value as c_int; } + + self } #[inline] @@ -138,10 +146,12 @@ impl Video { } #[inline] - pub fn set_color_space(&mut self, value: color::Space) { + pub fn set_color_space(&mut self, value: color::Space) -> &mut Self { unsafe { av_frame_set_colorspace(self.as_mut_ptr(), value.into()); } + + self } #[inline] @@ -152,10 +162,12 @@ impl Video { } #[inline] - pub fn set_color_range(&mut self, value: color::Range) { + pub fn set_color_range(&mut self, value: color::Range) -> &mut Self { unsafe { av_frame_set_color_range(self.as_mut_ptr(), value.into()); } + + self } #[inline] @@ -166,10 +178,12 @@ impl Video { } #[inline] - pub fn set_color_primaries(&mut self, value: color::Primaries) { + pub fn set_color_primaries(&mut self, value: color::Primaries) -> &mut Self { unsafe { (*self.as_mut_ptr()).color_primaries = value.into(); } + + self } #[inline] @@ -180,10 +194,12 @@ impl Video { } #[inline] - pub fn set_color_transfer_characteristic(&mut self, value: color::TransferCharacteristic) { + pub fn set_color_transfer_characteristic(&mut self, value: color::TransferCharacteristic) -> &mut Self { unsafe { (*self.as_mut_ptr()).color_trc = value.into(); } + + self } #[inline]