Skip to content

Conversation

@yuyichao
Copy link
Contributor

@yuyichao yuyichao commented Oct 7, 2025

Generated using an external installation of ffmpeg.

I did need to do a manual edit since the definition for AVVkFrameInternal was generated after it's first use. I assume this is because the header did not forward declare AVVkFrameInternal before using it as struct AVVkFrameInternal *internal in AVVkFrame. This is perfectly legal C and maybe clang.jl generator doesn't handle this too well...

Passes all the tests with #432

@IanButterworth
Copy link
Member

FFMPEG_jll update JuliaPackaging/Yggdrasil#12390

@IanButterworth IanButterworth changed the title Generate wrapper for FFMPEG8 Update to FFMPEG 8.0.0 Oct 27, 2025
@codecov
Copy link

codecov bot commented Oct 27, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 77.60%. Comparing base (dea1a87) to head (bf49de7).

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #433      +/-   ##
==========================================
- Coverage   78.29%   77.60%   -0.69%     
==========================================
  Files          10       10              
  Lines        1313     1313              
==========================================
- Hits         1028     1019       -9     
- Misses        285      294       +9     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@IanButterworth IanButterworth marked this pull request as ready for review October 27, 2025 02:31
@IanButterworth
Copy link
Member

@yuyichao this is looking good to me. I'll merge and release in a day or so, unless you see anything else that needs doing?

@IanButterworth
Copy link
Member

Just in case anything here strikes you as needing fixing, JET finds some issues in libffmpeg on this branch (similar on master)

julia> using JET

julia> using VideoIO

julia> report_package(VideoIO, target_modules=(VideoIO.libffmpeg,))
[toplevel-info] Couldn't find a single matching method for the signature `VideoIO.libffmpeg.AVPacketList(::Any, ::Any)` (progress: 276/2042)
[toplevel-info] Couldn't find a single matching method for the signature `VideoIO.libffmpeg.AVPacketList(::VideoIO.libffmpeg.AVPacket, ::Ptr{VideoIO.libffmpeg.AVPacketList})` (progress: 277/2042)
[toplevel-info] Couldn't find a single matching method for the signature `VideoIO.libffmpeg.AVFilterInOut(::Any, ::Any, ::Any, ::Any)` (progress: 429/2042)
[toplevel-info] Couldn't find a single matching method for the signature `VideoIO.libffmpeg.AVFilterInOut(::Cstring, ::Ptr{VideoIO.libffmpeg.AVFilterContext}, ::Int32, ::Ptr{VideoIO.libffmpeg.AVFilterInOut})` (progress: 430/2042)
[toplevel-info] Couldn't find a single matching method for the signature `VideoIO.libffmpeg.AVEncryptionInitInfo(::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any, ::Any)` (progress: 941/2042)
[toplevel-info] Couldn't find a single matching method for the signature `VideoIO.libffmpeg.AVEncryptionInitInfo(::Ptr{UInt8}, ::UInt32, ::Ptr{Ptr{UInt8}}, ::UInt32, ::UInt32, ::Ptr{UInt8}, ::UInt32, ::Ptr{VideoIO.libffmpeg.AVEncryptionInitInfo})` (progress: 942/2042)
[toplevel-info] Couldn't find a single matching method for the signature `VideoIO.libffmpeg.AVTask(::Any)` (progress: 963/2042)
[toplevel-info] Couldn't find a single matching method for the signature `VideoIO.libffmpeg.AVTask(::Ptr{VideoIO.libffmpeg.AVTask})` (progress: 964/2042)
[toplevel-info] Couldn't find a single matching method for the signature `VideoIO.VideoReader(::VideoIO.AVInput{I}, ::Int64, ::VideoIO.NestedCStruct{VideoIO.libffmpeg.AVCodecContext}, ::Vector{Vector{UInt8}}, ::T, ::Bool, ::Int64, ::Bool, ::Bool, ::Int64) where {T<:Union{VideoIO.GrayTransform, VideoIO.NestedCStruct{VideoIO.libffmpeg.AVFrame}, VideoIO.SwsTransform}, I}` (progress: 1842/2042)
[toplevel-info] Analyzing top-level definition (progress: 2042/2042)
[toplevel-info] Analyzed all top-level definitions (all: 2042 | analyzed: 2033 | cached: 0 | took: 5.35 sec)
═════ 34 possible errors found ═════
┌ getproperty(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_92}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:90
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_92}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg._VAGenericValue}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:119
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg._VAGenericValue}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg._VASurfaceAttrib}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:165
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg._VASurfaceAttrib}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_95}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:269
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_95}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVOption}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:310
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVOption}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_93}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:1297
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_93}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVChannelLayout}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:1345
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVChannelLayout}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVCodec}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:1391
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVCodec}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVCodecContext}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:1898
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVCodecContext}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVCodecParameters}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:2071
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVCodecParameters}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVFrame}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:2262
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVFrame}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_91}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:4845
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_91}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVStreamGroup}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:4882
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVStreamGroup}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVFilterContext}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:5270
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVFilterContext}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVFilterLink}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:5339
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVFilterLink}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVBufferSrcParameters}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:6243
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVBufferSrcParameters}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVIndexEntry}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:6425
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVIndexEntry}, f::Symbol)
└────────────────────
┌ setproperty!(x::Ptr{VideoIO.libffmpeg.AVIndexEntry}, f::Symbol, v::Any) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:6452
│ no matching method found `unsafe_store!(::Tuple{Ptr{Int32}, Int64, Int64}, ::Any)` (1/3 union split): VideoIO.libffmpeg.unsafe_store!(VideoIO.libffmpeg.getproperty(x::Ptr{VideoIO.libffmpeg.AVIndexEntry}, f::Symbol)::Union{Ptr{Int32}, Ptr{Int64}, Tuple{Ptr{Int32}, Int64, Int64}}, v::Any)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_94}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:6519
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_94}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVStreamGroupTileGrid}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:6572
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVStreamGroupTileGrid}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVDOVIDmData}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:11737
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVDOVIDmData}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_96}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:12538
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.__JL_Ctag_96}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVFilmGrainParams}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:12587
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVFilmGrainParams}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVIAMFLayer}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:14646
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVIAMFLayer}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVIAMFSubmixLayout}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:14788
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVIAMFSubmixLayout}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.av_intfloat32}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:15300
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.av_intfloat32}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.av_intfloat64}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:15329
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.av_intfloat64}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.av_alias64}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:15398
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.av_alias64}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.av_alias32}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:15429
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.av_alias32}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.av_alias16}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:15458
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.av_alias16}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.unaligned_64}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:15486
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.unaligned_64}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.unaligned_32}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:15514
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.unaligned_32}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.unaligned_16}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:15542
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.unaligned_16}, f::Symbol)
└────────────────────
┌ getproperty(x::Ptr{VideoIO.libffmpeg.AVRefStructOpaque}, f::Symbol) @ VideoIO.libffmpeg /Users/ian/Documents/GitHub/VideoIO.jl/lib/libffmpeg.jl:18137
│ invalid builtin function call: VideoIO.libffmpeg.getfield(x::Ptr{VideoIO.libffmpeg.AVRefStructOpaque}, f::Symbol)
└────────────────────

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants