From aab1e5670ff0d13dbc85a1f5f3789619950bdcca Mon Sep 17 00:00:00 2001 From: Akshata Sahukar Date: Tue, 30 Jul 2019 13:57:25 -0700 Subject: [PATCH] qdmetadata: Add support for additional video cvp stats Add support to receive capture rate and cvp frame rate to video driver to help configure HFI_PROPERTY_CONFIG_CVP_FRAME_RATE_HINT property. Change-Id: Ia87f4762a63a3dfcc5e6613c6e0369a28f246fdc --- libqdmetadata/qdMetaData.cpp | 6 +++++- libqdmetadata/qdMetaData.h | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/libqdmetadata/qdMetaData.cpp b/libqdmetadata/qdMetaData.cpp index 91dbc7a3..0f3cd1e4 100644 --- a/libqdmetadata/qdMetaData.cpp +++ b/libqdmetadata/qdMetaData.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -153,6 +153,8 @@ int setMetaDataVa(MetaData_t *data, DispParamType paramType, data->cvpMetadata.size = cvpMetadata->size; memcpy(data->cvpMetadata.payload, cvpMetadata->payload, cvpMetadata->size); + data->cvpMetadata.capture_frame_rate = cvpMetadata->capture_frame_rate; + data->cvpMetadata.cvp_frame_rate = cvpMetadata->cvp_frame_rate; } else { data->operation &= ~(paramType); ALOGE("%s: cvp metadata length %d is more than max size %d", @@ -341,6 +343,8 @@ int getMetaDataVa(MetaData_t *data, DispFetchParamType paramType, cvpMetadata->size = data->cvpMetadata.size; memcpy(cvpMetadata->payload, data->cvpMetadata.payload, data->cvpMetadata.size); + cvpMetadata->capture_frame_rate = data->cvpMetadata.capture_frame_rate; + cvpMetadata->cvp_frame_rate = data->cvpMetadata.cvp_frame_rate; ret = 0; } } diff --git a/libqdmetadata/qdMetaData.h b/libqdmetadata/qdMetaData.h index 1cc37123..c8b34463 100644 --- a/libqdmetadata/qdMetaData.h +++ b/libqdmetadata/qdMetaData.h @@ -123,6 +123,15 @@ struct VideoHistogramMetadata { typedef struct CVPMetadata { uint32_t size; /* payload size in bytes */ uint8_t payload[CVP_METADATA_SIZE]; + uint32_t capture_frame_rate; + /* Frame rate in Q16 format. + Eg: fps = 7.5, then + capture_frame_rate = 7 << 16 --> Upper 16 bits to represent 7 + capture_frame_rate |= 5 -------> Lower 16 bits to represent 5 + + If size > 0, framerate is valid + If size = 0, invalid data, so ignore all parameters */ + uint32_t cvp_frame_rate; } CVPMetadata; struct MetaData_t {