mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2025-03-31 12:08:15 +00:00
L4T/Ayn: upstream changes from 5.x
Lakka 5.x Switch changes (#1853) Lakka v5.x switchroot 5.1.2 (#1871) Fix Switch Issue's in upstream 5.x (#1888) Minor Switch Changes (#1893) Lakka v5.x switch 3 (#1895) Lakka v5.x switch 4 (#1898) L4T: Xorg-server: Fix build issue (#1924) Switch: remove ra patch Lakka v5.x switch 6 (#1926) Cleanups, More LibreELEC Stuff, more permission fixes, Misc switch stuff. (#1930) Switch: U-Boot: bump version to 2024-NX02 (#1946) L4T/Ayn post-upstreaming fixes - retroarch_joypad_autoconfig: remove spaces from file names - retroarch: remove Switch specific patch merged upstream - libXv: move to L4T packages folder (package removed in upstream) - bring some packages from v5.x to L4T packages - ffmpeg: remove vulkan - remove stella core from Switch build (missing C++ headers) - Ayn/Odin: use proper kernel arg to not hide kernel messages in console - connman: add wpa_supplicant support back
This commit is contained in:
committed by
Tomáš Kelemen (vudiq)
parent
f38c6747c9
commit
765323df23
packages
audio/pulseaudio-configs
devel/libcec
graphics/libdrm
lakka
lakka_tools
libretro_cores
package.mkretroarch_base
retroarch
retroarch_joypad_autoconfig/joypad_configs/udev
linux
mediacenter
multimedia
ffmpeg
package.mk
patches/L4T
0001-codecs-add-nvv4l2-codec-for-Nvidia-Tegra-SOCs.patch0002-fftools-libavformat-Enforce-nvv4l2.patch0003-codecs-nvv4l2-avoid-probing.patch0004-libavformat-remove-nvv4l2-probing-mitigation.patch0005-codecs-nvv4l2-do-not-use-external-headers.patch0006-codecs-nvv4l2-use-atomics-for-pool.patch0007-codecs-nvv4l2-add-new-functions-and-update-context-a.patch0008-codecs-nvv4l2-support-multiple-L4T-versions-with-sin.patch0009-codecs-nvv4l2-align-line-width-to-64B.patch0010-codecs-nvv4l2-add-two-pass-cbr-mode-support.patch0011-codecs-nvv4l2-various-bugfixes.patch0012-codecs-nvv4l2-fix-hanging-on-event-wait-if-no-full-f.patch0013-codecs-nvv4l2-use-sessions-for-transformations.patch0014-codecs-nvv4l2-support-all-different-timestamps.patch0015-codecs-nvv4l2-BSP-34.1.x-remarks.patch0016-codecs-nvv4l2-support-BT709-BT2020-colorspaces.patch0017-codecs-nvv4l2-reorder-capture-buffer-queueing.patch0018-codecs-nvv4l2-align-encoder-plane-width-to-64B.patch0019-codecs-nvv4l2-align-enc-plane-width-per-format-plane.patch0020-codecs-nvv4l2-fix-memleak.patch0021-codecs-nvv4l2-fix-use-after-free.patch0021-fix-libreelec-build-issue.patch0022-codecs-nvv4l2-rename-AVCodec-to-fit-API-renames.patch0023-codecs-nvv4l2-comment-structs-redefined-in-nvv4l2.h.patch0024-codecs-nvv4l2-More-API-related-changes.patch0025-codecs-nvv4l2-add-encode.h-header-needed-for-ff_allo.patch0026-codecs-nvv4l2-fix-missing-comma-in-FFCodec-struct.patch0027-codecs-nvv4l2-remove-second-size-argument-as-it-is-u.patch0028-codecs-nvv4l2-undo-struct-commenting-due-to-OpenBuil.patch0029-fftools-improve-nvv4l2-enforcing-Now-non-supported-p.patch0030-nvv4l2-add-yuv420p10-support.patch0031-nvv4l2-handle-unsupported-pixel-formats-NVDEC-only-s.patch0032-nvv4l2-allow-10-bit-HEVC-The-only-hw-support-for-10-.patch0033-codecs-nvv4l2-more-rename-AVCodec-to-fit-API-renames.patch0034-codecs-nvv4l2-more-API-renames.patch0035-codecs-nvv4l2-find_codec_or_die-to-find_codec-API-re.patch0036-codecs-nvv4l2-update-for-ABI-rework.patch0037-Revert-codecs-nvv4l2-update-for-ABI-rework.patch0038-Revert-codecs-nvv4l2-find_codec_or_die-to-find_codec.patch0039-fftools-ffmpeg-set-find_codec_or_die-logctx-to-NULL.patch0040-nvv4l2-do-not-override-key_frame.patch0041-fix-libreelec-configure.patch
libva
media-driver/patches
network
bluez
connman
sysutils
busybox
dbus
libgudev
mergerfs/patches
systemd
upower
x11/util/xdotool
projects
Ayn/devices/Odin/packages/odin-bootloader/files/boot/EFI/debian
L4T
devices/Switch
initramfs
linux
optionspackages
kodi/system.d
retroarch/system.d
switch-alsa-ucm-configs
switch-bootloader
switch-bsp
modprobe.d
package.mkscripts
sleep.d
system.d
alsa-init.servicefix-permissions.servicepair-joycon.servicevar-bluetoothconfig.mountxorg-configure-switch.service
tmpfiles.d
ucm_data/tegra-snd-t210r
udev.d
switch-cpu-profile
switch-gpu-profile
switch-joycon-bluetooth-dock-configs
switch-u-boot
usb-gadget-scripts
patches
joycond
l4t-kernel-sources
linux
0001-Fix-Volume-Mappings.patch0004-fix-libcec-build.patch0005-fix-libcec-build-2.patch0006-debug-cec.patch
peripheral.joystick
packages
busybox
config
default.d
package.mkpatches
busybox-00_halt_no_init.patchbusybox-02_silence-crond-startup-logging.patchbusybox-03-make_unicode_printable.patchbusybox-04-revert-dd-fsync-change.patchbusybox-05-update-shadow-or-passwd-not-both.patchbusybox-06-prevent-root-weak-passwd.patchbusybox-07-hwclock_fix_settimeofday.patch
profile.d
scripts
apt-getcreate-edid-cpiocreatelogcreatelog-lakkadthelperdump-active-edids-drmfs-resizefunctionsgetedidgetedid-drminitkernel-overlays-setupledfixlibreelec-target-generatorlsb_releasepastebinitrpi-flash-firmwaresudoupdate-bootloader-edid-rpi
sleep.d.serial
sysctl.d
system.d.opt
system.d
fs-resize.servicefs-resize.targetledfix.servicerpi-flash-firmware.servicerpi-flash-firmware.targetshell.serviceshow-version.servicestorage-log.servicetextmode.targetvar-log.mountvar.mount
tmpfiles.d
curl
flycast
glibc/patches
gptfdisk
package.mk
patches
0001-Fix-failure-crash-of-sgdisk-when-compiled-with-lates.patch0002-Updated-guid.cc-to-deal-with-minor-change-in-libuuid.patch0003-Updated-URLs-in-man-pages-to-HTTPS-rather-than-HTTP.patch0004-Fix-NULL-dereference-when-duplicating-string-argumen.patch0005-Use-64bit-time_t-on-linux-as-well.patch0006-Allow-partition-dynamically-allocated-by-largest-new.patch0007-Document-recent-merge.patch0008-Document-recent-mergest.patch0009-Do-some-explicit-casts-in-gptcurses.cc-to-eliminate-.patch0010-Truncate-decimal-inputs-e.g.-9.5G-becomes-9G.patch0011-Document-previous-merge.patch0012-Minor-code-cleanup-based-on-valgrind-analysis.patch
libXv
systemd
tegra-bsp/assets
v4l-utils
wpa_supplicant
xf86-input-libinput
xorg-server
patches/linux
scripts
@ -1,4 +1,5 @@
|
||||
PKG_NAME="pulseaudio-configs"
|
||||
PKG_VERSION="1.1"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_DEPENDS_TARGET="alsa-plugins pulseaudio"
|
||||
PKG_LONGDESC="Standard configs for pulseaudio"
|
||||
|
@ -19,10 +19,10 @@
|
||||
|
||||
; default-sink =
|
||||
; default-source =
|
||||
; default-server =
|
||||
default-server = unix:/tmp/pulse-server
|
||||
; default-dbus-server =
|
||||
|
||||
; autospawn = yes
|
||||
autospawn = no
|
||||
; daemon-binary = /usr/bin/pulseaudio
|
||||
; extra-arguments = --log-target=syslog
|
||||
|
||||
@ -33,3 +33,5 @@
|
||||
|
||||
; auto-connect-localhost = no
|
||||
; auto-connect-display = no
|
||||
|
||||
enable-memfd = yes
|
||||
|
@ -72,10 +72,11 @@ load-module module-bluetooth-discover
|
||||
.endif
|
||||
|
||||
### Load several protocols
|
||||
load-module module-dbus-protocol
|
||||
.ifexists module-esound-protocol-unix.so
|
||||
load-module module-esound-protocol-unix
|
||||
.endif
|
||||
load-module module-native-protocol-unix
|
||||
load-module module-native-protocol-unix auth-group=audio socket=/tmp/pulse-server
|
||||
|
||||
### Network access (may be configured with paprefs, so leave this commented
|
||||
### here if you plan to use paprefs)
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libcec"
|
||||
PKG_VERSION="4.0.7"
|
||||
PKG_SHA256="bcd92c376993a5721d346edcc09eb17289451f9156b1d1d113c9663c2046315a"
|
||||
PKG_VERSION="6.0.2"
|
||||
PKG_SHA256="090696d7a4fb772d7acebbb06f91ab92e025531c7c91824046b9e4e71ecb3377"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://libcec.pulse-eight.com/"
|
||||
PKG_URL="https://github.com/Pulse-Eight/libcec/archive/libcec-${PKG_VERSION}.tar.gz"
|
||||
|
@ -45,10 +45,8 @@ listcontains "${GRAPHIC_DRIVERS}" "freedreno" &&
|
||||
listcontains "${GRAPHIC_DRIVERS}" "etnaviv" &&
|
||||
PKG_MESON_OPTS_TARGET+=" -Detnaviv=enabled" || PKG_MESON_OPTS_TARGET+=" -Detnaviv=disabled"
|
||||
|
||||
if [ "${DISTRO}" = "Lakka" ]; then
|
||||
listcontains "${GRAPHIC_DRIVERS}" "nouveau" &&
|
||||
PKG_MESON_OPTS_TARGET="${PKG_MESON_OPTS_TARGET//-Dnouveau=disabled/-Dnouveau=enabled}"
|
||||
fi
|
||||
listcontains "${GRAPHIC_DRIVERS}" "nouveau" &&
|
||||
PKG_MESON_OPTS_TARGET="${PKG_MESON_OPTS_TARGET//-Dnouveau=disabled/-Dnouveau=enabled}"
|
||||
|
||||
post_makeinstall_target() {
|
||||
# Remove all test programs installed by install-test-programs=true except modetest
|
||||
|
@ -2,9 +2,9 @@ PKG_NAME="joycond"
|
||||
PKG_DEPENDS_TARGET="toolchain cmake:host libevdev systemd"
|
||||
PKG_SITE="https://github.com/DanielOgorchock/joycond"
|
||||
if [ "${PROJECT}" = "L4T" -a "${DEVICE}" = "Switch" ]; then
|
||||
PKG_VERSION="031f04311a912514cea9deb020512ee6d7063398"
|
||||
PKG_SHA256="c2681b1f7723acf0e51e318be3194202e3a77627c78aa39e0a70797d0155dcba"
|
||||
PKG_URL="https://gitlab.com/switchroot/userspace/joycond/-/archive/c48187fcdacda1b139297e4944a149125e0800b2/joycond-c48187fcdacda1b139297e4944a149125e0800b2.tar.gz"
|
||||
PKG_VERSION="c83539a8995040e8daf6912dab32a11082e75acf"
|
||||
PKG_SHA256="10b043f226e49b17f1025ded37257ca096ed9fac5f22bbe91cd12cd6e7882835"
|
||||
PKG_URL="https://gitlab.com/switchroot/userspace/joycond/-/archive/linux/joycond-linux.tar.gz"
|
||||
else
|
||||
PKG_VERSION="2d3f553060291f1bfee2e49fc2ca4a768b289df8"
|
||||
PKG_SHA256="34ba2a4ffd35f2b2bbebd8ce47d17f2238d991bc6262653d0617b28f864e4b63"
|
||||
|
@ -10,3 +10,7 @@ makeinstall_target() {
|
||||
mkdir -p ${INSTALL}/usr/bin
|
||||
cp wii-u-gc-adapter ${INSTALL}/usr/bin/
|
||||
}
|
||||
|
||||
post_install() {
|
||||
enable_service wii-u-gc-adapter.service
|
||||
}
|
||||
|
@ -222,6 +222,8 @@ elif [ "${PROJECT}" = "Generic" -a "${ARCH}" = "i386" ]; then
|
||||
EXCLUDE_LIBRETRO_CORES+=" fake_08 openlara"
|
||||
elif [ "${PROJECT}" = "Ayn" -a "${DEVICE}" = "Odin" ]; then
|
||||
EXCLUDE_LIBRETRO_CORES+=" lr_moonlight"
|
||||
elif [ "${PROJECT}" = "L4T" -a "${DEVICE}" = "Switch" ]; then
|
||||
EXCLUDE_LIBRETRO_CORES+=" stella"
|
||||
fi
|
||||
|
||||
# disable cores that are only for specific targets
|
||||
|
@ -18,6 +18,11 @@ PKG_CMAKE_OPTS_TARGET="-DLIBRETRO=ON \
|
||||
-DUSE_DISCORD=OFF \
|
||||
-DUSE_MINIUPNPC=OFF"
|
||||
|
||||
# for future compatibility - in case other platforms will use system ffmpeg
|
||||
if [ "${PROJECT}" = "L4T" -a "${DEVICE}" = "Switch" ]; then
|
||||
PKG_CMAKE_OPTS_TARGET=${PKG_CMAKE_OPTS_TARGET//-DUSE_SYSTEM_FFMPEG=ON/-DUSE_SYSTEM_FFMPEG=OFF}
|
||||
fi
|
||||
|
||||
if [ "${OPENGL_SUPPORT}" = "yes" ]; then
|
||||
PKG_DEPENDS_TARGET+=" ${OPENGL}"
|
||||
fi
|
||||
|
@ -36,6 +36,6 @@ if [ "${DEVICE}" != "Switch" -a "${DEVICE}" != "RPiZero-GPiCase" -a "${DEVICE}"
|
||||
PKG_DEPENDS_TARGET+=" xbox360_controllers_shutdown"
|
||||
fi
|
||||
|
||||
if [ "${CEC_FRAMEWORK_SUPPORT}" = yes ]; then
|
||||
if [ "${CEC_FRAMEWORK_SUPPORT}" = yes -a ! "${PROJECT}" = "L4T" ]; then
|
||||
PKG_DEPENDS_TARGET+=" cec_mini_kb"
|
||||
fi
|
||||
|
@ -133,12 +133,12 @@ if [ "${PROJECT}" = "L4T" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${LAKKA_NIGHTLY}" = yes ]; then
|
||||
if [ "${LAKKA_NIGHTLY}" = "yes" ]; then
|
||||
PKG_MAKE_OPTS_TARGET+=" HAVE_LAKKA_NIGHTLY=1"
|
||||
fi
|
||||
|
||||
if [ "${LAKKA_DEVBUILD}" = yes ]; then
|
||||
elif [ "${LAKKA_DEVBUILD}" = "yes" ]; then
|
||||
PKG_MAKE_OPTS_TARGET+=" HAVE_LAKKA_DEVBUILD=1"
|
||||
elif [ -n "${LAKKA_CANARY_PATH}" ]; then
|
||||
PKG_MAKE_OPTS_TARGET+=" HAVE_LAKKA_CANARY=\"${LAKKA_CANARY_PATH}\""
|
||||
fi
|
||||
|
||||
pre_configure_target() {
|
||||
@ -233,7 +233,8 @@ makeinstall_target() {
|
||||
echo 'audio_driver = "alsathread"' >> ${INSTALL}/etc/retroarch.cfg
|
||||
echo 'audio_filter_dir = "/usr/share/audio_filters"' >> ${INSTALL}/etc/retroarch.cfg
|
||||
|
||||
if [ "${DEVICE}" = "Exynos" ]; then # workaround the 55fps bug
|
||||
if [ "${PROJECT}" = "Samsung" -a "${DEVICE}" = "Exynos" ]; then
|
||||
# workaround the 55fps bug
|
||||
echo 'audio_out_rate = "44100"' >> ${INSTALL}/etc/retroarch.cfg
|
||||
fi
|
||||
|
||||
@ -337,9 +338,6 @@ makeinstall_target() {
|
||||
sed -i -e 's|^menu_driver =.*|menu_driver = "ozone"|' ${INSTALL}/etc/retroarch.cfg
|
||||
|
||||
if [ ! "${PROJECT}" = "Ayn" -a ! "${DEVICE}" = "Odin" ]; then
|
||||
#Set Default Joycon index to Combined Joycons.
|
||||
echo 'input_player1_joypad_index = "2"' >> ${INSTALL}/etc/retroarch.cfg
|
||||
|
||||
#Set Joypad as joypad with analog
|
||||
echo 'input_libretro_device_p1 = "5"' >> ${INSTALL}/etc/retroarch.cfg
|
||||
else
|
||||
|
@ -4,15 +4,3 @@ for i in 5 4 3 2 1 0; do [ -e /dev/snd/pcmC${i}D0p ] && export ALSA_CARD=$i; don
|
||||
|
||||
echo "ALSA_CARD=\"$ALSA_CARD\"" > /run/libreelec/retroarch.conf
|
||||
echo "LD_LIBRARY_PATH=\"/usr/lib:/tmp/cores\"" >> /run/libreelec/retroarch.conf
|
||||
|
||||
# WAR: Do to everything running as root, udev doesnt properly hide L/R joycon on 3 out of 4 revisions nintendo switch
|
||||
# which makes the combined controller index 2, but on Nintendo Switch Lite, on first boot we need to change this to 1
|
||||
# or built in gamepad needs user intervention to be used.
|
||||
|
||||
SERIAL_PREFIX=$(cat /sys/firmware/devicetree/base/serial-number)
|
||||
SERIAL_PREFIX=${SERIAL_PREFIX:0:3}
|
||||
|
||||
if [ ${SERIAL_PREFIX} = "NXV" -a ! -f /storage/.config/retroarch/retroarch.cfg ]; then
|
||||
cp /etc/retroarch.cfg /storage/.config/retroarch/retroarch.cfg
|
||||
sed -i -e 's|input_player1_joypad_index = \"2\"|input_player1_joypad_index = \"0\"|' /storage/.config/retroarch/retroarch.cfg
|
||||
fi
|
||||
|
18
packages/lakka/retroarch_base/retroarch_joypad_autoconfig/joypad_configs/udev/Nintendo_Switch_Left_Joy-Con.cfg
Normal file
18
packages/lakka/retroarch_base/retroarch_joypad_autoconfig/joypad_configs/udev/Nintendo_Switch_Left_Joy-Con.cfg
Normal file
@ -0,0 +1,18 @@
|
||||
input_driver = "udev"
|
||||
input_device = "Nintendo Switch Left Joy-Con Test"
|
||||
|
||||
input_vendor_id = "1406"
|
||||
input_product_id = "8198"
|
||||
|
||||
input_b_btn = "9"
|
||||
input_y_btn = "7"
|
||||
input_select_btn = "5"
|
||||
input_start_btn = "0"
|
||||
input_up_axis = "+0"
|
||||
input_down_axis = "-0"
|
||||
input_left_axis = "-1"
|
||||
input_right_axis = "+1"
|
||||
input_a_btn = "8"
|
||||
input_x_btn = "10"
|
||||
input_l_btn = "2"
|
||||
input_r_btn = "4"
|
29
packages/lakka/retroarch_base/retroarch_joypad_autoconfig/joypad_configs/udev/Nintendo_Switch_Lite_Gamepad.cfg
Normal file
29
packages/lakka/retroarch_base/retroarch_joypad_autoconfig/joypad_configs/udev/Nintendo_Switch_Lite_Gamepad.cfg
Normal file
@ -0,0 +1,29 @@
|
||||
input_driver = "udev"
|
||||
input_device = "Nintendo Switch Lite Gamepad"
|
||||
input_vendor_id = "1406"
|
||||
input_product_id = "61731"
|
||||
input_b_btn = "0"
|
||||
input_y_btn = "3"
|
||||
input_select_btn = "9"
|
||||
input_start_btn = "10"
|
||||
input_up_btn = "14"
|
||||
input_down_btn = "15"
|
||||
input_left_btn = "16"
|
||||
input_right_btn = "17"
|
||||
input_a_btn = "1"
|
||||
input_x_btn = "2"
|
||||
input_l_btn = "5"
|
||||
input_r_btn = "6"
|
||||
input_l2_btn = "7"
|
||||
input_r2_btn = "8"
|
||||
input_l3_btn = "12"
|
||||
input_r3_btn = "13"
|
||||
input_l_x_plus_axis = "+0"
|
||||
input_l_x_minus_axis = "-0"
|
||||
input_l_y_plus_axis = "+1"
|
||||
input_l_y_minus_axis = "-1"
|
||||
input_r_x_plus_axis = "+2"
|
||||
input_r_x_minus_axis = "-2"
|
||||
input_r_y_plus_axis = "+3"
|
||||
input_r_y_minus_axis = "-3"
|
||||
input_gun_trigger_mbtn = "1"
|
18
packages/lakka/retroarch_base/retroarch_joypad_autoconfig/joypad_configs/udev/Nintendo_Switch_Right_Joy-Con.cfg
Normal file
18
packages/lakka/retroarch_base/retroarch_joypad_autoconfig/joypad_configs/udev/Nintendo_Switch_Right_Joy-Con.cfg
Normal file
@ -0,0 +1,18 @@
|
||||
input_driver = "udev"
|
||||
input_device = "Nintendo Switch Right Joy-Con"
|
||||
|
||||
input_vendor_id = "1406"
|
||||
input_product_id = "8199"
|
||||
|
||||
input_b_btn = "1"
|
||||
input_y_btn = "0"
|
||||
input_select_btn = "9"
|
||||
input_start_btn = "8"
|
||||
input_up_axis = "-0"
|
||||
input_down_axis = "+0"
|
||||
input_left_axis = "+1"
|
||||
input_right_axis = "-1"
|
||||
input_a_btn = "2"
|
||||
input_x_btn = "3"
|
||||
input_l_btn = "4"
|
||||
input_r_btn = "6"
|
@ -30,16 +30,21 @@ case "${LINUX}" in
|
||||
;;
|
||||
L4T)
|
||||
if [ -z "${L4T_KERNEL_VERSION}" ]; then
|
||||
echo "${PROJECT}: ${KERNEL} - you must set L4T_KERNEL_VERSION in projects/${PROJECT}/device/${DEVICE}/options"
|
||||
echo -n "${DEVICE:-${PROJECT}}: ${KERNEL} - you must set L4T_KERNEL_VERSION in projects/${PROJECT}/"
|
||||
if [ -z "${DEVICE}" ]; then
|
||||
echo "options"
|
||||
else
|
||||
echo "device/${DEVICE}/options"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
PKG_VERSION=${DEVICE}-${L4T_KERNEL_VERSION}
|
||||
PKG_VERSION=${DEVICE:-${PROJECT}}-${L4T_KERNEL_VERSION}
|
||||
PKG_URL="l4t-kernel-sources"
|
||||
GET_HANDLER_SUPPORT="l4t-kernel-sources"
|
||||
PKG_PATCH_DIRS="${PROJECT} ${PROJECT}/${DEVICE}"
|
||||
PKG_SOURCE_NAME="${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
#Need to find a better way to do this for l4t platforms!
|
||||
PKG_SHA256=$L4T_COMBINED_KERNEL_SHA256
|
||||
PKG_SHA256=${L4T_COMBINED_KERNEL_SHA256}
|
||||
;;
|
||||
ayn-odin)
|
||||
PKG_SHA256="9aa25bf492928bc7a4542e87d28919c9ac36d27c"
|
||||
|
@ -18,3 +18,10 @@ PKG_BUILD_FLAGS="+lto"
|
||||
|
||||
PKG_IS_ADDON="embedded"
|
||||
PKG_ADDON_TYPE="kodi.peripheral"
|
||||
|
||||
post_install() {
|
||||
if [ "${PROJECT}" = "L4T" -a "${DEVICE}" = "Switch" ]; then
|
||||
# Set UDEV controller driver as active
|
||||
sed -i -e 's|<default>0</default>|<default>1</default>|' ${INSTALL}/usr/share/kodi/addons/peripheral.joystick/resources/settings.xml
|
||||
fi
|
||||
}
|
||||
|
@ -10,6 +10,12 @@ PKG_SITE="http://www.kodi.tv"
|
||||
PKG_URL="https://github.com/xbmc/xbmc/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain JsonSchemaBuilder:host TexturePacker:host Python3 zlib systemd lzo pcre swig:host libass curl fontconfig fribidi tinyxml tinyxml2 libjpeg-turbo freetype libcdio taglib libxml2 libxslt rapidjson sqlite ffmpeg crossguid libdvdnav libfmt lirc libfstrcmp flatbuffers:host flatbuffers libudfread spdlog"
|
||||
PKG_DEPENDS_UNPACK="commons-lang3 commons-text groovy"
|
||||
|
||||
if [ "${PROJECT}" = "L4T" -a "${DEVICE}" = "Switch" ]; then
|
||||
# Not really sure why u-power was removed, this is required to get battery statistics in kodi.
|
||||
PKG_DEPENDS_TARGET+=" upower"
|
||||
fi
|
||||
|
||||
PKG_DEPENDS_HOST="toolchain"
|
||||
PKG_LONGDESC="A free and open source cross-platform media player."
|
||||
PKG_BUILD_FLAGS="+speed"
|
||||
|
@ -26,6 +26,12 @@ case "${PROJECT}" in
|
||||
PKG_FFMPEG_RPI="--disable-mmal --enable-sand"
|
||||
PKG_PATCH_DIRS+=" rpi"
|
||||
;;
|
||||
L4T)
|
||||
PKG_DEPENDS_TARGET+=" tegra-bsp:host"
|
||||
PKG_PATCH_DIRS+=" L4T"
|
||||
PKG_FFMPEG_NVV4L2="--enable-nvv4l2"
|
||||
EXTRA_CFLAGS="-I${SYSROOT_PREFIX}/usr/src/jetson_multimedia_api/include"
|
||||
;;
|
||||
*)
|
||||
PKG_PATCH_DIRS+=" v4l2-request v4l2-drmprime"
|
||||
case "${PROJECT}" in
|
||||
@ -49,7 +55,7 @@ get_graphicdrivers
|
||||
|
||||
PKG_FFMPEG_HWACCEL="--enable-hwaccels"
|
||||
|
||||
if [ "${V4L2_SUPPORT}" = "yes" ]; then
|
||||
if [ "${V4L2_SUPPORT}" = "yes" -a ! "${DEVICE}" = "Switch" ]; then
|
||||
PKG_DEPENDS_TARGET+=" libdrm"
|
||||
PKG_NEED_UNPACK+=" $(get_pkg_directory libdrm)"
|
||||
PKG_FFMPEG_V4L2="--enable-v4l2_m2m --enable-libdrm"
|
||||
@ -68,7 +74,7 @@ if [ "${V4L2_SUPPORT}" = "yes" ]; then
|
||||
PKG_FFMPEG_V4L2+=" --disable-libudev --disable-v4l2-request"
|
||||
fi
|
||||
else
|
||||
PKG_FFMPEG_V4L2="--disable-v4l2_m2m --disable-libudev --disable-v4l2-request"
|
||||
: #PKG_FFMPEG_V4L2="--disable-v4l2_m2m --disable-libudev --disable-v4l2-request"
|
||||
fi
|
||||
|
||||
if [ "${VAAPI_SUPPORT}" = "yes" ]; then
|
||||
@ -99,17 +105,6 @@ else
|
||||
PKG_FFMPEG_DEBUG="--disable-debug --enable-stripping"
|
||||
fi
|
||||
|
||||
#Re-enable when patches are rebased on newer version of ffmpeg,for now we use old version.
|
||||
|
||||
if [ "${PROJECT}" = "L4T" ]; then
|
||||
PKG_DEPENDS_TARGET+=" tegra-bsp:host"
|
||||
PKG_PATCH_DIRS+=" L4T"
|
||||
PKG_FFMPEG_NVV4L2="--enable-nvv4l2"
|
||||
EXTRA_CFLAGS="-I${SYSROOT_PREFIX}/usr/src/jetson_multimedia_api/include"
|
||||
else
|
||||
PKG_FFMPEG_NVV4L2=""
|
||||
fi
|
||||
|
||||
if target_has_feature neon; then
|
||||
PKG_FFMPEG_FPU="--enable-neon"
|
||||
else
|
||||
@ -128,13 +123,6 @@ else
|
||||
PKG_FFMPEG_AV1="--disable-libdav1d"
|
||||
fi
|
||||
|
||||
if [ "${DISTRO}" = "Lakka" -a "${VULKAN_SUPPORT}" = yes ]; then
|
||||
PKG_DEPENDS_TARGET+=" ${VULKAN}"
|
||||
PKG_FFMPEG_VULKAN="--enable-vulkan"
|
||||
else
|
||||
PKG_FFMPEG_VULKAN="--disable-vulkan"
|
||||
fi
|
||||
|
||||
pre_configure_target() {
|
||||
cd ${PKG_BUILD}
|
||||
rm -rf .${TARGET_NAME}
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 3368013773dbc2def4b3a33748dc656dc13f3e25 Mon Sep 17 00:00:00 2001
|
||||
From 7df787ecf3260cbb9f370290afc13b77de740c4c Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Sat, 5 Mar 2022 03:27:27 +0000
|
||||
Subject: [PATCH 01/20] codecs: add nvv4l2 codec for Nvidia Tegra SOCs
|
||||
Subject: [PATCH 01/39] codecs: add nvv4l2 codec for Nvidia Tegra SOCs
|
||||
|
||||
Use `--enable-nvv4l2` to enable it.
|
||||
|
||||
@ -46,24 +46,24 @@ FPS are halved.
|
||||
Some formats are supported from Tegra X1 and up.
|
||||
For more, check the NVDEC/NVENC version support matrix.
|
||||
---
|
||||
configure | 22 +
|
||||
libavcodec/Makefile | 9 +
|
||||
configure | 23 +
|
||||
libavcodec/Makefile | 14 +-
|
||||
libavcodec/allcodecs.c | 8 +
|
||||
libavcodec/nvv4l2.c | 820 +++++++++++++++++++++++
|
||||
libavcodec/nvv4l2.h | 324 +++++++++
|
||||
libavcodec/nvv4l2_dec.c | 1101 +++++++++++++++++++++++++++++++
|
||||
libavcodec/nvv4l2_enc.c | 1389 +++++++++++++++++++++++++++++++++++++++
|
||||
7 files changed, 3673 insertions(+)
|
||||
7 files changed, 3678 insertions(+), 1 deletion(-)
|
||||
create mode 100644 libavcodec/nvv4l2.c
|
||||
create mode 100644 libavcodec/nvv4l2.h
|
||||
create mode 100644 libavcodec/nvv4l2_dec.c
|
||||
create mode 100644 libavcodec/nvv4l2_enc.c
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 98113c95fd..29a6d96575 100755
|
||||
index 3cd3bdfb44..889b547071 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -333,6 +333,7 @@ External library support:
|
||||
@@ -336,6 +336,7 @@ External library support:
|
||||
--enable-cuda-nvcc enable Nvidia CUDA compiler [no]
|
||||
--disable-cuda-llvm disable CUDA compilation using clang [autodetect]
|
||||
--disable-cuvid disable Nvidia CUVID support [autodetect]
|
||||
@ -71,7 +71,7 @@ index 98113c95fd..29a6d96575 100755
|
||||
--disable-d3d11va disable Microsoft Direct3D 11 video acceleration code [autodetect]
|
||||
--disable-dxva2 disable Microsoft DirectX 9 video acceleration code [autodetect]
|
||||
--disable-ffnvcodec disable dynamically linked Nvidia code [autodetect]
|
||||
@@ -1843,6 +1844,7 @@ HWACCEL_AUTODETECT_LIBRARY_LIST="
|
||||
@@ -1887,6 +1888,7 @@ HWACCEL_AUTODETECT_LIBRARY_LIST="
|
||||
ffnvcodec
|
||||
nvdec
|
||||
nvenc
|
||||
@ -79,27 +79,28 @@ index 98113c95fd..29a6d96575 100755
|
||||
vaapi
|
||||
vdpau
|
||||
videotoolbox
|
||||
@@ -3051,6 +3053,8 @@ qsvenc_select="qsv"
|
||||
@@ -3129,6 +3131,8 @@ qsvenc_select="qsv"
|
||||
qsvvpp_select="qsv"
|
||||
vaapi_encode_deps="vaapi"
|
||||
v4l2_m2m_deps="linux_videodev2_h sem_timedwait"
|
||||
+nvv4l2_deps="libv4l2 pthreads linux_videodev2_h nvbuf_utils_h v4l2_nv_extensions_h"
|
||||
+nvv4l2_extralibs="-lnvbuf_utils"
|
||||
|
||||
hwupload_cuda_filter_deps="ffnvcodec"
|
||||
scale_npp_filter_deps="ffnvcodec libnpp"
|
||||
@@ -3066,6 +3070,9 @@ amf_deps_any="libdl LoadLibrary"
|
||||
bilateral_cuda_filter_deps="ffnvcodec"
|
||||
bilateral_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
|
||||
@@ -3153,6 +3157,10 @@ ddagrab_filter_deps="d3d11va IDXGIOutput1 DXGI_OUTDUPL_FRAME_INFO"
|
||||
amf_deps_any="libdl LoadLibrary"
|
||||
nvenc_deps="ffnvcodec"
|
||||
nvenc_deps_any="libdl LoadLibrary"
|
||||
nvenc_encoder_deps="nvenc"
|
||||
+nvenc_encoder_deps="nvenc"
|
||||
+h264_nvv4l2_encoder_deps="nvv4l2"
|
||||
+h264_nvv4l2_decoder_deps="nvv4l2"
|
||||
+h264_nvv4l2_decoder_select="h264_mp4toannexb_bsf"
|
||||
|
||||
aac_mf_encoder_deps="mediafoundation"
|
||||
ac3_mf_encoder_deps="mediafoundation"
|
||||
@@ -3098,6 +3105,9 @@ hevc_mediacodec_decoder_deps="mediacodec"
|
||||
hevc_mediacodec_decoder_select="hevc_mp4toannexb_bsf hevc_parser"
|
||||
@@ -3197,6 +3205,9 @@ hevc_mediacodec_encoder_extralibs="-landroid"
|
||||
hevc_mediacodec_encoder_select="hevc_metadata"
|
||||
hevc_mf_encoder_deps="mediafoundation"
|
||||
hevc_nvenc_encoder_deps="nvenc"
|
||||
+hevc_nvv4l2_encoder_deps="nvv4l2"
|
||||
@ -108,7 +109,7 @@ index 98113c95fd..29a6d96575 100755
|
||||
hevc_nvenc_encoder_select="atsc_a53"
|
||||
hevc_qsv_decoder_select="hevc_mp4toannexb_bsf qsvdec"
|
||||
hevc_qsv_encoder_select="hevcparse qsvenc"
|
||||
@@ -3121,6 +3131,7 @@ mpeg2_crystalhd_decoder_select="crystalhd"
|
||||
@@ -3220,6 +3231,7 @@ mpeg2_crystalhd_decoder_select="crystalhd"
|
||||
mpeg2_cuvid_decoder_deps="cuvid"
|
||||
mpeg2_mmal_decoder_deps="mmal"
|
||||
mpeg2_mediacodec_decoder_deps="mediacodec"
|
||||
@ -116,7 +117,7 @@ index 98113c95fd..29a6d96575 100755
|
||||
mpeg2_qsv_decoder_select="qsvdec"
|
||||
mpeg2_qsv_encoder_select="qsvenc"
|
||||
mpeg2_vaapi_encoder_select="cbs_mpeg2 vaapi_encode"
|
||||
@@ -3129,6 +3140,7 @@ mpeg4_crystalhd_decoder_select="crystalhd"
|
||||
@@ -3228,6 +3240,7 @@ mpeg4_crystalhd_decoder_select="crystalhd"
|
||||
mpeg4_cuvid_decoder_deps="cuvid"
|
||||
mpeg4_mediacodec_decoder_deps="mediacodec"
|
||||
mpeg4_mmal_decoder_deps="mmal"
|
||||
@ -124,7 +125,7 @@ index 98113c95fd..29a6d96575 100755
|
||||
mpeg4_omx_encoder_deps="omx"
|
||||
mpeg4_v4l2m2m_decoder_deps="v4l2_m2m mpeg4_v4l2_m2m"
|
||||
mpeg4_v4l2m2m_encoder_deps="v4l2_m2m mpeg4_v4l2_m2m"
|
||||
@@ -3142,6 +3154,7 @@ vc1_qsv_decoder_select="qsvdec"
|
||||
@@ -3239,6 +3252,7 @@ vc1_qsv_decoder_select="qsvdec"
|
||||
vc1_v4l2m2m_decoder_deps="v4l2_m2m vc1_v4l2_m2m"
|
||||
vp8_cuvid_decoder_deps="cuvid"
|
||||
vp8_mediacodec_decoder_deps="mediacodec"
|
||||
@ -132,7 +133,7 @@ index 98113c95fd..29a6d96575 100755
|
||||
vp8_qsv_decoder_select="qsvdec"
|
||||
vp8_rkmpp_decoder_deps="rkmpp"
|
||||
vp8_vaapi_encoder_deps="VAEncPictureParameterBufferVP8"
|
||||
@@ -3150,6 +3163,7 @@ vp8_v4l2m2m_decoder_deps="v4l2_m2m vp8_v4l2_m2m"
|
||||
@@ -3247,6 +3261,7 @@ vp8_v4l2m2m_decoder_deps="v4l2_m2m vp8_v4l2_m2m"
|
||||
vp8_v4l2m2m_encoder_deps="v4l2_m2m vp8_v4l2_m2m"
|
||||
vp9_cuvid_decoder_deps="cuvid"
|
||||
vp9_mediacodec_decoder_deps="mediacodec"
|
||||
@ -140,7 +141,7 @@ index 98113c95fd..29a6d96575 100755
|
||||
vp9_qsv_decoder_select="qsvdec"
|
||||
vp9_rkmpp_decoder_deps="rkmpp"
|
||||
vp9_vaapi_encoder_deps="VAEncPictureParameterBufferVP9"
|
||||
@@ -3426,6 +3440,7 @@ kmsgrab_indev_deps="libdrm"
|
||||
@@ -3537,6 +3552,7 @@ kmsgrab_indev_deps="libdrm"
|
||||
lavfi_indev_deps="avfilter"
|
||||
libcdio_indev_deps="libcdio"
|
||||
libdc1394_indev_deps="libdc1394"
|
||||
@ -148,7 +149,7 @@ index 98113c95fd..29a6d96575 100755
|
||||
openal_indev_deps="openal"
|
||||
opengl_outdev_deps="opengl"
|
||||
opengl_outdev_suggest="sdl2"
|
||||
@@ -6783,6 +6798,13 @@ if enabled_any nvdec cuvid; then
|
||||
@@ -7054,6 +7070,13 @@ if enabled_any nvdec cuvid; then
|
||||
check_type "ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h" "CUVIDAV1PICPARAMS"
|
||||
fi
|
||||
|
||||
@ -161,51 +162,54 @@ index 98113c95fd..29a6d96575 100755
|
||||
+
|
||||
enabled amf &&
|
||||
check_cpp_condition amf "AMF/core/Version.h" \
|
||||
"(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= 0x0001000400090000"
|
||||
"(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= 0x00010004001c0000"
|
||||
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
|
||||
index 33a280cf69..31400f3f2d 100644
|
||||
index 389253f5d0..78f43ca9a1 100644
|
||||
--- a/libavcodec/Makefile
|
||||
+++ b/libavcodec/Makefile
|
||||
@@ -133,6 +133,7 @@ OBJS-$(CONFIG_MPEGVIDEOENC) += mpegvideo_enc.o mpeg12data.o \
|
||||
mpegvideoencdsp.o
|
||||
OBJS-$(CONFIG_MSS34DSP) += mss34dsp.o
|
||||
OBJS-$(CONFIG_NVENC) += nvenc.o
|
||||
@@ -148,6 +148,8 @@ OBJS-$(CONFIG_MSMPEG4DEC) += msmpeg4dec.o msmpeg4.o msmpeg4data.o \
|
||||
OBJS-$(CONFIG_MSMPEG4ENC) += msmpeg4enc.o msmpeg4.o msmpeg4data.o \
|
||||
msmpeg4_vc1_data.o
|
||||
OBJS-$(CONFIG_MSS34DSP) += mss34dsp.o jpegquanttables.o
|
||||
+OBJS-$(CONFIG_NVENC) += nvenc.o
|
||||
+OBJS-$(CONFIG_NVV4L2) += nvv4l2.o
|
||||
OBJS-$(CONFIG_PIXBLOCKDSP) += pixblockdsp.o
|
||||
OBJS-$(CONFIG_QPELDSP) += qpeldsp.o
|
||||
OBJS-$(CONFIG_QSV) += qsv.o
|
||||
@@ -372,12 +373,14 @@ OBJS-$(CONFIG_H264_DECODER) += h264dec.o h264_cabac.o h264_cavlc.o \
|
||||
h264_slice.o h264data.o
|
||||
@@ -404,11 +406,15 @@ OBJS-$(CONFIG_H264_DECODER) += h264dec.o h264_cabac.o h264_cavlc.o \
|
||||
h264_slice.o h264data.o h274.o
|
||||
OBJS-$(CONFIG_H264_AMF_ENCODER) += amfenc_h264.o
|
||||
OBJS-$(CONFIG_H264_CUVID_DECODER) += cuviddec.o
|
||||
+OBJS-$(CONFIG_H264_NVV4L2_DECODER) += nvv4l2_dec.o
|
||||
OBJS-$(CONFIG_H264_MEDIACODEC_DECODER) += mediacodecdec.o
|
||||
OBJS-$(CONFIG_H264_MEDIACODEC_ENCODER) += mediacodecenc.o
|
||||
OBJS-$(CONFIG_H264_MF_ENCODER) += mfenc.o mf_utils.o
|
||||
OBJS-$(CONFIG_H264_MMAL_DECODER) += mmaldec.o
|
||||
OBJS-$(CONFIG_H264_NVENC_ENCODER) += nvenc_h264.o
|
||||
OBJS-$(CONFIG_NVENC_ENCODER) += nvenc_h264.o
|
||||
OBJS-$(CONFIG_NVENC_H264_ENCODER) += nvenc_h264.o
|
||||
-OBJS-$(CONFIG_H264_NVENC_ENCODER) += nvenc_h264.o nvenc.o
|
||||
+OBJS-$(CONFIG_H264_NVENC_ENCODER) += nvenc_h264.o
|
||||
+OBJS-$(CONFIG_NVENC_ENCODER) += nvenc_h264.o
|
||||
+OBJS-$(CONFIG_NVENC_H264_ENCODER) += nvenc_h264.o
|
||||
+OBJS-$(CONFIG_H264_NVV4L2_ENCODER) += nvv4l2_enc.o
|
||||
OBJS-$(CONFIG_H264_OMX_ENCODER) += omx.o
|
||||
OBJS-$(CONFIG_H264_QSV_DECODER) += qsvdec.o
|
||||
OBJS-$(CONFIG_H264_QSV_ENCODER) += qsvenc_h264.o
|
||||
@@ -395,6 +398,7 @@ OBJS-$(CONFIG_HEVC_DECODER) += hevcdec.o hevc_mvs.o \
|
||||
hevcdsp.o hevc_filter.o hevc_data.o
|
||||
@@ -430,6 +436,7 @@ OBJS-$(CONFIG_HEVC_DECODER) += hevcdec.o hevc_mvs.o \
|
||||
h274.o
|
||||
OBJS-$(CONFIG_HEVC_AMF_ENCODER) += amfenc_hevc.o
|
||||
OBJS-$(CONFIG_HEVC_CUVID_DECODER) += cuviddec.o
|
||||
+OBJS-$(CONFIG_HEVC_NVV4L2_DECODER) += nvv4l2_dec.o
|
||||
OBJS-$(CONFIG_HEVC_MEDIACODEC_DECODER) += mediacodecdec.o
|
||||
OBJS-$(CONFIG_HEVC_MEDIACODEC_ENCODER) += mediacodecenc.o
|
||||
OBJS-$(CONFIG_HEVC_MF_ENCODER) += mfenc.o mf_utils.o
|
||||
OBJS-$(CONFIG_HEVC_NVENC_ENCODER) += nvenc_hevc.o
|
||||
@@ -405,6 +409,7 @@ OBJS-$(CONFIG_HEVC_QSV_ENCODER) += qsvenc_hevc.o hevc_ps_enc.o \
|
||||
OBJS-$(CONFIG_HEVC_RKMPP_DECODER) += rkmppdec.o
|
||||
OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o h265_profile_level.o
|
||||
@@ -441,6 +448,7 @@ OBJS-$(CONFIG_HEVC_RKMPP_DECODER) += rkmppdec.o
|
||||
OBJS-$(CONFIG_HEVC_VAAPI_ENCODER) += vaapi_encode_h265.o h265_profile_level.o \
|
||||
h2645data.o
|
||||
OBJS-$(CONFIG_HEVC_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
||||
+OBJS-$(CONFIG_HEVC_NVV4L2_ENCODER) += nvv4l2_enc.o
|
||||
OBJS-$(CONFIG_HEVC_V4L2M2M_ENCODER) += v4l2_m2m_enc.o
|
||||
OBJS-$(CONFIG_HEVC_VIDEOTOOLBOX_ENCODER) += videotoolboxenc.o
|
||||
OBJS-$(CONFIG_HNM4_VIDEO_DECODER) += hnm4video.o
|
||||
OBJS-$(CONFIG_HQ_HQA_DECODER) += hq_hqa.o hq_hqadata.o hq_hqadsp.o \
|
||||
@@ -495,12 +500,14 @@ OBJS-$(CONFIG_MPEG2_QSV_ENCODER) += qsvenc_mpeg2.o
|
||||
@@ -535,12 +543,14 @@ OBJS-$(CONFIG_MPEG2_QSV_ENCODER) += qsvenc_mpeg2.o
|
||||
OBJS-$(CONFIG_MPEG2VIDEO_DECODER) += mpeg12dec.o mpeg12.o mpeg12data.o
|
||||
OBJS-$(CONFIG_MPEG2VIDEO_ENCODER) += mpeg12enc.o mpeg12.o
|
||||
OBJS-$(CONFIG_MPEG2_CUVID_DECODER) += cuviddec.o
|
||||
@ -213,23 +217,23 @@ index 33a280cf69..31400f3f2d 100644
|
||||
OBJS-$(CONFIG_MPEG2_MEDIACODEC_DECODER) += mediacodecdec.o
|
||||
OBJS-$(CONFIG_MPEG2_VAAPI_ENCODER) += vaapi_encode_mpeg2.o
|
||||
OBJS-$(CONFIG_MPEG2_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
||||
OBJS-$(CONFIG_MPEG4_DECODER) += xvididct.o
|
||||
OBJS-$(CONFIG_MPEG4_DECODER) += mpeg4videodsp.o xvididct.o
|
||||
OBJS-$(CONFIG_MPEG4_ENCODER) += mpeg4videoenc.o
|
||||
OBJS-$(CONFIG_MPEG4_CUVID_DECODER) += cuviddec.o
|
||||
+OBJS-$(CONFIG_MPEG4_NVV4L2_DECODER) += nvv4l2_dec.o
|
||||
OBJS-$(CONFIG_MPEG4_MEDIACODEC_DECODER) += mediacodecdec.o
|
||||
OBJS-$(CONFIG_MPEG4_OMX_ENCODER) += omx.o
|
||||
OBJS-$(CONFIG_MPEG4_V4L2M2M_DECODER) += v4l2_m2m_dec.o
|
||||
@@ -715,6 +722,7 @@ OBJS-$(CONFIG_VP6_DECODER) += vp6.o vp56.o vp56data.o \
|
||||
OBJS-$(CONFIG_VP7_DECODER) += vp8.o vp56rac.o
|
||||
OBJS-$(CONFIG_VP8_DECODER) += vp8.o vp56rac.o
|
||||
@@ -763,6 +773,7 @@ OBJS-$(CONFIG_VP6_DECODER) += vp6.o vp56.o vp56data.o \
|
||||
OBJS-$(CONFIG_VP7_DECODER) += vp8.o vpx_rac.o
|
||||
OBJS-$(CONFIG_VP8_DECODER) += vp8.o vpx_rac.o
|
||||
OBJS-$(CONFIG_VP8_CUVID_DECODER) += cuviddec.o
|
||||
+OBJS-$(CONFIG_VP8_NVV4L2_DECODER) += nvv4l2_dec.o
|
||||
OBJS-$(CONFIG_VP8_MEDIACODEC_DECODER) += mediacodecdec.o
|
||||
OBJS-$(CONFIG_VP8_QSV_DECODER) += qsvdec.o
|
||||
OBJS-$(CONFIG_VP8_RKMPP_DECODER) += rkmppdec.o
|
||||
@@ -725,6 +733,7 @@ OBJS-$(CONFIG_VP9_DECODER) += vp9.o vp9data.o vp9dsp.o vp9lpf.o vp9r
|
||||
vp9block.o vp9prob.o vp9mvs.o vp56rac.o \
|
||||
@@ -773,6 +784,7 @@ OBJS-$(CONFIG_VP9_DECODER) += vp9.o vp9data.o vp9dsp.o vp9lpf.o vp9r
|
||||
vp9block.o vp9prob.o vp9mvs.o vpx_rac.o \
|
||||
vp9dsp_8bpp.o vp9dsp_10bpp.o vp9dsp_12bpp.o
|
||||
OBJS-$(CONFIG_VP9_CUVID_DECODER) += cuviddec.o
|
||||
+OBJS-$(CONFIG_VP9_NVV4L2_DECODER) += nvv4l2_dec.o
|
||||
@ -237,50 +241,50 @@ index 33a280cf69..31400f3f2d 100644
|
||||
OBJS-$(CONFIG_VP9_RKMPP_DECODER) += rkmppdec.o
|
||||
OBJS-$(CONFIG_VP9_VAAPI_ENCODER) += vaapi_encode_vp9.o
|
||||
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
|
||||
index 2e9a3581de..a828e43cfd 100644
|
||||
index e593ad19af..8eb911eec2 100644
|
||||
--- a/libavcodec/allcodecs.c
|
||||
+++ b/libavcodec/allcodecs.c
|
||||
@@ -141,6 +141,8 @@ extern AVCodec ff_h263i_decoder;
|
||||
extern AVCodec ff_h263p_encoder;
|
||||
extern AVCodec ff_h263p_decoder;
|
||||
extern AVCodec ff_h263_v4l2m2m_decoder;
|
||||
+extern AVCodec ff_h264_nvv4l2_encoder;
|
||||
+extern AVCodec ff_h264_nvv4l2_decoder;
|
||||
extern AVCodec ff_h264_decoder;
|
||||
extern AVCodec ff_h264_crystalhd_decoder;
|
||||
extern AVCodec ff_h264_v4l2m2m_decoder;
|
||||
@@ -150,6 +152,8 @@ extern AVCodec ff_h264_qsv_decoder;
|
||||
extern AVCodec ff_h264_rkmpp_decoder;
|
||||
extern AVCodec ff_hap_encoder;
|
||||
extern AVCodec ff_hap_decoder;
|
||||
+extern AVCodec ff_hevc_nvv4l2_encoder;
|
||||
+extern AVCodec ff_hevc_nvv4l2_decoder;
|
||||
extern AVCodec ff_hevc_decoder;
|
||||
extern AVCodec ff_hevc_qsv_decoder;
|
||||
extern AVCodec ff_hevc_rkmpp_decoder;
|
||||
@@ -194,8 +198,10 @@ extern AVCodec ff_mobiclip_decoder;
|
||||
extern AVCodec ff_motionpixels_decoder;
|
||||
extern AVCodec ff_mpeg1video_encoder;
|
||||
extern AVCodec ff_mpeg1video_decoder;
|
||||
+extern AVCodec ff_mpeg2_nvv4l2_decoder;
|
||||
extern AVCodec ff_mpeg2video_encoder;
|
||||
extern AVCodec ff_mpeg2video_decoder;
|
||||
+extern AVCodec ff_mpeg4_nvv4l2_decoder;
|
||||
extern AVCodec ff_mpeg4_encoder;
|
||||
extern AVCodec ff_mpeg4_decoder;
|
||||
extern AVCodec ff_mpeg4_crystalhd_decoder;
|
||||
@@ -356,9 +362,11 @@ extern AVCodec ff_vp6_decoder;
|
||||
extern AVCodec ff_vp6a_decoder;
|
||||
extern AVCodec ff_vp6f_decoder;
|
||||
extern AVCodec ff_vp7_decoder;
|
||||
+extern AVCodec ff_vp8_nvv4l2_decoder;
|
||||
extern AVCodec ff_vp8_decoder;
|
||||
extern AVCodec ff_vp8_rkmpp_decoder;
|
||||
extern AVCodec ff_vp8_v4l2m2m_decoder;
|
||||
+extern AVCodec ff_vp9_nvv4l2_decoder;
|
||||
extern AVCodec ff_vp9_decoder;
|
||||
extern AVCodec ff_vp9_rkmpp_decoder;
|
||||
extern AVCodec ff_vp9_v4l2m2m_decoder;
|
||||
@@ -150,6 +150,8 @@ extern const FFCodec ff_h263i_decoder;
|
||||
extern const FFCodec ff_h263p_encoder;
|
||||
extern const FFCodec ff_h263p_decoder;
|
||||
extern const FFCodec ff_h263_v4l2m2m_decoder;
|
||||
+extern const FFCodec ff_h264_nvv4l2_encoder;
|
||||
+extern const FFCodec ff_h264_nvv4l2_decoder;
|
||||
extern const FFCodec ff_h264_decoder;
|
||||
extern const FFCodec ff_h264_crystalhd_decoder;
|
||||
extern const FFCodec ff_h264_v4l2m2m_decoder;
|
||||
@@ -160,6 +162,8 @@ extern const FFCodec ff_h264_qsv_decoder;
|
||||
extern const FFCodec ff_h264_rkmpp_decoder;
|
||||
extern const FFCodec ff_hap_encoder;
|
||||
extern const FFCodec ff_hap_decoder;
|
||||
+extern const FFCodec ff_hevc_nvv4l2_encoder;
|
||||
+extern const FFCodec ff_hevc_nvv4l2_decoder;
|
||||
extern const FFCodec ff_hevc_decoder;
|
||||
extern const FFCodec ff_hevc_qsv_decoder;
|
||||
extern const FFCodec ff_hevc_rkmpp_decoder;
|
||||
@@ -205,8 +209,10 @@ extern const FFCodec ff_mobiclip_decoder;
|
||||
extern const FFCodec ff_motionpixels_decoder;
|
||||
extern const FFCodec ff_mpeg1video_encoder;
|
||||
extern const FFCodec ff_mpeg1video_decoder;
|
||||
+extern const FFCodec ff_mpeg2_nvv4l2_decoder;
|
||||
extern const FFCodec ff_mpeg2video_encoder;
|
||||
extern const FFCodec ff_mpeg2video_decoder;
|
||||
+extern const FFCodec ff_mpeg4_nvv4l2_decoder;
|
||||
extern const FFCodec ff_mpeg4_encoder;
|
||||
extern const FFCodec ff_mpeg4_decoder;
|
||||
extern const FFCodec ff_mpeg4_crystalhd_decoder;
|
||||
@@ -376,9 +382,11 @@ extern const FFCodec ff_vp6_decoder;
|
||||
extern const FFCodec ff_vp6a_decoder;
|
||||
extern const FFCodec ff_vp6f_decoder;
|
||||
extern const FFCodec ff_vp7_decoder;
|
||||
+extern const FFCodec ff_vp8_nvv4l2_decoder;
|
||||
extern const FFCodec ff_vp8_decoder;
|
||||
extern const FFCodec ff_vp8_rkmpp_decoder;
|
||||
extern const FFCodec ff_vp8_v4l2m2m_decoder;
|
||||
+extern const FFCodec ff_vp9_nvv4l2_decoder;
|
||||
extern const FFCodec ff_vp9_decoder;
|
||||
extern const FFCodec ff_vp9_rkmpp_decoder;
|
||||
extern const FFCodec ff_vp9_v4l2m2m_decoder;
|
||||
diff --git a/libavcodec/nvv4l2.c b/libavcodec/nvv4l2.c
|
||||
new file mode 100644
|
||||
index 0000000000..b3e4a27823
|
||||
|
@ -1,51 +1,20 @@
|
||||
From b58c700230430c744470e2fdedc73e2439a51346 Mon Sep 17 00:00:00 2001
|
||||
From ffa9de21d7415d53f2f02b674438a41daaeee209 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Sat, 5 Mar 2022 03:30:44 +0000
|
||||
Subject: [PATCH 02/20] fftools/libavformat: Enforce nvv4l2
|
||||
Subject: [PATCH 02/39] fftools/libavformat: Enforce nvv4l2
|
||||
|
||||
This enforces NVV4L2 even if user requests another codec.
|
||||
Additionally, it forces nvv4l2 to go through software codecs first to get context if needed.
|
||||
---
|
||||
fftools/ffmpeg_opt.c | 19 +++++++++++++++++++
|
||||
fftools/ffplay.c | 25 +++++++++++++++++++++++++
|
||||
libavformat/utils.c | 13 +++++++++++++
|
||||
3 files changed, 57 insertions(+)
|
||||
fftools/ffplay.c | 25 +++++++++++++++++++++++++
|
||||
libavformat/demux.c | 13 +++++++++++++
|
||||
2 files changed, 38 insertions(+)
|
||||
|
||||
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
|
||||
index 807e783422..d6f28bda23 100644
|
||||
--- a/fftools/ffmpeg_opt.c
|
||||
+++ b/fftools/ffmpeg_opt.c
|
||||
@@ -771,6 +771,25 @@ static const AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVSt
|
||||
char *codec_name = NULL;
|
||||
|
||||
MATCH_PER_STREAM_OPT(codec_names, str, codec_name, s, st);
|
||||
+
|
||||
+#if CONFIG_NVV4L2
|
||||
+ /* Reset requested decoder in order to enforce NVV4L2 if possible. */
|
||||
+ if (codec_name) {
|
||||
+ if (strcmp(codec_name, "h264") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "hevc") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "mpeg2video") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "mpeg4") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "vp8") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "vp9") == 0 && st->codecpar->format != AV_PIX_FMT_YUV420P10)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
if (codec_name) {
|
||||
const AVCodec *codec = find_codec_or_die(codec_name, st->codecpar->codec_type, 0);
|
||||
st->codecpar->codec_id = codec->id;
|
||||
diff --git a/fftools/ffplay.c b/fftools/ffplay.c
|
||||
index e14c800b8f..e1c7b741b9 100644
|
||||
index d6479aef5f..86f8425a15 100644
|
||||
--- a/fftools/ffplay.c
|
||||
+++ b/fftools/ffplay.c
|
||||
@@ -2601,6 +2601,31 @@ static int stream_component_open(VideoState *is, int stream_index)
|
||||
@@ -2590,6 +2590,31 @@ static int stream_component_open(VideoState *is, int stream_index)
|
||||
case AVMEDIA_TYPE_SUBTITLE: is->last_subtitle_stream = stream_index; forced_codec_name = subtitle_codec_name; break;
|
||||
case AVMEDIA_TYPE_VIDEO : is->last_video_stream = stream_index; forced_codec_name = video_codec_name; break;
|
||||
}
|
||||
@ -77,11 +46,11 @@ index e14c800b8f..e1c7b741b9 100644
|
||||
if (forced_codec_name)
|
||||
codec = avcodec_find_decoder_by_name(forced_codec_name);
|
||||
if (!codec) {
|
||||
diff --git a/libavformat/utils.c b/libavformat/utils.c
|
||||
index 1384b56771..a960f8265d 100644
|
||||
--- a/libavformat/utils.c
|
||||
+++ b/libavformat/utils.c
|
||||
@@ -211,6 +211,19 @@ static const AVCodec *find_probe_decoder(AVFormatContext *s, const AVStream *st,
|
||||
diff --git a/libavformat/demux.c b/libavformat/demux.c
|
||||
index b19ab86d08..ae60a819d5 100644
|
||||
--- a/libavformat/demux.c
|
||||
+++ b/libavformat/demux.c
|
||||
@@ -77,6 +77,19 @@ static const AVCodec *find_probe_decoder(AVFormatContext *s, const AVStream *st,
|
||||
if (codec_id == AV_CODEC_ID_H264)
|
||||
return avcodec_find_decoder_by_name("h264");
|
||||
#endif
|
||||
@ -94,12 +63,12 @@ index 1384b56771..a960f8265d 100644
|
||||
+ else if (codec_id == AV_CODEC_ID_MPEG4)
|
||||
+ return avcodec_find_decoder_by_name("mpeg4");
|
||||
+ else if (codec_id == AV_CODEC_ID_VP8)
|
||||
+ return avcodec_find_decoder_by_name("vp8");
|
||||
+ return avcodec_find_decoder_by_name("vp8");
|
||||
+ else if (codec_id == AV_CODEC_ID_VP9)
|
||||
+ return avcodec_find_decoder_by_name("vp9");
|
||||
+#endif
|
||||
|
||||
codec = find_decoder(s, st, codec_id);
|
||||
codec = ff_find_decoder(s, st, codec_id);
|
||||
if (!codec)
|
||||
--
|
||||
2.25.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 87622041abb1387bc8580721d23ec79a03e5249c Mon Sep 17 00:00:00 2001
|
||||
From c80256646ddae6d91a1ec9fe1a6cda53efaf923f Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Sun, 6 Mar 2022 04:26:06 +0000
|
||||
Subject: [PATCH 03/20] codecs: nvv4l2: avoid probing
|
||||
Subject: [PATCH 03/39] codecs: nvv4l2: avoid probing
|
||||
|
||||
NVV4L2 does not support probing for getting stream metadata.
|
||||
So disallow that.
|
||||
|
@ -1,18 +1,18 @@
|
||||
From ecdbd9b4904b71bea7d3c373690d0e6283896730 Mon Sep 17 00:00:00 2001
|
||||
From 81aa7501ce56cf7df7ee7be3bf6e7e37d1952dc8 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Sun, 6 Mar 2022 04:27:54 +0000
|
||||
Subject: [PATCH 04/20] libavformat: remove nvv4l2 probing mitigation
|
||||
Subject: [PATCH 04/39] libavformat: remove nvv4l2 probing mitigation
|
||||
|
||||
It was fixed properly with AV_CODEC_CAP_AVOID_PROBING flag.
|
||||
---
|
||||
libavformat/utils.c | 13 -------------
|
||||
libavformat/demux.c | 13 -------------
|
||||
1 file changed, 13 deletions(-)
|
||||
|
||||
diff --git a/libavformat/utils.c b/libavformat/utils.c
|
||||
index a960f8265d..1384b56771 100644
|
||||
--- a/libavformat/utils.c
|
||||
+++ b/libavformat/utils.c
|
||||
@@ -211,19 +211,6 @@ static const AVCodec *find_probe_decoder(AVFormatContext *s, const AVStream *st,
|
||||
diff --git a/libavformat/demux.c b/libavformat/demux.c
|
||||
index ae60a819d5..b19ab86d08 100644
|
||||
--- a/libavformat/demux.c
|
||||
+++ b/libavformat/demux.c
|
||||
@@ -77,19 +77,6 @@ static const AVCodec *find_probe_decoder(AVFormatContext *s, const AVStream *st,
|
||||
if (codec_id == AV_CODEC_ID_H264)
|
||||
return avcodec_find_decoder_by_name("h264");
|
||||
#endif
|
||||
@ -25,12 +25,12 @@ index a960f8265d..1384b56771 100644
|
||||
- else if (codec_id == AV_CODEC_ID_MPEG4)
|
||||
- return avcodec_find_decoder_by_name("mpeg4");
|
||||
- else if (codec_id == AV_CODEC_ID_VP8)
|
||||
- return avcodec_find_decoder_by_name("vp8");
|
||||
- return avcodec_find_decoder_by_name("vp8");
|
||||
- else if (codec_id == AV_CODEC_ID_VP9)
|
||||
- return avcodec_find_decoder_by_name("vp9");
|
||||
-#endif
|
||||
|
||||
codec = find_decoder(s, st, codec_id);
|
||||
codec = ff_find_decoder(s, st, codec_id);
|
||||
if (!codec)
|
||||
--
|
||||
2.25.1
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 8e286f3ffc845709f6747d77982c60ad0ed0b37f Mon Sep 17 00:00:00 2001
|
||||
From 135ad87310784e7dfd49c95ba6f7ed45e9444cd8 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Fri, 18 Mar 2022 21:16:35 +0000
|
||||
Subject: [PATCH 05/20] codecs: nvv4l2: do not use external headers
|
||||
Subject: [PATCH 05/39] codecs: nvv4l2: do not use external headers
|
||||
|
||||
Make needed headers builtin as this will help to bring compatibility from r32.3.1 till r32.7.1 and newer with a single build.
|
||||
---
|
||||
@ -11,10 +11,10 @@ Make needed headers builtin as this will help to bring compatibility from r32.3.
|
||||
create mode 100644 libavcodec/nvv4l2_ext_utils.h
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 29a6d96575..ea84db929c 100755
|
||||
index 889b547071..ba28526b44 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -3053,7 +3053,7 @@ qsvenc_select="qsv"
|
||||
@@ -3131,7 +3131,7 @@ qsvenc_select="qsv"
|
||||
qsvvpp_select="qsv"
|
||||
vaapi_encode_deps="vaapi"
|
||||
v4l2_m2m_deps="linux_videodev2_h sem_timedwait"
|
||||
@ -22,8 +22,8 @@ index 29a6d96575..ea84db929c 100755
|
||||
+nvv4l2_deps="libv4l2 pthreads linux_videodev2_h"
|
||||
nvv4l2_extralibs="-lnvbuf_utils"
|
||||
|
||||
hwupload_cuda_filter_deps="ffnvcodec"
|
||||
@@ -6798,11 +6798,8 @@ if enabled_any nvdec cuvid; then
|
||||
bilateral_cuda_filter_deps="ffnvcodec"
|
||||
@@ -7070,11 +7070,8 @@ if enabled_any nvdec cuvid; then
|
||||
check_type "ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h" "CUVIDAV1PICPARAMS"
|
||||
fi
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From fd622ef8d15cf208810f82a6a843b4db94fb28be Mon Sep 17 00:00:00 2001
|
||||
From 4896ff0afcdccbb5521dee948c233dccb6616d7a Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Fri, 18 Mar 2022 21:20:48 +0000
|
||||
Subject: [PATCH 06/20] codecs: nvv4l2: use atomics for pool
|
||||
Subject: [PATCH 06/39] codecs: nvv4l2: use atomics for pool
|
||||
|
||||
Do not lock with mutexes until we need to do more in pools. Use atomics for now to lower latency.
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 0fd5fb903861c42d40f84b0468496006966e1c5d Mon Sep 17 00:00:00 2001
|
||||
From 607f6a8e40b495ecb887fc046bf8cf6030036c3a Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Fri, 18 Mar 2022 21:23:33 +0000
|
||||
Subject: [PATCH 07/20] codecs: nvv4l2: add new functions and update context as
|
||||
Subject: [PATCH 07/39] codecs: nvv4l2: add new functions and update context as
|
||||
prep
|
||||
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 02d9583d32a9a8bd02dda9dd510519c04691d8d2 Mon Sep 17 00:00:00 2001
|
||||
From 72f992d69e5462c2da170f4259032b5f9ff6b250 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Fri, 18 Mar 2022 21:31:31 +0000
|
||||
Subject: [PATCH 08/20] codecs: nvv4l2: support multiple L4T versions with
|
||||
Subject: [PATCH 08/39] codecs: nvv4l2: support multiple L4T versions with
|
||||
single build
|
||||
|
||||
Nvidia has the tendency to break compatibility on documented apis for no reason.
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 280522f4f351a045ae7288ce7f5110ae099ea8b7 Mon Sep 17 00:00:00 2001
|
||||
From ade9d9b54d172437be84797300b25a85c4164cd4 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Fri, 18 Mar 2022 21:39:48 +0000
|
||||
Subject: [PATCH 09/20] codecs: nvv4l2: align line width to 64B
|
||||
Subject: [PATCH 09/39] codecs: nvv4l2: align line width to 64B
|
||||
|
||||
Transformations of formats to formats of simply Block linear to Pitch are done in HW.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 9d3282af10055fbbb81bd53654dd342682e2d09d Mon Sep 17 00:00:00 2001
|
||||
From b7a72216ca1ed53f6428a3fca5949618d2059538 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Fri, 18 Mar 2022 21:42:29 +0000
|
||||
Subject: [PATCH 10/20] codecs: nvv4l2: add two-pass cbr mode support
|
||||
Subject: [PATCH 10/39] codecs: nvv4l2: add two-pass cbr mode support
|
||||
|
||||
To enable, use `twopass=on` as encoder option.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 73aba81a154a3f25efb2326a6e59949660d6a5f5 Mon Sep 17 00:00:00 2001
|
||||
From 124b4a1c85f24a11de5710b8515648dae91000cf Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Fri, 18 Mar 2022 21:46:36 +0000
|
||||
Subject: [PATCH 11/20] codecs: nvv4l2: various bugfixes
|
||||
Subject: [PATCH 11/39] codecs: nvv4l2: various bugfixes
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_dec.c | 105 ++++++++++++++++++++++------------------
|
||||
|
@ -1,7 +1,7 @@
|
||||
From c0832ff40e14ff28c926e500525cdf839d58ff98 Mon Sep 17 00:00:00 2001
|
||||
From d78e4bc70ec1d97e22c5f0365c027574e740923f Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Fri, 18 Mar 2022 21:50:20 +0000
|
||||
Subject: [PATCH 12/20] codecs: nvv4l2: fix hanging on event wait if no full
|
||||
Subject: [PATCH 12/39] codecs: nvv4l2: fix hanging on event wait if no full
|
||||
frame info
|
||||
|
||||
Sometimes the decoder can be opened with no packet sent or not many for a frame to be decoded.
|
||||
|
@ -1,7 +1,7 @@
|
||||
From eceaecff30fc8a1ca622de7506470d486e34695a Mon Sep 17 00:00:00 2001
|
||||
From ac123e70b68b22a99b483ba5b9406e60b35f1519 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Fri, 18 Mar 2022 21:53:34 +0000
|
||||
Subject: [PATCH 13/20] codecs: nvv4l2: use sessions for transformations
|
||||
Subject: [PATCH 13/39] codecs: nvv4l2: use sessions for transformations
|
||||
|
||||
Some apps use different processes for init and decoding.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 1d0dbfb7243a12b2941a23584a2dbed7cfb7077f Mon Sep 17 00:00:00 2001
|
||||
From 95ed6f305a76c588f8264406e69123e3775e6c36 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Fri, 18 Mar 2022 21:57:58 +0000
|
||||
Subject: [PATCH 14/20] codecs: nvv4l2: support all different timestamps
|
||||
Subject: [PATCH 14/39] codecs: nvv4l2: support all different timestamps
|
||||
|
||||
Various packets and players have different timestamps defined.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 04008befad133d97b7f956a21632592aaaede7ca Mon Sep 17 00:00:00 2001
|
||||
From 0cd74d94cdac5e3cd7ce3e014b3af2b276389074 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Sat, 11 Jun 2022 17:14:49 +0000
|
||||
Subject: [PATCH 15/20] codecs: nvv4l2: BSP 34.1.x remarks
|
||||
Subject: [PATCH 15/39] codecs: nvv4l2: BSP 34.1.x remarks
|
||||
|
||||
NVIDIA changed the enum again in r34 and broke compatibility for no reason.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 3674076e6287c62dd39c73585521504908f25fb9 Mon Sep 17 00:00:00 2001
|
||||
From 628d01310250a97fc874f3acb9405460b57e679d Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Tue, 14 Jun 2022 19:21:20 +0000
|
||||
Subject: [PATCH 16/20] codecs: nvv4l2: support BT709/BT2020 colorspaces
|
||||
Subject: [PATCH 16/39] codecs: nvv4l2: support BT709/BT2020 colorspaces
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_dec.c | 62 ++++++++++++++++++++++++-----------
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 636c040931dff3d5febae00697a8502af396e01f Mon Sep 17 00:00:00 2001
|
||||
From 9ad8d41a2aa4dcb6b552d77e04f9ce4dc26e999a Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Wed, 15 Jun 2022 13:33:10 +0000
|
||||
Subject: [PATCH 17/20] codecs: nvv4l2: reorder capture buffer queueing
|
||||
Subject: [PATCH 17/39] codecs: nvv4l2: reorder capture buffer queueing
|
||||
|
||||
Move capture buffer queueing after capture plane stream on.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 7b67a0996bb80c38a923b215566c67ffc130d161 Mon Sep 17 00:00:00 2001
|
||||
From ef1bcd73fa1e37982dfc24f2319e83d5932848a8 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Tue, 28 Jun 2022 01:37:59 +0000
|
||||
Subject: [PATCH 18/20] codecs: nvv4l2: align encoder plane width to 64B
|
||||
Subject: [PATCH 18/39] codecs: nvv4l2: align encoder plane width to 64B
|
||||
|
||||
Transformations of Block linear formats to linear Pitch formats are done in HW.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From b0aabaeebd73e4968654f384f44ce8a4d608ae8d Mon Sep 17 00:00:00 2001
|
||||
From c5751e2bb1faeb0fd8e4442461bbbcd9448c3960 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Wed, 29 Jun 2022 06:38:26 +0000
|
||||
Subject: [PATCH 19/20] codecs: nvv4l2: align enc plane width per format/plane
|
||||
Subject: [PATCH 19/39] codecs: nvv4l2: align enc plane width per format/plane
|
||||
|
||||
Take two on creating a heuristic of the needed alignment.
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From deac819ac20d2ccd1664c95e4d91c20a35d67cc5 Mon Sep 17 00:00:00 2001
|
||||
From 1fe17b61d4221fed766069a7742a7d09eaabedbf Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Wed, 3 Aug 2022 22:04:22 +0000
|
||||
Subject: [PATCH 20/20] codecs: nvv4l2: fix memleak
|
||||
Subject: [PATCH 20/39] codecs: nvv4l2: fix memleak
|
||||
|
||||
Fixes #2
|
||||
|
||||
|
@ -0,0 +1,39 @@
|
||||
From 24b397a75e4a737c845b91771274ad1104edd54f Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Wed, 28 Dec 2022 14:22:13 +0000
|
||||
Subject: [PATCH 21/39] codecs: nvv4l2: fix use after free
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_enc.c | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_enc.c b/libavcodec/nvv4l2_enc.c
|
||||
index 3af728aade..dc09236e0a 100644
|
||||
--- a/libavcodec/nvv4l2_enc.c
|
||||
+++ b/libavcodec/nvv4l2_enc.c
|
||||
@@ -795,6 +795,13 @@ int nvv4l2_encoder_close(AVCodecContext *avctx, nvv4l2_ctx_t *ctx)
|
||||
nvv4l2_destroyBuffer(ctx, ctx->cp_buffers[i]);
|
||||
}
|
||||
|
||||
+ for (uint32_t i = 0; i < ctx->op_num_buffers; i++) {
|
||||
+ if (ctx->plane_dma_fd[i] != -1) {
|
||||
+ nvv4l2_unmap_out(ctx, i, ctx->op_buf_type,
|
||||
+ ctx->op_mem_type, ctx->plane_dma_fd[i]);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/* Request 0 buffers on both planes. */
|
||||
op_num_old_buffers = ctx->op_num_buffers;
|
||||
ret = nvv4l2_req_buffers_on_output_plane(ctx,
|
||||
@@ -808,8 +815,6 @@ int nvv4l2_encoder_close(AVCodecContext *avctx, nvv4l2_ctx_t *ctx)
|
||||
/* Unmap and destroy all allocated DMA buffers. */
|
||||
for (uint32_t i = 0; i < op_num_old_buffers; i++) {
|
||||
if (ctx->plane_dma_fd[i] != -1) {
|
||||
- nvv4l2_unmap_out(ctx, i, ctx->op_buf_type,
|
||||
- ctx->op_mem_type, ctx->plane_dma_fd[i]);
|
||||
ret = NvBufferDestroy(ctx->plane_dma_fd[i]);
|
||||
ctx->plane_dma_fd[i] = -1;
|
||||
if (ret) {
|
||||
--
|
||||
2.25.1
|
||||
|
@ -1,26 +0,0 @@
|
||||
diff -Naur ffmpeg-4.4.1-Nexus-Alpha1-2/configure ffmpeg-4.4.1-Nexus-Alpha1/configure
|
||||
--- ffmpeg-4.4.1-Nexus-Alpha1-2/configure 2022-10-10 21:51:13.330387005 +0200
|
||||
+++ ffmpeg-4.4.1-Nexus-Alpha1/configure 2022-10-10 22:01:51.723150253 +0200
|
||||
@@ -3068,8 +3068,8 @@
|
||||
qsvvpp_select="qsv"
|
||||
vaapi_encode_deps="vaapi"
|
||||
v4l2_m2m_deps="linux_videodev2_h sem_timedwait"
|
||||
-nvv4l2_deps="libv4l2 pthreads linux_videodev2_h"
|
||||
-nvv4l2_extralibs="-lnvbuf_utils"
|
||||
+nvv4l2_deps="pthreads"
|
||||
+nvv4l2_extralibs="-lnvbuf_utils -lv4l2"
|
||||
|
||||
hwupload_cuda_filter_deps="ffnvcodec"
|
||||
scale_npp_filter_deps="ffnvcodec libnpp"
|
||||
@@ -6829,10 +6829,7 @@
|
||||
check_type "ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h" "CUVIDAV1PICPARAMS"
|
||||
fi
|
||||
|
||||
-enabled nvv4l2 && add_ldflags '-L/usr/lib/aarch64-linux-gnu/tegra' \
|
||||
- && check_headers linux/videodev2.h \
|
||||
- && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl
|
||||
-
|
||||
+enabled nvv4l2 && add_ldflags '-L/usr/lib/aarch64-linux-gnu/tegra'
|
||||
enabled amf &&
|
||||
check_cpp_condition amf "AMF/core/Version.h" \
|
||||
"(AMF_VERSION_MAJOR << 48 | AMF_VERSION_MINOR << 32 | AMF_VERSION_RELEASE << 16 | AMF_VERSION_BUILD_NUM) >= 0x0001000400090000"
|
101
packages/multimedia/ffmpeg/patches/L4T/0022-codecs-nvv4l2-rename-AVCodec-to-fit-API-renames.patch
Normal file
101
packages/multimedia/ffmpeg/patches/L4T/0022-codecs-nvv4l2-rename-AVCodec-to-fit-API-renames.patch
Normal file
@ -0,0 +1,101 @@
|
||||
From b2a7cfdcf77cfd5c3ca864670aa949ddef17cd9a Mon Sep 17 00:00:00 2001
|
||||
From: Azkali Manad <a.ffcc7@gmail.com>
|
||||
Date: Wed, 25 Jan 2023 02:02:57 +0100
|
||||
Subject: [PATCH 22/39] codecs: nvv4l2: rename AVCodec to fit API renames
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_dec.c | 20 ++++++++++----------
|
||||
libavcodec/nvv4l2_enc.c | 20 ++++++++++----------
|
||||
2 files changed, 20 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
||||
index 35784e0704..b56d35cf82 100644
|
||||
--- a/libavcodec/nvv4l2_dec.c
|
||||
+++ b/libavcodec/nvv4l2_dec.c
|
||||
@@ -29,7 +29,7 @@
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
-#include "internal.h"
|
||||
+#include "codec_internal.h"
|
||||
#include "libavutil/log.h"
|
||||
|
||||
#include "nvv4l2.h"
|
||||
@@ -1203,22 +1203,22 @@ nvv4l2dec_decode(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
|
||||
#define NVV4L2_DEC(NAME, ID, BSFS) \
|
||||
NVV4L2_DEC_CLASS(NAME) \
|
||||
- AVCodec ff_##NAME##_nvv4l2_decoder = { \
|
||||
- .name = #NAME "_nvv4l2", \
|
||||
- .long_name = NULL_IF_CONFIG_SMALL(#NAME " NVV4L2 HW decoder for Tegra"), \
|
||||
- .type = AVMEDIA_TYPE_VIDEO, \
|
||||
- .id = ID, \
|
||||
+ const FFCodec ff_##NAME##_nvv4l2_decoder = { \
|
||||
+ .p.name = #NAME "_nvv4l2", \
|
||||
+ .p.long_name = NULL_IF_CONFIG_SMALL(#NAME " NVV4L2 HW decoder for Tegra"), \
|
||||
+ .p.type = AVMEDIA_TYPE_VIDEO, \
|
||||
+ .p.id = ID, \
|
||||
.priv_data_size = sizeof(nvv4l2DecodeContext), \
|
||||
.init = nvv4l2dec_init, \
|
||||
.close = nvv4l2dec_close, \
|
||||
.decode = nvv4l2dec_decode, \
|
||||
.flush = nvv4l2dec_flush, \
|
||||
- .priv_class = &nvv4l2_##NAME##_dec_class, \
|
||||
- .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE | \
|
||||
+ .p.priv_class = &nvv4l2_##NAME##_dec_class, \
|
||||
+ .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE | \
|
||||
AV_CODEC_CAP_AVOID_PROBING, \
|
||||
.bsfs = BSFS, \
|
||||
- .wrapper_name = "nvv4l2", \
|
||||
- .pix_fmts =(const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, \
|
||||
+ .p.wrapper_name = "nvv4l2", \
|
||||
+ .p.pix_fmts =(const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, \
|
||||
AV_PIX_FMT_NV12, \
|
||||
AV_PIX_FMT_NONE }, \
|
||||
};
|
||||
diff --git a/libavcodec/nvv4l2_enc.c b/libavcodec/nvv4l2_enc.c
|
||||
index dc09236e0a..fad54868e3 100644
|
||||
--- a/libavcodec/nvv4l2_enc.c
|
||||
+++ b/libavcodec/nvv4l2_enc.c
|
||||
@@ -28,7 +28,7 @@
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
-#include "internal.h"
|
||||
+#include "codec_internal.h"
|
||||
#include "libavutil/imgutils.h"
|
||||
#include "libavutil/log.h"
|
||||
#include "libavutil/opt.h"
|
||||
@@ -1455,20 +1455,20 @@ static const AVOption options_hevc[] = {
|
||||
|
||||
#define NVV4L2_ENC(NAME, ID) \
|
||||
NVV4L2_ENC_CLASS(NAME) \
|
||||
- AVCodec ff_##NAME##_nvv4l2_encoder = { \
|
||||
- .name = #NAME "_nvv4l2" , \
|
||||
- .long_name = NULL_IF_CONFIG_SMALL(#NAME " NVV4L2 HW encoder for Tegra"), \
|
||||
- .type = AVMEDIA_TYPE_VIDEO, \
|
||||
- .id = ID, \
|
||||
+ const FFCodec ff_##NAME##_nvv4l2_encoder = { \
|
||||
+ .p.name = #NAME "_nvv4l2" , \
|
||||
+ .p.long_name = NULL_IF_CONFIG_SMALL(#NAME " NVV4L2 HW encoder for Tegra"), \
|
||||
+ .p.type = AVMEDIA_TYPE_VIDEO, \
|
||||
+ .p.id = ID, \
|
||||
.priv_data_size = sizeof(nvv4l2EncodeContext), \
|
||||
.init = nvv4l2enc_init, \
|
||||
.close = nvv4l2enc_close, \
|
||||
.encode2 = nvv4l2enc_encode, \
|
||||
- .priv_class = &nvv4l2_##NAME##_enc_class, \
|
||||
- .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, \
|
||||
+ .p.priv_class = &nvv4l2_##NAME##_enc_class, \
|
||||
+ .p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, \
|
||||
.defaults = defaults, \
|
||||
- .wrapper_name = "nvv4l2", \
|
||||
- .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, \
|
||||
+ .p.wrapper_name = "nvv4l2", \
|
||||
+ .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, \
|
||||
AV_PIX_FMT_YUV444P, \
|
||||
AV_PIX_FMT_NV12, \
|
||||
AV_PIX_FMT_P010, \
|
||||
--
|
||||
2.25.1
|
||||
|
92
packages/multimedia/ffmpeg/patches/L4T/0023-codecs-nvv4l2-comment-structs-redefined-in-nvv4l2.h.patch
Normal file
92
packages/multimedia/ffmpeg/patches/L4T/0023-codecs-nvv4l2-comment-structs-redefined-in-nvv4l2.h.patch
Normal file
@ -0,0 +1,92 @@
|
||||
From 23ccbf1d6a5494c7d79e8df2c74f02358e8df7d4 Mon Sep 17 00:00:00 2001
|
||||
From: Azkali Manad <a.ffcc7@gmail.com>
|
||||
Date: Wed, 25 Jan 2023 03:08:02 +0100
|
||||
Subject: [PATCH 23/39] codecs: nvv4l2: comment structs redefined in nvv4l2.h
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_ext_utils.h | 32 ++++++++++++++++----------------
|
||||
1 file changed, 16 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_ext_utils.h b/libavcodec/nvv4l2_ext_utils.h
|
||||
index 007306ccc5..04a2ee1c79 100644
|
||||
--- a/libavcodec/nvv4l2_ext_utils.h
|
||||
+++ b/libavcodec/nvv4l2_ext_utils.h
|
||||
@@ -178,7 +178,7 @@ enum v4l2_mpeg_video_h265_profile {
|
||||
#define V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY 0x10
|
||||
#define V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD 0x20
|
||||
#define V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE 0x40
|
||||
-struct v4l2_ctrl_h264_sps {
|
||||
+/* struct v4l2_ctrl_h264_sps {
|
||||
__u8 profile_idc;
|
||||
__u8 constraint_set_flags;
|
||||
__u8 level_idc;
|
||||
@@ -197,7 +197,7 @@ struct v4l2_ctrl_h264_sps {
|
||||
__u16 pic_width_in_mbs_minus1;
|
||||
__u16 pic_height_in_map_units_minus1;
|
||||
__u8 flags;
|
||||
-};
|
||||
+}; */
|
||||
|
||||
#define V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE 0x0001
|
||||
#define V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT 0x0002
|
||||
@@ -207,7 +207,7 @@ struct v4l2_ctrl_h264_sps {
|
||||
#define V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT 0x0020
|
||||
#define V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE 0x0040
|
||||
#define V4L2_H264_PPS_FLAG_PIC_SCALING_MATRIX_PRESENT 0x0080
|
||||
-struct v4l2_ctrl_h264_pps {
|
||||
+/* struct v4l2_ctrl_h264_pps {
|
||||
__u8 pic_parameter_set_id;
|
||||
__u8 seq_parameter_set_id;
|
||||
__u8 num_slice_groups_minus1;
|
||||
@@ -219,19 +219,19 @@ struct v4l2_ctrl_h264_pps {
|
||||
__s8 chroma_qp_index_offset;
|
||||
__s8 second_chroma_qp_index_offset;
|
||||
__u8 flags;
|
||||
-};
|
||||
+}; */
|
||||
|
||||
-struct v4l2_ctrl_h264_scaling_matrix {
|
||||
+/* struct v4l2_ctrl_h264_scaling_matrix {
|
||||
__u8 scaling_list_4x4[6][16];
|
||||
__u8 scaling_list_8x8[6][64];
|
||||
-};
|
||||
+}; */
|
||||
|
||||
-struct v4l2_h264_weight_factors {
|
||||
+/* struct v4l2_h264_weight_factors {
|
||||
__s8 luma_weight[32];
|
||||
__s8 luma_offset[32];
|
||||
__s8 chroma_weight[32][2];
|
||||
__s8 chroma_offset[32][2];
|
||||
-};
|
||||
+}; */
|
||||
|
||||
struct v4l2_h264_pred_weight_table {
|
||||
__u8 luma_log2_weight_denom;
|
||||
@@ -289,15 +289,15 @@ struct v4l2_ctrl_h264_slice_param {
|
||||
If not set, this entry is unused for reference. */
|
||||
#define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x01
|
||||
#define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x02
|
||||
-struct v4l2_h264_dpb_entry {
|
||||
- __u32 buf_index; /**< v4l2_buffer index. */
|
||||
- __u16 frame_num;
|
||||
- __u16 pic_num;
|
||||
+/* struct v4l2_h264_dpb_entry { */
|
||||
+/* __u32 buf_index; /**< v4l2_buffer index. */
|
||||
+/* __u16 frame_num;
|
||||
+ __u16 pic_num; */
|
||||
/** @note `v4l2_buffer.field` specifies this field. */
|
||||
- __s32 top_field_order_cnt;
|
||||
- __s32 bottom_field_order_cnt;
|
||||
- __u8 flags; /* V4L2_H264_DPB_ENTRY_FLAG_* */
|
||||
-};
|
||||
+/* __s32 top_field_order_cnt;
|
||||
+ __s32 bottom_field_order_cnt; */
|
||||
+/* __u8 flags; /* V4L2_H264_DPB_ENTRY_FLAG_* */
|
||||
+/* }; */
|
||||
|
||||
struct v4l2_ctrl_h264_decode_param {
|
||||
__u32 num_slices;
|
||||
--
|
||||
2.25.1
|
||||
|
68
packages/multimedia/ffmpeg/patches/L4T/0024-codecs-nvv4l2-More-API-related-changes.patch
Normal file
68
packages/multimedia/ffmpeg/patches/L4T/0024-codecs-nvv4l2-More-API-related-changes.patch
Normal file
@ -0,0 +1,68 @@
|
||||
From b2f78477cf1cca514a91a4a5ecd6f93fee289f2a Mon Sep 17 00:00:00 2001
|
||||
From: Azkali Manad <a.ffcc7@gmail.com>
|
||||
Date: Wed, 25 Jan 2023 03:32:12 +0100
|
||||
Subject: [PATCH 24/39] codecs: nvv4l2: More API related changes
|
||||
|
||||
decoder: add internal.h header needed for ff_get_buffer
|
||||
encoder: Rename AVCodecDefault to FFCodecDefault
|
||||
*: use callback defines for encode/decode struct members
|
||||
---
|
||||
libavcodec/nvv4l2_dec.c | 3 ++-
|
||||
libavcodec/nvv4l2_enc.c | 6 +++---
|
||||
2 files changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
||||
index b56d35cf82..26e7363823 100644
|
||||
--- a/libavcodec/nvv4l2_dec.c
|
||||
+++ b/libavcodec/nvv4l2_dec.c
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include "codec_internal.h"
|
||||
+#include "internal.h"
|
||||
#include "libavutil/log.h"
|
||||
|
||||
#include "nvv4l2.h"
|
||||
@@ -1211,7 +1212,7 @@ nvv4l2dec_decode(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
.priv_data_size = sizeof(nvv4l2DecodeContext), \
|
||||
.init = nvv4l2dec_init, \
|
||||
.close = nvv4l2dec_close, \
|
||||
- .decode = nvv4l2dec_decode, \
|
||||
+ FF_CODEC_DECODE_CB(nvv4l2dec_decode) \
|
||||
.flush = nvv4l2dec_flush, \
|
||||
.p.priv_class = &nvv4l2_##NAME##_dec_class, \
|
||||
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE | \
|
||||
diff --git a/libavcodec/nvv4l2_enc.c b/libavcodec/nvv4l2_enc.c
|
||||
index fad54868e3..7f1aad1b32 100644
|
||||
--- a/libavcodec/nvv4l2_enc.c
|
||||
+++ b/libavcodec/nvv4l2_enc.c
|
||||
@@ -1265,7 +1265,7 @@ nvv4l2enc_encode(AVCodecContext *avctx, AVPacket *pkt,
|
||||
if (nvv4l2_encoder_get_packet(avctx, ctx, &packet))
|
||||
return 0;
|
||||
|
||||
- ff_alloc_packet2(avctx, pkt, packet.payload_size, packet.payload_size);
|
||||
+ ff_alloc_packet(avctx, pkt, packet.payload_size, packet.payload_size);
|
||||
|
||||
memcpy(pkt->data, packet.payload, packet.payload_size);
|
||||
pkt->dts = pkt->pts = packet.pts;
|
||||
@@ -1286,7 +1286,7 @@ static av_cold int nvv4l2enc_close(AVCodecContext *avctx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static const AVCodecDefault defaults[] = {
|
||||
+static const FFCodecDefault defaults[] = {
|
||||
{ "b", "5M" },
|
||||
{ "qmin", "-1" },
|
||||
{ "qmax", "-1" },
|
||||
@@ -1463,7 +1463,7 @@ static const AVOption options_hevc[] = {
|
||||
.priv_data_size = sizeof(nvv4l2EncodeContext), \
|
||||
.init = nvv4l2enc_init, \
|
||||
.close = nvv4l2enc_close, \
|
||||
- .encode2 = nvv4l2enc_encode, \
|
||||
+ FF_CODEC_ENCODE_CB(nvv4l2enc_encode), \
|
||||
.p.priv_class = &nvv4l2_##NAME##_enc_class, \
|
||||
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, \
|
||||
.defaults = defaults, \
|
||||
--
|
||||
2.25.1
|
||||
|
25
packages/multimedia/ffmpeg/patches/L4T/0025-codecs-nvv4l2-add-encode.h-header-needed-for-ff_allo.patch
Normal file
25
packages/multimedia/ffmpeg/patches/L4T/0025-codecs-nvv4l2-add-encode.h-header-needed-for-ff_allo.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 157e6cffa1464b66809d32b5d511f62882068dcd Mon Sep 17 00:00:00 2001
|
||||
From: Azkali Manad <a.ffcc7@gmail.com>
|
||||
Date: Wed, 25 Jan 2023 03:42:59 +0100
|
||||
Subject: [PATCH 25/39] codecs: nvv4l2: add encode.h header needed for
|
||||
ff_alloc_packet
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_enc.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_enc.c b/libavcodec/nvv4l2_enc.c
|
||||
index 7f1aad1b32..6c3d276f31 100644
|
||||
--- a/libavcodec/nvv4l2_enc.c
|
||||
+++ b/libavcodec/nvv4l2_enc.c
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include "codec_internal.h"
|
||||
+#include "encode.h"
|
||||
#include "libavutil/imgutils.h"
|
||||
#include "libavutil/log.h"
|
||||
#include "libavutil/opt.h"
|
||||
--
|
||||
2.25.1
|
||||
|
25
packages/multimedia/ffmpeg/patches/L4T/0026-codecs-nvv4l2-fix-missing-comma-in-FFCodec-struct.patch
Normal file
25
packages/multimedia/ffmpeg/patches/L4T/0026-codecs-nvv4l2-fix-missing-comma-in-FFCodec-struct.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From c1447a426afa49ed23384f2b135ea9748c98d568 Mon Sep 17 00:00:00 2001
|
||||
From: Azkali Manad <a.ffcc7@gmail.com>
|
||||
Date: Wed, 25 Jan 2023 03:45:50 +0100
|
||||
Subject: [PATCH 26/39] codecs: nvv4l2: fix missing comma in FFCodec struct
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_dec.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
||||
index 26e7363823..fe54883522 100644
|
||||
--- a/libavcodec/nvv4l2_dec.c
|
||||
+++ b/libavcodec/nvv4l2_dec.c
|
||||
@@ -1212,7 +1212,7 @@ nvv4l2dec_decode(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
.priv_data_size = sizeof(nvv4l2DecodeContext), \
|
||||
.init = nvv4l2dec_init, \
|
||||
.close = nvv4l2dec_close, \
|
||||
- FF_CODEC_DECODE_CB(nvv4l2dec_decode) \
|
||||
+ FF_CODEC_DECODE_CB(nvv4l2dec_decode), \
|
||||
.flush = nvv4l2dec_flush, \
|
||||
.p.priv_class = &nvv4l2_##NAME##_dec_class, \
|
||||
.p.capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE | \
|
||||
--
|
||||
2.25.1
|
||||
|
26
packages/multimedia/ffmpeg/patches/L4T/0027-codecs-nvv4l2-remove-second-size-argument-as-it-is-u.patch
Normal file
26
packages/multimedia/ffmpeg/patches/L4T/0027-codecs-nvv4l2-remove-second-size-argument-as-it-is-u.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From cd758dad831c7f7f115b0fcc8646e241d338c800 Mon Sep 17 00:00:00 2001
|
||||
From: Azkali Manad <a.ffcc7@gmail.com>
|
||||
Date: Wed, 25 Jan 2023 03:52:47 +0100
|
||||
Subject: [PATCH 27/39] codecs: nvv4l2: remove second size argument as it is
|
||||
unneeded
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_enc.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_enc.c b/libavcodec/nvv4l2_enc.c
|
||||
index 6c3d276f31..39a179b255 100644
|
||||
--- a/libavcodec/nvv4l2_enc.c
|
||||
+++ b/libavcodec/nvv4l2_enc.c
|
||||
@@ -1266,7 +1266,7 @@ nvv4l2enc_encode(AVCodecContext *avctx, AVPacket *pkt,
|
||||
if (nvv4l2_encoder_get_packet(avctx, ctx, &packet))
|
||||
return 0;
|
||||
|
||||
- ff_alloc_packet(avctx, pkt, packet.payload_size, packet.payload_size);
|
||||
+ ff_alloc_packet(avctx, pkt, packet.payload_size);
|
||||
|
||||
memcpy(pkt->data, packet.payload, packet.payload_size);
|
||||
pkt->dts = pkt->pts = packet.pts;
|
||||
--
|
||||
2.25.1
|
||||
|
56
packages/multimedia/ffmpeg/patches/L4T/0028-codecs-nvv4l2-undo-struct-commenting-due-to-OpenBuil.patch
Normal file
56
packages/multimedia/ffmpeg/patches/L4T/0028-codecs-nvv4l2-undo-struct-commenting-due-to-OpenBuil.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From 1340217cbcc40418337225ca12d1d0f5dd82e682 Mon Sep 17 00:00:00 2001
|
||||
From: Azkali <a.ffcc7@gmail.com>
|
||||
Date: Thu, 26 Jan 2023 03:44:07 +0100
|
||||
Subject: [PATCH 28/39] codecs: nvv4l2: undo struct commenting due to
|
||||
OpenBuildServic weirdness
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_ext_utils.h | 20 ++++++++++----------
|
||||
1 file changed, 10 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_ext_utils.h b/libavcodec/nvv4l2_ext_utils.h
|
||||
index 04a2ee1c79..4fb66583de 100644
|
||||
--- a/libavcodec/nvv4l2_ext_utils.h
|
||||
+++ b/libavcodec/nvv4l2_ext_utils.h
|
||||
@@ -226,12 +226,12 @@ enum v4l2_mpeg_video_h265_profile {
|
||||
__u8 scaling_list_8x8[6][64];
|
||||
}; */
|
||||
|
||||
-/* struct v4l2_h264_weight_factors {
|
||||
+struct v4l2_h264_weight_factors {
|
||||
__s8 luma_weight[32];
|
||||
__s8 luma_offset[32];
|
||||
__s8 chroma_weight[32][2];
|
||||
__s8 chroma_offset[32][2];
|
||||
-}; */
|
||||
+};
|
||||
|
||||
struct v4l2_h264_pred_weight_table {
|
||||
__u8 luma_log2_weight_denom;
|
||||
@@ -289,15 +289,15 @@ struct v4l2_ctrl_h264_slice_param {
|
||||
If not set, this entry is unused for reference. */
|
||||
#define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x01
|
||||
#define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x02
|
||||
-/* struct v4l2_h264_dpb_entry { */
|
||||
-/* __u32 buf_index; /**< v4l2_buffer index. */
|
||||
-/* __u16 frame_num;
|
||||
- __u16 pic_num; */
|
||||
+struct v4l2_h264_dpb_entry {
|
||||
+ __u32 buf_index; /**< v4l2_buffer index. */
|
||||
+ __u16 frame_num;
|
||||
+ __u16 pic_num;
|
||||
/** @note `v4l2_buffer.field` specifies this field. */
|
||||
-/* __s32 top_field_order_cnt;
|
||||
- __s32 bottom_field_order_cnt; */
|
||||
-/* __u8 flags; /* V4L2_H264_DPB_ENTRY_FLAG_* */
|
||||
-/* }; */
|
||||
+ __s32 top_field_order_cnt;
|
||||
+ __s32 bottom_field_order_cnt;
|
||||
+ __u8 flags; /* V4L2_H264_DPB_ENTRY_FLAG_* */
|
||||
+};
|
||||
|
||||
struct v4l2_ctrl_h264_decode_param {
|
||||
__u32 num_slices;
|
||||
--
|
||||
2.25.1
|
||||
|
222
packages/multimedia/ffmpeg/patches/L4T/0029-fftools-improve-nvv4l2-enforcing-Now-non-supported-p.patch
Normal file
222
packages/multimedia/ffmpeg/patches/L4T/0029-fftools-improve-nvv4l2-enforcing-Now-non-supported-p.patch
Normal file
@ -0,0 +1,222 @@
|
||||
From a3ee3863be6268abaf331af6a12892feeb8797c6 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Sun, 2 Jul 2023 03:18:28 +0000
|
||||
Subject: [PATCH 29/39] fftools: improve nvv4l2 enforcing Now non-supported
|
||||
pixel formats are properly handled. Additionally, all edge cases are handled
|
||||
even if the codec is forced by user.
|
||||
|
||||
---
|
||||
fftools/ffmpeg_demux.c | 92 ++++++++++++++++++++++++++++++------------
|
||||
fftools/ffplay.c | 74 +++++++++++++++++++++++++--------
|
||||
2 files changed, 124 insertions(+), 42 deletions(-)
|
||||
|
||||
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
|
||||
index 938ec09e3d..3b58c18f3d 100644
|
||||
--- a/fftools/ffmpeg_demux.c
|
||||
+++ b/fftools/ffmpeg_demux.c
|
||||
@@ -500,40 +500,80 @@ static const AVCodec *choose_decoder(const OptionsContext *o, AVFormatContext *s
|
||||
|
||||
{
|
||||
char *codec_name = NULL;
|
||||
+#if CONFIG_NVV4L2
|
||||
+ int nvv4l2_pix_fmt_ok;
|
||||
+#endif
|
||||
|
||||
MATCH_PER_STREAM_OPT(codec_names, str, codec_name, s, st);
|
||||
- if (codec_name) {
|
||||
- const AVCodec *codec = find_codec_or_die(NULL, codec_name, st->codecpar->codec_type, 0);
|
||||
- st->codecpar->codec_id = codec->id;
|
||||
- if (recast_media && st->codecpar->codec_type != codec->type)
|
||||
- st->codecpar->codec_type = codec->type;
|
||||
- return codec;
|
||||
- } else {
|
||||
- if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO &&
|
||||
- hwaccel_id == HWACCEL_GENERIC &&
|
||||
- hwaccel_device_type != AV_HWDEVICE_TYPE_NONE) {
|
||||
- const AVCodec *c;
|
||||
- void *i = NULL;
|
||||
-
|
||||
- while ((c = av_codec_iterate(&i))) {
|
||||
- const AVCodecHWConfig *config;
|
||||
|
||||
- if (c->id != st->codecpar->codec_id ||
|
||||
- !av_codec_is_decoder(c))
|
||||
- continue;
|
||||
+#if CONFIG_NVV4L2
|
||||
+ nvv4l2_pix_fmt_ok = st->codecpar->format == AV_PIX_FMT_NONE ||
|
||||
+ st->codecpar->format == AV_PIX_FMT_NV12 ||
|
||||
+ st->codecpar->format == AV_PIX_FMT_YUV420P;
|
||||
|
||||
- for (int j = 0; config = avcodec_get_hw_config(c, j); j++) {
|
||||
- if (config->device_type == hwaccel_device_type) {
|
||||
- av_log(NULL, AV_LOG_VERBOSE, "Selecting decoder '%s' because of requested hwaccel method %s\n",
|
||||
- c->name, av_hwdevice_get_type_name(hwaccel_device_type));
|
||||
- return c;
|
||||
- }
|
||||
- }
|
||||
- }
|
||||
+ /* Force software decoding if codec name not defined and pixel format not supported. */
|
||||
+ if (!codec_name && !nvv4l2_pix_fmt_ok) {
|
||||
+ switch (st->codecpar->codec_id) {
|
||||
+ case AV_CODEC_ID_H264:
|
||||
+ codec_name = (char *)"h264";
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_HEVC:
|
||||
+ codec_name = (char *)"hevc";
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_MPEG2VIDEO:
|
||||
+ codec_name = (char *)"mpeg2video";
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_MPEG4:
|
||||
+ codec_name = (char *)"mpeg4";
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_VP8:
|
||||
+ codec_name = (char *)"vp8";
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_VP9:
|
||||
+ codec_name = (char *)"vp9";
|
||||
+ break;
|
||||
}
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
+ if (!codec_name)
|
||||
return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+
|
||||
+#if CONFIG_NVV4L2
|
||||
+ if (nvv4l2_pix_fmt_ok) {
|
||||
+ /* Force hardware decoding if pixel format supported. */
|
||||
+ if (strcmp(codec_name, "h264") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "hevc") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "mpeg2video") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "mpeg4") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "vp8") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "vp9") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ } else {
|
||||
+ /* Force software decoding if pixel format not supported. */
|
||||
+ if (strcmp(codec_name, "h264_nvv4l2") == 0)
|
||||
+ codec_name = (char *)"h264";
|
||||
+ else if (strcmp(codec_name, "hevc_nvv4l2") == 0)
|
||||
+ codec_name = (char *)"hevc";
|
||||
+ else if (strcmp(codec_name, "mpeg2video_nvv4l2") == 0)
|
||||
+ codec_name = (char *)"mpeg2video";
|
||||
+ else if (strcmp(codec_name, "mpeg4_nvv4l2") == 0)
|
||||
+ codec_name = (char *)"mpeg4";
|
||||
+ else if (strcmp(codec_name, "vp8_nvv4l2") == 0)
|
||||
+ codec_name = (char *)"vp8";
|
||||
+ else if (strcmp(codec_name, "vp9_nvv4l2") == 0)
|
||||
+ codec_name = (char *)"vp9";
|
||||
}
|
||||
+#endif
|
||||
+
|
||||
+ const AVCodec *codec = find_codec_or_die(codec_name, st->codecpar->codec_type, 0);
|
||||
+ st->codecpar->codec_id = codec->id;
|
||||
+ return codec;
|
||||
}
|
||||
|
||||
static int guess_input_channel_layout(InputStream *ist)
|
||||
diff --git a/fftools/ffplay.c b/fftools/ffplay.c
|
||||
index 86f8425a15..a02f2a06a7 100644
|
||||
--- a/fftools/ffplay.c
|
||||
+++ b/fftools/ffplay.c
|
||||
@@ -2570,6 +2570,9 @@ static int stream_component_open(VideoState *is, int stream_index)
|
||||
AVChannelLayout ch_layout = { 0 };
|
||||
int ret = 0;
|
||||
int stream_lowres = lowres;
|
||||
+#if CONFIG_NVV4L2
|
||||
+ int nvv4l2_pix_fmt_ok;
|
||||
+#endif
|
||||
|
||||
if (stream_index < 0 || stream_index >= ic->nb_streams)
|
||||
return -1;
|
||||
@@ -2593,26 +2596,65 @@ static int stream_component_open(VideoState *is, int stream_index)
|
||||
|
||||
#if CONFIG_NVV4L2
|
||||
/* Reset requested decoder in order to enforce NVV4L2 if possible. */
|
||||
+ nvv4l2_pix_fmt_ok = avctx->pix_fmt == AV_PIX_FMT_NONE ||
|
||||
+ avctx->pix_fmt == AV_PIX_FMT_NV12 ||
|
||||
+ avctx->pix_fmt == AV_PIX_FMT_YUV420P;
|
||||
+
|
||||
if (avctx->codec_type == AVMEDIA_TYPE_VIDEO && forced_codec_name) {
|
||||
- if (strcmp(forced_codec_name, "h264") == 0)
|
||||
- forced_codec_name = NULL;
|
||||
- else if (strcmp(forced_codec_name, "hevc") == 0)
|
||||
- forced_codec_name = NULL;
|
||||
- else if (strcmp(forced_codec_name, "mpeg2video") == 0)
|
||||
- forced_codec_name = NULL;
|
||||
- else if (strcmp(forced_codec_name, "mpeg4") == 0)
|
||||
- forced_codec_name = NULL;
|
||||
- else if (strcmp(forced_codec_name, "vp8") == 0)
|
||||
- forced_codec_name = NULL;
|
||||
- else if (strcmp(forced_codec_name, "vp9") == 0 &&
|
||||
- avctx->pix_fmt != AV_PIX_FMT_YUV420P10) {
|
||||
- forced_codec_name = NULL;
|
||||
+ if (nvv4l2_pix_fmt_ok) {
|
||||
+ /* Force hardware decoding if pixel format supported. */
|
||||
+ if (strcmp(forced_codec_name, "h264") == 0)
|
||||
+ forced_codec_name = NULL;
|
||||
+ else if (strcmp(forced_codec_name, "hevc") == 0)
|
||||
+ forced_codec_name = NULL;
|
||||
+ else if (strcmp(forced_codec_name, "mpeg2video") == 0)
|
||||
+ forced_codec_name = NULL;
|
||||
+ else if (strcmp(forced_codec_name, "mpeg4") == 0)
|
||||
+ forced_codec_name = NULL;
|
||||
+ else if (strcmp(forced_codec_name, "vp8") == 0)
|
||||
+ forced_codec_name = NULL;
|
||||
+ else if (strcmp(forced_codec_name, "vp9") == 0)
|
||||
+ forced_codec_name = NULL;
|
||||
+ } else {
|
||||
+ /* Force software decoding if pixel format not supported. */
|
||||
+ if (strcmp(forced_codec_name, "h264_nvv4l2") == 0)
|
||||
+ forced_codec_name = (char *)"h264";
|
||||
+ else if (strcmp(forced_codec_name, "hevc_nvv4l2") == 0)
|
||||
+ forced_codec_name = (char *)"hevc";
|
||||
+ else if (strcmp(forced_codec_name, "mpeg2video_nvv4l2") == 0)
|
||||
+ forced_codec_name = (char *)"mpeg2video";
|
||||
+ else if (strcmp(forced_codec_name, "mpeg4_nvv4l2") == 0)
|
||||
+ forced_codec_name = (char *)"mpeg4";
|
||||
+ else if (strcmp(forced_codec_name, "vp8_nvv4l2") == 0)
|
||||
+ forced_codec_name = (char *)"vp8";
|
||||
+ else if (strcmp(forced_codec_name, "vp9_nvv4l2") == 0)
|
||||
+ forced_codec_name = (char *)"vp9";
|
||||
}
|
||||
}
|
||||
|
||||
- /* NVV4L2 does not support VP9 with YUV420P10. */
|
||||
- if (!forced_codec_name && avctx->pix_fmt == AV_PIX_FMT_YUV420P10)
|
||||
- forced_codec_name = "vp9";
|
||||
+ /* Force software decoding if codec name not defined and pixel format not supported. */
|
||||
+ if (avctx->codec_type == AVMEDIA_TYPE_VIDEO && !forced_codec_name && !nvv4l2_pix_fmt_ok) {
|
||||
+ switch (avctx->codec_id) {
|
||||
+ case AV_CODEC_ID_H264:
|
||||
+ forced_codec_name = (char *)"h264";
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_HEVC:
|
||||
+ forced_codec_name = (char *)"hevc";
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_MPEG2VIDEO:
|
||||
+ forced_codec_name = (char *)"mpeg2video";
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_MPEG4:
|
||||
+ forced_codec_name = (char *)"mpeg4";
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_VP8:
|
||||
+ forced_codec_name = (char *)"vp8";
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_VP9:
|
||||
+ forced_codec_name = (char *)"vp9";
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
#endif
|
||||
|
||||
if (forced_codec_name)
|
||||
--
|
||||
2.25.1
|
||||
|
@ -0,0 +1,41 @@
|
||||
From 8014b28095f1b3d2559387b7b8aca93b034561cf Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Sun, 2 Jul 2023 03:23:34 +0000
|
||||
Subject: [PATCH 30/39] nvv4l2: add yuv420p10 support NVENC supports yuv420p10
|
||||
as p010.
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_enc.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_enc.c b/libavcodec/nvv4l2_enc.c
|
||||
index 39a179b255..b979c93051 100644
|
||||
--- a/libavcodec/nvv4l2_enc.c
|
||||
+++ b/libavcodec/nvv4l2_enc.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Copyright (c) 2021-2022, CTCaer <ctcaer@gmail.com>
|
||||
+ * Copyright (c) 2021-2023, CTCaer <ctcaer@gmail.com>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
@@ -1130,6 +1130,8 @@ static int nvv4l2enc_init(AVCodecContext *avctx)
|
||||
case AV_PIX_FMT_NV12:
|
||||
pix_fmt = V4L2_PIX_FMT_NV12M;
|
||||
break;
|
||||
+ case AV_PIX_FMT_YUV420P10:
|
||||
+ avctx->pix_fmt = AV_PIX_FMT_P010;
|
||||
case AV_PIX_FMT_P010:
|
||||
pix_fmt = V4L2_PIX_FMT_P010M;
|
||||
break;
|
||||
@@ -1473,6 +1475,7 @@ static const AVOption options_hevc[] = {
|
||||
AV_PIX_FMT_YUV444P, \
|
||||
AV_PIX_FMT_NV12, \
|
||||
AV_PIX_FMT_P010, \
|
||||
+ AV_PIX_FMT_YUV420P10, \
|
||||
AV_PIX_FMT_NONE }, \
|
||||
};
|
||||
|
||||
--
|
||||
2.25.1
|
||||
|
127
packages/multimedia/ffmpeg/patches/L4T/0031-nvv4l2-handle-unsupported-pixel-formats-NVDEC-only-s.patch
Normal file
127
packages/multimedia/ffmpeg/patches/L4T/0031-nvv4l2-handle-unsupported-pixel-formats-NVDEC-only-s.patch
Normal file
@ -0,0 +1,127 @@
|
||||
From ded4a192fa894768db5d1ab0e90256f28a87b834 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Sun, 2 Jul 2023 03:49:48 +0000
|
||||
Subject: [PATCH 31/39] nvv4l2: handle unsupported pixel formats NVDEC only
|
||||
supports YUV420 and NV12 formats.
|
||||
|
||||
If a consumer starting nvv4l2 decoder with unsupported pixel format force
|
||||
software decoding.
|
||||
|
||||
If consumer does not probe info of the media, the pixel format will be empty.
|
||||
If the actual pixel format is not supported it will result in no image.
|
||||
Since the normal procedure of using libavcodec is to just open a codec via id,
|
||||
without passing extra info or data, except if on purpose, there's no way to
|
||||
mitigate that issue in a non-invasive way.
|
||||
---
|
||||
libavcodec/avcodec.c | 2 --
|
||||
libavcodec/nvv4l2_dec.c | 58 ++++++++++++++++++++++++++++++++++++++---
|
||||
2 files changed, 54 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
|
||||
index fb1362290f..773d0457b3 100644
|
||||
--- a/libavcodec/avcodec.c
|
||||
+++ b/libavcodec/avcodec.c
|
||||
@@ -355,8 +355,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
||||
goto free_and_end;
|
||||
}
|
||||
}
|
||||
- if (codec->priv_class)
|
||||
- av_assert0(*(const AVClass **)avctx->priv_data == codec->priv_class);
|
||||
|
||||
end:
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
||||
index fe54883522..0b91cf0eba 100644
|
||||
--- a/libavcodec/nvv4l2_dec.c
|
||||
+++ b/libavcodec/nvv4l2_dec.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Copyright (c) 2021-2022, CTCaer <ctcaer@gmail.com>
|
||||
+ * Copyright (c) 2021-2023, CTCaer <ctcaer@gmail.com>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
@@ -31,10 +31,18 @@
|
||||
#include <errno.h>
|
||||
#include "codec_internal.h"
|
||||
#include "internal.h"
|
||||
+#include "decode.h"
|
||||
+#include "thread.h"
|
||||
#include "libavutil/log.h"
|
||||
+#include "libavutil/pixdesc.h"
|
||||
+#include "libavutil/opt.h"
|
||||
|
||||
#include "nvv4l2.h"
|
||||
|
||||
+extern AVCodec ff_h264_decoder;
|
||||
+extern AVCodec ff_hevc_decoder;
|
||||
+extern AVCodec ff_vp9_decoder;
|
||||
+
|
||||
/*
|
||||
** Output plane format support:
|
||||
** S264 (H264 Encoded Slice bitstream)
|
||||
@@ -978,6 +986,48 @@ static NvCodingType map_avcodec_id(enum AVCodecID id)
|
||||
return NvVideoCodec_UNDEFINED;
|
||||
}
|
||||
|
||||
+static int nvv4l2dec_codec_fallback(AVCodecContext *avctx)
|
||||
+{
|
||||
+ av_log(avctx, AV_LOG_WARNING, "Falling back to software decoding.\n");
|
||||
+
|
||||
+ switch (avctx->codec_id) {
|
||||
+ case AV_CODEC_ID_H264:
|
||||
+ avctx->codec = &ff_h264_decoder;
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_HEVC:
|
||||
+ avctx->codec = &ff_hevc_decoder;
|
||||
+ break;
|
||||
+ case AV_CODEC_ID_VP9:
|
||||
+ avctx->codec = &ff_vp9_decoder;
|
||||
+ break;
|
||||
+ default:
|
||||
+ av_log(avctx, AV_LOG_ERROR, "Unsupported codec fallback!\n");
|
||||
+ return AVERROR_BUG;
|
||||
+ }
|
||||
+
|
||||
+ av_opt_free(avctx->priv_data);
|
||||
+
|
||||
+ if (avctx->codec->priv_data_size > 0) {
|
||||
+ avctx->priv_data = av_mallocz(avctx->codec->priv_data_size);
|
||||
+ if (!avctx->priv_data)
|
||||
+ return AVERROR(ENOMEM);
|
||||
+ }
|
||||
+
|
||||
+ if (HAVE_THREADS
|
||||
+ && !(avctx->internal->frame_thread_encoder && (avctx->active_thread_type&FF_THREAD_FRAME))) {
|
||||
+ ff_thread_init(avctx);
|
||||
+ }
|
||||
+ if (!HAVE_THREADS && !(avctx->codec->caps_internal & FF_CODEC_CAP_AUTO_THREADS))
|
||||
+ avctx->thread_count = 1;
|
||||
+
|
||||
+ if (avctx->codec->priv_class) {
|
||||
+ *(const AVClass **)avctx->priv_data = avctx->codec->priv_class;
|
||||
+ av_opt_set_defaults(avctx->priv_data);
|
||||
+ }
|
||||
+
|
||||
+ return avctx->codec->init(avctx);
|
||||
+}
|
||||
+
|
||||
static int nvv4l2dec_init(AVCodecContext *avctx)
|
||||
{
|
||||
nvv4l2DecodeContext *nvv4l2_ctx = avctx->priv_data;
|
||||
@@ -1000,9 +1050,9 @@ static int nvv4l2dec_init(AVCodecContext *avctx)
|
||||
pix_fmt = V4L2_PIX_FMT_NV12M;
|
||||
break;
|
||||
default:
|
||||
- av_log(avctx, AV_LOG_ERROR, "Unsupported pixel format %d!\n",
|
||||
- avctx->pix_fmt);
|
||||
- return AVERROR_BUG;
|
||||
+ av_log(avctx, AV_LOG_WARNING, "Unsupported pixel format %s!\n",
|
||||
+ av_get_pix_fmt_name(avctx->pix_fmt));
|
||||
+ return nvv4l2dec_codec_fallback(avctx);
|
||||
}
|
||||
|
||||
nvv4l2_ctx->ctx = nvv4l2_create_decoder(avctx, nv_codec_type, pix_fmt);
|
||||
--
|
||||
2.25.1
|
||||
|
92
packages/multimedia/ffmpeg/patches/L4T/0032-nvv4l2-allow-10-bit-HEVC-The-only-hw-support-for-10-.patch
Normal file
92
packages/multimedia/ffmpeg/patches/L4T/0032-nvv4l2-allow-10-bit-HEVC-The-only-hw-support-for-10-.patch
Normal file
@ -0,0 +1,92 @@
|
||||
From 9e860a0aeab0b955e627de763e9494457942222d Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Mon, 3 Jul 2023 14:19:46 +0000
|
||||
Subject: [PATCH 32/39] nvv4l2: allow 10-bit HEVC The only hw support for
|
||||
10-bit on NVDEC 2nd/3rd gen is on HEVC. H264 does not support it on main
|
||||
spec, so as per previous changes it fallbacks to software decoding. VP8 codec
|
||||
does not support it at all. The only out of spec non-support on hw decoding
|
||||
is on VP9.
|
||||
|
||||
---
|
||||
fftools/ffmpeg_demux.c | 4 ++++
|
||||
fftools/ffplay.c | 4 ++++
|
||||
libavcodec/nvv4l2_dec.c | 9 ++++++++-
|
||||
libavcodec/nvv4l2_ext_utils.h | 6 ++++++
|
||||
4 files changed, 22 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
|
||||
index 3b58c18f3d..f791c3a898 100644
|
||||
--- a/fftools/ffmpeg_demux.c
|
||||
+++ b/fftools/ffmpeg_demux.c
|
||||
@@ -510,6 +510,10 @@ static const AVCodec *choose_decoder(const OptionsContext *o, AVFormatContext *s
|
||||
nvv4l2_pix_fmt_ok = st->codecpar->format == AV_PIX_FMT_NONE ||
|
||||
st->codecpar->format == AV_PIX_FMT_NV12 ||
|
||||
st->codecpar->format == AV_PIX_FMT_YUV420P;
|
||||
+ if (st->codecpar->codec_id == AV_CODEC_ID_HEVC)
|
||||
+ nvv4l2_pix_fmt_ok = st->codecpar->format == AV_PIX_FMT_YUV420P10LE ||
|
||||
+ st->codecpar->format == AV_PIX_FMT_P010 ||
|
||||
+ nvv4l2_pix_fmt_ok;
|
||||
|
||||
/* Force software decoding if codec name not defined and pixel format not supported. */
|
||||
if (!codec_name && !nvv4l2_pix_fmt_ok) {
|
||||
diff --git a/fftools/ffplay.c b/fftools/ffplay.c
|
||||
index a02f2a06a7..bbd5761115 100644
|
||||
--- a/fftools/ffplay.c
|
||||
+++ b/fftools/ffplay.c
|
||||
@@ -2599,6 +2599,10 @@ static int stream_component_open(VideoState *is, int stream_index)
|
||||
nvv4l2_pix_fmt_ok = avctx->pix_fmt == AV_PIX_FMT_NONE ||
|
||||
avctx->pix_fmt == AV_PIX_FMT_NV12 ||
|
||||
avctx->pix_fmt == AV_PIX_FMT_YUV420P;
|
||||
+ if (avctx->codec_id == AV_CODEC_ID_HEVC)
|
||||
+ nvv4l2_pix_fmt_ok = avctx->pix_fmt == AV_PIX_FMT_YUV420P10LE ||
|
||||
+ avctx->pix_fmt == AV_PIX_FMT_P010 ||
|
||||
+ nvv4l2_pix_fmt_ok;
|
||||
|
||||
if (avctx->codec_type == AVMEDIA_TYPE_VIDEO && forced_codec_name) {
|
||||
if (nvv4l2_pix_fmt_ok) {
|
||||
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
||||
index 0b91cf0eba..79116ec858 100644
|
||||
--- a/libavcodec/nvv4l2_dec.c
|
||||
+++ b/libavcodec/nvv4l2_dec.c
|
||||
@@ -1042,13 +1042,20 @@ static int nvv4l2dec_init(AVCodecContext *avctx)
|
||||
|
||||
switch (avctx->pix_fmt) {
|
||||
case AV_PIX_FMT_NONE:
|
||||
- avctx->pix_fmt = AV_PIX_FMT_YUV420P;
|
||||
case AV_PIX_FMT_YUV420P:
|
||||
+ avctx->pix_fmt = AV_PIX_FMT_YUV420P;
|
||||
pix_fmt = V4L2_PIX_FMT_YUV420M;
|
||||
break;
|
||||
case AV_PIX_FMT_NV12:
|
||||
pix_fmt = V4L2_PIX_FMT_NV12M;
|
||||
break;
|
||||
+ case AV_PIX_FMT_YUV420P10LE:
|
||||
+ case AV_PIX_FMT_P010:
|
||||
+ if (avctx->codec_id == AV_CODEC_ID_HEVC) {
|
||||
+ avctx->pix_fmt = AV_PIX_FMT_YUV420P;
|
||||
+ pix_fmt = V4L2_PIX_FMT_YUV420M;
|
||||
+ break;
|
||||
+ }
|
||||
default:
|
||||
av_log(avctx, AV_LOG_WARNING, "Unsupported pixel format %s!\n",
|
||||
av_get_pix_fmt_name(avctx->pix_fmt));
|
||||
diff --git a/libavcodec/nvv4l2_ext_utils.h b/libavcodec/nvv4l2_ext_utils.h
|
||||
index 4fb66583de..142b429336 100644
|
||||
--- a/libavcodec/nvv4l2_ext_utils.h
|
||||
+++ b/libavcodec/nvv4l2_ext_utils.h
|
||||
@@ -2144,6 +2144,12 @@ typedef enum
|
||||
NvBufferColorFormat_ARGB32 = 18, /* BSP 32.5.0 and up: 19 */
|
||||
/** BT.601 colorspace - Y/CbCr 4:2:0 10-bit multi-planar. */
|
||||
NvBufferColorFormat_NV12_10LE = 19, /* BSP 32.5.0 and up: 20 */
|
||||
+ /** BT.709 colorspace - Y/CbCr 4:2:0 10-bit multi-planar. */
|
||||
+ NvBufferColorFormat_NV12_10LE_709 = 20, /* BSP 32.5.0 and up: 21 */
|
||||
+ /** BT.709_ER colorspace - Y/CbCr 4:2:0 10-bit multi-planar. */
|
||||
+ NvBufferColorFormat_NV12_10LE_709_ER = 21, /* BSP 32.5.0 and up: 22 */
|
||||
+ /** BT.2020 colorspace - Y/CbCr 4:2:0 10-bit multi-planar. */
|
||||
+ NvBufferColorFormat_NV12_10LE_2020 = 22, /* BSP 32.5.0 and up: 23 */
|
||||
/** BT.709 colorspace - Y/CbCr 4:2:0 multi-planar. */
|
||||
NvBufferColorFormat_NV12_709 = 29, /* BSP 32.5.0 and up: 30 */
|
||||
/** BT.709 colorspace - Y/CbCr ER 4:2:0 multi-planar. */
|
||||
--
|
||||
2.25.1
|
||||
|
29
packages/multimedia/ffmpeg/patches/L4T/0033-codecs-nvv4l2-more-rename-AVCodec-to-fit-API-renames.patch
Normal file
29
packages/multimedia/ffmpeg/patches/L4T/0033-codecs-nvv4l2-more-rename-AVCodec-to-fit-API-renames.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From b4c1473d7a0db6efb31e5d5f5c7b483736ac593a Mon Sep 17 00:00:00 2001
|
||||
From: theofficialgman <28281419+theofficialgman@users.noreply.github.com>
|
||||
Date: Thu, 18 Jan 2024 17:48:52 -0500
|
||||
Subject: [PATCH 33/39] codecs: nvv4l2: more rename AVCodec to fit API renames
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_dec.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
||||
index 79116ec858..a92b191b24 100644
|
||||
--- a/libavcodec/nvv4l2_dec.c
|
||||
+++ b/libavcodec/nvv4l2_dec.c
|
||||
@@ -39,9 +39,9 @@
|
||||
|
||||
#include "nvv4l2.h"
|
||||
|
||||
-extern AVCodec ff_h264_decoder;
|
||||
-extern AVCodec ff_hevc_decoder;
|
||||
-extern AVCodec ff_vp9_decoder;
|
||||
+extern const FFCodec ff_h264_decoder;
|
||||
+extern const FFCodec ff_hevc_decoder;
|
||||
+extern const FFCodec ff_vp9_decoder;
|
||||
|
||||
/*
|
||||
** Output plane format support:
|
||||
--
|
||||
2.25.1
|
||||
|
@ -0,0 +1,58 @@
|
||||
From 08ff68f2fb3175157a46a8dfb880f58870ac6b9e Mon Sep 17 00:00:00 2001
|
||||
From: theofficialgman <28281419+theofficialgman@users.noreply.github.com>
|
||||
Date: Wed, 17 Jan 2024 22:17:55 -0500
|
||||
Subject: [PATCH 34/39] codecs: nvv4l2: more API renames
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_dec.c | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
||||
index a92b191b24..5ccea0830b 100644
|
||||
--- a/libavcodec/nvv4l2_dec.c
|
||||
+++ b/libavcodec/nvv4l2_dec.c
|
||||
@@ -988,6 +988,8 @@ static NvCodingType map_avcodec_id(enum AVCodecID id)
|
||||
|
||||
static int nvv4l2dec_codec_fallback(AVCodecContext *avctx)
|
||||
{
|
||||
+ const FFCodec *codec2;
|
||||
+
|
||||
av_log(avctx, AV_LOG_WARNING, "Falling back to software decoding.\n");
|
||||
|
||||
switch (avctx->codec_id) {
|
||||
@@ -1005,10 +1007,12 @@ static int nvv4l2dec_codec_fallback(AVCodecContext *avctx)
|
||||
return AVERROR_BUG;
|
||||
}
|
||||
|
||||
+ codec2 = ffcodec(avctx->codec);
|
||||
+
|
||||
av_opt_free(avctx->priv_data);
|
||||
|
||||
- if (avctx->codec->priv_data_size > 0) {
|
||||
- avctx->priv_data = av_mallocz(avctx->codec->priv_data_size);
|
||||
+ if (codec2->priv_data_size > 0) {
|
||||
+ avctx->priv_data = av_mallocz(codec2->priv_data_size);
|
||||
if (!avctx->priv_data)
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
@@ -1017,7 +1021,7 @@ static int nvv4l2dec_codec_fallback(AVCodecContext *avctx)
|
||||
&& !(avctx->internal->frame_thread_encoder && (avctx->active_thread_type&FF_THREAD_FRAME))) {
|
||||
ff_thread_init(avctx);
|
||||
}
|
||||
- if (!HAVE_THREADS && !(avctx->codec->caps_internal & FF_CODEC_CAP_AUTO_THREADS))
|
||||
+ if (!HAVE_THREADS && !(codec2->caps_internal & FF_CODEC_CAP_AUTO_THREADS))
|
||||
avctx->thread_count = 1;
|
||||
|
||||
if (avctx->codec->priv_class) {
|
||||
@@ -1025,7 +1029,7 @@ static int nvv4l2dec_codec_fallback(AVCodecContext *avctx)
|
||||
av_opt_set_defaults(avctx->priv_data);
|
||||
}
|
||||
|
||||
- return avctx->codec->init(avctx);
|
||||
+ return codec2->init(avctx);
|
||||
}
|
||||
|
||||
static int nvv4l2dec_init(AVCodecContext *avctx)
|
||||
--
|
||||
2.25.1
|
||||
|
82
packages/multimedia/ffmpeg/patches/L4T/0035-codecs-nvv4l2-find_codec_or_die-to-find_codec-API-re.patch
Normal file
82
packages/multimedia/ffmpeg/patches/L4T/0035-codecs-nvv4l2-find_codec_or_die-to-find_codec-API-re.patch
Normal file
@ -0,0 +1,82 @@
|
||||
From e508318655d72876d29df374c19c7edcf3134997 Mon Sep 17 00:00:00 2001
|
||||
From: theofficialgman <28281419+theofficialgman@users.noreply.github.com>
|
||||
Date: Wed, 17 Jan 2024 23:45:11 -0500
|
||||
Subject: [PATCH 35/39] codecs: nvv4l2: find_codec_or_die to find_codec API
|
||||
rename and rework
|
||||
|
||||
---
|
||||
fftools/ffmpeg_demux.c | 47 +++++++++++++++++++++++++++---------------
|
||||
1 file changed, 30 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
|
||||
index f791c3a898..17b5d63bf8 100644
|
||||
--- a/fftools/ffmpeg_demux.c
|
||||
+++ b/fftools/ffmpeg_demux.c
|
||||
@@ -540,24 +540,33 @@ static const AVCodec *choose_decoder(const OptionsContext *o, AVFormatContext *s
|
||||
}
|
||||
#endif
|
||||
|
||||
- if (!codec_name)
|
||||
- return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ if (!codec_name) {
|
||||
+ *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
#if CONFIG_NVV4L2
|
||||
if (nvv4l2_pix_fmt_ok) {
|
||||
/* Force hardware decoding if pixel format supported. */
|
||||
- if (strcmp(codec_name, "h264") == 0)
|
||||
- return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- else if (strcmp(codec_name, "hevc") == 0)
|
||||
- return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- else if (strcmp(codec_name, "mpeg2video") == 0)
|
||||
- return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- else if (strcmp(codec_name, "mpeg4") == 0)
|
||||
- return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- else if (strcmp(codec_name, "vp8") == 0)
|
||||
- return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- else if (strcmp(codec_name, "vp9") == 0)
|
||||
- return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ if (strcmp(codec_name, "h264") == 0) {
|
||||
+ *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ return 0;
|
||||
+ } else if (strcmp(codec_name, "hevc") == 0) {
|
||||
+ *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ return 0;
|
||||
+ } else if (strcmp(codec_name, "mpeg2video") == 0) {
|
||||
+ *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ return 0;
|
||||
+ } else if (strcmp(codec_name, "mpeg4") == 0) {
|
||||
+ *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ return 0;
|
||||
+ } else if (strcmp(codec_name, "vp8") == 0) {
|
||||
+ *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ return 0;
|
||||
+ } else if (strcmp(codec_name, "vp9") == 0) {
|
||||
+ *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ return 0;
|
||||
+ }
|
||||
} else {
|
||||
/* Force software decoding if pixel format not supported. */
|
||||
if (strcmp(codec_name, "h264_nvv4l2") == 0)
|
||||
@@ -575,9 +584,13 @@ static const AVCodec *choose_decoder(const OptionsContext *o, AVFormatContext *s
|
||||
}
|
||||
#endif
|
||||
|
||||
- const AVCodec *codec = find_codec_or_die(codec_name, st->codecpar->codec_type, 0);
|
||||
- st->codecpar->codec_id = codec->id;
|
||||
- return codec;
|
||||
+ int ret = find_codec(NULL, codec_name, st->codecpar->codec_type, 0, pcodec);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+ st->codecpar->codec_id = (*pcodec)->id;
|
||||
+ if (recast_media && st->codecpar->codec_type != (*pcodec)->type)
|
||||
+ st->codecpar->codec_type = (*pcodec)->type;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
static int guess_input_channel_layout(InputStream *ist)
|
||||
--
|
||||
2.25.1
|
||||
|
30
packages/multimedia/ffmpeg/patches/L4T/0036-codecs-nvv4l2-update-for-ABI-rework.patch
Normal file
30
packages/multimedia/ffmpeg/patches/L4T/0036-codecs-nvv4l2-update-for-ABI-rework.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From 8d78a510e496ea473ea7392b828e17165bb6b6ac Mon Sep 17 00:00:00 2001
|
||||
From: theofficialgman <28281419+theofficialgman@users.noreply.github.com>
|
||||
Date: Sun, 21 Jan 2024 02:01:10 -0500
|
||||
Subject: [PATCH 36/39] codecs: nvv4l2: update for ABI rework
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_dec.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
||||
index 5ccea0830b..27e06da1b5 100644
|
||||
--- a/libavcodec/nvv4l2_dec.c
|
||||
+++ b/libavcodec/nvv4l2_dec.c
|
||||
@@ -1175,12 +1175,11 @@ static int nvv4l2dec_close(AVCodecContext *avctx)
|
||||
}
|
||||
|
||||
static int
|
||||
-nvv4l2dec_decode(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
+nvv4l2dec_decode(AVCodecContext *avctx, AVFrame *avframe, int *got_frame,
|
||||
AVPacket *avpkt)
|
||||
{
|
||||
nvv4l2DecodeContext *nvv4l2_ctx = avctx->priv_data;
|
||||
nvv4l2_ctx_t *ctx = nvv4l2_ctx->ctx;
|
||||
- AVFrame *avframe = (AVFrame *)data;
|
||||
NvFrame _nvframe = { 0 };
|
||||
int processed_size = 0;
|
||||
int buf_index = -1;
|
||||
--
|
||||
2.25.1
|
||||
|
31
packages/multimedia/ffmpeg/patches/L4T/0037-Revert-codecs-nvv4l2-update-for-ABI-rework.patch
Normal file
31
packages/multimedia/ffmpeg/patches/L4T/0037-Revert-codecs-nvv4l2-update-for-ABI-rework.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From a18c43b29c220fa020f9cac2522608b2b4cba954 Mon Sep 17 00:00:00 2001
|
||||
From: azkali <a.ffcc7@gmail.com>
|
||||
Date: Tue, 23 Jan 2024 18:28:29 +0100
|
||||
Subject: [PATCH 37/39] Revert "codecs: nvv4l2: update for ABI rework"
|
||||
|
||||
This reverts commit 8d78a510e496ea473ea7392b828e17165bb6b6ac.
|
||||
---
|
||||
libavcodec/nvv4l2_dec.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
||||
index 27e06da1b5..5ccea0830b 100644
|
||||
--- a/libavcodec/nvv4l2_dec.c
|
||||
+++ b/libavcodec/nvv4l2_dec.c
|
||||
@@ -1175,11 +1175,12 @@ static int nvv4l2dec_close(AVCodecContext *avctx)
|
||||
}
|
||||
|
||||
static int
|
||||
-nvv4l2dec_decode(AVCodecContext *avctx, AVFrame *avframe, int *got_frame,
|
||||
+nvv4l2dec_decode(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
AVPacket *avpkt)
|
||||
{
|
||||
nvv4l2DecodeContext *nvv4l2_ctx = avctx->priv_data;
|
||||
nvv4l2_ctx_t *ctx = nvv4l2_ctx->ctx;
|
||||
+ AVFrame *avframe = (AVFrame *)data;
|
||||
NvFrame _nvframe = { 0 };
|
||||
int processed_size = 0;
|
||||
int buf_index = -1;
|
||||
--
|
||||
2.25.1
|
||||
|
83
packages/multimedia/ffmpeg/patches/L4T/0038-Revert-codecs-nvv4l2-find_codec_or_die-to-find_codec.patch
Normal file
83
packages/multimedia/ffmpeg/patches/L4T/0038-Revert-codecs-nvv4l2-find_codec_or_die-to-find_codec.patch
Normal file
@ -0,0 +1,83 @@
|
||||
From 4279fc32ea8b6da4a36aaf0b616408ad1fe4dcea Mon Sep 17 00:00:00 2001
|
||||
From: azkali <a.ffcc7@gmail.com>
|
||||
Date: Tue, 23 Jan 2024 18:35:39 +0100
|
||||
Subject: [PATCH 38/39] Revert "codecs: nvv4l2: find_codec_or_die to find_codec
|
||||
API rename and rework"
|
||||
|
||||
This reverts commit e508318655d72876d29df374c19c7edcf3134997.
|
||||
---
|
||||
fftools/ffmpeg_demux.c | 47 +++++++++++++++---------------------------
|
||||
1 file changed, 17 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
|
||||
index 17b5d63bf8..f791c3a898 100644
|
||||
--- a/fftools/ffmpeg_demux.c
|
||||
+++ b/fftools/ffmpeg_demux.c
|
||||
@@ -540,33 +540,24 @@ static const AVCodec *choose_decoder(const OptionsContext *o, AVFormatContext *s
|
||||
}
|
||||
#endif
|
||||
|
||||
- if (!codec_name) {
|
||||
- *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- return 0;
|
||||
- }
|
||||
+ if (!codec_name)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
|
||||
#if CONFIG_NVV4L2
|
||||
if (nvv4l2_pix_fmt_ok) {
|
||||
/* Force hardware decoding if pixel format supported. */
|
||||
- if (strcmp(codec_name, "h264") == 0) {
|
||||
- *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- return 0;
|
||||
- } else if (strcmp(codec_name, "hevc") == 0) {
|
||||
- *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- return 0;
|
||||
- } else if (strcmp(codec_name, "mpeg2video") == 0) {
|
||||
- *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- return 0;
|
||||
- } else if (strcmp(codec_name, "mpeg4") == 0) {
|
||||
- *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- return 0;
|
||||
- } else if (strcmp(codec_name, "vp8") == 0) {
|
||||
- *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- return 0;
|
||||
- } else if (strcmp(codec_name, "vp9") == 0) {
|
||||
- *pcodec = avcodec_find_decoder(st->codecpar->codec_id);
|
||||
- return 0;
|
||||
- }
|
||||
+ if (strcmp(codec_name, "h264") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "hevc") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "mpeg2video") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "mpeg4") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "vp8") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
+ else if (strcmp(codec_name, "vp9") == 0)
|
||||
+ return avcodec_find_decoder(st->codecpar->codec_id);
|
||||
} else {
|
||||
/* Force software decoding if pixel format not supported. */
|
||||
if (strcmp(codec_name, "h264_nvv4l2") == 0)
|
||||
@@ -584,13 +575,9 @@ static const AVCodec *choose_decoder(const OptionsContext *o, AVFormatContext *s
|
||||
}
|
||||
#endif
|
||||
|
||||
- int ret = find_codec(NULL, codec_name, st->codecpar->codec_type, 0, pcodec);
|
||||
- if (ret < 0)
|
||||
- return ret;
|
||||
- st->codecpar->codec_id = (*pcodec)->id;
|
||||
- if (recast_media && st->codecpar->codec_type != (*pcodec)->type)
|
||||
- st->codecpar->codec_type = (*pcodec)->type;
|
||||
- return 0;
|
||||
+ const AVCodec *codec = find_codec_or_die(codec_name, st->codecpar->codec_type, 0);
|
||||
+ st->codecpar->codec_id = codec->id;
|
||||
+ return codec;
|
||||
}
|
||||
|
||||
static int guess_input_channel_layout(InputStream *ist)
|
||||
--
|
||||
2.25.1
|
||||
|
25
packages/multimedia/ffmpeg/patches/L4T/0039-fftools-ffmpeg-set-find_codec_or_die-logctx-to-NULL.patch
Normal file
25
packages/multimedia/ffmpeg/patches/L4T/0039-fftools-ffmpeg-set-find_codec_or_die-logctx-to-NULL.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From a8e8a2151948790f9702802aa87b65bbf5049ac1 Mon Sep 17 00:00:00 2001
|
||||
From: azkali <a.ffcc7@gmail.com>
|
||||
Date: Tue, 23 Jan 2024 18:50:41 +0100
|
||||
Subject: [PATCH 39/39] fftools/ffmpeg: set find_codec_or_die logctx to NULL
|
||||
|
||||
---
|
||||
fftools/ffmpeg_demux.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
|
||||
index f791c3a898..975a9f5f17 100644
|
||||
--- a/fftools/ffmpeg_demux.c
|
||||
+++ b/fftools/ffmpeg_demux.c
|
||||
@@ -575,7 +575,7 @@ static const AVCodec *choose_decoder(const OptionsContext *o, AVFormatContext *s
|
||||
}
|
||||
#endif
|
||||
|
||||
- const AVCodec *codec = find_codec_or_die(codec_name, st->codecpar->codec_type, 0);
|
||||
+ const AVCodec *codec = find_codec_or_die(NULL, codec_name, st->codecpar->codec_type, 0);
|
||||
st->codecpar->codec_id = codec->id;
|
||||
return codec;
|
||||
}
|
||||
--
|
||||
2.25.1
|
||||
|
@ -0,0 +1,43 @@
|
||||
From 91e53cd8349f6a6a74ef7bc9498052467345cff4 Mon Sep 17 00:00:00 2001
|
||||
From: CTCaer <ctcaer@gmail.com>
|
||||
Date: Sat, 27 Jan 2024 00:34:28 +0000
|
||||
Subject: [PATCH] nvv4l2: do not override key_frame Some apps are managing this
|
||||
by replacing the ffmpeg get buffer function. Additionally, some badly coded
|
||||
apps use that for actually starting outputting to screen or framebuffer, even
|
||||
though the expected frames from the decoder are always full frames.
|
||||
|
||||
---
|
||||
libavcodec/nvv4l2_dec.c | 9 +++++----
|
||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/nvv4l2_dec.c b/libavcodec/nvv4l2_dec.c
|
||||
index b2ac349201a..751f4379e89 100644
|
||||
--- a/libavcodec/nvv4l2_dec.c
|
||||
+++ b/libavcodec/nvv4l2_dec.c
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
- * Copyright (c) 2021-2023, CTCaer <ctcaer@gmail.com>
|
||||
+ * Copyright (c) 2021-2024, CTCaer <ctcaer@gmail.com>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
@@ -1236,12 +1236,13 @@ nvv4l2dec_decode(AVCodecContext *avctx, void *data, int *got_frame,
|
||||
if (_nvframe.pts != AV_NOPTS_VALUE) {
|
||||
avframe->pts = _nvframe.pts;
|
||||
} else {
|
||||
- avframe->pts = _nvframe.pts;
|
||||
+ /*! NOTE: Investigate if setting reordered_opaque to pts instead
|
||||
+ * is better for no-pts streams compatibility.
|
||||
+ */
|
||||
+ avframe->pts = AV_NOPTS_VALUE;
|
||||
avframe->reordered_opaque = _nvframe.user_pts;
|
||||
}
|
||||
|
||||
- avframe->key_frame = 0;
|
||||
-
|
||||
avctx->coded_width = _nvframe.width;
|
||||
avctx->coded_height = _nvframe.height;
|
||||
avctx->width = _nvframe.width;
|
||||
--
|
||||
GitLab
|
||||
|
@ -0,0 +1,25 @@
|
||||
diff -Naur ffmpeg-6.0/configure ffmpeg-6.0-2/configure
|
||||
--- ffmpeg-6.0/configure 2023-06-04 21:55:16.653155167 +0200
|
||||
+++ ffmpeg-6.0-2/configure 2023-06-04 22:01:08.003471635 +0200
|
||||
@@ -3131,8 +3131,8 @@
|
||||
qsvvpp_select="qsv"
|
||||
vaapi_encode_deps="vaapi"
|
||||
v4l2_m2m_deps="linux_videodev2_h sem_timedwait"
|
||||
-nvv4l2_deps="libv4l2 pthreads linux_videodev2_h"
|
||||
-nvv4l2_extralibs="-lnvbuf_utils"
|
||||
+nvv4l2_deps="pthreads linux_videodev2_h"
|
||||
+nvv4l2_extralibs="-lnvbuf_utils -lv4l2"
|
||||
|
||||
bilateral_cuda_filter_deps="ffnvcodec"
|
||||
bilateral_cuda_filter_deps_any="cuda_nvcc cuda_llvm"
|
||||
@@ -7069,9 +7069,7 @@
|
||||
check_type "ffnvcodec/dynlink_cuda.h ffnvcodec/dynlink_cuviddec.h" "CUVIDAV1PICPARAMS"
|
||||
fi
|
||||
|
||||
-enabled nvv4l2 && add_ldflags '-L/usr/lib/aarch64-linux-gnu/tegra' \
|
||||
- && check_headers linux/videodev2.h \
|
||||
- && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl
|
||||
+enabled nvv4l2 && add_ldflags "-L/usr/lib/aarch64-linux-gnu/tegra"
|
||||
|
||||
enabled amf &&
|
||||
check_cpp_condition amf "AMF/core/Version.h" \
|
@ -6,12 +6,15 @@ PKG_NAME="libva"
|
||||
PKG_VERSION="2.20.0"
|
||||
PKG_SHA256="117f8d658a5fc9ea406ca80a3eb4ae1d70b15a54807c9ed77199c812bed73b60"
|
||||
PKG_ARCH="x86_64"
|
||||
[ "${DISTRO}" = "Lakka" ] && PKG_ARCH+=" i386" || true
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://01.org/linuxmedia"
|
||||
PKG_URL="https://github.com/intel/libva/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_LONGDESC="Libva is an implementation for VA-API (VIdeo Acceleration API)."
|
||||
|
||||
if [ "${DISTRO}" = "Lakka" ]; then
|
||||
PKG_ARCH+=" i386"
|
||||
fi
|
||||
|
||||
if [ "${DISPLAYSERVER}" = "x11" ]; then
|
||||
PKG_DEPENDS_TARGET="toolchain libX11 libXext libXfixes libdrm"
|
||||
DISPLAYSERVER_LIBVA="-Dwith_x11=yes -Dwith_glx=no -Dwith_wayland=no"
|
||||
|
288
packages/multimedia/media-driver/patches/1648.patch
Normal file
288
packages/multimedia/media-driver/patches/1648.patch
Normal file
@ -0,0 +1,288 @@
|
||||
From fd67cc3fbd3a362297afc7cc8d75560df62708de Mon Sep 17 00:00:00 2001
|
||||
From: Jay Yang <jay.yang@intel.com>
|
||||
Date: Fri, 21 Apr 2023 13:10:52 +0800
|
||||
Subject: [PATCH] Fix GCC13 build errors
|
||||
|
||||
Fix #1639
|
||||
Fix #1640
|
||||
Fix #1641
|
||||
Signed-off-by: Jay Yang <jay.yang@intel.com>
|
||||
---
|
||||
.../Xe_M/Xe_XPM/hw/mhw_vebox_xe_xpm.h | 21 +++++++++++--------
|
||||
.../hal/codechal_encode_csc_ds_mdf_g12.h | 1 +
|
||||
.../agnostic/gen12/hw/mhw_vebox_g12_X.h | 1 +
|
||||
.../gen12/hw/vdbox/mhw_vdbox_avp_generic.h | 19 -----------------
|
||||
.../gen9/codec/hal/codechal_encode_avc_g9.h | 1 +
|
||||
.../codec/hal/codechal_fei_hevc_g9_skl.cpp | 3 ---
|
||||
.../shared/mediacopy/media_copy_xe_hpm.h | 1 +
|
||||
.../shared/mediacopy/media_copy_xe_xpm_base.h | 1 +
|
||||
.../shared/mediacopy/media_copy_xe_xpm_plus.h | 1 +
|
||||
.../hucitf/decode_huc_packet_creator_g12.h | 4 ++++
|
||||
.../m12_0/shared/mediacopy/media_copy_m12_0.h | 1 +
|
||||
.../mediacopy/media_copy_xe_lpm_plus_base.h | 1 +
|
||||
.../bufferMgr/encode_tracked_buffer_queue.cpp | 5 +++++
|
||||
.../bufferMgr/encode_tracked_buffer_queue.h | 2 +-
|
||||
.../common/shared/media_debug_serializer.h | 1 +
|
||||
.../media_scalability_multipipe.cpp | 2 +-
|
||||
.../scalability/media_scalability_multipipe.h | 2 +-
|
||||
17 files changed, 33 insertions(+), 34 deletions(-)
|
||||
|
||||
diff --git a/media_driver/agnostic/Xe_M/Xe_XPM/hw/mhw_vebox_xe_xpm.h b/media_driver/agnostic/Xe_M/Xe_XPM/hw/mhw_vebox_xe_xpm.h
|
||||
index b6b86a54ed..ae9a4be096 100644
|
||||
--- a/media_driver/agnostic/Xe_M/Xe_XPM/hw/mhw_vebox_xe_xpm.h
|
||||
+++ b/media_driver/agnostic/Xe_M/Xe_XPM/hw/mhw_vebox_xe_xpm.h
|
||||
@@ -110,15 +110,6 @@ class MhwVeboxInterfaceXe_Xpm: public MhwVeboxInterfaceG12
|
||||
PMOS_COMMAND_BUFFER pCmdBuffer,
|
||||
PMHW_VEBOX_SURFACE_STATE_CMD_PARAMS pVeboxSurfaceStateCmdParams) override;
|
||||
|
||||
- void SetVeboxSurfaces(
|
||||
- PMHW_VEBOX_SURFACE_PARAMS pSurfaceParam,
|
||||
- PMHW_VEBOX_SURFACE_PARAMS pDerivedSurfaceParam,
|
||||
- PMHW_VEBOX_SURFACE_PARAMS pSkinScoreSurfaceParam,
|
||||
- mhw_vebox_xe_xpm::VEBOX_SURFACE_STATE_CMD *pVeboxSurfaceState,
|
||||
- bool bIsOutputSurface,
|
||||
- bool bDIEnable,
|
||||
- bool b3DlutEnable);
|
||||
-
|
||||
MOS_STATUS FindVeboxGpuNodeToUse(
|
||||
PMHW_VEBOX_GPUNODE_LIMIT pGpuNodeLimit) override;
|
||||
|
||||
@@ -144,6 +135,18 @@ class MhwVeboxInterfaceXe_Xpm: public MhwVeboxInterfaceG12
|
||||
uint32_t m_indexofVebox = 0;
|
||||
uint32_t m_numofVebox = 1;
|
||||
uint32_t m_usingSfc = 0;
|
||||
+
|
||||
+ using MhwVeboxInterfaceG12::SetVeboxSurfaces;
|
||||
+
|
||||
+ void SetVeboxSurfaces(
|
||||
+ PMHW_VEBOX_SURFACE_PARAMS pSurfaceParam,
|
||||
+ PMHW_VEBOX_SURFACE_PARAMS pDerivedSurfaceParam,
|
||||
+ PMHW_VEBOX_SURFACE_PARAMS pSkinScoreSurfaceParam,
|
||||
+ mhw_vebox_xe_xpm::VEBOX_SURFACE_STATE_CMD *pVeboxSurfaceState,
|
||||
+ bool bIsOutputSurface,
|
||||
+ bool bDIEnable,
|
||||
+ bool b3DlutEnable);
|
||||
+
|
||||
};
|
||||
|
||||
#endif // __MHW_VEBOX_XE_XPM_H__
|
||||
diff --git a/media_driver/agnostic/gen12/codec/hal/codechal_encode_csc_ds_mdf_g12.h b/media_driver/agnostic/gen12/codec/hal/codechal_encode_csc_ds_mdf_g12.h
|
||||
index 3dd276a748..ce21993da7 100644
|
||||
--- a/media_driver/agnostic/gen12/codec/hal/codechal_encode_csc_ds_mdf_g12.h
|
||||
+++ b/media_driver/agnostic/gen12/codec/hal/codechal_encode_csc_ds_mdf_g12.h
|
||||
@@ -202,6 +202,7 @@ class CodechalEncodeCscDsMdfG12 : public CodechalEncodeCscDsG12
|
||||
|
||||
MOS_STATUS CscKernel(
|
||||
KernelParams* pParams) override;
|
||||
+ using CodechalEncodeCscDsG12::InitKernelStateCsc;
|
||||
MOS_STATUS InitKernelStateCsc(KernelParams* pParams);
|
||||
MOS_STATUS SetupKernelArgsCSC(CmKernel *cmKrnCSCDS, SurfaceParamsCscMdf* surfaceparams);
|
||||
MOS_STATUS SetCurbeCscforMDF(CMRT_UMD::vector<uint32_t, 10> & curbeData);
|
||||
diff --git a/media_driver/agnostic/gen12/hw/mhw_vebox_g12_X.h b/media_driver/agnostic/gen12/hw/mhw_vebox_g12_X.h
|
||||
index 64e2ffe462..d0c2d6ca5e 100644
|
||||
--- a/media_driver/agnostic/gen12/hw/mhw_vebox_g12_X.h
|
||||
+++ b/media_driver/agnostic/gen12/hw/mhw_vebox_g12_X.h
|
||||
@@ -336,6 +336,7 @@ class MhwVeboxInterfaceG12 : public MhwVeboxInterfaceGeneric<mhw_vebox_g12_X>
|
||||
MOS_STATUS ValidateVeboxScalabilityConfig();
|
||||
#endif
|
||||
|
||||
+protected:
|
||||
void SetVeboxSurfaces(
|
||||
PMHW_VEBOX_SURFACE_PARAMS pSurfaceParam,
|
||||
PMHW_VEBOX_SURFACE_PARAMS pDerivedSurfaceParam,
|
||||
diff --git a/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_generic.h b/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_generic.h
|
||||
index ae1bd88cb2..fb2fc0fe86 100644
|
||||
--- a/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_generic.h
|
||||
+++ b/media_driver/agnostic/gen12/hw/vdbox/mhw_vdbox_avp_generic.h
|
||||
@@ -95,24 +95,5 @@ class MhwVdboxAvpInterfaceGeneric : public MhwVdboxAvpInterface
|
||||
|
||||
return eStatus;
|
||||
}
|
||||
-
|
||||
- MOS_STATUS AddAvpBsdObjectCmd(
|
||||
- PMOS_COMMAND_BUFFER cmdBuffer,
|
||||
- MhwVdboxAvpBsdParams *params)
|
||||
- {
|
||||
- MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
|
||||
-
|
||||
- MHW_FUNCTION_ENTER;
|
||||
- MHW_MI_CHK_NULL(m_osInterface);
|
||||
-
|
||||
- typename TAvpCmds::AVP_BSD_OBJECT_CMD cmd;
|
||||
-
|
||||
- cmd.DW1.IndirectBsdDataLength = params->m_bsdDataLength;
|
||||
- cmd.DW2.IndirectDataStartAddress = params->m_bsdDataStartOffset;
|
||||
-
|
||||
- MHW_MI_CHK_STATUS(m_osInterface->pfnAddCommand(cmdBuffer, &cmd, sizeof(cmd)));
|
||||
-
|
||||
- return eStatus;
|
||||
- }
|
||||
};
|
||||
#endif
|
||||
diff --git a/media_driver/agnostic/gen9/codec/hal/codechal_encode_avc_g9.h b/media_driver/agnostic/gen9/codec/hal/codechal_encode_avc_g9.h
|
||||
index f981860946..a735bb46cf 100644
|
||||
--- a/media_driver/agnostic/gen9/codec/hal/codechal_encode_avc_g9.h
|
||||
+++ b/media_driver/agnostic/gen9/codec/hal/codechal_encode_avc_g9.h
|
||||
@@ -5668,6 +5668,7 @@ class CodechalEncodeAvcEncG9 : public CodechalEncodeAvcEnc
|
||||
MOS_STATUS GetStatusReport(
|
||||
void *status,
|
||||
uint16_t numStatus) override;
|
||||
+ using CodechalEncodeAvcEnc::GetStatusReport;
|
||||
|
||||
#if USE_CODECHAL_DEBUG_TOOL
|
||||
protected:
|
||||
diff --git a/media_driver/agnostic/gen9_skl/codec/hal/codechal_fei_hevc_g9_skl.cpp b/media_driver/agnostic/gen9_skl/codec/hal/codechal_fei_hevc_g9_skl.cpp
|
||||
index 8da01da3f0..59c0480653 100644
|
||||
--- a/media_driver/agnostic/gen9_skl/codec/hal/codechal_fei_hevc_g9_skl.cpp
|
||||
+++ b/media_driver/agnostic/gen9_skl/codec/hal/codechal_fei_hevc_g9_skl.cpp
|
||||
@@ -6410,9 +6410,6 @@ MOS_STATUS CodechalFeiHevcStateG9Skl::FreeEncResources()
|
||||
|
||||
m_cmKernelMap.clear();
|
||||
|
||||
- CmKernelMapType deallocator;
|
||||
- m_cmKernelMap.swap(deallocator);
|
||||
-
|
||||
#endif
|
||||
|
||||
return eStatus;
|
||||
diff --git a/media_driver/media_softlet/agnostic/Xe_M/Xe_HPM/shared/mediacopy/media_copy_xe_hpm.h b/media_driver/media_softlet/agnostic/Xe_M/Xe_HPM/shared/mediacopy/media_copy_xe_hpm.h
|
||||
index b43087e93c..23bf56075c 100644
|
||||
--- a/media_driver/media_softlet/agnostic/Xe_M/Xe_HPM/shared/mediacopy/media_copy_xe_hpm.h
|
||||
+++ b/media_driver/media_softlet/agnostic/Xe_M/Xe_HPM/shared/mediacopy/media_copy_xe_hpm.h
|
||||
@@ -50,6 +50,7 @@ class MediaCopyState_Xe_Hpm: public MediaCopyBaseState
|
||||
//!
|
||||
//! \brief init function.
|
||||
virtual MOS_STATUS Initialize( PMOS_INTERFACE osInterface, MhwInterfaces *mhwInterfaces);
|
||||
+ using MediaCopyBaseState::Initialize;
|
||||
|
||||
//!
|
||||
//! \brief render format support.
|
||||
diff --git a/media_driver/media_softlet/agnostic/Xe_M/Xe_XPM_base/shared/mediacopy/media_copy_xe_xpm_base.h b/media_driver/media_softlet/agnostic/Xe_M/Xe_XPM_base/shared/mediacopy/media_copy_xe_xpm_base.h
|
||||
index 8075553c0d..14c291a4a1 100644
|
||||
--- a/media_driver/media_softlet/agnostic/Xe_M/Xe_XPM_base/shared/mediacopy/media_copy_xe_xpm_base.h
|
||||
+++ b/media_driver/media_softlet/agnostic/Xe_M/Xe_XPM_base/shared/mediacopy/media_copy_xe_xpm_base.h
|
||||
@@ -49,6 +49,7 @@ class MediaCopyStateXe_Xpm_Base: public MediaCopyBaseState
|
||||
//!
|
||||
//! \brief init function.
|
||||
virtual MOS_STATUS Initialize( PMOS_INTERFACE osInterface, MhwInterfaces *mhwInterfaces);
|
||||
+ using MediaCopyBaseState::Initialize;
|
||||
|
||||
//!
|
||||
//! \brief surface copy pre process.
|
||||
diff --git a/media_driver/media_softlet/agnostic/Xe_M/Xe_XPM_plus/shared/mediacopy/media_copy_xe_xpm_plus.h b/media_driver/media_softlet/agnostic/Xe_M/Xe_XPM_plus/shared/mediacopy/media_copy_xe_xpm_plus.h
|
||||
index 99f7bfe525..e24f42963f 100644
|
||||
--- a/media_driver/media_softlet/agnostic/Xe_M/Xe_XPM_plus/shared/mediacopy/media_copy_xe_xpm_plus.h
|
||||
+++ b/media_driver/media_softlet/agnostic/Xe_M/Xe_XPM_plus/shared/mediacopy/media_copy_xe_xpm_plus.h
|
||||
@@ -50,6 +50,7 @@ class MediaCopyStateXe_Xpm_Plus: public MediaCopyBaseState
|
||||
//!
|
||||
//! \brief init function.
|
||||
virtual MOS_STATUS Initialize(PMOS_INTERFACE osInterface, MhwInterfaces *mhwInterfaces);
|
||||
+ using MediaCopyBaseState::Initialize;
|
||||
|
||||
//!
|
||||
//! \brief render format support.
|
||||
diff --git a/media_driver/media_softlet/agnostic/gen12_base/codec/hal/dec/shared/hucitf/decode_huc_packet_creator_g12.h b/media_driver/media_softlet/agnostic/gen12_base/codec/hal/dec/shared/hucitf/decode_huc_packet_creator_g12.h
|
||||
index 682c9352bd..1774ff6dcf 100644
|
||||
--- a/media_driver/media_softlet/agnostic/gen12_base/codec/hal/dec/shared/hucitf/decode_huc_packet_creator_g12.h
|
||||
+++ b/media_driver/media_softlet/agnostic/gen12_base/codec/hal/dec/shared/hucitf/decode_huc_packet_creator_g12.h
|
||||
@@ -48,6 +48,10 @@ class HucPacketCreatorG12 : public HucPacketCreatorBase
|
||||
MediaPipeline *pipeline,
|
||||
MediaTask *task,
|
||||
CodechalHwInterface *hwInterface);
|
||||
+
|
||||
+ using HucPacketCreatorBase::CreateHucCopyPkt;
|
||||
+ using HucPacketCreatorBase::CreateProbUpdatePkt;
|
||||
+ using HucPacketCreatorBase::CreateStreamOutInterface;
|
||||
MEDIA_CLASS_DEFINE_END(decode__HucPacketCreatorG12)
|
||||
};
|
||||
|
||||
diff --git a/media_driver/media_softlet/agnostic/m12/m12_0/shared/mediacopy/media_copy_m12_0.h b/media_driver/media_softlet/agnostic/m12/m12_0/shared/mediacopy/media_copy_m12_0.h
|
||||
index 25e5972b7d..7e267011ad 100644
|
||||
--- a/media_driver/media_softlet/agnostic/m12/m12_0/shared/mediacopy/media_copy_m12_0.h
|
||||
+++ b/media_driver/media_softlet/agnostic/m12/m12_0/shared/mediacopy/media_copy_m12_0.h
|
||||
@@ -51,6 +51,7 @@ class MediaCopyStateM12_0: public MediaCopyBaseState
|
||||
//!
|
||||
//! \brief init function.
|
||||
virtual MOS_STATUS Initialize( PMOS_INTERFACE osInterface, MhwInterfaces *mhwInterfaces);
|
||||
+ using MediaCopyBaseState::Initialize;
|
||||
|
||||
//!
|
||||
//! \brief render format support.
|
||||
diff --git a/media_softlet/agnostic/Xe_M_plus/Xe_LPM_plus_base/shared/mediacopy/media_copy_xe_lpm_plus_base.h b/media_softlet/agnostic/Xe_M_plus/Xe_LPM_plus_base/shared/mediacopy/media_copy_xe_lpm_plus_base.h
|
||||
index 1f3c14ff44..5775a81732 100644
|
||||
--- a/media_softlet/agnostic/Xe_M_plus/Xe_LPM_plus_base/shared/mediacopy/media_copy_xe_lpm_plus_base.h
|
||||
+++ b/media_softlet/agnostic/Xe_M_plus/Xe_LPM_plus_base/shared/mediacopy/media_copy_xe_lpm_plus_base.h
|
||||
@@ -48,6 +48,7 @@ class MediaCopyStateXe_Lpm_Plus_Base: public MediaCopyBaseState
|
||||
//!
|
||||
//! \brief init function.
|
||||
virtual MOS_STATUS Initialize(PMOS_INTERFACE osInterface, MhwInterfacesNext *mhwInterfaces);
|
||||
+ using MediaCopyBaseState::Initialize;
|
||||
|
||||
//!
|
||||
//! \brief render format support.
|
||||
diff --git a/media_softlet/agnostic/common/codec/hal/enc/shared/bufferMgr/encode_tracked_buffer_queue.cpp b/media_softlet/agnostic/common/codec/hal/enc/shared/bufferMgr/encode_tracked_buffer_queue.cpp
|
||||
index ccd75e3d97..5c53583b02 100644
|
||||
--- a/media_softlet/agnostic/common/codec/hal/enc/shared/bufferMgr/encode_tracked_buffer_queue.cpp
|
||||
+++ b/media_softlet/agnostic/common/codec/hal/enc/shared/bufferMgr/encode_tracked_buffer_queue.cpp
|
||||
@@ -154,4 +154,9 @@ MOS_STATUS BufferQueue::DestoryResource(void* resource)
|
||||
return MOS_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
+void BufferQueue::SetResourceType(ResourceType resType)
|
||||
+{
|
||||
+ m_resourceType = resType;
|
||||
+}
|
||||
+
|
||||
}
|
||||
\ No newline at end of file
|
||||
diff --git a/media_softlet/agnostic/common/codec/hal/enc/shared/bufferMgr/encode_tracked_buffer_queue.h b/media_softlet/agnostic/common/codec/hal/enc/shared/bufferMgr/encode_tracked_buffer_queue.h
|
||||
index 6ef9424e8c..4aa0898c4d 100644
|
||||
--- a/media_softlet/agnostic/common/codec/hal/enc/shared/bufferMgr/encode_tracked_buffer_queue.h
|
||||
+++ b/media_softlet/agnostic/common/codec/hal/enc/shared/bufferMgr/encode_tracked_buffer_queue.h
|
||||
@@ -87,7 +87,7 @@ class BufferQueue
|
||||
//!
|
||||
bool SafeToDestory();
|
||||
|
||||
- void SetResourceType(ResourceType resType) { m_resourceType = resType; }
|
||||
+ void SetResourceType(ResourceType resType);
|
||||
|
||||
protected:
|
||||
//!
|
||||
diff --git a/media_softlet/agnostic/common/shared/media_debug_serializer.h b/media_softlet/agnostic/common/shared/media_debug_serializer.h
|
||||
index 77e5fced2d..90d64ad24f 100644
|
||||
--- a/media_softlet/agnostic/common/shared/media_debug_serializer.h
|
||||
+++ b/media_softlet/agnostic/common/shared/media_debug_serializer.h
|
||||
@@ -34,6 +34,7 @@
|
||||
#include <string>
|
||||
#include <typeinfo>
|
||||
#include <type_traits>
|
||||
+#include <stdint.h>
|
||||
#include "media_class_trace.h"
|
||||
|
||||
template <typename T, typename = void>
|
||||
diff --git a/media_softlet/agnostic/common/shared/scalability/media_scalability_multipipe.cpp b/media_softlet/agnostic/common/shared/scalability/media_scalability_multipipe.cpp
|
||||
index 06b107b6bb..fe08b67aeb 100644
|
||||
--- a/media_softlet/agnostic/common/shared/scalability/media_scalability_multipipe.cpp
|
||||
+++ b/media_softlet/agnostic/common/shared/scalability/media_scalability_multipipe.cpp
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
#include "media_scalability_multipipe.h"
|
||||
|
||||
-MOS_STATUS MediaScalabilityMultiPipe::UpdateState()
|
||||
+MOS_STATUS MediaScalabilityMultiPipe::UpdateState(void *statePars)
|
||||
{
|
||||
return MOS_STATUS_SUCCESS;
|
||||
}
|
||||
diff --git a/media_softlet/agnostic/common/shared/scalability/media_scalability_multipipe.h b/media_softlet/agnostic/common/shared/scalability/media_scalability_multipipe.h
|
||||
index 9f848dcde5..81d3f334b3 100644
|
||||
--- a/media_softlet/agnostic/common/shared/scalability/media_scalability_multipipe.h
|
||||
+++ b/media_softlet/agnostic/common/shared/scalability/media_scalability_multipipe.h
|
||||
@@ -50,7 +50,7 @@ class MediaScalabilityMultiPipe: public MediaScalability
|
||||
//! \return MOS_STATUS
|
||||
//! MOS_STATUS_SUCCESS if success, else fail reason
|
||||
//!
|
||||
- virtual MOS_STATUS UpdateState();
|
||||
+ virtual MOS_STATUS UpdateState(void *statePars);
|
||||
|
||||
protected:
|
||||
inline bool IsFirstPipe() { return (m_currentPipe == 0) ? true : false; }
|
@ -49,7 +49,7 @@ pre_configure_target() {
|
||||
# bluez fails to build in subdirs
|
||||
cd ${PKG_BUILD}
|
||||
rm -rf .${TARGET_NAME}
|
||||
|
||||
sed -i -e "s|<policy user=\"%DISTRO%\">|<policy user=\"${DISTRO}\">|" src/bluetooth.conf
|
||||
export LIBS="-lncurses"
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ post_makeinstall_target() {
|
||||
echo "[General]" > ${INSTALL}/etc/bluetooth/input.conf
|
||||
echo "ClassicBondedOnly=false" >> ${INSTALL}/etc/bluetooth/input.conf
|
||||
|
||||
if [ "${DISTRO}" = "Lakka" ]; then
|
||||
if [ "${DISTRO}" = "Lakka" ] || [ "${PROJECT}" = "L4T" -a "${DEVICE}" = "Switch" ]; then
|
||||
sed -i $INSTALL/etc/bluetooth/main.conf \
|
||||
-e "s|^#FastConnectable.*|FastConnectable=true|g" \
|
||||
-e "s|^# Privacy =.*|Privacy = device|g"
|
||||
|
@ -0,0 +1,38 @@
|
||||
diff -Naur bluez-5.66/src/bluetooth.conf bluez-5.66-2/src/bluetooth.conf
|
||||
--- bluez-5.66/src/bluetooth.conf 2024-02-02 04:33:35.200222390 +0100
|
||||
+++ bluez-5.66-2/src/bluetooth.conf 2024-02-02 04:35:47.442699056 +0100
|
||||
@@ -6,6 +6,34 @@
|
||||
<busconfig>
|
||||
|
||||
<!-- ../system.conf have denied everything, so we just punch some holes -->
|
||||
+ <policy user="%DISTRO%">
|
||||
+ <allow own="org.bluez"/>
|
||||
+ <allow send_destination="org.bluez"/>
|
||||
+ <allow send_interface="org.bluez.AdvertisementMonitor1"/>
|
||||
+ <allow send_interface="org.bluez.Agent1"/>
|
||||
+ <allow send_interface="org.bluez.MediaEndpoint1"/>
|
||||
+ <allow send_interface="org.bluez.MediaPlayer1"/>
|
||||
+ <allow send_interface="org.bluez.Profile1"/>
|
||||
+ <allow send_interface="org.bluez.GattCharacteristic1"/>
|
||||
+ <allow send_interface="org.bluez.GattDescriptor1"/>
|
||||
+ <allow send_interface="org.bluez.LEAdvertisement1"/>
|
||||
+ <allow send_interface="org.freedesktop.DBus.ObjectManager"/>
|
||||
+ <allow send_interface="org.freedesktop.DBus.Properties"/>
|
||||
+ <allow send_interface="org.mpris.MediaPlayer2.Player"/>
|
||||
+
|
||||
+ <allow own="org.bluez.obex"/>
|
||||
+ <allow send_destination="org.bluez.obex"/>
|
||||
+ <allow send_interface="org.bluez.obex.Agent1"/>
|
||||
+ <allow send_interface="org.bluez.obex.Client1"/>
|
||||
+ <allow send_interface="org.bluez.obex.Session1"/>
|
||||
+ <allow send_interface="org.bluez.obex.Transfer1"/>
|
||||
+ <allow send_interface="org.bluez.obex.ObjectPush1"/>
|
||||
+ <allow send_interface="org.bluez.obex.FileTransfer1"/>
|
||||
+ <allow send_interface="org.bluez.obex.PhonebookAccess1"/>
|
||||
+ <allow send_interface="org.bluez.obex.Synchronization1"/>
|
||||
+ <allow send_interface="org.bluez.obex.MessageAccess1"/>
|
||||
+ <allow send_interface="org.bluez.obex.Message1"/>
|
||||
+ </policy>
|
||||
|
||||
<policy user="root">
|
||||
<allow own="org.bluez"/>
|
@ -52,10 +52,23 @@ else
|
||||
PKG_CONFIGURE_OPTS_TARGET+=" --disable-wireguard"
|
||||
fi
|
||||
|
||||
if [ "${WIRELESS_DAEMON}" = "wpa_supplicant" ]; then
|
||||
PKG_CONFIGURE_OPTS_TARGET="${PKG_CONFIGURE_OPTS_TARGET//--disable-wifi/}"
|
||||
PKG_CONFIGURE_OPTS_TARGET="${PKG_CONFIGURE_OPTS_TARGET//--enable-iwd/}"
|
||||
PKG_CONFIGURE_OPTS_TARGET+=" --enable-wifi --disable-iwd WPASUPPLICANT=/usr/bin/wpa_supplicant"
|
||||
|
||||
PKG_DEPENDS_TARGET="${PKG_DEPENDS_TARGET//iwd/}"
|
||||
PKG_DEPENDS_TARGET+=" wpa_supplicant"
|
||||
fi
|
||||
|
||||
PKG_MAKE_OPTS_TARGET="storagedir=/storage/.cache/connman \
|
||||
vpn_storagedir=/storage/.config/wireguard \
|
||||
statedir=/run/connman"
|
||||
|
||||
pre_configure_target() {
|
||||
sed -i -e "s|<policy user=\"%DISTRO%\">|<policy user=\"${DISTRO}\">|" ${PKG_BUILD}/src/connman-dbus.conf
|
||||
}
|
||||
|
||||
post_configure_target() {
|
||||
libtool_remove_rpath libtool
|
||||
}
|
||||
@ -89,10 +102,14 @@ post_makeinstall_target() {
|
||||
|
||||
post_install() {
|
||||
add_user system x 430 430 "service" "/var/run/connman" "/bin/sh"
|
||||
add_group system 430
|
||||
add_group system 430 ${DISTRO}
|
||||
|
||||
enable_service connman.service
|
||||
if [ "${WIREGUARD_SUPPORT}" = "yes" ]; then
|
||||
enable_service connman-vpn.service
|
||||
fi
|
||||
|
||||
if [ "${PROJECT}" = "L4T" -a "${DEVICE}" = "Switch" ]; then
|
||||
echo chmod u+s ${BUILD}/image/system/usr/bin/connmanctl >> ${FAKEROOT_SCRIPT}
|
||||
fi
|
||||
}
|
||||
|
18
packages/network/connman/patches/connman-06-fix-libreelec-user-dbus-permissions.patch
Normal file
18
packages/network/connman/patches/connman-06-fix-libreelec-user-dbus-permissions.patch
Normal file
@ -0,0 +1,18 @@
|
||||
diff -Naur connman-24180d1243bf005c721be6f9d8d6da67bb669c55/src/connman-dbus.conf connman-24180d1243bf005c721be6f9d8d6da67bb669c55-2/src/connman-dbus.conf
|
||||
--- connman-24180d1243bf005c721be6f9d8d6da67bb669c55/src/connman-dbus.conf 2024-02-02 04:49:53.238565581 +0100
|
||||
+++ connman-24180d1243bf005c721be6f9d8d6da67bb669c55-2/src/connman-dbus.conf 2024-02-02 04:52:06.209049700 +0100
|
||||
@@ -1,6 +1,14 @@
|
||||
<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
|
||||
<busconfig>
|
||||
+ <policy user="%DISTRO%">
|
||||
+ <allow own="net.connman"/>
|
||||
+ <allow send_destination="net.connman"/>
|
||||
+ <allow send_interface="net.connman.Agent"/>
|
||||
+ <allow send_interface="net.connman.Counter"/>
|
||||
+ <allow send_interface="net.connman.Notification"/>
|
||||
+ </policy>
|
||||
+
|
||||
<policy user="root">
|
||||
<allow own="net.connman"/>
|
||||
<allow send_destination="net.connman"/>
|
@ -170,6 +170,10 @@ post_install() {
|
||||
add_user root "${ROOT_PASSWORD}" 0 0 "Root User" "/storage" "/bin/sh"
|
||||
add_group root 0
|
||||
add_group users 100
|
||||
if [ "${PROJECT}" = "L4T" -a "${DEVICE}" = "Switch" ]; then
|
||||
add_user "${DISTRO}" "${DISTRO}" 1000 1000 "${DISTRO} User" "/storage" "/sbin/nologin"
|
||||
add_group "${DISTRO}" 1000 ${DISTRO}
|
||||
fi
|
||||
|
||||
add_user nobody x 65534 65534 "Nobody" "/" "/bin/sh"
|
||||
add_group nogroup 65534
|
||||
|
@ -557,9 +557,9 @@ mount_flash() {
|
||||
if [ ! "$FAT32_BOOT" = "yes" ]; then
|
||||
mount_part "$boot" "/flash" "ro,noatime"
|
||||
else
|
||||
mount_part "$boot" "/flash" "rw,noatime"
|
||||
mount_part "$boot" "/flash" "rw,noatime,umask=0000"
|
||||
fi
|
||||
|
||||
|
||||
if [ -f /flash/post-flash.sh ]; then
|
||||
. /flash/post-flash.sh
|
||||
fi
|
||||
@ -987,7 +987,7 @@ prepare_sysroot() {
|
||||
|
||||
# Do init tasks to bring up system
|
||||
|
||||
if [ ! "$(cat /proc/cmdline | grep -s odin-workaround)" ]; then
|
||||
if [ ! "$(cat /proc/cmdline | grep -s show_kernel_messages)" ]; then
|
||||
# hide kernel log messages on console
|
||||
echo '1 4 1 7' > /proc/sys/kernel/printk
|
||||
fi
|
||||
|
@ -40,8 +40,8 @@ post_makeinstall_target() {
|
||||
|
||||
post_install() {
|
||||
add_user dbus x 81 81 "System message bus" "/" "/bin/sh"
|
||||
add_group dbus 81
|
||||
add_group netdev 497
|
||||
add_group dbus 81 ${DISTRO}
|
||||
add_group netdev 497 ${DISTRO}
|
||||
|
||||
echo "chmod 4750 ${INSTALL}/usr/lib/dbus/dbus-daemon-launch-helper" >> ${FAKEROOT_SCRIPT}
|
||||
echo "chown 0:81 ${INSTALL}/usr/lib/dbus/dbus-daemon-launch-helper" >> ${FAKEROOT_SCRIPT}
|
||||
|
17
packages/sysutils/libgudev/package.mk
Normal file
17
packages/sysutils/libgudev/package.mk
Normal file
@ -0,0 +1,17 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="libgudev"
|
||||
PKG_VERSION="235"
|
||||
PKG_SHA256="36360e7629b762b0cc85ef302b88a7cea96b0156fd426274815b155c83732c59"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.linux-usb.org/"
|
||||
PKG_URL="https://github.com/GNOME/libgudev/archive/refs/tags/${PKG_VERSION}.zip"
|
||||
PKG_DEPENDS_TARGET="toolchain systemd"
|
||||
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf ${INSTALL}/usr/lib/pkgconfig
|
||||
rm -rf ${INSTALL}/usr/include
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
diff -Naur mergerfs-2.24.0/Makefile mergerfs-2.24.0-2/Makefile
|
||||
--- mergerfs-2.24.0/Makefile 2023-11-02 23:58:29.373436471 +0100
|
||||
+++ mergerfs-2.24.0-2/Makefile 2023-11-02 23:59:14.686439139 +0100
|
||||
@@ -12,7 +12,7 @@
|
||||
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
-PKGCONFIG = $(shell which pkg-config)
|
||||
+PKGCONFIG := $(shell which pkg-config)
|
||||
GIT = $(shell which git)
|
||||
TAR = $(shell which tar)
|
||||
MKDIR = $(shell which mkdir)
|
@ -243,6 +243,8 @@ post_makeinstall_target() {
|
||||
ln -sf /usr/bin/systemctl ${INSTALL}/usr/sbin/shutdown
|
||||
ln -sf /usr/bin/systemctl ${INSTALL}/usr/sbin/telinit
|
||||
|
||||
chmod u+s ${INSTALL}/usr/bin/systemctl
|
||||
|
||||
# strip
|
||||
debug_strip ${INSTALL}/usr
|
||||
|
||||
@ -277,26 +279,20 @@ post_install() {
|
||||
add_group systemd-network 193
|
||||
add_user systemd-network x 193 193 "systemd-network" "/" "/bin/sh"
|
||||
|
||||
add_group systemd-oom 194
|
||||
add_user systemd-oom x 194 194 "systemd Userspace OOM Killer" "/" "/bin/false"
|
||||
|
||||
add_group adm 4
|
||||
add_group tty 5
|
||||
add_group disk 6
|
||||
add_group lp 7
|
||||
add_group audio 63 pipewire,${DISTRO}
|
||||
add_group cdrom 11 ${DISTRO}
|
||||
add_group dialout 18 ${DISTRO}
|
||||
add_group disk 6 ${DISTRO}
|
||||
add_group floppy 19 ${DISTRO}
|
||||
add_group kmem 9
|
||||
add_group wheel 10
|
||||
add_group cdrom 11
|
||||
add_group dialout 18
|
||||
add_group floppy 19
|
||||
add_group utmp 22
|
||||
add_group kvm 10
|
||||
add_group lp 7
|
||||
add_group render 12
|
||||
add_group tape 33
|
||||
add_group kvm 36
|
||||
add_group video 39 pipewire
|
||||
add_group audio 63 pipewire
|
||||
add_group input 104
|
||||
add_group render 105
|
||||
add_group sgx 106
|
||||
add_group tty 5
|
||||
add_group video 39 pipewire,${DISTRO}
|
||||
add_group utmp 22
|
||||
add_group input 199 ${DISTRO}
|
||||
|
||||
enable_service machine-id.service
|
||||
enable_service debugconfig.service
|
||||
@ -307,4 +303,11 @@ post_install() {
|
||||
enable_service network-base.service
|
||||
enable_service systemd-timesyncd.service
|
||||
enable_service systemd-timesyncd-setup.service
|
||||
#Add service to properly remount flash partition when using fat32-boot kernel command line option.
|
||||
enable_service remount_flash_ro.service
|
||||
|
||||
if [ "${PROJECT}" = "L4T" -a "${DEVICE}" = "Switch" ]; then
|
||||
echo chmod u+s ${BUILD}/image/system/usr/bin/systemctl >> ${FAKEROOT_SCRIPT}
|
||||
fi
|
||||
}
|
||||
|
||||
|
12
packages/sysutils/systemd/system.d/remount_flash_ro.service
Normal file
12
packages/sysutils/systemd/system.d/remount_flash_ro.service
Normal file
@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Remount /flash as RO
|
||||
ConditionKernelCommandLine=fat32-boot
|
||||
DefaultDependencies=no
|
||||
After=final.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=mount -o remount,ro /flash
|
||||
|
||||
[Install]
|
||||
WantedBy=final.target
|
23
packages/sysutils/upower/package.mk
Normal file
23
packages/sysutils/upower/package.mk
Normal file
@ -0,0 +1,23 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2020-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="upower"
|
||||
PKG_VERSION="v1.90.0"
|
||||
PKG_SHA256="cb6028f095824422c59d98b3c9903e2eda2a96fc613f11824f0b6379de7efa2e"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.linux-usb.org/"
|
||||
PKG_URL="https://gitlab.freedesktop.org/upower/upower/-/archive/${PKG_VERSION}/upower-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain systemd glib dbus libusb libgudev"
|
||||
PKG_LONGDESC="Upower is a modular hardware abstraction layer designed for use in Linux systems that is designed to simplify device management and replace the current monolithic Linux HAL. Upower includes the ability to enumerate system devices and send notifications when hardware is added or removed from the computer system."
|
||||
|
||||
PKG_MESON_OPTS_TARGET="-Dgtk-doc=false -Dman=false"
|
||||
|
||||
post_makeinstall_target() {
|
||||
rm -rf ${INSTALL}/usr/lib/pkgconfig
|
||||
rm -rf ${INSTALL}/usr/include
|
||||
}
|
||||
|
||||
post_install() {
|
||||
enable_service upower.service
|
||||
}
|
@ -22,5 +22,5 @@ makeinstall_target() {
|
||||
mkdir -p ${INSTALL}/usr/{lib,bin}
|
||||
cp -v xdotool ${INSTALL}/usr/bin
|
||||
cp -v libxdo* ${INSTALL}/usr/lib
|
||||
cp -v libxdo* ${TOOLCHAIN}/aarch64-libreelec-linux-gnueabi/sysroot/usr/lib/
|
||||
cp -v libxdo* ${TOOLCHAIN}/aarch64-libreelec-linux-gnu/sysroot/usr/lib/
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ set timeout="5"
|
||||
|
||||
menuentry "Lakka" {
|
||||
set gfxpayload=keep
|
||||
linux /lakka/KERNEL boot=/dev/mmcblk0p1 BOOT_IMAGE=/lakka/KERNEL SYSTEM_IMAGE=/lakka/SYSTEM console=ttyMSM0,115200n8 clk_ignore_unused pd_ignore_unused nofsck fat32-boot firmware.class_path="/usr/lib/firmware" net.ifnames=1 odin-workaround
|
||||
linux /lakka/KERNEL boot=/dev/mmcblk0p1 BOOT_IMAGE=/lakka/KERNEL SYSTEM_IMAGE=/lakka/SYSTEM console=ttyMSM0,115200n8 clk_ignore_unused pd_ignore_unused nofsck fat32-boot firmware.class_path="/usr/lib/firmware" net.ifnames=1 show_kernel_messages
|
||||
devicetree /lakka/sdm845-ayn-odin.dtb
|
||||
}
|
||||
|
||||
|
@ -42,9 +42,7 @@ if [ $CPU_SCHEDUTIL_GOV -eq 1 ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! "$(cat /proc/cmdline | grep performance_mode=1)" = "" ]; then
|
||||
for scaling_governor in \
|
||||
/sys/devices/system/cpu/cpu[0-7]/cpufreq/scaling_governor; do
|
||||
echo performance > $scaling_governor
|
||||
done
|
||||
# Fix permissions for OLED panel
|
||||
if [ -e "/sys/devices/50000000.host1x/tegradc.0/panel_color_mode" ]; then
|
||||
chmod 0666 /sys/devices/50000000.host1x/tegradc.0/panel_color_mode
|
||||
fi
|
||||
|
@ -215,7 +215,7 @@ CONFIG_HAVE_PERF_EVENTS=y
|
||||
CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
CONFIG_COMPAT_BRK=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
@ -306,13 +306,11 @@ CONFIG_BLOCK=y
|
||||
CONFIG_BLK_DEV_BSG=y
|
||||
# CONFIG_BLK_DEV_BSGLIB is not set
|
||||
CONFIG_BLK_DEV_INTEGRITY=y
|
||||
CONFIG_BLK_DEV_THROTTLING=y
|
||||
# CONFIG_BLK_CMDLINE_PARSER is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
# CONFIG_ACORN_PARTITION is not set
|
||||
# CONFIG_AIX_PARTITION is not set
|
||||
# CONFIG_OSF_PARTITION is not set
|
||||
@ -392,7 +390,7 @@ CONFIG_PCI=y
|
||||
CONFIG_PCI_DOMAINS=y
|
||||
CONFIG_PCI_DOMAINS_GENERIC=y
|
||||
CONFIG_PCI_SYSCALL=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
# CONFIG_PCIEPORTBUS is not set
|
||||
CONFIG_PCIEAER=y
|
||||
CONFIG_PCIE_ECRC=y
|
||||
CONFIG_PCIEASPM=y
|
||||
@ -545,12 +543,11 @@ CONFIG_ZPOOL=y
|
||||
CONFIG_ZBUD=y
|
||||
# CONFIG_Z3FOLD is not set
|
||||
CONFIG_ZSMALLOC=y
|
||||
# CONFIG_PGTABLE_MAPPING is not set
|
||||
CONFIG_PGTABLE_MAPPING=y
|
||||
# CONFIG_ZSMALLOC_STAT is not set
|
||||
CONFIG_GENERIC_EARLY_IOREMAP=y
|
||||
# CONFIG_IDLE_PAGE_TRACKING is not set
|
||||
CONFIG_ZONE_DEVICE=y
|
||||
CONFIG_DEVICE_PRIVATE=y
|
||||
# CONFIG_DEVICE_PUBLIC is not set
|
||||
CONFIG_FRAME_VECTOR=y
|
||||
CONFIG_ARCH_MEMORY_PROBE=y
|
||||
@ -560,9 +557,9 @@ CONFIG_SECCOMP=y
|
||||
CONFIG_KEXEC=y
|
||||
# CONFIG_XEN is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||
# CONFIG_HARDEN_BRANCH_PREDICTOR is not set
|
||||
# CONFIG_UNMAP_KERNEL_AT_EL0 is not set
|
||||
CONFIG_ARM64_SSBD=y
|
||||
# CONFIG_ARM64_SSBD is not set
|
||||
CONFIG_ARMV8_DEPRECATED=y
|
||||
CONFIG_SWP_EMULATION=y
|
||||
CONFIG_CP15_BARRIER_EMULATION=y
|
||||
@ -574,7 +571,6 @@ CONFIG_SETEND_EMULATION=y
|
||||
#
|
||||
# CONFIG_ARM64_HW_AFDBM is not set
|
||||
# CONFIG_ARM64_PAN is not set
|
||||
CONFIG_ARM64_LSE_ATOMICS=y
|
||||
# CONFIG_ARM64_VHE is not set
|
||||
|
||||
#
|
||||
@ -646,6 +642,8 @@ CONFIG_SERROR_HANDLER=y
|
||||
# CPU Idle
|
||||
#
|
||||
CONFIG_CPU_IDLE=y
|
||||
# CONFIG_CPU_IDLE_TEGRA18X is not set
|
||||
# CONFIG_CPU_IDLE_TEGRA19X is not set
|
||||
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y
|
||||
# CONFIG_CPU_IDLE_GOV_LADDER is not set
|
||||
CONFIG_CPU_IDLE_GOV_MENU=y
|
||||
@ -655,8 +653,6 @@ CONFIG_DT_IDLE_STATES=y
|
||||
# ARM CPU Idle Drivers
|
||||
#
|
||||
CONFIG_ARM_CPUIDLE=y
|
||||
CONFIG_CPU_IDLE_TEGRA18X=y
|
||||
CONFIG_CPU_IDLE_TEGRA19X=y
|
||||
# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
|
||||
|
||||
#
|
||||
@ -710,6 +706,7 @@ CONFIG_XFRM_USER=y
|
||||
CONFIG_NET_KEY=y
|
||||
# CONFIG_NET_KEY_MIGRATE is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_WIREGUARD=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_ADVANCED_ROUTER=y
|
||||
# CONFIG_IP_FIB_TRIE_STATS is not set
|
||||
@ -778,15 +775,40 @@ CONFIG_NETFILTER_ADVANCED=y
|
||||
#
|
||||
# Core Netfilter Configuration
|
||||
#
|
||||
CONFIG_NETFILTER_INGRESS=y
|
||||
CONFIG_NETFILTER_NETLINK=m
|
||||
# CONFIG_NETFILTER_NETLINK_ACCT is not set
|
||||
CONFIG_NETFILTER_NETLINK_QUEUE=m
|
||||
CONFIG_NETFILTER_NETLINK_LOG=m
|
||||
# CONFIG_NF_CONNTRACK is not set
|
||||
CONFIG_NF_LOG_COMMON=m
|
||||
# CONFIG_NF_TABLES is not set
|
||||
CONFIG_NETFILTER_XTABLES=m
|
||||
CONFIG_NF_CONNTRACK=y
|
||||
CONFIG_NF_CONNTRACK_FTP=y
|
||||
CONFIG_NF_CONNTRACK_H323=y
|
||||
CONFIG_NF_CONNTRACK_IRC=y
|
||||
CONFIG_NF_CONNTRACK_NETBIOS_NS=y
|
||||
CONFIG_NF_CONNTRACK_SNMP=y
|
||||
CONFIG_NF_CONNTRACK_PPTP=y
|
||||
CONFIG_NF_CONNTRACK_SANE=y
|
||||
CONFIG_NF_CONNTRACK_SIP=y
|
||||
CONFIG_NF_CONNTRACK_TFTP=y
|
||||
CONFIG_NF_CT_NETLINK=y
|
||||
CONFIG_NETFILTER_NETLINK_GLUE_CT=y
|
||||
CONFIG_NF_TABLES=y
|
||||
CONFIG_NF_TABLES_INET=y
|
||||
CONFIG_NF_TABLES_NETDEV=y
|
||||
CONFIG_NFT_EXTHDR=y
|
||||
CONFIG_NFT_META=y
|
||||
CONFIG_NFT_NUMGEN=y
|
||||
CONFIG_NFT_CT=y
|
||||
CONFIG_NFT_SET_RBTREE=y
|
||||
CONFIG_NFT_SET_HASH=y
|
||||
CONFIG_NFT_COUNTER=y
|
||||
CONFIG_NFT_LOG=y
|
||||
CONFIG_NFT_LIMIT=y
|
||||
CONFIG_NFT_MASQ=y
|
||||
CONFIG_NFT_REDIR=y
|
||||
CONFIG_NFT_NAT=y
|
||||
CONFIG_NFT_OBJREF=y
|
||||
CONFIG_NFT_QUOTA=y
|
||||
CONFIG_NFT_REJECT=y
|
||||
CONFIG_NFT_COMPAT=y
|
||||
CONFIG_NFT_HASH=y
|
||||
CONFIG_NFT_DUP_NETDEV=y
|
||||
CONFIG_NFT_FWD_NETDEV=y
|
||||
|
||||
#
|
||||
# Xtables combined modules
|
||||
@ -1086,7 +1108,6 @@ CONFIG_TEGRA_AHB=y
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_UEVENT_HELPER=y
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_STANDALONE=y
|
||||
@ -1245,7 +1266,7 @@ CONFIG_BLK_DEV_NBD=m
|
||||
# CONFIG_BLK_DEV_SKD is not set
|
||||
# CONFIG_BLK_DEV_SX8 is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_COUNT=4
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
@ -1357,7 +1378,6 @@ CONFIG_SENSORS_NCT1008=y
|
||||
CONFIG_TSKIN_FAN_THERM_EST=y
|
||||
# CONFIG_EQOS_APE_HWDEP is not set
|
||||
# CONFIG_TEGRA_SKIN is not set
|
||||
CONFIG_TEGRA_PCIE_EP_MEM=y
|
||||
# CONFIG_NVS is not set
|
||||
# CONFIG_NVS_LIGHT is not set
|
||||
# CONFIG_NVS_PROXIMITY is not set
|
||||
@ -1576,22 +1596,10 @@ CONFIG_WLAN=y
|
||||
# CONFIG_WLAN_VENDOR_ATH is not set
|
||||
# CONFIG_WLAN_VENDOR_ATMEL is not set
|
||||
CONFIG_WLAN_VENDOR_BROADCOM=y
|
||||
CONFIG_B43=y
|
||||
CONFIG_B43_BCMA=y
|
||||
CONFIG_B43_SSB=y
|
||||
CONFIG_B43_BUSES_BCMA_AND_SSB=y
|
||||
# CONFIG_B43_BUSES_BCMA is not set
|
||||
# CONFIG_B43_BUSES_SSB is not set
|
||||
CONFIG_B43_PCI_AUTOSELECT=y
|
||||
CONFIG_B43_PCICORE_AUTOSELECT=y
|
||||
# CONFIG_B43_PCI_AUTOSELECT is not set
|
||||
# CONFIG_B43_SDIO is not set
|
||||
CONFIG_B43_BCMA_PIO=y
|
||||
CONFIG_B43_PIO=y
|
||||
CONFIG_B43_PHY_G=y
|
||||
CONFIG_B43_PHY_N=y
|
||||
CONFIG_B43_PHY_LP=y
|
||||
CONFIG_B43_PHY_HT=y
|
||||
CONFIG_B43_LEDS=y
|
||||
# CONFIG_B43_DEBUG is not set
|
||||
# CONFIG_B43LEGACY is not set
|
||||
CONFIG_BRCMUTIL=y
|
||||
@ -1599,7 +1607,7 @@ CONFIG_BRCMUTIL=y
|
||||
CONFIG_BRCMFMAC=m
|
||||
CONFIG_BRCMFMAC_PROTO_BCDC=y
|
||||
CONFIG_BRCMFMAC_PROTO_MSGBUF=y
|
||||
CONFIG_BRCMFMAC_SDIO=y
|
||||
# CONFIG_BRCMFMAC_SDIO is not set
|
||||
# CONFIG_BRCMFMAC_USB is not set
|
||||
CONFIG_BRCMFMAC_PCIE=y
|
||||
# CONFIG_BRCM_TRACING is not set
|
||||
@ -1721,8 +1729,6 @@ CONFIG_JOYCON_SERDEV_FF=y
|
||||
# CONFIG_JOYSTICK_AS5011 is not set
|
||||
# CONFIG_JOYSTICK_JOYDUMP is not set
|
||||
CONFIG_JOYSTICK_XPAD=m
|
||||
CONFIG_JOYSTICK_XPAD_FF=y
|
||||
CONFIG_JOYSTICK_XPAD_LEDS=y
|
||||
CONFIG_INPUT_TABLET=y
|
||||
# CONFIG_TABLET_USB_ACECAD is not set
|
||||
# CONFIG_TABLET_USB_AIPTEK is not set
|
||||
@ -1917,7 +1923,9 @@ CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
|
||||
# CONFIG_TTY_PRINTK is not set
|
||||
# CONFIG_HVC_DCC is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
CONFIG_HW_RANDOM_TEGRA=n
|
||||
CONFIG_HW_RANDOM_TEGRA_TRNG=y
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
|
||||
@ -1990,7 +1998,7 @@ CONFIG_I2C_ALGOBIT=y
|
||||
# CONFIG_I2C_RK3X is not set
|
||||
# CONFIG_I2C_SIMTEC is not set
|
||||
CONFIG_I2C_TEGRA=y
|
||||
CONFIG_I2C_TEGRA_SLAVE=y
|
||||
CONFIG_I2C_TEGRA_SLAVE=m
|
||||
# CONFIG_I2C_THUNDERX is not set
|
||||
# CONFIG_I2C_XILINX is not set
|
||||
|
||||
@ -2098,10 +2106,10 @@ CONFIG_PINCTRL_MAX77620=y
|
||||
CONFIG_PINCTRL_TEGRA=y
|
||||
CONFIG_PINCTRL_TEGRA210=y
|
||||
CONFIG_PINCTRL_TEGRA_XUSB=y
|
||||
CONFIG_PINCTRL_TEGRA186=y
|
||||
# CONFIG_PINCTRL_TEGRA186 is not set
|
||||
# CONFIG_PINCTRL_TEGRA186_PADCTL is not set
|
||||
# CONFIG_PINCTRL_TEGRA186_DPAUX is not set
|
||||
CONFIG_PINCTRL_TEGRA194=y
|
||||
# CONFIG_PINCTRL_TEGRA194 is not set
|
||||
# CONFIG_PINCTRL_TEGRA194_PEXCLK_PADCTL is not set
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_OF_GPIO=y
|
||||
@ -2170,7 +2178,7 @@ CONFIG_GPIO_MAX77620=y
|
||||
#
|
||||
# USB GPIO expanders
|
||||
#
|
||||
CONFIG_GPIO_TEGRA186=y
|
||||
# CONFIG_GPIO_TEGRA186 is not set
|
||||
# CONFIG_GPIO_TMPM32X_I2C is not set
|
||||
CONFIG_PADCTRL=y
|
||||
CONFIG_PADCTRL_GENERIC_TEGRA_IO_PAD=y
|
||||
@ -2576,7 +2584,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||
# CONFIG_REGULATOR_ANATOP is not set
|
||||
# CONFIG_REGULATOR_DA9210 is not set
|
||||
# CONFIG_REGULATOR_DA9211 is not set
|
||||
# CONFIG_REGULATOR_FAN53555 is not set
|
||||
CONFIG_REGULATOR_FAN53555=y
|
||||
CONFIG_REGULATOR_GPIO=y
|
||||
# CONFIG_REGULATOR_ISL9305 is not set
|
||||
# CONFIG_REGULATOR_ISL6271A is not set
|
||||
@ -2611,7 +2619,7 @@ CONFIG_REGULATOR_PWM=y
|
||||
# CONFIG_REGULATOR_PMIC_OTP is not set
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_STAGING_MEDIA=y
|
||||
CONFIG_MEDIA_CEC=y
|
||||
CONFIG_MEDIA_CEC_SUPPORT=y
|
||||
|
||||
#
|
||||
# Multimedia core support
|
||||
@ -2945,11 +2953,11 @@ CONFIG_TEGRA_GRHOST_NVDEC=y
|
||||
CONFIG_TEGRA_GRHOST_NVENC=y
|
||||
CONFIG_TEGRA_GRHOST_NVJPG=y
|
||||
CONFIG_TEGRA_GRHOST_TSEC=y
|
||||
CONFIG_TEGRA_GRHOST_NVCSI=y
|
||||
# CONFIG_TEGRA_GRHOST_NVCSI is not set
|
||||
CONFIG_TEGRA_GRHOST_SCALE=y
|
||||
CONFIG_TEGRA_GRHOST_DEFAULT_TIMEOUT=10000
|
||||
CONFIG_TEGRA_GRHOST_SYNC=y
|
||||
CONFIG_TEGRA_GRHOST_VHOST=y
|
||||
# CONFIG_TEGRA_GRHOST_VHOST is not set
|
||||
# CONFIG_NVDEC_BOOTLOADER is not set
|
||||
CONFIG_TSEC_USE_WPR=y
|
||||
CONFIG_TEGRA_CAMERA_PLATFORM=y
|
||||
@ -3324,6 +3332,7 @@ CONFIG_THRUSTMASTER_FF=y
|
||||
CONFIG_HID_WACOM=y
|
||||
CONFIG_HID_WIIMOTE=y
|
||||
CONFIG_HID_XINMO=y
|
||||
CONFIG_HID_XPADNEO=m
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
# CONFIG_ZEROPLUS_FF is not set
|
||||
CONFIG_HID_ZYDACRON=y
|
||||
@ -3480,6 +3489,8 @@ CONFIG_USB_ULPI=y
|
||||
CONFIG_USB_ULPI_VIEWPORT=y
|
||||
CONFIG_DUAL_ROLE_USB_INTF=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=500
|
||||
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
# CONFIG_USB_GADGET_DEBUG_FS is not set
|
||||
@ -3506,13 +3517,12 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
|
||||
CONFIG_USB_TEGRA_XUDC=y
|
||||
# CONFIG_USB_DUMMY_HCD is not set
|
||||
CONFIG_USB_TEGRA_CD=y
|
||||
CONFIG_USB_TEGRA_CD_NO_USERSPACE=y
|
||||
CONFIG_USB_LIBCOMPOSITE=y
|
||||
CONFIG_USB_F_ACM=y
|
||||
CONFIG_USB_U_SERIAL=y
|
||||
CONFIG_USB_F_FS=y
|
||||
CONFIG_USB_CONFIGFS=y
|
||||
# CONFIG_USB_CONFIGFS_SERIAL is not set
|
||||
CONFIG_USB_CONFIGFS_SERIAL=y
|
||||
CONFIG_USB_CONFIGFS_ACM=y
|
||||
# CONFIG_USB_CONFIGFS_OBEX is not set
|
||||
# CONFIG_USB_CONFIGFS_NCM is not set
|
||||
@ -3572,7 +3582,7 @@ CONFIG_MMC_BLOCK=y
|
||||
CONFIG_MMC_BLOCK_MINORS=32
|
||||
CONFIG_MMC_BLOCK_BOUNCE=y
|
||||
# CONFIG_SDIO_UART is not set
|
||||
CONFIG_MMC_TEST=y
|
||||
CONFIG_MMC_TEST=m
|
||||
# CONFIG_MMC_SIMULATE_MAX_SPEED is not set
|
||||
# CONFIG_MMC_FFU is not set
|
||||
# CONFIG_MMCQD_CPU_AFFINITY is not set
|
||||
@ -3599,7 +3609,6 @@ CONFIG_MMC_SDHCI_TEGRA=y
|
||||
# CONFIG_MMC_USDHI6ROL0 is not set
|
||||
# CONFIG_MMC_TOSHIBA_PCI is not set
|
||||
# CONFIG_MMC_MTK is not set
|
||||
CONFIG_MMC_CQ_HCI=y
|
||||
# CONFIG_MEMSTICK is not set
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
@ -3926,8 +3935,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_SPEAKUP is not set
|
||||
# CONFIG_MFD_NVEC is not set
|
||||
|
||||
#
|
||||
# Android
|
||||
#
|
||||
# CONFIG_FIQ_DEBUGGER is not set
|
||||
# CONFIG_FIQ_WATCHDOG is not set
|
||||
@ -3945,12 +3952,7 @@ CONFIG_SYNC=y
|
||||
# CONFIG_MOST is not set
|
||||
# CONFIG_KS7010 is not set
|
||||
# CONFIG_GREYBUS is not set
|
||||
CONFIG_STEPPER=y
|
||||
CONFIG_STEPPER_PCA=y
|
||||
|
||||
#
|
||||
# STEPPER drivers
|
||||
#
|
||||
# CONFIG_USB_WPAN_HCD is not set
|
||||
# CONFIG_GOLDFISH is not set
|
||||
# CONFIG_CHROME_PLATFORMS is not set
|
||||
@ -4442,7 +4444,6 @@ CONFIG_PWM_TEGRA=y
|
||||
CONFIG_PWM_TEGRA_TACHOMETER=y
|
||||
CONFIG_PWM_TEGRA_PMC_BLINK=y
|
||||
CONFIG_PWM_TEGRA_PMC_SOFT_LED_BLINK=y
|
||||
CONFIG_PWM_TEGRA_DFLL=y
|
||||
CONFIG_IRQCHIP=y
|
||||
CONFIG_ARM_GIC=y
|
||||
CONFIG_FIQ=y
|
||||
@ -4549,7 +4550,7 @@ CONFIG_HAVE_ARM_SMCCC=y
|
||||
# Tegra BPMP Driver
|
||||
#
|
||||
CONFIG_NV_TEGRA_BPMP=y
|
||||
CONFIG_BPMP_DEBUGFS_MOUNT_ON_BOOT=y
|
||||
# CONFIG_BPMP_DEBUGFS_MOUNT_ON_BOOT is not set
|
||||
# CONFIG_ACPI is not set
|
||||
|
||||
#
|
||||
@ -4821,7 +4822,7 @@ CONFIG_NLS_ISO8859_1=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
CONFIG_DYNAMIC_DEBUG=y
|
||||
# CONFIG_DYNAMIC_DEBUG is not set
|
||||
|
||||
#
|
||||
# Compile-time checks and compiler options
|
||||
@ -4863,7 +4864,7 @@ CONFIG_DEBUG_KMEMLEAK=y
|
||||
CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=400
|
||||
# CONFIG_DEBUG_KMEMLEAK_TEST is not set
|
||||
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
|
||||
CONFIG_DEBUG_KMEMLEAK_SCAN_ON=y
|
||||
# CONFIG_DEBUG_KMEMLEAK_SCAN_ON is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
CONFIG_DEBUG_VM=y
|
||||
# CONFIG_DEBUG_VM_VMACACHE is not set
|
||||
@ -5179,7 +5180,7 @@ CONFIG_TEGRA_CRYPTO_DEV=y
|
||||
CONFIG_CRYPTO_DEV_TEGRA_SE=y
|
||||
CONFIG_CRYPTO_DEV_TEGRA_ELLIPTIC_SE=y
|
||||
CONFIG_CRYPTO_DEV_TEGRA_SE_USE_HOST1X_INTERFACE=y
|
||||
# CONFIG_CRYPTO_DEV_TEGRA_VIRTUAL_SE_INTERFACE is not set
|
||||
CONFIG_CRYPTO_DEV_TEGRA_VIRTUAL_SE_INTERFACE=y
|
||||
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
|
||||
|
||||
#
|
||||
|
@ -11,15 +11,31 @@ case ${TARGET_ARCH} in
|
||||
;;
|
||||
esac
|
||||
|
||||
# remove xpadneo
|
||||
ADDITIONAL_PACKAGES="${ADDITIONAL_PACKAGES//xpadneo/}"
|
||||
|
||||
ADDITIONAL_PACKAGES+=" switch-joycon-bluetooth-dock-configs switch-alsa-ucm-configs libcec v4l-utils usb-gadget-scripts switch-cpu-profile switch-gpu-profile"
|
||||
# CEC Support
|
||||
CEC_FRAMEWORK_SUPPORT="yes"
|
||||
|
||||
if [ "${DISTRO}" = "Lakka" ]; then
|
||||
ADDITIONAL_PACKAGES+=" mergerfs"
|
||||
DISTRO_PATH="lakka"
|
||||
DISTRO_ICON="icon_lakka_hue.bmp"
|
||||
HEKATE_SPLASH="splash_lakka.bmp"
|
||||
ID="SWR-LAK"
|
||||
ADDITIONAL_PACKAGES+=" wii-u-gc-adapter"
|
||||
# LAKKA_CANARY_PATH="http://nightly.builds.lakka.tv/members/gavin/lakka-v5.x-new"
|
||||
elif [ "${DISTRO}" = "LibreELEC" ]; then
|
||||
DISTRO_PATH="libreelec"
|
||||
DISTRO_ICON="icon_libreelec_hue.bmp"
|
||||
HEKATE_SPLASH="splash_libreelec.bmp"
|
||||
ID="SWR-LIB"
|
||||
else
|
||||
echo "Unknown distro, expect issues"
|
||||
fi
|
||||
|
||||
ADDITIONAL_PACKAGES+=" switch-bsp"
|
||||
|
||||
#Remove since we include driver in kernel now. Module Config/udev rules
|
||||
#Included in switch-bsp package, to match version in kernel(0.9.5).
|
||||
ADDITIONAL_PACKAGES="${ADDITIONAL_PACKAGES//xpadneo/}"
|
||||
|
||||
if [ ${PULSEAUDIO_SUPPORT} = "yes" ]; then
|
||||
ADDITIONAL_PACKAGES+=" pulseaudio-configs"
|
||||
fi
|
||||
@ -27,25 +43,26 @@ fi
|
||||
BOOTLOADER="switch-bootloader" # this is a fake bootloader since coreboot and u-boot are sideloaded
|
||||
|
||||
ADDITIONAL_DRIVERS+=" xf86-input-libinput"
|
||||
|
||||
#Add proper version for kernel based upon switchroot version Only used for switch
|
||||
SWITCHROOT_VERSION=5.1.2
|
||||
GENERIC_L4T_VERSION=32.3.1
|
||||
L4T_DEVICE_TYPE="t210"
|
||||
#L4T_COMBINED_KERNEL_SHA256="346baf95b5e13f416eb07f7e354b6b2aec1138b72c745ef222b55247c5150211"
|
||||
#L4T_COMBINED_KERNEL_SHA256="c3a8df6836cb4581162da6f4d380c2a730f69b3bac8bbaf4c2ec6c73ab5461cd"
|
||||
|
||||
L4T_DEVICE_CUSTOM_BOARD_NAME="nx"
|
||||
|
||||
# serial number of the kernel
|
||||
# bump this in case any of the below change to build new kernel archive
|
||||
# set it to year-month-date of the update
|
||||
L4T_KERNEL_VERSION="2022-12-24"
|
||||
L4T_KERNEL_VERSION="2023-06-10"
|
||||
|
||||
L4T_KERNEL_4_9_REPO="https://gitlab.com/switchroot/kernel/l4t-kernel-4.9.git"
|
||||
L4T_KERNEL_4_9_REPO_BRANCH="linux-5.0.0-dev"
|
||||
L4T_KERNEL_4_9_REPO_SHA256="68e1648524c7deacc9e7346113aa2f60edadc7f2"
|
||||
L4T_KERNEL_4_9_REPO="https://github.com/CTCaer/switch-l4t-kernel-4.9.git"
|
||||
L4T_KERNEL_4_9_REPO_BRANCH="linux-5.1.2"
|
||||
L4T_KERNEL_4_9_REPO_SHA256="2d0059fd3167a8df756de2aa0489d4aa70a9fc15"
|
||||
|
||||
L4T_KERNEL_NVIDIA_REPO="https://gitlab.com/switchroot/kernel/l4t-kernel-nvidia.git"
|
||||
L4T_KERNEL_NVIDIA_REPO_BRANCH="linux-5.0.0-dev"
|
||||
L4T_KERNEL_NVIDIA_REPO_SHA256="2a7d8df2de59dc388f2ced76ac2f1180d324d985"
|
||||
L4T_KERNEL_NVIDIA_REPO="https://github.com/CTCaer/switch-l4t-kernel-nvidia.git"
|
||||
L4T_KERNEL_NVIDIA_REPO_BRANCH="linux-5.1.2"
|
||||
L4T_KERNEL_NVIDIA_REPO_SHA256="a4cc21186653434c0362323b12354e6e713ad5af"
|
||||
|
||||
L4T_KERNEL_NVGPU_REPO="https://gitlab.com/switchroot/kernel/l4t-kernel-nvgpu.git"
|
||||
L4T_KERNEL_NVGPU_REPO_BRANCH="linux-3.4.0-r32.5"
|
||||
@ -53,7 +70,7 @@ L4T_KERNEL_NVGPU_REPO_SHA256="1ae0167d360287ca78f5a2572f0de42594140312"
|
||||
|
||||
L4T_DEVICE_TEGRA_REPO="https://gitlab.com/switchroot/kernel/l4t-soc-tegra.git"
|
||||
L4T_DEVICE_TEGRA_REPO_BRANCH="l4t/l4t-r32.3.1"
|
||||
L4T_DEVICE_TEGRA_REPO_SHA256="b26b71bbc77d8815f6b88a282b383f523fb053dd"
|
||||
#L4T_DEVICE_TEGRA_REPO_SHA256="d2692b96d3a89e26d3bad94eb7e6bc4caccbdbdb"
|
||||
|
||||
L4T_DEVICE_COMMON_TEGRA_REPO="https://gitlab.com/switchroot/kernel/l4t-platform-tegra-common.git"
|
||||
L4T_DEVICE_COMMON_TEGRA_REPO_BRANCH="l4t/l4t-r32.3.1"
|
||||
@ -68,6 +85,6 @@ L4T_DEVICE_T210_REPO_BRANCH="l4t/l4t-r32.3.1"
|
||||
#L4T_DEVICE_T210_REPO_SHA256="0d7816046cb06b637a3b70381a5e4994fd897c35"
|
||||
|
||||
#Apply Custom Device DTS tree.
|
||||
L4T_DEVICE_CUSTOM_REPO="https://gitlab.com/switchroot/kernel/l4t-platform-t210-switch.git"
|
||||
L4T_DEVICE_CUSTOM_REPO_BRANCH="linux-5.0.0-dev"
|
||||
L4T_DEVICE_CUSTOM_REPO_SHA256="8abfc0ac0241a501284ecc2cd11737f5967f7f58"
|
||||
L4T_DEVICE_CUSTOM_REPO="https://github.com/CTCaer/switch-l4t-platform-t210-nx.git"
|
||||
L4T_DEVICE_CUSTOM_REPO_BRANCH="linux-dev"
|
||||
L4T_DEVICE_CUSTOM_REPO_SHA256="cf785c4c176499b301170d79fe57b77f365b73cd"
|
||||
|
@ -0,0 +1,25 @@
|
||||
[Unit]
|
||||
Description=Kodi Media Center
|
||||
After=network-online.target graphical.target
|
||||
Requires=graphical.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
User=LibreELEC
|
||||
Group=LibreELEC
|
||||
Environment=HOME=/storage DISPLAY=:0 PULSE_SERVER=127.0.0.1
|
||||
EnvironmentFile=/usr/lib/kodi/kodi.conf
|
||||
EnvironmentFile=-/run/libreelec/kodi.conf
|
||||
EnvironmentFile=-/run/libreelec/debug/kodi.conf
|
||||
ExecStartPre=-/usr/lib/kodi/kodi-config
|
||||
ExecStart=/usr/lib/kodi/kodi.sh --standalone -fs $KODI_ARGS $KODI_DEBUG
|
||||
ExecStop=/bin/kill -TERM $MAINPID
|
||||
ExecStopPost=-/usr/lib/kodi/kodi-safe-mode
|
||||
TimeoutStopSec=30
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
StartLimitInterval=0
|
||||
LimitNOFILE=16384
|
||||
|
||||
[Install]
|
||||
WantedBy=kodi.target
|
@ -5,7 +5,9 @@ ConditionKernelCommandLine=!retroarch=0
|
||||
Requires=graphical.target
|
||||
|
||||
[Service]
|
||||
Environment=HOME=/storage DISPLAY=:0
|
||||
Environment=HOME=/storage DISPLAY=:0 PULSE_SERVER=127.0.0.1
|
||||
User=Lakka
|
||||
Group=Lakka
|
||||
EnvironmentFile=-/run/libreelec/retroarch.conf
|
||||
EnvironmentFile=-/storage/.cache/services/retroarch.conf
|
||||
ExecStartPre=-/usr/lib/retroarch/retroarch-config
|
||||
|
@ -1,11 +0,0 @@
|
||||
PKG_NAME="switch-alsa-ucm-configs"
|
||||
PKG_DEPENDS_TARGET="alsa-lib alsa-ucm-conf"
|
||||
PKG_SECTION="virtual"
|
||||
PKG_LONGDESC="Nintendo Switch Alsa UCM Configs"
|
||||
|
||||
post_install() {
|
||||
mkdir -p ${INSTALL}/usr/share/alsa/ucm2
|
||||
cp -Prv ${PKG_DIR}/ucm_data/* ${INSTALL}/usr/share/alsa/ucm2/
|
||||
#Audio Fix Service
|
||||
enable_service alsa-init.service
|
||||
}
|
@ -1,131 +0,0 @@
|
||||
#
|
||||
# ALSA library configuration file
|
||||
#
|
||||
# Copyright (c) 2018-2019 NVIDIA Corporation. All Rights Reserved.
|
||||
#
|
||||
# NVIDIA Corporation and its licensors retain all intellectual property and
|
||||
# proprietary rights in and to this software and related documentation. Any
|
||||
# use, reproduction, disclosure or distribution of this software and related
|
||||
# documentation without an express license agreement from NVIDIA Corporation
|
||||
# is strictly prohibited.
|
||||
#
|
||||
# Configuration for Tegra soundcards
|
||||
CARDINFO{driver}=="tegra-snd-t210r", GOTO="Tegra210 Init"
|
||||
CARDINFO{driver}=="tegra-snd-t186r", GOTO="Tegra186 Init"
|
||||
CARDINFO{driver}=="tegra-snd-t19x-", GOTO="Tegra186 Init"
|
||||
RESULT="false", EXIT="return"
|
||||
|
||||
LABEL="Tegra210 Init"
|
||||
CTL{reset}="mixer"
|
||||
#CTL{name}="OPE2 Mux", CTL{value}="None"
|
||||
GOTO="Tegra Common Init"
|
||||
|
||||
LABEL="Tegra186 Init"
|
||||
CTL{reset}="mixer"
|
||||
CTL{name}="ADMAIF11 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF12 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF13 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF14 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF15 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF16 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF17 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF18 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF19 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF20 Mux", CTL{value}="None"
|
||||
CTL{name}="ADX3 Mux", CTL{value}="None"
|
||||
CTL{name}="ADX4 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX3-1 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX3-2 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX3-3 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX3-4 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX4-1 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX4-2 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX4-3 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX4-4 Mux", CTL{value}="None"
|
||||
CTL{name}="ASRC1-1 Mux", CTL{value}="None"
|
||||
CTL{name}="ASRC1-2 Mux", CTL{value}="None"
|
||||
CTL{name}="ASRC1-3 Mux", CTL{value}="None"
|
||||
CTL{name}="ASRC1-4 Mux", CTL{value}="None"
|
||||
CTL{name}="ASRC1-5 Mux", CTL{value}="None"
|
||||
CTL{name}="ASRC1-6 Mux", CTL{value}="None"
|
||||
CTL{name}="Denominator1 Mux", CTL{value}="None"
|
||||
CTL{name}="Denominator2 Mux", CTL{value}="None"
|
||||
CTL{name}="Denominator3 Mux", CTL{value}="None"
|
||||
CTL{name}="Denominator4 Mux", CTL{value}="None"
|
||||
CTL{name}="Denominator5 Mux", CTL{value}="None"
|
||||
CTL{name}="Denominator6 Mux", CTL{value}="None"
|
||||
CTL{name}="DSPK1 Mux", CTL{value}="None"
|
||||
CTL{name}="DSPK2 Mux", CTL{value}="None"
|
||||
CTL{name}="I2S6 Mux", CTL{value}="None"
|
||||
CTL{name}="Numerator1 Mux", CTL{value}="None"
|
||||
CTL{name}="Numerator2 Mux", CTL{value}="None"
|
||||
CTL{name}="Numerator3 Mux", CTL{value}="None"
|
||||
CTL{name}="Numerator4 Mux", CTL{value}="None"
|
||||
CTL{name}="Numerator5 Mux", CTL{value}="None"
|
||||
CTL{name}="Numerator6 Mux", CTL{value}="None"
|
||||
|
||||
LABEL="Tegra Common Init"
|
||||
CTL{reset}="mixer"
|
||||
CTL{name}="ADMAIF1 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF2 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF3 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF4 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF5 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF6 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF7 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF8 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF9 Mux", CTL{value}="None"
|
||||
CTL{name}="ADMAIF10 Mux", CTL{value}="None"
|
||||
CTL{name}="ADX1 Mux", CTL{value}="None"
|
||||
CTL{name}="ADX2 Mux", CTL{value}="None"
|
||||
CTL{name}="AFC1 Mux", CTL{value}="None"
|
||||
CTL{name}="AFC2 Mux", CTL{value}="None"
|
||||
CTL{name}="AFC3 Mux", CTL{value}="None"
|
||||
CTL{name}="AFC4 Mux", CTL{value}="None"
|
||||
CTL{name}="AFC5 Mux", CTL{value}="None"
|
||||
CTL{name}="AFC6 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX1-1 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX1-2 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX1-3 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX1-4 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX2-1 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX2-2 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX2-3 Mux", CTL{value}="None"
|
||||
CTL{name}="AMX2-4 Mux", CTL{value}="None"
|
||||
CTL{name}="I2S1 Mux", CTL{value}="None"
|
||||
CTL{name}="I2S2 Mux", CTL{value}="None"
|
||||
CTL{name}="I2S3 Mux", CTL{value}="None"
|
||||
CTL{name}="I2S4 Mux", CTL{value}="None"
|
||||
CTL{name}="I2S5 Mux", CTL{value}="None"
|
||||
CTL{name}="MIXER1-1 Mux", CTL{value}="None"
|
||||
CTL{name}="MIXER1-2 Mux", CTL{value}="None"
|
||||
CTL{name}="MIXER1-3 Mux", CTL{value}="None"
|
||||
CTL{name}="MIXER1-4 Mux", CTL{value}="None"
|
||||
CTL{name}="MIXER1-5 Mux", CTL{value}="None"
|
||||
CTL{name}="MIXER1-6 Mux", CTL{value}="None"
|
||||
CTL{name}="MIXER1-7 Mux", CTL{value}="None"
|
||||
CTL{name}="MIXER1-8 Mux", CTL{value}="None"
|
||||
CTL{name}="MIXER1-9 Mux", CTL{value}="None"
|
||||
CTL{name}="MIXER1-10 Mux", CTL{value}="None"
|
||||
CTL{name}="MVC1 Mux", CTL{value}="None"
|
||||
CTL{name}="MVC2 Mux", CTL{value}="None"
|
||||
CTL{name}="OPE1 Mux", CTL{value}="None"
|
||||
CTL{name}="SFC1 Mux", CTL{value}="None"
|
||||
CTL{name}="SFC2 Mux", CTL{value}="None"
|
||||
CTL{name}="SFC3 Mux", CTL{value}="None"
|
||||
CTL{name}="SFC4 Mux", CTL{value}="None"
|
||||
CTL{name}="SPKPROT1 Mux", CTL{value}="None"
|
||||
CARDINFO{driver}=="tegra-snd-t210r", \
|
||||
CTL{name}="I2S1 Loopback", CTL{do_search}=="0", \
|
||||
CTL{name}="ADMAIF1 Mux", CTL{value}="I2S1" \
|
||||
CTL{name}="I2S1 Mux", CTL{value}="ADMAIF1"
|
||||
CARDINFO{driver}=="tegra-snd-t186r", \
|
||||
CTL{name}="ADMAIF1 Mux", CTL{value}="I2S1" \
|
||||
CTL{name}="I2S1 Mux", CTL{value}="ADMAIF1"
|
||||
CARDINFO{driver}=="tegra-snd-t19x-", \
|
||||
CTL{name}="ADMAIF1 Mux", CTL{value}="I2S1" \
|
||||
CTL{name}="I2S1 Mux", CTL{value}="ADMAIF1" \
|
||||
CTL{name}="ADMAIF2 Mux", CTL{value}="I2S2" \
|
||||
CTL{name}="I2S2 Mux", CTL{value}="ADMAIF2"
|
||||
PRINT="Reset Tegra APE sound-card controls\n"
|
||||
RESULT="true", EXIT="return"
|
@ -1,70 +0,0 @@
|
||||
#
|
||||
# ALSA library configuration file
|
||||
#
|
||||
# Copyright (c) 2018-2019 NVIDIA Corporation. All Rights Reserved.
|
||||
#
|
||||
# NVIDIA Corporation and its licensors retain all intellectual property and
|
||||
# proprietary rights in and to this software and related documentation. Any
|
||||
# use, reproduction, disclosure or distribution of this software and related
|
||||
# documentation without an express license agreement from NVIDIA Corporation
|
||||
# is strictly prohibited.
|
||||
#
|
||||
# Configuration for Tegra soundcards using the RT565x codec
|
||||
|
||||
CARDINFO{driver}=="tegra-snd-t210r", GOTO="Tegra RT565x Init"
|
||||
CARDINFO{driver}=="tegra-snd-t186r", GOTO="Tegra RT565x Init"
|
||||
CARDINFO{driver}=="tegra-snd-t19x-", GOTO="Tegra RT565x Init"
|
||||
RESULT="false", EXIT="return"
|
||||
|
||||
LABEL="Tegra RT565x Init"
|
||||
CTL{reset}="mixer"
|
||||
CTL{name}="x TDM Data Mux",PROGRAM!="__ctl_search",GOTO="Tegra RT565x Next"
|
||||
|
||||
# RT565x playback setup
|
||||
CTL{name}="x Headphone Playback Volume", CTL{value}="31,31"
|
||||
CTL{name}="x Stereo DAC MIXR DAC R1 Switch", CTL{value}="on"
|
||||
CTL{name}="x Stereo DAC MIXL DAC L1 Switch", CTL{value}="on"
|
||||
CTL{name}="x HPO R Playback Switch", CTL{value}="on"
|
||||
CTL{name}="x HPO L Playback Switch", CTL{value}="on"
|
||||
CTL{name}="x DAC1 Playback Volume", CTL{value}="175,175"
|
||||
CTL{name}="x DAC1 Playback Switch", CTL{value}="on"
|
||||
CTL{name}="x DAC1 MIXR DAC1 Switch", CTL{value}="on"
|
||||
CTL{name}="x DAC1 MIXL DAC1 Switch", CTL{value}="on"
|
||||
|
||||
# RT565x capture setup
|
||||
CTL{name}="x RECMIX1L BST1 Switch", CTL{value}="on"
|
||||
CTL{name}="x RECMIX1R BST1 Switch", CTL{value}="on"
|
||||
CTL{name}="x Stereo1 ADC Source", CTL{value}="ADC1"
|
||||
CTL{name}="x Stereo1 ADC1 Source", CTL{value}="ADC"
|
||||
CTL{name}="x Stereo1 ADC MIXL ADC1 Switch", CTL{value}="on"
|
||||
CTL{name}="x Stereo1 ADC MIXR ADC1 Switch", CTL{value}="on"
|
||||
CTL{name}="x TDM Data Mux", CTL{value}="AD1:AD2:DAC:NUL"
|
||||
CTL{name}="x IN1 Boost Volume", CTL{value}="43"
|
||||
PRINT="Initialised RT565x codec with prefix 'x'\n"
|
||||
|
||||
LABEL="Tegra RT565x Next"
|
||||
CTL{name}="y TDM Data Mux",PROGRAM!="__ctl_search",RESULT="true", EXIT="return"
|
||||
|
||||
# RT565x playback setup
|
||||
CTL{name}="y Headphone Playback Volume", CTL{value}="31,31"
|
||||
CTL{name}="y Stereo DAC MIXR DAC R1 Switch", CTL{value}="on"
|
||||
CTL{name}="y Stereo DAC MIXL DAC L1 Switch", CTL{value}="on"
|
||||
CTL{name}="y HPO R Playback Switch", CTL{value}="on"
|
||||
CTL{name}="y HPO L Playback Switch", CTL{value}="on"
|
||||
CTL{name}="y DAC1 Playback Volume", CTL{value}="175,175"
|
||||
CTL{name}="y DAC1 Playback Switch", CTL{value}="on"
|
||||
CTL{name}="y DAC1 MIXR DAC1 Switch", CTL{value}="on"
|
||||
CTL{name}="y DAC1 MIXL DAC1 Switch", CTL{value}="on"
|
||||
|
||||
# RT565x capture setup
|
||||
CTL{name}="y RECMIX1L BST1 Switch", CTL{value}="on"
|
||||
CTL{name}="y RECMIX1R BST1 Switch", CTL{value}="on"
|
||||
CTL{name}="y Stereo1 ADC Source", CTL{value}="ADC1"
|
||||
CTL{name}="y Stereo1 ADC1 Source", CTL{value}="ADC"
|
||||
CTL{name}="y Stereo1 ADC MIXL ADC1 Switch", CTL{value}="on"
|
||||
CTL{name}="y Stereo1 ADC MIXR ADC1 Switch", CTL{value}="on"
|
||||
CTL{name}="y TDM Data Mux", CTL{value}="AD1:AD2:DAC:NUL"
|
||||
CTL{name}="y IN1 Boost Volume", CTL{value}="43"
|
||||
PRINT="Initialised RT565x codec with prefix 'y'\n"
|
||||
|
||||
RESULT="true", EXIT="return"
|
@ -16,7 +16,7 @@ Below you can find all supported keys and their defaults.
|
||||
Mandatory!
|
||||
|
||||
[id=@DISTRO_ID@]
|
||||
Set FS Label name. SWR-UBU by default.
|
||||
Set FS Label name. @DISTRO_ID@ by default.
|
||||
Used to automatically find the correct linux partition.
|
||||
|
||||
================================================================================
|
||||
@ -24,7 +24,8 @@ Below you can find all supported keys and their defaults.
|
||||
[r2p_action=self]
|
||||
self: Reboots to self. [Default]
|
||||
bootloader: Reboots to bootloader menu.
|
||||
|
||||
normal: Reboots with no config. Allows default auto boot to be used.
|
||||
|
||||
[usb3_enable=0]
|
||||
1: Enable USB3 support.
|
||||
Enabling it can dramatically decrease WiFi 2.4GHz and Bluetooth signal quality.
|
||||
@ -49,9 +50,17 @@ Below you can find all supported keys and their defaults.
|
||||
[als_enable=1]
|
||||
1: Enable Ambient Light Sensor.
|
||||
|
||||
[jc_rail_disable=0]
|
||||
1: Disable railed Joycon support.
|
||||
|
||||
[cec_enable=0]
|
||||
1: Enable auto DP/HDMI CEC negotiation.
|
||||
[touch_skip_tuning=0]
|
||||
1: Disables touch panel tuning on boot.
|
||||
Some panels with broken flex cable might need it.
|
||||
|
||||
[wifi_disable_vht80=0]
|
||||
1: Disable Wi-Fi VHT80 and VHT160 bonding (5GHz band).
|
||||
In case wifi card firmware hangs when fully used at such speeds and kernel
|
||||
panics, that might help to mitigate that issue.
|
||||
|
||||
[bootargs_extra=]
|
||||
Set extra kernel command line arguments.
|
||||
@ -62,34 +71,146 @@ Below you can find all supported keys and their defaults.
|
||||
Can also allow higher CPU/GPU clocks. If OC is used, the reduced power draw
|
||||
is negated.
|
||||
|
||||
[gpu_dvfsc=0]
|
||||
1: Enable DVFS C-Side for GPU. T210B01 only.
|
||||
Reduces power draw drastically on GPU frequencies of 768/844 MHz and up.
|
||||
Allows up to 1228 MHz clocks on select speedo binnings.
|
||||
|
||||
[limit_gpu_clk=0]
|
||||
1: Set GPU clock hard limit to 1075 MHz. T210B01 only.
|
||||
Helps when `gpu_dvfsc` is enabled and GPU can't handle the higher frequencies
|
||||
in such low voltages.
|
||||
================================================================================
|
||||
|
||||
|
||||
============================== RAM Overclocking ================================
|
||||
|
||||
[ram_oc=0]
|
||||
Set RAM Overclock frequency in KHz.
|
||||
|
||||
If you hang or get corruption or artifacts, try to reduce it.
|
||||
`mem-bench` command can use almost all of the available bandwidth so it can be
|
||||
used for a quick testing.
|
||||
Actual stability can only be confirmed by `memtester` command on as high as
|
||||
possible temperature for several hours and with a big test size.
|
||||
Running a secondary GPU benchmark can help raise temperature.
|
||||
|
||||
On T210 (Erista max 1996 MHz):
|
||||
Only frequencies in the following list are supported:
|
||||
1728000, 1795200, 1862400, 1894400, 1932800, 1996800
|
||||
Suggested:
|
||||
- 1862400
|
||||
Any clock increase will also increase RAM power consumption like a CPU/GPU OC.
|
||||
For example on T210B01, with 1z-nm ram, going from 1866 to 2133 causes a
|
||||
146 mW increase on active reads/writes which is 19.8%.
|
||||
Any other state is affected only with a voltage change.
|
||||
|
||||
On T210B01 (Mariko max 2133 MHz):
|
||||
Any multiple of 38400 KHz can be used.
|
||||
Suggested:
|
||||
Warning: On T210B01, GPU minimum voltage might be raised if very high RAM
|
||||
frequency is used and GPU binning is low.
|
||||
|
||||
T210 (Erista max 2133 MHz):
|
||||
List of supported frequencies:
|
||||
1733000, 1800000, 1866000, 1900000, 1933000, 1966000, 2000000, 2033000,
|
||||
2066000, 2100000, 2133000, 2166000, 2200000, 2233000, 2266000, 2300000,
|
||||
2333000, 2366000.
|
||||
|
||||
Input frequency is generally normalized to one of the above.
|
||||
Actual frequency will differ a bit.
|
||||
|
||||
Suggested Jedec Frequencies:
|
||||
- 1866000
|
||||
- 2133000
|
||||
|
||||
Suggested Custom:
|
||||
- Any, if it works.
|
||||
|
||||
[performance_mode=0]
|
||||
0: Use default schedutil cpu governor
|
||||
1: Use Performance CPU governor
|
||||
|
||||
[dock_freq_switch_enabled=0]
|
||||
0: Do not autoswitch clocks when docking/undocking
|
||||
1: Autoswitch clocks when docking/undocking.
|
||||
T210B01 (Mariko max 3000 MHz):
|
||||
List of supported frequencies:
|
||||
1866000, 2133000, 2166000, 2200000, 2233000, 2266000, 2300000, 2333000,
|
||||
2366000, 2400000, 2433000, 2466000, 2500000, 2533000, 2566000, 2600000,
|
||||
2633000, 2666000, 2700000, 2733000, 2766000, 2800000, 2833000, 2866000,
|
||||
2900000, 2933000, 2966000, 3000000, 3033000, 3066000, 3100000, 3133000,
|
||||
3166000, 3200000.
|
||||
|
||||
This feature only auto changes speeds to the HOS defaults for both tablet/docked mode.
|
||||
It also doesnt switch even if set if you change clocks manually. This is intentional,
|
||||
as I give you a menu to set clocks, and dont want to override your settings. If
|
||||
you set clock back to stock clock speed, it will start auto swapping again.
|
||||
Input frequency is generally normalized to one of the above.
|
||||
Actual frequency will be exactly one of these.
|
||||
|
||||
Suggested Jedec Frequencies:
|
||||
- 1866000
|
||||
- 2133000
|
||||
- 2400000
|
||||
- 2666000
|
||||
|
||||
Suggested Custom Frequencies:
|
||||
- Any, if it works.
|
||||
Very high ram frequencies might raise GPU power draw on some GPU frequencies
|
||||
if GPU binning is low.
|
||||
|
||||
Timing based overclocking:
|
||||
To enable that, edit the last [2 (T210) or 3 (T210B01) digits] of the frequency.
|
||||
|
||||
It's generally better to find a good base frequency before touching these.
|
||||
|
||||
Do not touch them at all for guaranteed stability on max possible frequency,
|
||||
since without these, the whole configuration is exactly per Nvidia's and
|
||||
RAM vendor's specifications.
|
||||
|
||||
Syntax:
|
||||
T210: Freq MHz + BA. FFFFF[BA]. (18624[00] -> 18624[52])
|
||||
T210B01: Freq MHz + CBA. FFFF[CBA]. (2133[000] -> 2133[252])
|
||||
|
||||
Description of F, A, B and C timing overclocking options:
|
||||
[F]: Actual clock frequency. Exceeding chip's real max is actual OC.
|
||||
|
||||
[A]: Base Latency reduction.
|
||||
Base latency decreases based on selected frequency bracket.
|
||||
Brackets: 1333/1600/1866/2133.
|
||||
- Range: 0 - 3. 0 to -3 bracket change.
|
||||
Example 1: 1866 with 2 is 1333 base latency. Originally 1866 bracket.
|
||||
Example 1: 1866 with 3 is 1333 base latency. Originally 1866 bracket.
|
||||
Example 2: 1996 with 3 is 1333 base latency. Originally 2133 bracket.
|
||||
Example 3: 2133 with 2 is 1600 base latency. Originally 2133 bracket.
|
||||
Example 4: 2400 with 0 is 2133 base latency. Originally 2133 bracket.
|
||||
|
||||
[B]: Core Timings reduction.
|
||||
Timings that massively get affected by temperatures are not touched.
|
||||
- Range: 0 - 9. 0% to 45% reduction.
|
||||
|
||||
[C]: BW Increase. T210B01/LPDDR4x only. RAM Temperature limited timings.
|
||||
Can cause significant ram data corruption if ram temperature exceeds max.
|
||||
Reason is not allowed on T210 and LPDDR4.
|
||||
- 0/1/2/3/4: for max 85/75/65/55/45 oC
|
||||
|
||||
RAM Temperature is only related to MEM/PLL sensors and not to Tdiode or Tboard.
|
||||
45oC is 50/51 oC MEM/PLL (around 43 oC Tdiode, depends on temp equilibrium).
|
||||
65oC is 68/69 oC MEM/PLL (around 60 oC Tdiode, depends on temp equilibrium).
|
||||
|
||||
Full Examples:
|
||||
Old (no timing adjustments) OC equivalents:
|
||||
- 1862 Old OC: 15% -> [A1,B3,C0] - 1866031
|
||||
- 1996 Old OC: 25% -> [A2,B5,C0] - 2000052
|
||||
|
||||
T210 Examples:
|
||||
- 19968[00] -> 1996800: 1996 MHz with read/write base latency of 2133 MHz
|
||||
and proper 1996 MHz core timings.
|
||||
- 19968[00] -> 1996852: 1996 MHz with read/write base latency of 1600 MHz
|
||||
and reduced core timings by 25%.
|
||||
T210B01 Examples:
|
||||
- 2666[000] -> 2666000: 2666 MHz with read/write base latency of 2133 MHz
|
||||
and proper 2666 MHz core timings.
|
||||
- 2666[000] -> 2666252: 2666 MHz with read/write base latency of 1600 MHz,
|
||||
reduced core timings by 25% and up to 65C operation.
|
||||
|
||||
Again, do not use them if you want the ram running like Nvidia and RAM vendor
|
||||
made the tables, and write the frequency `as is` in that case.
|
||||
|
||||
|
||||
[ram_oc_vdd2=0]
|
||||
Changes VDDIO/VDDQ voltage for T210. VDDIO only for T210B01.
|
||||
Can stabilize timing reduction or if at frequency limit.
|
||||
Do not use for zero reason. Limits are fully safe (official Jedec).
|
||||
Range: 1100 - 1175. (Unit in mV).
|
||||
|
||||
[ram_oc_vddq=0]
|
||||
Changes VDDQ voltage for T210B01.
|
||||
Can stabilize timing reduction or if at frequency limit.
|
||||
Do not use for zero reason. Limits are fully safe (official Jedec).
|
||||
Range: 600 - 650. (Unit in mV).
|
||||
|
||||
================================================================================
|
||||
|
@ -1,8 +1,9 @@
|
||||
# Set defaults env variables if they do not exist.
|
||||
setenv boot_dir @DISTRO_PATH@
|
||||
test -n ${id} || setenv id @DISTRO_ID@
|
||||
test -n ${fbconsole} || setenv fbconsole 1
|
||||
test -n ${fbconsole} || setenv fbconsole 9
|
||||
test -n ${uart_port} || setenv uart_port 0
|
||||
test -n ${earlycon} || setenv earlycon 0
|
||||
test -n ${r2p_action} || setenv r2p_action self
|
||||
test -n ${autoboot} || setenv autoboot 0
|
||||
test -n ${autoboot_list} || setenv autoboot_list 0
|
||||
@ -10,15 +11,57 @@ test -n ${als_enable} || setenv als_enable 1
|
||||
test -n ${usb3_enable} || setenv usb3_enable 0
|
||||
test -n ${4k60_disable} || setenv 4k60_disable 0
|
||||
test -n ${dvfsb} || setenv dvfsb 0
|
||||
test -n ${gpu_dvfsc} || setenv gpu_dvfsc 0
|
||||
test -n ${limit_gpu_clk} || setenv limit_gpu_clk 0
|
||||
test -n ${jc_rail_disable} || setenv jc_rail_disable 0
|
||||
test -n ${cec_enable} || setenv cec_enable 0
|
||||
test -n ${performance_mode} || setenv performance_mode 0
|
||||
test -n ${dock_freq_switch_enabled} || setenv dock_freq_switch_enabled 0
|
||||
test -n ${touch_skip_tuning} || setenv touch_skip_tuning 0
|
||||
test -n ${wifi_disable_vht80} || setenv wifi_disable_vht80 0
|
||||
|
||||
# Built-in IMU.
|
||||
test -n ${acc_cal_off_x} || setenv acc_cal_off_x 0x0
|
||||
test -n ${acc_cal_off_y} || setenv acc_cal_off_y 0x0
|
||||
test -n ${acc_cal_off_z} || setenv acc_cal_off_z 0x0
|
||||
test -n ${acc_cal_scl_x} || setenv acc_cal_scl_x 0x0
|
||||
test -n ${acc_cal_scl_y} || setenv acc_cal_scl_y 0x0
|
||||
test -n ${acc_cal_scl_z} || setenv acc_cal_scl_z 0x0
|
||||
test -n ${gyr_cal_off_x} || setenv gyr_cal_off_x 0x0
|
||||
test -n ${gyr_cal_off_y} || setenv gyr_cal_off_y 0x0
|
||||
test -n ${gyr_cal_off_z} || setenv gyr_cal_off_z 0x0
|
||||
test -n ${gyr_cal_scl_x} || setenv gyr_cal_scl_x 0x0
|
||||
test -n ${gyr_cal_scl_y} || setenv gyr_cal_scl_y 0x0
|
||||
test -n ${gyr_cal_scl_z} || setenv gyr_cal_scl_z 0x0
|
||||
|
||||
# Lite Gamepad analog sticks calibration.
|
||||
test -n ${lite_cal_lx_lof} || setenv lite_cal_lx_lof 0x0
|
||||
test -n ${lite_cal_lx_cnt} || setenv lite_cal_lx_cnt 0x0
|
||||
test -n ${lite_cal_lx_rof} || setenv lite_cal_lx_rof 0x0
|
||||
test -n ${lite_cal_ly_dof} || setenv lite_cal_ly_dof 0x0
|
||||
test -n ${lite_cal_ly_cnt} || setenv lite_cal_ly_cnt 0x0
|
||||
test -n ${lite_cal_ly_uof} || setenv lite_cal_ly_uof 0x0
|
||||
|
||||
test -n ${lite_cal_rx_lof} || setenv lite_cal_rx_lof 0x0
|
||||
test -n ${lite_cal_rx_cnt} || setenv lite_cal_rx_cnt 0x0
|
||||
test -n ${lite_cal_rx_rof} || setenv lite_cal_rx_rof 0x0
|
||||
test -n ${lite_cal_ry_dof} || setenv lite_cal_ry_dof 0x0
|
||||
test -n ${lite_cal_ry_cnt} || setenv lite_cal_ry_cnt 0x0
|
||||
test -n ${lite_cal_ry_uof} || setenv lite_cal_ry_uof 0x0
|
||||
|
||||
test -n ${lite_cal_lx_coff} || setenv lite_cal_lx_coff 0x0
|
||||
test -n ${lite_cal_ly_coff} || setenv lite_cal_ly_coff 0xFFFFFF00
|
||||
test -n ${lite_cal_rx_coff} || setenv lite_cal_rx_coff 0xFFFFFF00
|
||||
test -n ${lite_cal_ry_coff} || setenv lite_cal_ry_coff 0x0
|
||||
|
||||
# Set logging params for each serial type.
|
||||
setenv uarta "no_console_suspend console=ttyS0,115200,8n1 loglevel=8"
|
||||
setenv uartb "no_console_suspend console=ttyS1,115200,8n1 loglevel=8"
|
||||
setenv uartc "no_console_suspend console=ttyS2,115200,8n1 loglevel=8"
|
||||
setenv usblg "console=ttyGS0,115200,8n1 loglevel=8"
|
||||
setenv usblg "usb_logging loglevel=8"
|
||||
setenv uarta_early "earlycon=uart,mmio32,0x70006000"
|
||||
setenv uartb_early "earlycon=uart,mmio32,0x70006040"
|
||||
setenv uartc_early "earlycon=uart,mmio32,0x70006200"
|
||||
|
||||
# Default read addresses.
|
||||
# fdt_addr_r 0x8d000000
|
||||
@ -32,13 +75,14 @@ setenv fdtrload 0xA8000000
|
||||
setenv fdtraddr 0x8d000000
|
||||
|
||||
# Set temp addresses.
|
||||
setenv enviraddr 0x8d100000
|
||||
setenv fdtovaddr 0x8d200000
|
||||
|
||||
|
||||
# Set SoC info.
|
||||
if test ${t210b01} = 1; then setenv plat_info T210B01; else setenv plat_info T210; fi
|
||||
|
||||
# Set SKU info.
|
||||
# Set SKU info. Frig is used instead of Fric for compatibility reasons.
|
||||
if test ${sku} = 0; then setenv sku_info ODIN; setenv sku_rev 0
|
||||
elif test ${sku} = 1; then setenv sku_info ODIN; setenv sku_rev b01
|
||||
elif test ${sku} = 2; then setenv sku_info VALI; setenv sku_rev 0
|
||||
@ -72,34 +116,100 @@ fdt resize 16384
|
||||
|
||||
# Sanity checks for dtb info.
|
||||
if test ${sku_info} != ${fdt_id_text} -o ${sku_rev} != ${fdt_rev}; then
|
||||
echoe Device Tree loaded (SKU: ${fdt_id_text}, Rev: ${fdt_rev}) not correct!
|
||||
echoe Device Tree loaded not correct! (SKU: ${fdt_id_text}, Rev: ${fdt_rev})
|
||||
echoe Expected SKU: ${sku_info}, Rev: ${sku_rev}
|
||||
echoe Rebooting in 10s..; sleep 10; reset
|
||||
fi
|
||||
|
||||
# Add additional bootargs for UART Logging.
|
||||
if test ${uart_port} = 1; then
|
||||
setenv bootargs_extra ${bootargs_extra} ${uarta}; echoe UART-A logging enabled
|
||||
echoe UART-A logging enabled
|
||||
setenv bootargs_extra ${bootargs_extra} ${uarta}
|
||||
fdt set /serial@70006000 compatible nvidia,tegra20-uart
|
||||
fdt set /serial@70006000 status okay
|
||||
|
||||
if test ${earlycon} = 1; then
|
||||
echoe Early logging enabled
|
||||
setenv bootargs_extra ${bootargs_extra} ${uarta_early}
|
||||
fdt set /serial@70006000 reset-names noreset
|
||||
fi
|
||||
elif test ${uart_port} = 2; then
|
||||
setenv bootargs_extra ${bootargs_extra} ${uartb}; echoe UART-B logging enabled
|
||||
echoe UART-B logging enabled
|
||||
setenv bootargs_extra ${bootargs_extra} ${uartb}
|
||||
fdt set /serial@70006040 compatible nvidia,tegra20-uart
|
||||
fdt set /serial@70006040/joyconr status disabled
|
||||
|
||||
if test ${earlycon} = 1; then
|
||||
echoe Early logging enabled
|
||||
setenv bootargs_extra ${bootargs_extra} ${uartb_early}
|
||||
fdt set /serial@70006040 reset-names noreset
|
||||
fi
|
||||
elif test ${uart_port} = 3; then
|
||||
setenv bootargs_extra ${bootargs_extra} ${uartc}; echoe UART-C logging enabled
|
||||
echoe UART-C logging enabled
|
||||
setenv bootargs_extra ${bootargs_extra} ${uartc}
|
||||
fdt set /serial@70006200 compatible nvidia,tegra20-uart
|
||||
fdt set /serial@70006200/joyconl status disabled
|
||||
elif test ${uart_port} = 4; then
|
||||
|
||||
if test ${earlycon} = 1; then
|
||||
echoe Early logging enabled
|
||||
setenv bootargs_extra ${bootargs_extra} ${uartc_early}
|
||||
fdt set /serial@70006200 reset-names noreset
|
||||
fi
|
||||
fi
|
||||
|
||||
# Add additional bootargs for Serial USB.
|
||||
if test ${uart_port} = 4; then
|
||||
setenv bootargs_extra ${usblg} ${bootargs_extra}; echoe USB Serial logging enabled
|
||||
fi
|
||||
|
||||
# Disable Joycon Rails.
|
||||
if test ${jc_rail_disable} = 1; then
|
||||
echoe Joycon Rails disabled
|
||||
fdt set /serial@70006040 status disabled
|
||||
fdt set /serial@70006040/joyconr status disabled
|
||||
fdt set /serial@70006200 status disabled
|
||||
fdt set /serial@70006200/joyconl status disabled
|
||||
fi
|
||||
|
||||
# Disable Touch panel tuning.
|
||||
if test ${touch_skip_tuning} = 1; then
|
||||
setenv bootargs_extra ${bootargs_extra} "ftm4.skip_tuning=1"
|
||||
fi
|
||||
|
||||
# Check if SD is initialized in 1-bit mode.
|
||||
if test "${sd_1bit}" = 1; then
|
||||
echoe SD Card is initialized in 1-bit mode!
|
||||
fdt set /sdhci@700b0000 bus-width <0x1>
|
||||
fdt set /sdhci@700b0000 uhs-mask <0x7F>
|
||||
fi
|
||||
|
||||
# Enable ALS sensor.
|
||||
if test ${als_enable} = 1; then
|
||||
echo ALS sensor enabled
|
||||
fdt set /i2c@7000c400/bh1730fvc@29 status okay
|
||||
fi
|
||||
|
||||
# Disable WiFi VHT80 bonding.
|
||||
if test ${wifi_disable_vht80} = 1; then
|
||||
echo WiFi VHT80 bonding disabled
|
||||
setenv bootargs_extra ${bootargs_extra} "brcmfmac.vht_mask=12"
|
||||
fi
|
||||
|
||||
# Set Sio calibration data.
|
||||
if test ${sku} = 2; then
|
||||
if load mmc ${devnum}:${distro_bootpart} ${enviraddr} /switchroot/switch.cal; then
|
||||
env import -t -r ${enviraddr} ${filesize}
|
||||
echo Sio Calibration set
|
||||
fdt set /serial@70006200/sio sio-stick-cal-l <$lite_cal_lx_lof $lite_cal_lx_cnt $lite_cal_lx_rof $lite_cal_ly_dof $lite_cal_ly_cnt $lite_cal_ly_uof>
|
||||
fdt set /serial@70006200/sio sio-stick-cal-r <$lite_cal_rx_lof $lite_cal_rx_cnt $lite_cal_rx_rof $lite_cal_ry_dof $lite_cal_ry_cnt $lite_cal_ry_uof>
|
||||
fdt set /serial@70006200/sio sio-acc-cal <$acc_cal_off_x $acc_cal_off_y $acc_cal_off_z $acc_cal_scl_x $acc_cal_scl_y $acc_cal_scl_z>
|
||||
fdt set /serial@70006200/sio sio-gyr-cal <$gyr_cal_off_x $gyr_cal_off_y $gyr_cal_off_z $gyr_cal_scl_x $gyr_cal_scl_y $gyr_cal_scl_z>
|
||||
|
||||
fdt set /serial@70006200/sio sio-stick-cnt-off-l <$lite_cal_lx_coff $lite_cal_ly_coff>
|
||||
fdt set /serial@70006200/sio sio-stick-cnt-off-r <$lite_cal_rx_coff $lite_cal_ry_coff>
|
||||
fi
|
||||
fi
|
||||
|
||||
# Get display panel handle.
|
||||
if test ${display_id} = f20; then echo Display is INN 6.2; fdt get value DHANDLE /host1x/dsi/panel-i-720p-6-2 phandle
|
||||
elif test ${display_id} = f30; then echo Display is AUO 6.2; fdt get value DHANDLE /host1x/dsi/panel-a-720p-6-2 phandle
|
||||
@ -111,7 +221,7 @@ elif test ${display_id} = 2050; then echo Display is SAM 7.0
|
||||
else echoe Unknown Display ID: ${display_id}!; fi
|
||||
|
||||
# Set new active display panel handle.
|
||||
if test -n ${DHANDLE} -a ${sku} != 3; then echo Setting Display panel; fdt set /host1x/dsi nvidia,active-panel <$DHANDLE>; fi
|
||||
if test -n "${DHANDLE}" -a ${sku} != 3; then echo Setting Display panel; fdt set /host1x/dsi nvidia,active-panel <$DHANDLE>; fi
|
||||
|
||||
# Disable USB3.
|
||||
if test ${usb3_enable} = 0; then
|
||||
@ -128,38 +238,88 @@ else
|
||||
echoe USB3 enabled
|
||||
fi
|
||||
|
||||
# Disable 4 DP lanes on Frig.
|
||||
# Disable 4 DP lanes (4K@60) on Fric.
|
||||
if test ${sku} = 3 -a ${4k60_disable} = 1 -a ${usb3_enable} != 0; then
|
||||
echoe 4K60 disabled
|
||||
fdt set /i2c@7000c000/bm92t@18 rohm,dp-lanes <2>
|
||||
fi
|
||||
|
||||
# Check if SD is initialized in 1-bit mode.
|
||||
if test "${sd_1bit}" = 1; then
|
||||
echoe SD Card is initialized in 1-bit mode!
|
||||
fdt set /sdhci@700b0000 bus-width <0x1>
|
||||
fdt set /sdhci@700b0000 uhs-mask <0x7F>
|
||||
fi
|
||||
|
||||
# Set battery voltage limit via cell age for Vali.
|
||||
if test ${sku} = 2 -a -n "${VLIM}"; then
|
||||
echo VALI: voltage limits [${VLIM}, ${SOCLIM}]
|
||||
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-voltage-limit-millivolt <0x$VLIM>
|
||||
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-thermal-voltage-limit <0x$VLIM 0x$VLIM 0x$VLIM 0xFF0>
|
||||
fdt set /i2c@7000c000/battery-gauge@36 maxim,kernel-maximum-soc <0x$SOCLIM>
|
||||
if test "${VLIM}" != 1070; then
|
||||
# Newer Vali. 4320 mV / 1664 mA.
|
||||
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-voltage-limit-millivolt <0x$VLIM>
|
||||
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-thermal-voltage-limit <0x$VLIM 0x$VLIM 0x$VLIM 0xFF0>
|
||||
fdt set /i2c@7000c000/battery-gauge@36 maxim,kernel-maximum-soc <0x$SOCLIM>
|
||||
else
|
||||
# Old Vali. 4208 mV / 1536 mA. (Unreleased?)
|
||||
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-voltage-limit-millivolt <0x1070>
|
||||
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-thermal-voltage-limit <0x1070 0x1070 0x1070 0xF70>
|
||||
fdt set /i2c@7000c000/battery-charger@6b/charger ti,fast-charge-current-limit-milliamp <0x600>
|
||||
fdt set /i2c@7000c000/battery-charger@6b/charger ti,charge-current-limit <0x200 0x240 0x600 0x600>
|
||||
fi
|
||||
fi
|
||||
|
||||
# Enable SLT DVFS.
|
||||
if test ${dvfsb} = 1; then
|
||||
echoe SLT DVFS B enabled
|
||||
setenv bootargs_extra ${bootargs_extra} "speedo_tegra210.cspd_id=2 speedo_tegra210.cspd_id=2 speedo_tegra210.gspd_id=2"
|
||||
# Enable DVFS B-Side.
|
||||
if test ${t210b01} = 1 -a ${dvfsb} = 1; then
|
||||
echoe DVFS B-Side enabled
|
||||
setenv bootargs_extra ${bootargs_extra} "speedo_tegra210.sku_id=0x83 speedo_tegra210.cspd_id=2 speedo_tegra210.sspd_id=2"
|
||||
fdt set /cpufreq/cpu-scaling-data max-frequency <0x249348>
|
||||
|
||||
if test ${gpu_dvfsc} != 1; then
|
||||
setenv bootargs_extra ${bootargs_extra} "speedo_tegra210.gspd_id=2"
|
||||
fi
|
||||
|
||||
if test ${sku} = 2; then
|
||||
# 2091 MHz CPU and 844 MHz GPU hard limit. Vali.
|
||||
fdt set /cpufreq/cpu-scaling-data max-frequency <0x1FE7F8>
|
||||
fdt set /dvfs nvidia,gpu-max-freq-khz <0xCE400>
|
||||
fi
|
||||
fi
|
||||
|
||||
# Enable GPU DVFS C-Side.
|
||||
if test ${t210b01} = 1 -a ${gpu_dvfsc} = 1; then
|
||||
echoe DVFS C-Side GPU enabled
|
||||
|
||||
if test ${dvfsb} != 1; then
|
||||
setenv bootargs_extra ${bootargs_extra} "speedo_tegra210.sku_id=0x83 speedo_tegra210.gspd_id=3"
|
||||
else
|
||||
setenv bootargs_extra ${bootargs_extra} "speedo_tegra210.gspd_id=3"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Limit GPU clock.
|
||||
if test ${t210b01} = 1 -a ${limit_gpu_clk} = 1; then
|
||||
|
||||
if test ${sku} != 2; then
|
||||
# If not Vali set GPU hard limit to 1075 MHz.
|
||||
echoe GPU clock limit enabled
|
||||
fdt set /dvfs nvidia,gpu-max-freq-khz <0x106800>
|
||||
fi
|
||||
fi
|
||||
|
||||
# Set pmic type if special (devboard).
|
||||
if test ${t210b01} = 1 -a -n "${pmic_type}" -a ${pmic_type} = 1; then
|
||||
echoe GPU 15A Regulator enabled
|
||||
fdt set /i2c@7000d000/max77812@33 reg <0x31>
|
||||
fdt set /i2c@7000d000/max77812@33/m3vout status disabled
|
||||
fdt set /i2c@7000d000/fan53528@52 status okay
|
||||
fdt set /dvfs nvidia,gpu-max-volt-mv <0x3B6>
|
||||
fi
|
||||
|
||||
# Check if ptsa rework is done.
|
||||
if test ${t210b01} = 1 -a "${loader_rev}" > 1; then
|
||||
echo PTSA rework done
|
||||
setenv bootargs_extra ${bootargs_extra} "latency_allowance.ptsa_rework"
|
||||
fi
|
||||
|
||||
|
||||
# Set serial number.
|
||||
if test -n ${device_serial}; then fdt set / serial-number ${device_serial}; fi
|
||||
|
||||
host_mac_addr=0xff
|
||||
|
||||
# load mac address info file
|
||||
if fatload mmc 1:1 0x90000000 switchroot/joycon_mac.bin; then
|
||||
if itest.b *0x90000000 == 0x01; then
|
||||
@ -173,53 +333,40 @@ if fatload mmc 1:1 0x90000000 switchroot/joycon_mac.bin; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if itest $host_mac_addr == 0xff; then
|
||||
# no joy con is available
|
||||
if itest $host_mac_addr != 0xff; then
|
||||
bt_mac=""
|
||||
sep=""
|
||||
for i in 0 1 2 3 4 5 ; do
|
||||
setexpr x $host_mac_addr + $i
|
||||
setexpr.b b *$x
|
||||
if itest $b <= f; then
|
||||
# There is no way to have leading zeros, so do this hack
|
||||
bt_mac="$bt_mac${sep}0$b"
|
||||
else
|
||||
bt_mac="$bt_mac$sep$b"
|
||||
fi
|
||||
sep=":"
|
||||
done
|
||||
|
||||
# write to a known good location
|
||||
mw.q 0x90000000 ${serial#} 1
|
||||
|
||||
# write crc32 of value at offset 0x3
|
||||
crc32 0x90000000 8 0x90000003
|
||||
|
||||
# write nintendo prefix
|
||||
mw.b 0x90000000 0x98 1
|
||||
mw.b 0x90000001 0xE8 1
|
||||
mw.b 0x90000002 0xFA 1
|
||||
|
||||
# use this to generate mac
|
||||
host_mac_addr=0x90000000
|
||||
# Set host bt mac.
|
||||
if test -n ${bt_mac}; then fdt set /chosen nvidia,bluetooth-mac ${bt_mac}; fi
|
||||
else
|
||||
# Set host bt mac.
|
||||
if test -n ${device_bt_mac}; then fdt set /chosen nvidia,bluetooth-mac ${device_bt_mac}; fi
|
||||
fi
|
||||
|
||||
bt_mac=""
|
||||
sep=""
|
||||
for i in 0 1 2 3 4 5 ; do
|
||||
setexpr x $host_mac_addr + $i
|
||||
setexpr.b b *$x
|
||||
if itest $b <= f; then
|
||||
# There is no way to have leading zeros, so do this hack
|
||||
bt_mac="$bt_mac${sep}0$b"
|
||||
else
|
||||
bt_mac="$bt_mac$sep$b"
|
||||
fi
|
||||
sep=":"
|
||||
done
|
||||
|
||||
# Set default bt mac. initramfs will/can change it.
|
||||
if test -n ${bt_mac}; then fdt set /chosen nvidia,bluetooth-mac ${bt_mac}; fi
|
||||
|
||||
# Set default wifi mac. initramfs will/can change it.
|
||||
if test -n ${device_wifi_mac}; then fdt set /chosen nvidia,wifi-mac ${device_wifi_mac}; fi
|
||||
|
||||
|
||||
# Set kernel cdmline.
|
||||
setenv bootargs ${bootargs_extra} "boot=/dev/mmcblk0p1 BOOT_IMAGE=@DISTRO_PATH@/KERNEL SYSTEM_IMAGE=@DISTRO_PATH@/SYSTEM nofsck fat32-boot cec_enabled=${cec_enable} \
|
||||
# Set kernel cmdline.
|
||||
setenv bootargs ${bootargs_extra} "boot=/dev/mmcblk0p1 BOOT_IMAGE=@DISTRO_PATH@/KERNEL SYSTEM_IMAGE=@DISTRO_PATH@/SYSTEM nofsck fat32-boot \
|
||||
dock_freq_switch_enabled=${dock_freq_switch_enabled} performance_mode=${performance_mode} \
|
||||
firmware_class.path=/usr/lib/firmware \
|
||||
firmware_class.path=/usr/lib/firmware access=m2 \
|
||||
pmc_r2p.enabled=1 pmc_r2p.action=${r2p_action} \
|
||||
pmc_r2p.param1=${autoboot} pmc_r2p.param2=${autoboot_list} \
|
||||
nvdec_enabled=0 tegra_fbmem=0x400000@0xf5a00000 access=m2 \
|
||||
consoleblank=0 fbcon=map:${fbconsole} "
|
||||
fbcon=map:${fbconsole} consoleblank=0 \
|
||||
nvdec_enabled=0 tegra_fbmem=0x400000@0xf5a00000 "
|
||||
|
||||
# Boot kernel.
|
||||
echo Launching Kernel!
|
||||
|
@ -1,25 +1,9 @@
|
||||
PKG_NAME="switch-bootloader"
|
||||
PKG_VERSION="2.1"
|
||||
PKG_VERSION="2.8"
|
||||
PKG_ARCH="any"
|
||||
PKG_DEPENDS_TARGET="switch-u-boot:host switch-u-boot:target switch-atf:target"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
|
||||
|
||||
if [ "${DISTRO}" = "Lakka" ]; then
|
||||
DISTRO_PATH="lakka"
|
||||
DISTRO_ICON="icon_lakka_hue.bmp"
|
||||
HEKATE_SPLASH="splash_lakka.bmp"
|
||||
ID="SWR-LAK"
|
||||
elif [ "${DISTRO}" = "LibreELEC" ]; then
|
||||
DISTRO_PATH="libreelec"
|
||||
DISTRO_ICON="icon_libreelec_hue.bmp"
|
||||
HEKATE_SPLASH="splash_libreelec.bmp"
|
||||
ID="SWR-LIB"
|
||||
else
|
||||
echo "Unknown distro, expect issues"
|
||||
fi
|
||||
|
||||
|
||||
make_target() {
|
||||
cat << EOF > ${PKG_BUILD}/${DISTRO}.ini
|
||||
[${DISTRO}]
|
||||
@ -60,7 +44,7 @@ makeinstall_target() {
|
||||
[ -f "\${BOOT_ROOT}/${DISTRO_PATH}/uenv.txt" ] && rm \${BOOT_ROOT}/${DISTRO_PATH}/uenv.txt
|
||||
[ -f "\${BOOT_ROOT}/${DISTRO_PATH}/tegra210-icosa.dtb" ] && rm \${BOOT_ROOT}/${DISTRO_PATH}/tegra210-icosa.dtb
|
||||
[ -f "\${BOOT_ROOT}/${DISTRO_PATH}/uartb_logging.dtbo" ] && rm \${BOOT_ROOT}/${DISTRO_PATH}/uartb_logging.dtbo
|
||||
[ -f "\${BOOT_ROOT}/bootloader/ini/${DISTRO}.ini" ] && rm \${BOOT_ROOT}/bootloader/ini/${DISTRO}.ini
|
||||
[ -f "\${BOOT_ROOT}/bootloader/ini/${DISTRO}.ini" ] && grep "l4t=1" "\${BOOT_ROOT}/bootloader/ini/${DISTRO}.ini" && [ $? = "1" ] && rm \${BOOT_ROOT}/bootloader/ini/${DISTRO}.ini
|
||||
[ -f "\${BOOT_ROOT}/${DISTRO_PATH}/nx-plat.dtimg" ] && rm \${BOOT_ROOT}/${DISTRO_PATH}/nx-plat.dtimg
|
||||
[ -f "\${BOOT_ROOT}/${DISTRO_PATH}/boot/boot.scr" ] && rm \${BOOT_ROOT}/${DISTRO_PATH}/boot/boot.scr
|
||||
[ -f "\${BOOT_ROOT}/${DISTRO_PATH}/boot/bl31.bin" ] && rm \${BOOT_ROOT}/${DISTRO_PATH}/boot/bl31.bin
|
||||
@ -70,12 +54,13 @@ makeinstall_target() {
|
||||
[ -f "\${BOOT_ROOT}/${DISTRO_PATH}/splash.bmp" ] && rm \${BOOT_ROOT}/${DISTRO_PATH}/splash.bmp
|
||||
[ -f "\${BOOT_ROOT}/${DISTRO_PATH}/README_CONFIG.txt" ] && rm \${BOOT_ROOT}/${DISTRO_PATH}/README_CONFIG.txt
|
||||
mkdir -p \${BOOT_ROOT}/${DISTRO_PATH}/boot
|
||||
[ -f "\${BOOT_ROOT}/${DISTRO_PATH}/storage/.config/retroarch/retroarch.cfg" ] && sed -i -e 's|input_player1_joypad_index = "2"|input_player1_joypad_index = "0"|' \${BOOT_ROOT}/${DISTRO_PATH}/storage/.config/retroarch/retroarch.cfg
|
||||
cp \${SYSTEM_ROOT}/usr/share/bootloader/boot/nx-plat.dtimg \${BOOT_ROOT}/${DISTRO_PATH}/
|
||||
cp \${SYSTEM_ROOT}/usr/share/bootloader/boot/README_CONFIG.txt \${BOOT_ROOT}/${DISTRO_PATH}/
|
||||
cp \${SYSTEM_ROOT}/usr/share/bootloader/boot/boot.scr \${BOOT_ROOT}/${DISTRO_PATH}/boot/
|
||||
cp \${SYSTEM_ROOT}/usr/share/bootloader/boot/bl31.bin \${BOOT_ROOT}/${DISTRO_PATH}/boot/
|
||||
cp \${SYSTEM_ROOT}/usr/share/bootloader/boot/bl33.bin \${BOOT_ROOT}/${DISTRO_PATH}/boot/
|
||||
cp \${SYSTEM_ROOT}/usr/share/bootloader/boot/${DISTRO}.ini \${BOOT_ROOT}/bootloader/ini/${DISTRO}.ini
|
||||
[ ! -f "\${BOOT_ROOT}/bootloader/ini/${DISTRO}.ini" ] && cp \${SYSTEM_ROOT}/usr/share/bootloader/boot/${DISTRO}.ini \${BOOT_ROOT}/bootloader/ini/${DISTRO}.ini
|
||||
cp \${SYSTEM_ROOT}/usr/share/bootloader/boot/splash.bmp \${BOOT_ROOT}/${DISTRO_PATH}/boot/
|
||||
cp \${SYSTEM_ROOT}/usr/share/bootloader/boot/${DISTRO_ICON} \${BOOT_ROOT}/${DISTRO_PATH}/boot/
|
||||
EOF
|
||||
|
@ -0,0 +1,6 @@
|
||||
alias hid:b0005g*v0000045Ep000002E0 hid_xpadneo
|
||||
alias hid:b0005g*v0000045Ep000002FD hid_xpadneo
|
||||
alias hid:b0005g*v0000045Ep00000B05 hid_xpadneo
|
||||
alias hid:b0005g*v0000045Ep00000B13 hid_xpadneo
|
||||
alias hid:b0005g*v0000045Ep00000B20 hid_xpadneo
|
||||
alias hid:b0005g*v0000045Ep00000B22 hid_xpadneo
|
30
projects/L4T/devices/Switch/packages/switch-bsp/package.mk
Executable file
30
projects/L4T/devices/Switch/packages/switch-bsp/package.mk
Executable file
@ -0,0 +1,30 @@
|
||||
PKG_NAME="switch-bsp"
|
||||
PKG_VERSION="1.2"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_DEPENDS_TARGET="joycond rewritefs xdotool alsa-lib alsa-ucm-conf usb-gadget-scripts"
|
||||
PKG_SECTION="virtual"
|
||||
PKG_LONGDESC="LibreELEC Nintendo Switch Board Support"
|
||||
|
||||
if [ ! "${DISTRO}" = "LibreELEC" ]; then
|
||||
PKG_DEPENDS_TARGET+=" mergerfs v4l-utils" # We use this for CEC in lakka, in libreELEC kodi handles that via libCEC.
|
||||
fi
|
||||
|
||||
post_install() {
|
||||
enable_service xorg-configure-switch.service
|
||||
enable_service var-bluetoothconfig.mount
|
||||
enable_service pair-joycon.service
|
||||
enable_service fix-permissions.service
|
||||
enable_service alsa-init.service
|
||||
|
||||
mkdir -p ${INSTALL}/usr/bin
|
||||
cp -Pv ${PKG_DIR}/scripts/pair-joycon.sh ${INSTALL}/usr/bin
|
||||
cp -Pv ${PKG_DIR}/scripts/dock-hotplug ${INSTALL}/usr/bin
|
||||
cp -pv ${PKG_DIR}/scripts/fix-sysfs-permissions.sh ${INSTALL}/usr/bin
|
||||
mkdir -p ${INSTALL}/usr/share/alsa/ucm2
|
||||
cp -Prv ${PKG_DIR}/ucm_data/* ${INSTALL}/usr/share/alsa/ucm2/
|
||||
|
||||
#Fix Script Permissions
|
||||
chmod +x ${INSTALL}/usr/bin/pair-joycon.sh
|
||||
chmod +x ${INSTALL}/usr/bin/dock-hotplug
|
||||
chmod +x ${INSTALL}/usr/bin/fix-sysfs-permissions.sh
|
||||
}
|
@ -22,7 +22,7 @@ dock_hotplug_handle() {
|
||||
do
|
||||
if [ ! -e "$x" ]; then continue; fi
|
||||
export DISPLAY=":${x#X}"
|
||||
PULSE_SERVER="127.0.0.1"
|
||||
export PULSE_SERVER="127.0.0.1"
|
||||
|
||||
if [[ "$1" -eq 1 ]]
|
||||
then
|
||||
@ -37,17 +37,6 @@ dock_hotplug_handle() {
|
||||
# Reapply config to avoid X stubbornness.
|
||||
sleep 0.2
|
||||
xrandr --output DSI-0 --off --output DP-0 $DP_SETTINGS
|
||||
|
||||
#AutoSwitch CPU/GPU profiles
|
||||
if [ ! "$(cat /proc/cmdline | grep dock_freq_switch_enabled=1)" = "" ]; then
|
||||
if [ "$(cpu-profile get)" = "Stock Performance" ]; then
|
||||
cpu-profile set "Maximum Performance"
|
||||
fi
|
||||
|
||||
if [ "$(gpu-profile get)" = "Handheld Stock Mode" ]; then
|
||||
gpu-profile set "Docked Stock Mode"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
xrandr --output DSI-0 --primary --mode 720x1280 --rotate left --panning 1280x720+0+0 --pos 0x0 --dpi 237 --output DP-0 --off
|
||||
pactl set-card-profile 1 HiFi
|
||||
@ -59,17 +48,7 @@ dock_hotplug_handle() {
|
||||
# Reapply config to avoid X stubbornness.
|
||||
sleep 0.2
|
||||
xrandr --output DP-0 --off --output DSI-0 --primary --mode 720x1280 --rotate left --panning 1280x720+0+0 --pos 0x0 --dpi 237
|
||||
#AutoSwitch CPU/GPU profiles
|
||||
if [ ! "$(cat /proc/cmdline | grep dock_freq_switch_enabled=1)" = "" ]; then
|
||||
if [ "$(cpu-profile get)" = "Maximum Performance" ]; then
|
||||
cpu-profile set "Stock Performance"
|
||||
fi
|
||||
|
||||
if [ "$(gpu-profile get)" = "Docked Stock Mode" ]; then
|
||||
gpu-profile set "Handheld Stock Mode"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# Wait for X to set current resolution.
|
||||
@ -90,10 +69,12 @@ if [[ "$1" -eq 1 ]]; then LOOPS=5; fi
|
||||
while [ "$i" -le "$LOOPS" ]; do
|
||||
if grep -q 1 "/sys/class/switch/dp/state"; then DP_ENABLED=1; else DP_ENABLED=0; fi
|
||||
|
||||
# Prepare CEC info.
|
||||
if [ ! "$(cat /proc/cmdline | grep cec_enabled=1)" = "" ]; then
|
||||
if [[ "$DP_ENABLED" -eq 0 ]]; then cec-ctl -C
|
||||
else cec-ctl -s -o NintendoSwitch --playback --active-source phys-addr="$(cec-ctl | sed -n 's/.*Physical Address.*: //p')"; fi
|
||||
# Prepare CEC info. ignore if libreelec, kodi will handle this.
|
||||
if [ "$(cat /etc/os-release | grep LibreELEC)" = "" ]; then
|
||||
if [ -f /tmp/.CEC ]; then
|
||||
if [[ "$DP_ENABLED" -eq 0 ]]; then cec-ctl -C
|
||||
else cec-ctl -s -o NintendoSwitch --playback --active-source phys-addr="$(cec-ctl | sed -n 's/.*Physical Address.*: //p')"; fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Configure dock
|
@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
#Allow all users to take advantage of changing Clock stuff, and setting R2P stuff.
|
||||
|
||||
#CPU
|
||||
/usr/bin/busybox chmod 766 /sys/kernel/tegra_cpufreq/overclock
|
||||
/usr/bin/busybox chmod 766 /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
|
||||
/usr/bin/busybox chmod 766 /sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq
|
||||
/usr/bin/busybox chmod 766 /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
|
||||
|
||||
#GPU
|
||||
/usr/bin/busybox chmod 766 /sys/devices/57000000.gpu/devfreq/57000000.gpu/governor
|
||||
/usr/bin/busybox chmod 766 /sys/devices/57000000.gpu/devfreq/57000000.gpu/max_freq
|
||||
/usr/bin/busybox chmod 766 /sys/devices/57000000.gpu/devfreq/57000000.gpu/min_freq
|
||||
|
||||
#Bluetooth ERTM disable toggle
|
||||
/usr/bin/busybox chmod 766 /sys/module/bluetooth/parameters/disable_ertm
|
||||
|
||||
#R2P
|
||||
/usr/bin/busybox chmod 766 /sys/module/pmc_r2p/parameters/enabled
|
||||
/usr/bin/busybox chmod 766 /sys/module/pmc_r2p/parameters/action
|
||||
/usr/bin/busybox chmod 766 /sys/module/pmc_r2p/parameters/entry_id
|
||||
/usr/bin/busybox chmod 766 /sys/module/pmc_r2p/parameters/param1
|
||||
/usr/bin/busybox chmod 766 /sys/module/pmc_r2p/parameters/param2
|
||||
|
||||
#Brightness
|
||||
/usr/bin/busybox chmod 766 /sys/class/backlight/backlight/brightness
|
216
projects/L4T/devices/Switch/packages/switch-bsp/scripts/pair-joycon.sh
Executable file
216
projects/L4T/devices/Switch/packages/switch-bsp/scripts/pair-joycon.sh
Executable file
@ -0,0 +1,216 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -f /flash/switchroot/joycon_mac.ini ]]; then
|
||||
# Collect joycon_00 info from ini
|
||||
JOYCON_00_TYPE=$(sed -nr "/^\[joycon_00\]/ { :l /^type[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n" )
|
||||
JOYCON_00_MAC=$(sed -nr "/^\[joycon_00\]/ { :l /^mac[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
JOYCON_00_HOST_MAC=$(sed -nr "/^\[joycon_00\]/ { :l /^host[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
JOYCON_00_LTK=$(sed -nr "/^\[joycon_00\]/ { :l /^ltk[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
if [[ -z ${JOYCON_00_TYPE} ]]; then
|
||||
JOYCON_00_TYPE="0"
|
||||
fi
|
||||
|
||||
# collect joycon_01 info from ini
|
||||
JOYCON_01_TYPE=$(sed -nr "/^\[joycon_01\]/ { :l /^type[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
JOYCON_01_MAC=$(sed -nr "/^\[joycon_01\]/ { :l /^mac[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
JOYCON_01_HOST_MAC=$(sed -nr "/^\[joycon_01\]/ { :l /^host[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
JOYCON_01_LTK=$(sed -nr "/^\[joycon_01\]/ { :l /^ltk[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
if [[ -z ${JOYCON_01_TYPE} ]]; then
|
||||
JOYCON_01_TYPE="0"
|
||||
fi
|
||||
|
||||
# Collect joycon_02 info from ini
|
||||
JOYCON_02_TYPE=$(sed -nr "/^\[joycon_02\]/ { :l /^type[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
JOYCON_02_MAC=$(sed -nr "/^\[joycon_02\]/ { :l /^mac[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
JOYCON_02_HOST_MAC=$(sed -nr "/^\[joycon_02\]/ { :l /^host[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
JOYCON_02_LTK=$(sed -nr "/^\[joycon_02\]/ { :l /^ltk[ ]*=/ { s/.*=[ ]*//; p; q;}; n; b l;}" /flash/switchroot/joycon_mac.ini | tr -d "\\r\\n")
|
||||
if [[ -z ${JOYCON_02_TYPE} ]]; then
|
||||
JOYCON_02_TYPE="0"
|
||||
fi
|
||||
|
||||
# Handle Host BT MAC. Agnostically.
|
||||
if [[ ! ${JOYCON_00_TYPE} == "0" ]]; then
|
||||
BT_MAC_ADDR=${JOYCON_00_HOST_MAC}
|
||||
elif [[ ! ${JOYCON_01_TYPE} == "0" ]]; then
|
||||
BT_MAC_ADDR=${JOYCON_01_HOST_MAC}
|
||||
fi
|
||||
# Handle Joycon Pair data.
|
||||
if [[ ${JOYCON_00_TYPE} == "1" ]]; then
|
||||
BT_DEV_00_NAME="Joy-Con (L)"
|
||||
BT_DEV_00_ID=8198
|
||||
BT_DEV_00_SERVICE_RECORDS="0x00000000=356E0900000A000000000900013503191000090004350D350619010009000135031900010900053503191002090006350909656E09006A090100090009350835061901000901000901002510576972656C6573732047616D65706164090101250747616D657061640902003503090100
|
||||
0x00010000=36017D0900000A000100000900013503191124090004350D350619010009001135031900110900053503191002090006350909656E09006A0901000900093508350619112409010109000D350F350D350619010009001335031900110901002510576972656C6573732047616D65706164090101250747616D6570616409010225084E696E74656E646F090201090111090202080809020308210902042801090205280109020635B035AE082225AA05010905A1010601FF8521092175089530810285300930750895308102853109317508966901810285320932750896690181028533093375089669018102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C009020735083506090409090100090209280109020A280109020C090C8009020D280009020E2800
|
||||
0x00010001=358C0900000A000100010900013503191200090004350D35061901000900013503190001090006350909656E09006A09010009000935083506191200090100090100251B576972656C6573732047616D6570616420506E5020536572766572090101250747616D6570616409020009010309020109057E0902020920060902030900010902042801090205090002"
|
||||
elif [[ ${JOYCON_00_TYPE} == "2" ]]; then
|
||||
BT_DEV_00_NAME="Joy-Con (R)"
|
||||
BT_DEV_00_ID=8199
|
||||
BT_DEV_00_SERVICE_RECORDS="0x00000000=356E0900000A000000000900013503191000090004350D350619010009000135031900010900053503191002090006350909656E09006A090100090009350835061901000901000901002510576972656C6573732047616D65706164090101250747616D657061640902003503090100
|
||||
0x00010000=36017D0900000A000100000900013503191124090004350D350619010009001135031900110900053503191002090006350909656E09006A0901000900093508350619112409010109000D350F350D350619010009001335031900110901002510576972656C6573732047616D65706164090101250747616D6570616409010225084E696E74656E646F090201090111090202080809020308210902042801090205280109020635B035AE082225AA05010905A1010601FF8521092175089530810285300930750895308102853109317508966901810285320932750896690181028533093375089669018102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C009020735083506090409090100090209280109020A280109020C090C8009020D280009020E2800
|
||||
0x00010001=358C0900000A000100010900013503191200090004350D35061901000900013503190001090006350909656E09006A09010009000935083506191200090100090100251B576972656C6573732047616D6570616420506E5020536572766572090101250747616D6570616409020009010309020109057E0902020920070902030900010902042801090205090002"
|
||||
elif [[ ${JOYCON_00_TYPE} == "3" ]]; then
|
||||
BT_DEV_01_NAME="Pro Controller"
|
||||
BT_DEV_01_ID=8201
|
||||
BT_DEV_01_SERVICE_RECORDS="0x00000000=356E0900000A000000000900013503191000090004350D350619010009000135031900010900053503191002090006350909656E09006A090100090009350835061901000901000901002510576972656C6573732047616D65706164090101250747616D657061640902003503090100
|
||||
0x00010000=36017D0900000A000100000900013503191124090004350D350619010009001135031900110900053503191002090006350909656E09006A0901000900093508350619112409010109000D350F350D350619010009001335031900110901002510576972656C6573732047616D65706164090101250747616D6570616409010225084E696E74656E646F090201090111090202080809020308210902042801090205280109020635B035AE082225AA05010905A1010601FF8521092175089530810285300930750895308102853109317508966901810285320932750896690181028533093375089669018102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C009020735083506090409090100090209280109020A280109020C090C8009020D280009020E2800
|
||||
0x00010001=358C0900000A000100010900013503191200090004350D35061901000900013503190001090006350909656E09006A09010009000935083506191200090100090100251B576972656C6573732047616D6570616420506E5020536572766572090101250747616D6570616409020009010309020109057E0902020920090902030900010902042801090205090002"
|
||||
fi
|
||||
|
||||
if [[ ${JOYCON_01_TYPE} == "1" ]]; then
|
||||
BT_DEV_01_NAME="Joy-Con (L)"
|
||||
BT_DEV_01_ID=8198
|
||||
BT_DEV_01_SERVICE_RECORDS="0x00000000=356E0900000A000000000900013503191000090004350D350619010009000135031900010900053503191002090006350909656E09006A090100090009350835061901000901000901002510576972656C6573732047616D65706164090101250747616D657061640902003503090100
|
||||
0x00010000=36017D0900000A000100000900013503191124090004350D350619010009001135031900110900053503191002090006350909656E09006A0901000900093508350619112409010109000D350F350D350619010009001335031900110901002510576972656C6573732047616D65706164090101250747616D6570616409010225084E696E74656E646F090201090111090202080809020308210902042801090205280109020635B035AE082225AA05010905A1010601FF8521092175089530810285300930750895308102853109317508966901810285320932750896690181028533093375089669018102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C009020735083506090409090100090209280109020A280109020C090C8009020D280009020E2800
|
||||
0x00010001=358C0900000A000100010900013503191200090004350D35061901000900013503190001090006350909656E09006A09010009000935083506191200090100090100251B576972656C6573732047616D6570616420506E5020536572766572090101250747616D6570616409020009010309020109057E0902020920060902030900010902042801090205090002"
|
||||
elif [[ ${JOYCON_01_TYPE} == "2" ]]; then
|
||||
BT_DEV_01_NAME="Joy-Con (R)"
|
||||
BT_DEV_01_ID=8199
|
||||
BT_DEV_01_SERVICE_RECORDS="0x00000000=356E0900000A000000000900013503191000090004350D350619010009000135031900010900053503191002090006350909656E09006A090100090009350835061901000901000901002510576972656C6573732047616D65706164090101250747616D657061640902003503090100
|
||||
0x00010000=36017D0900000A000100000900013503191124090004350D350619010009001135031900110900053503191002090006350909656E09006A0901000900093508350619112409010109000D350F350D350619010009001335031900110901002510576972656C6573732047616D65706164090101250747616D6570616409010225084E696E74656E646F090201090111090202080809020308210902042801090205280109020635B035AE082225AA05010905A1010601FF8521092175089530810285300930750895308102853109317508966901810285320932750896690181028533093375089669018102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C009020735083506090409090100090209280109020A280109020C090C8009020D280009020E2800
|
||||
0x00010001=358C0900000A000100010900013503191200090004350D35061901000900013503190001090006350909656E09006A09010009000935083506191200090100090100251B576972656C6573732047616D6570616420506E5020536572766572090101250747616D6570616409020009010309020109057E0902020920070902030900010902042801090205090002"
|
||||
elif [[ ${JOYCON_01_TYPE} == "3" ]]; then
|
||||
BT_DEV_01_NAME="Pro Controller"
|
||||
BT_DEV_01_ID=8201
|
||||
BT_DEV_01_SERVICE_RECORDS="0x00000000=356E0900000A000000000900013503191000090004350D350619010009000135031900010900053503191002090006350909656E09006A090100090009350835061901000901000901002510576972656C6573732047616D65706164090101250747616D657061640902003503090100
|
||||
0x00010000=36017D0900000A000100000900013503191124090004350D350619010009001135031900110900053503191002090006350909656E09006A0901000900093508350619112409010109000D350F350D350619010009001335031900110901002510576972656C6573732047616D65706164090101250747616D6570616409010225084E696E74656E646F090201090111090202080809020308210902042801090205280109020635B035AE082225AA05010905A1010601FF8521092175089530810285300930750895308102853109317508966901810285320932750896690181028533093375089669018102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C009020735083506090409090100090209280109020A280109020C090C8009020D280009020E2800
|
||||
0x00010001=358C0900000A000100010900013503191200090004350D35061901000900013503190001090006350909656E09006A09010009000935083506191200090100090100251B576972656C6573732047616D6570616420506E5020536572766572090101250747616D6570616409020009010309020109057E0902020920090902030900010902042801090205090002"
|
||||
fi
|
||||
|
||||
if [[ ${JOYCON_02_TYPE} == "1" ]]; then
|
||||
BT_DEV_02_NAME="Joy-Con (L)"
|
||||
BT_DEV_02_ID=8198
|
||||
BT_DEV_02_SERVICE_RECORDS="0x00000000=356E0900000A000000000900013503191000090004350D350619010009000135031900010900053503191002090006350909656E09006A090100090009350835061901000901000901002510576972656C6573732047616D65706164090101250747616D657061640902003503090100
|
||||
0x00010000=36017D0900000A000100000900013503191124090004350D350619010009001135031900110900053503191002090006350909656E09006A0901000900093508350619112409010109000D350F350D350619010009001335031900110901002510576972656C6573732047616D65706164090101250747616D6570616409010225084E696E74656E646F090201090111090202080809020308210902042801090205280109020635B035AE082225AA05010905A1010601FF8521092175089530810285300930750895308102853109317508966901810285320932750896690181028533093375089669018102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C009020735083506090409090100090209280109020A280109020C090C8009020D280009020E2800
|
||||
0x00010001=358C0900000A000100010900013503191200090004350D35061901000900013503190001090006350909656E09006A09010009000935083506191200090100090100251B576972656C6573732047616D6570616420506E5020536572766572090101250747616D6570616409020009010309020109057E0902020920060902030900010902042801090205090002"
|
||||
elif [[ ${JOYCON_02_TYPE} == "2" ]]; then
|
||||
BT_DEV_02_NAME="Joy-Con (R)"
|
||||
BT_DEV_02_ID=8199
|
||||
BT_DEV_02_SERVICE_RECORDS="0x00000000=356E0900000A000000000900013503191000090004350D350619010009000135031900010900053503191002090006350909656E09006A090100090009350835061901000901000901002510576972656C6573732047616D65706164090101250747616D657061640902003503090100
|
||||
0x00010000=36017D0900000A000100000900013503191124090004350D350619010009001135031900110900053503191002090006350909656E09006A0901000900093508350619112409010109000D350F350D350619010009001335031900110901002510576972656C6573732047616D65706164090101250747616D6570616409010225084E696E74656E646F090201090111090202080809020308210902042801090205280109020635B035AE082225AA05010905A1010601FF8521092175089530810285300930750895308102853109317508966901810285320932750896690181028533093375089669018102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C009020735083506090409090100090209280109020A280109020C090C8009020D280009020E2800
|
||||
0x00010001=358C0900000A000100010900013503191200090004350D35061901000900013503190001090006350909656E09006A09010009000935083506191200090100090100251B576972656C6573732047616D6570616420506E5020536572766572090101250747616D6570616409020009010309020109057E0902020920070902030900010902042801090205090002"
|
||||
elif [[ ${JOYCON_02_TYPE} == "3" ]]; then
|
||||
BT_DEV_02_NAME="Pro Controller"
|
||||
BT_DEV_02_ID=8201
|
||||
BT_DEV_02_SERVICE_RECORDS="0x00000000=356E0900000A000000000900013503191000090004350D350619010009000135031900010900053503191002090006350909656E09006A090100090009350835061901000901000901002510576972656C6573732047616D65706164090101250747616D657061640902003503090100
|
||||
0x00010000=36017D0900000A000100000900013503191124090004350D350619010009001135031900110900053503191002090006350909656E09006A0901000900093508350619112409010109000D350F350D350619010009001335031900110901002510576972656C6573732047616D65706164090101250747616D6570616409010225084E696E74656E646F090201090111090202080809020308210902042801090205280109020635B035AE082225AA05010905A1010601FF8521092175089530810285300930750895308102853109317508966901810285320932750896690181028533093375089669018102853F05091901291015002501750195108102050109391500250775049501814205097504950181010501093009310933093416000027FFFF00007510950481020601FF85010901750895309102851009107508953091028511091175089530910285120912750895309102C009020735083506090409090100090209280109020A280109020C090C8009020D280009020E2800
|
||||
0x00010001=358C0900000A000100010900013503191200090004350D35061901000900013503190001090006350909656E09006A09010009000935083506191200090100090100251B576972656C6573732047616D6570616420506E5020536572766572090101250747616D6570616409020009010309020109057E0902020920090902030900010902042801090205090002"
|
||||
fi
|
||||
|
||||
if [[ ! -d /var/bluetoothconfig/${BT_MAC_ADDR}/cache ]]; then
|
||||
mkdir -p /var/bluetoothconfig/${BT_MAC_ADDR}/cache
|
||||
fi
|
||||
|
||||
if [[ ! ${JOYCON_00_TYPE} == "0" ]]; then
|
||||
if [[ ! -d /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_00_MAC} ]] || [[ ! $(grep -q ${JOYCON_00_LTK} /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_00_MAC}/info; echo $?) -eq 0 ]]; then
|
||||
mkdir -p /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_00_MAC}
|
||||
cat << EOF > /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_00_MAC}/info
|
||||
[General]
|
||||
Name=${BT_DEV_00_NAME}
|
||||
Class=0x000508
|
||||
SupportedTechnologies=BR/EDR;
|
||||
Trusted=true
|
||||
Blocked=false
|
||||
Services=00001000-0000-1000-8000-00805f9b34fb;00001124-0000-1000-8000-00805f9b34fb;00001200-0000-1000-8000-00805f9b34fb;
|
||||
[LinkKey]
|
||||
Key=${JOYCON_00_LTK}
|
||||
Type=4
|
||||
PINLength=0
|
||||
|
||||
[DeviceID]
|
||||
Source=2
|
||||
Vendor=1406
|
||||
Product=${BT_DEV_00_ID}
|
||||
Version=1
|
||||
|
||||
[ConnectionParameters]
|
||||
MinInterval=5
|
||||
MaxInterval=15
|
||||
Latency=120
|
||||
Timeout=600
|
||||
EOF
|
||||
cat << EOF > /var/bluetoothconfig/${BT_MAC_ADDR}/cache/${JOYCON_00_MAC}
|
||||
[General]
|
||||
Name=${BT_DEV_00_NAME}
|
||||
|
||||
[ServiceRecords]
|
||||
${BT_DEV_00_SERVICE_RECORDS}
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ ! ${JOYCON_01_TYPE} == "0" ]]; then
|
||||
if [[ ! -d /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_01_MAC} ]] || [[ ! $(grep -q ${JOYCON_01_LTK} /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_01_MAC}/info; echo $?) -eq 0 ]]; then
|
||||
mkdir -p /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_01_MAC}
|
||||
cat << EOF > /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_01_MAC}/info
|
||||
[General]
|
||||
Name=${BT_DEV_01_NAME}
|
||||
Class=0x000508
|
||||
SupportedTechnologies=BR/EDR;
|
||||
Trusted=true
|
||||
Blocked=false
|
||||
Services=00001000-0000-1000-8000-00805f9b34fb;00001124-0000-1000-8000-00805f9b34fb;00001200-0000-1000-8000-00805f9b34fb;
|
||||
[LinkKey]
|
||||
Key=${JOYCON_01_LTK}
|
||||
Type=4
|
||||
PINLength=0
|
||||
|
||||
[DeviceID]
|
||||
Source=2
|
||||
Vendor=1406
|
||||
Product=${BT_DEV_01_ID}
|
||||
Version=1
|
||||
|
||||
[ConnectionParameters]
|
||||
MinInterval=5
|
||||
MaxInterval=15
|
||||
Latency=120
|
||||
Timeout=600
|
||||
EOF
|
||||
cat << EOF > /var/bluetoothconfig/${BT_MAC_ADDR}/cache/${JOYCON_01_MAC}
|
||||
[General]
|
||||
Name=${BT_DEV_01_NAME}
|
||||
|
||||
[ServiceRecords]
|
||||
${BT_DEV_01_SERVICE_RECORDS}
|
||||
EOF
|
||||
|
||||
fi
|
||||
fi
|
||||
if [[ ! ${JOYCON_02_TYPE} == "0" ]]; then
|
||||
if [[ ! -d /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_02_MAC} ]] || [[ ! $(grep -q ${JOYCON_02_LTK} /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_02_MAC}/info; echo $?) -eq 0 ]]; then
|
||||
mkdir -p /var/bluetoothconfig/bluetooth/${BT_MAC_ADDR}/${JOYCON_02_MAC}
|
||||
cat << EOF > /var/bluetoothconfig/${BT_MAC_ADDR}/${JOYCON_02_MAC}/info
|
||||
[General]
|
||||
Name=${BT_DEV_02_NAME}
|
||||
Class=0x002508
|
||||
SupportedTechnologies=BR/EDR;
|
||||
Trusted=true
|
||||
Blocked=false
|
||||
Services=00001000-0000-1000-8000-00805f9b34fb;00001124-0000-1000-8000-00805f9b34fb;00001200-0000-1000-8000-00805f9b34fb;
|
||||
[LinkKey]
|
||||
Key=${JOYCON_02_LTK}
|
||||
Type=4
|
||||
PINLength=0
|
||||
|
||||
[DeviceID]
|
||||
Source=2
|
||||
Vendor=1406
|
||||
Product=${BT_DEV_02_ID}
|
||||
Version=1
|
||||
|
||||
[ConnectionParameters]
|
||||
MinInterval=5
|
||||
MaxInterval=15
|
||||
Latency=120
|
||||
Timeout=600
|
||||
EOF
|
||||
cat << EOF > /var/bluetoothconfig/${BT_MAC_ADDR}/cache/${JOYCON_02_MAC}
|
||||
[General]
|
||||
Name=${BT_DEV_02_NAME}
|
||||
|
||||
[ServiceRecords]
|
||||
${BT_DEV_02_SERVICE_RECORDS}
|
||||
EOF
|
||||
|
||||
fi
|
||||
fi
|
||||
fi
|
@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=Fix permissions on sysfs nodes.
|
||||
Before=graphical.target kodi.service retroarch.service
|
||||
After=multi-user.target
|
||||
After=xorg.service
|
||||
|
||||
[Service]
|
||||
Environment=TERM=linux
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/fix-sysfs-permissions.sh
|
||||
StandardError=journal
|
||||
RemainAfterExit=no
|
||||
|
||||
[Install]
|
||||
WantedBy=graphical.target
|
@ -7,7 +7,7 @@ Before=bluetooth.service
|
||||
Environment=TERM=linux
|
||||
Type=oneshot
|
||||
ExecStart=/usr/bin/pair-joycon.sh
|
||||
StandardError=syslog
|
||||
StandardError=journal
|
||||
RemainAfterExit=no
|
||||
|
||||
[Install]
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user