Métadonnées du cadre,Métadonnées du cadre

Les métadonnées de trame sont introduites dans Android 11 en tant que membre de la structure de données BufferDesc. Ce nouveau champ est déclaré comme vec<uint8_t> pour s'adapter à un format de données défini par le client et est opaque pour le gestionnaire EVS.

struct BufferDesc {
    /**
     * HIDL counterpart of AHardwareBuffer_Desc. Please see
     * hardware/interfaces/graphics/common/1.2/types.hal for more details.
     */
    HardwareBuffer buffer;
    ...

    /**
     * Time that this buffer is being filled.
     */
    int64_t timestamp;

    /**
     * Frame metadata field. This is opaque to EVS manager.
     */
    vec<uint8_t> metadata;
};

HIDL vec<T> représente des tableaux de taille dynamique avec les données stockées dans un tampon séparé. De telles instances sont représentées par une instance de vec<T> dans la struct , ce qui signifie que l'implémentation du pilote EVS Camera HAL possède ces métadonnées et doit les nettoyer correctement. Il existe deux manières de remplir les métadonnées :

  • Redimensionnez le conteneur et remplissez les données à l'aide operator[]
        struct BufferDesc desc = {};
        ...
        desc.metadata.resize(10);
        for (auto i = 0; i < 10; ++i) {
            desc.metadata[i] = frameInfo[i];
        }
        ...
        
  • Utilisez setToExternal() pour que vec<T> pointe vers votre structure de données personnalisée.
    struct BufferDesc desc = {};
    struct FrameMetadata metadata = {
       ...
    }; // this is in vendor-defined format.
    
    desc.metadata.setToExternal(&metadata, sizeof(metadata)); ...
,

Les métadonnées de trame sont introduites dans Android 11 en tant que membre de la structure de données BufferDesc. Ce nouveau champ est déclaré comme vec<uint8_t> pour s'adapter à un format de données défini par le client et est opaque pour le gestionnaire EVS.

struct BufferDesc {
    /**
     * HIDL counterpart of AHardwareBuffer_Desc. Please see
     * hardware/interfaces/graphics/common/1.2/types.hal for more details.
     */
    HardwareBuffer buffer;
    ...

    /**
     * Time that this buffer is being filled.
     */
    int64_t timestamp;

    /**
     * Frame metadata field. This is opaque to EVS manager.
     */
    vec<uint8_t> metadata;
};

HIDL vec<T> représente des tableaux de taille dynamique avec les données stockées dans un tampon séparé. De telles instances sont représentées par une instance de vec<T> dans la struct , ce qui signifie que l'implémentation du pilote EVS Camera HAL possède ces métadonnées et doit les nettoyer correctement. Il existe deux manières de remplir les métadonnées :

  • Redimensionnez le conteneur et remplissez les données à l'aide operator[]
        struct BufferDesc desc = {};
        ...
        desc.metadata.resize(10);
        for (auto i = 0; i < 10; ++i) {
            desc.metadata[i] = frameInfo[i];
        }
        ...
        
  • Utilisez setToExternal() pour que vec<T> pointe vers votre structure de données personnalisée.
    struct BufferDesc desc = {};
    struct FrameMetadata metadata = {
       ...
    }; // this is in vendor-defined format.
    
    desc.metadata.setToExternal(&metadata, sizeof(metadata)); ...