Loading services/camera/libcameraservice/device3/BufferUtils.h +1 −1 Original line number Diff line number Diff line Loading @@ -104,7 +104,7 @@ namespace camera3 { // Return the removed buffer ID if input cache is found. // Otherwise return BUFFER_ID_NO_BUFFER uint64_t removeOneBufferCache(int streamId, const native_handle_t* handle); uint64_t removeOneBufferCache(int streamId, const native_handle_t* handle) override; // Clear all caches for input stream, but do not remove the stream // Removed buffers' ID are returned Loading services/camera/libcameraservice/device3/Camera3Device.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -4132,6 +4132,11 @@ std::pair<bool, uint64_t> Camera3Device::HalInterface::getBufferId( return mBufferRecords.getBufferId(buf, streamId); } uint64_t Camera3Device::HalInterface::removeOneBufferCache(int streamId, const native_handle_t* handle) { return mBufferRecords.removeOneBufferCache(streamId, handle); } void Camera3Device::HalInterface::onBufferFreed( int streamId, const native_handle_t* handle) { uint32_t bufferId = mBufferRecords.removeOneBufferCache(streamId, handle); Loading services/camera/libcameraservice/device3/Camera3Device.h +2 −0 Original line number Diff line number Diff line Loading @@ -412,6 +412,8 @@ class Camera3Device : std::pair<bool, uint64_t> getBufferId( const buffer_handle_t& buf, int streamId) override; uint64_t removeOneBufferCache(int streamId, const native_handle_t* handle) override; status_t popInflightBuffer(int32_t frameNumber, int32_t streamId, /*out*/ buffer_handle_t **buffer) override; Loading services/camera/libcameraservice/device3/Camera3OutputInterface.h +4 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,10 @@ namespace camera3 { // return pair of (newlySeenBuffer?, bufferId) virtual std::pair<bool, uint64_t> getBufferId(const buffer_handle_t& buf, int streamId) = 0; // Return the removed buffer ID if input cache is found. // Otherwise return BUFFER_ID_NO_BUFFER virtual uint64_t removeOneBufferCache(int streamId, const native_handle_t* handle) = 0; // Find a buffer_handle_t based on frame number and stream ID virtual status_t popInflightBuffer(int32_t frameNumber, int32_t streamId, /*out*/ buffer_handle_t **buffer) = 0; Loading services/camera/libcameraservice/device3/Camera3OutputUtils.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -1305,6 +1305,7 @@ void requestStreamBuffers(RequestBufferStates& states, hardware::hidl_vec<StreamBuffer> tmpRetBuffers(numBuffersRequested); bool currentReqSucceeds = true; std::vector<camera_stream_buffer_t> streamBuffers(numBuffersRequested); std::vector<buffer_handle_t> newBuffers; size_t numAllocatedBuffers = 0; size_t numPushedInflightBuffers = 0; for (size_t b = 0; b < numBuffersRequested; b++) { Loading Loading @@ -1344,6 +1345,9 @@ void requestStreamBuffers(RequestBufferStates& states, hBuf.buffer = (isNewBuffer) ? *buffer : nullptr; hBuf.status = BufferStatus::OK; hBuf.releaseFence = nullptr; if (isNewBuffer) { newBuffers.push_back(*buffer); } native_handle_t *acquireFence = nullptr; if (sb.acquire_fence != -1) { Loading Loading @@ -1386,6 +1390,9 @@ void requestStreamBuffers(RequestBufferStates& states, returnOutputBuffers(states.useHalBufManager, /*listener*/nullptr, streamBuffers.data(), numAllocatedBuffers, 0, /*requested*/false, /*requestTimeNs*/0, states.sessionStatsBuilder); for (auto buf : newBuffers) { states.bufferRecordsIntf.removeOneBufferCache(streamId, buf); } } } Loading Loading
services/camera/libcameraservice/device3/BufferUtils.h +1 −1 Original line number Diff line number Diff line Loading @@ -104,7 +104,7 @@ namespace camera3 { // Return the removed buffer ID if input cache is found. // Otherwise return BUFFER_ID_NO_BUFFER uint64_t removeOneBufferCache(int streamId, const native_handle_t* handle); uint64_t removeOneBufferCache(int streamId, const native_handle_t* handle) override; // Clear all caches for input stream, but do not remove the stream // Removed buffers' ID are returned Loading
services/camera/libcameraservice/device3/Camera3Device.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -4132,6 +4132,11 @@ std::pair<bool, uint64_t> Camera3Device::HalInterface::getBufferId( return mBufferRecords.getBufferId(buf, streamId); } uint64_t Camera3Device::HalInterface::removeOneBufferCache(int streamId, const native_handle_t* handle) { return mBufferRecords.removeOneBufferCache(streamId, handle); } void Camera3Device::HalInterface::onBufferFreed( int streamId, const native_handle_t* handle) { uint32_t bufferId = mBufferRecords.removeOneBufferCache(streamId, handle); Loading
services/camera/libcameraservice/device3/Camera3Device.h +2 −0 Original line number Diff line number Diff line Loading @@ -412,6 +412,8 @@ class Camera3Device : std::pair<bool, uint64_t> getBufferId( const buffer_handle_t& buf, int streamId) override; uint64_t removeOneBufferCache(int streamId, const native_handle_t* handle) override; status_t popInflightBuffer(int32_t frameNumber, int32_t streamId, /*out*/ buffer_handle_t **buffer) override; Loading
services/camera/libcameraservice/device3/Camera3OutputInterface.h +4 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,10 @@ namespace camera3 { // return pair of (newlySeenBuffer?, bufferId) virtual std::pair<bool, uint64_t> getBufferId(const buffer_handle_t& buf, int streamId) = 0; // Return the removed buffer ID if input cache is found. // Otherwise return BUFFER_ID_NO_BUFFER virtual uint64_t removeOneBufferCache(int streamId, const native_handle_t* handle) = 0; // Find a buffer_handle_t based on frame number and stream ID virtual status_t popInflightBuffer(int32_t frameNumber, int32_t streamId, /*out*/ buffer_handle_t **buffer) = 0; Loading
services/camera/libcameraservice/device3/Camera3OutputUtils.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -1305,6 +1305,7 @@ void requestStreamBuffers(RequestBufferStates& states, hardware::hidl_vec<StreamBuffer> tmpRetBuffers(numBuffersRequested); bool currentReqSucceeds = true; std::vector<camera_stream_buffer_t> streamBuffers(numBuffersRequested); std::vector<buffer_handle_t> newBuffers; size_t numAllocatedBuffers = 0; size_t numPushedInflightBuffers = 0; for (size_t b = 0; b < numBuffersRequested; b++) { Loading Loading @@ -1344,6 +1345,9 @@ void requestStreamBuffers(RequestBufferStates& states, hBuf.buffer = (isNewBuffer) ? *buffer : nullptr; hBuf.status = BufferStatus::OK; hBuf.releaseFence = nullptr; if (isNewBuffer) { newBuffers.push_back(*buffer); } native_handle_t *acquireFence = nullptr; if (sb.acquire_fence != -1) { Loading Loading @@ -1386,6 +1390,9 @@ void requestStreamBuffers(RequestBufferStates& states, returnOutputBuffers(states.useHalBufManager, /*listener*/nullptr, streamBuffers.data(), numAllocatedBuffers, 0, /*requested*/false, /*requestTimeNs*/0, states.sessionStatsBuilder); for (auto buf : newBuffers) { states.bufferRecordsIntf.removeOneBufferCache(streamId, buf); } } } Loading