flowchart TB

subgraph App
UI[UI]
Video[Video Player]
end

subgraph Frameworks
WMS[WMS]
DM[DisplayManager]
SC[SurfaceControl]
CH[Choreographer]
end

subgraph Media
MC[MediaCodec or Codec2]
EX[Extractor]
end

subgraph Graphics
BQ[BufferQueue]
SF[SurfaceFlinger]
RE[RenderEngine GLES SkiaGL Vulkan]
end

subgraph HAL
HWC[HWC]
GR[Gralloc]
end

subgraph Kernel
DRM[DRM KMS]
GPU[GPU Driver]
end

subgraph HW
Panel[Panel]
end

UI --> SC
Video --> MC
EX --> MC
MC --> BQ
SC --> SF
BQ --> SF
SF --> RE
RE --> HWC
SF --> HWC
GR --> BQ
HWC --> DRM
GPU --> DRM
DRM --> Panel

CH -. Vsync control .-> UI
DM -. display config .-> SF
WMS -. window management .-> SC