Skip to content

libvpx-m: libvpx 1.17.0 (VP9) and libwebm 1.0.0.32 (WebM) as C++ modules - #1

Merged
Sunrisepeak merged 1 commit into
mainfrom
libvpx-m-1.17.0
Oct 29, 2026
Merged

Sunrisepeak merged 1 commit into
mainfrom
libvpx-m-1.17.0

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Member

mcpplibs.mwrap.libvpx over compat.libvpx and compat.libwebm, generated from
the pinned tags' headers (tools/gen_exports.py over tools/inventory.py):

  • mcpplibs.mwrap.libvpx: libvpx's 133 types, 192 enumerators, the 35
    functions upstream exports and the two VP9 interfaces (VP8 is not built,
    so its interfaces are not exported); the headers' 86 typed controls
    (static functions made by VPX_CTRL_USE_TYPE) adapted under the same names
    in mcpplibs::mwrap::libvpx, each calling vpx_codec_control_ as upstream's
    body does;
  • mcpplibs.mwrap.libvpx.webm: libwebm's mkvmuxer, mkvparser and libwebm
    namespaces (classes, types, enumerators, free functions); the
    namespace-scope constants, which have internal linkage, under the same
    names in mcpplibs::mwrap::libvpx::mkvmuxer / ::mkvparser;
  • mcpplibs.mwrap.libvpx.macros: 74 macros as constants (of their
    expression's type), functions (vpx_codec_enc_init, vpx_codec_dec_init …)
    and constexpr functions (VPX_VERSION_MAJOR …); what stays a macro is in
    <mwrap/libvpx/macros.hpp>.

Tests: VP9 at good quality, real time, four threads and lossless, muxed into
WebM with mkvmuxer, parsed back with mkvparser and decoded, each file's
bytes pinned; every macro mapping against the raw headers; every exported
function and control linked. The export audit (tools/check_exports.py), and
the conformance run (tools/run_conformance.py): examples/vpxwebm, written
against the module, writes the same IVF bytes as upstream's vpxenc for six
settings, and vpxdec reads its WebM files to the same frames as the module
does vpxenc's. The default template (webm), the bilingual README, the usage
documentation, CI (Linux x86_64 GCC/LLVM, Linux arm64 GCC, macOS, Windows,
the Web), release and template workflows. Until mcpp-index publishes the two
compat packages (mcpplibs/mcpp-index#624), CI resolves them from that PR's
branch (tools/candidate_index.py).

mcpplibs.mwrap.libvpx over compat.libvpx and compat.libwebm, generated from
the pinned tags' headers (tools/gen_exports.py over tools/inventory.py):

- mcpplibs.mwrap.libvpx: libvpx's 133 types, 192 enumerators, the 35
  functions upstream exports and the two VP9 interfaces (VP8 is not built,
  so its interfaces are not exported); the headers' 86 typed controls
  (static functions made by VPX_CTRL_USE_TYPE) adapted under the same names
  in mcpplibs::mwrap::libvpx, each calling vpx_codec_control_ as upstream's
  body does;
- mcpplibs.mwrap.libvpx.webm: libwebm's mkvmuxer, mkvparser and libwebm
  namespaces (classes, types, enumerators, free functions); the
  namespace-scope constants, which have internal linkage, under the same
  names in mcpplibs::mwrap::libvpx::mkvmuxer / ::mkvparser;
- mcpplibs.mwrap.libvpx.macros: 74 macros as constants (of their
  expression's type), functions (vpx_codec_enc_init, vpx_codec_dec_init …)
  and constexpr functions (VPX_VERSION_MAJOR …); what stays a macro is in
  <mwrap/libvpx/macros.hpp>.

Tests: VP9 at good quality, real time, four threads and lossless, muxed into
WebM with mkvmuxer, parsed back with mkvparser and decoded, each file's
bytes pinned; every macro mapping against the raw headers; every exported
function and control linked. The export audit (tools/check_exports.py), and
the conformance run (tools/run_conformance.py): examples/vpxwebm, written
against the module, writes the same IVF bytes as upstream's vpxenc for six
settings, and vpxdec reads its WebM files to the same frames as the module
does vpxenc's. The default template (webm), the bilingual README, the usage
documentation, CI (Linux x86_64 GCC/LLVM, Linux arm64 GCC, macOS, Windows,
the Web), release and template workflows. Until mcpp-index publishes the two
compat packages (mcpplibs/mcpp-index#624), CI resolves them from that PR's
branch (tools/candidate_index.py).
@Sunrisepeak
Sunrisepeak merged commit 676fceb into main Oct 29, 2026
7 checks passed
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.

1 participant