Skip to content

Releases

发版:ModAVDExtras v0.2.0 进 release/0.40(随 ModAVD 0.40.2) (#17)

Choose a tag to compare

@github-actions github-actions released this 13 Nov 21:19
0d6ddbc

ModAVDExtras v0.2.0

  • modavd_extras.dll:6fe84a40a5aa8da31d1a24492bf860b6912bf322e29d3bdba73bd80a34fa61da
  • external_renderer_ipc.dll:7ce6ea8c0c01c14dcb5ce3cd4271e2fa9a147b3f3c4c57878e8cec8dff52f89f
  • libmodavd_extras.dylib:b6ea821c5710d07411412011ac32e62718b8f9412451017609411ecb958a9c9a
  • libmodavd_extras.so:9e870a02f864c9072111b89df77c2747ac5fabd4a4b2a2ee150d093c558cc8d0

这一版加上点击:头文件里预留的 modavd_touch_* 能用了,接口版本升到 2。截图和 MuMu 外壳的行为不变。

新增

  • 点击(MODAVD_CAP_TOUCH):modavd_touch_down、modavd_touch_move、modavd_touch_up、modavd_touch_release_all(#15)。
    • 走模拟器控制台,按多点触控协议发到模拟器自己的虚拟触屏:安卓看到的是手指在屏幕上,客体里不用装任何东西。
    • 坐标是共享画面的像素,最多 10 根手指同时按下;pressure 给 0 就用模拟器窗口鼠标点击时的默认值。只支持显示屏 0。
    • 第一次点击时连上控制台,之后一直用这条连接;模拟器重启、连接断了,下一次点击重连一次。modavd_close() 会先抬起这个句柄按下的手指。
    • 还没有画面时(不知道屏幕尺寸),按下和移动返回 MODAVD_E_NOT_READY。
  • modavd_api_version() 返回 2,modavd_capabilities() 多了 MODAVD_CAP_TOUCH。
  • modavd_version_string() 返回 "0.2.0"。

说明

  • 按键和输入文字(modavd_key、modavd_input_text)照旧返回 MODAVD_E_UNSUPPORTED:控制台发的按键会进触屏设备、被丢掉,输入文字会丢掉键盘映射里没有的字,这两样以后另做。
  • 只认接口版本 1 的程序不受影响:接口版本 1 的函数和行为都没变。
  • external_renderer_ipc.dll 的源码没改,但它静态链接了库的代码,所以文件和 v0.1.3 不一样。

许可证与源码

下载与核对

四个文件都由本仓库的 release workflow 在 GitHub 上编出,和 tag 下的 release/0.2.0.SHA256SUMS.txt 核对过才上传。编译环境和 v0.1.3 一样:

  • Windows:windows-2025,cmake -A x64,--config Release。两个 DLL 都静态链接 C 运行库,只依赖 KERNEL32、WS2_32,编译带 /Brepro。
  • macOS:macos-15(Apple Silicon),cmake -DCMAKE_BUILD_TYPE=Release。
  • Linux:ubuntu-24.04(x64),cmake -DCMAKE_BUILD_TYPE=Release。

请用附件 SHA256SUMS.txt 核对:Windows 上 Get-FileHash .\modavd_extras.dll -Algorithm SHA256,macOS 上 shasum -a 256 libmodavd_extras.dylib,Linux 上 sha256sum libmodavd_extras.so。

English

This release adds touch: the modavd_touch_* functions reserved in the header now work, and the API version is 2. Capture and the MuMu shim behave as before.

  • Touch (MODAVD_CAP_TOUCH): modavd_touch_down, modavd_touch_move, modavd_touch_up, modavd_touch_release_all (#15). They go through the emulator console as multi-touch events on the emulator's own virtual touch screen, so Android sees a finger on the screen and nothing is needed in the guest. Coordinates are pixels of the shared frame; up to 10 contacts at once; pressure 0 uses the default of a mouse click on the emulator window; display 0 only. The console session opens on the first touch and is kept; if it broke (the emulator restarted) the next touch reconnects once. modavd_close() lifts the contacts the handle pressed. Before the first frame (display size unknown) down and move return MODAVD_E_NOT_READY.
  • modavd_api_version() returns 2, modavd_capabilities() adds MODAVD_CAP_TOUCH, modavd_version_string() returns "0.2.0".
  • Keys and text (modavd_key, modavd_input_text) still return MODAVD_E_UNSUPPORTED. API version 1 functions are unchanged. external_renderer_ipc.dll has no source changes, but it links the library code statically, so the file differs from v0.1.3.
  • License: LGPL-3.0-or-later; the texts are LICENSE (LGPL-3.0) and COPYING (GPL-3.0) at the tag. Ship them with the libraries. Source: https://github.com/ModAVD/ModAVDExtras/tree/v0.2.0.
  • All four files are built by this repository's release workflow on GitHub, the same way as v0.1.3, and checked against release/0.2.0.SHA256SUMS.txt at the tag before upload. Check them with the attached SHA256SUMS.txt.

发版:ModAVDExtras v0.1.3 (#13)

Choose a tag to compare

@github-actions github-actions released this 12 Nov 23:17
9156dfc

ModAVDExtras v0.1.3

  • modavd_extras.dll:5ea1f80b23537886b05503e441691956d34381c93efe7b664777bd85bd653cdb
  • external_renderer_ipc.dll:0fecc13ef0064ac8cf4e65934b75c32a555d6e7d50490ed84947b1eff7221acc
  • libmodavd_extras.dylib:df53353f70adfe48853626fda103eb82197fa94d3caaf019f861787204467e53
  • libmodavd_extras.so:df76579f3b6f583eed78650d28ea11aea69fadbf934dcfc79c73c84e5321c8e8

这一版只改 MuMu 外壳 external_renderer_ipc.dll:在 MAA 里填的实例编号直接就是 ModAVD 的编号,根目录改过端口段也不用自己算端口。截图库本身行为不变,接口版本还是 1。

变更

  • external_renderer_ipc.dll:收到小于 5554 的 index 时当成 ModAVD 的实例编号,控制台端口按外壳所在根目录 mas-avd.json 的 portBase 算(portBase + 10×编号)(#12)。
    • ModAVD 包会把外壳放在 <根目录>\mumu-shim\shell\sdk\;MAA 的 MuMu 路径填 <根目录>\mumu-shim,外壳从 MuMu 路径的上一级读 mas-avd.json。
    • portBase 读不到、或者不是 1100–65400 之间 100 的整数倍,照旧按 20000 算。
    • 控制台端口(≥ 5554)照旧原样认。
  • modavd_version_string() 返回 "0.1.3"。

许可证与源码

下载与核对

四个文件都由本仓库的 release workflow 在 GitHub 上编出,和 tag 下的 release/0.1.3.SHA256SUMS.txt 核对过才上传。编译环境和 v0.1.2 一样:

  • Windows:windows-2025,cmake -A x64,--config Release。两个 DLL 都静态链接 C 运行库,只依赖 KERNEL32、WS2_32,编译带 /Brepro。
  • macOS:macos-15(Apple Silicon),cmake -DCMAKE_BUILD_TYPE=Release。
  • Linux:ubuntu-24.04(x64),cmake -DCMAKE_BUILD_TYPE=Release。

请用附件 SHA256SUMS.txt 核对:Windows 上 Get-FileHash .\modavd_extras.dll -Algorithm SHA256,macOS 上 shasum -a 256 libmodavd_extras.dylib,Linux 上 sha256sum libmodavd_extras.so。

English

This release only changes the MuMu shim external_renderer_ipc.dll: the instance index entered in MAA is the ModAVD instance index, and a root with its own port range needs no port arithmetic. The capture library itself is unchanged; the API version is still 1.

  • external_renderer_ipc.dll: an index below 5554 is taken as a ModAVD instance index, and the console port is portBase + 10 × index, with portBase read from mas-avd.json in the root the shim sits in (#12). The ModAVD package puts the shim in <root>\mumu-shim\shell\sdk\; MAA's MuMu path is <root>\mumu-shim, and the shim reads mas-avd.json one level above it. Without a valid portBase (a multiple of 100 between 1100 and 65400) it uses 20000 as before. Console ports (5554 and above) are still taken as they are.
  • modavd_version_string() returns "0.1.3".
  • License: LGPL-3.0-or-later; the texts are LICENSE (LGPL-3.0) and COPYING (GPL-3.0) at the tag. Ship them with the libraries. Source: https://github.com/ModAVD/ModAVDExtras/tree/v0.1.3.
  • All four files are built by this repository's release workflow on GitHub, the same way as v0.1.2, and checked against release/0.1.3.SHA256SUMS.txt at the tag before upload. Check them with the attached SHA256SUMS.txt.

v0.1.2:Release 加上 macOS、Linux 的库 (#10)

Choose a tag to compare

@github-actions github-actions released this 10 Nov 14:53
036bb5d

ModAVDExtras v0.1.2

  • modavd_extras.dll:a5ef972919d76c7821225ada2d67d322b2f0128e195ba34d69bbf9aa9759daba
  • external_renderer_ipc.dll:8a0a82a59745da36e93eba6278dbacfab67616a415fd0780b24a9b03f7bb99ed
  • libmodavd_extras.dylib:84fbbdd76fc3262bae9e058777d4bc20c800426883ce3f47ac29ec7d2ed5cb62
  • libmodavd_extras.so:c18c2b2f1f00346b944c2bd85213b8654b557fbe7dc7bd04670e84e782cbef56

这一版起 Release 也带 macOS、Linux 的库;另外修了 Linux、macOS 上截图会拿到旧画面的问题。接口版本还是 1,头文件只改了注释,调用方不用重编。

新增

  • macOS arm64 的 libmodavd_extras.dylib(macOS 12 起能载入)和 Linux x64 的 libmodavd_extras.so(要 glibc 2.34 或更新)。
    • 接口和 Windows 的 modavd_extras.dll 一样,见 include/modavd_extras.h。
    • macOS 上有贡献者在 Apple Silicon 上用官方 Emulator 37.2.13、API 35 ARM64 实测过截图。Linux 还没有在模拟器上实测。

修复

  • Linux、macOS:模拟器退出后共享内存还在,下次冷启动时库直接认了上次的末帧,截到的一直是旧画面(#8)。现在 modavd_open 默认先经控制台开流,成功了才打开映射;控制台鉴权或命令失败时返回 MODAVD_E_IO,不再被旧映射掩盖。确定映射属于当前实例、而且已经在开流的,可以带 MODAVD_OPEN_NO_START 跳过控制台。
  • 所有平台:开了流、第一帧还没到时,modavd_capture 返回 MODAVD_E_NOT_READY,以前返回成功和一张全黑的图(#8)。稍后再调就行。
  • external_renderer_ipc.dll:行为不变。第一帧到之前照旧交出尺寸和黑图、返回成功,和它替换的 DLL 一样,因为 MaaCore 连上时马上要问尺寸,失败就放弃这条路(#9)。
  • modavd_version_string() 返回 "0.1.2"。

许可证与源码

下载与核对

四个文件都由本仓库的 release workflow 在 GitHub 上编出,和 tag 下的 release/0.1.2.SHA256SUMS.txt 核对过才上传:

  • Windows:windows-2025,cmake -A x64,--config Release。两个 DLL 都静态链接 C 运行库,只依赖 KERNEL32、WS2_32。编译带 /Brepro:同样的命令、同一版本的 MSVC 和 Windows SDK 能编出相同的字节。MSVC 版本在 workflow 日志里 CMake 配置那一步,Windows SDK 跟着 runner 镜像,镜像版本在「Set up job」那一步。
  • macOS:macos-15(Apple Silicon),cmake -DCMAKE_BUILD_TYPE=Release。
  • Linux:ubuntu-24.04(x64),cmake -DCMAKE_BUILD_TYPE=Release。

请用附件 SHA256SUMS.txt 核对:Windows 上 Get-FileHash .\modavd_extras.dll -Algorithm SHA256,macOS 上 shasum -a 256 libmodavd_extras.dylib,Linux 上 sha256sum libmodavd_extras.so。

English

From this release the releases also carry the macOS and Linux libraries, and a Linux / macOS issue where capture returned a stale frame is fixed. The API version is still 1 and only comments changed in the header, so callers need not rebuild.

  • New: libmodavd_extras.dylib for macOS arm64 (loads on macOS 12 and later) and libmodavd_extras.so for Linux x64 (needs glibc 2.34 or later), with the same API as modavd_extras.dll (include/modavd_extras.h). A contributor tested capture on Apple Silicon with the official Emulator 37.2.13 and API 35 ARM64; Linux has not been tested with an emulator yet.
  • Fixed on Linux and macOS: the shared memory outlives the emulator, so on the next cold boot the library took the last frame of the previous run and kept returning it (#8). By default modavd_open now starts frame sharing through the console before it opens the mapping; console auth or command failures return MODAVD_E_IO instead of being hidden by an old mapping. Callers that know the mapping belongs to the running instance and sharing is on can pass MODAVD_OPEN_NO_START to skip the console.
  • Fixed on all platforms: after sharing starts and before the first frame arrives, modavd_capture returns MODAVD_E_NOT_READY instead of success and an all-black frame (#8). Call again a little later.
  • external_renderer_ipc.dll: unchanged behaviour. Before the first frame it still reports the size and a black frame with success, as the DLL it replaces did, because MaaCore asks for the size right after connecting and gives up on that path if it fails (#9).
  • modavd_version_string() returns "0.1.2".
  • License: LGPL-3.0-or-later; the texts are LICENSE (LGPL-3.0) and COPYING (GPL-3.0) at the tag. Ship them with the libraries. Source: https://github.com/ModAVD/ModAVDExtras/tree/v0.1.2.
  • All four files are built by this repository's release workflow on GitHub (Windows: windows-2025, cmake -A x64, --config Release, with /Brepro, static C runtime, depending only on KERNEL32 and WS2_32; macOS: macos-15 on Apple Silicon; Linux: ubuntu-24.04 x64; both cmake -DCMAKE_BUILD_TYPE=Release) and checked against release/0.1.2.SHA256SUMS.txt at the tag before upload. Check them with the attached SHA256SUMS.txt.

v0.1.1:版本号、发版说明和哈希 (#7)

Choose a tag to compare

@github-actions github-actions released this 08 Nov 11:31
3fa5b1d

ModAVDExtras v0.1.1

  • modavd_extras.dll:95b09e1c295f83eb4ae3f11555b6b0954f1db6f989bd669a7a2ef6d4a97ba015
  • external_renderer_ipc.dll:ae9c582e29bebacd12b66c34743775ba58a0f5271cf3ed8732e77b3137bb6f34

修正一处截图的返回值。附件照旧是 Windows x64 的两个 DLL;接口版本还是 1,头文件只改了注释,调用方不用重编。

改了什么

  • modavd_extras.dll:拷贝途中次次来新帧时,modavd_capture 返回 MODAVD_E_NOT_READY(#6)。
    • 模拟器写截图共享内存不加锁,库拷完比一下帧号,变了就重拷,连第一次最多拷 3 次。v0.1.0 里 3 次都撞上新帧也返回 MODAVD_OK,交出去的图可能是两帧拼起来的。现在返回 MODAVD_E_NOT_READY 并记一条警告,再截一次就行。
    • 没有新的出错码:MODAVD_E_NOT_READY 原来表示截图共享没开、还没有画面,现在也包括这种情况。
    • 实际很难碰到:拷一帧约 0.1 ms,模拟器约 16 ms 写一帧。
  • external_renderer_ipc.dll:行为不变。这种情况下照旧把最后一次拷贝交出去、返回成功,和它替换的 DLL 一样,因为 MaaCore 的 MuMu 那条路截图一失败就会重新测速。
  • 转换代码没动,BGR 按 16 像素一块转换的提速已在 v0.1.0 里。modavd_version_string() 返回 "0.1.1"。
  • 其余同 v0.1.0:两个 DLL 都静态链接 C 运行库,只依赖 KERNEL32、WS2_32。

许可证与源码

下载与核对

两个 DLL 由本仓库的 release workflow 在 GitHub 的 windows-2025 上编出(cmake -A x64,--config Release),和 tag 下的 release/0.1.1.SHA256SUMS.txt 核对过才上传。请用附件 SHA256SUMS.txt 核对,例如在 PowerShell 里运行 Get-FileHash .\modavd_extras.dll -Algorithm SHA256。编译带 /Brepro:用同样的命令、同一版本的 MSVC 和 Windows SDK 编,能得到相同的字节。MSVC 版本在 workflow 日志里 CMake 配置那一步能看到,Windows SDK 跟着 runner 镜像,镜像版本在「Set up job」那一步。

English

A fix to one capture return value. As before, the release attaches the two Windows x64 DLLs; the API version is still 1 and only comments changed in the header, so callers need not rebuild.

  • modavd_extras.dll: modavd_capture returns MODAVD_E_NOT_READY when a new frame arrives during every copy (#6). The emulator writes the frame-sharing memory without a lock, so the library compares the frame number around each copy and copies again when it changed, up to 3 copies in all. In v0.1.0 it returned MODAVD_OK even when all 3 copies were overtaken, and the frame handed back could mix two frames. It now returns MODAVD_E_NOT_READY and logs a warning; call again. There is no new error code: MODAVD_E_NOT_READY already meant frame sharing is off or no frame was composed yet, and now covers this case too. It is rare in practice: a copy takes about 0.1 ms and the emulator writes a frame about every 16 ms.
  • external_renderer_ipc.dll: unchanged behaviour. In this case it still hands over the last copy and returns success, as the DLL it replaces did, because MaaCore's MuMu path drops back to its screencap speed test after a failed capture.
  • The conversion code is unchanged; the 16-pixel BGR conversion is already in v0.1.0. modavd_version_string() returns "0.1.1".
  • Everything else is as in v0.1.0: both DLLs link the C runtime statically and depend only on KERNEL32 and WS2_32.
  • License: LGPL-3.0-or-later; the texts are LICENSE (LGPL-3.0) and COPYING (GPL-3.0) at the tag. Ship them with the DLLs. Source: https://github.com/ModAVD/ModAVDExtras/tree/v0.1.1.
  • The DLLs are built by this repository's release workflow on GitHub's windows-2025 (cmake -A x64, --config Release) and checked against release/0.1.1.SHA256SUMS.txt at the tag before upload. Check them with the attached SHA256SUMS.txt. The build uses /Brepro: the same commands with the same MSVC and Windows SDK versions give the same bytes. The MSVC version shows in the CMake configure step of the workflow log; the Windows SDK comes with the runner image, whose version shows in the "Set up job" step.

发版 workflow 和 v0.1.0 的说明、哈希 (#5)

Choose a tag to compare

@github-actions github-actions released this 07 Nov 22:35
ed7b8ad

ModAVDExtras v0.1.0

  • modavd_extras.dll:84719e698c4679185eea9b194dfd33bbecadd05fb4d9bfaf9bba0398aa65f8e3
  • external_renderer_ipc.dll:3e55150f1cc0c702e0b9b41dd9f248e99363aaa7c07d881660143f0cd36b4c45

第一个版本,只有截图,附件是 Windows x64 的两个 DLL。Linux、macOS 能从源码编,这一版不出二进制。

两个 DLL

  • modavd_extras.dll:ModAVD 自己的截图库,C 接口,见 include/modavd_extras.h(接口版本 1)。
    • 从 ModAVD 实例的截图共享内存直接取画面,不经 adb。按 adb 地址(127.0.0.1:<adb 端口>、emulator-<控制台端口>)或控制台端口找到实例。
    • 交出 BGR、RGBA 或 BGRA,正向或倒向。新帧写到一半时重拷;共享内存没开时经模拟器控制台打开。
    • 出错返回错误码,不自己退回 adb,由调用方决定换什么办法。
    • 点击、按键、文字的函数已经声明,这一版返回 MODAVD_E_UNSUPPORTED。
  • external_renderer_ipc.dll:兼容外壳,只在 Windows 上用。
    • 导出和 MuMu 同名 DLL 一样的四个截图函数(nemu_connect、nemu_disconnect、nemu_capture_display、nemu_get_display_id),让还不认识 ModAVD 的 MAA 走「MuMu 截图增强」那条路。不导出输入函数,MAA 照旧用 MaaTouch 点击。
    • 用来替换 AUTO-MAS 里原来的伪装 DLL(res/avdshim):导出、实例编号的换算、返回值都一样,截出的图逐字节相同。日志有三处不同:经控制台开截图时不再记 console <端口> webrtc start -> OK;连接失败时多一行 port=<端口>: shared memory unavailable,外壳自己那行末尾多出错原因;控制台没人应答时直接返回 0,不再多等约 2 秒。
  • 两个 DLL 都静态链接 C 运行库,只依赖 KERNEL32、WS2_32。

速度

截一帧的耗时,p50,单位 ms(Windows,7950X3D,测试实例停在桌面,三种实现轮流各截 500 次 × 3 轮):

720p 1080p
原来的伪装 DLL(RGBA,倒向) 0.28–0.30 0.68–0.70
external_renderer_ipc.dll(同上) 0.11–0.12 0.28–0.31
modavd_extras.dll,BGR 正向 0.06–0.07 0.13

许可证与源码

下载与核对

两个 DLL 由本仓库的 release workflow 在 GitHub 的 windows-2025 上编出(cmake -A x64,--config Release),和 tag 下的 release/0.1.0.SHA256SUMS.txt 核对过才上传。请用附件 SHA256SUMS.txt 核对,例如在 PowerShell 里运行 Get-FileHash .\modavd_extras.dll -Algorithm SHA256。编译带 /Brepro:用同样的命令、同一版本的 MSVC 和 Windows SDK 编,能得到相同的字节;这两个版本在 workflow 日志里 CMake 配置那一步能看到。

English

The first release: screen capture only. Attached are the two Windows x64 DLLs; Linux and macOS build from source, with no binaries in this release.

  • modavd_extras.dll is ModAVD's own capture library with a C interface (include/modavd_extras.h, API version 1). It reads frames straight from a ModAVD instance's frame-sharing memory, without adb, finding the instance from an adb address (127.0.0.1:<adb port>, emulator-<console port>) or a console port. It returns BGR, RGBA or BGRA, top-down or bottom-up; copies again when a new frame lands mid-copy; turns frame sharing on through the emulator console when it is off; and returns an error code instead of falling back to adb. The input functions are declared and return MODAVD_E_UNSUPPORTED in this release.
  • external_renderer_ipc.dll is a Windows-only compatibility shell. It exports the four capture functions of MuMu's DLL of the same name, so MAA versions that do not know ModAVD can capture through the "MuMu screenshot enhancement" path; touch stays on MaaTouch. It replaces the impersonation DLL in AUTO-MAS (res/avdshim) with the same exports, index mapping and return values, and byte-identical frames. Its log differs in three places: no console <port> webrtc start -> OK line; on a failed connect an extra port=<port>: shared memory unavailable line and the reason at the end of the shell's own line; and no extra wait of about 2 s when the console does not answer.
  • Both DLLs link the C runtime statically and depend only on KERNEL32 and WS2_32.
  • Capture time, p50 in ms (720p / 1080p): the old impersonation DLL 0.28–0.30 / 0.68–0.70; external_renderer_ipc.dll 0.11–0.12 / 0.28–0.31; modavd_extras.dll BGR top-down 0.06–0.07 / 0.13.
  • License: LGPL-3.0-or-later; the texts are LICENSE (LGPL-3.0) and COPYING (GPL-3.0) at the tag. Ship them with the DLLs. Source: https://github.com/ModAVD/ModAVDExtras/tree/v0.1.0.
  • The DLLs are built by this repository's release workflow on GitHub's windows-2025 (cmake -A x64, --config Release) and checked against release/0.1.0.SHA256SUMS.txt at the tag before upload. Check them with the attached SHA256SUMS.txt. The build uses /Brepro: the same commands with the same MSVC and Windows SDK versions give the same bytes; both versions show in the CMake configure step of the workflow log.