Android App Support: Instagram, CapCut, Youtube Studio has black video on resolutions over 1080p

REPRODUCIBILITY: Always
OS VERSION: 5.2.0.17
HARDWARE: Jolla Phone 2026
UI LANGUAGE: EN
REGRESSION: Did not happen on SFOS 5.0 on Xperia 10 III

DESCRIPTION:

Videos on Android are black in some resolutions. Video played inside Android App Support apps (confirmed: Instagram, CapCut, YouTube Studio) shows a black screen while audio plays normally.

Note that the videos are generally available to apps but are not played. When I send the video over Telegram to someone else, just the thumbnail is not present but the video is sent ok.

The other thing is that low-resolution videos (up to 1920×1080) are played fine. Downscaling any video to this resolution also “fixes” it.

PRECONDITIONS:

Instagram accout / Youtube account / Capcut download

STEPS TO REPRODUCE:

  1. Open Instagram and login

  2. Click “+” to add a new reel/post

  3. Videos are there but all are black

  4. Try to play the video - sound is ok, video is still black

EXPECTED RESULT:

Video should play normally and show thumbnail.

ACTUAL RESULT:

Videos are there but all are black

MODIFICATIONS:

No

ADDITIONAL INFORMATION:

Additional Claude code investigation (using SSH and developer mode on my actual phone).

Symptom:
Video played inside Android App Support apps (confirmed: Instagram, CapCut, YouTube Studio) shows a black screen while audio plays normally. Native SailfishOS apps (Just Player) play the exact same files without issue.

Confirmed via controlled test:
Took a file that reproduces the issue (H.264 Baseline, 2560×1440, Level 5.0). Re-encoded only
resolution/level down to 1920×1080 / Level 4.0 (same profile family, audio untouched), copied back to the same folder on-device.

→ The downscaled file plays with visible video in Instagram. The original 2560×1440 file does not
(audio only). This isolates resolution/level as the trigger, not codec or file source (confirmed with
both an original H.264 recording and a re-encoded copy).

Root cause:

  • The software Codec2 AVC decoder (c2.android.avc.decoder, declared in
    /apex/com.android.media.swcodec/etc/media_codecs.xml) has a performance-tier with max size
    2048x2048; a separate fast-cpu variant supports up to 4080×4080. This device’s App Support build
    appears to resolve to the lower-tier variant, rejecting the 2560px-wide video.
  • The device’s hardware Codec2 service (media.codec process, registered as
    android.hardware.media.c2.IComponentStore/default, exposing c2.mtk.avc.decoder etc.) is running
    correctly and easily handles this resolution — confirmed by querying it directly via dumpsys as root,
    which returns a full working codec list.
  • However, regular app processes (e.g. Instagram, confirmed via its own Codec2Client log: Available
    Codec2 services: “software”) never see this “default” hardware store as available, even when it’s
    demonstrably alive at that exact moment. SELinux is disabled in the container (getenforce →
    Disabled), so this isn’t an SELinux denial, and it’s reproducible immediately after boot with the
    hardware service already confirmed responsive — ruling out a startup race.

With no working fallback to hardware, any video above the software decoder’s resolution ceiling has no decode path at all, while audio (unaffected, separate codec) plays normally — matching the reported symptom exactly.

Workaround (functional, not a fix): downscale problem videos to ≤1920×1080 / H.264 Level ≤4.0 before viewing in App Support apps.

Suggested fix directions: either get this device’s App Support build correctly classified into the
fast-cpu media_codecs.xml variant, or fix app-level access to the default hardware Codec2 store so it’s used as intended.

install-appsupport-video-fix.sh.targz (15.8 KB)
I have made a simple app that converts all incompatible videos in android_storage/Download created in the last hour. Not ideal, but works :smiley:

Install via terminal → devel-su → sh. Or seek help by AI.