More ARM support.
This commit is contained in:
parent
18bdd0a1e3
commit
e3ae4eec95
1040 changed files with 331759 additions and 141 deletions
27
CHANGELOG
27
CHANGELOG
|
|
@ -660,6 +660,33 @@ API Changes
|
|||
written against it behaves the same here; note that library names its
|
||||
sumhexa hexsum.
|
||||
|
||||
- The Raspberry Pi build target is now linux-aarch64 and its binary is
|
||||
Singe-v3.00-Linux-aarch64. Nothing in it was ever Pi specific: the
|
||||
V4L2 decoder it builds talks to any memory-to-memory device, so the
|
||||
same binary serves Amlogic, Exynos, Qualcomm and other ARM64 Linux
|
||||
boards whose kernel offers one. The build system now decides by
|
||||
architecture, and by whether a sysroot is in use, rather than by a
|
||||
platform name that stood for both. cmake/zig/piPackages.cmake is
|
||||
cmake/zig/arm64Packages.cmake, and the command is
|
||||
./build-all.sh linux aarch64.
|
||||
|
||||
- src/main.c now includes windows.h where it reads the processor name
|
||||
out of the registry, which the Windows build had been failing without.
|
||||
|
||||
- A hardware decoded frame stays NV12 the whole way to the texture
|
||||
instead of being converted to planar YUV on the CPU first. The picture
|
||||
is identical: the GPU does the same conversion when it samples either
|
||||
way. Measured on an RX 7900 XTX at 720x480 the difference was inside
|
||||
the noise, so this is for the small ARM machines where a per-frame
|
||||
conversion is worth more than it is on a desktop; it has not been
|
||||
measured on one.
|
||||
|
||||
- Rockchip's rkmpp decoders are built and used when the Rockchip Media
|
||||
Process Platform library is present, and ignored everywhere else. The
|
||||
superbuild probes for rockchip_mpp with pkg-config rather than asking
|
||||
for --enable-rkmpp unconditionally, which would fail every configure on
|
||||
a machine without it. Untested: no Rockchip hardware here.
|
||||
|
||||
- The manual now says plainly that the Hypseus API is for compatibility
|
||||
and not for new games, in the Lua API Reference introduction and again
|
||||
at the head of the Hypseus Compatibility section. Every Hypseus name,
|
||||
|
|
|
|||
|
|
@ -571,20 +571,20 @@ target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE
|
|||
|
||||
# Platform specific system libraries.
|
||||
if(KANGAROO_OS STREQUAL "linux")
|
||||
if(KANGAROO_ARCH MATCHES "^(aarch64|armhf)$")
|
||||
set(SYSTEM_LIBS -ldl)
|
||||
# An ARM board decodes video through its V4L2 memory-to-memory device (videoPlayer.c).
|
||||
# Nothing here is particular to a Raspberry Pi: any board whose kernel offers one is served.
|
||||
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE SINGE_V4L2_DECODE)
|
||||
else()
|
||||
# ffmpeg's vdpau hardware context is always compiled in on X11 hosts.
|
||||
set(SYSTEM_LIBS -lX11 -lvdpau -ldl -rdynamic) # -rdynamic gives the crash backtrace function names
|
||||
endif()
|
||||
# Release binaries are stripped; the crash backtrace reads the dynamic symbols -rdynamic exports,
|
||||
# which stripping keeps.
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
list(APPEND SYSTEM_LIBS -s)
|
||||
endif()
|
||||
elseif(KANGAROO_OS STREQUAL "pi")
|
||||
set(SYSTEM_LIBS -ldl)
|
||||
# The Pi decodes video through its V4L2 memory-to-memory device (videoPlayer.c).
|
||||
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE SINGE_V4L2_DECODE)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
list(APPEND SYSTEM_LIBS -s)
|
||||
endif()
|
||||
elseif(KANGAROO_OS STREQUAL "macos")
|
||||
set(SYSTEM_LIBS
|
||||
-Wl,-framework,CoreVideo
|
||||
|
|
@ -741,6 +741,17 @@ add_custom_command(
|
|||
target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${guiShaderHeader})
|
||||
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_BINARY_DIR}/generated)
|
||||
|
||||
# Rockchip's hardware decoders are reached by name (videoPlayer.c), and only exist when FFmpeg was
|
||||
# built against the Rockchip MPP library. Asking FFmpeg itself is what decides it.
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E echo "" OUTPUT_QUIET)
|
||||
if(EXISTS ${BUILD_DIR}/lib/pkgconfig/libavcodec.pc)
|
||||
file(READ ${BUILD_DIR}/lib/pkgconfig/libavcodec.pc avcodecPc)
|
||||
if(avcodecPc MATCHES "rockchip_mpp")
|
||||
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE SINGE_RKMPP_DECODE)
|
||||
message(STATUS "FFmpeg carries the rkmpp decoders; enabling them in the player")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Jolt Physics comes with the compile definitions it was built with (SIMD level, layer bits) through
|
||||
# its exported target; the one C++ file in the tree (physicsJolt.cpp) needs them. Its C++ runtime is
|
||||
# zig's own libc++, linked statically, or the host's libstdc++ under gcc; macOS already lists -lc++.
|
||||
|
|
|
|||
|
|
@ -54,10 +54,10 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"name": "pi-aarch64",
|
||||
"displayName": "Raspberry Pi 64-bit (zig)",
|
||||
"name": "linux-aarch64",
|
||||
"displayName": "ARM64 Linux (zig)",
|
||||
"inherits": "base",
|
||||
"binaryDir": "${sourceDir}/.builddir/pi/aarch64/superbuild",
|
||||
"binaryDir": "${sourceDir}/.builddir/linux/aarch64/superbuild",
|
||||
"toolchainFile": "${sourceDir}/cmake/zig/aarch64-linux-gnu.cmake",
|
||||
"cacheVariables": {
|
||||
"SINGE_TRIPLE": "aarch64-linux-gnu",
|
||||
|
|
@ -104,8 +104,8 @@
|
|||
"configurePreset": "windows-x86_64"
|
||||
},
|
||||
{
|
||||
"name": "pi-aarch64",
|
||||
"configurePreset": "pi-aarch64"
|
||||
"name": "linux-aarch64",
|
||||
"configurePreset": "linux-aarch64"
|
||||
},
|
||||
{
|
||||
"name": "macos-aarch64",
|
||||
|
|
|
|||
18
INSTALL
18
INSTALL
|
|
@ -116,14 +116,18 @@ x86_64 Linux hosts; on another host, unpack a DirectX Shader Compiler
|
|||
release (lib/libdxcompiler.so, lib/libdxil.so, include/dxc/dxcapi.h) at
|
||||
that path yourself, or build it from source there.
|
||||
|
||||
The Raspberry Pi build (64-bit Raspberry Pi OS, glibc 2.31 or newer)
|
||||
runs on any 64-bit Pi; 3D games need a Pi 4 or later, the Pi 3 has no
|
||||
Vulkan driver and plays 2D games only. The build also uses zig. The platform headers and libraries it links against are
|
||||
Debian bookworm arm64 packages listed in cmake/zig/piPackages.cmake,
|
||||
fetched from snapshot.debian.org and unpacked with dpkg-deb into
|
||||
The ARM64 Linux build targets any ARM64 Linux system with glibc 2.31 or
|
||||
newer, the 64-bit Raspberry Pi OS among them. It is not Pi specific: the
|
||||
decoder it builds talks to any V4L2 memory-to-memory device, so one binary
|
||||
also serves Amlogic, Exynos, Qualcomm and other boards whose kernel offers
|
||||
one, and it carries Rockchip's own decoders besides. 3D games need a Pi 4
|
||||
or later; the Pi 3 has no Vulkan driver and plays 2D games only. The build
|
||||
uses zig. The platform headers and libraries it links against are Debian
|
||||
bookworm arm64 packages listed in cmake/zig/arm64Packages.cmake, fetched
|
||||
from snapshot.debian.org and unpacked with dpkg-deb into
|
||||
.builddir/toolchains/sysroot-aarch64-linux-gnu on first use:
|
||||
|
||||
./build-all.sh pi aarch64
|
||||
./build-all.sh linux aarch64
|
||||
|
||||
Useful forms (anything after the platform goes to cmake --build):
|
||||
|
||||
|
|
@ -134,5 +138,5 @@ Without the wrapper:
|
|||
|
||||
cmake --preset linux-x86_64 && cmake --build --preset linux-x86_64
|
||||
|
||||
Presets: linux-x86_64, linux-x86_64-gcc, windows-x86_64, pi-aarch64,
|
||||
Presets: linux-x86_64, linux-x86_64-gcc, windows-x86_64, linux-aarch64,
|
||||
macos-aarch64 (CMakePresets.json).
|
||||
|
|
|
|||
|
|
@ -222,6 +222,6 @@ if [[ $# -ge 2 ]]; then
|
|||
else
|
||||
buildAll linux x86_64 2>&1 | tee ${G_BUILDDIR}/linux-x86_64.log
|
||||
buildAll macos universal 2>&1 | tee ${G_BUILDDIR}/macos-universal.log
|
||||
buildAll pi aarch64 2>&1 | tee ${G_BUILDDIR}/pi-aarch64.log
|
||||
buildAll linux aarch64 2>&1 | tee ${G_BUILDDIR}/linux-aarch64.log
|
||||
buildAll windows x86_64 2>&1 | tee ${G_BUILDDIR}/windows-x86_64.log
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -78,10 +78,12 @@ if(CMAKE_SYSROOT)
|
|||
endif()
|
||||
set(SB_CFLAGS "-I${SB_PREFIX}/include ${SB_CFLAGS_BASE}")
|
||||
set(SB_PKG_CONFIG_LIBDIR "${SB_PREFIX}/lib/pkgconfig")
|
||||
if(KANGAROO_OS STREQUAL "linux")
|
||||
set(SB_PKG_CONFIG_LIBDIR "${SB_PKG_CONFIG_LIBDIR}:/usr/lib/${SINGE_TRIPLE}/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig")
|
||||
elseif(KANGAROO_OS STREQUAL "pi")
|
||||
# A cross build looks inside its sysroot; a build for this machine looks at this machine. The
|
||||
# sysroot is what tells them apart, not the platform's name.
|
||||
if(SINGE_SYSROOT)
|
||||
set(SB_PKG_CONFIG_LIBDIR "${SB_PKG_CONFIG_LIBDIR}:${SINGE_SYSROOT}/usr/lib/${SINGE_TRIPLE}/pkgconfig:${SINGE_SYSROOT}/usr/lib/pkgconfig:${SINGE_SYSROOT}/usr/share/pkgconfig")
|
||||
elseif(KANGAROO_OS STREQUAL "linux")
|
||||
set(SB_PKG_CONFIG_LIBDIR "${SB_PKG_CONFIG_LIBDIR}:/usr/lib/${SINGE_TRIPLE}/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig")
|
||||
elseif(DEFINED ENV{PKG_CONFIG_LIBDIR})
|
||||
set(SB_PKG_CONFIG_LIBDIR "${SB_PKG_CONFIG_LIBDIR}:$ENV{PKG_CONFIG_LIBDIR}")
|
||||
endif()
|
||||
|
|
@ -103,7 +105,7 @@ function(singeStepEnv outVar cflags)
|
|||
if(CMAKE_AR)
|
||||
list(APPEND env "AR=${CMAKE_AR}")
|
||||
endif()
|
||||
if(KANGAROO_OS STREQUAL "pi")
|
||||
if(SINGE_SYSROOT)
|
||||
list(APPEND env "PKG_CONFIG_SYSROOT_DIR=${SINGE_SYSROOT}")
|
||||
endif()
|
||||
set(${outVar} ${env} PARENT_SCOPE)
|
||||
|
|
@ -236,11 +238,15 @@ if(KANGAROO_OS STREQUAL "windows")
|
|||
else()
|
||||
set(opensslTarget mingw64)
|
||||
endif()
|
||||
elseif(KANGAROO_OS STREQUAL "pi")
|
||||
elseif(KANGAROO_OS STREQUAL "linux")
|
||||
if(KANGAROO_ARCH STREQUAL "aarch64")
|
||||
set(opensslTarget linux-aarch64)
|
||||
else()
|
||||
elseif(KANGAROO_ARCH STREQUAL "armhf")
|
||||
set(opensslTarget linux-armv4)
|
||||
elseif(SINGE_ZIG_TARGET)
|
||||
set(opensslTarget linux-x86_64)
|
||||
else()
|
||||
set(opensslTarget "")
|
||||
endif()
|
||||
elseif(KANGAROO_OS STREQUAL "macos")
|
||||
if(KANGAROO_ARCH STREQUAL "aarch64")
|
||||
|
|
@ -278,10 +284,50 @@ singeRebuildTarget(openssl)
|
|||
|
||||
# ===== FFmpeg (hardware decoding per platform; CMakeLists.txt reads its .pc files back) =====
|
||||
|
||||
# ===== Rockchip Media Process Platform (the vendor decode library for Rockchip SoCs) =====
|
||||
|
||||
# Rockchip's decoders are aarch64 only. Because the library links statically it costs nothing on a
|
||||
# board that is not a Rockchip, so it is built for the aarch64 targets rather than needing one of
|
||||
# its own; set SINGE_ROCKCHIP_MPP to override either way.
|
||||
if(NOT DEFINED SINGE_ROCKCHIP_MPP)
|
||||
if((KANGAROO_OS STREQUAL "linux") AND (KANGAROO_ARCH STREQUAL "aarch64"))
|
||||
set(SINGE_ROCKCHIP_MPP ON)
|
||||
else()
|
||||
set(SINGE_ROCKCHIP_MPP OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# MPP is packaged by no distribution, so it is vendored and built here like everything else. Only
|
||||
# the static library is kept: linked statically the Singe binary carries no runtime dependency on
|
||||
# it, so one ARM build runs on a Rockchip board and on anything else, where the decoder simply fails
|
||||
# to open a device and the player falls back. A shared build would put librockchip_mpp.so in the
|
||||
# binary's DT_NEEDED and stop it starting anywhere the library is absent.
|
||||
set(rkmppFlag "")
|
||||
set(rkmppDep "")
|
||||
if(SINGE_ROCKCHIP_MPP)
|
||||
# MPP strips its merged archive with ${CMAKE_STRIP}, and no cross strip here understands an ar
|
||||
# archive: zig's objcopy is ELF only. The step only drops debug symbols from an intermediate
|
||||
# library, so it is skipped; the release binary is stripped at its own link.
|
||||
singeCmakeProject(rockchipMpp ${SB_THIRDPARTY}/rockchip-mpp "" "-DBUILD_SHARED_LIBS=OFF;-DBUILD_TEST=OFF;-DHAVE_DRM=ON;-DCMAKE_STRIP=/bin/true" "${SB_ENV}")
|
||||
# Its install puts both the archive and the shared object down; the shared one is removed so
|
||||
# that -lrockchip_mpp can only resolve to the archive.
|
||||
ExternalProject_Add_Step(rockchipMpp staticOnly
|
||||
COMMAND ${CMAKE_COMMAND} -E rm -f ${SB_PREFIX}/lib/librockchip_mpp.so ${SB_PREFIX}/lib/librockchip_mpp.so.0 ${SB_PREFIX}/lib/librockchip_mpp.so.1 ${SB_PREFIX}/lib/librockchip_vpu.so ${SB_PREFIX}/lib/librockchip_vpu.so.0 ${SB_PREFIX}/lib/librockchip_vpu.so.1
|
||||
DEPENDEES install
|
||||
COMMENT "Keeping only the static Rockchip MPP library"
|
||||
)
|
||||
set(rkmppFlag --enable-rkmpp)
|
||||
set(rkmppDep rockchipMpp)
|
||||
message(STATUS "Rockchip MPP will be built and linked statically; the rkmpp decoders are enabled")
|
||||
endif()
|
||||
|
||||
if(KANGAROO_OS STREQUAL "linux")
|
||||
set(hwaccel --enable-vaapi --enable-vdpau --enable-libdrm)
|
||||
elseif(KANGAROO_OS STREQUAL "pi")
|
||||
set(hwaccel --enable-v4l2-m2m --enable-libdrm)
|
||||
# ARM boards decode through a V4L2 memory-to-memory device; desktops have VAAPI or VDPAU.
|
||||
if(KANGAROO_ARCH MATCHES "^(aarch64|armhf)$")
|
||||
set(hwaccel --enable-v4l2-m2m --enable-libdrm ${rkmppFlag})
|
||||
else()
|
||||
set(hwaccel --enable-vaapi --enable-vdpau --enable-libdrm ${rkmppFlag})
|
||||
endif()
|
||||
elseif(KANGAROO_OS STREQUAL "macos")
|
||||
set(hwaccel --enable-videotoolbox)
|
||||
elseif(KANGAROO_OS STREQUAL "windows")
|
||||
|
|
@ -309,13 +355,14 @@ else()
|
|||
endif()
|
||||
# FFmpeg's configure sees sys/sysctl.h in the Pi sysroot and in zig's glibc header set, then its
|
||||
# build cannot include it; an empty stand-in satisfies both (Linux uses sysconf, not sysctl).
|
||||
if((KANGAROO_OS STREQUAL "pi") OR ((KANGAROO_OS STREQUAL "linux") AND SINGE_ZIG_TARGET))
|
||||
if((KANGAROO_OS STREQUAL "linux") AND SINGE_ZIG_TARGET)
|
||||
file(WRITE ${SB_PREFIX}/include/sys/sysctl.h "/* File no longer used */\n")
|
||||
endif()
|
||||
set(ffmpegBinary ${SB_PREFIX}/build/ffmpeg)
|
||||
ExternalProject_Add(ffmpeg
|
||||
SOURCE_DIR ${SB_THIRDPARTY}/ffmpeg
|
||||
BINARY_DIR ${ffmpegBinary}
|
||||
DEPENDS ${rkmppDep}
|
||||
CONFIGURE_COMMAND ${SB_ENV} ${SB_THIRDPARTY}/ffmpeg/configure --enable-static --disable-shared --disable-debug --disable-muxers ${hwaccel} --disable-encoders --disable-filters --disable-network --disable-devices --disable-vulkan --disable-d3d12va --disable-bzlib --disable-lzma --disable-doc --disable-programs --enable-gpl --enable-version3 --extra-ldflags=-L${SB_PREFIX}/lib --prefix=${SB_PREFIX} --arch=${KANGAROO_ARCH} --target-os=${SINGE_CROSS_OS} ${ffmpegTools}
|
||||
BUILD_COMMAND ${SB_ENV} make
|
||||
INSTALL_COMMAND ${SB_ENV} make install
|
||||
|
|
|
|||
|
|
@ -20,11 +20,11 @@
|
|||
# Raspberry Pi (64-bit Raspberry Pi OS) with zig as the compiler. zig supplies glibc pinned to the
|
||||
# version below plus the kernel headers; the platform libraries Singe, SDL3 and FFmpeg build against
|
||||
# (libdrm, ALSA, X11, GBM/EGL/GLES, udev, ...) come from the Debian packages listed in
|
||||
# piPackages.cmake, downloaded and unpacked into a sysroot under .builddir/toolchains on first use.
|
||||
# arm64Packages.cmake, downloaded and unpacked into a sysroot under .builddir/toolchains on first use.
|
||||
# Nothing outside the source tree is touched; dpkg-deb from the host does the unpacking.
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/zig.cmake)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/piPackages.cmake)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/arm64Packages.cmake)
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||
|
|
@ -32,32 +32,32 @@ set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
|||
# Raspberry Pi OS bullseye shipped glibc 2.31; a binary built against it runs there and on everything since.
|
||||
set(SINGE_GLIBC_VERSION 2.31)
|
||||
|
||||
get_filename_component(piToolchains ${CMAKE_CURRENT_LIST_DIR}/../../.builddir/toolchains ABSOLUTE)
|
||||
set(SINGE_SYSROOT ${piToolchains}/sysroot-aarch64-linux-gnu CACHE PATH "Pi platform headers and libraries" FORCE)
|
||||
set(piDebs ${piToolchains}/debs-aarch64-linux-gnu)
|
||||
set(piStamp ${SINGE_SYSROOT}/.complete)
|
||||
get_filename_component(armToolchains ${CMAKE_CURRENT_LIST_DIR}/../../.builddir/toolchains ABSOLUTE)
|
||||
set(SINGE_SYSROOT ${armToolchains}/sysroot-aarch64-linux-gnu CACHE PATH "ARM64 platform headers and libraries" FORCE)
|
||||
set(armDebs ${armToolchains}/debs-aarch64-linux-gnu)
|
||||
set(armStamp ${SINGE_SYSROOT}/.complete)
|
||||
|
||||
# The stamp holds the manifest that built the sysroot; a changed manifest rebuilds it.
|
||||
string(SHA256 piManifest "${piPackages}")
|
||||
string(SHA256 arm64Manifest "${arm64Packages}")
|
||||
set(piHave "")
|
||||
if(EXISTS ${piStamp})
|
||||
file(READ ${piStamp} piHave)
|
||||
if(EXISTS ${armStamp})
|
||||
file(READ ${armStamp} piHave)
|
||||
string(STRIP "${piHave}" piHave)
|
||||
endif()
|
||||
if(NOT piHave STREQUAL piManifest)
|
||||
if(NOT piHave STREQUAL arm64Manifest)
|
||||
find_program(SINGE_DPKG_DEB dpkg-deb)
|
||||
if(NOT SINGE_DPKG_DEB)
|
||||
message(FATAL_ERROR "dpkg-deb is needed to unpack the Pi sysroot packages (apt-get install dpkg).")
|
||||
endif()
|
||||
message(STATUS "Building the Pi sysroot in ${SINGE_SYSROOT}")
|
||||
message(STATUS "Building the ARM64 sysroot in ${SINGE_SYSROOT}")
|
||||
file(REMOVE_RECURSE ${SINGE_SYSROOT})
|
||||
file(MAKE_DIRECTORY ${SINGE_SYSROOT} ${piDebs})
|
||||
foreach(entry IN LISTS piPackages)
|
||||
file(MAKE_DIRECTORY ${SINGE_SYSROOT} ${armDebs})
|
||||
foreach(entry IN LISTS arm64Packages)
|
||||
string(REGEX MATCH "^([^|]*)\\|(.*)$" unused "${entry}")
|
||||
set(url ${CMAKE_MATCH_1})
|
||||
set(sha ${CMAKE_MATCH_2})
|
||||
get_filename_component(deb ${url} NAME)
|
||||
set(debPath ${piDebs}/${deb})
|
||||
set(debPath ${armDebs}/${deb})
|
||||
if(NOT EXISTS ${debPath})
|
||||
message(STATUS "Downloading ${deb}")
|
||||
file(DOWNLOAD ${url} ${debPath} EXPECTED_HASH SHA256=${sha} STATUS status)
|
||||
|
|
@ -72,13 +72,13 @@ if(NOT piHave STREQUAL piManifest)
|
|||
message(FATAL_ERROR "Unpacking ${deb} failed.")
|
||||
endif()
|
||||
endforeach()
|
||||
file(WRITE ${piStamp} "${piManifest}\n")
|
||||
file(WRITE ${armStamp} "${arm64Manifest}\n")
|
||||
endif()
|
||||
|
||||
# The sysroot's headers come after zig's own; its libraries are linked by name and left unresolved
|
||||
# at link time (they are only stubs for what the Pi provides at run time).
|
||||
set(piLibs ${SINGE_SYSROOT}/usr/lib/aarch64-linux-gnu)
|
||||
singeZigToolchain(aarch64-linux-gnu.${SINGE_GLIBC_VERSION} "-idirafter ${SINGE_SYSROOT}/usr/include/aarch64-linux-gnu -idirafter ${SINGE_SYSROOT}/usr/include -L${piLibs} -L${SINGE_SYSROOT}/lib/aarch64-linux-gnu -Wl,--allow-shlib-undefined")
|
||||
set(armLibs ${SINGE_SYSROOT}/usr/lib/aarch64-linux-gnu)
|
||||
singeZigToolchain(aarch64-linux-gnu.${SINGE_GLIBC_VERSION} "-idirafter ${SINGE_SYSROOT}/usr/include/aarch64-linux-gnu -idirafter ${SINGE_SYSROOT}/usr/include -L${armLibs} -L${SINGE_SYSROOT}/lib/aarch64-linux-gnu -Wl,--allow-shlib-undefined")
|
||||
|
||||
# find_package and pkg-config look only in the sysroot; programs come from the host.
|
||||
set(CMAKE_FIND_ROOT_PATH ${SINGE_SYSROOT})
|
||||
|
|
@ -88,6 +88,6 @@ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
|||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
set(CMAKE_LIBRARY_ARCHITECTURE aarch64-linux-gnu CACHE STRING "" FORCE)
|
||||
set(CMAKE_C_LIBRARY_ARCHITECTURE aarch64-linux-gnu CACHE STRING "" FORCE)
|
||||
set(CMAKE_LIBRARY_PATH ${piLibs} CACHE PATH "" FORCE)
|
||||
set(KANGAROO_OS pi)
|
||||
set(CMAKE_LIBRARY_PATH ${armLibs} CACHE PATH "" FORCE)
|
||||
set(KANGAROO_OS linux)
|
||||
set(KANGAROO_ARCH aarch64)
|
||||
|
|
|
|||
78
cmake/zig/arm64Packages.cmake
Normal file
78
cmake/zig/arm64Packages.cmake
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
# Debian bookworm arm64 packages that give the Pi build its platform headers and stub libraries
|
||||
# (libdrm, ALSA, X11, GBM/EGL/GLES, udev, dbus, Wayland, PulseAudio). zig supplies libc and the
|
||||
# kernel headers itself, so no libc6 package is here. Every line is a permanent snapshot.debian.org
|
||||
# URL and the SHA-256 Debian publishes for it; regenerate against a newer snapshot when needed.
|
||||
# Format: one "url|sha256" pair per list element.
|
||||
|
||||
set(arm64PackagesSnapshot "https://snapshot.debian.org/archive/debian/20250901T000000Z")
|
||||
set(arm64Packages
|
||||
"${arm64PackagesSnapshot}/pool/main/libd/libdrm/libdrm-dev_2.4.114-1+b1_arm64.deb|26d7d0dcbbda8ed023b57989e0fca7f0ff8372daaf654daf8b3a362557be5e21"
|
||||
"${arm64PackagesSnapshot}/pool/main/libd/libdrm/libdrm2_2.4.114-1+b1_arm64.deb|f5f15a46d02cf5d9fa52d4f1c54b8cf80c398711ad771a9938b12399b8d8090c"
|
||||
"${arm64PackagesSnapshot}/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.114-1+b1_arm64.deb|24692e933b98b2b8b80d87c45728efa2bc7176120ce9efcb8793407e508b5a32"
|
||||
"${arm64PackagesSnapshot}/pool/main/libd/libdrm/libdrm-nouveau2_2.4.114-1+b1_arm64.deb|2acf0db609e8569dd89eea5f3e6f27968de50474d31213665901ad1c6d1133de"
|
||||
"${arm64PackagesSnapshot}/pool/main/libd/libdrm/libdrm-radeon1_2.4.114-1+b1_arm64.deb|e53c2b4be53b4a8e6413887525c9172bdc95ed3a140a52ce23d6e1a68789aaa0"
|
||||
"${arm64PackagesSnapshot}/pool/main/a/alsa-lib/libasound2-dev_1.2.8-1+b1_arm64.deb|263668e5ce831d3a8426bd342beba7e94925e893a4a5a285252b8f3ed6b3f5ee"
|
||||
"${arm64PackagesSnapshot}/pool/main/a/alsa-lib/libasound2_1.2.8-1+b1_arm64.deb|9fa889400fcee4b92c8f4a2fafbb7f2cd33444d9ec1665a71002ab67c06114bb"
|
||||
"${arm64PackagesSnapshot}/pool/main/a/alsa-lib/libasound2-data_1.2.8-1_all.deb|fe0780d2d3674b2977e0acb0d48b448ad72ba1642564b7dc537f55e839984c2d"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libx11/libx11-dev_1.8.4-2+deb12u2_arm64.deb|34bfc833561de983cfb4475523fedc13abb4faee14a876300de659591779add8"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libx11/libx11-6_1.8.4-2+deb12u2_arm64.deb|d1d533e983582282a9ea82c87ac5ce715a9b67bd6d1acbd2439a11c63c36549b"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxcb/libxcb1-dev_1.15-1_arm64.deb|87b5c3f1bb130727df68295ecfaadc305ee10c150afeb1a183e95b9150e18db5"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxcb/libxcb1_1.15-1_arm64.deb|041d9a68415c3ccf3ce8f4f8b88e4bbfb5dc1f0d97013c6ef8423e620ea50f84"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxau/libxau-dev_1.0.9-1_arm64.deb|21db3761a8f388fc83707c00fac645d4332737a859dd727571e1e6ede003b048"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxau/libxau6_1.0.9-1_arm64.deb|36c2bf400641a80521093771dc2562c903df4065f9eb03add50d90564337ea6c"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_arm64.deb|6fd0bc51f3a4e6b7f944f24f15524a4c4ba68a4b0aa136c18bdb96a2d36988f2"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_arm64.deb|e92569ac33247261aa09adfadc34ced3994ac301cf8b58de415a2d5dbf15ccfc"
|
||||
"${arm64PackagesSnapshot}/pool/main/x/xorgproto/x11proto-dev_2022.1-1_all.deb|3cab66a6591774188a568f9b54c4e7956f18da76e0e0fc4a779db5f6bcc3f148"
|
||||
"${arm64PackagesSnapshot}/pool/main/x/xorg-sgml-doctools/xorg-sgml-doctools_1.11-1.1_all.deb|168345058319094e475a87ace66f5fb6ae802109650ea8434d672117982b5d0a"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxext/libxext-dev_1.3.4-1+b1_arm64.deb|07f5e3efeba9564071885b2d0d2ba277692fa309a9f05ef862688af0022b1fcf"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxext/libxext6_1.3.4-1+b1_arm64.deb|5e9c0ad606eb4674c645fe8e0e64330c47d2729f7a59ed569848610efd5d5b62"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxi/libxi-dev_1.8-1+b1_arm64.deb|4a5e7bc3b4e55c23281b2e500b572a61ae8869b1bc03fe14b4ae5a4c9e3c295c"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxi/libxi6_1.8-1+b1_arm64.deb|b26383c9929d8bfba051eee22301e064d17039ed022bbf31990feb0d7a03b36c"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxfixes/libxfixes-dev_6.0.0-2_arm64.deb|25266e1bd10c7624210abf3aa3eb85e3886b6c8c08b2ecc396b8a04f24c10082"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxfixes/libxfixes3_6.0.0-2_arm64.deb|d47bda8fed01b19b41d503e2df05d9166c58e30e2376f2f8784ceb7a834befe6"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxrandr/libxrandr-dev_1.5.2-2+b1_arm64.deb|f951a3813c525bc950e21e801837dfe447bdbef4d2610eddbd833d7d41f92c7c"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxrandr/libxrandr2_1.5.2-2+b1_arm64.deb|f0bc7f79fee182caae176652fdb1bf349d13b9591b10ad4dc1c896521da8e49f"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxrender/libxrender-dev_0.9.10-1.1_arm64.deb|26a3ef50910cae3422c20af90a4a4deb85e7da3680c9192e50efc01b7e1b2f8f"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxrender/libxrender1_0.9.10-1.1_arm64.deb|f260193deb4eaf0b410a1c61e1f84804366ee3372b8bad9f38005f7dbcd89aae"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxcursor/libxcursor-dev_1.2.1-1_arm64.deb|5d0a0e62fcb202d9afc08c95d6b44e28211e63a6f0763e05741561ac2580aaa1"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxcursor/libxcursor1_1.2.1-1_arm64.deb|a93dd172bdd940de4ac6fd2b7a3f0213604c975f9f2f51eb3013f50886aaa87c"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxtst/libxtst-dev_1.2.3-1.1_arm64.deb|4e205710dd04f9e9ee360da0161c155be01086e36462fead392b707b3857b4f2"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxtst/libxtst6_1.2.3-1.1_arm64.deb|ef2a1b9ac3f2620d96e17744e41c4eefb7f491eee3bcc5bc1e592180b2d94128"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxss/libxss-dev_1.2.3-1_arm64.deb|970b39c57df5c1307f905c6dd89967d548e9e2711a2099241de7b8e8831e40ca"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxss/libxss1_1.2.3-1_arm64.deb|e0ff80e309eacda5face68b9a3bd56718fed2750af429324c35d7c9491c335f4"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-3_arm64.deb|64c758aef152615d99bceead07c86b03f3737dca190230b5dde1d79403288341"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxinerama/libxinerama1_1.1.4-3_arm64.deb|1dc5f458f6b3245b1b128897f905717d3cf7777a5697577b246042e25311d0df"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.5.0-1_arm64.deb|7d39b34b202fe58e18992b439c79c149ebb1b821b58dfb863ff4898e06420699"
|
||||
"${arm64PackagesSnapshot}/pool/main/libx/libxkbcommon/libxkbcommon0_1.5.0-1_arm64.deb|ec518d8a19796a399ab95e7bc4dfbb6bd2ed8e151f77b222df26208db412d852"
|
||||
"${arm64PackagesSnapshot}/pool/main/m/mesa/libgbm-dev_22.3.6-1+deb12u1_arm64.deb|ba3f413f6f428b45e21d93fc5eb213bbc31ca1c15a7b265da3700100fd2475c8"
|
||||
"${arm64PackagesSnapshot}/pool/main/m/mesa/libgbm1_22.3.6-1+deb12u1_arm64.deb|c76790e11aac46e328b6a13b34cccd3ef01fad79cfe80d2c4aa2384ac9ddb1f8"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libegl-dev_1.6.0-1_arm64.deb|8a3004f892785a5fa4c9f969c116f567a36d1c8e9b3d5fd0403055151e36c7d3"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libegl1_1.6.0-1_arm64.deb|707097a275155c600e2e9251c4ee7cdfdb2d8f50a678a850a2526a7bc9664166"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libgles-dev_1.6.0-1_arm64.deb|941e9963d64479544691f7183fe0eeae32b53b633df71c4c51263517ab2ea8f3"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libgles2_1.6.0-1_arm64.deb|efeb2717380f8411d66b3f669bb99bbd83ff09db3d4a1661533aa31af659608c"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libgl-dev_1.6.0-1_arm64.deb|56add9e710c072cf56504beed50a639f9f7c64f4e31e66958fa65a566084888c"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libgl1_1.6.0-1_arm64.deb|f4043ab47f52325973d2b608514b3469b055b65c744861c7f378755a32e799d6"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libglvnd-dev_1.6.0-1_arm64.deb|86cba4e243d10ae07cc6e769f23ecd097b2f87b722dc5ac48a48a3794cd29513"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libglvnd0_1.6.0-1_arm64.deb|d5063205fab5322ee686f33f87c6315b3fcd1335ea4e7bc8202b48ed4f9c9e83"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libglx-dev_1.6.0-1_arm64.deb|f3d6fca16c259743208df6f845aee3189eb54fed00e159811135089c16d0ad9c"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libglx0_1.6.0-1_arm64.deb|523f9b71f75e48ae605d8ef298a4b03ade26ade9a808a85329a3bd82a54b9b0d"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libopengl0_1.6.0-1_arm64.deb|4b3c6b3bc25530290cf231acac4c85b8806dda53ab6376ab22b3ec511b4fb7a0"
|
||||
"${arm64PackagesSnapshot}/pool/main/libg/libglvnd/libopengl-dev_1.6.0-1_arm64.deb|b4ddc2d38103e9f0c3637d46334ccbf40c30e851c85f5348abc0aa37e3926822"
|
||||
"${arm64PackagesSnapshot}/pool/main/s/systemd/libudev-dev_252.36-1~deb12u1_arm64.deb|62760a9e8fb87c2827333163efadc36c5ae66be59af18e7286d19813b8a72e03"
|
||||
"${arm64PackagesSnapshot}/pool/main/s/systemd/libudev1_252.36-1~deb12u1_arm64.deb|5abfa6d6960f1b6a19c3d35373958d47a3a2f1221a5fe4652143fea0e0adc2ab"
|
||||
"${arm64PackagesSnapshot}/pool/main/d/dbus/libdbus-1-dev_1.14.10-1~deb12u1_arm64.deb|817caa440feee88d53dd74432ce633af8d351552cd71014bcc8c98380c9ed88c"
|
||||
"${arm64PackagesSnapshot}/pool/main/d/dbus/libdbus-1-3_1.14.10-1~deb12u1_arm64.deb|2a423794f44ee756f70fda67c6e47b15afe3dd22cd69e51f5d14d2ec9538f806"
|
||||
"${arm64PackagesSnapshot}/pool/main/w/wayland/libwayland-dev_1.21.0-1_arm64.deb|932405c58195d299495230792e374ad304adadf3d3ffdc07eda3466b756adc33"
|
||||
"${arm64PackagesSnapshot}/pool/main/w/wayland/libwayland-client0_1.21.0-1_arm64.deb|ae390cc04c2eb1de90b9a6373505b22c730ada5e72daa50c507b7f99c12faf06"
|
||||
"${arm64PackagesSnapshot}/pool/main/w/wayland/libwayland-egl1_1.21.0-1_arm64.deb|c08124a4d9af24f058b45c88867a84697882e755ea94965795d152fe26fe57c9"
|
||||
"${arm64PackagesSnapshot}/pool/main/w/wayland/libwayland-cursor0_1.21.0-1_arm64.deb|8c8d1a3942bc3fc9dd3ea7c679c1a314e59cdaaa700883d54d1bb3ec89db256b"
|
||||
"${arm64PackagesSnapshot}/pool/main/w/wayland/libwayland-server0_1.21.0-1_arm64.deb|4d99e7e0503fdaa999e67d47d8612c0465e775eafa47819573da50bdb09064f2"
|
||||
"${arm64PackagesSnapshot}/pool/main/w/wayland/libwayland-bin_1.21.0-1_arm64.deb|02e9361617b43b130ff032873a910258884160c169e89a1ca45d34d1150a2615"
|
||||
"${arm64PackagesSnapshot}/pool/main/libd/libdecor-0/libdecor-0-dev_0.1.1-2_arm64.deb|e52fbcbbf6e755be2c642fcecc6154d9d071978d0797e7cf9ccf93d131bf4fc6"
|
||||
"${arm64PackagesSnapshot}/pool/main/libd/libdecor-0/libdecor-0-0_0.1.1-2_arm64.deb|e88d3c2dd3336a97b8cf10ef270a264388fce81cedf8032b18f2a36b021bc6a3"
|
||||
"${arm64PackagesSnapshot}/pool/main/p/pulseaudio/libpulse-dev_16.1+dfsg1-2+b1_arm64.deb|dac8f94dc214a77654cc62d0f1611cd4dee9cdefdc816e3056dd9fae5aa5d4a8"
|
||||
"${arm64PackagesSnapshot}/pool/main/p/pulseaudio/libpulse0_16.1+dfsg1-2+b1_arm64.deb|26f17e3457c5fce0104a6b2f0efb75a3256b24b32ca7cfda6266373758a930cb"
|
||||
"${arm64PackagesSnapshot}/pool/main/w/wayland/libwayland-egl-backend-dev_1.21.0-1_arm64.deb|0974da94059371e67e93d61398853c9967d0cc34cd7745b6d47d3aa47b88815d"
|
||||
"${arm64PackagesSnapshot}/pool/main/libf/libffi/libffi-dev_3.4.4-1_arm64.deb|8ff6335f76752ef8659762435d0d88129ef0090a587520853238809bd10ef392"
|
||||
"${arm64PackagesSnapshot}/pool/main/libf/libffi/libffi8_3.4.4-1_arm64.deb|80b5c36177dc0e29d531c7eddbed3cc7355cb490e49f8cfa5959572d161f27b3"
|
||||
)
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
# Debian bookworm arm64 packages that give the Pi build its platform headers and stub libraries
|
||||
# (libdrm, ALSA, X11, GBM/EGL/GLES, udev, dbus, Wayland, PulseAudio). zig supplies libc and the
|
||||
# kernel headers itself, so no libc6 package is here. Every line is a permanent snapshot.debian.org
|
||||
# URL and the SHA-256 Debian publishes for it; regenerate against a newer snapshot when needed.
|
||||
# Format: one "url|sha256" pair per list element.
|
||||
|
||||
set(piPackagesSnapshot "https://snapshot.debian.org/archive/debian/20250901T000000Z")
|
||||
set(piPackages
|
||||
"${piPackagesSnapshot}/pool/main/libd/libdrm/libdrm-dev_2.4.114-1+b1_arm64.deb|26d7d0dcbbda8ed023b57989e0fca7f0ff8372daaf654daf8b3a362557be5e21"
|
||||
"${piPackagesSnapshot}/pool/main/libd/libdrm/libdrm2_2.4.114-1+b1_arm64.deb|f5f15a46d02cf5d9fa52d4f1c54b8cf80c398711ad771a9938b12399b8d8090c"
|
||||
"${piPackagesSnapshot}/pool/main/libd/libdrm/libdrm-amdgpu1_2.4.114-1+b1_arm64.deb|24692e933b98b2b8b80d87c45728efa2bc7176120ce9efcb8793407e508b5a32"
|
||||
"${piPackagesSnapshot}/pool/main/libd/libdrm/libdrm-nouveau2_2.4.114-1+b1_arm64.deb|2acf0db609e8569dd89eea5f3e6f27968de50474d31213665901ad1c6d1133de"
|
||||
"${piPackagesSnapshot}/pool/main/libd/libdrm/libdrm-radeon1_2.4.114-1+b1_arm64.deb|e53c2b4be53b4a8e6413887525c9172bdc95ed3a140a52ce23d6e1a68789aaa0"
|
||||
"${piPackagesSnapshot}/pool/main/a/alsa-lib/libasound2-dev_1.2.8-1+b1_arm64.deb|263668e5ce831d3a8426bd342beba7e94925e893a4a5a285252b8f3ed6b3f5ee"
|
||||
"${piPackagesSnapshot}/pool/main/a/alsa-lib/libasound2_1.2.8-1+b1_arm64.deb|9fa889400fcee4b92c8f4a2fafbb7f2cd33444d9ec1665a71002ab67c06114bb"
|
||||
"${piPackagesSnapshot}/pool/main/a/alsa-lib/libasound2-data_1.2.8-1_all.deb|fe0780d2d3674b2977e0acb0d48b448ad72ba1642564b7dc537f55e839984c2d"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libx11/libx11-dev_1.8.4-2+deb12u2_arm64.deb|34bfc833561de983cfb4475523fedc13abb4faee14a876300de659591779add8"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libx11/libx11-6_1.8.4-2+deb12u2_arm64.deb|d1d533e983582282a9ea82c87ac5ce715a9b67bd6d1acbd2439a11c63c36549b"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxcb/libxcb1-dev_1.15-1_arm64.deb|87b5c3f1bb130727df68295ecfaadc305ee10c150afeb1a183e95b9150e18db5"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxcb/libxcb1_1.15-1_arm64.deb|041d9a68415c3ccf3ce8f4f8b88e4bbfb5dc1f0d97013c6ef8423e620ea50f84"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxau/libxau-dev_1.0.9-1_arm64.deb|21db3761a8f388fc83707c00fac645d4332737a859dd727571e1e6ede003b048"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxau/libxau6_1.0.9-1_arm64.deb|36c2bf400641a80521093771dc2562c903df4065f9eb03add50d90564337ea6c"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxdmcp/libxdmcp-dev_1.1.2-3_arm64.deb|6fd0bc51f3a4e6b7f944f24f15524a4c4ba68a4b0aa136c18bdb96a2d36988f2"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxdmcp/libxdmcp6_1.1.2-3_arm64.deb|e92569ac33247261aa09adfadc34ced3994ac301cf8b58de415a2d5dbf15ccfc"
|
||||
"${piPackagesSnapshot}/pool/main/x/xorgproto/x11proto-dev_2022.1-1_all.deb|3cab66a6591774188a568f9b54c4e7956f18da76e0e0fc4a779db5f6bcc3f148"
|
||||
"${piPackagesSnapshot}/pool/main/x/xorg-sgml-doctools/xorg-sgml-doctools_1.11-1.1_all.deb|168345058319094e475a87ace66f5fb6ae802109650ea8434d672117982b5d0a"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxext/libxext-dev_1.3.4-1+b1_arm64.deb|07f5e3efeba9564071885b2d0d2ba277692fa309a9f05ef862688af0022b1fcf"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxext/libxext6_1.3.4-1+b1_arm64.deb|5e9c0ad606eb4674c645fe8e0e64330c47d2729f7a59ed569848610efd5d5b62"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxi/libxi-dev_1.8-1+b1_arm64.deb|4a5e7bc3b4e55c23281b2e500b572a61ae8869b1bc03fe14b4ae5a4c9e3c295c"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxi/libxi6_1.8-1+b1_arm64.deb|b26383c9929d8bfba051eee22301e064d17039ed022bbf31990feb0d7a03b36c"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxfixes/libxfixes-dev_6.0.0-2_arm64.deb|25266e1bd10c7624210abf3aa3eb85e3886b6c8c08b2ecc396b8a04f24c10082"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxfixes/libxfixes3_6.0.0-2_arm64.deb|d47bda8fed01b19b41d503e2df05d9166c58e30e2376f2f8784ceb7a834befe6"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxrandr/libxrandr-dev_1.5.2-2+b1_arm64.deb|f951a3813c525bc950e21e801837dfe447bdbef4d2610eddbd833d7d41f92c7c"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxrandr/libxrandr2_1.5.2-2+b1_arm64.deb|f0bc7f79fee182caae176652fdb1bf349d13b9591b10ad4dc1c896521da8e49f"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxrender/libxrender-dev_0.9.10-1.1_arm64.deb|26a3ef50910cae3422c20af90a4a4deb85e7da3680c9192e50efc01b7e1b2f8f"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxrender/libxrender1_0.9.10-1.1_arm64.deb|f260193deb4eaf0b410a1c61e1f84804366ee3372b8bad9f38005f7dbcd89aae"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxcursor/libxcursor-dev_1.2.1-1_arm64.deb|5d0a0e62fcb202d9afc08c95d6b44e28211e63a6f0763e05741561ac2580aaa1"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxcursor/libxcursor1_1.2.1-1_arm64.deb|a93dd172bdd940de4ac6fd2b7a3f0213604c975f9f2f51eb3013f50886aaa87c"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxtst/libxtst-dev_1.2.3-1.1_arm64.deb|4e205710dd04f9e9ee360da0161c155be01086e36462fead392b707b3857b4f2"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxtst/libxtst6_1.2.3-1.1_arm64.deb|ef2a1b9ac3f2620d96e17744e41c4eefb7f491eee3bcc5bc1e592180b2d94128"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxss/libxss-dev_1.2.3-1_arm64.deb|970b39c57df5c1307f905c6dd89967d548e9e2711a2099241de7b8e8831e40ca"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxss/libxss1_1.2.3-1_arm64.deb|e0ff80e309eacda5face68b9a3bd56718fed2750af429324c35d7c9491c335f4"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxinerama/libxinerama-dev_1.1.4-3_arm64.deb|64c758aef152615d99bceead07c86b03f3737dca190230b5dde1d79403288341"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxinerama/libxinerama1_1.1.4-3_arm64.deb|1dc5f458f6b3245b1b128897f905717d3cf7777a5697577b246042e25311d0df"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxkbcommon/libxkbcommon-dev_1.5.0-1_arm64.deb|7d39b34b202fe58e18992b439c79c149ebb1b821b58dfb863ff4898e06420699"
|
||||
"${piPackagesSnapshot}/pool/main/libx/libxkbcommon/libxkbcommon0_1.5.0-1_arm64.deb|ec518d8a19796a399ab95e7bc4dfbb6bd2ed8e151f77b222df26208db412d852"
|
||||
"${piPackagesSnapshot}/pool/main/m/mesa/libgbm-dev_22.3.6-1+deb12u1_arm64.deb|ba3f413f6f428b45e21d93fc5eb213bbc31ca1c15a7b265da3700100fd2475c8"
|
||||
"${piPackagesSnapshot}/pool/main/m/mesa/libgbm1_22.3.6-1+deb12u1_arm64.deb|c76790e11aac46e328b6a13b34cccd3ef01fad79cfe80d2c4aa2384ac9ddb1f8"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libegl-dev_1.6.0-1_arm64.deb|8a3004f892785a5fa4c9f969c116f567a36d1c8e9b3d5fd0403055151e36c7d3"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libegl1_1.6.0-1_arm64.deb|707097a275155c600e2e9251c4ee7cdfdb2d8f50a678a850a2526a7bc9664166"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libgles-dev_1.6.0-1_arm64.deb|941e9963d64479544691f7183fe0eeae32b53b633df71c4c51263517ab2ea8f3"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libgles2_1.6.0-1_arm64.deb|efeb2717380f8411d66b3f669bb99bbd83ff09db3d4a1661533aa31af659608c"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libgl-dev_1.6.0-1_arm64.deb|56add9e710c072cf56504beed50a639f9f7c64f4e31e66958fa65a566084888c"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libgl1_1.6.0-1_arm64.deb|f4043ab47f52325973d2b608514b3469b055b65c744861c7f378755a32e799d6"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libglvnd-dev_1.6.0-1_arm64.deb|86cba4e243d10ae07cc6e769f23ecd097b2f87b722dc5ac48a48a3794cd29513"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libglvnd0_1.6.0-1_arm64.deb|d5063205fab5322ee686f33f87c6315b3fcd1335ea4e7bc8202b48ed4f9c9e83"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libglx-dev_1.6.0-1_arm64.deb|f3d6fca16c259743208df6f845aee3189eb54fed00e159811135089c16d0ad9c"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libglx0_1.6.0-1_arm64.deb|523f9b71f75e48ae605d8ef298a4b03ade26ade9a808a85329a3bd82a54b9b0d"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libopengl0_1.6.0-1_arm64.deb|4b3c6b3bc25530290cf231acac4c85b8806dda53ab6376ab22b3ec511b4fb7a0"
|
||||
"${piPackagesSnapshot}/pool/main/libg/libglvnd/libopengl-dev_1.6.0-1_arm64.deb|b4ddc2d38103e9f0c3637d46334ccbf40c30e851c85f5348abc0aa37e3926822"
|
||||
"${piPackagesSnapshot}/pool/main/s/systemd/libudev-dev_252.36-1~deb12u1_arm64.deb|62760a9e8fb87c2827333163efadc36c5ae66be59af18e7286d19813b8a72e03"
|
||||
"${piPackagesSnapshot}/pool/main/s/systemd/libudev1_252.36-1~deb12u1_arm64.deb|5abfa6d6960f1b6a19c3d35373958d47a3a2f1221a5fe4652143fea0e0adc2ab"
|
||||
"${piPackagesSnapshot}/pool/main/d/dbus/libdbus-1-dev_1.14.10-1~deb12u1_arm64.deb|817caa440feee88d53dd74432ce633af8d351552cd71014bcc8c98380c9ed88c"
|
||||
"${piPackagesSnapshot}/pool/main/d/dbus/libdbus-1-3_1.14.10-1~deb12u1_arm64.deb|2a423794f44ee756f70fda67c6e47b15afe3dd22cd69e51f5d14d2ec9538f806"
|
||||
"${piPackagesSnapshot}/pool/main/w/wayland/libwayland-dev_1.21.0-1_arm64.deb|932405c58195d299495230792e374ad304adadf3d3ffdc07eda3466b756adc33"
|
||||
"${piPackagesSnapshot}/pool/main/w/wayland/libwayland-client0_1.21.0-1_arm64.deb|ae390cc04c2eb1de90b9a6373505b22c730ada5e72daa50c507b7f99c12faf06"
|
||||
"${piPackagesSnapshot}/pool/main/w/wayland/libwayland-egl1_1.21.0-1_arm64.deb|c08124a4d9af24f058b45c88867a84697882e755ea94965795d152fe26fe57c9"
|
||||
"${piPackagesSnapshot}/pool/main/w/wayland/libwayland-cursor0_1.21.0-1_arm64.deb|8c8d1a3942bc3fc9dd3ea7c679c1a314e59cdaaa700883d54d1bb3ec89db256b"
|
||||
"${piPackagesSnapshot}/pool/main/w/wayland/libwayland-server0_1.21.0-1_arm64.deb|4d99e7e0503fdaa999e67d47d8612c0465e775eafa47819573da50bdb09064f2"
|
||||
"${piPackagesSnapshot}/pool/main/w/wayland/libwayland-bin_1.21.0-1_arm64.deb|02e9361617b43b130ff032873a910258884160c169e89a1ca45d34d1150a2615"
|
||||
"${piPackagesSnapshot}/pool/main/libd/libdecor-0/libdecor-0-dev_0.1.1-2_arm64.deb|e52fbcbbf6e755be2c642fcecc6154d9d071978d0797e7cf9ccf93d131bf4fc6"
|
||||
"${piPackagesSnapshot}/pool/main/libd/libdecor-0/libdecor-0-0_0.1.1-2_arm64.deb|e88d3c2dd3336a97b8cf10ef270a264388fce81cedf8032b18f2a36b021bc6a3"
|
||||
"${piPackagesSnapshot}/pool/main/p/pulseaudio/libpulse-dev_16.1+dfsg1-2+b1_arm64.deb|dac8f94dc214a77654cc62d0f1611cd4dee9cdefdc816e3056dd9fae5aa5d4a8"
|
||||
"${piPackagesSnapshot}/pool/main/p/pulseaudio/libpulse0_16.1+dfsg1-2+b1_arm64.deb|26f17e3457c5fce0104a6b2f0efb75a3256b24b32ca7cfda6266373758a930cb"
|
||||
"${piPackagesSnapshot}/pool/main/w/wayland/libwayland-egl-backend-dev_1.21.0-1_arm64.deb|0974da94059371e67e93d61398853c9967d0cc34cd7745b6d47d3aa47b88815d"
|
||||
"${piPackagesSnapshot}/pool/main/libf/libffi/libffi-dev_3.4.4-1_arm64.deb|8ff6335f76752ef8659762435d0d88129ef0090a587520853238809bd10ef392"
|
||||
"${piPackagesSnapshot}/pool/main/libf/libffi/libffi8_3.4.4-1_arm64.deb|80b5c36177dc0e29d531c7eddbed3cc7355cb490e49f8cfa5959572d161f27b3"
|
||||
)
|
||||
|
|
@ -57,7 +57,10 @@ function(singeZigToolchain target extra)
|
|||
# -fno-sanitize=undefined: zig cc instruments for UBSan by default and expects its runtime at
|
||||
# link time; a release build wants neither.
|
||||
# extra goes after the caller's arguments so the caller's -L directories are searched first.
|
||||
foreach(tool "cc;-target ${target} -fno-sanitize=undefined;${extra}" "c++;-target ${target} -fno-sanitize=undefined;${extra}" "ar;;" "ranlib;;" "rc;;")
|
||||
# ld.lld and objcopy are here for vendored projects that shell out to a linker or a strip of
|
||||
# their own rather than going through the compiler driver: Rockchip's MPP merges its archives
|
||||
# with "ld -r" and then strips the result, and without these it would reach for the host's.
|
||||
foreach(tool "cc;-target ${target} -fno-sanitize=undefined;${extra}" "c++;-target ${target} -fno-sanitize=undefined;${extra}" "ar;;" "ranlib;;" "rc;;" "ld.lld;;")
|
||||
list(GET tool 0 name)
|
||||
list(GET tool 1 args)
|
||||
list(GET tool 2 after)
|
||||
|
|
@ -69,5 +72,6 @@ function(singeZigToolchain target extra)
|
|||
set(CMAKE_AR ${dir}/zig-ar CACHE FILEPATH "archiver" FORCE)
|
||||
set(CMAKE_RANLIB ${dir}/zig-ranlib CACHE FILEPATH "ranlib" FORCE)
|
||||
set(CMAKE_RC_COMPILER ${dir}/zig-rc CACHE FILEPATH "resource compiler" FORCE)
|
||||
set(CMAKE_LINKER ${dir}/zig-ld.lld CACHE FILEPATH "linker" FORCE)
|
||||
set(SINGE_ZIG_TARGET ${target} CACHE STRING "zig target triple" FORCE)
|
||||
endfunction()
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@
|
|||
#include <math.h>
|
||||
#include <sys/stat.h>
|
||||
#ifdef _WIN32
|
||||
// _describeCpu reads the processor name out of the registry, which needs the Windows headers.
|
||||
#include <windows.h>
|
||||
#include <io.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ typedef struct iso639_lang_t iso639_lang_t;
|
|||
#define PERCENT_MAX 100
|
||||
#define PERCENT_TO_SCALE 0.01f
|
||||
#define PLANE_COUNT 3 // Y, U, V
|
||||
#define NV12_PLANE_COUNT 2 // Y, then U and V interleaved
|
||||
#define CHROMA_NEUTRAL 0x80 // U and V sample with no colour, for monochrome playback
|
||||
#define FLASH_LUMA 0xd4 // videoFlash's white picture: 90 per cent luma, the value Hypseus flashes
|
||||
#define LUMA_BLEND_TAPS 3 // videoSetBlend averages a luma sample with the rows above and below it
|
||||
|
|
@ -101,6 +102,12 @@ typedef struct iso639_lang_t iso639_lang_t;
|
|||
// The Pi has no VA-API or VDPAU; its decode hardware is a V4L2 memory-to-memory device driven by
|
||||
// libavcodec's separate *_v4l2m2m decoders, which are chosen by name. Only the Pi build asks for
|
||||
// them: on a desktop the probe would open every /dev/video* device.
|
||||
#if defined(SINGE_RKMPP_DECODE)
|
||||
#define RKMPP_DECODE true
|
||||
#else
|
||||
#define RKMPP_DECODE false
|
||||
#endif
|
||||
|
||||
#if defined(SINGE_V4L2_DECODE)
|
||||
#define V4L2_DECODE true
|
||||
#else
|
||||
|
|
@ -188,6 +195,7 @@ typedef struct VideoPlayerS {
|
|||
bool packetPending; // videoPacket holds data the decoder refused (EAGAIN)
|
||||
bool hwReported; // First hardware frame has been traced
|
||||
bool v4l2; // Decoding through a V4L2 memory-to-memory device
|
||||
bool nv12; // Frames stay NV12 to the texture: no conversion between the decoder and the GPU
|
||||
bool videoHasAudio; // The video file carries an audio stream of its own
|
||||
|
||||
// Audio demuxer, decoder, and resampler. Owned by the main thread.
|
||||
|
|
@ -279,6 +287,7 @@ static int64_t _streamTimeToMs(int64_t ts, AVRational timeBase);
|
|||
static bool _takeDecodedFrame(VideoPlayerT *v);
|
||||
static void _trackMixed(void *udata, MIX_Track *track, const SDL_AudioSpec *spec, float *pcm, int32_t samples);
|
||||
static void _uploadFrame(VideoPlayerT *v);
|
||||
static const AVCodec *_rkmppDecoder(const AVCodec *decoder);
|
||||
static const AVCodec *_v4l2Decoder(const AVCodec *decoder);
|
||||
static void _writeIndexCache(VideoPlayerT *v, const char *indexName, const IndexHeaderT *header);
|
||||
|
||||
|
|
@ -323,6 +332,15 @@ static void _allocateFrameBuffer(VideoPlayerT *v, FrameBufferT *buffer) {
|
|||
if (!buffer->data[0]) {
|
||||
utilDie("Unable to allocate frame buffer.");
|
||||
}
|
||||
} else if (v->nv12) {
|
||||
// One luma plane and one chroma plane carrying U and V in pairs, so it is as wide as luma.
|
||||
buffer->linesize[0] = FFALIGN(v->width, STRIDE_ALIGNMENT);
|
||||
buffer->linesize[1] = buffer->linesize[0];
|
||||
buffer->data[0] = av_malloc((size_t)buffer->linesize[0] * (size_t)v->height);
|
||||
buffer->data[1] = av_malloc((size_t)buffer->linesize[1] * (size_t)chromaHeight);
|
||||
if (!buffer->data[0] || !buffer->data[1]) {
|
||||
utilDie("Unable to allocate frame buffer.");
|
||||
}
|
||||
} else {
|
||||
buffer->linesize[0] = FFALIGN(v->width, STRIDE_ALIGNMENT);
|
||||
buffer->linesize[1] = FFALIGN(chromaWidth, STRIDE_ALIGNMENT);
|
||||
|
|
@ -760,8 +778,8 @@ static int _compareFrames(const void *a, const void *b) {
|
|||
// Puts a decoded frame into our buffer in the player's format, converting only when the decoder's
|
||||
// output differs (10 bit sources, 4:2:2, full range JPEG sources, hardware formats).
|
||||
static void _convertFrame(VideoPlayerT *v, FrameBufferT *buffer, const AVFrame *frame) {
|
||||
enum AVPixelFormat wanted = v->rgb ? AV_PIX_FMT_BGRA : AV_PIX_FMT_YUV420P;
|
||||
int32_t planes = v->rgb ? 1 : PLANE_COUNT;
|
||||
enum AVPixelFormat wanted = v->rgb ? AV_PIX_FMT_BGRA : (v->nv12 ? AV_PIX_FMT_NV12 : AV_PIX_FMT_YUV420P);
|
||||
int32_t planes = v->rgb ? 1 : (v->nv12 ? NV12_PLANE_COUNT : PLANE_COUNT);
|
||||
int32_t plane = 0;
|
||||
int32_t rows = 0;
|
||||
int32_t bytes = 0;
|
||||
|
|
@ -769,7 +787,8 @@ static void _convertFrame(VideoPlayerT *v, FrameBufferT *buffer, const AVFrame *
|
|||
if (frame->format == wanted) {
|
||||
for (plane = 0; plane < planes; plane++) {
|
||||
rows = (plane == 0) ? v->height : (v->height + 1) / 2;
|
||||
bytes = v->rgb ? v->width * BYTES_PER_PIXEL : ((plane == 0) ? v->width : (v->width + 1) / 2);
|
||||
// NV12's chroma plane holds a U and a V for every second pixel, so it is luma's width.
|
||||
bytes = v->rgb ? v->width * BYTES_PER_PIXEL : (((plane == 0) || v->nv12) ? v->width : (v->width + 1) / 2);
|
||||
av_image_copy_plane(buffer->data[plane], buffer->linesize[plane], frame->data[plane], frame->linesize[plane], bytes, rows);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -1250,7 +1269,10 @@ static void _openVideo(VideoPlayerT *v, const char *filename) {
|
|||
v->fps.den = DEFAULT_FPS_DENOMINATOR;
|
||||
}
|
||||
|
||||
v4l2 = _rkmppDecoder(decoder);
|
||||
if (v4l2 == NULL) {
|
||||
v4l2 = _v4l2Decoder(decoder);
|
||||
}
|
||||
if ((v4l2 != NULL) && _openDecoder(v, v4l2, stream)) {
|
||||
v->v4l2 = true;
|
||||
utilTrace("Hardware decoding via %s.", v4l2->name);
|
||||
|
|
@ -1496,8 +1518,13 @@ static void _uploadFrame(VideoPlayerT *v) {
|
|||
cb = _neutralChroma(v);
|
||||
cr = cb;
|
||||
}
|
||||
if (v->nv12) {
|
||||
// The neutral plane is a run of CHROMA_NEUTRAL, which reads the same interleaved.
|
||||
SDL_UpdateNVTexture(v->videoTexture, NULL, luma, v->front.linesize[0], cb, v->front.linesize[1]);
|
||||
} else {
|
||||
SDL_UpdateYUVTexture(v->videoTexture, NULL, luma, v->front.linesize[0], cb, v->front.linesize[1], cr, v->front.linesize[2]);
|
||||
}
|
||||
}
|
||||
v->flashed = false;
|
||||
v->uploadedFrame = v->front.frame;
|
||||
}
|
||||
|
|
@ -1505,6 +1532,30 @@ static void _uploadFrame(VideoPlayerT *v) {
|
|||
|
||||
// The V4L2 memory-to-memory decoder for the stream's codec on a Pi build, NULL when there is none or
|
||||
// hardware decoding is off. Whether the device exists is found out when the decoder opens.
|
||||
// Rockchip boards decode through the vendor's Media Process Platform, which FFmpeg exposes as named
|
||||
// decoders in the same way as V4L2's. They exist only when FFmpeg was built against that library,
|
||||
// which is why this is compiled out everywhere else. Tried before V4L2: a Rockchip running its
|
||||
// vendor kernel has both, and the MPP path is the one that works there.
|
||||
static const AVCodec *_rkmppDecoder(const AVCodec *decoder) {
|
||||
static const V4l2DecoderT table[] = {
|
||||
{ AV_CODEC_ID_H264, "h264_rkmpp" },
|
||||
{ AV_CODEC_ID_HEVC, "hevc_rkmpp" }
|
||||
};
|
||||
size_t x = 0;
|
||||
|
||||
if (!RKMPP_DECODE || !_hardwareDecoding) {
|
||||
return NULL;
|
||||
}
|
||||
for (x = 0; x < SDL_arraysize(table); x++) {
|
||||
if (table[x].id == decoder->id) {
|
||||
return avcodec_find_decoder_by_name(table[x].name);
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static const AVCodec *_v4l2Decoder(const AVCodec *decoder) {
|
||||
static const V4l2DecoderT table[] = {
|
||||
{ AV_CODEC_ID_H263, "h263_v4l2m2m" },
|
||||
|
|
@ -1563,7 +1614,11 @@ void videoFlash(int32_t playerHandle) {
|
|||
luma = _lumaPlane(v);
|
||||
chroma = _neutralChroma(v);
|
||||
memset(luma, FLASH_LUMA, v->lumaBytes);
|
||||
if (v->nv12) {
|
||||
SDL_UpdateNVTexture(v->videoTexture, NULL, luma, v->front.linesize[0], chroma, v->front.linesize[1]);
|
||||
} else {
|
||||
SDL_UpdateYUVTexture(v->videoTexture, NULL, luma, v->front.linesize[0], chroma, v->front.linesize[1], chroma, v->front.linesize[2]);
|
||||
}
|
||||
v->flashed = true;
|
||||
}
|
||||
|
||||
|
|
@ -1700,8 +1755,14 @@ bool videoGetPixel(int32_t playerHandle, int32_t x, int32_t y, uint8_t *r, uint8
|
|||
} else {
|
||||
// BT.601 limited range, the same conversion SDL applies on the GPU for SD video.
|
||||
c = v->front.data[0][y * v->front.linesize[0] + x] - 16;
|
||||
if (v->nv12) {
|
||||
// U and V sit side by side for each chroma sample.
|
||||
d = v->front.data[1][(y / 2) * v->front.linesize[1] + (x / 2) * 2] - 128;
|
||||
e = v->front.data[1][(y / 2) * v->front.linesize[1] + (x / 2) * 2 + 1] - 128;
|
||||
} else {
|
||||
d = v->front.data[1][(y / 2) * v->front.linesize[1] + (x / 2)] - 128;
|
||||
e = v->front.data[2][(y / 2) * v->front.linesize[2] + (x / 2)] - 128;
|
||||
}
|
||||
value = (298 * c + 409 * e + 128) >> 8;
|
||||
*r = (uint8_t)((value < 0) ? 0 : ((value > 255) ? 255 : value));
|
||||
value = (298 * c - 100 * d - 208 * e + 128) >> 8;
|
||||
|
|
@ -1754,8 +1815,14 @@ bool videoGetYUVPixel(int32_t playerHandle, int32_t x, int32_t y, uint8_t *luma,
|
|||
return false;
|
||||
}
|
||||
*luma = v->front.data[0][y * v->front.linesize[0] + x];
|
||||
if (v->nv12) {
|
||||
// One chroma plane with U and V side by side; there is no third plane to read.
|
||||
*cb = v->front.data[1][(y / 2) * v->front.linesize[1] + (x / 2) * 2];
|
||||
*cr = v->front.data[1][(y / 2) * v->front.linesize[1] + (x / 2) * 2 + 1];
|
||||
} else {
|
||||
*cb = v->front.data[1][(y / 2) * v->front.linesize[1] + (x / 2)];
|
||||
*cr = v->front.data[2][(y / 2) * v->front.linesize[2] + (x / 2)];
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1834,11 +1901,15 @@ int32_t videoLoad(const char *videoFilename, const char *audioFilename, const ch
|
|||
|
||||
// Video: demuxer, frame table, decoder.
|
||||
_openVideo(v, videoFilename);
|
||||
// A hardware decoder hands its pictures back as NV12. Keeping them that way the whole distance
|
||||
// spends no CPU on a colour conversion that the GPU does anyway when it samples the texture; the
|
||||
// V4L2 path is left alone because what its drivers hand over varies.
|
||||
v->nv12 = (!rgb) && (v->hwDevice != NULL);
|
||||
_buildFrameTable(v, videoFilename, indexPath);
|
||||
_reportKeyframes(v, videoFilename);
|
||||
|
||||
// Create video texture
|
||||
v->videoTexture = SDL_CreateTexture(renderer, rgb ? SDL_PIXELFORMAT_BGRA32 : SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, v->width, v->height);
|
||||
v->videoTexture = SDL_CreateTexture(renderer, rgb ? SDL_PIXELFORMAT_BGRA32 : (v->nv12 ? SDL_PIXELFORMAT_NV12 : SDL_PIXELFORMAT_IYUV), SDL_TEXTUREACCESS_STREAMING, v->width, v->height);
|
||||
if (v->videoTexture == NULL) {
|
||||
utilDie("%s", SDL_GetError());
|
||||
}
|
||||
|
|
|
|||
111
thirdparty/rockchip-mpp/.gitignore
vendored
Normal file
111
thirdparty/rockchip-mpp/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
#
|
||||
# cache files
|
||||
#
|
||||
*~
|
||||
*.swp
|
||||
*.gc??
|
||||
|
||||
#
|
||||
# gnu global files
|
||||
#
|
||||
GPATH
|
||||
GRTAGS
|
||||
GSYMS
|
||||
GTAGS
|
||||
ID
|
||||
cscope.in.out
|
||||
cscope.out
|
||||
cscope.po.out
|
||||
tags
|
||||
.prjBuild.sh
|
||||
.prjDebug.sh
|
||||
prjBuild.sh
|
||||
prjDebug.sh
|
||||
debug.gdb
|
||||
|
||||
#
|
||||
# GNU Autotools
|
||||
#
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
config.h
|
||||
config.h.in
|
||||
config.h-new
|
||||
config.log
|
||||
config.status
|
||||
config.guess
|
||||
config.sub
|
||||
config.rpath
|
||||
configure
|
||||
libtool
|
||||
stamp-h
|
||||
stamp-h.in
|
||||
stamp-h1
|
||||
ltmain.sh
|
||||
missing
|
||||
mkinstalldirs
|
||||
compile
|
||||
install-sh
|
||||
depcomp
|
||||
autoregen.sh
|
||||
ABOUT-NLS
|
||||
/INSTALL
|
||||
_stdint.h
|
||||
.dirstamp
|
||||
/m4
|
||||
.deps
|
||||
.libs
|
||||
*.lo
|
||||
*.la
|
||||
*.o
|
||||
Makefile.in
|
||||
Makefile
|
||||
/m4
|
||||
tmp-orc.c
|
||||
*orc.h
|
||||
|
||||
#
|
||||
# VS
|
||||
#
|
||||
Build
|
||||
*.user
|
||||
*.suo
|
||||
*.ipch
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.DS_Store
|
||||
|
||||
/test-driver
|
||||
*.log
|
||||
*.trs
|
||||
|
||||
/subprojects
|
||||
|
||||
#
|
||||
# Building cache
|
||||
#
|
||||
/build
|
||||
/mpp/version.h
|
||||
|
||||
#
|
||||
# Debian
|
||||
#
|
||||
/obj-arm-linux-gnueabihf/
|
||||
/obj-aarch64-linux-gnu/
|
||||
|
||||
#
|
||||
# VSCode
|
||||
#
|
||||
.vscode/
|
||||
.code-workspace
|
||||
|
||||
#
|
||||
# Clangd
|
||||
#
|
||||
.cache
|
||||
.clangd
|
||||
.clang-format
|
||||
compile_commands.json
|
||||
|
||||
# claude
|
||||
.claude
|
||||
1
thirdparty/rockchip-mpp/.vendored-commit
vendored
Normal file
1
thirdparty/rockchip-mpp/.vendored-commit
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
0986d01294d5c2449c14cf13af9b740368c33967 2026-08-25
|
||||
330
thirdparty/rockchip-mpp/Android.bp
vendored
Normal file
330
thirdparty/rockchip-mpp/Android.bp
vendored
Normal file
|
|
@ -0,0 +1,330 @@
|
|||
cc_defaults {
|
||||
name: "mpp_defaults",
|
||||
|
||||
cflags: [
|
||||
"-DENABLE_FASTPLAY_ONCE",
|
||||
"-DHAVE_AV1D",
|
||||
"-DHAVE_AVS2D",
|
||||
"-DHAVE_AVSD",
|
||||
"-DHAVE_H263D",
|
||||
"-DHAVE_H264D",
|
||||
"-DHAVE_H264E",
|
||||
"-DHAVE_H265D",
|
||||
"-DHAVE_H265E",
|
||||
"-DHAVE_JPEGD",
|
||||
"-DHAVE_JPEGE",
|
||||
"-DHAVE_MPEG2D",
|
||||
"-DHAVE_MPEG4D",
|
||||
"-DHAVE_VP8D",
|
||||
"-DHAVE_VP8E",
|
||||
"-DHAVE_VP9D",
|
||||
"-DHAVE_VPROC",
|
||||
"-Wno-implicit-fallthrough",
|
||||
"-Wno-pointer-arith",
|
||||
"-Wno-typedef-redefinition",
|
||||
"-Wno-unused-variable",
|
||||
"-Wno-unused-parameter",
|
||||
"-Wno-unused-function",
|
||||
"-Wno-unused-label",
|
||||
"-Wno-address-of-packed-member",
|
||||
"-Wno-sometimes-uninitialized",
|
||||
"-Wno-missing-field-initializers",
|
||||
],
|
||||
|
||||
local_include_dirs: [
|
||||
"mpp/base/inc",
|
||||
"mpp/common",
|
||||
"mpp/codec/inc",
|
||||
"mpp/codec/dec/common",
|
||||
"mpp/codec/enc/h264",
|
||||
"mpp/codec/enc/h265",
|
||||
"mpp/vproc/inc",
|
||||
"mpp/hal/inc",
|
||||
"mpp/hal/common",
|
||||
"mpp/hal/common/av1",
|
||||
"mpp/hal/common/h265",
|
||||
"mpp/hal/common/h264",
|
||||
"mpp/hal/common/jpeg",
|
||||
"mpp/hal/rkenc/common",
|
||||
"mpp/hal/rkenc/h265e",
|
||||
"mpp/hal/rkenc/h264e",
|
||||
"mpp/hal/rkenc/jpege",
|
||||
"mpp/hal/rkdec/inc",
|
||||
"mpp/hal/rkdec/av1d",
|
||||
"mpp/hal/vpu/common",
|
||||
"mpp/hal/vpu/jpege",
|
||||
"mpp/hal/vpu/av1d",
|
||||
"mpp/hal/vpu/h264e",
|
||||
"mpp/inc",
|
||||
"osal",
|
||||
"osal/inc",
|
||||
"osal/allocator",
|
||||
"osal/driver/inc",
|
||||
"kmpp/inc",
|
||||
"kmpp/base/inc",
|
||||
"inc",
|
||||
"utils",
|
||||
],
|
||||
|
||||
generated_headers: ["mpp_version_header"],
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "mpp_base_srcs",
|
||||
srcs: [
|
||||
"mpp/base/*.c",
|
||||
],
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "mpp_codec_srcs",
|
||||
srcs: [
|
||||
"mpp/codec/*.c",
|
||||
"mpp/codec/dec/**/*.c",
|
||||
"mpp/codec/enc/**/*.c",
|
||||
"mpp/codec/rc/*.c",
|
||||
],
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "mpp_hal_srcs",
|
||||
srcs: [
|
||||
"mpp/hal/*.c",
|
||||
"mpp/hal/common/**/*.c",
|
||||
"mpp/hal/vpu/**/*.c",
|
||||
"mpp/hal/rkdec/**/*.c",
|
||||
"mpp/hal/rkenc/common/*.c",
|
||||
"mpp/hal/rkenc/h264e/hal_h264e_vepu541.c",
|
||||
"mpp/hal/rkenc/h264e/hal_h264e_vepu580.c",
|
||||
"mpp/hal/rkenc/h264e/hal_h264e_vepu540c.c",
|
||||
"mpp/hal/rkenc/h264e/hal_h264e_vepu510.c",
|
||||
"mpp/hal/rkenc/h264e/hal_h264e_vepu511.c",
|
||||
"mpp/hal/rkenc/h265e/hal_h265e_vepu541.c",
|
||||
"mpp/hal/rkenc/h265e/hal_h265e_vepu580.c",
|
||||
"mpp/hal/rkenc/h265e/hal_h265e_vepu540c.c",
|
||||
"mpp/hal/rkenc/h265e/hal_h265e_vepu510.c",
|
||||
"mpp/hal/rkenc/h265e/hal_h265e_vepu511.c",
|
||||
"mpp/hal/rkenc/jpege/hal_jpege_vepu540c.c",
|
||||
"mpp/hal/rkenc/jpege/hal_jpege_vepu511.c",
|
||||
"mpp/hal/rkenc/jpege/hal_jpege_vpu720.c",
|
||||
"mpp/hal/dummy/*.c",
|
||||
],
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "mpp_vproc_srcs",
|
||||
srcs: [
|
||||
"mpp/vproc/*.c",
|
||||
"mpp/vproc/iep/*.c",
|
||||
"mpp/vproc/iep2/*.c",
|
||||
"mpp/vproc/rga/*.c",
|
||||
"mpp/vproc/vdpp/*.c",
|
||||
],
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "mpp_kmpp_srcs",
|
||||
srcs: [
|
||||
"kmpp/base/*.c",
|
||||
"kmpp/*.c"
|
||||
],
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "mpp_osal_srcs",
|
||||
srcs: [
|
||||
"osal/*.c",
|
||||
"osal/allocator/*.c",
|
||||
"osal/android/*.c",
|
||||
"osal/driver/*.c",
|
||||
],
|
||||
}
|
||||
|
||||
genrule {
|
||||
name: "mpp_version_header",
|
||||
srcs: ["build/cmake/version.in"],
|
||||
out: ["version.h"],
|
||||
cmd: "VERSION_INFO=`cd hardware/rockchip/libmpp; git log -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s\"`;" +
|
||||
"HISTORY_0=`cd hardware/rockchip/libmpp; git log HEAD~0 -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s %d\"`;" +
|
||||
"HISTORY_1=`cd hardware/rockchip/libmpp; git log HEAD~1 -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s %d\"`;" +
|
||||
"HISTORY_2=`cd hardware/rockchip/libmpp; git log HEAD~2 -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s %d\"`;" +
|
||||
"HISTORY_3=`cd hardware/rockchip/libmpp; git log HEAD~3 -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s %d\"`;" +
|
||||
"HISTORY_4=`cd hardware/rockchip/libmpp; git log HEAD~4 -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s %d\"`;" +
|
||||
"HISTORY_5=`cd hardware/rockchip/libmpp; git log HEAD~5 -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s %d\"`;" +
|
||||
"HISTORY_6=`cd hardware/rockchip/libmpp; git log HEAD~6 -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s %d\"`;" +
|
||||
"HISTORY_7=`cd hardware/rockchip/libmpp; git log HEAD~7 -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s %d\"`;" +
|
||||
"HISTORY_8=`cd hardware/rockchip/libmpp; git log HEAD~8 -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s %d\"`;" +
|
||||
"HISTORY_9=`cd hardware/rockchip/libmpp; git log HEAD~9 -1 --oneline --date=short --pretty=format:\"%h author: %<|(30)%an %cd %s %d\"`;" +
|
||||
"sed -e \"s|@VERSION_INFO@|\\\"$$VERSION_INFO\\\"|g\" " +
|
||||
" -e \"s|@VERSION_CNT@|10|g\" " +
|
||||
" -e \"s|@VERSION_HISTORY_0@|\\\"$$HISTORY_0\\\"|g\" " +
|
||||
" -e \"s|@VERSION_HISTORY_1@|\\\"$$HISTORY_1\\\"|g\" " +
|
||||
" -e \"s|@VERSION_HISTORY_2@|\\\"$$HISTORY_2\\\"|g\" " +
|
||||
" -e \"s|@VERSION_HISTORY_3@|\\\"$$HISTORY_3\\\"|g\" " +
|
||||
" -e \"s|@VERSION_HISTORY_4@|\\\"$$HISTORY_4\\\"|g\" " +
|
||||
" -e \"s|@VERSION_HISTORY_5@|\\\"$$HISTORY_5\\\"|g\" " +
|
||||
" -e \"s|@VERSION_HISTORY_6@|\\\"$$HISTORY_6\\\"|g\" " +
|
||||
" -e \"s|@VERSION_HISTORY_7@|\\\"$$HISTORY_7\\\"|g\" " +
|
||||
" -e \"s|@VERSION_HISTORY_8@|\\\"$$HISTORY_8\\\"|g\" " +
|
||||
" -e \"s|@VERSION_HISTORY_9@|\\\"$$HISTORY_9\\\"|g\" " +
|
||||
" $(in)>$(out)",
|
||||
}
|
||||
|
||||
cc_library_static {
|
||||
name: "libmpputils-static",
|
||||
srcs: [
|
||||
"utils/*.c",
|
||||
],
|
||||
export_include_dirs: [
|
||||
"utils",
|
||||
],
|
||||
defaults: [
|
||||
"mpp_defaults",
|
||||
],
|
||||
}
|
||||
|
||||
cc_library_headers {
|
||||
name: "libmpp_headers",
|
||||
export_include_dirs: [
|
||||
"inc",
|
||||
"osal/inc",
|
||||
],
|
||||
vendor_available: true,
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libmpp",
|
||||
srcs: [
|
||||
"mpp/*.c",
|
||||
":mpp_base_srcs",
|
||||
":mpp_codec_srcs",
|
||||
":mpp_vproc_srcs",
|
||||
":mpp_kmpp_srcs",
|
||||
":mpp_hal_srcs",
|
||||
":mpp_osal_srcs",
|
||||
],
|
||||
|
||||
export_include_dirs: [
|
||||
"inc",
|
||||
"osal/inc",
|
||||
],
|
||||
|
||||
shared_libs: [
|
||||
"liblog",
|
||||
],
|
||||
|
||||
defaults: [
|
||||
"mpp_defaults",
|
||||
],
|
||||
|
||||
vendor_available: true,
|
||||
}
|
||||
|
||||
cc_library {
|
||||
name: "libvpu",
|
||||
srcs: [
|
||||
"mpp/legacy/vpu.c",
|
||||
"mpp/legacy/vpu_api.cpp",
|
||||
"mpp/legacy/vpu_api_legacy.cpp",
|
||||
"mpp/legacy/vpu_api_mlvec.cpp",
|
||||
"mpp/legacy/vpu_mem_legacy.c",
|
||||
"mpp/legacy/rk_list.cpp",
|
||||
"mpp/mpp_info.c",
|
||||
],
|
||||
|
||||
export_include_dirs: [
|
||||
"inc"
|
||||
],
|
||||
|
||||
shared_libs: [
|
||||
"libmpp",
|
||||
],
|
||||
|
||||
defaults: [
|
||||
"mpp_defaults",
|
||||
],
|
||||
|
||||
vendor_available: true,
|
||||
}
|
||||
|
||||
cc_test {
|
||||
name: "mpp_info_test",
|
||||
srcs: ["test/mpp_info_test.c"],
|
||||
shared_libs: ["libmpp"],
|
||||
static_libs: ["libmpputils-static"],
|
||||
defaults: ["mpp_defaults"],
|
||||
}
|
||||
|
||||
cc_test {
|
||||
name: "mpi_dec_test",
|
||||
srcs: ["test/mpi_dec_test.c"],
|
||||
shared_libs: ["libmpp"],
|
||||
static_libs: ["libmpputils-static"],
|
||||
defaults: ["mpp_defaults"],
|
||||
}
|
||||
|
||||
cc_test {
|
||||
name: "mpi_dec_mt_test",
|
||||
srcs: ["test/mpi_dec_mt_test.c"],
|
||||
shared_libs: ["libmpp"],
|
||||
static_libs: ["libmpputils-static"],
|
||||
defaults: ["mpp_defaults"],
|
||||
}
|
||||
|
||||
cc_test {
|
||||
name: "mpi_dec_nt_test",
|
||||
srcs: ["test/mpi_dec_nt_test.c"],
|
||||
shared_libs: ["libmpp"],
|
||||
static_libs: ["libmpputils-static"],
|
||||
defaults: ["mpp_defaults"],
|
||||
}
|
||||
|
||||
cc_test {
|
||||
name: "mpi_enc_test",
|
||||
srcs: ["test/mpi_enc_test.c"],
|
||||
shared_libs: ["libmpp"],
|
||||
static_libs: ["libmpputils-static"],
|
||||
defaults: ["mpp_defaults"],
|
||||
}
|
||||
|
||||
cc_test {
|
||||
name: "mpi_enc_mt_test",
|
||||
srcs: ["test/mpi_enc_mt_test.c"],
|
||||
shared_libs: ["libmpp"],
|
||||
static_libs: ["libmpputils-static"],
|
||||
defaults: ["mpp_defaults"],
|
||||
}
|
||||
|
||||
cc_test {
|
||||
name: "mpi_rc2_test",
|
||||
srcs: ["test/mpi_rc2_test.c"],
|
||||
shared_libs: ["libmpp"],
|
||||
static_libs: ["libmpputils-static"],
|
||||
defaults: ["mpp_defaults"],
|
||||
}
|
||||
|
||||
cc_test {
|
||||
name: "mpi_dec_multi_test",
|
||||
srcs: ["test/mpi_dec_multi_test.c"],
|
||||
shared_libs: ["libmpp"],
|
||||
static_libs: ["libmpputils-static"],
|
||||
defaults: ["mpp_defaults"],
|
||||
}
|
||||
|
||||
/*
|
||||
cc_test {
|
||||
name: "mpi_dec_slt_test",
|
||||
srcs: ["test/mpi_dec_slt_test.c"],
|
||||
shared_libs: ["libmpp"],
|
||||
static_libs: ["libmpputils-static"],
|
||||
defaults: ["mpp_defaults"],
|
||||
}
|
||||
|
||||
cc_test {
|
||||
name: "mpi_enc_slt_test",
|
||||
srcs: ["test/mpi_enc_slt_test.c"],
|
||||
shared_libs: ["libmpp"],
|
||||
static_libs: ["libmpputils-static"],
|
||||
defaults: ["mpp_defaults"],
|
||||
}
|
||||
*/
|
||||
1305
thirdparty/rockchip-mpp/CHANGELOG.md
vendored
Normal file
1305
thirdparty/rockchip-mpp/CHANGELOG.md
vendored
Normal file
File diff suppressed because it is too large
Load diff
384
thirdparty/rockchip-mpp/CMakeLists.txt
vendored
Normal file
384
thirdparty/rockchip-mpp/CMakeLists.txt
vendored
Normal file
|
|
@ -0,0 +1,384 @@
|
|||
# ----------------------------------------------------------------------------
|
||||
# Root CMake file for Rockchip Media Process Platform (MPP)
|
||||
#
|
||||
# - 10:34 2015/7/27: Initial version <herman.chen@rock-chips.com>
|
||||
#
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# vim: syntax=cmake
|
||||
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
# default to Release build for GCC builds
|
||||
set(CMAKE_BUILD_TYPE Debug CACHE STRING
|
||||
"Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel."
|
||||
FORCE)
|
||||
endif()
|
||||
message(STATUS "cmake version ${CMAKE_VERSION}")
|
||||
|
||||
# Search packages for host system instead of packages for target system
|
||||
# in case of cross compilation these macro should be defined by toolchain file
|
||||
if(NOT COMMAND find_host_package)
|
||||
macro(find_host_package)
|
||||
find_package(${ARGN})
|
||||
endmacro()
|
||||
endif()
|
||||
if(NOT COMMAND find_host_program)
|
||||
macro(find_host_program)
|
||||
find_program(${ARGN})
|
||||
endmacro()
|
||||
endif()
|
||||
|
||||
if(POLICY CMP0009)
|
||||
cmake_policy(SET CMP0009 NEW)
|
||||
endif()
|
||||
|
||||
cmake_minimum_required(VERSION 3.5)
|
||||
project (rk_mpp)
|
||||
|
||||
include(CheckIncludeFiles)
|
||||
include(CheckFunctionExists)
|
||||
include(CheckSymbolExists)
|
||||
include(CheckCXXCompilerFlag)
|
||||
include(${PROJECT_SOURCE_DIR}/build/cmake/merge_objects.cmake)
|
||||
|
||||
# setup output library name
|
||||
# Linux default name - rockchip_mpp and rockchip_vpu
|
||||
# Android default name - mpp and vpu
|
||||
# For historical reason libraries on Android is named as mpp and vpu. But for
|
||||
# better naming rule on Linux it should add vendor prefix.
|
||||
# So we use this ugly method to avoid massive maintain issue.
|
||||
if (NOT MPP_PROJECT_NAME)
|
||||
set(MPP_PROJECT_NAME rockchip_mpp)
|
||||
endif()
|
||||
set(MPP_STATIC ${MPP_PROJECT_NAME}_static)
|
||||
set(MPP_SHARED ${MPP_PROJECT_NAME})
|
||||
|
||||
if (NOT VPU_PROJECT_NAME)
|
||||
set(VPU_PROJECT_NAME rockchip_vpu)
|
||||
endif()
|
||||
set(VPU_STATIC ${VPU_PROJECT_NAME}_static)
|
||||
set(VPU_SHARED ${VPU_PROJECT_NAME})
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# set property to classify library kinds
|
||||
# ----------------------------------------------------------------------------
|
||||
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
||||
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
|
||||
# ----------------------------------------------------------------------------
|
||||
# enable test in this project
|
||||
# ----------------------------------------------------------------------------
|
||||
option(BUILD_TEST "enable test binary building)" ON)
|
||||
# ----------------------------------------------------------------------------
|
||||
# export json compile commands
|
||||
# ----------------------------------------------------------------------------
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS true)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# System architecture detection
|
||||
# ----------------------------------------------------------------------------
|
||||
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" SYSPROC)
|
||||
set(X86_ALIASES x86 i386 i686 x86_64 amd64)
|
||||
list(FIND X86_ALIASES "${SYSPROC}" X86MATCH)
|
||||
if("${CMAKE_C_COMPILER}" MATCHES "-buildroot-[^/]+$")
|
||||
message(STATUS "Detected Buildroot toolchain")
|
||||
# Use buildroot toolchain's default architecture settings
|
||||
elseif("${SYSPROC}" STREQUAL "" OR X86MATCH GREATER "-1")
|
||||
message(STATUS "Detected x86 system processor")
|
||||
set(X86 true)
|
||||
add_definitions(-DARCH_X86=1)
|
||||
if("${CMAKE_SIZEOF_VOID_P}" MATCHES 8)
|
||||
set(X64 true)
|
||||
add_definitions(-DARCH_X64=1)
|
||||
message(STATUS "Define X86_64 to 1")
|
||||
endif()
|
||||
elseif(${SYSPROC} STREQUAL "armv6l")
|
||||
message(STATUS "Detected ARMv6 system processor")
|
||||
set(ARM true)
|
||||
set(ARMEABI_V6 true)
|
||||
elseif(${SYSPROC} STREQUAL "armv7-a")
|
||||
message(STATUS "Detected ARMv7 system processor")
|
||||
set(ARM true)
|
||||
set(ARMEABI_V7A true)
|
||||
elseif(${SYSPROC} STREQUAL "armv7-a_hardfp" OR ${SYSPROC} STREQUAL "armv7l")
|
||||
message(STATUS "Detected ARMv7 system processor")
|
||||
set(ARM true)
|
||||
set(ARMEABI_V7A_HARDFP true)
|
||||
elseif(${SYSPROC} STREQUAL "aarch64" OR ${SYSPROC} STREQUAL "armv8-a")
|
||||
message(STATUS "Detected ARMv8 system processor")
|
||||
set(ARM true)
|
||||
set(ARMEABI_V8 true)
|
||||
else()
|
||||
message(STATUS "CMAKE_SYSTEM_PROCESSOR value `${CMAKE_SYSTEM_PROCESSOR}` is unknown")
|
||||
message(STATUS "Please add this value near ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE}")
|
||||
endif()
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Compiler detection
|
||||
# ----------------------------------------------------------------------------
|
||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||
set(CLANG true)
|
||||
endif()
|
||||
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
set(GCC true)
|
||||
endif()
|
||||
|
||||
if(${CMAKE_BUILD_TYPE} MATCHES "Release")
|
||||
# remove -g option for high version ndk
|
||||
string(REGEX REPLACE "(^|[ \t])-g([0-9]+)?([ \t]|$)" " " TMP "${CMAKE_C_FLAGS}")
|
||||
string(REGEX REPLACE "[ ]+" " " CMAKE_C_FLAGS "${TMP}")
|
||||
string(REGEX REPLACE "(^|[ \t])-g([0-9]+)?([ \t]|$)" " " TMP "${CMAKE_CXX_FLAGS}")
|
||||
string(REGEX REPLACE "[ ]+" " " CMAKE_CXX_FLAGS "${TMP}")
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -DNDEBUG")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -DNDEBUG")
|
||||
else()
|
||||
add_definitions(-g)
|
||||
endif()
|
||||
|
||||
if(GCC)
|
||||
if(ARM)
|
||||
if(ARMEABI_V6)
|
||||
add_definitions(-march=armv6 -mfloat-abi=hard -mfpu=vfp)
|
||||
elseif(ARMEABI_V7A)
|
||||
add_definitions(-march=armv7-a -mfloat-abi=softfp -mfpu=neon)
|
||||
elseif(ARMEABI_V7A_HARDFP)
|
||||
add_definitions(-march=armv7-a -mfloat-abi=hard -mfpu=neon)
|
||||
elseif(ARMEABI_V8)
|
||||
add_definitions(-march=armv8-a)
|
||||
endif()
|
||||
else()
|
||||
if(X86 AND NOT X64)
|
||||
add_definitions(-march=i686)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# disable multichar warning
|
||||
add_definitions(-Wno-multichar)
|
||||
# add PIC flag
|
||||
add_definitions(-fPIC)
|
||||
# disable exception for C++
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
|
||||
# save intermediate files
|
||||
# add_definitions(-save-temps)
|
||||
|
||||
# check library mvec
|
||||
find_library(LMVEC_LIB mvec)
|
||||
if(LMVEC_LIB)
|
||||
set(LIBM mvec m)
|
||||
set(MPP_PKGCONFIG_DEPENDENT_LIBS "-lmvec -lm")
|
||||
else()
|
||||
set(LIBM m)
|
||||
set(MPP_PKGCONFIG_DEPENDENT_LIBS "-lm")
|
||||
add_definitions(-fno-builtin-pow)
|
||||
endif()
|
||||
|
||||
option(ASAN_CHECK "enable Address Sanitizer (Asan)" OFF)
|
||||
if(ASAN_CHECK)
|
||||
add_definitions(-fsanitize=address -static-libasan -g)
|
||||
set(ASAN_LIB libasan.a dl rt m)
|
||||
set(ASAN_BIN dl rt m)
|
||||
endif(ASAN_CHECK)
|
||||
endif(GCC)
|
||||
|
||||
if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
|
||||
add_compile_options(
|
||||
"$<$<COMPILE_LANGUAGE:C>:-Wall;-Wextra;-Wuninitialized;-Wmissing-field-initializers>"
|
||||
)
|
||||
endif()
|
||||
|
||||
# for libary linking
|
||||
set(BEGIN_WHOLE_ARCHIVE -Wl,--whole-archive)
|
||||
set(END_WHOLE_ARCHIVE -Wl,--no-whole-archive)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Create git version information
|
||||
# ----------------------------------------------------------------------------
|
||||
set(VERSION_CNT 0)
|
||||
set(VERSION_MAX_CNT 9)
|
||||
set(VERSION_INFO "\"unknown mpp version for missing VCS info\"")
|
||||
foreach (CNT RANGE ${VERSION_MAX_CNT})
|
||||
set(VERSION_HISTORY_${CNT} "NULL")
|
||||
endforeach(CNT)
|
||||
|
||||
if(EXISTS "${PROJECT_SOURCE_DIR}/.git")
|
||||
find_host_package(Git)
|
||||
if(GIT_FOUND)
|
||||
# get current version info
|
||||
set(GIT_LOG_FORMAT "%h author: %<|(30)%an %cd %s")
|
||||
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} log -1 --oneline --date=short --pretty=format:${GIT_LOG_FORMAT}
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE EXEC_OUT
|
||||
ERROR_VARIABLE EXEC_ERROR
|
||||
RESULT_VARIABLE EXEC_RET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
if (NOT EXEC_RET)
|
||||
set(VERSION_INFO ${EXEC_OUT})
|
||||
message(STATUS "current version:")
|
||||
message(STATUS "${VERSION_INFO}")
|
||||
string(REPLACE "\"" "\\\"" VERSION_INFO ${VERSION_INFO})
|
||||
set(VERSION_INFO "\"${VERSION_INFO}\"")
|
||||
else()
|
||||
message(STATUS "git ret ${EXEC_RET}")
|
||||
message(STATUS "${EXEC_ERROR}")
|
||||
endif()
|
||||
|
||||
set(GIT_LOG_FORMAT "%h author: %<|(30)%an %cd %s %d")
|
||||
|
||||
# get history version information
|
||||
# setup logs
|
||||
message(STATUS "git version history:")
|
||||
foreach (CNT RANGE ${VERSION_MAX_CNT})
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} log HEAD~${CNT} -1 --oneline --date=short --pretty=format:${GIT_LOG_FORMAT}
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE EXEC_OUT
|
||||
ERROR_VARIABLE EXEC_ERROR
|
||||
RESULT_VARIABLE EXEC_RET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
if (NOT EXEC_RET)
|
||||
set(VERSION_LOG ${EXEC_OUT})
|
||||
string(REPLACE "\"" "\\\"" VERSION_LOG ${VERSION_LOG})
|
||||
message(STATUS ${VERSION_LOG})
|
||||
set(VERSION_HISTORY_${CNT} "\"${VERSION_LOG}\"")
|
||||
math(EXPR VERSION_CNT "${VERSION_CNT}+1")
|
||||
endif()
|
||||
endforeach(CNT)
|
||||
message(STATUS "total ${VERSION_CNT} git version recorded")
|
||||
endif()
|
||||
|
||||
# add git hooks
|
||||
if (EXISTS "${PROJECT_SOURCE_DIR}/tools/hooks/")
|
||||
set(GIT_HOOK_SRC "${PROJECT_SOURCE_DIR}/tools/hooks/")
|
||||
if(EXISTS "${PROJECT_SOURCE_DIR}/.git/hooks")
|
||||
set(GIT_HOOK_DST "${PROJECT_SOURCE_DIR}/.git/hooks/")
|
||||
file(COPY ${GIT_HOOK_SRC} DESTINATION ${GIT_HOOK_DST})
|
||||
message(STATUS "Install git hooks done")
|
||||
endif(EXISTS "${PROJECT_SOURCE_DIR}/.git/hooks")
|
||||
endif(EXISTS "${PROJECT_SOURCE_DIR}/tools/hooks/")
|
||||
endif(EXISTS "${PROJECT_SOURCE_DIR}/.git")
|
||||
|
||||
configure_file(
|
||||
"${PROJECT_SOURCE_DIR}/build/cmake/version.in"
|
||||
"${PROJECT_SOURCE_DIR}/mpp/version.h"
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Build options
|
||||
# ----------------------------------------------------------------------------
|
||||
find_package(PkgConfig)
|
||||
include(GNUInstallDirs)
|
||||
pkg_search_module(PTHREAD pthread)
|
||||
|
||||
find_package(Threads)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Set Warning as Error
|
||||
# ----------------------------------------------------------------------------
|
||||
option(WARNINGS_AS_ERRORS "Stop compiles on first warning" OFF)
|
||||
if(WARNINGS_AS_ERRORS)
|
||||
if(GCC)
|
||||
add_definitions(-Werror)
|
||||
elseif(MSVC)
|
||||
add_definitions(/WX)
|
||||
endif()
|
||||
endif(WARNINGS_AS_ERRORS)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# look for stdint.h
|
||||
# ----------------------------------------------------------------------------
|
||||
if(MSVC)
|
||||
check_include_files(stdint.h HAVE_STDINT_H)
|
||||
if(NOT HAVE_STDINT_H)
|
||||
include_directories(osal/windows)
|
||||
endif(NOT HAVE_STDINT_H)
|
||||
endif(MSVC)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Share library option
|
||||
# ----------------------------------------------------------------------------
|
||||
option(BUILD_SHARED_LIBS "Build shared library" ON)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# scan all LOG_TAG for log information and generate module header file
|
||||
# ----------------------------------------------------------------------------
|
||||
set( module_list "" )
|
||||
|
||||
file ( GLOB_RECURSE ALL_SRC . *.c;*.cpp )
|
||||
foreach( files ${ALL_SRC} )
|
||||
file( STRINGS ${files} module_tag_line REGEX "MODULE_TAG( )+\".+\"" )
|
||||
if(module_tag_line)
|
||||
string( REGEX REPLACE "^(.)* MODULE_TAG( )+\"(.*)\"" \\3 module_tag ${module_tag_line} )
|
||||
list( APPEND module_list ${module_tag} )
|
||||
endif()
|
||||
endforeach()
|
||||
list( SORT module_list )
|
||||
list( LENGTH module_list module_size )
|
||||
#message(STATUS "module_list: ${module_list}")
|
||||
#message(STATUS "module_size: ${module_size}")
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Start module definition
|
||||
# ----------------------------------------------------------------------------
|
||||
# project overall include file
|
||||
include_directories(inc)
|
||||
# small utile functions for test case
|
||||
include_directories(utils)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# osal library
|
||||
# ----------------------------------------------------------------------------
|
||||
# Operation System Abstract Layer (OSAL) include
|
||||
include_directories(osal/inc)
|
||||
# OSAL is needed on all platform, do not need option
|
||||
add_subdirectory(osal)
|
||||
|
||||
# Media Process Platform include
|
||||
include_directories(mpp/inc)
|
||||
include_directories(mpp/base/inc)
|
||||
# Kernel Media Process Platform include
|
||||
include_directories(kmpp/inc)
|
||||
include_directories(kmpp/base/inc)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# utils for test case
|
||||
# ----------------------------------------------------------------------------
|
||||
add_subdirectory(utils)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Kernel Media Process Platform library
|
||||
# ----------------------------------------------------------------------------
|
||||
add_subdirectory(kmpp)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Media Process Platform library
|
||||
# ----------------------------------------------------------------------------
|
||||
add_subdirectory(mpp)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# test / demo
|
||||
# ----------------------------------------------------------------------------
|
||||
add_subdirectory(test)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# install headers
|
||||
# ----------------------------------------------------------------------------
|
||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/inc/
|
||||
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/rockchip"
|
||||
FILES_MATCHING PATTERN "*.h"
|
||||
)
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# pkgconfig
|
||||
# ----------------------------------------------------------------------------
|
||||
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/rockchip_mpp.pc.cmake"
|
||||
"${CMAKE_BINARY_DIR}/rockchip_mpp.pc" @ONLY)
|
||||
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/rockchip_vpu.pc.cmake"
|
||||
"${CMAKE_BINARY_DIR}/rockchip_vpu.pc" @ONLY)
|
||||
install(FILES "${CMAKE_BINARY_DIR}/rockchip_mpp.pc"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
|
||||
install(FILES "${CMAKE_BINARY_DIR}/rockchip_vpu.pc"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/")
|
||||
183
thirdparty/rockchip-mpp/LICENSES/Apache-2.0
vendored
Normal file
183
thirdparty/rockchip-mpp/LICENSES/Apache-2.0
vendored
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
Valid-License-Identifier: Apache-2.0
|
||||
SPDX-URL: https://spdx.org/licenses/Apache-2.0.html
|
||||
Usage-Guide:
|
||||
To use the Apache License version 2.0 put the following SPDX tag/value
|
||||
pair into a comment according to the placement guidelines in the
|
||||
licensing rules documentation:
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
License-Text:
|
||||
|
||||
Apache License
|
||||
|
||||
Version 2.0, January 2004
|
||||
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction, and
|
||||
distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by the
|
||||
copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all other
|
||||
entities that control, are controlled by, or are under common control with
|
||||
that entity. For the purposes of this definition, "control" means (i) the
|
||||
power, direct or indirect, to cause the direction or management of such
|
||||
entity, whether by contract or otherwise, or (ii) ownership of fifty
|
||||
percent (50%) or more of the outstanding shares, or (iii) beneficial
|
||||
ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity exercising
|
||||
permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation source,
|
||||
and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical transformation
|
||||
or translation of a Source form, including but not limited to compiled
|
||||
object code, generated documentation, and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or Object form,
|
||||
made available under the License, as indicated by a copyright notice that
|
||||
is included in or attached to the work (an example is provided in the
|
||||
Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object form,
|
||||
that is based on (or derived from) the Work and for which the editorial
|
||||
revisions, annotations, elaborations, or other modifications represent, as
|
||||
a whole, an original work of authorship. For the purposes of this License,
|
||||
Derivative Works shall not include works that remain separable from, or
|
||||
merely link (or bind by name) to the interfaces of, the Work and Derivative
|
||||
Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including the original
|
||||
version of the Work and any modifications or additions to that Work or
|
||||
Derivative Works thereof, that is intentionally submitted to Licensor for
|
||||
inclusion in the Work by the copyright owner or by an individual or Legal
|
||||
Entity authorized to submit on behalf of the copyright owner. For the
|
||||
purposes of this definition, "submitted" means any form of electronic,
|
||||
verbal, or written communication sent to the Licensor or its
|
||||
representatives, including but not limited to communication on electronic
|
||||
mailing lists, source code control systems, and issue tracking systems that
|
||||
are managed by, or on behalf of, the Licensor for the purpose of discussing
|
||||
and improving the Work, but excluding communication that is conspicuously
|
||||
marked or otherwise designated in writing by the copyright owner as "Not a
|
||||
Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity on
|
||||
behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of this
|
||||
License, each Contributor hereby grants to You a perpetual, worldwide,
|
||||
non-exclusive, no-charge, royalty-free, irrevocable copyright license to
|
||||
reproduce, prepare Derivative Works of, publicly display, publicly
|
||||
perform, sublicense, and distribute the Work and such Derivative Works
|
||||
in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of this
|
||||
License, each Contributor hereby grants to You a perpetual, worldwide,
|
||||
non-exclusive, no-charge, royalty-free, irrevocable (except as stated in
|
||||
this section) patent license to make, have made, use, offer to sell,
|
||||
sell, import, and otherwise transfer the Work, where such license
|
||||
applies only to those patent claims licensable by such Contributor that
|
||||
are necessarily infringed by their Contribution(s) alone or by
|
||||
combination of their Contribution(s) with the Work to which such
|
||||
Contribution(s) was submitted. If You institute patent litigation
|
||||
against any entity (including a cross-claim or counterclaim in a
|
||||
lawsuit) alleging that the Work or a Contribution incorporated within
|
||||
the Work constitutes direct or contributory patent infringement, then
|
||||
any patent licenses granted to You under this License for that Work
|
||||
shall terminate as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the Work or
|
||||
Derivative Works thereof in any medium, with or without modifications,
|
||||
and in Source or Object form, provided that You meet the following
|
||||
conditions:
|
||||
|
||||
a. You must give any other recipients of the Work or Derivative Works a
|
||||
copy of this License; and
|
||||
|
||||
b. You must cause any modified files to carry prominent notices stating
|
||||
that You changed the files; and
|
||||
|
||||
c. You must retain, in the Source form of any Derivative Works that You
|
||||
distribute, all copyright, patent, trademark, and attribution notices
|
||||
from the Source form of the Work, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works; and
|
||||
|
||||
d. If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained within
|
||||
such NOTICE file, excluding those notices that do not pertain to any
|
||||
part of the Derivative Works, in at least one of the following
|
||||
places: within a NOTICE text file distributed as part of the
|
||||
Derivative Works; within the Source form or documentation, if
|
||||
provided along with the Derivative Works; or, within a display
|
||||
generated by the Derivative Works, if and wherever such third-party
|
||||
notices normally appear. The contents of the NOTICE file are for
|
||||
informational purposes only and do not modify the License. You may
|
||||
add Your own attribution notices within Derivative Works that You
|
||||
distribute, alongside or as an addendum to the NOTICE text from the
|
||||
Work, provided that such additional attribution notices cannot be
|
||||
construed as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and may
|
||||
provide additional or different license terms and conditions for use,
|
||||
reproduction, or distribution of Your modifications, or for any such
|
||||
Derivative Works as a whole, provided Your use, reproduction, and
|
||||
distribution of the Work otherwise complies with the conditions stated
|
||||
in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise, any
|
||||
Contribution intentionally submitted for inclusion in the Work by You to
|
||||
the Licensor shall be under the terms and conditions of this License,
|
||||
without any additional terms or conditions. Notwithstanding the above,
|
||||
nothing herein shall supersede or modify the terms of any separate
|
||||
license agreement you may have executed with Licensor regarding such
|
||||
Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or agreed to
|
||||
in writing, Licensor provides the Work (and each Contributor provides
|
||||
its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
OF ANY KIND, either express or implied, including, without limitation,
|
||||
any warranties or conditions of TITLE, NON-INFRINGEMENT,
|
||||
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely
|
||||
responsible for determining the appropriateness of using or
|
||||
redistributing the Work and assume any risks associated with Your
|
||||
exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory, whether
|
||||
in tort (including negligence), contract, or otherwise, unless required
|
||||
by applicable law (such as deliberate and grossly negligent acts) or
|
||||
agreed to in writing, shall any Contributor be liable to You for
|
||||
damages, including any direct, indirect, special, incidental, or
|
||||
consequential damages of any character arising as a result of this
|
||||
License or out of the use or inability to use the Work (including but
|
||||
not limited to damages for loss of goodwill, work stoppage, computer
|
||||
failure or malfunction, or any and all other commercial damages or
|
||||
losses), even if such Contributor has been advised of the possibility of
|
||||
such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing the
|
||||
Work or Derivative Works thereof, You may choose to offer, and charge a
|
||||
fee for, acceptance of support, warranty, indemnity, or other liability
|
||||
obligations and/or rights consistent with this License. However, in
|
||||
accepting such obligations, You may act only on Your own behalf and on
|
||||
Your sole responsibility, not on behalf of any other Contributor, and
|
||||
only if You agree to indemnify, defend, and hold each Contributor
|
||||
harmless for any liability incurred by, or claims asserted against, such
|
||||
Contributor by reason of your accepting any such warranty or additional
|
||||
liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
30
thirdparty/rockchip-mpp/LICENSES/MIT
vendored
Normal file
30
thirdparty/rockchip-mpp/LICENSES/MIT
vendored
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
Valid-License-Identifier: MIT
|
||||
SPDX-URL: https://spdx.org/licenses/MIT.html
|
||||
Usage-Guide:
|
||||
To use the MIT License put the following SPDX tag/value pair into a
|
||||
comment according to the placement guidelines in the licensing rules
|
||||
documentation:
|
||||
SPDX-License-Identifier: MIT
|
||||
License-Text:
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) <year> <copyright holders>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
77
thirdparty/rockchip-mpp/SECURITY.md
vendored
Normal file
77
thirdparty/rockchip-mpp/SECURITY.md
vendored
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
The following versions of MPP are currently supported with security updates:
|
||||
|
||||
| Version | Supported |
|
||||
| :--------------------------- | :----------------------------- |
|
||||
| develop branch (latest) | ✅ Fully supported |
|
||||
| release branch (latest) | ✅ Fully supported |
|
||||
| Older release branches | ⚠️ Critical security fixes only |
|
||||
| Archived versions (< 1.0) | ❌ No longer supported |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
**Please do not** report security vulnerabilities through public GitHub issues, as this could expose the vulnerability to malicious actors.
|
||||
|
||||
If you discover a security vulnerability in MPP, please report it privately using the following methods:
|
||||
|
||||
### Reporting Channels
|
||||
|
||||
1. **Primary Contact** (Recommended)
|
||||
- Email the maintainer at: **herman.chen@rock-chips.com**
|
||||
- Subject format: `[SECURITY] MPP vulnerability report - [brief description]`
|
||||
|
||||
2. **Alternative Channel**
|
||||
- If you cannot reach the primary maintainer, please email: rockchip-opensource@rock-chips.com
|
||||
- Or submit a private ticket via [Rockchip Redmine](http://redmine.rockchip.com.cn)
|
||||
|
||||
### Report Content
|
||||
|
||||
Please include the following information to help us quickly locate and fix the issue:
|
||||
|
||||
- **Vulnerability Description**: Type of vulnerability (e.g., buffer overflow, use-after-free, integer overflow) and scope of impact
|
||||
- **Affected Versions**: Specific MPP version or Git commit hash
|
||||
- **Affected Components**: Specific modules (e.g., codec/parser/HAL/OSAL/allocator, etc.)
|
||||
- **Environment Details**:
|
||||
- Rockchip SoC model (e.g., RK3588, RK3568, etc.)
|
||||
- Operating system (Linux/Android version)
|
||||
- Kernel version
|
||||
- **Reproduction Steps**: Detailed steps to reproduce or PoC (Proof of Concept) code
|
||||
- **Suggested Fix** (optional): If you have a proposed fix, please include it
|
||||
|
||||
## Response Process
|
||||
|
||||
Upon receiving a security report, the maintenance team will follow this process:
|
||||
|
||||
| Timeframe | Action |
|
||||
| :------------------ | :----------------------------------------------------------- |
|
||||
| Within 48 hours | Acknowledge receipt and begin initial assessment |
|
||||
| Within 7 days | Complete vulnerability verification and severity assessment, provide feedback |
|
||||
| Within 30 days | Release security patch (critical vulnerabilities may be faster) |
|
||||
| After patch release | Public disclosure of vulnerability details (coordinated disclosure) |
|
||||
|
||||
## Disclosure Policy
|
||||
|
||||
- **Coordinated Disclosure**: We follow coordinated disclosure principles. After the vulnerability is fixed, details will typically be publicly disclosed within 90 days, or adjusted according to the reporter's preferences
|
||||
- **Acknowledgment**: Once the vulnerability is confirmed and fixed, we will credit the reporter in the release notes (unless you wish to remain anonymous)
|
||||
- **CVE**: If a CVE identifier is needed, please let us know in advance and we will assist with the application
|
||||
|
||||
## Security Best Practices
|
||||
|
||||
When using MPP, the following security measures are recommended:
|
||||
|
||||
1. **Input Validation**: Ensure media streams passed to MPP come from trusted sources, or perform strict validation before decoding
|
||||
2. **Memory Limits**: Use `mpp_buffer_group_limit_config` to limit memory usage and prevent resource exhaustion attacks
|
||||
3. **Sandboxing**: Run MPP-related processes in a privilege-restricted environment
|
||||
4. **Timely Updates**: Keep MPP updated to the latest version to receive the latest security fixes
|
||||
5. **Kernel Security**: Ensure the underlying kernel drivers (vcodec_service/v4l2) are updated to the latest version
|
||||
|
||||
## Known Security Issues
|
||||
|
||||
View [GitHub Security Advisories](https://github.com/HermanChen/mpp/security/advisories) for publicly disclosed security announcements.
|
||||
|
||||
---
|
||||
|
||||
Thank you for contributing to MPP security!
|
||||
14
thirdparty/rockchip-mpp/debian/.gitignore
vendored
Normal file
14
thirdparty/rockchip-mpp/debian/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
/.debhelper/
|
||||
/debhelper-build-stamp
|
||||
/files
|
||||
/librockchip-mpp-dev.substvars
|
||||
/librockchip-mpp-dev/
|
||||
/librockchip-mpp-static.substvars
|
||||
/librockchip-mpp-static/
|
||||
/librockchip-mpp1.substvars
|
||||
/librockchip-mpp1/
|
||||
/rockchip-mpp-demos.substvars
|
||||
/rockchip-mpp-demos/
|
||||
/librockchip-vpu0.substvars
|
||||
/librockchip-vpu0/
|
||||
/tmp/
|
||||
6
thirdparty/rockchip-mpp/debian/README.Debian
vendored
Normal file
6
thirdparty/rockchip-mpp/debian/README.Debian
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
mpp for Debian
|
||||
--------------
|
||||
|
||||
<possible notes regarding this package - if none, delete this file>
|
||||
|
||||
-- Randy Li <randy.li@rock-chips.com> Wed, 03 Aug 2016 08:14:14 +0000
|
||||
10
thirdparty/rockchip-mpp/debian/README.source
vendored
Normal file
10
thirdparty/rockchip-mpp/debian/README.source
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
mpp for Debian
|
||||
--------------
|
||||
|
||||
<this file describes information about the source package, see Debian policy
|
||||
manual section 4.14. You WILL either need to modify or delete this file>
|
||||
|
||||
|
||||
|
||||
-- Randy Li <randy.li@rock-chips.com> Wed, 03 Aug 2016 08:14:14 +0000
|
||||
|
||||
256
thirdparty/rockchip-mpp/debian/changelog
vendored
Normal file
256
thirdparty/rockchip-mpp/debian/changelog
vendored
Normal file
|
|
@ -0,0 +1,256 @@
|
|||
mpp (1.5.0-1) stable; urgency=critical
|
||||
|
||||
* [mpp_enc_impl]: Cleanup hal_task on empty eos task
|
||||
...
|
||||
|
||||
-- Caesar Wang <wxt@rock-chips.com> Thu, 20 May 2021 09:40:00 +0800
|
||||
|
||||
mpp (1.4.0-1) stable; urgency=critical
|
||||
|
||||
[ Herman Chen ]
|
||||
* [vp8d]: Remove unused table
|
||||
|
||||
[ timkingh.huang ]
|
||||
* [h264e]: add SSE parameter check
|
||||
|
||||
[ Herman Chen ]
|
||||
* [h264e]: Add qp min/max limit by bps max/min
|
||||
|
||||
[ timkingh.huang ]
|
||||
* [h264e]: limit bit rate on movement scene
|
||||
|
||||
[ leo.ding ]
|
||||
* [h264e]: fix bug: vepu1 h264 encode
|
||||
* [h264d]: fix bug: when judge whether is end of frame
|
||||
|
||||
[ Herman Chen ]
|
||||
* [rc]: Add bps information print
|
||||
* [test]: Fix rc2 test rc_mode error
|
||||
|
||||
[ leo.ding ]
|
||||
* [h264e]: fix bug: vepu h264 encode rate control
|
||||
|
||||
[ Herman Chen ]
|
||||
* [osal]: Change mpp time print to us
|
||||
* [h264e_rkv]: Fix error qp prev update
|
||||
|
||||
[ leo.ding ]
|
||||
* [jpege]: add vepu1 jpeg encode support
|
||||
* [osal]: linux: add -ldl -lct to link relative library
|
||||
|
||||
[ Herman Chen ]
|
||||
* [oasl]: Add lock timing test
|
||||
* [base]: Add mpp/base/test for task en/dequeue demo
|
||||
|
||||
[ Randy Li ]
|
||||
* [jpege]: fix some compiler warnings
|
||||
* [jpegd]: fix the compiler warnings and hide some symbols
|
||||
* [osal]: fixup for a compiler warning
|
||||
* [allocator]: force using drm allocator in Linux platform
|
||||
* [vpu]: use the platform function to open device node
|
||||
* [vp8d]: fix the vdpu2 decoding error
|
||||
|
||||
[ leo.ding ]
|
||||
* [hal_vp9d]: change stride align to 256 odds
|
||||
|
||||
[ Randy Li ]
|
||||
* [m2vd]: a various of fixup
|
||||
|
||||
[ Herman Chen ]
|
||||
* [h264e]: Fix QP stuck error
|
||||
|
||||
[ timkingh.huang ]
|
||||
* [h264e]: record rate control parameter
|
||||
* [h264e]: tidy code
|
||||
|
||||
[ leo.ding ]
|
||||
* [h264e]: fix bps check failed when mpi setup to fix_qp mode
|
||||
|
||||
[ Randy Li ]
|
||||
* [jpege]: fixup mpp device
|
||||
* Revert "[osal]: linux: add -ldl -lct to link relative library"
|
||||
|
||||
[ leo.ding ]
|
||||
* [h265d]: fix bug: when has no short_rps, it should be has no rps
|
||||
|
||||
[ Randy Li ]
|
||||
* [mpp_dec]: remove obsoleted code and format comments
|
||||
* [mpp]: fixup for the deadlock in decoding
|
||||
|
||||
[ ayaka ]
|
||||
* [test]: add timeout poll type sample code
|
||||
|
||||
[ leo.ding ]
|
||||
* [h265d]: fix bug: malloc buffer matching
|
||||
|
||||
[ timkingh.huang ]
|
||||
* [h264e]: fix rate-control bug
|
||||
* [h264e]: allocate buffers before encoding
|
||||
|
||||
[ sliver.chen ]
|
||||
* [h264]: fix xrgb encode bug
|
||||
|
||||
[ sayon.chen ]
|
||||
* [h265d]: hiding the vps_id information
|
||||
|
||||
[ Randy Li ]
|
||||
* [h264d]: add supporting for the interlace mode
|
||||
|
||||
[ leo.ding ]
|
||||
* [mpg4d]: update spit mode in prepare
|
||||
|
||||
[ ZhouJing ]
|
||||
* [m4vd]: add m4v decoder support for vdpu1
|
||||
|
||||
[ Randy Li ]
|
||||
* [mpg4d]: fixup the compiler warnings
|
||||
* .gitignore: ignore those debian generated files
|
||||
|
||||
[ timkingh.huang ]
|
||||
* [h264e]: fix rate control bug
|
||||
|
||||
[ Randy Li ]
|
||||
* [h264d]: move some variables to its scope
|
||||
* [h264d]: handle svc_extension correctly
|
||||
|
||||
[ leo.ding ]
|
||||
* [vpu_api_legacy]: disprese MPP_DEC_SET_FRAME_INFO function to each codec.
|
||||
|
||||
[ Randy Li ]
|
||||
* [mpp]: wake up the parser thread in the correct place
|
||||
|
||||
[ sliver.chen ]
|
||||
* [test]: add README.md for mpi unit test
|
||||
* [test]: modify to avoid encode dead loop
|
||||
|
||||
[ leo.ding ]
|
||||
* [avsd]: fix bugs: when video is field
|
||||
* [mpp_buf_slot]: fix bug: should return the info_set frame back
|
||||
* [avsd]: add dpb error marking
|
||||
|
||||
[ Randy Li ]
|
||||
* [osal]: fixup for build in linux
|
||||
* [mpp]: move header files into header directory
|
||||
|
||||
[ timkingh.huang ]
|
||||
* [h264e]: add command of MPP_ENC_SET_QP_RANGE
|
||||
* [h264e]: Clear OSD data when zero region number
|
||||
|
||||
[ sliver.chen ]
|
||||
* [m2vd]: add m2vd parser mode
|
||||
|
||||
[ leo.ding ]
|
||||
* [mpg4d]: fix hiding bugs when split mode
|
||||
|
||||
[ Herman Chen ]
|
||||
* [base]: Remove misc buffer group creation
|
||||
* [base]: Disable default print on exit
|
||||
|
||||
[ leo.ding ]
|
||||
* [vpu_api]: add vpuCodecContext parameters
|
||||
|
||||
[ Randy Li ]
|
||||
* [mpp_frame]: add complex formats and more comments
|
||||
|
||||
[ leo.ding ]
|
||||
* [vp9d]: fix error: opening device should close, when deinit
|
||||
|
||||
[ Randy Li ]
|
||||
* h264e: add supporting for more input pixel format
|
||||
* [drm]: fix a various of bugs in drm allocator
|
||||
* [drm]: use mmap() in native way for GNU Linux target
|
||||
|
||||
[ timkingh.huang ]
|
||||
* [jpegd]: just scan parts of markers for rv1108
|
||||
|
||||
[ sliver.chen ]
|
||||
* [h264e]: fix h264 xrgb encode bug
|
||||
|
||||
[ Herman Chen ]
|
||||
* [ioctl]: Add compatible patch for different kernel
|
||||
|
||||
[ sayon.chen ]
|
||||
* [rkvenc] modfiy ratecontrol to be more smooth
|
||||
|
||||
[ Randy Li ]
|
||||
* [ion]: file descriptor for the external buffer
|
||||
|
||||
[ Herman Chen ]
|
||||
* [hal_vp9d]: Fix buffer alignment conflict
|
||||
|
||||
[ sliver.chen ]
|
||||
* [test]: add err info check when decode
|
||||
* [osal]: force mpp use drm buffer when HAVE_DRM are defined.
|
||||
|
||||
[ timkingh.huang ]
|
||||
* [h264e]: rate control for all intra stream
|
||||
|
||||
[ Randy Li ]
|
||||
* [osal]: add queue data type
|
||||
* [mpp]: use the blokcing queue on the input
|
||||
* [mpp_list]: release the blocked thread at reset
|
||||
|
||||
[ leo.ding ]
|
||||
* [hal_h264d]: add command for switch hard_mode
|
||||
|
||||
[ Randy Li ]
|
||||
* [mpp]: silent lots of message
|
||||
* [mpp_buf_slot]: return an error code when stride is invalid
|
||||
* [jpegd]: stop the future work when the parser is error
|
||||
* [osal]: add rk3036 platform
|
||||
* [mpp]: rename and update build rules
|
||||
* [legacy]: rename mpp legacy library
|
||||
* [pkgconfig]: offer a sample for pkgconfig
|
||||
* [build]: a simple build rules
|
||||
|
||||
-- Randy Li <randy.li@rock-chips.com> Tue, 21 Nov 2017 07:35:23 +0000
|
||||
|
||||
mpp (1.3.1-1) testing; urgency=medium
|
||||
|
||||
* [allocator]: force using drm allocator in Linux platform
|
||||
* [mpp_buffer]: access the index field of buffer info
|
||||
* [mpi]: decode_put_packet() would return the internal error
|
||||
* [meta]: use fourcc format to store the meta data for those enum types
|
||||
* [drm]: use mmap64() in native way for GNU Linux target
|
||||
* [mpp/hal/vp8d]: rename and add device type info
|
||||
* [mpp/hal/vp8d]: add support for VDPU1
|
||||
* [mpp_frame]: export more functions to MppFrame fields
|
||||
* [h264d]: make H.264 common data and functions together
|
||||
* [h264d]: move the register table into the other file
|
||||
* [test]: fix the align problem in decode_advanced()
|
||||
* [jpegd] rename to its device type
|
||||
* [jpegd]: isolate the common functions
|
||||
* [jpegd]: add support for VDPU1
|
||||
|
||||
-- Randy Li <randy.li@rock-chips.com> Thu, 09 Mar 2017 09:52:21 +0000
|
||||
|
||||
mpp (1.3.0-1) testing; urgency=medium
|
||||
|
||||
* [mpp]: a fixup for wrong place scope symbols
|
||||
* .gitignore: the intial version of gitignore
|
||||
* build: support cross build in debian
|
||||
* mpp: add pkgconfig file
|
||||
* debian: support install for multiarch
|
||||
* debian: add debian build rules
|
||||
* utils: move the header files to common include directories
|
||||
* osal: match system implementation with pre-defined marco
|
||||
* osal: rename the directory of windows implementation
|
||||
* osal: build: update the build system
|
||||
* osal: build: use system default thread library
|
||||
* osal: build: test: do not install unit test
|
||||
* mpp: move header files into header directory
|
||||
* mpp: test: build: rename the mpp library name in unit test
|
||||
* mpp: legacy: rename mpp legacy library as rockchip_vpu
|
||||
* mpp: build: update build rules
|
||||
* build: a simple build rules
|
||||
* mpp: install mpp library to target
|
||||
* build: install development files
|
||||
* build: add pkgconfig support
|
||||
|
||||
-- Randy Li <randy.li@rock-chips.com> Wed, 08 Feb 2017 08:37:49 +0000
|
||||
|
||||
mpp (73f2ee87a7f836daa6d09b3f65e5abd8e1380318-1) unstable; urgency=low
|
||||
|
||||
* The origin version from algorithmn group
|
||||
|
||||
-- Randy Li <randy.li@rock-chips.com> Sun, 05 Feb 2017 03:14:14 +0000
|
||||
1
thirdparty/rockchip-mpp/debian/compat
vendored
Normal file
1
thirdparty/rockchip-mpp/debian/compat
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
10
|
||||
30
thirdparty/rockchip-mpp/debian/control
vendored
Normal file
30
thirdparty/rockchip-mpp/debian/control
vendored
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
Source: mpp
|
||||
Priority: optional
|
||||
Maintainer: Randy Li <randy.li@rock-chips.com>
|
||||
Build-Depends: debhelper (>= 10), cmake, dh-exec
|
||||
Standards-Version: 3.9.5
|
||||
Section: libs
|
||||
Homepage: http://www.rock-chips.com
|
||||
#Vcs-Git: git://anonscm.debian.org/collab-maint/mpp.git
|
||||
#Vcs-Browser: http://anonscm.debian.org/?p=collab-maint/mpp.git;a=summary
|
||||
|
||||
Package: librockchip-mpp-dev
|
||||
Section: libdevel
|
||||
Architecture: any
|
||||
Depends: librockchip-mpp1 (= ${binary:Version}), ${misc:Depends}
|
||||
Description: Media Process Platform
|
||||
|
||||
Package: librockchip-mpp1
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: Media Process Platform
|
||||
|
||||
Package: librockchip-vpu0
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Description: Media Process Platform
|
||||
|
||||
Package: rockchip-mpp-demos
|
||||
Architecture: any
|
||||
Depends: librockchip-mpp1 (= ${binary:Version}), librockchip-vpu0 (= ${binary:Version}), ${misc:Depends}
|
||||
Description: Media Process Platform Demos
|
||||
18
thirdparty/rockchip-mpp/debian/copyright
vendored
Normal file
18
thirdparty/rockchip-mpp/debian/copyright
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: Media Process Platform (MPP) module
|
||||
Source: https://github.com/rockchip-linux/mpp
|
||||
|
||||
Files: *
|
||||
Copyright: 2015 Herman Chen <herman.chen@rock-chips.com>
|
||||
License: Apache-2.0
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
.
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
.
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
2
thirdparty/rockchip-mpp/debian/docs
vendored
Normal file
2
thirdparty/rockchip-mpp/debian/docs
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
readme.txt
|
||||
readme.txt
|
||||
3
thirdparty/rockchip-mpp/debian/librockchip-mpp-dev.install
vendored
Executable file
3
thirdparty/rockchip-mpp/debian/librockchip-mpp-dev.install
vendored
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#! /usr/bin/dh-exec
|
||||
usr/include/*
|
||||
usr/lib/${DEB_HOST_MULTIARCH}/pkgconfig/*
|
||||
3
thirdparty/rockchip-mpp/debian/librockchip-mpp1.install
vendored
Executable file
3
thirdparty/rockchip-mpp/debian/librockchip-mpp1.install
vendored
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#! /usr/bin/dh-exec
|
||||
usr/lib/${DEB_HOST_MULTIARCH}/librockchip_mpp.so
|
||||
usr/lib/${DEB_HOST_MULTIARCH}/librockchip_mpp.so.*
|
||||
3
thirdparty/rockchip-mpp/debian/librockchip-vpu0.install
vendored
Executable file
3
thirdparty/rockchip-mpp/debian/librockchip-vpu0.install
vendored
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
#! /usr/bin/dh-exec
|
||||
usr/lib/${DEB_HOST_MULTIARCH}/librockchip_vpu.so
|
||||
usr/lib/${DEB_HOST_MULTIARCH}/librockchip_vpu.so.*
|
||||
2
thirdparty/rockchip-mpp/debian/rockchip-mpp-demos.install
vendored
Normal file
2
thirdparty/rockchip-mpp/debian/rockchip-mpp-demos.install
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#! /usr/bin/dh-exec
|
||||
usr/bin/*
|
||||
32
thirdparty/rockchip-mpp/debian/rules
vendored
Executable file
32
thirdparty/rockchip-mpp/debian/rules
vendored
Executable file
|
|
@ -0,0 +1,32 @@
|
|||
#!/usr/bin/make -f
|
||||
# See debhelper(7) (uncomment to enable)
|
||||
# output every command that modifies files on the build system.
|
||||
#DH_VERBOSE = 1
|
||||
|
||||
# see EXAMPLES in dpkg-buildflags(1) and read /usr/share/dpkg/*
|
||||
DPKG_EXPORT_BUILDFLAGS = 1
|
||||
include /usr/share/dpkg/default.mk
|
||||
|
||||
# see FEATURE AREAS in dpkg-buildflags(1)
|
||||
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
|
||||
# see ENVIRONMENT in dpkg-buildflags(1)
|
||||
# package maintainers to append CFLAGS
|
||||
#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
|
||||
# package maintainers to append LDFLAGS
|
||||
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
|
||||
|
||||
ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
|
||||
export CMAKE_TOOLCHAIN_FILE=/etc/dpkg-cross/cmake/CMakeCross.txt
|
||||
endif
|
||||
|
||||
# main packaging script based on dh7 syntax
|
||||
%:
|
||||
dh $@ --parallel --buildsystem=cmake
|
||||
|
||||
# debmake generated override targets
|
||||
# This is example for Cmake (See http://bugs.debian.org/641051 )
|
||||
override_dh_auto_configure:
|
||||
dh_auto_configure -- \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DARM_MIX_32_64=ON
|
||||
1
thirdparty/rockchip-mpp/debian/source/format
vendored
Normal file
1
thirdparty/rockchip-mpp/debian/source/format
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
3.0 (quilt)
|
||||
1270
thirdparty/rockchip-mpp/doc/Rockchip_Developer_Guide_MPP_CN.md
vendored
Normal file
1270
thirdparty/rockchip-mpp/doc/Rockchip_Developer_Guide_MPP_CN.md
vendored
Normal file
File diff suppressed because it is too large
Load diff
1219
thirdparty/rockchip-mpp/doc/Rockchip_Developer_Guide_MPP_EN.md
vendored
Normal file
1219
thirdparty/rockchip-mpp/doc/Rockchip_Developer_Guide_MPP_EN.md
vendored
Normal file
File diff suppressed because it is too large
Load diff
112
thirdparty/rockchip-mpp/doc/design/1.mpp_design.txt
vendored
Normal file
112
thirdparty/rockchip-mpp/doc/design/1.mpp_design.txt
vendored
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
MPP (Media Process Platform) design (2016.10.12)
|
||||
================================================================================
|
||||
|
||||
The mpp is a middleware library for Rockchip SoC's cross platform media process.
|
||||
The main purpose of mpp is to provide very high performance, high flexibility
|
||||
and expansibility on multimedia (mainly video and image) process.
|
||||
|
||||
The design target of mpp is to connect different Rockchip hardware kernel driver
|
||||
and different userspace application.
|
||||
|
||||
Rockchip has two sets of hardware kernel driver.
|
||||
|
||||
The first one is vcodec_service/vpu_service/mpp_service which is a high
|
||||
performance stateless frame base hardware kernel driver. This driver supports
|
||||
all available codecs that hardware can provide. This driver is used on Android/
|
||||
Linux.
|
||||
|
||||
The second one is v4l2 driver which is developed for ChromeOS. It currently
|
||||
supports H.264/H.265/vp8/vp9. This driver is used on ChomeOS/Linux.
|
||||
|
||||
Mpp plans to support serval userspace applications including OpenMax,
|
||||
gstreamer, libva.
|
||||
|
||||
|
||||
Feature explaination
|
||||
================================================================================
|
||||
|
||||
1. Cross Platform
|
||||
The target OS platform including Android, Linux, ChromeOS and windows. Mpp uses
|
||||
cmake to compile on different platform.
|
||||
|
||||
2. High Performance
|
||||
Mpp supports sync / async interface to reduce the time blocked in interface. And
|
||||
mpp internally make hardware and software run parallelly. When hardware is
|
||||
running sofware will prepare next hardware task at the same time.
|
||||
|
||||
3. High Flexibility
|
||||
mpi (Media Process Interface) is easy to extend by different control function.
|
||||
The input/output element packet/frame/buffer is easy to extend different
|
||||
components.
|
||||
|
||||
|
||||
System Diagram
|
||||
================================================================================
|
||||
|
||||
+---------------------------------------+
|
||||
| |
|
||||
| OpenMax / gstreamer / libva |
|
||||
| |
|
||||
+---------------------------------------+
|
||||
|
||||
+-------------------- MPP ----------------------+
|
||||
| |
|
||||
| +-------------------------+ +--------+ |
|
||||
| | | | | |
|
||||
| | MPI / MPP | | | |
|
||||
| | buffer queue manage | | | |
|
||||
| | | | | |
|
||||
| +-------------------------+ | | |
|
||||
| | | |
|
||||
| +-------------------------+ | | |
|
||||
| | | | | |
|
||||
| | codec | | OSAL | |
|
||||
| | decoder / encoder | | | |
|
||||
| | | | | |
|
||||
| +-------------------------+ | | |
|
||||
| | | |
|
||||
| +-----------+ +-----------+ | | |
|
||||
| | | | | | | |
|
||||
| | parser | | HAL | | | |
|
||||
| | control | | reg_gen | | | |
|
||||
| | | | | | | |
|
||||
| +-----------+ +-----------+ +--------| |
|
||||
| |
|
||||
+-------------------- MPP ----------------------+
|
||||
|
||||
+---------------------------------------+
|
||||
| |
|
||||
| kernel |
|
||||
| RK vcodec_service / v4l2 |
|
||||
| |
|
||||
+---------------------------------------+
|
||||
|
||||
Mpp is composed of four main sub-modules:
|
||||
|
||||
OSAL (Operation System Abstraction Layer)
|
||||
This module shutters the differences between different operation systems and
|
||||
provide basic components including memory, time, thread, log and hardware memory
|
||||
allocator.
|
||||
|
||||
MPI (Media Process Interface) / MPP
|
||||
This module is on charge of interaction with external user. Mpi layer has two
|
||||
ways for user. The simple way - User can use put/get packet/frame function set.
|
||||
The advanced way - User has to config MppTask and use dequeue/enqueue function
|
||||
set to communicate with mpp. MppTask can carry different meta data and complete
|
||||
complex work.
|
||||
|
||||
Codec (encoder / decoder)
|
||||
This module implements the high efficiency internal work flow. The codec module
|
||||
provides a general call flow for different video format. Software process will
|
||||
be separated from hardware specified process. The software will communicate with
|
||||
hardware with a common task interface which combines the buffer information and
|
||||
codec specified infomation.
|
||||
|
||||
Parser/Controller and hal (Hardware Abstraction Layer)
|
||||
This layer provides the implement function call of different video format and
|
||||
different hardware. For decoder parser provide the video stream parse function
|
||||
and output format related syntax structure to hal. The hal will translate the
|
||||
syntax structure to register set on different hardware. Current hal supports
|
||||
vcodec_service kernel driver and plan to support v4l2 driver later.
|
||||
|
||||
|
||||
70
thirdparty/rockchip-mpp/doc/design/2.kernel_driver.txt
vendored
Normal file
70
thirdparty/rockchip-mpp/doc/design/2.kernel_driver.txt
vendored
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
Hardware kernel driver design (2016.10.17)
|
||||
================================================================================
|
||||
|
||||
Rockchip has two sets of hardware kernel driver.
|
||||
|
||||
The first one is vcodec_service/vpu_service/mpp_service which is a high
|
||||
performance stateless frame base hardware kernel driver. This driver supports
|
||||
all available codecs that hardware can provide. This driver is used on Android/
|
||||
Linux.
|
||||
|
||||
Here is the vcodec_service kernel driver framework diagram.
|
||||
|
||||
+-------------+ +-------------+ +-------------+
|
||||
| client A | | client B | | client C |
|
||||
+-------------+ +-------------+ +-------------+
|
||||
|
||||
userspace
|
||||
+------------------------------------------------------------------------------+
|
||||
kernel
|
||||
|
||||
+-------------+ +-------------+ +-------------+
|
||||
| session A | | session B | | session C |
|
||||
+-------------+ +-------------+ +-------------+
|
||||
| | | | | |
|
||||
waiting done waiting done waiting done
|
||||
| | | | | |
|
||||
+---+---+ +---+---+ +---+---+ +---+---+ +---+---+
|
||||
| task3 | | task0 | | task1 | | task0 | | task0 |
|
||||
+---+---+ +-------+ +-------+ +-------+ +---+---+
|
||||
| |
|
||||
+---+---+ +---+---+
|
||||
| task2 | | task1 |
|
||||
+-------+ +-------+
|
||||
+-----------+
|
||||
| service |
|
||||
+---------+-----------+---------+
|
||||
| | |
|
||||
waiting running done
|
||||
| | |
|
||||
+-----+-----+ +-----+-----+ +-----+-----+
|
||||
| task A2 | | task A1 | | task C0 |
|
||||
+-----+-----+ +-----------+ +-----+-----+
|
||||
| |
|
||||
+-----+-----+ +-----+-----+
|
||||
| task B1 | | task C1 |
|
||||
+-----+-----+ +-----+-----+
|
||||
| |
|
||||
+-----+-----+ +-----+-----+
|
||||
| task A3 | | task A0 |
|
||||
+-----------+ +-----+-----+
|
||||
|
|
||||
+-----+-----+
|
||||
| task B0 |
|
||||
+-----------+
|
||||
|
||||
The principle of this design is to separate user task handling and hardware
|
||||
resource management and minimize the kernel serial process time between two
|
||||
hardware process operation.
|
||||
|
||||
The driver uses session as communication channel. Each userspace client (client)
|
||||
will have a kernel session. Client will commit tasks to session. Then hardware
|
||||
is managed by service (vpu_service/vcodec_service). Service will provide the
|
||||
ability to process tasks in sessions.
|
||||
|
||||
When client commits a task to kernel the task will be set to waiting status and
|
||||
link to both session waiting list and service waiting list. Then service will
|
||||
get task from waiting list to running list and run. When hardware finishs a task
|
||||
the task will be moved to done list and put to both service done list and
|
||||
session done list. Finally client will get the finished task from session.
|
||||
|
||||
57
thirdparty/rockchip-mpp/doc/design/3.mpp_buffer.txt
vendored
Normal file
57
thirdparty/rockchip-mpp/doc/design/3.mpp_buffer.txt
vendored
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
Mpp buffer design (2016.10.12)
|
||||
================================================================================
|
||||
|
||||
Mpp buffer is the warpper of the buffer used by hardware. Hardware usually can
|
||||
not use the buffer malloc by cpu. Then we design MppBuffer for different memory
|
||||
allocator on different platform. Currently it is designed for ion buffer on
|
||||
Android and drm buffer on Linux. Later may support vb2_buffer in v4l2 devices.
|
||||
|
||||
In order to manage buffer usage in different user mpp buffer module introduces
|
||||
MppBufferGroup as bufffer manager. All MppBuffer will connect to its manager.
|
||||
MppBufferGroup provides allocator service and buffer reuse ability.
|
||||
|
||||
Different MppBufferGroup has different allocator. And besides normal malloc/free
|
||||
function the allocator can also accept buffer from external file descriptor.
|
||||
|
||||
MppBufferGroup has two lists, unused buffer list and used buffer list. When
|
||||
buffer is free buffer will not be released immediately. Buffer will be moved to
|
||||
unused list for later reuse. There is a good reason for doing so. When video
|
||||
resolution comes to 4K the buffer size will be above 12M. It will take a long
|
||||
time to allocate buffer and generate map table for it. So reusing the buffer
|
||||
will save the allocate/free time.
|
||||
|
||||
Here is the diagram of Mpp buffer status transaction.
|
||||
|
||||
+----------+ +---------+
|
||||
| create | | commit |
|
||||
+-----+----+ +----+----+
|
||||
| |
|
||||
| |
|
||||
| +----v----+
|
||||
+----------+ unused <-----------+
|
||||
| +---------+ |
|
||||
| | | |
|
||||
| | | |
|
||||
+-----v----+ | | +-----+----+
|
||||
| malloc | | | | free |
|
||||
+----------+ | | +----------+
|
||||
| inc_ref | +---------+ | dec_ref |
|
||||
+-----+----+ +-----^----+
|
||||
| |
|
||||
| |
|
||||
| +---------+ |
|
||||
+----------> used +-----------+
|
||||
+---------+
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
+----^----+
|
||||
|
|
||||
|
|
||||
+----+----+
|
||||
| import |
|
||||
+---------+
|
||||
|
||||
|
||||
117
thirdparty/rockchip-mpp/doc/design/4.mpp_task.txt
vendored
Normal file
117
thirdparty/rockchip-mpp/doc/design/4.mpp_task.txt
vendored
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
MPP task design (2017.4.7)
|
||||
================================================================================
|
||||
|
||||
Mpp task is the contain component for transaction with external user in advanced
|
||||
mode. The target of advanced mode is to provide flexible, multiple input/output
|
||||
content for extension.
|
||||
|
||||
Mpp task has mpp_meta as the rich content carrier. Mpp meta uses KEY and value
|
||||
pair for extension. One task can carries multiple data into or out of mpp.
|
||||
The typical case is encoder with OSD and motion detection. One task may contain
|
||||
OSD buffer, motion detection buffer, frame buffer and stream buffer as input and
|
||||
output stream buffer and motion detection buffer with data. And this case can
|
||||
also be used on decoder if decoder wants to output some side information.
|
||||
|
||||
|
||||
Mpp task transaction
|
||||
================================================================================
|
||||
|
||||
1. Mpp task queue
|
||||
Mpp task queue is the manager of tasks. Due to user may incorrectly use the task
|
||||
we choose the design that hold all task inside mpp. Task queue will create and
|
||||
release task. But task queue will not interact with user directly. We use port
|
||||
and task status to control the transaction.
|
||||
|
||||
2. Mpp port
|
||||
Mpp port is the transaction interface of task queue. External user and internal
|
||||
worker thread will use mpp_port_poll / mpp_port_dequeue / mpp_port_enqueue
|
||||
interface to poll / dequeue / enqueue the task task queue. Mpp advanced mode is
|
||||
using port to connect external user, interface storage and internal process
|
||||
thread. Each task queue has two port: input port and output port. And from a
|
||||
global view the task will always flow from input port to output port.
|
||||
|
||||
3. Mpp task status
|
||||
There are four status for one task. Mpp use list_head to represent the status.
|
||||
|
||||
INPUT_PORT : Initial status for input port user to dequeue. Or when output port
|
||||
successfully enqueue a task then the task is on this status.
|
||||
|
||||
INPUT_HOLD : When input port user successfully dequeue a task then the task is
|
||||
on this status.
|
||||
|
||||
OUTPUT_PORT: When input port user successfully enqueue a task then the task is
|
||||
on OUTPUT_PORT status. And this task is ready for dequeue from
|
||||
output port.
|
||||
|
||||
OUTPUT_HOLD: When output port user successfully dequeue a task then the task is
|
||||
on this status.
|
||||
|
||||
4. Mpp task / port transaction
|
||||
There are three transaction functions on a port: poll / dequeue / enqueue.
|
||||
When port user call the transaction function task will be transfer from one
|
||||
status to next status. The status transform flow is unidirectional from input
|
||||
port to output port.
|
||||
|
||||
The overall relationship graph of task / port / status is shown below.
|
||||
|
||||
1. task queue
|
||||
+------------------------------+
|
||||
| |
|
||||
+----+----+ +--------------+ +----+----+
|
||||
| 4 | | 3 | | 2.1 |
|
||||
+--------+ dequeue <--+ status <--+ enqueue <---------+
|
||||
| | | | INPUT_PORT | | | |
|
||||
| +---------+ | | +---------+ |
|
||||
+------v-----+ | | +--------------+ | | +------+------+
|
||||
| 3 | | 2 | | 2 | | 3 |
|
||||
| status | | input | | output | | status |
|
||||
| INPUT_HOLD | | port | | port | | OUTPUT_HOLD |
|
||||
| | | | | | | |
|
||||
+------+-----+ | | +--------------+ | | +------^------+
|
||||
| +---------+ | 3 | +---------+ |
|
||||
| | 4 | | status | | 2.1 | |
|
||||
+--------> enqueue +--> INPUT_PORT +--> dequeue +---------+
|
||||
| | | | | |
|
||||
+----+----+ +--------------+ -----+----+
|
||||
| |
|
||||
+------------------------------+
|
||||
|
||||
|
||||
Mpp task transaction of a complete work flow
|
||||
================================================================================
|
||||
|
||||
On advanced mode mpp uses two task queue: input task queue and output task
|
||||
queue.
|
||||
Input task queue connects input side external user to internal worker thread.
|
||||
Output task queue connects internal worker thread to output side external user.
|
||||
Then there will be three threads to parallelize internal process and external
|
||||
transation. This will maximize mpp efficiency.
|
||||
|
||||
The work flow is demonstrated as below graph.
|
||||
|
||||
+-------------------+ +-------------------+
|
||||
| input side user | | output side user |
|
||||
+----^---------+----+ +----^---------+----+
|
||||
| | | |
|
||||
+----+----+----v----+ +----+----+----v----+
|
||||
| dequeue | enqueue | | dequeue | enqueue |
|
||||
+----^----+----+----+ +----^----+----+----+
|
||||
| | | |
|
||||
+----+---------+----+ MPP +----+---------v----+
|
||||
+---+ input port +-----------+ output port +---+
|
||||
| +-------------------+ +-------------------+ |
|
||||
| | input task queue | | output task queue | |
|
||||
| +-------------------+ +-------------------+ |
|
||||
| | output port | | input port | |
|
||||
| +----+---------^----+ +----+---------^----+ |
|
||||
| | | | | |
|
||||
| +----v----+----+----+ +----v----+----+----+ |
|
||||
| | dequeue | enqueue | | dequeue | enqueue | |
|
||||
| +----+----+----^----+ +----+----+----^----+ |
|
||||
| | | | | |
|
||||
| +----v---------+---------------------v---------+----+ |
|
||||
| | internal work thread | |
|
||||
| +---------------------------------------------------+ |
|
||||
| |
|
||||
+-----------------------------------------------------------+
|
||||
|
||||
BIN
thirdparty/rockchip-mpp/doc/media/Figure01_MPP_system_framework.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure01_MPP_system_framework.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure02_Data_structure_used_in_MPI_interface.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure02_Data_structure_used_in_MPI_interface.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure03_Use_simple_interface_to_realize_video_decoding.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure03_Use_simple_interface_to_realize_video_decoding.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure03_Use_simple_interface_to_realize_video_decoding_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure03_Use_simple_interface_to_realize_video_decoding_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure04_Normal_usage_of_MppBuffer.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure04_Normal_usage_of_MppBuffer.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure04_Normal_usage_of_MppBuffer_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure04_Normal_usage_of_MppBuffer_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure05_Usage_of_MppBuffer_External_Import.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure05_Usage_of_MppBuffer_External_Import.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure05_Usage_of_MppBuffer_External_Import_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure05_Usage_of_MppBuffer_External_Import_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure06_Important_parameter_description_of_MppPacket.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure06_Important_parameter_description_of_MppPacket.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure06_Important_parameter_description_of_MppPacket_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure06_Important_parameter_description_of_MppPacket_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure07_Important_parameter_description_of_MppFrame.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure07_Important_parameter_description_of_MppFrame.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure07_Important_parameter_description_of_MppFrame_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure07_Important_parameter_description_of_MppFrame_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure08_Use_MppTask_for_input_and_output.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure08_Use_MppTask_for_input_and_output.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure08_Use_MppTask_for_input_and_output_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure08_Use_MppTask_for_input_and_output_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure09_Data_Types_and_Keyword_Types_Supported_by_MppTask.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure09_Data_Types_and_Keyword_Types_Supported_by_MppTask.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure09_Data_Types_and_Keyword_Types_Supported_by_MppTask_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure09_Data_Types_and_Keyword_Types_Supported_by_MppTask_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure10_MppCtx_usage_process.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure10_MppCtx_usage_process.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure11_MPI_interface_range.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure11_MPI_interface_range.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure12_Decoder_multi_thread_usage.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure12_Decoder_multi_thread_usage.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure12_Decoder_multi_thread_usage_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure12_Decoder_multi_thread_usage_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure12_Decoder_single_thread_usage.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure12_Decoder_single_thread_usage.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure12_Decoder_single_thread_usage_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure12_Decoder_single_thread_usage_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure13_Schematic_diagram_of_pure_internal_allocation_mode.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure13_Schematic_diagram_of_pure_internal_allocation_mode.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure14_Code_flow_of_decoder_image_memory_pure_internal_allocation_mode.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure14_Code_flow_of_decoder_image_memory_pure_internal_allocation_mode.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure15_Semi-internal_allocation_mode_decoder_work_flow.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure15_Semi-internal_allocation_mode_decoder_work_flow.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure16_Schematic_diagram_of_pure_external_allocation_mode.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure16_Schematic_diagram_of_pure_external_allocation_mode.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure17_Pure_external_allocation_mode_decoder_work_flow.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure17_Pure_external_allocation_mode_decoder_work_flow.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure18_Encoder_input_frame_memory_arrangement_1.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure18_Encoder_input_frame_memory_arrangement_1.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure18_Encoder_input_frame_memory_arrangement_1_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure18_Encoder_input_frame_memory_arrangement_1_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure18_Encoder_input_frame_memory_arrangement_2.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure18_Encoder_input_frame_memory_arrangement_2.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Figure18_Encoder_input_frame_memory_arrangement_2_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Figure18_Encoder_input_frame_memory_arrangement_2_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_H264Profile.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_H264Profile.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MpiCmd_enumeration_type.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MpiCmd_enumeration_type.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MpiCmd_enumeration_type_related_to_MPP.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MpiCmd_enumeration_type_related_to_MPP.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppCodingType.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppCodingType.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncMirrorCfg.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncMirrorCfg.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncRcDropFrmMode.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncRcDropFrmMode.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncRcMode.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncRcMode.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncRcPriority.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncRcPriority.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncRcSuperFrameMode.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncRcSuperFrameMode.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncRotationCfg.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncRotationCfg.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncSplitMode.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppEncSplitMode.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppFrameColorRange.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppFrameColorRange.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppFrameFormat.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppFrameFormat.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppPacket_is_generated_by_copy_init.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppPacket_is_generated_by_copy_init.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppPacket_is_generated_by_copy_init_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppPacket_is_generated_by_copy_init_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppPacket_is_generated_from_MppBuffer.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppPacket_is_generated_from_MppBuffer.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppPacket_is_generated_from_MppBuffer_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_MppPacket_is_generated_from_MppBuffer_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_Split_mode_config.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_Split_mode_config.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_color_space_range.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_color_space_range.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_decode_log.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_decode_log.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_encode_log.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_encode_log.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_external_malloc_address_is_configured_to_MppPacket.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_external_malloc_address_is_configured_to_MppPacket.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_external_malloc_address_is_configured_to_MppPacket_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_external_malloc_address_is_configured_to_MppPacket_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_image_colorspace_format_and_memory_arrangement.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_image_colorspace_format_and_memory_arrangement.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_image_data_frame_field_properties.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_image_data_frame_field_properties.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_print_decode_help.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_print_decode_help.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_print_encode_help.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_print_encode_help.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_procedure_pseudo_code_of_external_import_usage.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_procedure_pseudo_code_of_external_import_usage.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_procedure_pseudo_code_of_external_import_usage_EN.png
(Stored with Git LFS)
vendored
Normal file
BIN
thirdparty/rockchip-mpp/doc/media/Rockchip_Developer_Guide_MPP/MPP_procedure_pseudo_code_of_external_import_usage_EN.png
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue