[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81917":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":27,"readmeContent":28,"aiSummary":29,"trendingCount":16,"starSnapshotCount":16,"syncStatus":30,"lastSyncTime":31,"discoverSource":32},81917,"avm","AOMediaCodec\u002Favm","AOMediaCodec","AVM (AOM Video Model) is the reference software for AV2 codec from Alliance for Open Media (https:\u002F\u002Faomedia.org\u002F).","https:\u002F\u002Fgithub.com\u002FAOMediaCodec\u002Favm",null,"C",163,17,5,18,0,3,31,133,15,75.27,"BSD 3-Clause Clear License",false,"main",true,[],"2026-06-12 04:01:36","# AVM\n\n## Building\n\n### Prerequisites\n\n 1. [CMake](https:\u002F\u002Fcmake.org) version 3.16 or higher.\n 2. [Git](https:\u002F\u002Fgit-scm.com\u002F).\n 3. [Perl](https:\u002F\u002Fwww.perl.org\u002F).\n 4. For x86 targets, [yasm](https:\u002F\u002Fwww.tortall.net\u002Fprojects\u002Fyasm\u002Freleases\u002F), which is preferred, or a\n    recent version of [nasm](http:\u002F\u002Fwww.nasm.us\u002F). If you download yasm with\n    the intention to work with Visual Studio, please download win32.exe or\n    win64.exe and rename it into yasm.exe. DO NOT download or use vsyasm.exe.\n 5. Building the documentation requires\n   [doxygen version 1.8.10 or newer](http:\u002F\u002Fdoxygen.org).\n 6. Building the unit tests requires [Python](https:\u002F\u002Fwww.python.org\u002F).\n\n### Get the code\n\nThe AVM project source code is stored in the Alliance of Open Media’s Github [repository](https:\u002F\u002Fgithub.com\u002FAOMediaCodec\u002Favm.git). To get the code,\n~~~\n    $ git clone https:\u002F\u002Fgithub.com\u002FAOMediaCodec\u002Favm.git\n    # By default, the above command stores the source in the avm directory:\n    $ cd avm\n~~~\n\n### Basic build\n\nCMake replaces the configure step typical of many projects. Running CMake will\nproduce configuration and build files for the currently selected CMake\ngenerator. For most systems the default generator is Unix Makefiles. The basic\nform of a makefile build is the following:\n\n~~~\n    $ cmake path\u002Fto\u002Favm\n    $ make\n~~~\n\nThe above will generate a makefile build that produces the AVM library and\napplications for the current host system after the make step completes\nsuccessfully. The compiler chosen varies by host platform, but a general rule\napplies: On systems where cc and c++ are present in $PATH at the time CMake is\nrun the generated build will use cc and c++ by default.\n\n### Configuration options\n\nThe AVM codec library has a great many configuration options. These come in two\nvarieties:\n\n 1. Build system configuration options. These have the form `ENABLE_FEATURE`.\n 2. AVM codec configuration options. These have the form `CONFIG_FEATURE`.\n\nBoth types of options are set at the time CMake is run. The following example\nenables ccache and disables the AVM encoder:\n\n~~~\n    $ cmake path\u002Fto\u002Favm -DENABLE_CCACHE=1 -DCONFIG_MULTITHREAD=0\n    $ make\n~~~\n\nThe available configuration options are too numerous to list here. Build system\nconfiguration options can be found at the top of the CMakeLists.txt file found\nin the root of the AVM repository, and AVM codec configuration options can\ncurrently be found in the file `cmake\u002Favm_config_defaults.cmake`.\n\n### Dylib builds\n\nA dylib (shared object) build of the AVM codec library can be enabled via the\nCMake built in variable `BUILD_SHARED_LIBS`:\n\n~~~\n    $ cmake path\u002Fto\u002Favm -DBUILD_SHARED_LIBS=1\n    $ make\n~~~\n\nThis is currently only supported on non-Windows targets.\n\n### Debugging\n\nDepending on the generator used there are multiple ways of going about\ndebugging AVM components. For single configuration generators like the Unix\nMakefiles generator, setting `CMAKE_BUILD_TYPE` to Debug is sufficient:\n\n~~~\n    $ cmake path\u002Fto\u002Favm -DCMAKE_BUILD_TYPE=Debug\n~~~\n\nFor Xcode, mainly because configuration controls for Xcode builds are buried two\nconfiguration windows deep and must be set for each subproject within the Xcode\nIDE individually, `CMAKE_CONFIGURATION_TYPES` should be set to Debug:\n\n~~~\n    $ cmake path\u002Fto\u002Favm -G Xcode -DCMAKE_CONFIGURATION_TYPES=Debug\n~~~\n\nFor Visual Studio the in-IDE configuration controls should be used. Simply set\nthe IDE project configuration to Debug to allow for stepping through the code.\n\nIn addition to the above it can sometimes be useful to debug only C and C++\ncode. To disable all assembly code and intrinsics set `AVM_TARGET_CPU` to\ngeneric at generation time:\n\n~~~\n    $ cmake path\u002Fto\u002Favm -DAVM_TARGET_CPU=generic\n~~~\n\n### Cross compiling\n\nFor the purposes of building the AVM codec and applications, relative to the scope of this guide,\nall builds for architectures differing from the native host architecture will be considered cross compiles.\nThe AVM CMake build handles cross compiling via the use of toolchain files included in the AVM repository.\nThe available toolchain files can be found at cmake folder in the AVM repository.\nThe following example demonstrates use of the x86-linux.cmake toolchain file on a x86_64 linux host:\n\n~~~\n    $ cmake path\u002Fto\u002Favm \\\n      -DCMAKE_TOOLCHAIN_FILE=path\u002Fto\u002Favm\u002Fcmake\u002Ftoolchains\u002Fx86-linux.cmake\n    $ make\n~~~\n\n### Sanitizers\n\nSanitizer integration is built-in to the CMake build system. To enable a\nsanitizer, add `-DSANITIZE=\u003Ctype>` to the CMake command line. For example, to\nenable address sanitizer:\n\n~~~\n    $ cmake path\u002Fto\u002Favm -DSANITIZE=address\n    $ make\n~~~\n\nSanitizers available vary by platform, target, and compiler. Consult your\ncompiler documentation to determine which, if any, are available.\n\n### Microsoft Visual Studio builds\n\nBuilding the AVM codec library in Microsoft Visual Studio is supported. Visual\nStudio 2019 (16.7) or later is required. The following example demonstrates\ngenerating projects and a solution for the Microsoft IDE:\n\n~~~\n    # This does not require a bash shell; Command Prompt (cmd.exe) is fine.\n    # This assumes the build host is a Windows x64 computer.\n\n    # To build with Visual Studio 2019 for the x64 target:\n    $ cmake path\u002Fto\u002Favm -G \"Visual Studio 16 2019\"\n    $ cmake --build .\n\n    # To build with Visual Studio 2019 for the 32-bit x86 target:\n    $ cmake path\u002Fto\u002Favm -G \"Visual Studio 16 2019\" -A Win32\n    $ cmake --build .\n~~~\n\nNOTE: The build system targets Windows 7 or later by compiling files with\n`-D_WIN32_WINNT=0x0601`.\n\n### Xcode builds\n\nBuilding the AVM codec library in Xcode is supported. The following example\ndemonstrates generating an Xcode project:\n\n~~~\n    $ cmake path\u002Fto\u002Favm -G Xcode\n~~~\n\n### Build with VMAF support\n\nAfter installing\n[libvmaf.a](https:\u002F\u002Fgithub.com\u002FNetflix\u002Fvmaf\u002Fblob\u002Fmaster\u002Flibvmaf\u002FREADME.md),\nyou can use it with the encoder:\n\n~~~\n    $ cmake path\u002Fto\u002Favm -DCONFIG_TUNE_VMAF=1\n~~~\n\nPlease note that the default VMAF model\nwill be used unless you set the following flag when running the encoder:\n\n~~~\n    # --vmaf-model-path=path\u002Fto\u002Fmodel\n~~~\n\n## Testing\n\n### Testing basics\n\nThere are several methods of testing the AVM codec. All of these methods require\nthe presence of the AVM source code and a working build of the AVM library and\napplications.\n\n#### 1. Unit tests:\n\nThe unit tests can be run at build time:\n\n~~~\n    # Before running the make command the LIBAVM_TEST_DATA_PATH environment\n    # variable should be set to avoid downloading the test files to the\n    # cmake build configuration directory.\n    $ cmake path\u002Fto\u002Favm\n    # Note: The AVM CMake build creates many test targets. Running make\n    # with multiple jobs will speed up the test run significantly.\n    $ make runtests\n~~~\n\n#### 2. Example tests:\n\nThe example tests require a bash shell and can be run in the following manner:\n\n~~~\n    # See the note above about LIBAVM_TEST_DATA_PATH above.\n    $ cmake path\u002Fto\u002Favm\n    $ make\n    # It's best to build the testdata target using many make jobs.\n    # Running it like this will verify and download (if necessary)\n    # one at a time, which takes a while.\n    $ make testdata\n    $ path\u002Fto\u002Favm\u002Ftest\u002Fexamples.sh --bin-path examples\n~~~\n\n### Downloading the test data\n\nThe fastest and easiest way to obtain the test data is to use CMake to generate\na build using the Unix Makefiles generator, and then to build only the testdata\nrule:\n\n~~~\n    $ cmake path\u002Fto\u002Favm -G \"Unix Makefiles\"\n    # 28 is used because there are 28 test files as of this writing.\n    $ make -j28 testdata\n~~~\n\nThe above make command will only download and verify the test data.\n\n### Sharded testing\n\nThe AVM codec library unit tests are built upon gtest which supports sharding of test jobs.\nSharded tests can be achieved as follows for example:\n\n~~~\n   # Set the environment variable GTEST_TOTAL_SHARDS to control the number of\n   # shards.\n   $ export GTEST_TOTAL_SHARDS=10\n   # (GTEST shard indexing is 0 based).\n   $ seq 0 $(( $GTEST_TOTAL_SHARDS - 1 )) \\\n       | xargs -n 1 -P 0 -I{} env GTEST_SHARD_INDEX={} .\u002Ftest_libavm\n~~~\n\nTo create a test shard for each CPU core available on the current system set\n`GTEST_TOTAL_SHARDS` to the number of CPU cores on your system minus one.\nThe maximum number of test targets that can run concurrently is determined by\nthe number of CPUs on the system where the build is configured as detected by\nCMake. A system with 24 cores can run 24 test shards using a value of 24 with\nthe `-j` parameter. When CMake is unable to detect the number of cores 10 shards\nis the default maximum value.\n\n### Common Test Conditions (CTC)\n\nCTC document can be found [here](https:\u002F\u002Faomedia.org\u002Fdocs\u002FCWG-G082_AV2_CTC_v9.pdf) and\nCTC sequences can be obtained from [here](https:\u002F\u002Fmedia.xiph.org\u002Fvideo\u002Faomctc\u002Ftest_set\u002F).\n\n## Coding style\n\nWe are using the Google C Coding Style defined by the\n[Google C++ Style Guide](https:\u002F\u002Fgoogle.github.io\u002Fstyleguide\u002Fcppguide.html).\n\nThe coding style used by this project is enforced with `clang-format` and\n`cmake-format`.\n\n- `clang-format` can be installed with your system's package manager, or directly\nfrom [llvm.org](http:\u002F\u002Fllvm.org\u002Freleases\u002Fdownload.html). For best results, your\nversion should match the one used by Github Actions, noted as a comment in\n[.clang-format](https:\u002F\u002Fgithub.com\u002FAOMediaCodec\u002Favm\u002Fblob\u002Fmain\u002F.clang-format).\n\n- `cmake-format` can be obtained by installing\n[cmakelang](https:\u002F\u002Fpypi.org\u002Fproject\u002Fcmakelang\u002F). Again, for best results, your\nversion should match the one used by Github Actions, noted as a comment in\n[.cmake-format.py](https:\u002F\u002Fgithub.com\u002FAOMediaCodec\u002Favm\u002Fblob\u002Fmain\u002F.cmake-format.py)\n\n\nBefore pushing changes for review, format your code using the tools above.\n\nWe recommend automating the formatting by adding a\n[pre-commit hook](https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgithooks#_pre_commit) at\n`.git\u002Fhooks\u002Fpre-commit`. An example pre-commit hook is provided below:\n\n~~~\n#!\u002Fbin\u002Fbash\n# Replace 'VERSION' below to match clang-format version in `.clang-format` file.\nCLANG_FORMAT_PATH=\u002Fusr\u002Flib\u002Fllvm-VERSION\u002Fbin\nCMAKE_FORMAT_PATH=${HOME}\u002F.local\u002Fbin\u002F\n\necho \"Applying clang-format ...\"\nfor file in $(git diff-index --cached --name-only HEAD -- \"*.[hc]pp\" \"*.cc\" \"*.[ch]\") ; do\n  ${CLANG_FORMAT_PATH}\u002Fclang-format -i --style=file ${file}\n  git add ${file}\n  echo \"Formatted file: $file\"\ndone\necho \"Done.\"\n\necho \"Applying cmake-format ...\"\nfor file in $(git diff-index --cached --name-only HEAD -- '*.cmake' CMakeLists.txt) ; do\n  ${CMAKE_FORMAT_PATH}\u002Fcmake-format -i ${file}\n  git add ${file}\n  echo \"Formatted file: $file\"\ndone\necho \"Done.\"\n~~~\n\n## Submitting patches\n\nWe manage the submission of patches using Github's\n[pull request](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpull-requests\u002Fcollaborating-with-pull-requests\u002Fproposing-changes-to-your-work-with-pull-requests\u002Fabout-pull-requests) process.\nThis tool implements a workflow on top of the Git version control system to ensure that\nall changes get peer reviewed and tested prior to their distribution.\nIf you are not able to submit an PR, please contact SW coordinators to make sure necessary\ncontributor agreements are signed for the AOMedia Project.\n\n- Follow the one-time set-up steps as detailed [here](https:\u002F\u002Fgithub.com\u002FAOMediaCodec\u002Favm\u002Fwiki\u002FAVM:-Software-Development-Workflow#1-one-time-setup).\n- For pushing your code modifications, follow the steps detailed [here](https:\u002F\u002Fgithub.com\u002FAOMediaCodec\u002Favm\u002Fwiki\u002FAVM:-Software-Development-Workflow#2-develop-a-tool--feature--bugfix-in-your-fork).\n- Once the code is pushed into a branch, create a pull request as detailed [here](https:\u002F\u002Fgithub.com\u002FAOMediaCodec\u002Favm\u002Fwiki\u002FAVM:-Software-Development-Workflow#3-create-a-pull-request-pr).\n    - The code review, approval and Github Actions will be initiated after the PR is created.\n    - Once the PR is approved, the software co-ordinators will merge the PR to the main branch.\n\nFollow the pull request page to check the status of the changes, review comments etc.\n\n\n## Support\n\nThis library is an open source project supported by its community.\nPlease email https:\u002F\u002Faomedia.org\u002Fcontact\u002F for help.\n\n## Bug reports\n\nBug reports can be filed in the Alliance for Open Media\n[Github issue tracker](https:\u002F\u002Fgithub.com\u002FAOMediaCodec\u002Favm\u002Fissues).\n","AVM (AOM Video Model) 是由开放媒体联盟（AOMedia）开发的AV2编解码器参考软件。该项目使用C语言编写，具备强大的视频编码与解码能力，支持多种配置选项以适应不同需求，包括通过CMake进行灵活的构建配置和优化。它还提供了对多线程处理的支持，并允许用户选择生成动态链接库。适用于需要高性能视频压缩的应用场景，如视频流传输、在线会议系统以及视频存储服务等。项目采用BSD 3-Clause Clear License许可协议，确保了广泛的适用性和二次开发的可能性。",2,"2026-06-11 04:07:12","CREATED_QUERY"]