Loading libs/gui/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ cc_library_shared { "FrameTimestamps.cpp", "GLConsumer.cpp", "GuiConfig.cpp", "HdrMetadata.cpp", "IDisplayEventConnection.cpp", "IConsumerListener.cpp", "IGraphicBufferConsumer.cpp", Loading libs/gui/BufferItem.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ size_t BufferItem::getFlattenedSize() const { size = FlattenableUtils::align<4>(size); } size += mSurfaceDamage.getFlattenedSize(); size += mHdrMetadata.getFlattenedSize(); size = FlattenableUtils::align<8>(size); return size + getPodSize(); } Loading Loading @@ -151,6 +152,10 @@ status_t BufferItem::flatten( if (err) return err; FlattenableUtils::advance(buffer, size, mSurfaceDamage.getFlattenedSize()); err = mHdrMetadata.flatten(buffer, size); if (err) return err; FlattenableUtils::advance(buffer, size, mHdrMetadata.getFlattenedSize()); // Check we still have enough space if (size < getPodSize()) { return NO_MEMORY; Loading Loading @@ -212,6 +217,10 @@ status_t BufferItem::unflatten( if (err) return err; FlattenableUtils::advance(buffer, size, mSurfaceDamage.getFlattenedSize()); err = mHdrMetadata.unflatten(buffer, size); if (err) return err; FlattenableUtils::advance(buffer, size, mHdrMetadata.getFlattenedSize()); // Check we still have enough space if (size < getPodSize()) { return NO_MEMORY; Loading libs/gui/BufferQueueProducer.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -765,6 +765,7 @@ status_t BufferQueueProducer::queueBuffer(int slot, &crop, &scalingMode, &transform, &acquireFence, &stickyTransform, &getFrameTimestamps); const Region& surfaceDamage = input.getSurfaceDamage(); const HdrMetadata& hdrMetadata = input.getHdrMetadata(); if (acquireFence == NULL) { BQ_LOGE("queueBuffer: fence is NULL"); Loading Loading @@ -825,9 +826,9 @@ status_t BufferQueueProducer::queueBuffer(int slot, } BQ_LOGV("queueBuffer: slot=%d/%" PRIu64 " time=%" PRIu64 " dataSpace=%d" " crop=[%d,%d,%d,%d] transform=%#x scale=%s", slot, mCore->mFrameCounter + 1, requestedPresentTimestamp, dataSpace, crop.left, crop.top, crop.right, crop.bottom, " validHdrMetadataTypes=0x%x crop=[%d,%d,%d,%d] transform=%#x scale=%s", slot, mCore->mFrameCounter + 1, requestedPresentTimestamp, dataSpace, hdrMetadata.validTypes, crop.left, crop.top, crop.right, crop.bottom, transform, BufferItem::scalingModeName(static_cast<uint32_t>(scalingMode))); Loading Loading @@ -866,6 +867,7 @@ status_t BufferQueueProducer::queueBuffer(int slot, item.mTimestamp = requestedPresentTimestamp; item.mIsAutoTimestamp = isAutoTimestamp; item.mDataSpace = dataSpace; item.mHdrMetadata = hdrMetadata; item.mFrameNumber = currentFrameNumber; item.mSlot = slot; item.mFence = acquireFence; Loading libs/gui/HdrMetadata.cpp 0 → 100644 +69 −0 Original line number Diff line number Diff line /* * Copyright 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <gui/HdrMetadata.h> namespace android { size_t HdrMetadata::getFlattenedSize() const { size_t size = sizeof(validTypes); if (validTypes & SMPTE2086) { size += sizeof(smpte2086); } if (validTypes & CTA861_3) { size += sizeof(cta8613); } return size; } status_t HdrMetadata::flatten(void* buffer, size_t size) const { if (size < getFlattenedSize()) { return NO_MEMORY; } FlattenableUtils::write(buffer, size, validTypes); if (validTypes & SMPTE2086) { FlattenableUtils::write(buffer, size, smpte2086); } if (validTypes & CTA861_3) { FlattenableUtils::write(buffer, size, cta8613); } return NO_ERROR; } status_t HdrMetadata::unflatten(void const* buffer, size_t size) { if (size < sizeof(validTypes)) { return NO_MEMORY; } FlattenableUtils::read(buffer, size, validTypes); if (validTypes & SMPTE2086) { if (size < sizeof(smpte2086)) { return NO_MEMORY; } FlattenableUtils::read(buffer, size, smpte2086); } if (validTypes & CTA861_3) { if (size < sizeof(cta8613)) { return NO_MEMORY; } FlattenableUtils::read(buffer, size, cta8613); } return NO_ERROR; } } // namespace android libs/gui/IGraphicBufferProducer.cpp +14 −3 Original line number Diff line number Diff line Loading @@ -951,7 +951,8 @@ constexpr size_t IGraphicBufferProducer::QueueBufferInput::minFlattenedSize() { size_t IGraphicBufferProducer::QueueBufferInput::getFlattenedSize() const { return minFlattenedSize() + fence->getFlattenedSize() + surfaceDamage.getFlattenedSize(); surfaceDamage.getFlattenedSize() + hdrMetadata.getFlattenedSize(); } size_t IGraphicBufferProducer::QueueBufferInput::getFdCount() const { Loading @@ -978,7 +979,12 @@ status_t IGraphicBufferProducer::QueueBufferInput::flatten( if (result != NO_ERROR) { return result; } return surfaceDamage.flatten(buffer, size); result = surfaceDamage.flatten(buffer, size); if (result != NO_ERROR) { return result; } FlattenableUtils::advance(buffer, size, surfaceDamage.getFlattenedSize()); return hdrMetadata.flatten(buffer, size); } status_t IGraphicBufferProducer::QueueBufferInput::unflatten( Loading @@ -1002,7 +1008,12 @@ status_t IGraphicBufferProducer::QueueBufferInput::unflatten( if (result != NO_ERROR) { return result; } return surfaceDamage.unflatten(buffer, size); result = surfaceDamage.unflatten(buffer, size); if (result != NO_ERROR) { return result; } FlattenableUtils::advance(buffer, size, surfaceDamage.getFlattenedSize()); return hdrMetadata.unflatten(buffer, size); } // ---------------------------------------------------------------------------- Loading Loading
libs/gui/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,7 @@ cc_library_shared { "FrameTimestamps.cpp", "GLConsumer.cpp", "GuiConfig.cpp", "HdrMetadata.cpp", "IDisplayEventConnection.cpp", "IConsumerListener.cpp", "IGraphicBufferConsumer.cpp", Loading
libs/gui/BufferItem.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ size_t BufferItem::getFlattenedSize() const { size = FlattenableUtils::align<4>(size); } size += mSurfaceDamage.getFlattenedSize(); size += mHdrMetadata.getFlattenedSize(); size = FlattenableUtils::align<8>(size); return size + getPodSize(); } Loading Loading @@ -151,6 +152,10 @@ status_t BufferItem::flatten( if (err) return err; FlattenableUtils::advance(buffer, size, mSurfaceDamage.getFlattenedSize()); err = mHdrMetadata.flatten(buffer, size); if (err) return err; FlattenableUtils::advance(buffer, size, mHdrMetadata.getFlattenedSize()); // Check we still have enough space if (size < getPodSize()) { return NO_MEMORY; Loading Loading @@ -212,6 +217,10 @@ status_t BufferItem::unflatten( if (err) return err; FlattenableUtils::advance(buffer, size, mSurfaceDamage.getFlattenedSize()); err = mHdrMetadata.unflatten(buffer, size); if (err) return err; FlattenableUtils::advance(buffer, size, mHdrMetadata.getFlattenedSize()); // Check we still have enough space if (size < getPodSize()) { return NO_MEMORY; Loading
libs/gui/BufferQueueProducer.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -765,6 +765,7 @@ status_t BufferQueueProducer::queueBuffer(int slot, &crop, &scalingMode, &transform, &acquireFence, &stickyTransform, &getFrameTimestamps); const Region& surfaceDamage = input.getSurfaceDamage(); const HdrMetadata& hdrMetadata = input.getHdrMetadata(); if (acquireFence == NULL) { BQ_LOGE("queueBuffer: fence is NULL"); Loading Loading @@ -825,9 +826,9 @@ status_t BufferQueueProducer::queueBuffer(int slot, } BQ_LOGV("queueBuffer: slot=%d/%" PRIu64 " time=%" PRIu64 " dataSpace=%d" " crop=[%d,%d,%d,%d] transform=%#x scale=%s", slot, mCore->mFrameCounter + 1, requestedPresentTimestamp, dataSpace, crop.left, crop.top, crop.right, crop.bottom, " validHdrMetadataTypes=0x%x crop=[%d,%d,%d,%d] transform=%#x scale=%s", slot, mCore->mFrameCounter + 1, requestedPresentTimestamp, dataSpace, hdrMetadata.validTypes, crop.left, crop.top, crop.right, crop.bottom, transform, BufferItem::scalingModeName(static_cast<uint32_t>(scalingMode))); Loading Loading @@ -866,6 +867,7 @@ status_t BufferQueueProducer::queueBuffer(int slot, item.mTimestamp = requestedPresentTimestamp; item.mIsAutoTimestamp = isAutoTimestamp; item.mDataSpace = dataSpace; item.mHdrMetadata = hdrMetadata; item.mFrameNumber = currentFrameNumber; item.mSlot = slot; item.mFence = acquireFence; Loading
libs/gui/HdrMetadata.cpp 0 → 100644 +69 −0 Original line number Diff line number Diff line /* * Copyright 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <gui/HdrMetadata.h> namespace android { size_t HdrMetadata::getFlattenedSize() const { size_t size = sizeof(validTypes); if (validTypes & SMPTE2086) { size += sizeof(smpte2086); } if (validTypes & CTA861_3) { size += sizeof(cta8613); } return size; } status_t HdrMetadata::flatten(void* buffer, size_t size) const { if (size < getFlattenedSize()) { return NO_MEMORY; } FlattenableUtils::write(buffer, size, validTypes); if (validTypes & SMPTE2086) { FlattenableUtils::write(buffer, size, smpte2086); } if (validTypes & CTA861_3) { FlattenableUtils::write(buffer, size, cta8613); } return NO_ERROR; } status_t HdrMetadata::unflatten(void const* buffer, size_t size) { if (size < sizeof(validTypes)) { return NO_MEMORY; } FlattenableUtils::read(buffer, size, validTypes); if (validTypes & SMPTE2086) { if (size < sizeof(smpte2086)) { return NO_MEMORY; } FlattenableUtils::read(buffer, size, smpte2086); } if (validTypes & CTA861_3) { if (size < sizeof(cta8613)) { return NO_MEMORY; } FlattenableUtils::read(buffer, size, cta8613); } return NO_ERROR; } } // namespace android
libs/gui/IGraphicBufferProducer.cpp +14 −3 Original line number Diff line number Diff line Loading @@ -951,7 +951,8 @@ constexpr size_t IGraphicBufferProducer::QueueBufferInput::minFlattenedSize() { size_t IGraphicBufferProducer::QueueBufferInput::getFlattenedSize() const { return minFlattenedSize() + fence->getFlattenedSize() + surfaceDamage.getFlattenedSize(); surfaceDamage.getFlattenedSize() + hdrMetadata.getFlattenedSize(); } size_t IGraphicBufferProducer::QueueBufferInput::getFdCount() const { Loading @@ -978,7 +979,12 @@ status_t IGraphicBufferProducer::QueueBufferInput::flatten( if (result != NO_ERROR) { return result; } return surfaceDamage.flatten(buffer, size); result = surfaceDamage.flatten(buffer, size); if (result != NO_ERROR) { return result; } FlattenableUtils::advance(buffer, size, surfaceDamage.getFlattenedSize()); return hdrMetadata.flatten(buffer, size); } status_t IGraphicBufferProducer::QueueBufferInput::unflatten( Loading @@ -1002,7 +1008,12 @@ status_t IGraphicBufferProducer::QueueBufferInput::unflatten( if (result != NO_ERROR) { return result; } return surfaceDamage.unflatten(buffer, size); result = surfaceDamage.unflatten(buffer, size); if (result != NO_ERROR) { return result; } FlattenableUtils::advance(buffer, size, surfaceDamage.getFlattenedSize()); return hdrMetadata.unflatten(buffer, size); } // ---------------------------------------------------------------------------- Loading