Loading services/camera/libcameraservice/device3/Camera3Device.cpp +22 −10 Original line number Diff line number Diff line Loading @@ -2876,7 +2876,8 @@ status_t Camera3Device::configureStreamsLocked(int operatingMode, config.streams = streams.editArray(); // Do the HAL configuration; will potentially touch stream // max_buffers, usage, priv fields. // max_buffers, usage, and priv fields, as well as data_space and format // fields for IMPLEMENTATION_DEFINED formats. const camera_metadata_t *sessionBuffer = sessionParams.getAndLock(); res = mInterface->configureStreams(sessionBuffer, &config, bufferSizes); Loading Loading @@ -4202,10 +4203,19 @@ status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t * dst3_2.streamType = streamType; dst3_2.width = src->width; dst3_2.height = src->height; dst3_2.format = mapToPixelFormat(src->format); dst3_2.usage = mapToConsumerUsage(cam3stream->getUsage()); dst3_2.dataSpace = mapToHidlDataspace(src->data_space); dst3_2.rotation = mapToStreamRotation((camera3_stream_rotation_t) src->rotation); // For HidlSession version 3.5 or newer, the format and dataSpace sent // to HAL are original, not the overriden ones. if (mHidlSession_3_5 != nullptr) { dst3_2.format = mapToPixelFormat(cam3stream->isFormatOverridden() ? cam3stream->getOriginalFormat() : src->format); dst3_2.dataSpace = mapToHidlDataspace(cam3stream->isDataSpaceOverridden() ? cam3stream->getOriginalDataSpace() : src->data_space); } else { dst3_2.format = mapToPixelFormat(src->format); dst3_2.dataSpace = mapToHidlDataspace(src->data_space); } dst3_4.v3_2 = dst3_2; dst3_4.bufferSize = bufferSizes[i]; if (src->physical_camera_id != nullptr) { Loading Loading @@ -4266,7 +4276,7 @@ status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t * return OK; }; // See if we have v3.4 or v3.3 HAL // See which version of HAL we have if (mHidlSession_3_5 != nullptr) { ALOGV("%s: v3.5 device found", __FUNCTION__); device::V3_5::StreamConfiguration requestedConfiguration3_5; Loading @@ -4281,7 +4291,6 @@ status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t * } else if (mHidlSession_3_4 != nullptr) { // We do; use v3.4 for the call ALOGV("%s: v3.4 device found", __FUNCTION__); device::V3_4::HalStreamConfiguration finalConfiguration3_4; auto err = mHidlSession_3_4->configureStreams_3_4( requestedConfiguration3_4, configStream34Cb); res = postprocConfigStream34(err); Loading Loading @@ -4352,12 +4361,12 @@ status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t * device::V3_3::HalStream &src = finalConfiguration.streams[realIdx]; Camera3Stream* dstStream = Camera3Stream::cast(dst); dstStream->setFormatOverride(false); dstStream->setDataSpaceOverride(false); int overrideFormat = mapToFrameworkFormat(src.v3_2.overrideFormat); android_dataspace overrideDataSpace = mapToFrameworkDataspace(src.overrideDataSpace); if (dst->format != HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) { dstStream->setFormatOverride(false); dstStream->setDataSpaceOverride(false); if (dst->format != overrideFormat) { ALOGE("%s: Stream %d: Format override not allowed for format 0x%x", __FUNCTION__, streamId, dst->format); Loading @@ -4367,10 +4376,13 @@ status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t * streamId, dst->format); } } else { dstStream->setFormatOverride((dst->format != overrideFormat) ? true : false); dstStream->setDataSpaceOverride((dst->data_space != overrideDataSpace) ? true : false); bool needFormatOverride = requestedConfiguration3_2.streams[i].format != src.v3_2.overrideFormat; bool needDataspaceOverride = requestedConfiguration3_2.streams[i].dataSpace != src.overrideDataSpace; // Override allowed with IMPLEMENTATION_DEFINED dstStream->setFormatOverride(needFormatOverride); dstStream->setDataSpaceOverride(needDataspaceOverride); dst->format = overrideFormat; dst->data_space = overrideDataSpace; } Loading services/camera/libcameraservice/device3/Camera3SharedOutputStream.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ status_t Camera3SharedOutputStream::connectStreamSplitterLocked() { mStreamSplitter = new Camera3StreamSplitter(mUseHalBufManager); uint64_t usage; uint64_t usage = 0; getEndpointUsage(&usage); std::unordered_map<size_t, sp<Surface>> initialSurfaces; Loading services/camera/libcameraservice/device3/Camera3Stream.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -67,6 +67,8 @@ Camera3Stream::Camera3Stream(int id, mBufferLimitLatency(kBufferLimitLatencyBinSize), mFormatOverridden(false), mOriginalFormat(-1), mDataSpaceOverridden(false), mOriginalDataSpace(HAL_DATASPACE_UNKNOWN), mPhysicalCameraId(physicalCameraId), mLastTimestamp(0) { Loading Loading @@ -121,7 +123,9 @@ void Camera3Stream::setUsage(uint64_t usage) { void Camera3Stream::setFormatOverride(bool formatOverridden) { mFormatOverridden = formatOverridden; if (formatOverridden) mOriginalFormat = camera3_stream::format; if (formatOverridden && mOriginalFormat == -1) { mOriginalFormat = camera3_stream::format; } } bool Camera3Stream::isFormatOverridden() const { Loading @@ -134,7 +138,9 @@ int Camera3Stream::getOriginalFormat() const { void Camera3Stream::setDataSpaceOverride(bool dataSpaceOverridden) { mDataSpaceOverridden = dataSpaceOverridden; if (dataSpaceOverridden) mOriginalDataSpace = camera3_stream::data_space; if (dataSpaceOverridden && mOriginalDataSpace == HAL_DATASPACE_UNKNOWN) { mOriginalDataSpace = camera3_stream::data_space; } } bool Camera3Stream::isDataSpaceOverridden() const { Loading Loading
services/camera/libcameraservice/device3/Camera3Device.cpp +22 −10 Original line number Diff line number Diff line Loading @@ -2876,7 +2876,8 @@ status_t Camera3Device::configureStreamsLocked(int operatingMode, config.streams = streams.editArray(); // Do the HAL configuration; will potentially touch stream // max_buffers, usage, priv fields. // max_buffers, usage, and priv fields, as well as data_space and format // fields for IMPLEMENTATION_DEFINED formats. const camera_metadata_t *sessionBuffer = sessionParams.getAndLock(); res = mInterface->configureStreams(sessionBuffer, &config, bufferSizes); Loading Loading @@ -4202,10 +4203,19 @@ status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t * dst3_2.streamType = streamType; dst3_2.width = src->width; dst3_2.height = src->height; dst3_2.format = mapToPixelFormat(src->format); dst3_2.usage = mapToConsumerUsage(cam3stream->getUsage()); dst3_2.dataSpace = mapToHidlDataspace(src->data_space); dst3_2.rotation = mapToStreamRotation((camera3_stream_rotation_t) src->rotation); // For HidlSession version 3.5 or newer, the format and dataSpace sent // to HAL are original, not the overriden ones. if (mHidlSession_3_5 != nullptr) { dst3_2.format = mapToPixelFormat(cam3stream->isFormatOverridden() ? cam3stream->getOriginalFormat() : src->format); dst3_2.dataSpace = mapToHidlDataspace(cam3stream->isDataSpaceOverridden() ? cam3stream->getOriginalDataSpace() : src->data_space); } else { dst3_2.format = mapToPixelFormat(src->format); dst3_2.dataSpace = mapToHidlDataspace(src->data_space); } dst3_4.v3_2 = dst3_2; dst3_4.bufferSize = bufferSizes[i]; if (src->physical_camera_id != nullptr) { Loading Loading @@ -4266,7 +4276,7 @@ status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t * return OK; }; // See if we have v3.4 or v3.3 HAL // See which version of HAL we have if (mHidlSession_3_5 != nullptr) { ALOGV("%s: v3.5 device found", __FUNCTION__); device::V3_5::StreamConfiguration requestedConfiguration3_5; Loading @@ -4281,7 +4291,6 @@ status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t * } else if (mHidlSession_3_4 != nullptr) { // We do; use v3.4 for the call ALOGV("%s: v3.4 device found", __FUNCTION__); device::V3_4::HalStreamConfiguration finalConfiguration3_4; auto err = mHidlSession_3_4->configureStreams_3_4( requestedConfiguration3_4, configStream34Cb); res = postprocConfigStream34(err); Loading Loading @@ -4352,12 +4361,12 @@ status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t * device::V3_3::HalStream &src = finalConfiguration.streams[realIdx]; Camera3Stream* dstStream = Camera3Stream::cast(dst); dstStream->setFormatOverride(false); dstStream->setDataSpaceOverride(false); int overrideFormat = mapToFrameworkFormat(src.v3_2.overrideFormat); android_dataspace overrideDataSpace = mapToFrameworkDataspace(src.overrideDataSpace); if (dst->format != HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED) { dstStream->setFormatOverride(false); dstStream->setDataSpaceOverride(false); if (dst->format != overrideFormat) { ALOGE("%s: Stream %d: Format override not allowed for format 0x%x", __FUNCTION__, streamId, dst->format); Loading @@ -4367,10 +4376,13 @@ status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t * streamId, dst->format); } } else { dstStream->setFormatOverride((dst->format != overrideFormat) ? true : false); dstStream->setDataSpaceOverride((dst->data_space != overrideDataSpace) ? true : false); bool needFormatOverride = requestedConfiguration3_2.streams[i].format != src.v3_2.overrideFormat; bool needDataspaceOverride = requestedConfiguration3_2.streams[i].dataSpace != src.overrideDataSpace; // Override allowed with IMPLEMENTATION_DEFINED dstStream->setFormatOverride(needFormatOverride); dstStream->setDataSpaceOverride(needDataspaceOverride); dst->format = overrideFormat; dst->data_space = overrideDataSpace; } Loading
services/camera/libcameraservice/device3/Camera3SharedOutputStream.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -55,7 +55,7 @@ status_t Camera3SharedOutputStream::connectStreamSplitterLocked() { mStreamSplitter = new Camera3StreamSplitter(mUseHalBufManager); uint64_t usage; uint64_t usage = 0; getEndpointUsage(&usage); std::unordered_map<size_t, sp<Surface>> initialSurfaces; Loading
services/camera/libcameraservice/device3/Camera3Stream.cpp +8 −2 Original line number Diff line number Diff line Loading @@ -67,6 +67,8 @@ Camera3Stream::Camera3Stream(int id, mBufferLimitLatency(kBufferLimitLatencyBinSize), mFormatOverridden(false), mOriginalFormat(-1), mDataSpaceOverridden(false), mOriginalDataSpace(HAL_DATASPACE_UNKNOWN), mPhysicalCameraId(physicalCameraId), mLastTimestamp(0) { Loading Loading @@ -121,7 +123,9 @@ void Camera3Stream::setUsage(uint64_t usage) { void Camera3Stream::setFormatOverride(bool formatOverridden) { mFormatOverridden = formatOverridden; if (formatOverridden) mOriginalFormat = camera3_stream::format; if (formatOverridden && mOriginalFormat == -1) { mOriginalFormat = camera3_stream::format; } } bool Camera3Stream::isFormatOverridden() const { Loading @@ -134,7 +138,9 @@ int Camera3Stream::getOriginalFormat() const { void Camera3Stream::setDataSpaceOverride(bool dataSpaceOverridden) { mDataSpaceOverridden = dataSpaceOverridden; if (dataSpaceOverridden) mOriginalDataSpace = camera3_stream::data_space; if (dataSpaceOverridden && mOriginalDataSpace == HAL_DATASPACE_UNKNOWN) { mOriginalDataSpace = camera3_stream::data_space; } } bool Camera3Stream::isDataSpaceOverridden() const { Loading