Commit Graph

515 Commits

Author SHA1 Message Date
6a7a69e1e7 util::error: drop reserved errnos that are not available on Windows
Signed-off-by: Zhiming Wang <i@zhimingwang.org>
2020-08-12 10:30:11 +08:00
545180cad0 format: context::{input,output}::dump: fix url/path printing
Previously the unwrapped CString did not have long enough lifetime to be
printed; not sure why there's no compiler warning.
2020-08-11 00:30:58 +08:00
f024eaea37 examples/transcode-x264: fix typo in parse_opts
Unfortunate typo when fixing a clippy warning about using &str instead of
char...
2020-08-11 00:08:05 +08:00
18058e9a8f build.yml: drop ffmpegxy feature flags and build/test/lint examples 2020-08-10 22:26:34 +08:00
0a03e745b4 examples: add transcode-x264.rs 2020-08-10 22:09:29 +08:00
e393cf0145 examples: add remux.rs 2020-08-10 21:58:11 +08:00
48b5751752 lib: export util::log 2020-08-10 21:57:55 +08:00
b139fd8d70 Remove examples/fps-filter.rs which was accidentally committed 2020-08-10 13:46:38 +08:00
2ff14d2b1b Remove .travis.yml 2020-08-09 14:29:47 +08:00
b79c479b88 CHANGELOG: update for v4.3.5 release 2020-08-09 14:28:28 +08:00
6aef48e7e9 Add release.yml to create release on tag push 2020-08-09 14:26:25 +08:00
bbbc9d5649 README: point to CHANGELOG.md 2020-08-09 14:07:02 +08:00
d67ca8ce51 crate: bump ffmpeg-sys-next dep to 4.3.4 2020-08-09 14:02:51 +08:00
fe6a9b3324 Add CHANGELOG.md 2020-08-09 13:59:18 +08:00
d07530267e format: mark Context::nb_streams as public 2020-08-09 13:58:48 +08:00
1849a07aa6 lib: export util::error 2020-08-09 13:58:24 +08:00
c9d223e8fe util::error: correct comment regarding errno reexports 2020-08-09 13:57:43 +08:00
81e142c6b7 util: introduce new Error variant Error:Other { errno }
Do not hide all the POSIX error codes behind a useless Error::Unknown.

Fixes #24.
2020-08-08 23:16:09 +08:00
5affb85148 codec: fix signature of Packet::write_interleaved
av_interleaved_write_frame never returns 1, so bool makes no sense:
https://github.com/FFmpeg/FFmpeg/blob/n4.3.1/libavformat/avformat.h#L2592-L2635

Fixes #25.
2020-08-08 22:48:01 +08:00
f15408ccef crate: drop ffmpeg43 from default features
Following the deprecation plan (now that master branch has been bumped to
v4.4).
2020-08-08 01:33:37 +08:00
61024149b5 README: explain versioning differences from semver 2020-08-08 01:24:01 +08:00
6f44fb79fd codec: deprecate encoder's encode/flush and decoder's decode 2020-08-08 01:16:44 +08:00
55c8b5fa02 Bump to v4.4.0-dev to indicate breakage 2020-08-08 01:04:09 +08:00
10a1da9486 examples/avi-to-ppm: rename to dump-frames
The old name isn't fitting since the program isn't specific to AVI at all...
2020-08-08 00:58:18 +08:00
93b7f58ebc examples/avi-to-ppm: reimplement with modern API
Avoid decoder.decode.
2020-08-08 00:57:44 +08:00
e1cabad5c9 examples/transcode-audio: reimplement with modern API
Avoid encoder.encode and decoder.decode.
2020-08-08 00:55:24 +08:00
07fe207ac2 codec: implement DerefMut for encoder::Audio and encoder::Subtitle 2020-08-08 00:38:09 +08:00
363001febe codec: expose modern send/receive packet/frame APIs
avcodec_encode_video2()/avcodec_decode_video2/avcodec_encode_audio2()/avcodec_decode_audio4()
have been deprecated since FFmpeg 3.1, with modern
avcodec_send_packet()/avcodec_receive_frame()/avcodec_send_frame()/avcodec_receive_packet()
as replacements.

This commit adds send_packet(), send_eof() and receive_frame() to
decoder::Opened; send_frame(), send_eof() and receive_packet() to
encoder::Encoder to expose these modern APIs.
2020-08-08 00:37:54 +08:00
f88f1a981c Merge branch 'kornelski/miscfixes' into master
Closes #26.
2020-08-07 23:01:23 +08:00
516f8069f6 Packet setters 2020-08-07 22:43:53 +08:00
50e1ccaca4 Don't panic on OOM 2020-08-07 22:43:53 +08:00
f0903fb69b Allow null codec 2020-08-07 22:43:52 +08:00
f73dca70b4 Debug for Context 2020-08-07 22:43:52 +08:00
aa8df7d0d2 DRY nb_streams 2020-08-07 22:42:17 +08:00
53570d13d7 Add Debug for dictionary 2020-08-07 22:42:17 +08:00
b31b5507fb Add Send trait to resampling::Context 2020-08-07 22:31:11 +08:00
f1ccd4e696 filter::Source: add close method
Expose av_buffersrc_close.
2020-08-03 18:49:14 +08:00
d3270133be Add log::util module 2020-08-03 18:46:49 +08:00
75b8fbbcfa Bump to v4.3.4 2020-08-02 11:53:32 +08:00
131c2c103b README: add documentation links 2020-08-02 11:52:57 +08:00
b28e852eb0 Implement automatic FFmpeg version detection
Based on ffmpeg-sys-next 4.3.2.
2020-08-02 11:44:13 +08:00
a5a897f42f build.yml: clippy: turn warnings into errors
Otherwise we'll never know.
2020-08-01 21:59:27 +08:00
0a029316af Bump to v4.3.3 2020-07-26 13:01:32 +08:00
26b29b30b1 Add CI build on GitHub Actions 2020-07-26 12:52:50 +08:00
1d0d42d81a filter: test_paditer: register_all before testing the overlay filter
avfilter_register_all required on FFmpeg <4 before avfilter_get_by_name can
find the builtin filters.
2020-07-26 12:42:57 +08:00
e947bc5606 Fix clippy::transmute_ptr_to_ptr 2020-07-26 12:26:20 +08:00
c9c6031a53 Fix clippy::ptr_offset_with_cast 2020-07-26 01:01:21 +08:00
73b66ea438 Fix clippy::redundant_field_names 2020-07-26 01:01:13 +08:00
ceb1a7ea7c Allow clippy::{missing_safety_doc, module_inception, too_many_arguments} 2020-07-26 01:00:54 +08:00
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