Loading camera/VendorTagDescriptor.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -760,7 +760,7 @@ int vendor_tag_descriptor_cache_get_tag_type(uint32_t tag, Mutex::Autolock al(sLock); if (sGlobalVendorTagDescriptorCache == NULL) { ALOGE("%s: Vendor tag descriptor cache not initialized.", __FUNCTION__); return VENDOR_TAG_NAME_ERR; return VENDOR_TAG_TYPE_ERR; } return sGlobalVendorTagDescriptorCache->getTagType(tag, id); } Loading camera/ndk/include/camera/NdkCameraMetadataTags.h +24 −0 Original line number Diff line number Diff line Loading @@ -521,6 +521,14 @@ typedef enum acamera_metadata_tag { * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> * <p>When setting the AE metering regions, the application must consider the additional * crop resulted from the aspect ratio differences between the preview stream and * ACAMERA_SCALER_CROP_REGION. For example, if the ACAMERA_SCALER_CROP_REGION is the full * active array size with 4:3 aspect ratio, and the preview stream is 16:9, * the boundary of AE regions will be [0, y_crop] and * [active_width, active_height - 2 * y_crop] rather than [0, 0] and * [active_width, active_height], where y_crop is the additional crop due to aspect ratio * mismatch.</p> * <p>Starting from API level 30, the coordinate system of activeArraySize or * preCorrectionActiveArraySize is used to represent post-zoomRatio field of view, not * pre-zoom field of view. This means that the same aeRegions values at different Loading Loading @@ -722,6 +730,14 @@ typedef enum acamera_metadata_tag { * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> * <p>When setting the AF metering regions, the application must consider the additional * crop resulted from the aspect ratio differences between the preview stream and * ACAMERA_SCALER_CROP_REGION. For example, if the ACAMERA_SCALER_CROP_REGION is the full * active array size with 4:3 aspect ratio, and the preview stream is 16:9, * the boundary of AF regions will be [0, y_crop] and * [active_width, active_height - 2 * y_crop] rather than [0, 0] and * [active_width, active_height], where y_crop is the additional crop due to aspect ratio * mismatch.</p> * <p>Starting from API level 30, the coordinate system of activeArraySize or * preCorrectionActiveArraySize is used to represent post-zoomRatio field of view, not * pre-zoom field of view. This means that the same afRegions values at different Loading Loading @@ -917,6 +933,14 @@ typedef enum acamera_metadata_tag { * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> * <p>When setting the AWB metering regions, the application must consider the additional * crop resulted from the aspect ratio differences between the preview stream and * ACAMERA_SCALER_CROP_REGION. For example, if the ACAMERA_SCALER_CROP_REGION is the full * active array size with 4:3 aspect ratio, and the preview stream is 16:9, * the boundary of AWB regions will be [0, y_crop] and * [active_width, active_height - 2 * y_crop] rather than [0, 0] and * [active_width, active_height], where y_crop is the additional crop due to aspect ratio * mismatch.</p> * <p>Starting from API level 30, the coordinate system of activeArraySize or * preCorrectionActiveArraySize is used to represent post-zoomRatio field of view, not * pre-zoom field of view. This means that the same awbRegions values at different Loading media/codec2/sfplugin/CCodec.cpp +8 −1 Original line number Diff line number Diff line Loading @@ -1803,9 +1803,16 @@ void CCodec::start() { if (tryAndReportOnError(setRunning) != OK) { return; } err2 = mChannel->requestInitialInputBuffers(); if (err2 != OK) { ALOGE("Initial request for Input Buffers failed"); mCallback->onError(err2,ACTION_CODE_FATAL); return; } mCallback->onStartCompleted(); (void)mChannel->requestInitialInputBuffers(); } void CCodec::initiateShutdown(bool keepComponentAllocated) { Loading media/codec2/sfplugin/CCodecBufferChannel.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "CCodecBufferChannel" #define ATRACE_TAG ATRACE_TAG_VIDEO #include <utils/Log.h> #include <utils/Trace.h> #include <algorithm> #include <atomic> Loading Loading @@ -326,6 +328,8 @@ status_t CCodecBufferChannel::queueInputBufferInternal( } c2_status_t err = C2_OK; if (!items.empty()) { ScopedTrace trace(ATRACE_TAG, android::base::StringPrintf( "CCodecBufferChannel::queue(%s@ts=%lld)", mName, (long long)timeUs).c_str()); { Mutexed<PipelineWatcher>::Locked watcher(mPipelineWatcher); PipelineWatcher::Clock::time_point now = PipelineWatcher::Clock::now(); Loading Loading @@ -923,6 +927,11 @@ status_t CCodecBufferChannel::renderOutputBuffer( hdr.validTypes |= HdrMetadata::CTA861_3; hdr.cta8613 = cta861_meta; } // does not have valid info if (!(hdr.validTypes & (HdrMetadata::SMPTE2086 | HdrMetadata::CTA861_3))) { hdrStaticInfo.reset(); } } if (hdrDynamicInfo && hdrDynamicInfo->m.type_ == C2Config::HDR_DYNAMIC_METADATA_TYPE_SMPTE_2094_40) { Loading Loading @@ -1908,6 +1917,8 @@ bool CCodecBufferChannel::handleWork( // When using input surface we need to restore the original input timestamp. timestamp = work->input.ordinal.customOrdinal; } ScopedTrace trace(ATRACE_TAG, android::base::StringPrintf( "CCodecBufferChannel::onWorkDone(%s@ts=%lld)", mName, timestamp.peekll()).c_str()); ALOGV("[%s] onWorkDone: input %lld, codec %lld => output %lld => %lld", mName, work->input.ordinal.customOrdinal.peekll(), Loading media/codec2/sfplugin/Codec2Buffer.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "Codec2Buffer" #define ATRACE_TAG ATRACE_TAG_VIDEO #include <utils/Log.h> #include <utils/Trace.h> #include <aidl/android/hardware/graphics/common/Cta861_3.h> #include <aidl/android/hardware/graphics/common/Smpte2086.h> Loading Loading @@ -229,6 +231,7 @@ public: mAllocatedDepth(0), mBackBufferSize(0), mMediaImage(new ABuffer(sizeof(MediaImage2))) { ATRACE_CALL(); if (!format->findInt32(KEY_COLOR_FORMAT, &mClientColorFormat)) { mClientColorFormat = COLOR_FormatYUV420Flexible; } Loading Loading @@ -581,6 +584,7 @@ public: * Copy C2GraphicView to MediaImage2. */ status_t copyToMediaImage() { ATRACE_CALL(); if (mInitCheck != OK) { return mInitCheck; } Loading Loading @@ -619,7 +623,9 @@ sp<GraphicBlockBuffer> GraphicBlockBuffer::Allocate( const sp<AMessage> &format, const std::shared_ptr<C2GraphicBlock> &block, std::function<sp<ABuffer>(size_t)> alloc) { ATRACE_BEGIN("GraphicBlockBuffer::Allocate block->map()"); C2GraphicView view(block->map().get()); ATRACE_END(); if (view.error() != C2_OK) { ALOGD("C2GraphicBlock::map failed: %d", view.error()); return nullptr; Loading Loading @@ -664,6 +670,7 @@ GraphicBlockBuffer::GraphicBlockBuffer( } std::shared_ptr<C2Buffer> GraphicBlockBuffer::asC2Buffer() { ATRACE_CALL(); uint32_t width = mView.width(); uint32_t height = mView.height(); if (!mWrapped) { Loading Loading @@ -752,8 +759,10 @@ sp<ConstGraphicBlockBuffer> ConstGraphicBlockBuffer::Allocate( ALOGD("C2Buffer precond fail"); return nullptr; } ATRACE_BEGIN("ConstGraphicBlockBuffer::Allocate block->map()"); std::unique_ptr<const C2GraphicView> view(std::make_unique<const C2GraphicView>( buffer->data().graphicBlocks()[0].map().get())); ATRACE_END(); std::unique_ptr<const C2GraphicView> holder; GraphicView2MediaImageConverter converter(*view, format, false /* copy */); Loading Loading @@ -854,11 +863,13 @@ bool ConstGraphicBlockBuffer::canCopy(const std::shared_ptr<C2Buffer> &buffer) c return false; } ATRACE_BEGIN("ConstGraphicBlockBuffer::canCopy block->map()"); GraphicView2MediaImageConverter converter( buffer->data().graphicBlocks()[0].map().get(), // FIXME: format() is not const, but we cannot change it, so do a const cast here const_cast<ConstGraphicBlockBuffer *>(this)->format(), true /* copy */); ATRACE_END(); if (converter.initCheck() != OK) { ALOGD("ConstGraphicBlockBuffer::canCopy: converter init failed: %d", converter.initCheck()); return false; Loading Loading
camera/VendorTagDescriptor.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -760,7 +760,7 @@ int vendor_tag_descriptor_cache_get_tag_type(uint32_t tag, Mutex::Autolock al(sLock); if (sGlobalVendorTagDescriptorCache == NULL) { ALOGE("%s: Vendor tag descriptor cache not initialized.", __FUNCTION__); return VENDOR_TAG_NAME_ERR; return VENDOR_TAG_TYPE_ERR; } return sGlobalVendorTagDescriptorCache->getTagType(tag, id); } Loading
camera/ndk/include/camera/NdkCameraMetadataTags.h +24 −0 Original line number Diff line number Diff line Loading @@ -521,6 +521,14 @@ typedef enum acamera_metadata_tag { * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> * <p>When setting the AE metering regions, the application must consider the additional * crop resulted from the aspect ratio differences between the preview stream and * ACAMERA_SCALER_CROP_REGION. For example, if the ACAMERA_SCALER_CROP_REGION is the full * active array size with 4:3 aspect ratio, and the preview stream is 16:9, * the boundary of AE regions will be [0, y_crop] and * [active_width, active_height - 2 * y_crop] rather than [0, 0] and * [active_width, active_height], where y_crop is the additional crop due to aspect ratio * mismatch.</p> * <p>Starting from API level 30, the coordinate system of activeArraySize or * preCorrectionActiveArraySize is used to represent post-zoomRatio field of view, not * pre-zoom field of view. This means that the same aeRegions values at different Loading Loading @@ -722,6 +730,14 @@ typedef enum acamera_metadata_tag { * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> * <p>When setting the AF metering regions, the application must consider the additional * crop resulted from the aspect ratio differences between the preview stream and * ACAMERA_SCALER_CROP_REGION. For example, if the ACAMERA_SCALER_CROP_REGION is the full * active array size with 4:3 aspect ratio, and the preview stream is 16:9, * the boundary of AF regions will be [0, y_crop] and * [active_width, active_height - 2 * y_crop] rather than [0, 0] and * [active_width, active_height], where y_crop is the additional crop due to aspect ratio * mismatch.</p> * <p>Starting from API level 30, the coordinate system of activeArraySize or * preCorrectionActiveArraySize is used to represent post-zoomRatio field of view, not * pre-zoom field of view. This means that the same afRegions values at different Loading Loading @@ -917,6 +933,14 @@ typedef enum acamera_metadata_tag { * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> * <p>When setting the AWB metering regions, the application must consider the additional * crop resulted from the aspect ratio differences between the preview stream and * ACAMERA_SCALER_CROP_REGION. For example, if the ACAMERA_SCALER_CROP_REGION is the full * active array size with 4:3 aspect ratio, and the preview stream is 16:9, * the boundary of AWB regions will be [0, y_crop] and * [active_width, active_height - 2 * y_crop] rather than [0, 0] and * [active_width, active_height], where y_crop is the additional crop due to aspect ratio * mismatch.</p> * <p>Starting from API level 30, the coordinate system of activeArraySize or * preCorrectionActiveArraySize is used to represent post-zoomRatio field of view, not * pre-zoom field of view. This means that the same awbRegions values at different Loading
media/codec2/sfplugin/CCodec.cpp +8 −1 Original line number Diff line number Diff line Loading @@ -1803,9 +1803,16 @@ void CCodec::start() { if (tryAndReportOnError(setRunning) != OK) { return; } err2 = mChannel->requestInitialInputBuffers(); if (err2 != OK) { ALOGE("Initial request for Input Buffers failed"); mCallback->onError(err2,ACTION_CODE_FATAL); return; } mCallback->onStartCompleted(); (void)mChannel->requestInitialInputBuffers(); } void CCodec::initiateShutdown(bool keepComponentAllocated) { Loading
media/codec2/sfplugin/CCodecBufferChannel.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "CCodecBufferChannel" #define ATRACE_TAG ATRACE_TAG_VIDEO #include <utils/Log.h> #include <utils/Trace.h> #include <algorithm> #include <atomic> Loading Loading @@ -326,6 +328,8 @@ status_t CCodecBufferChannel::queueInputBufferInternal( } c2_status_t err = C2_OK; if (!items.empty()) { ScopedTrace trace(ATRACE_TAG, android::base::StringPrintf( "CCodecBufferChannel::queue(%s@ts=%lld)", mName, (long long)timeUs).c_str()); { Mutexed<PipelineWatcher>::Locked watcher(mPipelineWatcher); PipelineWatcher::Clock::time_point now = PipelineWatcher::Clock::now(); Loading Loading @@ -923,6 +927,11 @@ status_t CCodecBufferChannel::renderOutputBuffer( hdr.validTypes |= HdrMetadata::CTA861_3; hdr.cta8613 = cta861_meta; } // does not have valid info if (!(hdr.validTypes & (HdrMetadata::SMPTE2086 | HdrMetadata::CTA861_3))) { hdrStaticInfo.reset(); } } if (hdrDynamicInfo && hdrDynamicInfo->m.type_ == C2Config::HDR_DYNAMIC_METADATA_TYPE_SMPTE_2094_40) { Loading Loading @@ -1908,6 +1917,8 @@ bool CCodecBufferChannel::handleWork( // When using input surface we need to restore the original input timestamp. timestamp = work->input.ordinal.customOrdinal; } ScopedTrace trace(ATRACE_TAG, android::base::StringPrintf( "CCodecBufferChannel::onWorkDone(%s@ts=%lld)", mName, timestamp.peekll()).c_str()); ALOGV("[%s] onWorkDone: input %lld, codec %lld => output %lld => %lld", mName, work->input.ordinal.customOrdinal.peekll(), Loading
media/codec2/sfplugin/Codec2Buffer.cpp +11 −0 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ //#define LOG_NDEBUG 0 #define LOG_TAG "Codec2Buffer" #define ATRACE_TAG ATRACE_TAG_VIDEO #include <utils/Log.h> #include <utils/Trace.h> #include <aidl/android/hardware/graphics/common/Cta861_3.h> #include <aidl/android/hardware/graphics/common/Smpte2086.h> Loading Loading @@ -229,6 +231,7 @@ public: mAllocatedDepth(0), mBackBufferSize(0), mMediaImage(new ABuffer(sizeof(MediaImage2))) { ATRACE_CALL(); if (!format->findInt32(KEY_COLOR_FORMAT, &mClientColorFormat)) { mClientColorFormat = COLOR_FormatYUV420Flexible; } Loading Loading @@ -581,6 +584,7 @@ public: * Copy C2GraphicView to MediaImage2. */ status_t copyToMediaImage() { ATRACE_CALL(); if (mInitCheck != OK) { return mInitCheck; } Loading Loading @@ -619,7 +623,9 @@ sp<GraphicBlockBuffer> GraphicBlockBuffer::Allocate( const sp<AMessage> &format, const std::shared_ptr<C2GraphicBlock> &block, std::function<sp<ABuffer>(size_t)> alloc) { ATRACE_BEGIN("GraphicBlockBuffer::Allocate block->map()"); C2GraphicView view(block->map().get()); ATRACE_END(); if (view.error() != C2_OK) { ALOGD("C2GraphicBlock::map failed: %d", view.error()); return nullptr; Loading Loading @@ -664,6 +670,7 @@ GraphicBlockBuffer::GraphicBlockBuffer( } std::shared_ptr<C2Buffer> GraphicBlockBuffer::asC2Buffer() { ATRACE_CALL(); uint32_t width = mView.width(); uint32_t height = mView.height(); if (!mWrapped) { Loading Loading @@ -752,8 +759,10 @@ sp<ConstGraphicBlockBuffer> ConstGraphicBlockBuffer::Allocate( ALOGD("C2Buffer precond fail"); return nullptr; } ATRACE_BEGIN("ConstGraphicBlockBuffer::Allocate block->map()"); std::unique_ptr<const C2GraphicView> view(std::make_unique<const C2GraphicView>( buffer->data().graphicBlocks()[0].map().get())); ATRACE_END(); std::unique_ptr<const C2GraphicView> holder; GraphicView2MediaImageConverter converter(*view, format, false /* copy */); Loading Loading @@ -854,11 +863,13 @@ bool ConstGraphicBlockBuffer::canCopy(const std::shared_ptr<C2Buffer> &buffer) c return false; } ATRACE_BEGIN("ConstGraphicBlockBuffer::canCopy block->map()"); GraphicView2MediaImageConverter converter( buffer->data().graphicBlocks()[0].map().get(), // FIXME: format() is not const, but we cannot change it, so do a const cast here const_cast<ConstGraphicBlockBuffer *>(this)->format(), true /* copy */); ATRACE_END(); if (converter.initCheck() != OK) { ALOGD("ConstGraphicBlockBuffer::canCopy: converter init failed: %d", converter.initCheck()); return false; Loading