Commit Graph

196 Commits

Author SHA1 Message Date
d043a323d0 Add more impls 2024-05-06 02:20:01 -04:00
fd2d71c92b Support FFmpeg 7.0 (#48)
* sys: Run cargo fmt

* sys: Add new channel layout consts

* sys: Update build script for 7.0

- Add new FF_API flags
- Update version_check_info range
- Add ffmpeg_7_0 feature entry

* sys: Update non-exhaustive match statement

* Update enums

* Mark old APIs as removed with 7.0

* Make Audio frame work with 7.0

The .unwrap() in clone() is a bit wonky

* Add API for swr_alloc_set_opts2

* Use AVFrame::duration field in 7.0+

* Include 7.0 in CI runs

* Add fn ChanneLayoutIter::best

* Update examples for new API

* Add/update Context setter for ch layout
2024-04-29 21:38:37 -04:00
3206eedcf0 Add ChannelLayout API (#38)
* Create channel_layout directory

* Rename ChannelLayout -> ChannelLayoutMask

* Add enum Channel (<-> AVChannel)

* Add struct ChannelCustom (<-> AVChannelCustom)

* Add enum ChannelOrder (<-> AVChannelOrder)

* Add struct ChannelLayout

- Smart copy-on-write pointer to AVChannelLayout
- idiomatic Rust API wrapping around FFmpeg APIs
- no Ambisonic support (yet)
- consts will need to be manually updated

* Add ChannelLayoutIter (iterator over all standard layouts)

* Add codec/Audio::ch_layouts

* Add ch_layout API to Audio-related structs
2024-04-23 08:59:15 -04:00
7a8643f2cc Migrate crates to Rust edition 2021 (#24)
* Migrate ffmpeg-sys to Edition 2021

* Migrate ffmpeg to Edition 2021

* Remove now-redundant imports

* Reorder imports after edition migration
2024-04-06 21:31:36 -04:00
f269020af8 Add missing enum variants for FFmpeg 6.1 (#16) 2024-04-03 12:27:13 -04:00
30aabf9033 Add FFmpeg 6.1 support (#14)
Co-authored-by: Rafie <simulping@protonmail.com>
2024-04-02 08:47:59 -04:00
c6dd54003e Support ffmpeg 6.0
Closes #6
2023-03-07 13:21:43 -05:00
ed9703b739 Fix an issue where compilation may fail on some non-x64 platforms 2023-02-02 13:29:08 -05:00
fe89e158c0 Add serialize support for enums 2023-01-24 02:38:11 -05:00
cff28ba207 Fix things from renaming and clippy 2023-01-23 10:22:10 -05:00
92a8c6a9d8 add feature non-exhaustive-enums 2023-01-23 09:53:56 -05:00
28c356dd98 add wildcard branches for matches on enums 2023-01-23 09:53:52 -05:00
b6b2311fcf Bump to 5.1.1 2022-08-08 18:37:14 +02:00
22ad8b9598 Bump version to use ffmpeg 5 2022-02-11 17:58:42 +01:00
f559e13afc Fix linting errors 2021-10-02 22:51:32 +02:00
19ab5f67ad Fix linting errors 2021-07-07 16:52:30 +02:00
9c7ecb9b53 Initial ffmpeg 4.4 support 2021-05-06 17:08:45 -04:00
6f0a14ee8b codec: fix codec description potential null ptr issue
Codecs may not have .long_name initialized.

Issue raised by Pilyushkin in #34.
2020-10-04 11:37:59 +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
6f44fb79fd codec: deprecate encoder's encode/flush and decoder's decode 2020-08-08 01:16:44 +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
516f8069f6 Packet setters 2020-08-07 22:43:53 +08:00
b28e852eb0 Implement automatic FFmpeg version detection
Based on ffmpeg-sys-next 4.3.2.
2020-08-02 11:44:13 +08:00
73b66ea438 Fix clippy::redundant_field_names 2020-07-26 01:01:13 +08:00
15c87a7837 Add FFmpeg 4.3 specific code 2020-06-17 01:51:38 +08:00
036c0e5b42 Fix duplicate enum variant issues for FFmpeg 3.4 2020-06-11 23:18:47 +08:00
307f52c002 Reformat code with latest cargo fmt 2020-06-02 17:54:31 +08:00
fcca68ae5e Add FFmpeg 4.2 specific code 2020-06-01 14:42:39 +08:00
a69a457e3a Add FFmpeg 4.1 specific code 2020-06-01 14:15:33 +08:00
6644a91da4 Update bitflags to 1.2 and fix namespacing 2020-06-01 13:06:34 +08:00
13a2354a2c Fix bare_trait_objects deprecation 2020-05-31 14:16:23 +08:00
587ec66592 Fix libc::int64_t deprecation 2020-05-31 13:34:24 +08:00
3056975836 Fix libc::uint32_t deprecation 2020-05-31 13:28:14 +08:00
a7eee9142f Revert 8199541 and guard with not(ffmpeg4) 2018-09-19 17:08:42 -04:00
0e05c0bb29 Mark new macros introduced in 2c5abbf as ffmpeg4 2018-09-19 16:54:16 -04:00
2c5abbfe33 Add missing macros (FFmpeg 4.0.2) 2018-09-10 16:22:16 -04:00
8199541f09 Drop obselete macros (obselete wrt FFmpeg 4.0) 2018-09-10 14:39:28 -04:00
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
94ebdf143c *: add the newest enum values from ffmpeg-sys 2017-11-29 20:49:54 +01:00
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
5afe774f40 crate: update bitflags 2017-07-10 11:35:49 +02:00
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
9e933fa4fb codec/encoder/video: add colorspace and color_range accessors 2017-06-14 13:01:59 +02:00
meh
b48521108e *: update dependencies 2017-02-19 01:45:05 +01:00
edb6d91f59 codec/context: more Into 2016-12-03 01:44:56 +01:00
8609619a5d codec: impl AsMut for all Context wrappers 2016-12-03 01:43:30 +01:00
4df56b516f codec/parameters: impl AsRef for all codec::Context wrappers 2016-12-03 01:43:23 +01:00
36ac2513c1 codec/parameters: make api more flexible and consistent 2016-12-03 01:43:21 +01:00
f1ce26a137 codec/parameters: add medium and id methods 2016-12-03 01:42:40 +01:00