summaryrefslogtreecommitdiff
path: root/chromium/media/capture/video/chromeos/stream_buffer_manager.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2021-05-20 09:47:09 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2021-06-07 11:15:42 +0000
commit189d4fd8fad9e3c776873be51938cd31a42b6177 (patch)
tree6497caeff5e383937996768766ab3bb2081a40b2 /chromium/media/capture/video/chromeos/stream_buffer_manager.cc
parent8bc75099d364490b22f43a7ce366b366c08f4164 (diff)
downloadqtwebengine-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.cc31
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() {