HDR-10bpp-Display-Test : Assembler des canaux dix bits pour Cairo
Cette expérience affiche des images dans GTK avec Cairo. Viewer3.py rend la représentation explicite: les canaux sont masqués et assemblés dans un tampon uint32 avant la création d’une surface RGB30.
Langages du dépôtPython 98.43%2
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| Python | 8 200 | |
| Shell | 131 |
Aperçu
Pourquoi il existe
Pipeline de test d'affichage 10 bits HDR vérifiant le banding de couleur et la luminance sous Linux.
Cas d’usage
Calibration et vérification d'écrans HDR 10 bits sur stations de travail Linux.
Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
sudo apt-get install xserver-xorg python3 python3-gi python3-gi-cairo gir1.2-gtk-3.0 imagejpip3 install imageiogit clone https://github.com/yourusername/HDR-10bpp-Display-Test.gitcd HDR-10bpp-Display-Testsudo systemctl stop lightdm || sudo systemctl stop gdm
sudo pkill XorgRéférences du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Prérequis et premier essai
Prerequisites
README.md
To run the test, you will need the following software installed on your system:
- X server
- Python 3
- GTK 3
- ImageJ (for displaying images with a 10-bit color depth)
- ImageIO (for reading image files) You can install these packages on Ubuntu or Debian-based systems by running the following command:
Installing
README.md
Exploitation et dépannage
Troubleshooting
README.md
Développement et contributions
HDR-10bpp-Display-Test
README.md
Running the test
README.md
To run the test, follow these steps:
- Clone the repository:
- Navigate to the project directory:
- Stop the display manager and X server:
- Start the X server with a color depth of 30:
- If the X server was started successfully, the output of the following command should indicate a depth of 30:
- Launch the viewer application:
- The viewer window will open. To display an image, run the following command:
- The image should be displayed in the viewer window. Verify that the image is displayed correctly and that the colors are accurate.
Fonctions et composants 2
- Pixels et affichage
- imageio lit le tableau source. _draw_on alloue un tampon et décale chaque canal selon la profondeur choisie, puis le transmet à cairo.ImageSurface.create_for_data. Le callback GTK affiche cette surface.
- Parcours vidéo
- Un thread lit les images vidéo et met à jour l’image courante à la cadence demandée. Le dessin traite aussi manuellement les événements GTK. Cette ancienne approche demande de vérifier quel thread possède les opérations d’interface.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- Image ou vidéo
- Tableau imageio
- Masquage et assemblage
- Surface Cairo RGB30
- Zone de dessin GTK
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
subgraph group_setup["Display setup"]
node_xserver["X server"]
end
subgraph group_viewers["Viewer applications"]
node_viewer1["Image viewer<br/>[Viewer.py]"]
node_viewer3["Image/video viewer<br/>[Viewer3.py]"]
end
subgraph group_render["Image rendering"]
node_gtk1["GTK window<br/>[Viewer.py]"]
node_gtk3["GTK window<br/>[Viewer3.py]"]
node_imageio1["Image input<br/>[Viewer.py]"]
node_imageio3["Image/video input<br/>[Viewer3.py]"]
node_cairo1["Cairo drawing<br/>[Viewer.py]"]
node_cairo3["Cairo drawing<br/>[Viewer3.py]"]
end
node_user(("Test operator"))
node_imagej["ImageJ"]
node_user -->|"starts at depth"| node_xserver
node_user -->|"launches"| node_viewer1
node_user -->|"launches"| node_viewer3
node_viewer1 -->|"creates window"| node_gtk1
node_viewer1 -->|"reads image"| node_imageio1
node_viewer1 -->|"draws image"| node_cairo1
node_gtk1 -->|"dispatches draw"| node_cairo1
node_viewer3 -->|"creates window"| node_gtk3
node_viewer3 -->|"reads image/video"| node_imageio3
node_viewer3 -->|"draws frames"| node_cairo3
node_gtk3 -->|"dispatches draw"| node_cairo3
node_user -->|"opens image"| node_imagej
node_imagej -->|"displays for checking"| node_viewer1
class node_xserver toneBlue
class node_viewer1,node_viewer3 toneAmber
class node_gtk1,node_gtk3,node_imageio1,node_imageio3,node_cairo1,node_cairo3 toneMint
class node_user,node_imagej toneIndigoUn test Linux pour les affichages HDR et 10 bits. Le parcours démarre un serveur X à la profondeur demandée, ouvre une visionneuse d’images ou de vidéos, puis dessine les images avec GTK et Cairo pour les vérifier.
- Composants
- 11
- Connexions
- 13
- Liens appuyés par le code ou le README
- 13/13
Version texte du diagramme
- Image ou vidéo → Tableau imageio
- Tableau imageio → Masquage et assemblage
- Masquage et assemblage → Surface Cairo RGB30
- Surface Cairo RGB30 → Zone de dessin GTK
Suivre un parcours dans le code
Examinez _draw_on pour voir comment la profondeur change les décalages et le format de surface. Le stockage dix bits concerne la précision numérique; les courbes HDR, les métadonnées et la calibration demandent un travail supplémentaire.
Types et structure des fichiers
2 types déclarés, dont 2 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class td926548d9d56["Viewer"] {
__init__()
_initUI()
_window_state()
size()
}
class t015018d2192b["Viewer"] {
__init__()
_initUI()
_window_state()
size()
}
class bb574778f1f7f["object"] {
<<unresolved_base>>
}
bb574778f1f7f <|-- td926548d9d56
class ba71980200e35["object"] {
<<unresolved_base>>
}
ba71980200e35 <|-- t015018d2192b
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
Index des types
Viewer(class) ·Viewer3.py:27Méthodes dans l’aperçu :
__init__, _initUI, _window_state, size.Bases déclarées :
object.Viewer(class) ·Viewer.py:24Méthodes dans l’aperçu :
__init__, _initUI, _window_state, size.Bases déclarées :
object.
Référence
4 / 4 fichiers admissibles lus (7 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
Carte des fichiers
flowchart TD
root["HDR-10bpp-Display-Test"]
f0["Viewer3.py"]
root --> f0
f1["Xdepth.sh"]
root --> f1
f2["README.md"]
root --> f2
f3["Viewer.py"]
root --> f3