Fails to build with 'video' feature enabled
Trying to build gifski with cargo install --features=video but it fails when building ffmpeg-sys-next. Setting FFMPEG_DIR to installed ffmpeg doesn't help, using vcpkg installed ffmpeg doesn't work either.
Output (with either FFMPEG_DIR or vcpkg installed ffmpeg, adding -v doesn't change it either):
error: failed to run custom build command for `ffmpeg-sys-next v6.1.0`
Caused by:
process didn't exit successfully: `C:\Users\Nikolay\AppData\Local\Temp\cargo-installlR4jPA\release\build\ffmpeg-sys-next-9ecc509337a9dc9f\build-script-build` (exit code: 101)
error: failed to compile `gifski v1.32.0`, intermediate artifacts can be found at `C:\Users\Nikolay\AppData\Local\Temp\cargo-installlR4jPA`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
Using stable-x86_64-pc-windows-msvc rust toolchain.
This is expected. Building ffmpeg on Windows is a major challenge only for the brave. I never managed to make it work, but the closest way to working is getting it pre-built via vcpkg and then somehow convincing the sys crates to link to it.
I used to be able to build with features=video enabled on my previous desktop but it was with version 1.12, I did not build ffmpeg itself, I was using FFMPEG_DIR environment variable which makes build script use system installed FFmpeg. Now it doesn't work and I can't figure out why, there is nothing logged in the console. I tried doing with vcpkg (it correctly downloaded and built ffmpeg) but it resulted in same error.
It's not ffmpeg that fails to build, it's Rust crate ffmpeg-sys-next. I thought it might be caused by having newer FFmpeg installed on my system but downgrading from 7.0 to 6.1 (same as the version of crate) didn't change anything. Also not sure if problem is with the crate itself or because of the slightly dated version of the crate.
Also having this issue on Fedora 41.
@DemonikGH Still unable to install on up-to-date Fedora.
$ cargo install gifski --features=video
Updating crates.io index
Installing gifski v1.32.0
Updating crates.io index
Locking 90 packages to latest compatible versions
Adding ffmpeg-next v6.1.1 (available: v7.1.0)
Compiling libc v0.2.170
Compiling crossbeam-utils v0.8.21
Compiling glob v0.3.2
Compiling proc-macro2 v1.0.94
Compiling unicode-ident v1.0.18
Compiling syn v1.0.109
Compiling regex-syntax v0.8.5
Compiling cfg-if v1.0.0
Compiling minimal-lexical v0.2.1
Compiling memchr v2.7.4
Compiling bindgen v0.64.0
Compiling shlex v1.3.0
Compiling lazy_static v1.5.0
Compiling lazycell v1.3.0
Compiling bytemuck v1.22.0
Compiling bitflags v1.3.2
Compiling libloading v0.8.6
Compiling rustc-hash v1.1.0
Compiling peeking_take_while v0.1.2
Compiling pkg-config v0.3.32
Compiling rayon-core v1.12.1
Compiling cc v1.2.16
Compiling autocfg v1.4.0
Compiling rgb v0.8.50
Compiling utf8parse v0.2.2
Compiling colorchoice v1.0.3
Compiling anstyle v1.0.10
Compiling is_terminal_polyfill v1.70.1
Compiling anstyle-query v1.1.2
Compiling anstyle-parse v0.2.6
Compiling either v1.15.0
Compiling adler2 v2.0.0
Compiling crc32fast v1.4.2
Compiling clang-sys v1.8.1
Compiling anstream v0.6.18
Compiling miniz_oxide v0.8.5
Compiling ffmpeg-next v6.1.1
Compiling weezl v0.1.8
Compiling nom v7.1.3
Compiling once_cell v1.20.3
Compiling num-traits v0.2.19
Compiling clap_lex v0.7.4
Compiling strsim v0.11.1
Compiling imgref v1.11.0
Compiling quote v1.0.39
Compiling crossbeam-epoch v0.9.18
Compiling num_cpus v1.16.0
Compiling crossbeam-channel v0.5.14
Compiling flate2 v1.1.0
Compiling clap_builder v4.5.31
Compiling thread_local v1.1.8
Compiling crossbeam-deque v0.8.6
Compiling gif v0.13.1
Compiling arrayvec v0.7.6
Compiling pbr v1.1.1
Compiling ordered-channel v1.1.0
Compiling lodepng v3.11.0
Compiling gif-dispose v5.0.1
Compiling loop9 v0.1.5
Compiling yuv v0.1.9
Compiling y4m v0.8.0
Compiling rayon v1.10.0
Compiling dunce v1.0.5
Compiling regex-automata v0.4.9
Compiling natord v1.0.9
Compiling quick-error v2.0.1
Compiling wild v2.2.1
Compiling cexpr v0.6.0
Compiling regex v1.11.1
Compiling clap v4.5.31
Compiling imagequant v4.3.4
Compiling resize v0.8.8
Compiling ffmpeg-sys-next v6.1.0
error[E0425]: cannot find value `AV_CH_LAYOUT_NATIVE` in this scope
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/channel_layout.rs:31:39
|
31 | const NATIVE = AV_CH_LAYOUT_NATIVE;
| ^^^^^^^^^^^^^^^^^^^ help: a constant with a similar name exists: `AV_CH_LAYOUT_STEREO`
|
::: /tmp/cargo-installXSdb9r/release/build/ffmpeg-sys-next-d7a97b411cb2f3e7/out/bindings.rs:3:903616
|
3 | ...nglong = 4 ; pub const AV_CH_LAYOUT_STEREO : libc :: c_ulonglong = 3 ; pub const AV_CH_LAYOUT_2POINT1 : libc :: c_ulonglong = 11 ; pub co...
| --------------------------------------------------- similarly named constant `AV_CH_LAYOUT_STEREO` defined here
error[E0425]: cannot find value `AV_PIX_FMT_XVMC` in this scope
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/format/pixel.rs:1056:28
|
1056 | Pixel::XVMC => AV_PIX_FMT_XVMC,
| ^^^^^^^^^^^^^^^ help: a unit variant with a similar name exists: `AV_PIX_FMT_NV12`
|
::: /tmp/cargo-installXSdb9r/release/build/ffmpeg-sys-next-d7a97b411cb2f3e7/out/bindings.rs:3:218504
|
3 | ...U and the following byte V)"] AV_PIX_FMT_NV12 = 23 , # [doc = "< as above, but U and V bytes are swapped"] AV_PIX_FMT_NV21 = 24 , # [do...
| --------------- similarly named unit variant `AV_PIX_FMT_NV12` defined here
error[E0425]: cannot find value `AV_OPT_TYPE_CHANNEL_LAYOUT` in this scope
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/option/mod.rs:82:36
|
82 | Type::ChannelLayout => AV_OPT_TYPE_CHANNEL_LAYOUT,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: a unit variant with a similar name exists: `AV_OPT_TYPE_CHLAYOUT`
|
::: /tmp/cargo-installXSdb9r/release/build/ffmpeg-sys-next-d7a97b411cb2f3e7/out/bindings.rs:3:980982
|
3 | ...ype is AVChannelLayout."] AV_OPT_TYPE_CHLAYOUT = 19 , # [doc = " Underlying C type is unsigned int."] AV_OPT_TYPE_UINT = 20 , # [doc = " ...
| -------------------- similarly named unit variant `AV_OPT_TYPE_CHLAYOUT` defined here
error[E0425]: cannot find value `AV_CODEC_ID_AYUV` in this scope
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/id.rs:1538:25
|
1538 | Id::AYUV => AV_CODEC_ID_AYUV,
| ^^^^^^^^^^^^^^^^ help: a unit variant with a similar name exists: `AV_CODEC_ID_CYUV`
|
::: /tmp/cargo-installXSdb9r/release/build/ffmpeg-sys-next-d7a97b411cb2f3e7/out/bindings.rs:3:376957
|
3 | ..., AV_CODEC_ID_HUFFYUV = 25 , AV_CODEC_ID_CYUV = 26 , AV_CODEC_ID_H264 = 27 , AV_CODEC_ID_INDEO3 = 28 , AV_CODEC_ID_VP3 = 29 , AV_CODEC_...
| ---------------- similarly named unit variant `AV_CODEC_ID_CYUV` defined here
error[E0425]: cannot find function `av_get_channel_layout_nb_channels` in this scope
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/channel_layout.rs:78:18
|
78 | unsafe { av_get_channel_layout_nb_channels(self.bits()) }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
error[E0425]: cannot find function `av_get_default_channel_layout` in this scope
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/channel_layout.rs:83:47
|
83 | ChannelLayout::from_bits_truncate(av_get_default_channel_layout(number) as c_ulonglong)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
error[E0609]: no field `coded_picture_number` on type `sys::AVFrame`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/frame/video.rs:178:35
|
178 | unsafe { (*self.as_ptr()).coded_picture_number as usize }
| ^^^^^^^^^^^^^^^^^^^^ unknown field
|
= note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
error[E0609]: no field `display_picture_number` on type `sys::AVFrame`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/frame/video.rs:183:35
|
183 | unsafe { (*self.as_ptr()).display_picture_number as usize }
| ^^^^^^^^^^^^^^^^^^^^^^ unknown field
|
= note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
error[E0609]: no field `channel_layout` on type `sys::AVFrame`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/frame/audio.rs:66:69
|
66 | unsafe { ChannelLayout::from_bits_truncate((*self.as_ptr()).channel_layout as c_ulonglong) }
| ^^^^^^^^^^^^^^ unknown field
|
= note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
error[E0609]: no field `channel_layout` on type `sys::AVFrame`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/frame/audio.rs:71:39
|
71 | unsafe { (*self.as_mut_ptr()).channel_layout = value.bits() }
| ^^^^^^^^^^^^^^ unknown field
|
= note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
error[E0609]: no field `channels` on type `sys::AVFrame`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/frame/audio.rs:76:35
|
76 | unsafe { (*self.as_ptr()).channels as u16 }
| ^^^^^^^^ unknown field
|
= note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
error[E0609]: no field `channels` on type `sys::AVFrame`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/frame/audio.rs:82:34
|
82 | (*self.as_mut_ptr()).channels = i32::from(value);
| ^^^^^^^^ unknown field
|
= note: available fields are: `data`, `linesize`, `extended_data`, `width`, `height` ... and 40 others
error[E0609]: no field `pkt_duration` on type `sys::AVFrame`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/frame/mod.rs:82:44
|
82 | duration: (*self.as_ptr()).pkt_duration,
| ^^^^^^^^^^^^ unknown field
|
help: a field with a similar name exists
|
82 | duration: (*self.as_ptr()).duration,
| ~~~~~~~~
error[E0425]: cannot find function `av_opt_set_channel_layout` in this scope
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/option/traits.rs:137:20
|
137 | check!(av_opt_set_channel_layout(
| ^^^^^^^^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `av_opt_set_chlayout`
|
::: /tmp/cargo-installXSdb9r/release/build/ffmpeg-sys-next-d7a97b411cb2f3e7/out/bindings.rs:3:1008327
|
3 | ..."] pub fn av_opt_set_chlayout (obj : * mut libc :: c_void , name : * const libc :: c_char , layout : * const AVChannelLayout , search_flags : libc :: c_int) -> libc :: c_int ; } ...
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- similarly named function `av_opt_set_chlayout` defined here
error[E0609]: no field `channel_layouts` on type `sys::AVCodec`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/audio.rs:41:39
|
41 | if (*self.codec.as_ptr()).channel_layouts.is_null() {
| ^^^^^^^^^^^^^^^ unknown field
|
help: a field with a similar name exists
|
41 | if (*self.codec.as_ptr()).ch_layouts.is_null() {
| ~~~~~~~~~~
error[E0609]: no field `channel_layouts` on type `sys::AVCodec`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/audio.rs:45:44
|
45 | (*self.codec.as_ptr()).channel_layouts,
| ^^^^^^^^^^^^^^^ unknown field
|
help: a field with a similar name exists
|
45 | (*self.codec.as_ptr()).ch_layouts,
| ~~~~~~~~~~
error[E0609]: no field `slice_count` on type `sys::AVCodecContext`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/decoder/video.rs:89:34
|
89 | (*self.as_mut_ptr()).slice_count = value as c_int;
| ^^^^^^^^^^^ unknown field
|
= note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
error[E0609]: no field `channels` on type `sys::AVCodecContext`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/decoder/audio.rs:51:35
|
51 | unsafe { (*self.as_ptr()).channels as u16 }
| ^^^^^^^^ unknown field
|
= note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
error[E0609]: no field `frame_number` on type `sys::AVCodecContext`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/decoder/audio.rs:65:35
|
65 | unsafe { (*self.as_ptr()).frame_number as usize }
| ^^^^^^^^^^^^ unknown field
|
= note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
error[E0609]: no field `channel_layout` on type `sys::AVCodecContext`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/decoder/audio.rs:73:69
|
73 | unsafe { ChannelLayout::from_bits_truncate((*self.as_ptr()).channel_layout) }
| ^^^^^^^^^^^^^^ unknown field
|
= note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
error[E0609]: no field `channel_layout` on type `sys::AVCodecContext`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/decoder/audio.rs:78:34
|
78 | (*self.as_mut_ptr()).channel_layout = value.bits();
| ^^^^^^^^^^^^^^ unknown field
|
= note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
error[E0609]: no field `request_channel_layout` on type `sys::AVCodecContext`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/decoder/audio.rs:84:34
|
84 | (*self.as_mut_ptr()).request_channel_layout = value.bits();
| ^^^^^^^^^^^^^^^^^^^^^^ unknown field
|
= note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
error[E0609]: no field `channel_layout` on type `sys::AVCodecContext`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/encoder/audio.rs:98:34
|
98 | (*self.as_mut_ptr()).channel_layout = value.bits();
| ^^^^^^^^^^^^^^ unknown field
|
= note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
error[E0609]: no field `channel_layout` on type `sys::AVCodecContext`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/encoder/audio.rs:103:69
|
103 | unsafe { ChannelLayout::from_bits_truncate((*self.as_ptr()).channel_layout) }
| ^^^^^^^^^^^^^^ unknown field
|
= note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
error[E0609]: no field `channels` on type `sys::AVCodecContext`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/encoder/audio.rs:108:34
|
108 | (*self.as_mut_ptr()).channels = value;
| ^^^^^^^^ unknown field
|
= note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
error[E0609]: no field `channels` on type `sys::AVCodecContext`
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/encoder/audio.rs:113:35
|
113 | unsafe { (*self.as_ptr()).channels as u16 }
| ^^^^^^^^ unknown field
|
= note: available fields are: `av_class`, `log_level_offset`, `codec_type`, `codec`, `codec_id` ... and 95 others
error[E0425]: cannot find function `swr_alloc_set_opts` in this scope
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/software/resampling/context.rs:71:23
|
71 | let ptr = swr_alloc_set_opts(
| ^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `swr_alloc_set_opts2`
|
::: /tmp/cargo-installXSdb9r/release/build/ffmpeg-sys-next-d7a97b411cb2f3e7/out/bindings.rs:3:1073927
|
3 | ..."] pub fn swr_alloc_set_opts2 (ps : * mut * mut SwrContext , out_ch_layout : * const AVChannelLayout , out_sample_fmt : AVSampleFormat , out_sample_rate : libc :: c_int , in_ch_layout : * const AVChannelLayout , in_sample_fmt : AVSampleFormat , in_sample_rate : libc :: c_int , log_offset : libc :: c_int , log_ctx : * mut libc :: c_void) -> libc :: c_int ; } ...
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ similarly named function `swr_alloc_set_opts2` defined here
error[E0004]: non-exhaustive patterns: `sys::AVColorSpace::AVCOL_SPC_IPT_C2`, `sys::AVColorSpace::AVCOL_SPC_YCGCO_RE` and `sys::AVColorSpace::AVCOL_SPC_YCGCO_RO` not covered
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/color/space.rs:44:15
|
44 | match value {
| ^^^^^ patterns `sys::AVColorSpace::AVCOL_SPC_IPT_C2`, `sys::AVColorSpace::AVCOL_SPC_YCGCO_RE` and `sys::AVColorSpace::AVCOL_SPC_YCGCO_RO` not covered
|
note: `sys::AVColorSpace` defined here
--> /tmp/cargo-installXSdb9r/release/build/ffmpeg-sys-next-d7a97b411cb2f3e7/out/bindings.rs:3:246830
|
3 | ...)] pub enum AVColorSpace { # [doc = "< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB), YZX and ST 428-1"] AVCOL_SPC_RGB = 0 , # [doc = "< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / derived in SMPTE RP 177 Annex B"] AVCOL_SPC_BT709 = 1 , AVCOL_SPC_UNSPECIFIED = 2 , # [doc = "< reserved for future use by ITU-T and ISO/IEC just like 15-255 are"] AVCOL_SPC_RESERVED = 3 , # [doc = "< FCC Title 47 Code of Federal Regulations 73.682 (a)(20)"] AVCOL_SPC_FCC = 4 , # [doc = "< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601"] AVCOL_SPC_BT470BG = 5 , # [doc = "< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above"] AVCOL_SPC_SMPTE170M = 6 , # [doc = "< derived from 170M primaries and D65 white point, 170M is derived from BT470 System M's primaries"] AVCOL_SPC_SMPTE240M = 7 , # [doc = "< used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16"] AVCOL_SPC_YCGCO = 8 , # [doc = "< ITU-R BT2020 non-constant luminance system"] AVCOL_SPC_BT2020_NCL = 9 , # [doc = "< ITU-R BT2020 constant luminance system"] AVCOL_SPC_BT2020_CL = 10 , # [doc = "< SMPTE 2085, Y'D'zD'x"] AVCOL_SPC_SMPTE2085 = 11 , # [doc = "< Chromaticity-derived non-constant luminance system"] AVCOL_SPC_CHROMA_DERIVED_NCL = 12 , # [doc = "< Chromaticity-derived constant luminance system"] AVCOL_SPC_CHROMA_DERIVED_CL = 13 , # [doc = "< ITU-R BT.2100-0, ICtCp"] AVCOL_SPC_ICTCP = 14 , # [doc = "< SMPTE ST 2128, IPT-C2"] AVCOL_SPC_IPT_C2 = 15 , # [doc = "< YCgCo-R, even addition of bits"] AVCOL_SPC_YCGCO_RE = 16 , # [doc = "< YCgCo-R, odd addition of bits"] AVCOL_SPC_YCGCO_RO = ...
| ^^^^^^^^^^^^^^^^^^^^^ ---------------- not covered ------------------ not covered ------------------ not covered
= note: the matched value is of type `sys::AVColorSpace`
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern, a match arm with multiple or-patterns as shown, or multiple match arms
|
61 ~ AVCOL_SPC_ICTCP => Space::ICTCP,
62 ~ sys::AVColorSpace::AVCOL_SPC_IPT_C2 | sys::AVColorSpace::AVCOL_SPC_YCGCO_RE | sys::AVColorSpace::AVCOL_SPC_YCGCO_RO => todo!(),
|
error[E0004]: non-exhaustive patterns: `sys::AVFrameSideDataType::AV_FRAME_DATA_LCEVC` and `sys::AVFrameSideDataType::AV_FRAME_DATA_VIEW_ID` not covered
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/util/frame/side_data.rs:81:15
|
81 | match value {
| ^^^^^ patterns `sys::AVFrameSideDataType::AV_FRAME_DATA_LCEVC` and `sys::AVFrameSideDataType::AV_FRAME_DATA_VIEW_ID` not covered
|
note: `sys::AVFrameSideDataType` defined here
--> /tmp/cargo-installXSdb9r/release/build/ffmpeg-sys-next-d7a97b411cb2f3e7/out/bindings.rs:3:293779
|
3 | ...)] pub enum AVFrameSideDataType { # [doc = " The data is the AVPanScan struct defined in libavcodec."] AV_FRAME_DATA_PANSCAN = 0 , # [doc = " ATSC A53 Part 4 Closed Captions.\n A53 CC bitstream is stored as uint8_t in AVFrameSideData.data.\n The number of bytes of CC data is AVFrameSideData.size."] AV_FRAME_DATA_A53_CC = 1 , # [doc = " Stereoscopic 3d metadata.\n The data is the AVStereo3D struct defined in libavutil/stereo3d.h."] AV_FRAME_DATA_STEREO3D = 2 , # [doc = " The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h."] AV_FRAME_DATA_MATRIXENCODING = 3 , # [doc = " Metadata relevant to a downmix procedure.\n The data is the AVDownmixInfo struct defined in libavutil/downmix_info.h."] AV_FRAME_DATA_DOWNMIX_INFO = 4 , # [doc = " ReplayGain information in the form of the AVReplayGain struct."] AV_FRAME_DATA_REPLAYGAIN = 5 , # [doc = " This side data contains a 3x3 transformation matrix describing an affine\n transformation that needs to be applied to the frame for correct\n presentation.\n\n See libavutil/display.h for a detailed description of the data."] AV_FRAME_DATA_DISPLAYMATRIX = 6 , # [doc = " Active Format Description data consisting of a single byte as specified\n in ETSI TS 101 154 using AVActiveFormatDescription enum."] AV_FRAME_DATA_AFD = 7 , # [doc = " Motion vectors exported by some codecs (on demand through the export_mvs\n flag set in the libavcodec AVCodecContext flags2 option).\n The data is the AVMotionVector struct defined in\n libavutil/motion_vector.h."] AV_FRAME_DATA_MOTION_VECTORS = 8 , # [doc = " Recommmends skipping the specified number of samples. This is exported\n only if the \"skip_manual\" AVOption is set in libavcodec.\n This has the same format as AV_PKT_DATA_SKIP_SAMPLES.\n @code\n u32le number of samples to skip from start of this packet\n u32le number of samples to skip from end of this packet\n u8 reason for start skip\n u8 reason for end skip (0=padding silence, 1=convergence)\n @endcode"] AV_FRAME_DATA_SKIP_SAMPLES = 9 , # [doc = " This side data must be associated with an audio frame and corresponds to\n enum AVAudioServiceType defined in avcodec.h."] AV_FRAME_DATA_AUDIO_SERVICE_TYPE = 10 , # [doc = " Mastering display metadata associated with a video frame. The payload is\n an AVMasteringDisplayMetadata type and contains information about the\n mastering display color volume."] AV_FRAME_DATA_MASTERING_DISPLAY_METADATA = 11 , # [doc = " The GOP timecode in 25 bit timecode format. Data format is 64-bit integer.\n This is set on the first frame of a GOP that has a temporal reference of 0."] AV_FRAME_DATA_GOP_TIMECODE = 12 , # [doc = " The data represents the AVSphericalMapping structure defined in\n libavutil/spherical.h."] AV_FRAME_DATA_SPHERICAL = 13 , # [doc = " Content light level (based on CTA-861.3). This payload contains data in\n the form of the AVContentLightMetadata struct."] AV_FRAME_DATA_CONTENT_LIGHT_LEVEL = 14 , # [doc = " The data contains an ICC profile as an opaque octet buffer following the\n format described by ISO 15076-1 with an optional name defined in the\n metadata key entry \"name\"."] AV_FRAME_DATA_ICC_PROFILE = 15 , # [doc = " Timecode which conforms to SMPTE ST 12-1. The data is an array of 4 uint32_t\n where the first uint32_t describes how many (1-3) of the other timecodes are used.\n The timecode format is described in the documentation of av_timecode_get_smpte_from_framenum()\n function in libavutil/timecode.h."] AV_FRAME_DATA_S12M_TIMECODE = 16 , # [doc = " HDR dynamic metadata associated with a video frame. The payload is\n an AVDynamicHDRPlus type and contains information for color\n volume transform - application 4 of SMPTE 2094-40:2016 standard."] AV_FRAME_DATA_DYNAMIC_HDR_PLUS = 17 , # [doc = " Regions Of Interest, the data is an array of AVRegionOfInterest type, the number of\n array element is implied by AVFrameSideData.size / AVRegionOfInterest.self_size."] AV_FRAME_DATA_REGIONS_OF_INTEREST = 18 , # [doc = " Encoding parameters for a video frame, as described by AVVideoEncParams."] AV_FRAME_DATA_VIDEO_ENC_PARAMS = 19 , # [doc = " User data unregistered metadata associated with a video frame.\n This is the H.26[45] UDU SEI message, and shouldn't be used for any other purpose\n The data is stored as uint8_t in AVFrameSideData.data which is 16 bytes of\n uuid_iso_iec_11578 followed by AVFrameSideData.size - 16 bytes of user_data_payload_byte."] AV_FRAME_DATA_SEI_UNREGISTERED = 20 , # [doc = " Film grain parameters for a frame, described by AVFilmGrainParams.\n Must be present for every frame which should have film grain applied.\n\n May be present multiple times, for example when there are multiple\n alternative parameter sets for different video signal characteristics.\n The user should select the most appropriate set for the application."] AV_FRAME_DATA_FILM_GRAIN_PARAMS = 21 , # [doc = " Bounding boxes for object detection and classification,\n as described by AVDetectionBBoxHeader."] AV_FRAME_DATA_DETECTION_BBOXES = 22 , # [doc = " Dolby Vision RPU raw data, suitable for passing to x265\n or other libraries. Array of uint8_t, with NAL emulation\n bytes intact."] AV_FRAME_DATA_DOVI_RPU_BUFFER = 23 , # [doc = " Parsed Dolby Vision metadata, suitable for passing to a software\n implementation. The payload is the AVDOVIMetadata struct defined in\n libavutil/dovi_meta.h."] AV_FRAME_DATA_DOVI_METADATA = 24 , # [doc = " HDR Vivid dynamic metadata associated with a video frame. The payload is\n an AVDynamicHDRVivid type and contains information for color\n volume transform - CUVA 005.1-2021."] AV_FRAME_DATA_DYNAMIC_HDR_VIVID = 25 , # [doc = " Ambient viewing environment metadata, as defined by H.274."] AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT = 26 , # [doc = " Provide encoder-specific hinting information about changed/unchanged\n portions of a frame. It can be used to pass information about which\n macroblocks can be skipped because they didn't change from the\n corresponding ones in the previous frame. This could be useful for\n applications which know this information in advance to speed up\n encoding."] AV_FRAME_DATA_VIDEO_HINT = 27 , # [doc = " Raw LCEVC payload data, as a uint8_t array, with NAL emulation\n bytes intact."] AV_FRAME_DATA_LCEVC = 28 , # [doc = " This side data must be associated with a video frame.\n The presence of this side data indicates that the video stream is\n composed of multiple views (e.g. stereoscopic 3D content,\n cf. H.264 Annex H or H.265 Annex G).\n The data is an int storing the view ID."] AV_FRAME_DATA_VIEW_ID = ...
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------- not covered --------------------- not covered
= note: the matched value is of type `sys::AVFrameSideDataType`
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern, a match arm with multiple or-patterns as shown, or multiple match arms
|
134~ AV_FRAME_DATA_VIDEO_HINT => Type::VIDEO_HINT,
135~ sys::AVFrameSideDataType::AV_FRAME_DATA_LCEVC | sys::AVFrameSideDataType::AV_FRAME_DATA_VIEW_ID => todo!(),
|
error[E0004]: non-exhaustive patterns: `sys::AVPacketSideDataType::AV_PKT_DATA_IAMF_MIX_GAIN_PARAM`, `sys::AVPacketSideDataType::AV_PKT_DATA_IAMF_DEMIXING_INFO_PARAM`, `sys::AVPacketSideDataType::AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM` and 3 more not covered
--> /home/herzog/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/ffmpeg-next-6.1.1/src/codec/packet/side_data.rs:61:15
|
61 | match value {
| ^^^^^ patterns `sys::AVPacketSideDataType::AV_PKT_DATA_IAMF_MIX_GAIN_PARAM`, `sys::AVPacketSideDataType::AV_PKT_DATA_IAMF_DEMIXING_INFO_PARAM`, `sys::AVPacketSideDataType::AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM` and 3 more not covered
|
note: `sys::AVPacketSideDataType` defined here
--> /tmp/cargo-installXSdb9r/release/build/ffmpeg-sys-next-d7a97b411cb2f3e7/out/bindings.rs:3:415024
|
3 | ...)] pub enum AVPacketSideDataType { # [doc = " An AV_PKT_DATA_PALETTE side data packet contains exactly AVPALETTE_SIZE\n bytes worth of palette. This side data signals that a new palette is\n present."] AV_PKT_DATA_PALETTE = 0 , # [doc = " The AV_PKT_DATA_NEW_EXTRADATA is used to notify the codec or the format\n that the extradata buffer was changed and the receiving side should\n act upon it appropriately. The new extradata is embedded in the side\n data buffer and should be immediately used for processing the current\n frame or packet."] AV_PKT_DATA_NEW_EXTRADATA = 1 , # [doc = " An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows:\n @code\n u32le param_flags\n if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE)\n s32le sample_rate\n if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS)\n s32le width\n s32le height\n @endcode"] AV_PKT_DATA_PARAM_CHANGE = 2 , # [doc = " An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of\n structures with info about macroblocks relevant to splitting the\n packet into smaller packets on macroblock edges (e.g. as for RFC 2190).\n That is, it does not necessarily contain info about all macroblocks,\n as long as the distance between macroblocks in the info is smaller\n than the target payload size.\n Each MB info structure is 12 bytes, and is laid out as follows:\n @code\n u32le bit offset from the start of the packet\n u8 current quantizer at the start of the macroblock\n u8 GOB number\n u16le macroblock address within the GOB\n u8 horizontal MV predictor\n u8 vertical MV predictor\n u8 horizontal MV predictor for block number 3\n u8 vertical MV predictor for block number 3\n @endcode"] AV_PKT_DATA_H263_MB_INFO = 3 , # [doc = " This side data should be associated with an audio stream and contains\n ReplayGain information in form of the AVReplayGain struct."] AV_PKT_DATA_REPLAYGAIN = 4 , # [doc = " This side data contains a 3x3 transformation matrix describing an affine\n transformation that needs to be applied to the decoded video frames for\n correct presentation.\n\n See libavutil/display.h for a detailed description of the data."] AV_PKT_DATA_DISPLAYMATRIX = 5 , # [doc = " This side data should be associated with a video stream and contains\n Stereoscopic 3D information in form of the AVStereo3D struct."] AV_PKT_DATA_STEREO3D = 6 , # [doc = " This side data should be associated with an audio stream and corresponds\n to enum AVAudioServiceType."] AV_PKT_DATA_AUDIO_SERVICE_TYPE = 7 , # [doc = " This side data contains quality related information from the encoder.\n @code\n u32le quality factor of the compressed frame. Allowed range is between 1 (good) and FF_LAMBDA_MAX (bad).\n u8 picture type\n u8 error count\n u16 reserved\n u64le[error count] sum of squared differences between encoder in and output\n @endcode"] AV_PKT_DATA_QUALITY_STATS = 8 , # [doc = " This side data contains an integer value representing the stream index\n of a \"fallback\" track. A fallback track indicates an alternate\n track to use when the current track can not be decoded for some reason.\n e.g. no decoder available for codec."] AV_PKT_DATA_FALLBACK_TRACK = 9 , # [doc = " This side data corresponds to the AVCPBProperties struct."] AV_PKT_DATA_CPB_PROPERTIES = 10 , # [doc = " Recommmends skipping the specified number of samples\n @code\n u32le number of samples to skip from start of this packet\n u32le number of samples to skip from end of this packet\n u8 reason for start skip\n u8 reason for end skip (0=padding silence, 1=convergence)\n @endcode"] AV_PKT_DATA_SKIP_SAMPLES = 11 , # [doc = " An AV_PKT_DATA_JP_DUALMONO side data packet indicates that\n the packet may contain \"dual mono\" audio specific to Japanese DTV\n and if it is true, recommends only the selected channel to be used.\n @code\n u8 selected channels (0=main/left, 1=sub/right, 2=both)\n @endcode"] AV_PKT_DATA_JP_DUALMONO = 12 , # [doc = " A list of zero terminated key/value strings. There is no end marker for\n the list, so it is required to rely on the side data size to stop."] AV_PKT_DATA_STRINGS_METADATA = 13 , # [doc = " Subtitle event position\n @code\n u32le x1\n u32le y1\n u32le x2\n u32le y2\n @endcode"] AV_PKT_DATA_SUBTITLE_POSITION = 14 , # [doc = " Data found in BlockAdditional element of matroska container. There is\n no end marker for the data, so it is required to rely on the side data\n size to recognize the end. 8 byte id (as found in BlockAddId) followed\n by data."] AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL = 15 , # [doc = " The optional first identifier line of a WebVTT cue."] AV_PKT_DATA_WEBVTT_IDENTIFIER = 16 , # [doc = " The optional settings (rendering instructions) that immediately\n follow the timestamp specifier of a WebVTT cue."] AV_PKT_DATA_WEBVTT_SETTINGS = 17 , # [doc = " A list of zero terminated key/value strings. There is no end marker for\n the list, so it is required to rely on the side data size to stop. This\n side data includes updated metadata which appeared in the stream."] AV_PKT_DATA_METADATA_UPDATE = 18 , # [doc = " MPEGTS stream ID as uint8_t, this is required to pass the stream ID\n information from the demuxer to the corresponding muxer."] AV_PKT_DATA_MPEGTS_STREAM_ID = 19 , # [doc = " Mastering display metadata (based on SMPTE-2086:2014). This metadata\n should be associated with a video stream and contains data in the form\n of the AVMasteringDisplayMetadata struct."] AV_PKT_DATA_MASTERING_DISPLAY_METADATA = 20 , # [doc = " This side data should be associated with a video stream and corresponds\n to the AVSphericalMapping structure."] AV_PKT_DATA_SPHERICAL = 21 , # [doc = " Content light level (based on CTA-861.3). This metadata should be\n associated with a video stream and contains data in the form of the\n AVContentLightMetadata struct."] AV_PKT_DATA_CONTENT_LIGHT_LEVEL = 22 , # [doc = " ATSC A53 Part 4 Closed Captions. This metadata should be associated with\n a video stream. A53 CC bitstream is stored as uint8_t in AVPacketSideData.data.\n The number of bytes of CC data is AVPacketSideData.size."] AV_PKT_DATA_A53_CC = 23 , # [doc = " This side data is encryption initialization data.\n The format is not part of ABI, use av_encryption_init_info_* methods to\n access."] AV_PKT_DATA_ENCRYPTION_INIT_INFO = 24 , # [doc = " This side data contains encryption info for how to decrypt the packet.\n The format is not part of ABI, use av_encryption_info_* methods to access."] AV_PKT_DATA_ENCRYPTION_INFO = 25 , # [doc = " Active Format Description data consisting of a single byte as specified\n in ETSI TS 101 154 using AVActiveFormatDescription enum."] AV_PKT_DATA_AFD = 26 , # [doc = " Producer Reference Time data corresponding to the AVProducerReferenceTime struct,\n usually exported by some encoders (on demand through the prft flag set in the\n AVCodecContext export_side_data field)."] AV_PKT_DATA_PRFT = 27 , # [doc = " ICC profile data consisting of an opaque octet buffer following the\n format described by ISO 15076-1."] AV_PKT_DATA_ICC_PROFILE = 28 , # [doc = " DOVI configuration\n ref:\n dolby-vision-bitstreams-within-the-iso-base-media-file-format-v2.1.2, section 2.2\n dolby-vision-bitstreams-in-mpeg-2-transport-stream-multiplex-v1.2, section 3.3\n Tags are stored in struct AVDOVIDecoderConfigurationRecord."] AV_PKT_DATA_DOVI_CONF = 29 , # [doc = " Timecode which conforms to SMPTE ST 12-1:2014. The data is an array of 4 uint32_t\n where the first uint32_t describes how many (1-3) of the other timecodes are used.\n The timecode format is described in the documentation of av_timecode_get_smpte_from_framenum()\n function in libavutil/timecode.h."] AV_PKT_DATA_S12M_TIMECODE = 30 , # [doc = " HDR10+ dynamic metadata associated with a video frame. The metadata is in\n the form of the AVDynamicHDRPlus struct and contains\n information for color volume transform - application 4 of\n SMPTE 2094-40:2016 standard."] AV_PKT_DATA_DYNAMIC_HDR10_PLUS = 31 , # [doc = " IAMF Mix Gain Parameter Data associated with the audio frame. This metadata\n is in the form of the AVIAMFParamDefinition struct and contains information\n defined in sections 3.6.1 and 3.8.1 of the Immersive Audio Model and\n Formats standard."] AV_PKT_DATA_IAMF_MIX_GAIN_PARAM = 32 , # [doc = " IAMF Demixing Info Parameter Data associated with the audio frame. This\n metadata is in the form of the AVIAMFParamDefinition struct and contains\n information defined in sections 3.6.1 and 3.8.2 of the Immersive Audio Model\n and Formats standard."] AV_PKT_DATA_IAMF_DEMIXING_INFO_PARAM = 33 , # [doc = " IAMF Recon Gain Info Parameter Data associated with the audio frame. This\n metadata is in the form of the AVIAMFParamDefinition struct and contains\n information defined in sections 3.6.1 and 3.8.3 of the Immersive Audio Model\n and Formats standard."] AV_PKT_DATA_IAMF_RECON_GAIN_INFO_PARAM = 34 , # [doc = " Ambient viewing environment metadata, as defined by H.274. This metadata\n should be associated with a video stream and contains data in the form\n of the AVAmbientViewingEnvironment struct."] AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT = 35 , # [doc = " The number of pixels to discard from the top/bottom/left/right border of the\n decoded frame to obtain the sub-rectangle intended for presentation.\n\n @code\n u32le crop_top\n u32le crop_bottom\n u32le crop_left\n u32le crop_right\n @endcode"] AV_PKT_DATA_FRAME_CROPPING = ...
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------- not covered ------------------------------------ not covered -------------------------------------- not covered --------------------------------------- not covered -------------------------- not covered
= note: the matched value is of type `sys::AVPacketSideDataType`
help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown, or multiple match arms
|
108~ AV_PKT_DATA_DYNAMIC_HDR10_PLUS => Type::DYNAMIC_HDR10_PLUS,
109~ _ => todo!(),
|
Some errors have detailed explanations: E0004, E0425, E0609.
For more information about an error, try `rustc --explain E0004`.
error: could not compile `ffmpeg-next` (lib) due to 30 previous errors
error: failed to compile `gifski v1.32.0`, intermediate artifacts can be found at `/tmp/cargo-installXSdb9r`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.