# andro-sapien/device_xiaomi_vince architecture

> Architecture diagram of the GitHub repository andro-sapien/device_xiaomi_vince, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/andro-sapien/device_xiaomi_vince
- Repository: https://github.com/andro-sapien/device_xiaomi_vince

## Overview

This repository is a device-specific Android hardware-support tree for the Xiaomi Redmi 5 Plus, with Qualcomm camera, audio, display, and media components. A typical device workflow sends framework requests to hardware interfaces, which configure and operate the relevant device subsystem; camera also includes a USB-camera implementation, while display includes composition and buffer management. The README documents device specifications rather than software workflows, and much of the implementation was not sampled, so the graph shows only relationships established by excerpts or SOURCE INDEX references.

Main entry points: [`qcom-caf/audio/hal/audio_extn/audio_feature_manager.c`](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/audio/hal/audio_extn/audio_feature_manager.c) (Feature manager), [`camera/QCamera2/HAL/QCamera2HWI.cpp`](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/QCamera2/HAL/QCamera2HWI.cpp) (Camera HAL), [`qcom-caf/display/sdm/libs/hwc2/hwc_session_services.cpp`](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/sdm/libs/hwc2/hwc_session_services.cpp) (HWC session), [`qcom-caf/display/sdm/libs/core/comp_manager.cpp`](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/sdm/libs/core/comp_manager.cpp) (Composition manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_camera["Camera"]
  node_camera_hal["Camera HAL<br/>[QCamera2HWI.cpp]"]
  node_camera3_hal["Camera3 HAL<br/>[QCamera3HWI.cpp]"]
  node_camera_stack["Camera interface"]
  node_usb_camera["USB camera"]
  node_makeup["Face effects<br/>[ts_makeup_engine.h]"]
end

subgraph group_audio["Audio"]
  node_audio_hal["Audio HAL<br/>[audio_hw.c]"]
  node_audio_extensions["Audio extensions<br/>[audio_extn.h]"]
  node_audio_features["Feature manager"]
  node_voice_extensions["Voice extensions<br/>[voice_extn.h]"]
end

subgraph group_display["Display"]
  node_display_session["HWC session"]
  node_composition["Composition manager<br/>[comp_manager.cpp]"]
  node_composition_strategy["Composition strategy<br/>[strategy.h]"]
  node_buffer_allocator["Buffer allocator"]
  node_c2d_blit["C2D blitter"]
  node_gpu_tonemapper["GPU tonemapper<br/>[glengine.cpp]"]
end

subgraph group_media["Media"]
  node_vidc_extradata["Video metadata"]
  node_video_parser["Video frame parser<br/>[frameparser.cpp]"]
end

node_android(("Android framework"))

node_android -.->|"requests camera"| node_camera_hal
node_android -.->|"requests camera"| node_camera3_hal
node_camera_hal -.->|"uses interface"| node_camera_stack
node_android -.->|"requests capture"| node_usb_camera
node_android -.->|"requests audio"| node_audio_hal
node_audio_features -->|"reads HAL definitions"| node_audio_hal
node_audio_features -->|"loads feature values"| node_audio_extensions
node_audio_features -->|"includes voice interface"| node_voice_extensions
node_android -.->|"requests display"| node_display_session
node_display_session -.->|"coordinates display"| node_composition
node_composition -->|"uses strategy"| node_composition_strategy
node_android -.->|"requests buffers"| node_buffer_allocator
node_android -.->|"processes video"| node_vidc_extradata
node_android -.->|"processes video"| node_video_parser

click node_camera_hal "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/QCamera2/HAL/QCamera2HWI.cpp"
click node_camera3_hal "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/QCamera2/HAL3/QCamera3HWI.cpp"
click node_camera_stack "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/QCamera2/stack/common/mm_camera_interface.h"
click node_usb_camera "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/usbcamcore/src/QualcommUsbCamera.cpp"
click node_makeup "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/QCamera2/HAL/tsMakeuplib/include/ts_makeup_engine.h"
click node_audio_hal "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/audio/hal/audio_hw.c"
click node_audio_extensions "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/audio/hal/audio_extn/audio_extn.h"
click node_audio_features "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/audio/hal/audio_extn/audio_feature_manager.c"
click node_voice_extensions "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/audio/hal/voice_extn/voice_extn.h"
click node_display_session "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/sdm/libs/hwc2/hwc_session_services.cpp"
click node_composition "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/sdm/libs/core/comp_manager.cpp"
click node_composition_strategy "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/sdm/libs/core/strategy.h"
click node_buffer_allocator "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/libgralloc/alloc_controller.cpp"
click node_c2d_blit "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/sdm/libs/hwc/blit_engine_c2d.cpp"
click node_gpu_tonemapper "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/gpu_tonemapper/glengine.cpp"
click node_vidc_extradata "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/media/mm-video-v4l2/vidc/common/src/extra_data_handler.cpp"
click node_video_parser "https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/media/mm-video-v4l2/vidc/vdec/src/frameparser.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_camera_hal,node_camera3_hal,node_camera_stack,node_usb_camera,node_makeup toneBlue
class node_audio_hal,node_audio_extensions,node_audio_features,node_voice_extensions toneAmber
class node_display_session,node_composition,node_composition_strategy,node_buffer_allocator,node_c2d_blit,node_gpu_tonemapper toneMint
class node_vidc_extradata,node_video_parser toneRose
class node_android toneIndigo
```

## Components

### Camera

- [Camera HAL](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/QCamera2/HAL/QCamera2HWI.cpp): `camera/QCamera2/HAL/QCamera2HWI.cpp`
- [Camera3 HAL](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/QCamera2/HAL3/QCamera3HWI.cpp): `camera/QCamera2/HAL3/QCamera3HWI.cpp`
- [Camera interface](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/QCamera2/stack/common/mm_camera_interface.h): `camera/QCamera2/stack/common/mm_camera_interface.h`
- [USB camera](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/usbcamcore/src/QualcommUsbCamera.cpp): `camera/usbcamcore/src/QualcommUsbCamera.cpp`
- [Face effects](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/camera/QCamera2/HAL/tsMakeuplib/include/ts_makeup_engine.h): `camera/QCamera2/HAL/tsMakeuplib/include/ts_makeup_engine.h`

### Audio

- [Audio HAL](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/audio/hal/audio_hw.c): `qcom-caf/audio/hal/audio_hw.c`
- [Audio extensions](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/audio/hal/audio_extn/audio_extn.h): `qcom-caf/audio/hal/audio_extn/audio_extn.h`
- [Feature manager](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/audio/hal/audio_extn/audio_feature_manager.c): `qcom-caf/audio/hal/audio_extn/audio_feature_manager.c`
- [Voice extensions](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/audio/hal/voice_extn/voice_extn.h): `qcom-caf/audio/hal/voice_extn/voice_extn.h`

### Display

- [HWC session](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/sdm/libs/hwc2/hwc_session_services.cpp): `qcom-caf/display/sdm/libs/hwc2/hwc_session_services.cpp`
- [Composition manager](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/sdm/libs/core/comp_manager.cpp): `qcom-caf/display/sdm/libs/core/comp_manager.cpp`
- [Composition strategy](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/sdm/libs/core/strategy.h): `qcom-caf/display/sdm/libs/core/strategy.h`
- [Buffer allocator](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/libgralloc/alloc_controller.cpp): `qcom-caf/display/libgralloc/alloc_controller.cpp`
- [C2D blitter](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/sdm/libs/hwc/blit_engine_c2d.cpp): `qcom-caf/display/sdm/libs/hwc/blit_engine_c2d.cpp`
- [GPU tonemapper](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/display/gpu_tonemapper/glengine.cpp): `qcom-caf/display/gpu_tonemapper/glengine.cpp`

### Media

- [Video metadata](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/media/mm-video-v4l2/vidc/common/src/extra_data_handler.cpp): `qcom-caf/media/mm-video-v4l2/vidc/common/src/extra_data_handler.cpp`
- [Video frame parser](https://github.com/andro-sapien/device_xiaomi_vince/blob/dot-12/qcom-caf/media/mm-video-v4l2/vidc/vdec/src/frameparser.cpp): `qcom-caf/media/mm-video-v4l2/vidc/vdec/src/frameparser.cpp`

### Other components

- **Android framework**

## Connections

- Android framework → Camera HAL: requests camera
- Android framework → Camera3 HAL: requests camera
- Camera HAL → Camera interface: uses interface
- Android framework → USB camera: requests capture
- Android framework → Audio HAL: requests audio
- Feature manager → Audio HAL: reads HAL definitions (evidence: `qcom-caf/audio/hal/audio_extn/audio_feature_manager.c`)
- Feature manager → Audio extensions: loads feature values (evidence: `qcom-caf/audio/hal/audio_extn/audio_feature_manager.c`)
- Feature manager → Voice extensions: includes voice interface (evidence: `qcom-caf/audio/hal/audio_extn/audio_feature_manager.c`)
- Android framework → HWC session: requests display
- HWC session → Composition manager: coordinates display
- Composition manager → Composition strategy: uses strategy (evidence: `qcom-caf/display/sdm/libs/core/comp_manager.cpp`)
- Android framework → Buffer allocator: requests buffers
- Android framework → Video metadata: processes video
- Android framework → Video frame parser: processes video
