Posts by wyup

    I already wrote a post on Kodi Feature Request for Piers 22. I wrote here because I use Libreelec on my PI 4. I'm not going to make any for AI-slop request, I'm not that fool.

    I'm just asking whether my observation about default default hw accelerated bilinear scaling on PI 4 is well founded.

    I am puzzled: if you say Kodi code changes should work on all platforms and Libreelec code as well, then who writes and adapts SoC specific code where?

    Because I'm not proficient enough to locate the source of the code that does it. I present the facts that I find, and I propose an improvement for the devs to check who know better. This is a feature request thread. chewitt suggested me to use AI to find answers, which I did. What I'd like to know first is whether my proposal is factible and reasonable to improve Libreelec or Kodi for all users.

    I believe the hardware resizing algorithm (and chroma upsampling) is relevant and would like to check whether the supposed default bilinear can be improved.

    I've performed research with Claude AI on github Kodi repo about upsampling Filters on VideoCore VI (BCM2711) on the Rasbperry Pi 4B and it says by default bilinear resizing is used (Average 2×2 chroma), and bicubic is an option (4×4 filter kernel).
    If this is so with Librelec, I would like to suggest an option to choose from bilinear and bicubic on the GUI, and that would also help with chroma upsampling from 4:2:0 to the output format. I hope this is relevant to DRM Prime/V4L2 M2M


    Upsampling Filters on VideoCore VI

    MethodImplementationQualityCPU Cost
    Nearest NeighborSimple duplicationLow~0%
    BilinearAverage 2×2 chromaMediumLow (HW)
    Bicubic4×4 filter kernelHighMedium (HW)


    On Pi 4B VideoCore VI:

    • Default: Bilinear interpolation (good balance of quality and performance)
    • Automatic, no user configuration
    • Applied transparently during color conversion

    Technical Implementation

    Code
    // When you request RGB output from NV12 input:
    // VideoCore VI internally:
    
    // 1. Extract Y plane at full resolution
    // 2. Extract Cb,Cr planes (1/2 resolution)
    // 3. Apply 2-tap bilinear filter to expand Cb,Cr
    // 4. Apply matrix transformation (YUV → RGB)
    // 5. Output RGB24 or RGBA
    
    // Result: Full-resolution RGB with interpolated chroma

    Okay, I used github AI and found answers, thank you.
    However, I don't understand this dismissing attitude when i'm trying to learn. I think I asked specific questions, and I think I have proved enough knowledge for what I'm asking, and certainly enough to generate useful prompts. I have an interest in how Libreelec or Kodi uses DRM PRIME for image scaling or other enhancements down the pipeline, such as deinterlacing, dithering or debanding (if applied).

    I'm not sure what thoughts you're having, but IMHO anyone who needs to ask where documentation is and how it's done will not be successful in coming up with meaningful changes themselves. Even working with Claude Opus and similar AI tools requires a baseline level of domain knowledge to generate prompts that achieve anything.

    Thanks. It's mostly for reference and follow-up to source code, I don't intend to make any changes. I'd just like to know where in the libreelec repository are these UAPI wrappers for the PI4 branch when I look for commits. I guess you port Kodi updates onto your Libreelec sources for the available architectures. It is a work that I appreciate.

    I am curious as to what improvements come up to the Linux kernel regarding v4l2 UAPIS for video decoders. I.e: what support they have for HEVC/H264 levels and profiles, and whether this v4l2 is architecture independent. Being hardware acceleration, how does v4l2 leverage different SoCs such as Pi4, Pi5, Amlogic, that have different GPUs...

    What is the output color format, range and bit depth that Libreelec outputs from a 10-bit HDR 24p video with 4kp60 hdmi enabled, 2160p out to a Enhanced HDMI port UHD TV on a RPI4?

    I've tried a 23.976 4:4:4 2160p 10-bit HDR chroma subsampling test clip and my tv does not pass the 1:1 pixel accuracy. In theory, the PI4 supports 4:4:4, 23.976p, 2160p HDMI out if my tv supports it, does it? I have it configured as HDMI-PC in, to allow RGB.

    It seems the PI4 always outputs full-range, no matter what I select in 'Force 16-236 output' GUI option. It only affects the GUI, not the video playback.

    Are there any parameters to choose from drm prime hardware decoder & video processor such as scaling, dithering or debanding?
    Is dithering and debanding being applied from 8-bit to 10-bit?

    I'm running Libreelec 13 nightly on a PI 4B and a Samsung S95B tv. I would like to customise the HDMI output to my tv, instead of a fixed 12-bit RGB with 10-bit content and 8-bit RGB with regular 8-bit content and the GUI. It looks like Libreelec takes the highest bit-depth reported by the EDID, which is 12-bit for my tv. However, since I play 10-bit files at the most, I would like to output as close to native depth as possible. I don't trust what my tv does with 12-bit, since its panel is 10-bit, it might just truncate the last two bits, so I'd rather output 10-bits instead. I would also like to control the dithering, if applied. When playing 10-bit HDR white ramps and color gradients I see some flickering 'snow' or 'noise' on my display, suggesting temporal dithering is being taking place. I would like to control applying temporal/spatial dithering and favour rounding. Similarly, i would like to control the hardware resizing algorithm and debanding, if possible. Other settings would be custom YCC chroma subsampling and output range (limited/full). Kodi option for the latter doesn't seem to affect the video output.

    I've tried using hdmi_ options in config.txt, such as hdmi_pixel_encoding, hdmi_force_mode, hdmi_deep color, hdmi_drive to force KMS but they doesn't seem to affect the output of cat /sys/kernel/debug/dri/0/state. I've also tried adding parameter to cmdline.txt such as video=HDMI-A-1:1920x1080-10@60eD,color_format=RGB, but it doesn't affect the output, it seems hardwired to 12-bit RGB with my tv.

    Is there a way to pass kernel options or modify filesystem node parameters for the KMS to customise these settings?
    chewitt  HiassofT

    Yes, it can connect to 5ac and 2.4n GHz channel 13 with 1 sec beacon interval, but not on Libreelec.

    Is there any manual way to force a connection to a SSDI with a 1 sec. beacon?
    I mean, maybe the UI doesn't show it because the timer doesn't support 1 sec, but it may connect to it.

    Also a permanent fix to enable channel 13 detection on 2.4n GHz?

    Is there any other limitations with conman wireless client on RPI4?
    I have problems detecting SSIDs 2 meters away to the router with a beacon interval higher than 100 ms for 5 GHz ac 20 MHz channel 36. It only connects with beacon interval 100 ms. Setting it higher it won't detect, all the rest settings equal, WMM-APSD disabled to rule out.

    I like high beacon intervals like 1 sec to maximise throughput and never had a problem. Only Libreelec 13 with conman/iwd.

    Anyway, the PI4 is newer (2019) than my Xiaomi Mi 8 phone (2018). Snapdragon 845 is more powerful, yeah, but it's a smaller chip inside a phone.. I paid more for design, display, storage.. the Pi4 is just a board. It should be more performant powered up with an adapter.. I thought Rasberry Pi competed with PCs, not smartphones!

    Anyone still use a 2018 phone? What an amazing value the Mi 8 is.

    By the way, the BCM2712 from the Pi5 is already more powerful than my Snapdragon 845.

    I am let down that my PI4 can't fluently decode AV1 1080p video on 1080p resolution, while my 2018 Android phone can.

    I tested one-minute snapshots from the most complex passages of two 2.39:1 AV1 10-bit Rec.709 [email protected] 7Mbps movies that play flawlessly with all quality decoding options on VLC player for Android and mpv player, using dav1d software decoder aswell, full deblocking.

    How come my battery powered 2018 Snapdragon sdm845 armv8 64-bit processor can handle fluid 1080p AV1 10-bit video and my latest nightly Libreelec 3A turbo=1 1800-Mhz powered RPI4 8Gb RAM can't?

    I use Libreelec as a best audio quality streamer for movies and music using a dedicated SPDIF audio hat. Also good passive heatsink and low temps (~50ºC). 70% cores CPU utilization.

    I tried numa hack on latest bootloader but it doesn't make any difference. Also maximum caching. Reading from a fast USB3 drive.

    If you know what you're doing with Gparted (under Ubuntu) then it's not that hard to rearranage (shrink/move) existing partitions and filesystems to make space for the TWO partitions LE requires and then perform a manual install.

    Yes, I can shrink the storage partition to place media files onto another partition with the new free space.

    However, what if I want to format the storage partition (and VFAT aswell) to flash another libreelec build from scratch? Sometimes I just wouldn't want to update to another nightly image but start over with a stable build to debug so many plugin errors.

    What would be the manual install?

    the Generic installer targets a whole disk not free space on an existing disk (it will nuke the content of the selected disk)

    Is it possible with a manual installer (dd command) to install Libreelec in available space on a disk with a previous media partition? I'd like to separate media from Libreelec to be able to change Libreelec builds without nuking all my 128GB SD card.