🛠 Serveur multimédia HDMI et GPU Mali

Hardkernel ODROID-XU4 (Samsung Exynos5422) · avance · Schéma : IMG-odroid-xu4-avance-3-odroidxu4-serveur-multimedia.svg — ODROID-XU4 en média-center : sortie HDMI 1.4a 1080p (vidéo + audio) vers un téléviseur, GPU Mali-T628 MP6, stockage USB 3.0

Objectifs

Transformer l'ODROID-XU4 en média-center HDMI : sortie HDMI 1.4a Type-A jusqu'en 1080p avec CEC, et audio UNIQUEMENT par HDMI (le jack 3,5 mm de l'XU3 a été supprimé — sinon module son USB). Le GPU ARM Mali-T628 MP6 apporte OpenGL ES 3.0 et OpenCL 1,2 sous image vendor — avec une particularité : il s'énumère comme DEUX périphériques OpenCL (4 cœurs + 2 cœurs).

Matériel

Code complet

/* mali_devices.c — enumerer les GPU Mali (image vendor XU4)
 * Build : gcc mali_devices.c -lOpenCL -o mali_devices */
#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
#include <CL/cl.h>
#include <stdio.h>

int main(void) {
    cl_platform_id p[8]; cl_uint np;
    clGetPlatformIDs(8, p, &np);
    for (cl_uint i = 0; i < np; i++) {
        cl_device_id d[8]; cl_uint nd;
        clGetDeviceIDs(p[i], CL_DEVICE_TYPE_ALL, 8, d, &nd);
        for (cl_uint j = 0; j < nd; j++) {
            char name[64], ver[64];
            clGetDeviceInfo(d[j], CL_DEVICE_NAME, sizeof name, name, 0);
            clGetDeviceInfo(d[j], CL_DEVICE_VERSION, sizeof ver, ver, 0);
            printf("plateforme %u / periph. %u: %s (%s)\n", i, j, name, ver);
            /* Attendu : « Mali-T628 (OpenCL 1.2) » deux fois (4+2 cœurs) */
        }
    }
    return 0;
}

Lecture vidéo de test : mpv --vo=gpu /media/film.mkv ; son : vérifier la carte samsung,odroid-xu3-audio (sortie HDMI) avec pactl list short sinks.

Vérification attendue

./mali_devices affiche deux périphériques « Mali-T628 (OpenCL 1.2) ». La vidéo 1080p sort sur le téléviseur avec le son par le même câble HDMI ; le CEC permet d'éteindre la TV depuis la carte.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels