Loading libs/gui/Surface.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -1107,8 +1107,11 @@ void Surface::applyGrallocMetadataLocked( ATRACE_CALL(); auto& mapper = GraphicBufferMapper::get(); mapper.setDataspace(buffer->handle, static_cast<ui::Dataspace>(queueBufferInput.dataSpace)); if (mHdrMetadataIsSet & HdrMetadata::SMPTE2086) mapper.setSmpte2086(buffer->handle, queueBufferInput.getHdrMetadata().getSmpte2086()); if (mHdrMetadataIsSet & HdrMetadata::CTA861_3) mapper.setCta861_3(buffer->handle, queueBufferInput.getHdrMetadata().getCta8613()); if (mHdrMetadataIsSet & HdrMetadata::HDR10PLUS) mapper.setSmpte2094_40(buffer->handle, queueBufferInput.getHdrMetadata().getHdr10Plus()); } Loading Loading @@ -2250,6 +2253,7 @@ int Surface::setBuffersDataSpace(Dataspace dataSpace) int Surface::setBuffersSmpte2086Metadata(const android_smpte2086_metadata* metadata) { ALOGV("Surface::setBuffersSmpte2086Metadata"); Mutex::Autolock lock(mMutex); mHdrMetadataIsSet |= HdrMetadata::SMPTE2086; if (metadata) { mHdrMetadata.smpte2086 = *metadata; mHdrMetadata.validTypes |= HdrMetadata::SMPTE2086; Loading @@ -2262,6 +2266,7 @@ int Surface::setBuffersSmpte2086Metadata(const android_smpte2086_metadata* metad int Surface::setBuffersCta8613Metadata(const android_cta861_3_metadata* metadata) { ALOGV("Surface::setBuffersCta8613Metadata"); Mutex::Autolock lock(mMutex); mHdrMetadataIsSet |= HdrMetadata::CTA861_3; if (metadata) { mHdrMetadata.cta8613 = *metadata; mHdrMetadata.validTypes |= HdrMetadata::CTA861_3; Loading @@ -2274,6 +2279,7 @@ int Surface::setBuffersCta8613Metadata(const android_cta861_3_metadata* metadata int Surface::setBuffersHdr10PlusMetadata(const size_t size, const uint8_t* metadata) { ALOGV("Surface::setBuffersBlobMetadata"); Mutex::Autolock lock(mMutex); mHdrMetadataIsSet |= HdrMetadata::HDR10PLUS; if (size > 0) { mHdrMetadata.hdr10plus.assign(metadata, metadata + size); mHdrMetadata.validTypes |= HdrMetadata::HDR10PLUS; Loading libs/gui/include/gui/Surface.h +5 −0 Original line number Diff line number Diff line Loading @@ -462,6 +462,11 @@ protected: // queue operation. There is no HDR metadata by default. HdrMetadata mHdrMetadata; // mHdrMetadataIsSet is a bitfield to track which HDR metadata has been set. // Prevent Surface from resetting HDR metadata that was set on a bufer when // HDR metadata is not set on this Surface. uint32_t mHdrMetadataIsSet{0}; // mCrop is the crop rectangle that will be used for the next buffer // that gets queued. It is set by calling setCrop. Rect mCrop; Loading Loading
libs/gui/Surface.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -1107,8 +1107,11 @@ void Surface::applyGrallocMetadataLocked( ATRACE_CALL(); auto& mapper = GraphicBufferMapper::get(); mapper.setDataspace(buffer->handle, static_cast<ui::Dataspace>(queueBufferInput.dataSpace)); if (mHdrMetadataIsSet & HdrMetadata::SMPTE2086) mapper.setSmpte2086(buffer->handle, queueBufferInput.getHdrMetadata().getSmpte2086()); if (mHdrMetadataIsSet & HdrMetadata::CTA861_3) mapper.setCta861_3(buffer->handle, queueBufferInput.getHdrMetadata().getCta8613()); if (mHdrMetadataIsSet & HdrMetadata::HDR10PLUS) mapper.setSmpte2094_40(buffer->handle, queueBufferInput.getHdrMetadata().getHdr10Plus()); } Loading Loading @@ -2250,6 +2253,7 @@ int Surface::setBuffersDataSpace(Dataspace dataSpace) int Surface::setBuffersSmpte2086Metadata(const android_smpte2086_metadata* metadata) { ALOGV("Surface::setBuffersSmpte2086Metadata"); Mutex::Autolock lock(mMutex); mHdrMetadataIsSet |= HdrMetadata::SMPTE2086; if (metadata) { mHdrMetadata.smpte2086 = *metadata; mHdrMetadata.validTypes |= HdrMetadata::SMPTE2086; Loading @@ -2262,6 +2266,7 @@ int Surface::setBuffersSmpte2086Metadata(const android_smpte2086_metadata* metad int Surface::setBuffersCta8613Metadata(const android_cta861_3_metadata* metadata) { ALOGV("Surface::setBuffersCta8613Metadata"); Mutex::Autolock lock(mMutex); mHdrMetadataIsSet |= HdrMetadata::CTA861_3; if (metadata) { mHdrMetadata.cta8613 = *metadata; mHdrMetadata.validTypes |= HdrMetadata::CTA861_3; Loading @@ -2274,6 +2279,7 @@ int Surface::setBuffersCta8613Metadata(const android_cta861_3_metadata* metadata int Surface::setBuffersHdr10PlusMetadata(const size_t size, const uint8_t* metadata) { ALOGV("Surface::setBuffersBlobMetadata"); Mutex::Autolock lock(mMutex); mHdrMetadataIsSet |= HdrMetadata::HDR10PLUS; if (size > 0) { mHdrMetadata.hdr10plus.assign(metadata, metadata + size); mHdrMetadata.validTypes |= HdrMetadata::HDR10PLUS; Loading
libs/gui/include/gui/Surface.h +5 −0 Original line number Diff line number Diff line Loading @@ -462,6 +462,11 @@ protected: // queue operation. There is no HDR metadata by default. HdrMetadata mHdrMetadata; // mHdrMetadataIsSet is a bitfield to track which HDR metadata has been set. // Prevent Surface from resetting HDR metadata that was set on a bufer when // HDR metadata is not set on this Surface. uint32_t mHdrMetadataIsSet{0}; // mCrop is the crop rectangle that will be used for the next buffer // that gets queued. It is set by calling setCrop. Rect mCrop; Loading