master-of-zen / Av1an

Cross-platform command-line AV1 / VP9 / HEVC / H264 encoding framework with per scene quality encoding
GNU General Public License v3.0
1.4k stars 147 forks source link

Add ffmpeg 6 support #729

Closed shssoichiro closed 1 year ago

shssoichiro commented 1 year ago

Closes #728

shssoichiro commented 1 year ago

@svenstaro It would be great if you could test this branch out before we merge it just to be safe. My personal machine is actually still on ffmpeg 5.1.

svenstaro commented 1 year ago

Doesn't actually build for me:

error[E0425]: cannot find value `AV_CODEC_FLAG_TRUNCATED` in this scope
   --> /home/svenstaro/.cargo/registry/src/github.com-1ecc6299db9ec823/ffmpeg-the-third-1.2.1+ffmpeg-6.0.0/src/codec/flag.rs:16:33
    |
16  |         const TRUNCATED       = AV_CODEC_FLAG_TRUNCATED;
    |                                 ^^^^^^^^^^^^^^^^^^^^^^^ help: a constant with a similar name exists: `AV_CODEC_FLAG_DROPCHANGED`
    |
   ::: /home/svenstaro/src/Av1an/target/debug/build/ffmpeg-sys-the-third-ca32329f9e379525/out/bindings.rs:779:1
    |
779 | pub const AV_CODEC_FLAG_DROPCHANGED: libc::c_uint = 32;
    | ------------------------------------------------- similarly named constant `AV_CODEC_FLAG_DROPCHANGED` defined here

error[E0425]: cannot find value `AV_CODEC_CAP_TRUNCATED` in this scope
   --> /home/svenstaro/.cargo/registry/src/github.com-1ecc6299db9ec823/ffmpeg-the-third-1.2.1+ffmpeg-6.0.0/src/codec/capabilities.rs:9:37
    |
9   |         const TRUNCATED           = AV_CODEC_CAP_TRUNCATED;
    |                                     ^^^^^^^^^^^^^^^^^^^^^^ help: a constant with a similar name exists: `AV_CODEC_CAP_HARDWARE`
    |
   ::: /home/svenstaro/src/Av1an/target/debug/build/ffmpeg-sys-the-third-ca32329f9e379525/out/bindings.rs:741:1
    |
741 | pub const AV_CODEC_CAP_HARDWARE: libc::c_uint = 262144;
    | --------------------------------------------- similarly named constant `AV_CODEC_CAP_HARDWARE` defined here

error[E0425]: cannot find value `AV_CODEC_CAP_AUTO_THREADS` in this scope
   --> /home/svenstaro/.cargo/registry/src/github.com-1ecc6299db9ec823/ffmpeg-the-third-1.2.1+ffmpeg-6.0.0/src/codec/capabilities.rs:21:37
    |
21  |         const AUTO_THREADS        = AV_CODEC_CAP_AUTO_THREADS;
    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^ help: a constant with a similar name exists: `AV_CODEC_CAP_FRAME_THREADS`
    |
   ::: /home/svenstaro/src/Av1an/target/debug/build/ffmpeg-sys-the-third-ca32329f9e379525/out/bindings.rs:735:1
    |
735 | pub const AV_CODEC_CAP_FRAME_THREADS: libc::c_uint = 4096;
    | -------------------------------------------------- similarly named constant `AV_CODEC_CAP_FRAME_THREADS` defined here

error[E0425]: cannot find value `AV_CODEC_CAP_INTRA_ONLY` in this scope
   --> /home/svenstaro/.cargo/registry/src/github.com-1ecc6299db9ec823/ffmpeg-the-third-1.2.1+ffmpeg-6.0.0/src/codec/capabilities.rs:26:37
    |
26  |         const INTRA_ONLY          = AV_CODEC_CAP_INTRA_ONLY;
    |                                     ^^^^^^^^^^^^^^^^^^^^^^^ help: a constant with a similar name exists: `AV_CODEC_PROP_INTRA_ONLY`
    |
   ::: /home/svenstaro/src/Av1an/target/debug/build/ffmpeg-sys-the-third-ca32329f9e379525/out/bindings.rs:746:1
    |
746 | pub const AV_CODEC_PROP_INTRA_ONLY: libc::c_int = 1;
    | ----------------------------------------------- similarly named constant `AV_CODEC_PROP_INTRA_ONLY` defined here

error[E0425]: cannot find value `AV_CODEC_CAP_LOSSLESS` in this scope
   --> /home/svenstaro/.cargo/registry/src/github.com-1ecc6299db9ec823/ffmpeg-the-third-1.2.1+ffmpeg-6.0.0/src/codec/capabilities.rs:28:37
    |
28  |         const LOSSLESS            = AV_CODEC_CAP_LOSSLESS;
    |                                     ^^^^^^^^^^^^^^^^^^^^^ help: a constant with a similar name exists: `AV_CODEC_PROP_LOSSLESS`
    |
   ::: /home/svenstaro/src/Av1an/target/debug/build/ffmpeg-sys-the-third-ca32329f9e379525/out/bindings.rs:748:1
    |
748 | pub const AV_CODEC_PROP_LOSSLESS: libc::c_int = 4;
    | --------------------------------------------- similarly named constant `AV_CODEC_PROP_LOSSLESS` defined here

error[E0609]: no field `thread_safe_callbacks` on type `sys::AVCodecContext`
   --> /home/svenstaro/.cargo/registry/src/github.com-1ecc6299db9ec823/ffmpeg-the-third-1.2.1+ffmpeg-6.0.0/src/codec/context.rs:106:38
    |
106 |                 (*self.as_mut_ptr()).thread_safe_callbacks = i32::from(config.safe);
    |                                      ^^^^^^^^^^^^^^^^^^^^^ unknown field
    |
    = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 154 others

error[E0609]: no field `thread_safe_callbacks` on type `sys::AVCodecContext`
   --> /home/svenstaro/.cargo/registry/src/github.com-1ecc6299db9ec823/ffmpeg-the-third-1.2.1+ffmpeg-6.0.0/src/codec/context.rs:117:40
    |
117 |                 safe: (*self.as_ptr()).thread_safe_callbacks != 0,
    |                                        ^^^^^^^^^^^^^^^^^^^^^ unknown field
    |
    = note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 154 others
svenstaro commented 1 year ago

I'd report the failure upstream but @shssoichiro is upstream anyway. :)

shssoichiro commented 1 year ago

Should be working now. Mind giving it another try?

svenstaro commented 1 year ago

Works fine. Tested with a video and couldn't see regressions.

shssoichiro commented 1 year ago

@master-of-zen @redzic mind giving this the ol' green checkmark?

svenstaro commented 1 year ago

@master-of-zen Could you make a new release with this in it? Then I can bump the Arch package to ffmpeg 6.

master-of-zen commented 1 year ago

@svenstaro sure, will do that now

master-of-zen commented 1 year ago

@svenstaro done, 0.4.1 live