diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-05-20 09:47:09 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-06-07 11:15:42 +0000 |
commit | 189d4fd8fad9e3c776873be51938cd31a42b6177 (patch) | |
tree | 6497caeff5e383937996768766ab3bb2081a40b2 /chromium/media/capture/video/chromeos/stream_buffer_manager.cc | |
parent | 8bc75099d364490b22f43a7ce366b366c08f4164 (diff) | |
download | qtwebengine-chromium-189d4fd8fad9e3c776873be51938cd31a42b6177.tar.gz |
BASELINE: Update Chromium to 90.0.4430.221
Change-Id: Iff4d9d18d2fcf1a576f3b1f453010f744a232920
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/media/capture/video/chromeos/stream_buffer_manager.cc')
-rw-r--r-- | chromium/media/capture/video/chromeos/stream_buffer_manager.cc | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/chromium/media/capture/video/chromeos/stream_buffer_manager.cc b/chromium/media/capture/video/chromeos/stream_buffer_manager.cc index 75bd224507a..4e3f277f890 100644 --- a/chromium/media/capture/video/chromeos/stream_buffer_manager.cc +++ b/chromium/media/capture/video/chromeos/stream_buffer_manager.cc @@ -27,12 +27,10 @@ namespace media { StreamBufferManager::StreamBufferManager( CameraDeviceContext* device_context, bool video_capture_use_gmb, - std::unique_ptr<CameraBufferFactory> camera_buffer_factory, - ClientType client_type) + std::unique_ptr<CameraBufferFactory> camera_buffer_factory) : device_context_(device_context), video_capture_use_gmb_(video_capture_use_gmb), - camera_buffer_factory_(std::move(camera_buffer_factory)), - client_type_(client_type) { + camera_buffer_factory_(std::move(camera_buffer_factory)) { if (video_capture_use_gmb_) { gmb_support_ = std::make_unique<gpu::GpuMemoryBufferSupport>(); } @@ -155,8 +153,9 @@ StreamBufferManager::AcquireBufferForClientById(StreamType stream_type, } else { // We have to reserve a new buffer because the size is different. Buffer rotated_buffer; + auto client_type = kStreamClientTypeMap[static_cast<int>(stream_type)]; if (!device_context_->ReserveVideoCaptureBufferFromPool( - client_type_, format->frame_size, format->pixel_format, + client_type, format->frame_size, format->pixel_format, &rotated_buffer)) { DLOG(WARNING) << "Failed to reserve video capture buffer"; original_gmb->Unmap(); @@ -221,7 +220,7 @@ bool StreamBufferManager::HasStreamsConfigured( } void StreamBufferManager::SetUpStreamsAndBuffers( - VideoCaptureFormat capture_format, + base::flat_map<ClientType, VideoCaptureParams> capture_params, const cros::mojom::CameraMetadataPtr& static_metadata, std::vector<cros::mojom::Camera3StreamPtr> streams) { DestroyCurrentStreamsAndBuffers(); @@ -249,15 +248,18 @@ void StreamBufferManager::SetUpStreamsAndBuffers( // flags of the stream. StreamType stream_type = StreamIdToStreamType(stream->id); auto stream_context = std::make_unique<StreamContext>(); - stream_context->capture_format = capture_format; + auto client_type = kStreamClientTypeMap[static_cast<int>(stream_type)]; + stream_context->capture_format = + capture_params[client_type].requested_format; stream_context->stream = std::move(stream); switch (stream_type) { case StreamType::kPreviewOutput: + case StreamType::kRecordingOutput: stream_context->buffer_dimension = gfx::Size( stream_context->stream->width, stream_context->stream->height); stream_context->buffer_usage = - gfx::BufferUsage::SCANOUT_VEA_READ_CAMERA_AND_CPU_READ_WRITE; + gfx::BufferUsage::VEA_READ_CAMERA_AND_CPU_READ_WRITE; break; case StreamType::kYUVInput: case StreamType::kYUVOutput: @@ -378,6 +380,11 @@ bool StreamBufferManager::IsReprocessSupported() { return stream_context_.find(StreamType::kYUVOutput) != stream_context_.end(); } +bool StreamBufferManager::IsRecordingSupported() { + return stream_context_.find(StreamType::kRecordingOutput) != + stream_context_.end(); +} + // static uint64_t StreamBufferManager::GetBufferIpcId(StreamType stream_type, int key) { uint64_t id = 0; @@ -441,8 +448,9 @@ void StreamBufferManager::ReserveBufferFromPool(StreamType stream_type) { return; } Buffer vcd_buffer; + auto client_type = kStreamClientTypeMap[static_cast<int>(stream_type)]; if (!device_context_->ReserveVideoCaptureBufferFromPool( - client_type_, stream_context->buffer_dimension, + client_type, stream_context->buffer_dimension, stream_context->capture_format.pixel_format, &vcd_buffer)) { DLOG(WARNING) << "Failed to reserve video capture buffer"; return; @@ -452,8 +460,9 @@ void StreamBufferManager::ReserveBufferFromPool(StreamType stream_type) { stream_context->buffer_dimension, *gfx_format, stream_context->buffer_usage, base::NullCallback()); stream_context->free_buffers.push(vcd_buffer.id); - stream_context->buffers.insert(std::make_pair( - vcd_buffer.id, BufferPair(std::move(gmb), std::move(vcd_buffer)))); + const int id = vcd_buffer.id; + stream_context->buffers.insert( + std::make_pair(id, BufferPair(std::move(gmb), std::move(vcd_buffer)))); } void StreamBufferManager::DestroyCurrentStreamsAndBuffers() { |