frame/video: change some inline attributes
This commit is contained in:
parent
61b2e5b81b
commit
7dc9858ee0
@ -15,10 +15,12 @@ use super::Frame;
|
|||||||
pub struct Video(Frame);
|
pub struct Video(Frame);
|
||||||
|
|
||||||
impl Video {
|
impl Video {
|
||||||
|
#[inline(always)]
|
||||||
pub unsafe fn wrap(ptr: *mut AVFrame) -> Self {
|
pub unsafe fn wrap(ptr: *mut AVFrame) -> Self {
|
||||||
Video(Frame::wrap(ptr))
|
Video(Frame::wrap(ptr))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub unsafe fn alloc(&mut self, format: format::Pixel, width: u32, height: u32) {
|
pub unsafe fn alloc(&mut self, format: format::Pixel, width: u32, height: u32) {
|
||||||
self.set_format(format);
|
self.set_format(format);
|
||||||
self.set_width(width);
|
self.set_width(width);
|
||||||
@ -29,12 +31,14 @@ impl Video {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Video {
|
impl Video {
|
||||||
|
#[inline(always)]
|
||||||
pub fn empty() -> Self {
|
pub fn empty() -> Self {
|
||||||
unsafe {
|
unsafe {
|
||||||
Video(Frame::empty())
|
Video(Frame::empty())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline(always)]
|
||||||
pub fn new(format: format::Pixel, width: u32, height: u32) -> Self {
|
pub fn new(format: format::Pixel, width: u32, height: u32) -> Self {
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut frame = Video::empty();
|
let mut frame = Video::empty();
|
||||||
@ -44,6 +48,7 @@ impl Video {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn format(&self) -> format::Pixel {
|
pub fn format(&self) -> format::Pixel {
|
||||||
unsafe {
|
unsafe {
|
||||||
if (*self.as_ptr()).format == -1 {
|
if (*self.as_ptr()).format == -1 {
|
||||||
@ -55,132 +60,154 @@ impl Video {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn set_format(&mut self, value: format::Pixel) {
|
pub fn set_format(&mut self, value: format::Pixel) {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_mut_ptr()).format = mem::transmute::<AVPixelFormat, c_int>(value.into());
|
(*self.as_mut_ptr()).format = mem::transmute::<AVPixelFormat, c_int>(value.into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn kind(&self) -> picture::Type {
|
pub fn kind(&self) -> picture::Type {
|
||||||
unsafe {
|
unsafe {
|
||||||
picture::Type::from((*self.as_ptr()).pict_type)
|
picture::Type::from((*self.as_ptr()).pict_type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_interlaced(&self) -> bool {
|
pub fn is_interlaced(&self) -> bool {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_ptr()).interlaced_frame != 0
|
(*self.as_ptr()).interlaced_frame != 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn is_top_first(&self) -> bool {
|
pub fn is_top_first(&self) -> bool {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_ptr()).top_field_first != 0
|
(*self.as_ptr()).top_field_first != 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn has_palette_changed(&self) -> bool {
|
pub fn has_palette_changed(&self) -> bool {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_ptr()).palette_has_changed != 0
|
(*self.as_ptr()).palette_has_changed != 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn width(&self) -> u32 {
|
pub fn width(&self) -> u32 {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_ptr()).width as u32
|
(*self.as_ptr()).width as u32
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn set_width(&mut self, value: u32) {
|
pub fn set_width(&mut self, value: u32) {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_mut_ptr()).width = value as c_int;
|
(*self.as_mut_ptr()).width = value as c_int;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn height(&self) -> u32 {
|
pub fn height(&self) -> u32 {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_ptr()).height as u32
|
(*self.as_ptr()).height as u32
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn set_height(&mut self, value: u32) {
|
pub fn set_height(&mut self, value: u32) {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_mut_ptr()).height = value as c_int;
|
(*self.as_mut_ptr()).height = value as c_int;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn color_space(&self) -> color::Space {
|
pub fn color_space(&self) -> color::Space {
|
||||||
unsafe {
|
unsafe {
|
||||||
color::Space::from(av_frame_get_colorspace(self.as_ptr()))
|
color::Space::from(av_frame_get_colorspace(self.as_ptr()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn set_color_space(&mut self, value: color::Space) {
|
pub fn set_color_space(&mut self, value: color::Space) {
|
||||||
unsafe {
|
unsafe {
|
||||||
av_frame_set_colorspace(self.as_mut_ptr(), value.into());
|
av_frame_set_colorspace(self.as_mut_ptr(), value.into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn color_range(&self) -> color::Range {
|
pub fn color_range(&self) -> color::Range {
|
||||||
unsafe {
|
unsafe {
|
||||||
color::Range::from(av_frame_get_color_range(self.as_ptr()))
|
color::Range::from(av_frame_get_color_range(self.as_ptr()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn set_color_range(&mut self, value: color::Range) {
|
pub fn set_color_range(&mut self, value: color::Range) {
|
||||||
unsafe {
|
unsafe {
|
||||||
av_frame_set_color_range(self.as_mut_ptr(), value.into());
|
av_frame_set_color_range(self.as_mut_ptr(), value.into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn color_primaries(&self) -> color::Primaries {
|
pub fn color_primaries(&self) -> color::Primaries {
|
||||||
unsafe {
|
unsafe {
|
||||||
color::Primaries::from((*self.as_ptr()).color_primaries)
|
color::Primaries::from((*self.as_ptr()).color_primaries)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn set_color_primaries(&mut self, value: color::Primaries) {
|
pub fn set_color_primaries(&mut self, value: color::Primaries) {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_mut_ptr()).color_primaries = value.into();
|
(*self.as_mut_ptr()).color_primaries = value.into();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn color_transfer_characteristic(&self) -> color::TransferCharacteristic {
|
pub fn color_transfer_characteristic(&self) -> color::TransferCharacteristic {
|
||||||
unsafe {
|
unsafe {
|
||||||
color::TransferCharacteristic::from((*self.as_ptr()).color_trc)
|
color::TransferCharacteristic::from((*self.as_ptr()).color_trc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn set_color_transfer_characteristic(&mut self, value: color::TransferCharacteristic) {
|
pub fn set_color_transfer_characteristic(&mut self, value: color::TransferCharacteristic) {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_mut_ptr()).color_trc = value.into();
|
(*self.as_mut_ptr()).color_trc = value.into();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn chroma_location(&self) -> chroma::Location {
|
pub fn chroma_location(&self) -> chroma::Location {
|
||||||
unsafe {
|
unsafe {
|
||||||
chroma::Location::from((*self.as_ptr()).chroma_location)
|
chroma::Location::from((*self.as_ptr()).chroma_location)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn aspect_ratio(&self) -> Rational {
|
pub fn aspect_ratio(&self) -> Rational {
|
||||||
unsafe {
|
unsafe {
|
||||||
Rational::from((*self.as_ptr()).sample_aspect_ratio)
|
Rational::from((*self.as_ptr()).sample_aspect_ratio)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn coded_number(&self) -> usize {
|
pub fn coded_number(&self) -> usize {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_ptr()).coded_picture_number as usize
|
(*self.as_ptr()).coded_picture_number as usize
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn display_number(&self) -> usize {
|
pub fn display_number(&self) -> usize {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_ptr()).display_picture_number as usize
|
(*self.as_ptr()).display_picture_number as usize
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn repeat(&self) -> f64 {
|
pub fn repeat(&self) -> f64 {
|
||||||
unsafe {
|
unsafe {
|
||||||
(*self.as_ptr()).repeat_pict as f64
|
(*self.as_ptr()).repeat_pict as f64
|
||||||
@ -199,6 +226,7 @@ impl Video {
|
|||||||
8
|
8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn plane<T: Component>(&self, index: usize) -> &[T] {
|
pub fn plane<T: Component>(&self, index: usize) -> &[T] {
|
||||||
if index >= self.planes() {
|
if index >= self.planes() {
|
||||||
panic!("out of bounds");
|
panic!("out of bounds");
|
||||||
@ -215,6 +243,7 @@ impl Video {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
pub fn plane_mut<T: Component>(&mut self, index: usize) -> &mut[T] {
|
pub fn plane_mut<T: Component>(&mut self, index: usize) -> &mut[T] {
|
||||||
if index >= self.planes() {
|
if index >= self.planes() {
|
||||||
panic!("out of bounds");
|
panic!("out of bounds");
|
||||||
@ -296,6 +325,7 @@ pub unsafe trait Component {
|
|||||||
|
|
||||||
#[cfg(feature = "image")]
|
#[cfg(feature = "image")]
|
||||||
unsafe impl Component for ::image::Luma<u8> {
|
unsafe impl Component for ::image::Luma<u8> {
|
||||||
|
#[inline(always)]
|
||||||
fn is_valid(format: format::Pixel) -> bool {
|
fn is_valid(format: format::Pixel) -> bool {
|
||||||
format == format::Pixel::GRAY8
|
format == format::Pixel::GRAY8
|
||||||
}
|
}
|
||||||
@ -303,6 +333,7 @@ unsafe impl Component for ::image::Luma<u8> {
|
|||||||
|
|
||||||
#[cfg(feature = "image")]
|
#[cfg(feature = "image")]
|
||||||
unsafe impl Component for ::image::Rgb<u8> {
|
unsafe impl Component for ::image::Rgb<u8> {
|
||||||
|
#[inline(always)]
|
||||||
fn is_valid(format: format::Pixel) -> bool {
|
fn is_valid(format: format::Pixel) -> bool {
|
||||||
format == format::Pixel::RGB24
|
format == format::Pixel::RGB24
|
||||||
}
|
}
|
||||||
@ -310,24 +341,28 @@ unsafe impl Component for ::image::Rgb<u8> {
|
|||||||
|
|
||||||
#[cfg(feature = "image")]
|
#[cfg(feature = "image")]
|
||||||
unsafe impl Component for ::image::Rgba<u8> {
|
unsafe impl Component for ::image::Rgba<u8> {
|
||||||
|
#[inline(always)]
|
||||||
fn is_valid(format: format::Pixel) -> bool {
|
fn is_valid(format: format::Pixel) -> bool {
|
||||||
format == format::Pixel::RGBA
|
format == format::Pixel::RGBA
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl Component for [u8; 3] {
|
unsafe impl Component for [u8; 3] {
|
||||||
|
#[inline(always)]
|
||||||
fn is_valid(format: format::Pixel) -> bool {
|
fn is_valid(format: format::Pixel) -> bool {
|
||||||
format == format::Pixel::RGB24 || format == format::Pixel::BGR24
|
format == format::Pixel::RGB24 || format == format::Pixel::BGR24
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl Component for (u8, u8, u8) {
|
unsafe impl Component for (u8, u8, u8) {
|
||||||
|
#[inline(always)]
|
||||||
fn is_valid(format: format::Pixel) -> bool {
|
fn is_valid(format: format::Pixel) -> bool {
|
||||||
format == format::Pixel::RGB24 || format == format::Pixel::BGR24
|
format == format::Pixel::RGB24 || format == format::Pixel::BGR24
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl Component for [u8; 4] {
|
unsafe impl Component for [u8; 4] {
|
||||||
|
#[inline(always)]
|
||||||
fn is_valid(format: format::Pixel) -> bool {
|
fn is_valid(format: format::Pixel) -> bool {
|
||||||
format == format::Pixel::RGBA || format == format::Pixel::BGRA ||
|
format == format::Pixel::RGBA || format == format::Pixel::BGRA ||
|
||||||
format == format::Pixel::ARGB || format == format::Pixel::ABGR ||
|
format == format::Pixel::ARGB || format == format::Pixel::ABGR ||
|
||||||
@ -337,6 +372,7 @@ unsafe impl Component for [u8; 4] {
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsafe impl Component for (u8, u8, u8, u8) {
|
unsafe impl Component for (u8, u8, u8, u8) {
|
||||||
|
#[inline(always)]
|
||||||
fn is_valid(format: format::Pixel) -> bool {
|
fn is_valid(format: format::Pixel) -> bool {
|
||||||
format == format::Pixel::RGBA || format == format::Pixel::BGRA ||
|
format == format::Pixel::RGBA || format == format::Pixel::BGRA ||
|
||||||
format == format::Pixel::ARGB || format == format::Pixel::ABGR ||
|
format == format::Pixel::ARGB || format == format::Pixel::ABGR ||
|
||||||
|
Loading…
x
Reference in New Issue
Block a user