* ci: Remove unnecessary pkgconfig patches
* ci: Install libc++ on Linux
This is necessary for the FFmpeg binaries.
It's currently included in 22.04, but not 24.04, so this is futureproofing.
* Refactor format::Input
* Refactor format::Output
* Remove av_register_* API
This was deprecated in 4.0 (2018) and without it,
we never need a mutable pointer to AVInputFormat/AVOutputFormat
* Clean up FF_API features
Use (for avcodec):
`git log -n1 -p -SFF_API_* -- libavcodec/version_major.h`
to find the last change regarding the relevant FF_API feature.
Removed all flags that are <4.0.
Added comments for the remaining flags
* Remove features gated behind old FF_API flags
* Add new build-lib features
* Update CI to use 7.1
jrottenberg/ffmpeg does not have 7.1 yet
* Add libavcodec version for 7.1
* Add FF_API flags for 7.1
* Update crate versions, bump MSRV to 1.65
* Add new audio channel masks
* Add new AVColorSpace variants
* Add new AVFrameSideDataType variants
* Add new AVCodecID variants
* Add new AVPacketSideDataType variants
* sys: Add check-cfg statements
* Add rustc-check-cfg in main crate
The sys build script sets an environment variable for every
feature that needs to be added to rustc-check-cfg.
* Implement option::Type as bitfield struct
This type is no longer strictly an enum in the
Rust sense because the underlying AVOptionType
is now also a bitfield/the AV_OPT_TYPE* consts
now include AV_OPT_TYPE_FLAG_ARRAY, which is a
bitflag.
* Add new MuxerIter/DemuxerIter for 4.0+
* Add Default impls for MuxerIter/DemuxerIter
* Add tests for MuxerIter/DemuxerIter
* Use mutable reference over addr_of_mut!
* Don't dereference long_name if nullptr
This happens if FFmpeg is configured with `--enable-small`
* Add FFmpeg version matrix to macOS CI job
* Add macOS PKG_CONFIG_PATH
* Change schedule to run CI builds weekly
* Fix package installation dir
Homebrew apparently always symlinks to /opt/homebrew, so this
one is reliable
* Move dependencies to top
* Add LICENSE symlink to sys crate, update Cargo.toml
* sys: Move features around a bit
* Move features around a bit
* Replace package `exclude` with `include` list
* Remove Cargo.lock.MSRV from crate package
* 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
* Move fetch & early return into fn build
* Pass ffmpeg_version as parameter
* Pass source_dir as parameter
* Create rustc_link_extralibs
* Use local variable instead of search()
* Pass OUT_DIR to the build function
* Return install_dir from build function
* Parametrize ffmpeg_major_version
* Remove duplicate import
* Rename `is_feature` to `optional`
* Replace Library::new with two separate functions
* Add AVHeader abstraction
* Add Library::enabled helper function
* Replace tag/error macros with const fns
* Remove c_int -> c_int cast
These should always use the same type alias
* Remove duplicate av_strerror definition
* Document breaking change