* Action: Add rust caching to test
* Actions: Use github action to cache docker
* Optimize Dockerfile to allow for caching
* Docker: Use cargo chef for caching
Co-authored-by: Luigi311 <luigi311.lg@gmail.com>
* Add command line arg for sc-only
* added arg to settings.rs
* Add check and kill after split_routine()
Deletes the temporary directory, it would be better if it was never created in the first place.
* Initialize sc_only in EncodeArgs
* cargo fmt
* Integration test
* Make -s a requirement
* cargo fmt
* Add -s as requirement to sc-only via clap
* revert f7688ca
* Fix me not reading errors
* revert db4fb3b
* Cargo fmt
* Added --scenes as a requirement for --sc-only with clap
* Update wording
* Trying to fix the weird integration bug
* Revert 393b380
* Condition on test failure
* Github actions again
* Filename in actions
* Use latest indicatif release
* Fix some clippy lints
* Also validate formatting and warnings in CI
* Minor dependency updates
* Do not show '/0' frames if we haven't computed frame count yet
* Automatically add cq-level arg if it is not present
Currently, target quality requires a cq-level (or equivalent for the
encoder) arg to be present in order to work, so that it can replace the
existing cq-level with the new one. This commit makes it so that if the
arg is not present, av1an will insert it with the proper quality level.
* Use format! for insert_q
Co-authored-by: Redzic <yusufredzic@gmail.com>
* Add mergify config
This config includes the following rules:
- Automatically merge once a PR passes all tests and is approved.
- Automatically backport each PR from our main branch into our stable branch
* Merge all tests into one run
* Cleanup and speed up test suite
* Migrate to a docker image with dav1d
* Create CI profile with debug assertions enabled
* Use faster params for all encoders
Co-authored-by: Redzic <yusufredzic@gmail.com>
* Always copy subtitles and all audio tracks
Require mkvmerge for x265
* cargo update
* Fix concat if audio file does not exist
* Use stable rustc in Docker, do not compile VVC
* Use old Docker image for now which works with vapoursynth
* Fix tests.yml
* Use mkvmerge for tests
* Add mkvtoolnix as a dependency in tests.yml
* Remove sc-downscale-height CLI option
The standard scenecut detection method at 1080p
is currently as fast as downsampling to 720p
and running scenecut detection on that, and the
fast scenecut method is significantly faster
without downsampling, because the algorithm
is faster than ffmpeg's resizing algorithm.
As such, it doesn't make sense to have this option anymore.
* Fix conditional use of newer VS APIs
It makes sense to enable these by default,
since the vast majority of users
should have a moderately recent version
of Vapoursynth.
We also needed to disable the static ffmpeg
as the default for now. libaom returns None
for the pixel format, so it is not usable
for the changes needed later in this PR.
I attempted to get the git version of
ffmpeg-next compiling with libdav1d,
but was running into issues, I believe
because Arch's package manager only includes
a dynamic library for libdav1d and not
a static version. It probably makes sense
to disable it anyway given the issues
Windows users have been having with it.
* No longer convert input to 8-bit for scene detect
It appears that downconverting does have an impact
on scene detection accuracy. The speed penalty
for running in 10-bit compared to 8-bit is only
10%. Given this, it seems preferable to run
the scene detect in the more accurate format.
* Skip ffmpeg intermediate step for vapoursynth input
* Fix skipping of ffmpeg pipe step
This optimization added in #379 was never triggered.
Because the initialize() method always added a set
of default params to self.ffmpeg_params, the clause
to skip the ffmpeg pipe, self.ffmpeg_params.is_empty(),
was unreachable.
* Revert "Remove sc-downscale-height CLI option"
This reverts commit a51763607faddae07a595f567d4f4cf815de3299.
* Validate pixel formats based on encoder support
* Fix CI build
The dynamic linking of ffmpeg doesn't seem to play nicely with
the old version of ffmpeg which is packaged in Ubuntu's last LTS.
This enables static linking when we are running in CI to work around
that issue, given that that workaround is easier than overhauling
which docker container we use.
* Use a different method for ffmpeg frame count
This method uses ffprobe to count the number of packets
(which is identical to the number of frames, but faster)
in a video stream. This works with more video formats,
including with --enable-keyframe-filtering=2 in aomenc.
Performance should be similar or better than ffmpeg -copy.
* Add sanity check when using keyframe filtering 2
* Use ffmpeg-next crate for getting frame count
* Add LLVM/Clang to Github Actions
* Enable ffmpeg static and build features by default