Repository navigation
feat: video decoders and their abilities in /stats.json (#88 probe) - #137
Conversation
…daptive playback (#88 probe)
|
/review |
Code Review by Qodo
1.
|
| for (MediaCodecInfo ci : new MediaCodecList(MediaCodecList.ALL_CODECS) | ||
| .getCodecInfos()) { |
There was a problem hiding this comment.
3. Working jpeg decoders go unreported 🐞 Bug ≡ Correctness
videoDecoders() builds its inventory exclusively from MediaCodecList entries. On the documented AG-216 case, playback can use a vendor JPEG decoder by name even when Android omits video/jpeg from that list, so the new stats omit a decoder the app can use.
Agent Prompt
## Issue description
The new inventory excludes a vendor JPEG decoder that playback can select by name when the platform codec list omits it.
## Fix Focus Areas
- android/app/src/main/java/com/openipc/decoder/CodecInfo.java[29-66]
- android/app/src/main/java/com/openipc/decoder/JpegCodec.java[25-35]
- android/app/src/main/java/com/openipc/decoder/JpegCodec.java[95-125]
## Recommended Fix
Account for the by-name JPEG fallback in decoder reporting once its usability is confirmed. Report unavailable capabilities as unavailable rather than inventing values, and ensure an inventory cached before playback can reflect a subsequently confirmed decoder.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
|
Qodo review — decisions:
|
Your decisions are consistent with the current diff:
No review or finding-management action was taken. |
|
Device check (Aceline-1, 60b44fd): |
feat: video decoders and their abilities in /stats.json (#88 probe)
First step of #88:
/stats.jsongetsdecoders— for each video decoder of the device:name,type,hardware(Android 10+),adaptive(FEATURE_AdaptivePlayback: a new size mid-stream without reconfiguring),max_instancesand the declaredfps_1080p. Built once (CodecInfo).This tells whether a shared key-frame decoder (one instance per codec feeding several cells, #88) is possible on a device: the AG-216 limits H.265 to 4 instances, and the approach needs adaptive playback (or a flush per camera) and
setOutputSurface. Also useful in device reports.