452 Commits

Author SHA1 Message Date
Zhiming Wang
c9c6031a53
Fix clippy::ptr_offset_with_cast 2020-07-26 01:01:21 +08:00
Zhiming Wang
73b66ea438
Fix clippy::redundant_field_names 2020-07-26 01:01:13 +08:00
Zhiming Wang
ceb1a7ea7c
Allow clippy::{missing_safety_doc, module_inception, too_many_arguments} 2020-07-26 01:00:54 +08:00
Zhiming Wang
6639f02b80
Fix filter::filter::PadIter to actually iterate
Bug caught by clippy:

  error: offset calculation on zero-sized value
    --> src/filter/filter.rs:98:33
     |
  98 |             let pad = Pad::wrap(self.ptr.offset(self.cur));
     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
     |
     = note: `#[deny(clippy::zst_offset)]` on by default
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zst_offset

The problem is that `AVFilterPad` is zero-sized:

  #[repr(C)]
  #[derive(Debug, Copy, Clone)]
  pub struct AVFilterPad {
      _unused: [u8; 0],
  }

which is in turn due to `AVFilterPad` being an opaque type in
`libavfilter/avfilter.h`:

  typedef struct AVFilterContext AVFilterContext;
  typedef struct AVFilterLink    AVFilterLink;
  typedef struct AVFilterPad     AVFilterPad;
  typedef struct AVFilterFormats AVFilterFormats;

Doing pointer arithmetic on an opaque (incomplete) type doesn't work. We have
to use the proper FFI calls to obtain info on individual pads. The API has to
be tweaked a bit; hopefully it doesn't break user programs (if it does it
should only break bugged ones...).

Fixes #20.
2020-07-25 23:34:27 +08:00
Tim Hellhake
65be233a12
Add Raspberry Pi compatibility
Signed-off-by: Zhiming Wang <i@zhimingwang.org>
2020-07-24 22:18:58 +08:00
Zhiming Wang
d4c64458db
Fix ARM compatibility
Tested to successfully compile in an arm64v8/debian:buster container (running
on an x64 box through qemu-aarch64). Should work on armhf too, though haven't
tested yet.
2020-07-24 20:27:58 +08:00
Zhiming Wang
ba2caf9d13
software::scaling::context::run: fix srcSliceH argument
Output height was erroneously used as the srcSliceH argument to
sws_scale, causing the output frame to be partially blank when scaling
down or outright erroring when scaling up. See documentation of sws_scale:

https://www.ffmpeg.org/doxygen/4.0/group__libsws.html#gae531c9754c9205d90ad6800015046d74

Fixes #18.
2020-07-23 10:01:19 +08:00
Zhiming Wang
15c87a7837
Add FFmpeg 4.3 specific code 2020-06-17 01:51:38 +08:00
Zhiming Wang
036c0e5b42
Fix duplicate enum variant issues for FFmpeg 3.4 2020-06-11 23:18:47 +08:00
Zhiming Wang
307f52c002
Reformat code with latest cargo fmt 2020-06-02 17:54:31 +08:00
Zhiming Wang
fcca68ae5e
Add FFmpeg 4.2 specific code 2020-06-01 14:42:39 +08:00
Zhiming Wang
a69a457e3a
Add FFmpeg 4.1 specific code 2020-06-01 14:15:33 +08:00
Zhiming Wang
6220b88ef2
util/format/pixel: drop deprecated error::Error::description 2020-06-01 13:39:59 +08:00
Zhiming Wang
506f66ac51
Fix issues related to duplicate enum variants
C enums allow duplicate variants, but Rust enums don't. At some point bindgen
switched to generating duplicate variants as associated constants instead of
module-level constants, so use SomeEnum::* broke. Here we switch to associated
constants in the native API as well.
2020-06-01 13:36:50 +08:00
Zhiming Wang
1cd6d0499b
Switch to my fork of ffmpeg-sys 2020-06-01 13:17:08 +08:00
Zhiming Wang
6644a91da4
Update bitflags to 1.2 and fix namespacing 2020-06-01 13:06:34 +08:00
Zhiming Wang
3a8f366f60
software/scaling/context: fix mutability 2020-06-01 13:02:53 +08:00
Zhiming Wang
6c2d33fc07
Drop outdated lints 2020-05-31 14:16:23 +08:00
Zhiming Wang
13a2354a2c
Fix bare_trait_objects deprecation 2020-05-31 14:16:23 +08:00
Zhiming Wang
d3c10e4068
Fix libc::uint8_t deprecation 2020-05-31 14:16:23 +08:00
Zhiming Wang
cd6c9d972b
Fix std::error::Error::description deprecation 2020-05-31 14:16:23 +08:00
Zhiming Wang
587ec66592
Fix libc::int64_t deprecation 2020-05-31 13:34:24 +08:00
Zhiming Wang
3056975836
Fix libc::uint32_t deprecation 2020-05-31 13:28:14 +08:00
Erin Moon
a7ea073619
scaling and resampling contexts: fix null checks
dc6ace91ec

Fixes #1.
2019-02-16 21:20:56 +08:00
Zhiming Wang
a7eee9142f
Revert 8199541 and guard with not(ffmpeg4) 2018-09-19 17:08:42 -04:00
Zhiming Wang
0e05c0bb29
Mark new macros introduced in 2c5abbf as ffmpeg4 2018-09-19 16:54:16 -04:00
Zhiming Wang
4109fa5686
format::context::Context: add .bit_rate() method 2018-09-17 01:18:48 -04:00
Zhiming Wang
c5525851d4
util::color:*: use pointer .as_ref() 2018-09-14 21:49:26 -04:00
Zhiming Wang
2d3a34f74d
uril::color::*: .name() returns None if unspecified
pixdesc "helpfully" returns "unknown", which renders our Option pointless.
2018-09-14 21:30:50 -04:00
Zhiming Wang
10d3b75342
util::color::space::Space: fix possible segfault with .name()
av_get_colorspace_name could return NULL.

Also, switch from av_get_colorspace_name (frame.c) to
av_color_space_name (pixdesc.c), which is more comprehensive.
2018-09-14 21:25:50 -04:00
Zhiming Wang
bd35f013f8
util::color: implement .name() for {Primaries, Range, TransferCharacteristic} 2018-09-14 21:22:47 -04:00
Zhiming Wang
e9870589b6
filter/mod: fix mutability 2018-09-10 16:22:28 -04:00
Zhiming Wang
2c5abbfe33
Add missing macros (FFmpeg 4.0.2) 2018-09-10 16:22:16 -04:00
Zhiming Wang
37d47c0d6e
Fix AV_PIX_FMT_XVMC situation 2018-09-10 15:08:52 -04:00
Zhiming Wang
8199541f09
Drop obselete macros (obselete wrt FFmpeg 4.0) 2018-09-10 14:39:28 -04:00
Tadas Barzdžius
67b7f13305 format/stream: add set_metadata function to StreamMut 2018-04-10 16:24:21 +02:00
Tadas Barzdžius
0bcd4550b8 *: format code with rustfmt and fix clippy suggestions
* Add avformat_close_input call to clean up AVFormantContext
* Format code with rustfmt
* Fix clippy lint double_parens
* Fix clippy lint deref_addrof
* Fix clippy lint identity_conversion
* Fix clippy lint match_ref_pats
* Fix clippy lint cast_lossless
* Fix clippy lint cmp_null
* Fix clippy lint clone_on_ref_ptr
* Fix clippy lint map_clone
* Fix clippy lint needless_borrow
* Fix clippy lint needless_pass_by_value
* Fix clippy lints for examples
* Fix clippy lint unused_io_amount
* Fix clippy lint new_without_default
* Ignore inline_always clippy lint
* Add vim temp files to .gitignore
2018-04-10 16:06:42 +02:00
Tadas Barzdžius
20c7ef399a format/stream: add id accessor 2017-12-06 16:13:46 +01:00
Adam Sypniewski
94ebdf143c *: add the newest enum values from ffmpeg-sys 2017-11-29 20:49:54 +01:00
fengalin
28b7a82ac1 format: add support for Chapters
Read chapters from an input context and add chapters to an output context.

Note: unlike avformat_new_stream, the equivalent function for chapter is private:
avpriv_new_chapter (part of libavformat/internal.h). I couldn't find any other
solution but re-implementing it in format::context::output::add_chapter.
2017-09-23 20:42:51 +02:00
Tadas Barzdžius
7d980a693e *: fix warnings
- Don't use deprecated function for packet dropping
- Fix compiler warning about values, which do not need to be mutable
2017-09-19 14:36:35 +02:00
Tadas Barzdžius
052d342baf format: fix segmentation fault
Double free error.

On failure avformat_open_input frees AVFormatContext. I had it wrapped with context::Input::wrap. On avformat_open_input failure it would free AVFormatContext and Drop implementation for context::Input would try to call avformat_close_input on same AVFormatContext resulting in segmentation fault.
2017-08-21 19:38:36 +02:00
Tadas Barzdžius
5afe774f40 crate: update bitflags 2017-07-10 11:35:49 +02:00
Victor Nivet
206ccd4e5a format/stream: add stream metadata 2017-07-08 17:07:46 +02:00
Tadas Barzdzius
991bbc24e8 format: add interrupt callback support 2017-07-08 17:05:44 +02:00
Tadas Barzdžius
5ac0527bdc *: use latest ffmpeg-sys using bindgen
* Update bindings to newest ffmpeg version for new ffmpeg-sys, which is mostly generated by bindgen
* Bring back removed feature flags
* Fix whitespace formating
* Remove prepended enum names to enum variants
* Remove unneeded allows
2017-07-08 17:00:27 +02:00
Ivan Molodetskikh
8cf47c7ec6 format/pixel: implement FromStr for Pixel 2017-06-28 10:53:24 +02:00
Ivan Molodetskikh
8b4693d04c frame/video: get linesize through self.stride() 2017-06-22 22:16:46 +02:00
Ivan Molodetskikh
27d1e7a3fa frame/video: add plane_width() 2017-06-22 22:16:46 +02:00
Ivan Molodetskikh
403407bf2c format/pixel: add Descriptor::{name, log2_chroma_w}() 2017-06-22 22:16:46 +02:00