SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Upstream Multimedia on Amlogic
SoCs : From Fiction To Reality
Embedded recipes - 2018
Maxime Jourdan
Neil’s talk last year
1. Amlogic Multimedia status on mainline Linux
2. Implementing a V4L2 Memory-to-Memory video decoder for
Amlogic SoCs
3. Current userspace development for decoder-to-display
pipelines
4. Demo!
Topics
Amlogic Multimedia status on mainline Linux (1/3)
● Display : DRM/KMS Drivers
○ Support
■ HDMI / Composite output on S905, S905D/X, S912
■ Primary Plane RGB with Alpha
○ WiP
■ YUV overlay plane support
■ 4K P30 (HDMI 1.4)
○ To be done
■ HDMI 2.0 support
■ Support for Composite/HDMI on older S802/S812/S805
■ Support for upcoming SoCs A113D/S905D/X2, S922, … (+ DSI output)
Amlogic Multimedia status on mainline Linux (2/3)
● CEC
○ Support
■ CEC support on S805X (non tested), S905/S905X/S905D/S912 and later
○ To be done
■ Suspend support : the driver should communicate the current Logical & Physical
Address before the suspend, then the Suspend firmware code can continue
communicating with the TV and wake up the device.
Amlogic Multimedia status on mainline Linux (3/3)
● Audio : Alsa SoC
○ Support
■ AXG SoC family (A113D/X) : (v4.19 - v4.20)
● TDM input and output (max 128 channels - 192KHz) * 3
● SPDIF output
● PDM input
● Multicodec card driver
○ WiP
■ AXG SPDIF input
■ Gx SoC family: i2s output and spdif output
■ Internal DAC Codec (GXL and G12)
○ To be done
■ G12 (S905D/X2, S922) SoC family support (AXG based)
Implementing a V4L2 Memory-to-Memory video decoder for
Amlogic SoCs
V4L2 M2M Video Decoder
● Video4Linux2: kernel framework for media drivers (cameras,
displays, video accelerators ..)
● Memory2Memory: both inputs and outputs are in RAM
● Device node: /dev/videoX
● Increasingly supported for many SoC vendors: Samsung,
Qualcomm, MediaTek..
○ Not upstream yet: Allwinner, Broadcom, Rockchip, Amlogic
Stateful Video Decoders
● Possess a hardware bitstream parser
● Autonomous
● Almost always firmware-assisted
● Examples: Amlogic, Qualcomm, Samsung, MediaTek
Stateless Video Decoders
● Need assistance from userspace for bitstream parsing and
updating the local state
● Rely on the V4L2 Request API
● Examples: Allwinner, Rockchip
Amlogic video decoder
MJPEG, MPEG2,
MPEG4
H.264 HEVC
HEVC
10-bit
VP9
S805
1080p60
1080p60 1080p30 N/A N/A
S905
4K30 4K60 4K60
N/A
S905X
S912
4K60
AML-S905X-CC “Le Potato”Odroid-C2 (S905) Khadas VIM2 (S912)
Amlogic video decoder
● Custom driver available in vendor kernel
drivers/amlogic/amports/
○ ~20,000 lines of code for the core
○ ~3,000 lines of code for H.264
○ ~10,000 lines of code for HEVC
● Non standard API (~20 custom ioctls)
● In-kernel media player logic
Where do you start ?
● Power / Clocks / IRQs
● Where are the firmware files ?
● Where do you write the bitstream ?
● How do you get the frames back ?
● How much is in vendor kernel / userspace blob ?
Clocks - vendor kernel
amports/arch/clkgx.c
#define VDEC1_CLOCK_ON() 
do { WRITE_HHI_REG_BITS(HHI_VDEC_CLK_CNTL, 1, 8, 1); 
WRITE_HHI_REG_BITS(HHI_VDEC3_CLK_CNTL, 0, 15, 1); 
WRITE_HHI_REG_BITS(HHI_VDEC3_CLK_CNTL, 0, 8, 1); 
WRITE_VREG_BITS(DOS_GCLK_EN0, 0x3ff, 0, 10); 
} while (0)
#define VDEC1_648M() 
WRITE_HHI_REG_BITS(HHI_VDEC_CLK_CNTL, (6 << 9) | (0), 0, 16)
Firmwares - vendor kernel
amports/arch/ucode/h264/h264c_linux.h
static const u32 MicroCode[] __initconst = {
0x06810001, 0x06800000, 0x0d000001, 0x07400040, 0x064c0800,
0x09800300, 0x00000000, 0x060c0800, 0x0649d019, 0x0c006580,
0x0649c134, 0x06880000, 0x060c2900, 0x080c0002, 0x06bfda80,
0x07c02d40, 0x06030400, 0x00400000, 0x0c007d80, 0x00000000,
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0c7ffe80,
...
Writing the bitstream
VIFIFO
ESPARSER
Input Buffer
16 MiB
Input Buffer
But no IRQ triggered by the parser..
Writing the bitstream
VIFIFO
ESPARSER
Input Buffer
16 MiB
Input Buffer
4KiB
Padding
Start
Code
00 00 01 ff
Retrieving the decoded frames
Canvas
ID: 0-255
Width x Height
Buffer Physical
Address
Block Mode
Endianness
Decoder
Frame 0
Frame 1
Y plane: Canvas 0
U/V plane: Canvas 1
Y plane: Canvas 2
U/V plane: Canvas 3
VIFIFOI P
ESPARSERBPBB
Bitstream packets
Decoder
VDEC_1
Canvas
Frame
N
Decoded picture buffer
Frame
1
Frame
0
FW
CPU
B
Testing
● FFmpeg
○ ffmpeg -c:v h264_v4l2m2m -i input.mp4 -f
rawvideo out.nv12
● GStreamer
○ gst-launch-1.0 filesrc location=input.mp4 !
parsebin ! v4l2video0dec ! fakesink
● Chromium (Igalia)
○ GN_ARGS += “use_v4l2_codec use_linux_v4l2_only”
○ ln -sf video0 /dev/video-dec0
64x32 tiled mode
Block Mode Linear.. but each 8 pixels are reversed ?
Correct byte swapping: Proper NV12!
Linux DRM - Plane
For a full Description of the DRM Subsystem :
https://events.static.linuxfound.org/sites/events/files/slides/brezillon-drm-kms.pdf
Linux DRM - Plane Blending
The DRM Plane abstraction permits :
● Using Hardware assisted Color Space Conversion
○ RGB to YUV
○ NV12 to RGB
● Using Hardware assisted Alpha Blending between multiple planes
○ OSD Plane blended with underlying Video Plane
● Digital TV Hardware usually have an “OSD” Primary Plane and a
“Video” Overlay Plane behind the OSD plane
● Generic Hardware can configure the Order of the planes : z-order
Linux DRM - Plane Blending
3840x2160 NV12 Plane (from Decoder)
1920x1080 ARGB8888 Plane
Upscaling
Color Space
Convert
Alpha
Blending
3840x2160 YUV422 Frame for HDMI
Sharing buffers with dmabuf
● Kernel framework to share physical buffers between devices
● Uses file descriptors
● Consumer devices import the buffers
● Producer devices export the buffers
● V4L2 exposes VIDIOC_EXPBUF to export buffers.
Rendering frames in zero-copy
● DRM Prime with dmabuf
○ Requires plane that supports NV12. Preferably with a scaler.
○ No dependency on GPU for the video path
● EGL dmabuf import
○ Requires a OpenGL stack
○ A single RGB plane is enough
Rendering - DRM Prime
Media
Player
V4L2 M2M
decoder
VIDIOC_EXPBUF
RGB DRM plane
NV12 DRM plane
GPU
drmModeAddFB2
Subtitle
Rendering - EGL dmabuf import
Media
Player
V4L2 M2M
decoder
VIDIOC_EXPBUF
GPU
Subtitle
eglCreateImageKHR
EGL_LINUX_DMA_BUF_EXT
RGB DRM plane
Media players
Kodi mpv GStreamer Chromium
V4L2 +
DRM Prime
kmssink
V4L2 +
EGL import
glimagesink
uses
FFmpeg
Resources
● LibreELEC - “Just enough OS for KODI”
○ https://github.com/chewitt/LibreELEC.tv/tree/amlogic
○ PROJECT=Amlogic_GX DEVICE=LePotato ARCH=arm make image
● OpenEmbedded meta-meson layer
○ https://github.com/superna9999/meta-meson
● Communication
○ http://linux-meson.com/
○ #linux-amlogic on Freenode
○ linux-amlogic@lists.infradead.org
Thanks to..!
● #linux-amlogic community
● #v4l community
● LibreElec community
○ Lukas Rusak for DRM Prime support in Kodi/FFmpeg
○ Christian Hewitt for integration and testing
● Nicolas Dufresne (Collabora) for help with gstreamer

Contenu connexe

Tendances

BKK16-403 Android HAL Consolidation Status
BKK16-403 Android HAL Consolidation StatusBKK16-403 Android HAL Consolidation Status
BKK16-403 Android HAL Consolidation StatusLinaro
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
 
Real time image processing in fpga
Real time image processing in fpgaReal time image processing in fpga
Real time image processing in fpgaSneha Nidhi
 
BKK16-402 Cross distro BoF
BKK16-402 Cross distro BoFBKK16-402 Cross distro BoF
BKK16-402 Cross distro BoFLinaro
 
Bitmovin AV1/VVC Presentation_Streaming Media East by Christian Feldmann
Bitmovin AV1/VVC Presentation_Streaming Media East by Christian FeldmannBitmovin AV1/VVC Presentation_Streaming Media East by Christian Feldmann
Bitmovin AV1/VVC Presentation_Streaming Media East by Christian FeldmannBitmovin Inc
 
BKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateBKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateLinaro
 
Bitmovin Low Latency CMAF Presentation_Streaming Media East by Paul MacDougall
Bitmovin Low Latency CMAF Presentation_Streaming Media East by Paul MacDougallBitmovin Low Latency CMAF Presentation_Streaming Media East by Paul MacDougall
Bitmovin Low Latency CMAF Presentation_Streaming Media East by Paul MacDougallBitmovin Inc
 
H 264 Pc Based Dvr
H 264 Pc Based DvrH 264 Pc Based Dvr
H 264 Pc Based Dvrandy
 
Full hd d1 at 0808 v8-h24d - Avtron hybrid video recorder
Full hd d1 at 0808 v8-h24d - Avtron hybrid video recorderFull hd d1 at 0808 v8-h24d - Avtron hybrid video recorder
Full hd d1 at 0808 v8-h24d - Avtron hybrid video recorderAvtron
 
H 264 Hybrid Pc Based Dvr
H 264 Hybrid Pc Based DvrH 264 Hybrid Pc Based Dvr
H 264 Hybrid Pc Based Dvrandy
 
Full hd d1 at 1616 v8-h24d - Avtron hybrid video recorder
Full hd d1 at 1616 v8-h24d - Avtron hybrid video recorderFull hd d1 at 1616 v8-h24d - Avtron hybrid video recorder
Full hd d1 at 1616 v8-h24d - Avtron hybrid video recorderAvtron
 
NAB 2019 Latest Technical and Business Progress with AV1
NAB 2019 Latest Technical and Business Progress with AV1NAB 2019 Latest Technical and Business Progress with AV1
NAB 2019 Latest Technical and Business Progress with AV1Karan "Kay" Singh
 
H.264 PC based DVR
H.264 PC based DVRH.264 PC based DVR
H.264 PC based DVRlinovision
 
BKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance TestingBKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance TestingLinaro
 
Kernel Recipes 2014 - Testing Video4Linux Applications and Drivers
Kernel Recipes 2014 - Testing Video4Linux Applications and DriversKernel Recipes 2014 - Testing Video4Linux Applications and Drivers
Kernel Recipes 2014 - Testing Video4Linux Applications and DriversAnne Nicolas
 

Tendances (18)

BKK16-403 Android HAL Consolidation Status
BKK16-403 Android HAL Consolidation StatusBKK16-403 Android HAL Consolidation Status
BKK16-403 Android HAL Consolidation Status
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Real time image processing in fpga
Real time image processing in fpgaReal time image processing in fpga
Real time image processing in fpga
 
BKK16-402 Cross distro BoF
BKK16-402 Cross distro BoFBKK16-402 Cross distro BoF
BKK16-402 Cross distro BoF
 
Bitmovin AV1/VVC Presentation_Streaming Media East by Christian Feldmann
Bitmovin AV1/VVC Presentation_Streaming Media East by Christian FeldmannBitmovin AV1/VVC Presentation_Streaming Media East by Christian Feldmann
Bitmovin AV1/VVC Presentation_Streaming Media East by Christian Feldmann
 
Andes RISC-V processor solutions
Andes RISC-V processor solutionsAndes RISC-V processor solutions
Andes RISC-V processor solutions
 
Dtu 245 leaflet
Dtu 245 leafletDtu 245 leaflet
Dtu 245 leaflet
 
BKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateBKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack Update
 
At 0408 v-h9d-hybrid-video-recorder
At 0408 v-h9d-hybrid-video-recorderAt 0408 v-h9d-hybrid-video-recorder
At 0408 v-h9d-hybrid-video-recorder
 
Bitmovin Low Latency CMAF Presentation_Streaming Media East by Paul MacDougall
Bitmovin Low Latency CMAF Presentation_Streaming Media East by Paul MacDougallBitmovin Low Latency CMAF Presentation_Streaming Media East by Paul MacDougall
Bitmovin Low Latency CMAF Presentation_Streaming Media East by Paul MacDougall
 
H 264 Pc Based Dvr
H 264 Pc Based DvrH 264 Pc Based Dvr
H 264 Pc Based Dvr
 
Full hd d1 at 0808 v8-h24d - Avtron hybrid video recorder
Full hd d1 at 0808 v8-h24d - Avtron hybrid video recorderFull hd d1 at 0808 v8-h24d - Avtron hybrid video recorder
Full hd d1 at 0808 v8-h24d - Avtron hybrid video recorder
 
H 264 Hybrid Pc Based Dvr
H 264 Hybrid Pc Based DvrH 264 Hybrid Pc Based Dvr
H 264 Hybrid Pc Based Dvr
 
Full hd d1 at 1616 v8-h24d - Avtron hybrid video recorder
Full hd d1 at 1616 v8-h24d - Avtron hybrid video recorderFull hd d1 at 1616 v8-h24d - Avtron hybrid video recorder
Full hd d1 at 1616 v8-h24d - Avtron hybrid video recorder
 
NAB 2019 Latest Technical and Business Progress with AV1
NAB 2019 Latest Technical and Business Progress with AV1NAB 2019 Latest Technical and Business Progress with AV1
NAB 2019 Latest Technical and Business Progress with AV1
 
H.264 PC based DVR
H.264 PC based DVRH.264 PC based DVR
H.264 PC based DVR
 
BKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance TestingBKK16-400A LuvOS and ACPI Compliance Testing
BKK16-400A LuvOS and ACPI Compliance Testing
 
Kernel Recipes 2014 - Testing Video4Linux Applications and Drivers
Kernel Recipes 2014 - Testing Video4Linux Applications and DriversKernel Recipes 2014 - Testing Video4Linux Applications and Drivers
Kernel Recipes 2014 - Testing Video4Linux Applications and Drivers
 

Similaire à Embedded Recipes 2018 - Upstream multimedia on amlogic so cs from fiction to reality - Maxime Jourdan

Moving NEON to 64 bits
Moving NEON to 64 bitsMoving NEON to 64 bits
Moving NEON to 64 bitsChiou-Nan Chen
 
BKK16-209 Chromium with V4L2 playback - is it ready today?
BKK16-209 Chromium with V4L2 playback - is it ready today?BKK16-209 Chromium with V4L2 playback - is it ready today?
BKK16-209 Chromium with V4L2 playback - is it ready today?Linaro
 
Ultra HD Video Scaling: Low-Power HW FF vs. CNN-based Super-Resolution
Ultra HD Video Scaling: Low-Power HW FF vs. CNN-based Super-ResolutionUltra HD Video Scaling: Low-Power HW FF vs. CNN-based Super-Resolution
Ultra HD Video Scaling: Low-Power HW FF vs. CNN-based Super-ResolutionIntel® Software
 
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...Neil Armstrong
 
Escolhendo o Processador DaVinciTM para sua Aplicação de ...
Escolhendo o Processador DaVinciTM para sua Aplicação de ...Escolhendo o Processador DaVinciTM para sua Aplicação de ...
Escolhendo o Processador DaVinciTM para sua Aplicação de ...Videoguy
 
Escolhendo o Processador DaVinciTM para sua Aplicação de ...
Escolhendo o Processador DaVinciTM para sua Aplicação de ...Escolhendo o Processador DaVinciTM para sua Aplicação de ...
Escolhendo o Processador DaVinciTM para sua Aplicação de ...Videoguy
 
Linxu conj2016 96boards
Linxu conj2016 96boardsLinxu conj2016 96boards
Linxu conj2016 96boardsLF Events
 
S5pc100 Brochure 200902
S5pc100 Brochure 200902S5pc100 Brochure 200902
S5pc100 Brochure 200902guestc82ba2
 
Kernel Recipes 2014 - The Linux graphics stack and Nouveau driver
Kernel Recipes 2014 - The Linux graphics stack and Nouveau driverKernel Recipes 2014 - The Linux graphics stack and Nouveau driver
Kernel Recipes 2014 - The Linux graphics stack and Nouveau driverAnne Nicolas
 
LAS16 100 K1 - Keynote George Grey
LAS16 100 K1 - Keynote George GreyLAS16 100 K1 - Keynote George Grey
LAS16 100 K1 - Keynote George Grey96Boards
 
LAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLinaro
 
Geniatech APC380 Specification
Geniatech  APC380 SpecificationGeniatech  APC380 Specification
Geniatech APC380 SpecificationGeniatech
 
BKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV PlatformBKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV PlatformLinaro
 
Geniatech APC380p specification
Geniatech APC380p specificationGeniatech APC380p specification
Geniatech APC380p specificationGeniatech
 
Morello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
Morello Technology Demonstrator Hardware Overview - Mark Inskip, ArmMorello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
Morello Technology Demonstrator Hardware Overview - Mark Inskip, ArmKTN
 
4. innowatch system architecture v3 150227
4. innowatch system architecture v3 1502274. innowatch system architecture v3 150227
4. innowatch system architecture v3 150227N3N
 
Jade SoC Graphics Controllers
Jade SoC Graphics ControllersJade SoC Graphics Controllers
Jade SoC Graphics ControllersPremier Farnell
 
Linaro connect : Introduction to Xen on ARM
Linaro connect : Introduction to Xen on ARMLinaro connect : Introduction to Xen on ARM
Linaro connect : Introduction to Xen on ARMThe Linux Foundation
 
Industrial Technology Multimedia Video Theory Prelim Course
Industrial Technology Multimedia Video Theory Prelim CourseIndustrial Technology Multimedia Video Theory Prelim Course
Industrial Technology Multimedia Video Theory Prelim Coursejliang2145
 
activa200_soc
activa200_socactiva200_soc
activa200_socrnir
 

Similaire à Embedded Recipes 2018 - Upstream multimedia on amlogic so cs from fiction to reality - Maxime Jourdan (20)

Moving NEON to 64 bits
Moving NEON to 64 bitsMoving NEON to 64 bits
Moving NEON to 64 bits
 
BKK16-209 Chromium with V4L2 playback - is it ready today?
BKK16-209 Chromium with V4L2 playback - is it ready today?BKK16-209 Chromium with V4L2 playback - is it ready today?
BKK16-209 Chromium with V4L2 playback - is it ready today?
 
Ultra HD Video Scaling: Low-Power HW FF vs. CNN-based Super-Resolution
Ultra HD Video Scaling: Low-Power HW FF vs. CNN-based Super-ResolutionUltra HD Video Scaling: Low-Power HW FF vs. CNN-based Super-Resolution
Ultra HD Video Scaling: Low-Power HW FF vs. CNN-based Super-Resolution
 
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
Elc Europe 2020 : u-boot- porting and maintaining a bootloader for a multimed...
 
Escolhendo o Processador DaVinciTM para sua Aplicação de ...
Escolhendo o Processador DaVinciTM para sua Aplicação de ...Escolhendo o Processador DaVinciTM para sua Aplicação de ...
Escolhendo o Processador DaVinciTM para sua Aplicação de ...
 
Escolhendo o Processador DaVinciTM para sua Aplicação de ...
Escolhendo o Processador DaVinciTM para sua Aplicação de ...Escolhendo o Processador DaVinciTM para sua Aplicação de ...
Escolhendo o Processador DaVinciTM para sua Aplicação de ...
 
Linxu conj2016 96boards
Linxu conj2016 96boardsLinxu conj2016 96boards
Linxu conj2016 96boards
 
S5pc100 Brochure 200902
S5pc100 Brochure 200902S5pc100 Brochure 200902
S5pc100 Brochure 200902
 
Kernel Recipes 2014 - The Linux graphics stack and Nouveau driver
Kernel Recipes 2014 - The Linux graphics stack and Nouveau driverKernel Recipes 2014 - The Linux graphics stack and Nouveau driver
Kernel Recipes 2014 - The Linux graphics stack and Nouveau driver
 
LAS16 100 K1 - Keynote George Grey
LAS16 100 K1 - Keynote George GreyLAS16 100 K1 - Keynote George Grey
LAS16 100 K1 - Keynote George Grey
 
LAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome KeynoteLAS16-100K1: Welcome Keynote
LAS16-100K1: Welcome Keynote
 
Geniatech APC380 Specification
Geniatech  APC380 SpecificationGeniatech  APC380 Specification
Geniatech APC380 Specification
 
BKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV PlatformBKK16-303 96Boards - TV Platform
BKK16-303 96Boards - TV Platform
 
Geniatech APC380p specification
Geniatech APC380p specificationGeniatech APC380p specification
Geniatech APC380p specification
 
Morello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
Morello Technology Demonstrator Hardware Overview - Mark Inskip, ArmMorello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
Morello Technology Demonstrator Hardware Overview - Mark Inskip, Arm
 
4. innowatch system architecture v3 150227
4. innowatch system architecture v3 1502274. innowatch system architecture v3 150227
4. innowatch system architecture v3 150227
 
Jade SoC Graphics Controllers
Jade SoC Graphics ControllersJade SoC Graphics Controllers
Jade SoC Graphics Controllers
 
Linaro connect : Introduction to Xen on ARM
Linaro connect : Introduction to Xen on ARMLinaro connect : Introduction to Xen on ARM
Linaro connect : Introduction to Xen on ARM
 
Industrial Technology Multimedia Video Theory Prelim Course
Industrial Technology Multimedia Video Theory Prelim CourseIndustrial Technology Multimedia Video Theory Prelim Course
Industrial Technology Multimedia Video Theory Prelim Course
 
activa200_soc
activa200_socactiva200_soc
activa200_soc
 

Plus de Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIAnne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelAnne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureAnne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataAnne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxAnne Nicolas
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconAnne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureAnne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerAnne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationAnne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedAnne Nicolas
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPAnne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Anne Nicolas
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyAnne Nicolas
 

Plus de Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDPKernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Suricata and XDP
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easy
 

Dernier

Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 

Dernier (20)

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 

Embedded Recipes 2018 - Upstream multimedia on amlogic so cs from fiction to reality - Maxime Jourdan

  • 1. Upstream Multimedia on Amlogic SoCs : From Fiction To Reality Embedded recipes - 2018 Maxime Jourdan
  • 3. 1. Amlogic Multimedia status on mainline Linux 2. Implementing a V4L2 Memory-to-Memory video decoder for Amlogic SoCs 3. Current userspace development for decoder-to-display pipelines 4. Demo! Topics
  • 4. Amlogic Multimedia status on mainline Linux (1/3) ● Display : DRM/KMS Drivers ○ Support ■ HDMI / Composite output on S905, S905D/X, S912 ■ Primary Plane RGB with Alpha ○ WiP ■ YUV overlay plane support ■ 4K P30 (HDMI 1.4) ○ To be done ■ HDMI 2.0 support ■ Support for Composite/HDMI on older S802/S812/S805 ■ Support for upcoming SoCs A113D/S905D/X2, S922, … (+ DSI output)
  • 5. Amlogic Multimedia status on mainline Linux (2/3) ● CEC ○ Support ■ CEC support on S805X (non tested), S905/S905X/S905D/S912 and later ○ To be done ■ Suspend support : the driver should communicate the current Logical & Physical Address before the suspend, then the Suspend firmware code can continue communicating with the TV and wake up the device.
  • 6. Amlogic Multimedia status on mainline Linux (3/3) ● Audio : Alsa SoC ○ Support ■ AXG SoC family (A113D/X) : (v4.19 - v4.20) ● TDM input and output (max 128 channels - 192KHz) * 3 ● SPDIF output ● PDM input ● Multicodec card driver ○ WiP ■ AXG SPDIF input ■ Gx SoC family: i2s output and spdif output ■ Internal DAC Codec (GXL and G12) ○ To be done ■ G12 (S905D/X2, S922) SoC family support (AXG based)
  • 7. Implementing a V4L2 Memory-to-Memory video decoder for Amlogic SoCs
  • 8. V4L2 M2M Video Decoder ● Video4Linux2: kernel framework for media drivers (cameras, displays, video accelerators ..) ● Memory2Memory: both inputs and outputs are in RAM ● Device node: /dev/videoX ● Increasingly supported for many SoC vendors: Samsung, Qualcomm, MediaTek.. ○ Not upstream yet: Allwinner, Broadcom, Rockchip, Amlogic
  • 9. Stateful Video Decoders ● Possess a hardware bitstream parser ● Autonomous ● Almost always firmware-assisted ● Examples: Amlogic, Qualcomm, Samsung, MediaTek
  • 10. Stateless Video Decoders ● Need assistance from userspace for bitstream parsing and updating the local state ● Rely on the V4L2 Request API ● Examples: Allwinner, Rockchip
  • 11. Amlogic video decoder MJPEG, MPEG2, MPEG4 H.264 HEVC HEVC 10-bit VP9 S805 1080p60 1080p60 1080p30 N/A N/A S905 4K30 4K60 4K60 N/A S905X S912 4K60 AML-S905X-CC “Le Potato”Odroid-C2 (S905) Khadas VIM2 (S912)
  • 12. Amlogic video decoder ● Custom driver available in vendor kernel drivers/amlogic/amports/ ○ ~20,000 lines of code for the core ○ ~3,000 lines of code for H.264 ○ ~10,000 lines of code for HEVC ● Non standard API (~20 custom ioctls) ● In-kernel media player logic
  • 13. Where do you start ? ● Power / Clocks / IRQs ● Where are the firmware files ? ● Where do you write the bitstream ? ● How do you get the frames back ? ● How much is in vendor kernel / userspace blob ?
  • 14. Clocks - vendor kernel amports/arch/clkgx.c #define VDEC1_CLOCK_ON() do { WRITE_HHI_REG_BITS(HHI_VDEC_CLK_CNTL, 1, 8, 1); WRITE_HHI_REG_BITS(HHI_VDEC3_CLK_CNTL, 0, 15, 1); WRITE_HHI_REG_BITS(HHI_VDEC3_CLK_CNTL, 0, 8, 1); WRITE_VREG_BITS(DOS_GCLK_EN0, 0x3ff, 0, 10); } while (0) #define VDEC1_648M() WRITE_HHI_REG_BITS(HHI_VDEC_CLK_CNTL, (6 << 9) | (0), 0, 16)
  • 15. Firmwares - vendor kernel amports/arch/ucode/h264/h264c_linux.h static const u32 MicroCode[] __initconst = { 0x06810001, 0x06800000, 0x0d000001, 0x07400040, 0x064c0800, 0x09800300, 0x00000000, 0x060c0800, 0x0649d019, 0x0c006580, 0x0649c134, 0x06880000, 0x060c2900, 0x080c0002, 0x06bfda80, 0x07c02d40, 0x06030400, 0x00400000, 0x0c007d80, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0c7ffe80, ...
  • 16. Writing the bitstream VIFIFO ESPARSER Input Buffer 16 MiB Input Buffer But no IRQ triggered by the parser..
  • 17. Writing the bitstream VIFIFO ESPARSER Input Buffer 16 MiB Input Buffer 4KiB Padding Start Code 00 00 01 ff
  • 18. Retrieving the decoded frames Canvas ID: 0-255 Width x Height Buffer Physical Address Block Mode Endianness Decoder Frame 0 Frame 1 Y plane: Canvas 0 U/V plane: Canvas 1 Y plane: Canvas 2 U/V plane: Canvas 3
  • 20. Testing ● FFmpeg ○ ffmpeg -c:v h264_v4l2m2m -i input.mp4 -f rawvideo out.nv12 ● GStreamer ○ gst-launch-1.0 filesrc location=input.mp4 ! parsebin ! v4l2video0dec ! fakesink ● Chromium (Igalia) ○ GN_ARGS += “use_v4l2_codec use_linux_v4l2_only” ○ ln -sf video0 /dev/video-dec0
  • 21.
  • 23. Block Mode Linear.. but each 8 pixels are reversed ?
  • 24. Correct byte swapping: Proper NV12!
  • 25. Linux DRM - Plane For a full Description of the DRM Subsystem : https://events.static.linuxfound.org/sites/events/files/slides/brezillon-drm-kms.pdf
  • 26. Linux DRM - Plane Blending The DRM Plane abstraction permits : ● Using Hardware assisted Color Space Conversion ○ RGB to YUV ○ NV12 to RGB ● Using Hardware assisted Alpha Blending between multiple planes ○ OSD Plane blended with underlying Video Plane ● Digital TV Hardware usually have an “OSD” Primary Plane and a “Video” Overlay Plane behind the OSD plane ● Generic Hardware can configure the Order of the planes : z-order
  • 27. Linux DRM - Plane Blending 3840x2160 NV12 Plane (from Decoder) 1920x1080 ARGB8888 Plane Upscaling Color Space Convert Alpha Blending 3840x2160 YUV422 Frame for HDMI
  • 28. Sharing buffers with dmabuf ● Kernel framework to share physical buffers between devices ● Uses file descriptors ● Consumer devices import the buffers ● Producer devices export the buffers ● V4L2 exposes VIDIOC_EXPBUF to export buffers.
  • 29. Rendering frames in zero-copy ● DRM Prime with dmabuf ○ Requires plane that supports NV12. Preferably with a scaler. ○ No dependency on GPU for the video path ● EGL dmabuf import ○ Requires a OpenGL stack ○ A single RGB plane is enough
  • 30. Rendering - DRM Prime Media Player V4L2 M2M decoder VIDIOC_EXPBUF RGB DRM plane NV12 DRM plane GPU drmModeAddFB2 Subtitle
  • 31. Rendering - EGL dmabuf import Media Player V4L2 M2M decoder VIDIOC_EXPBUF GPU Subtitle eglCreateImageKHR EGL_LINUX_DMA_BUF_EXT RGB DRM plane
  • 32. Media players Kodi mpv GStreamer Chromium V4L2 + DRM Prime kmssink V4L2 + EGL import glimagesink uses FFmpeg
  • 33. Resources ● LibreELEC - “Just enough OS for KODI” ○ https://github.com/chewitt/LibreELEC.tv/tree/amlogic ○ PROJECT=Amlogic_GX DEVICE=LePotato ARCH=arm make image ● OpenEmbedded meta-meson layer ○ https://github.com/superna9999/meta-meson ● Communication ○ http://linux-meson.com/ ○ #linux-amlogic on Freenode ○ linux-amlogic@lists.infradead.org
  • 34. Thanks to..! ● #linux-amlogic community ● #v4l community ● LibreElec community ○ Lukas Rusak for DRM Prime support in Kodi/FFmpeg ○ Christian Hewitt for integration and testing ● Nicolas Dufresne (Collabora) for help with gstreamer