OpenIPC / PixelPilot

PixelPilot is an Android app packaging multiple pieces together to decode an H264/H265 video feed broadcast by wfb-ng over the air.
https://openipc.org
GNU General Public License v3.0
19 stars 7 forks source link

No Video on MediaTek Device (Samsung Galaxy A15)? #6

Open defrag-bambino opened 1 month ago

defrag-bambino commented 1 month ago

Hi, I just tried out the WifiLink by RunCam. Using the FPV4Win Windows App I receive the video just fine. However, using the same External Wifi Module (the one that comes with the WifiLink-G version), the PixelPilot app does not display any stream. I did use the correct gs.key, generated by the WifiLink board. I also tried switching to h264. I am on the correct channel 173 with both devices. The PixelPilot App just says "Starting wfb-ng on channel 173 ..." - but never displays anything.

I am using a Samsung Galaxy A15 (not 5G version), which is a pretty new phone (2024) with the latest Android version. It has a Mediatek Helio G99 processor, which seems to be capable of both h264 and h265 - so it should be capable of handling this use-case just fine.

Any ideas what may be going on here? Is there any possibility to get a logfile from the PixelPilot App?

Epictek commented 1 month ago

This is a common issue with MediaTek SoCs as the third party encoder used the this app primarily supports snapdragon processors. Logs would be useful for debugging this issue

For obtaining logs, once #3 is merged there will be a share button. But for now the only way to obtain logs is using logcat on a PC

defrag-bambino commented 1 month ago

Could you upload an .apk build of #3 while we wait?

Epictek commented 1 month ago

Could you upload an .apk build of #3 while we wait?

Built by GitHub, not tested myself and not endorsed by openipc https://github.com/Epictek/PixelPilot/releases/tag/latest

defrag-bambino commented 1 month ago

pixelpilot_log_20240920_202831.txt Do you know what to look for in there?

Epictek commented 1 month ago

pixelpilot_log_20240920_202831.txt Do you know what to look for in there?

Nothing jumps out straight away, another useful bit of information for debbuging would be the details of the HEVC decoder from https://play.google.com/store/apps/details?id=com.parseus.codecinfo

defrag-bambino commented 1 month ago

Ok:

c2.android.hevc.decoder

Hardware acceleration: false Software-only: true Low latency decoding: false Codec provider: Android platform Max supported instances: 32 Max resolution: 1920x1088 Max bitrate: 5 Mbps Frame rate: 0 — 960 fps Max frame rate per resolution: 144p: 960,0 fps 144p (YouTube): 853,3 fps 240p: 409,6 fps 240p (widescreen): 303,4 fps 360p: 182,0 fps 360p (widescreen): 136,5 fps 480p: 102,4 fps 480p (widescreen): 76,6 fps 576p: 75,9 fps 720p: 34,1 fps 1080p: 15,2 fps Color profiles: COLOR_FormatSurface (0x7F000789) COLOR_FormatYUV420Flexible (0x7F420888) COLOR_FormatYUV420PackedPlanar (0x14) COLOR_FormatYUV420PackedSemiPlanar (0x27) COLOR_FormatYUV420Planar (0x13) COLOR_FormatYUV420SemiPlanar (0x15) Adaptive playback: true (required: false) Partial frames queuing: false Secure playback decryption: false Dynamic timestamp: false Multiple access units: false Tunneled playback: false Partial access units per input buffer: false Profile levels: HEVCProfileMain (0x1): HEVCHighTierLevel52 (0x80000) HEVCProfileMainStill (0x4): HEVCHighTierLevel52 (0x80000)

c2.mtk.hevc.decoder

Hardware acceleration: true Software-only: false Low latency decoding: false Codec provider: Device vendor / OEM Max supported instances: 12 Max resolution: 2560x2560 Max bitrate: 160 Mbps Frame rate: 0 — 960 fps Max frame rate per resolution: 144p: 960,0 fps 144p (YouTube): 960,0 fps 240p: 960,0 fps 240p (widescreen): 960,0 fps 360p: 960,0 fps 360p (widescreen): 960,0 fps 480p: 960,0 fps 480p (widescreen): 960,0 fps 576p: 960,0 fps 720p: 580,3 fps 1080p: 257,9 fps Color profiles: COLOR_FormatSurface (0x7F000789) COLOR_FormatYUV420Flexible (0x7F420888) COLOR_FormatYUV420PackedPlanar (0x14) COLOR_FormatYUV420PackedSemiPlanar (0x27) COLOR_FormatYUV420Planar (0x13) COLOR_FormatYUV420SemiPlanar (0x15) Adaptive playback: true (required: false) Partial frames queuing: false Secure playback decryption: false Dynamic timestamp: false Multiple access units: false Tunneled playback: false Partial access units per input buffer: false Supported vendor parameters: vendor.mtk.ext.vdec.force.output.cc.value vendor.mtk.ext.vdec.hdr.feature-on vendor.mtk.ext.vdec.heif.feature-on vendor.mtk.ext.vdec.svp.feature-on vendor.mtk.ext.vdec.vilte.feature-on vendor.mtk.ext.vdec.vpp.disabled.value vendor.mtk.ext.vdec.vpp.motion.intpl.feature-on vendor.mtk.ext.vdec.vpp.motion.intpl.max-conversion-rate vendor.mtk.ext.vdec.vpp.motion.intpl.pixel-format vendor.mtk.ext.vdec.vpp.quality.tuner.feature-on vendor.mtk.ext.vdec.vpp.quality.tuner.pixel-format vendor.mtk.ext.vdec.vpp.resolution.scaler.feature-on vendor.mtk.ext.vdec.vpp.resolution.scaler.max-frame-height vendor.mtk.ext.vdec.vpp.resolution.scaler.max-frame-width vendor.mtk.ext.vdec.vpp.resolution.scaler.pixel-format vendor.mtk.intfimpl.thiz.value vendor.mtk.output.buffer.alloc.config.usage vendor.mtk.vdec.cpu.boost.mode.value vendor.mtk.vdec.force.pixel.format.value vendor.mtk.vdec.thumbnail.mode.value Profile levels: HEVCProfileMain (0x1): HEVCHighTierLevel51 (0x20000)

c2.mtk.hevc.decoder.secure

Hardware acceleration: true Software-only: false Low latency decoding: false Codec provider: Device vendor / OEM Max supported instances: 1 Max resolution: 2560x2560 Max bitrate: 160 Mbps Frame rate: 0 — 960 fps Max frame rate per resolution: 144p: 960,0 fps 144p (YouTube): 960,0 fps 240p: 960,0 fps 240p (widescreen): 960,0 fps 360p: 960,0 fps 360p (widescreen): 960,0 fps 480p: 960,0 fps 480p (widescreen): 960,0 fps 576p: 960,0 fps 720p: 580,3 fps 1080p: 257,9 fps Color profiles: COLOR_FormatSurface (0x7F000789) COLOR_FormatYUV420Flexible (0x7F420888) COLOR_FormatYUV420PackedPlanar (0x14) COLOR_FormatYUV420PackedSemiPlanar (0x27) COLOR_FormatYUV420Planar (0x13) COLOR_FormatYUV420SemiPlanar (0x15) Adaptive playback: true (required: false) Partial frames queuing: false Secure playback decryption: true (required: true) Dynamic timestamp: false Multiple access units: false Tunneled playback: false Partial access units per input buffer: false Supported vendor parameters: vendor.mtk.ext.vdec.force.output.cc.value vendor.mtk.ext.vdec.hdr.feature-on vendor.mtk.ext.vdec.heif.feature-on vendor.mtk.ext.vdec.svp.feature-on vendor.mtk.ext.vdec.vilte.feature-on vendor.mtk.ext.vdec.vpp.disabled.value vendor.mtk.ext.vdec.vpp.motion.intpl.feature-on vendor.mtk.ext.vdec.vpp.motion.intpl.max-conversion-rate vendor.mtk.ext.vdec.vpp.motion.intpl.pixel-format vendor.mtk.ext.vdec.vpp.quality.tuner.feature-on vendor.mtk.ext.vdec.vpp.quality.tuner.pixel-format vendor.mtk.ext.vdec.vpp.resolution.scaler.feature-on vendor.mtk.ext.vdec.vpp.resolution.scaler.max-frame-height vendor.mtk.ext.vdec.vpp.resolution.scaler.max-frame-width vendor.mtk.ext.vdec.vpp.resolution.scaler.pixel-format vendor.mtk.intfimpl.thiz.value vendor.mtk.output.buffer.alloc.config.usage vendor.mtk.vdec.cpu.boost.mode.value vendor.mtk.vdec.force.pixel.format.value vendor.mtk.vdec.thumbnail.mode.value Profile levels: HEVCProfileMain (0x1): HEVCHighTierLevel51 (0x20000)

defrag-bambino commented 1 week ago

What is the "third party encoder" used? May I open an issue in their github to get this fixed?