I got Krypton (forked LE master branch) running on my S802 device. It seems to run very good but only with software decoding. The Amcodec option is there but it seems to be ignored. Does someone have an idea what the problem could be? Is this a Krypton related problem?
[SOLVED] Amcodec and Krypton
-
drieschel -
July 12, 2016 at 5:06 PM -
Thread is Unresolved
-
-
I got Krypton (forked LE master branch) running on my S802 device. It seems to run very good but only with software decoding. The Amcodec option is there but it seems to be ignored. Does someone have an idea what the problem could be? Is this a Krypton related problem?
I remember the same from the 905, below is one of the early patches for the 905, Krypton changed the way it checked compatibility. Worth a look.
Diff
Display Morediff --git a/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp b/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp index 3d6598a..cc62734 100644 --- a/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp +++ b/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp @@ -53,10 +58,12 @@ bool CEGLNativeTypeAmlogic::CheckCompatibility() { std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring name; std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring modalias = "/sys/class/graphics/" + m_framebuffer_name + "/device/modalias"; + std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring meson = "meson"; + std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring fb = "fb"; SysfsUtils::GetString(modalias, name); StringUtils::Trim(name); - if (name == "platform:mesonfb") + if (name.find(meson) != std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring::npos && name.find(fb) != std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring::npos) return true; return false; }
-
I remember the same from the 905, below is one of the early patches for the 905, Krypton changed the way it checked compatibility. Worth a look.
Diff
Display Morediff --git a/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp b/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp index 3d6598a..cc62734 100644 --- a/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp +++ b/xbmc/windowing/egl/EGLNativeTypeAmlogic.cpp @@ -53,10 +58,12 @@ bool CEGLNativeTypeAmlogic::CheckCompatibility() { std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring name; std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring modalias = "/sys/class/graphics/" + m_framebuffer_name + "/device/modalias"; + std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring meson = "meson"; + std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring fb = "fb"; SysfsUtils::GetString(modalias, name); StringUtils::Trim(name); - if (name == "platform:mesonfb") + if (name.find(meson) != std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring::npos && name.find(fb) != std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring::npos) return true; return false; }
Thank you for the approach! But this method in Krypton works.
Code
Display Morebool CEGLNativeTypeAmlogic::CheckCompatibility() { std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring name; std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring modalias = "/sys/class/graphics/" + m_framebuffer_name + "/device/modalias"; SysfsUtils::GetString(modalias, name); if (name.find("meson") != std:[img]https://forum.libreelec.tv/images/smilies/confused.png[/img]tring::npos) return true; return false; }
[hr]Edit: Problem seems to be that /dev/video10 not exists, only /dev/video13 is existent! Do I have to manage this by the kernel or do I need to patch the aml_permissions() functions in AMLUtils.cpp in Kodi or ...? Does someone have an idea?
Edit2: I compared the aml_permissions() function with the one from Kodi 16.1 and decided to patch. Hope it will work now.^^
-
Damn! I need help! Patching the aml_permissions() didn't work. I need the real /dev/video10 device which is probably the amlvideo device. Hopefully someone has an idea. Do I miss a kernel driver/module? dmesg output is attached. I assume that the problem has something to do with this part:
Code
Display More[ 0.374456@0] ------------[ cut here ]------------ [ 0.374469@0] WARNING: at drivers/media/v4l2-core/v4l2-dev.c:799 __video_register_device+0xd08/0x104c() [ 0.374474@0] Modules linked in: [ 0.374484@0] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.10.99 #1 [ 0.374506@0] [<c0014ba0>] (unwind_backtrace+0x0/0xec) from [<c0011ba0>] (show_stack+0x10/0x14) [ 0.374521@0] [<c0011ba0>] (show_stack+0x10/0x14) from [<c002a9ac>] (warn_slowpath_common+0x54/0x6c) [ 0.374533@0] [<c002a9ac>] (warn_slowpath_common+0x54/0x6c) from [<c002aa60>] (warn_slowpath_null+0x1c/0x24) [ 0.374542@0] [<c002aa60>] (warn_slowpath_null+0x1c/0x24) from [<c03c6784>] (__video_register_device+0xd08/0x104c) [ 0.374556@0] [<c03c6784>] (__video_register_device+0xd08/0x104c) from [<c092980c>] (amlvideo_init+0x100/0x208) [ 0.374567@0] [<c092980c>] (amlvideo_init+0x100/0x208) from [<c00085b8>] (do_one_initcall+0xfc/0x15c) [ 0.374579@0] [<c00085b8>] (do_one_initcall+0xfc/0x15c) from [<c090fbf8>] (kernel_init_freeable+0x138/0x214) [ 0.374591@0] [<c090fbf8>] (kernel_init_freeable+0x138/0x214) from [<c066ef10>] (kernel_init+0x8/0x154) [ 0.374601@0] [<c066ef10>] (kernel_init+0x8/0x154) from [<c000e000>] (ret_from_fork+0x14/0x34) [ 0.374615@0] ---[ end trace 9aac0642be6698ed ]--- [ 0.374673@0] ------------[ cut here ]------------ [ 0.374682@0] WARNING: at drivers/media/v4l2-core/v4l2-dev.c:799 __video_register_device+0xd08/0x104c() [ 0.374686@0] Modules linked in: [ 0.374694@0] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G W 3.10.99 #1 [ 0.374708@0] [<c0014ba0>] (unwind_backtrace+0x0/0xec) from [<c0011ba0>] (show_stack+0x10/0x14) [ 0.374720@0] [<c0011ba0>] (show_stack+0x10/0x14) from [<c002a9ac>] (warn_slowpath_common+0x54/0x6c) [ 0.374730@0] [<c002a9ac>] (warn_slowpath_common+0x54/0x6c) from [<c002aa60>] (warn_slowpath_null+0x1c/0x24) [ 0.374740@0] [<c002aa60>] (warn_slowpath_null+0x1c/0x24) from [<c03c6784>] (__video_register_device+0xd08/0x104c) [ 0.374753@0] [<c03c6784>] (__video_register_device+0xd08/0x104c) from [<c044a9c8>] (amlvideo2_driver_probe+0x1f0/0x384) [ 0.374768@0] [<c044a9c8>] (amlvideo2_driver_probe+0x1f0/0x384) from [<c0309f14>] (driver_probe_device+0x80/0x23c) [ 0.374779@0] [<c0309f14>] (driver_probe_device+0x80/0x23c) from [<c030a1a0>] (__driver_attach+0x8c/0x90) [ 0.374790@0] [<c030a1a0>] (__driver_attach+0x8c/0x90) from [<c0308524>] (bus_for_each_dev+0x68/0x9c) [ 0.374800@0] [<c0308524>] (bus_for_each_dev+0x68/0x9c) from [<c0309700>] (bus_add_driver+0x1c0/0x24c) [ 0.374810@0] [<c0309700>] (bus_add_driver+0x1c0/0x24c) from [<c030a790>] (driver_register+0x78/0x140) [ 0.374820@0] [<c030a790>] (driver_register+0x78/0x140) from [<c0929920>] (amlvideo2_init+0xc/0x2c) [ 0.374829@0] [<c0929920>] (amlvideo2_init+0xc/0x2c) from [<c00085b8>] (do_one_initcall+0xfc/0x15c) [ 0.374839@0] [<c00085b8>] (do_one_initcall+0xfc/0x15c) from [<c090fbf8>] (kernel_init_freeable+0x138/0x214) [ 0.374849@0] [<c090fbf8>] (kernel_init_freeable+0x138/0x214) from [<c066ef10>] (kernel_init+0x8/0x154) [ 0.374859@0] [<c066ef10>] (kernel_init+0x8/0x154) from [<c000e000>] (ret_from_fork+0x14/0x34) [ 0.374864@0] ---[ end trace 9aac0642be6698ee ]---
PS: I also attached the kernel config.
-
Damn! I need help! Patching the aml_permissions() didn't work. I need the real /dev/video10 device which is probably the amlvideo device.+CONFIG_V4L_AMLOGIC_VIDEO=y
+CONFIG_AMLOGIC_IONVIDEO=y -
+CONFIG_V4L_AMLOGIC_VIDEO=y
+CONFIG_AMLOGIC_IONVIDEO=yThese two options are activated in the kernel (look at the attached kernel config two posts above) and needed for correct audio/video sync as far as I understand ([aml] Use amlvideo driver for audio/video sync by codesnake · Pull Request #9896 · xbmc/xbmc · GitHub).
Problem is found and solved: The v4l drivers didn't seem to work correct in the kernel I am using.