Skip to content

Sync rebuilt IJK three-ABI native bundles - #4265

Merged
CarGuo merged 2 commits into
masterfrom
codex/ijk-allfix-https16k-so-20261105
Nov 5, 2026
Merged

CarGuo merged 2 commits into
masterfrom
codex/ijk-allfix-https16k-so-20261105

Conversation

@CarGuo

@CarGuo CarGuo commented Nov 5, 2026 •

Copy link
Copy Markdown
Owner

This update imports the complete matched ARM64, ARMv7 and x86_64 IJK native tuples from merged IJK commit 896674e7a249f3d87a831adb2ac5c2b31d55aeff, including PR #2 sizing and the opt-in H.264 crop workaround. The crop option remains off by default.

Integration testing — 2026-11-05

Tested head: 043a65e277c74a94b183d85c053826da9fbf6e9d. The maintainer requested merging this PR and testing both #4264 and #4265. These results supersede the earlier draft's “HTTPS not reached” observation for physical ARM testing, while retaining its original emulator failures and limits below.

  • Exact-head GitHub Build and MavenLocal publishing checks passed for both PRs. The unchanged Java/manager inputs passed the 48-check host session suite.
  • Locally rebuilt four Release AARs for each PR and the complete Sync rebuilt IJK three-ABI native bundles #4265 Debug application APK. All packaged IJK libraries matched their PR files. The Debug APK passed signature verification and zipalign -c -P 16; SHA-256: 7a118ae5184ffa7385d33eb590ce896d00c601c3cff3e48391b31675fa566bc6.
  • Independent SHA, remote Git blob/mode, ABI/ELF, alignment and symbol-pairing checks passed. Original PR 获取当前播放时间怎么得到啊 #2 sizing tests passed ordinary compilation and ASan/UBSan, using source bytes independently matched to the pinned upstream commit.
  • On Redmi M2104K10AC / Android 13 / 4,096-byte pages, installed APK/library hashes and actual ARM64/ARMv7 process identities were verified. Tests used the real IJK JNI wrapper and TextureView frames, with media work on a HandlerThread.
  • Sync rebuilt IJK three-ABI native bundles #4265 strict TLS 1.2 HTTPS playback completed with decoded frames on both ARM ABIs. Wrong-CA and wrong-hostname cases had a successful trusted prerequisite, explicit client errors, zero preparation/frame output, server certificate alerts and no successful handshake/HTTP request. Actual-library CA-loading probes also passed both ABIs.
  • For the fixed 12-second ABCA fixture, the frozen independent pixel classifier and reported visible geometry matched A 640×360 → B 640×272 → C 480×272 → A 640×360 at four interior samples on both Sync rebuilt IJK three-ABI native bundles #4265 ARM ABIs with the crop option enabled. Default-OFF controls in both PRs retained the initial crop. This is sampled crop-content/geometry evidence, not every-frame, seek-history or GSY UI aspect-ratio qualification.

Retained runtime failures — not resolved

The initial #4265 ARM64 continuous suite passed 7/9 procedures: HEVC and crop-enabled ordinary H.264 produced frames but did not complete within the original timeout. ARMv7 passed 9/9. Separate cold-process A/B controls for HEVC and crop-enabled H.264 passed all four checks across #4264/#4265.

One final identical nine-case continuous A/B sequence was then run, without retrying to obtain a green result:

The failure therefore also occurs in the existing #4264 baseline. Neither a common root cause nor absence of regressions has been proved. Native output/EOS ownership code is unchanged in the source comparison. The #4264 Java timeout stack includes MediaCodec.native_dequeueInputBuffer; native stack reads were denied, and futex/CPU samples do not prove an EOS lock diagnosis. The #4265 timeout does not provide an equivalent Java call stack. No production workaround, assertion relaxation or SO change was made.

An earlier shared-Surface test harness attempt also failed hardware selection assertions after Surface connection failures. It is retained separately; the final independent cases used fresh Surfaces and the original default codec selector. That harness correction is not a production lifecycle fix.

Remaining limits

  • Continuous hardware-decoder completion stability remains unresolved in both versions. This merge must not be described as all tests passing or full release qualification.
  • This round did not run x86_64 or a 16 KiB runtime. Package/ELF alignment does not establish playback on those systems. The earlier IncrementalFS SIGBUS and emulator Surface failures remain part of the historical evidence.
  • The direct-IJK playback harness is not a complete GSY application runtime regression. Existing tracked IJK_THREE_ABI_SO_UPDATE.md and build-guide draft wording remains the earlier evidence snapshot and still needs a later documentation sync.
  • All exact SO bytes, defaults and source pins in this PR remain unchanged by this integration test.
Earlier draft snapshot and retained emulator failure record

Draft only: do not merge

The native bundle and documentation are ready for draft review. This PR is not ready to merge or release, and does not claim usable HTTPS playback or complete 16 KiB runtime qualification.

Scope

  • Import the complete fresh build from CarGuo/ijkplayer 896674e7a249f3d87a831adb2ac5c2b31d55aeff, including merged PR 开放接口控制播放暂停 #4 and the earlier PR 获取当前播放时间怎么得到啊 #2 output-format sizing fix.
  • Replace each matched libijkffmpeg.so / libijksdl.so / libijkplayer.so tuple for arm64-v8a, armeabi-v7a and x86_64 in both the standalone ABI module and gsyVideoPlayer-ex_so: nine unique SOs, 18 paths.
  • Add doc/IJK_THREE_ABI_SO_UPDATE.md with exact SHA-256 values, source/dependency pins and runtime/security limits, and link it from both build guides.
  • Preserve existing file modes. Leave Java, backend/default behavior, legacy armeabi/x86, RTMP and the historical PR 获取当前播放时间怎么得到啊 #2 record unchanged.
  • Use NDK r22b, FFmpeg n5.1.10 plus the pinned integration patches, and OpenSSL 3.5.9. The final SOs have not been padded or changed after the original fresh build.

Verified for these exact binaries

  • All three ABI builds completed. An independent audit passed all 135 focused SHA, ELF, feature, version and build-manifest checks.
  • ARM64 and x86_64 have 16,384-byte LOAD alignment and corresponding RELRO layout. ARMv7 retains its established 4,096-byte layout; it is not advertised as a 16 KiB binary.
  • On the official API 35 x86_64 16 KiB-userspace compatibility image, all three original x86_64 libraries loaded successfully after non-incremental installation. The observed userspace page size was 16,384 bytes; the kernel remains 4 KiB.
  • The complete HTTPS smoke APK had SHA-256 acd037d290e50655be5028e705a5a8b6c68aae7a3683b356f64478e444d76d25 before and after the installation control. It failed twice with SIGBUS on IncrementalFS, then loaded the original native tuple when the same APK was installed using --no-incremental on ext4. Both failures remain recorded. This observes an installation-mode difference; it does not establish the low-level SIGBUS root cause or justify a production SO patch.

Not verified / blocking merge

  • HTTPS requests, player preparation and frames were not reached. After native loading succeeded, the Activity failed to create a Surface within 15 seconds. Keyguard/current-user initialization problems (currentUser=-10000), system ANRs and a black screen blocked the emulator UI.
  • The auxiliary audio attempts also did not reach HTTPS: the original audio test stalled during system-CA preparation and was stopped by its 225-second outer timeout; the raw-PEM-copy variant was killed by a system-startup ANR during identity validation. Further testing is stopped; these attempts add no HTTPS-playback evidence.
  • There is no positive HTTPS playback pass, certificate/hostname rejection pass, full GSY application regression pass or physical ARM64/ARMv7 runtime qualification for this fresh tuple.
  • This x86_64 userspace-compatibility image is not a physical ARM64 or native 16 KiB-kernel test. ELF layout and successful loading do not certify final APK/AAB packaging or playback on other devices.

Defaults and integration limits

  • mediacodec-h264-crop-workaround stays 0. It is opt-in for a validated asynchronous IJK H.264 MediaCodec path and does not enable hardware decoding. Replace player/SDL/FFmpeg together; preserve the caller's existing option list.
  • Keep mediacodec-handle-resolution-change=1 when already configured. Accepted NEW_EXTRADATA hands ownership to the existing resolution-change path. Crop admission is bounded and can stop after description changes; baseline restoration is not arbitrary seek-history support. Coexistence does not make the legacy path loss-free.
  • HTTPS/TLS is compiled in, but tls_verify still defaults to 0. The smoke explicitly configures tls_verify=1 and an app-private CA file built from guest-system PEM roots, with no hostname override. That configuration is not a successful runtime result or automatic Java trust-store integration.
  • Native floors remain API 21 for 64-bit ABIs and API 16 for ARMv7; GSY's Java core still requires API 23.

Merge gate

  • Obtain a working Surface/session and complete exact-hash strict HTTPS preparation and decoded-frame playback.
  • Verify final package contents/alignment and reconcile all results with the nine SO hashes in the provenance document.
  • Review the retained installation failures and evidence limits before deciding whether the bundle is qualified.

TLS negative cases and broader GSY/device regressions remain explicitly unverified risks; they are not additional required tests for this task. The current validation scope is exact-hash strict HTTPS decoded-frame playback on the authorized 16 KiB emulator, package checks and review of the retained failure evidence.

Keep this PR in draft until that scoped validation is reviewed. Do not merge unverified SOs or turn a native-load-only pass into a playback claim.

@CarGuo CarGuo changed the title Sync rebuilt IJK three-ABI bundles; runtime validation incomplete Sync rebuilt IJK three-ABI native bundles Nov 5, 2026
@CarGuo
CarGuo marked this pull request as ready for review November 5, 2026 13:09
Copilot AI balanced review requested due to automatic review settings November 5, 2026 13:09
@CarGuo
CarGuo merged commit 4048ee7 into master Nov 5, 2026
2 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Unresolved MediaCodec completion failures in both baseline and candidate builds, alongside unqualified x86_64/16 KiB playback and full GSY regression testing, require maintainer review of runtime risks.

No open issues 🎉

What changed in this PR

This PR syncs rebuilt IJK native bundles for ARM64, ARMv7 and x86_64. The reviewed documentation records the matched libraries’ provenance and integration requirements, with the H.264 crop workaround remaining off by default.

Changes:

  • Adds source/dependency pins, exact library hashes, replacement instructions and runtime/security limits.
  • Links both build guides to the new bundle record while preserving historical build references.
  • Retains the earlier draft validation snapshot; the PR description reports newer ARM testing, with continuous decoder-completion failures still unresolved.
File Description
doc/​IJK_THREE_ABI_SO_UPDATE.md Records bundle provenance, hashes, integration requirements and validation limits.
doc/​BUILD_SO.md Adds a Chinese notice linking the rebuilt bundle record.
doc/​BUILD_SO_EN.md Adds the corresponding English notice and source-pin guidance.

Review effort: Balanced

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.

2 participants