Replace simple usages of media::ConvertAndScaleFrame with VFC.
As titled, this replaces simple usage of media::ConvertAndScaleFrame() with the VideoFrameConverter class. Behavior should be identical and result in no pixel changes. Bug: 1519317 Change-Id: I6b97789eca6761112695210302b2028eadcdb371 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5214544 Reviewed-by: Derek Schuff <dschuff@chromium.org> Reviewed-by: Mark Foltz <mfoltz@chromium.org> Reviewed-by: Eugene Zemtsov <eugene@chromium.org> Commit-Queue: Dale Curtis <dalecurtis@chromium.org> Cr-Commit-Position: refs/heads/main@{#1249460}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
e40c8d70db
commit
9540bde903
components/mirroring/service
content/renderer/pepper
third_party/blink/renderer/modules
mediacapturefromelement
mediarecorder
@ -10,7 +10,6 @@
|
||||
#include "build/build_config.h"
|
||||
#include "media/base/video_frame.h"
|
||||
#include "media/base/video_frame_pool.h"
|
||||
#include "media/base/video_util.h"
|
||||
#include "media/capture/mojom/video_capture_buffer.mojom.h"
|
||||
#include "media/capture/mojom/video_capture_types.mojom.h"
|
||||
|
||||
@ -277,7 +276,7 @@ void VideoCaptureClient::OnBufferReady(media::mojom::ReadyBufferPtr buffer) {
|
||||
media::PIXEL_FORMAT_I420, frame->coded_size(),
|
||||
frame->visible_rect(), frame->natural_size(), frame->timestamp());
|
||||
media::EncoderStatus status =
|
||||
media::ConvertAndScaleFrame(*frame, *new_frame, nv12_to_i420_tmp_buf_);
|
||||
frame_converter_.ConvertAndScale(*frame, *new_frame);
|
||||
if (!status.is_ok()) {
|
||||
LOG(DFATAL) << "Unable to convert frame to I420.";
|
||||
OnStateChanged(media::mojom::VideoCaptureResult::NewErrorCode(
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "base/memory/weak_ptr.h"
|
||||
#include "base/sequence_checker.h"
|
||||
#include "base/time/time.h"
|
||||
#include "media/base/video_frame_converter.h"
|
||||
#include "media/capture/mojom/video_capture.mojom.h"
|
||||
#include "mojo/public/cpp/bindings/pending_remote.h"
|
||||
#include "mojo/public/cpp/bindings/receiver.h"
|
||||
@ -115,7 +116,7 @@ class COMPONENT_EXPORT(MIRRORING_SERVICE) VideoCaptureClient
|
||||
// these structures are used to convert them to I420 on the CPU.
|
||||
// https://crbug.com/1206325
|
||||
std::unique_ptr<media::VideoFramePool> nv12_to_i420_pool_;
|
||||
std::vector<uint8_t> nv12_to_i420_tmp_buf_;
|
||||
media::VideoFrameConverter frame_converter_;
|
||||
|
||||
// Indicates whether we're in the middle of switching video capture host.
|
||||
bool switching_video_capture_host_ = false;
|
||||
|
@ -167,12 +167,11 @@ void PepperVideoCaptureHost::OnFrameReady(
|
||||
media::PIXEL_FORMAT_I420, frame->natural_size(),
|
||||
gfx::Rect(frame->natural_size()), frame->natural_size(), dst,
|
||||
buffers_[i].buffer->size(), frame->timestamp());
|
||||
int uv_size = mapped_frame->coded_size().GetArea() / 2;
|
||||
std::vector<uint8_t> temp_uv_buffer(uv_size);
|
||||
media::EncoderStatus status = media::ConvertAndScaleFrame(
|
||||
*mapped_frame, *dst_frame, temp_uv_buffer);
|
||||
if (!status.is_ok())
|
||||
media::EncoderStatus status =
|
||||
frame_converter_.ConvertAndScale(*mapped_frame, *dst_frame);
|
||||
if (!status.is_ok()) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
DCHECK_EQ(frame->format(), media::PIXEL_FORMAT_I420);
|
||||
size_t num_planes = media::VideoFrame::NumPlanes(frame->format());
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "content/public/renderer/renderer_ppapi_host.h"
|
||||
#include "content/renderer/pepper/pepper_device_enumeration_host_helper.h"
|
||||
#include "content/renderer/pepper/ppb_buffer_impl.h"
|
||||
#include "media/base/video_frame_converter.h"
|
||||
#include "media/capture/video_capture_types.h"
|
||||
#include "ppapi/c/dev/ppp_video_capture_dev.h"
|
||||
#include "ppapi/host/host_message_context.h"
|
||||
@ -119,6 +120,8 @@ class PepperVideoCaptureHost : public ppapi::host::ResourceHost {
|
||||
ppapi::host::ReplyMessageContext open_reply_context_;
|
||||
|
||||
PepperDeviceEnumerationHostHelper enumeration_helper_;
|
||||
|
||||
media::VideoFrameConverter frame_converter_;
|
||||
};
|
||||
|
||||
} // namespace content
|
||||
|
7
third_party/blink/renderer/modules/mediacapturefromelement/canvas_capture_handler_unittest.cc
vendored
7
third_party/blink/renderer/modules/mediacapturefromelement/canvas_capture_handler_unittest.cc
vendored
@ -8,7 +8,7 @@
|
||||
#include "base/run_loop.h"
|
||||
#include "base/test/gmock_callback_support.h"
|
||||
#include "media/base/limits.h"
|
||||
#include "media/base/video_util.h"
|
||||
#include "media/base/video_frame_converter.h"
|
||||
#include "testing/gmock/include/gmock/gmock.h"
|
||||
#include "testing/gtest/include/gtest/gtest.h"
|
||||
#include "third_party/blink/public/platform/scheduler/test/renderer_scheduler_test_support.h"
|
||||
@ -123,9 +123,7 @@ class CanvasCaptureHandlerTest
|
||||
auto i420_frame = media::VideoFrame::CreateFrame(
|
||||
converted_format, size, gfx::Rect(size), size,
|
||||
video_frame->timestamp());
|
||||
std::vector<uint8_t> tmp_buf;
|
||||
auto status =
|
||||
media::ConvertAndScaleFrame(*video_frame, *i420_frame, tmp_buf);
|
||||
auto status = converter_.ConvertAndScale(*video_frame, *i420_frame);
|
||||
EXPECT_TRUE(status.is_ok());
|
||||
video_frame = i420_frame;
|
||||
}
|
||||
@ -159,6 +157,7 @@ class CanvasCaptureHandlerTest
|
||||
std::unique_ptr<StaticBitmapImageToVideoFrameCopier> copier_;
|
||||
// The Class under test. Needs to be scoped_ptr to force its destruction.
|
||||
std::unique_ptr<CanvasCaptureHandler> canvas_capture_handler_;
|
||||
media::VideoFrameConverter converter_;
|
||||
|
||||
protected:
|
||||
VideoCapturerSource* GetVideoCapturerSource(
|
||||
|
@ -530,10 +530,8 @@ VideoTrackRecorderImpl::Encoder::MaybeProvideEncodableFrame(
|
||||
is_opaque ? media::PIXEL_FORMAT_I420 : media::PIXEL_FORMAT_I420A,
|
||||
visible_rect.size(), visible_rect, visible_rect.size(),
|
||||
video_frame->timestamp());
|
||||
|
||||
if (!frame ||
|
||||
!media::ConvertAndScaleFrame(*video_frame, *frame, resize_buffer_)
|
||||
.is_ok()) {
|
||||
!frame_converter_.ConvertAndScale(*video_frame, *frame).is_ok()) {
|
||||
// Send black frames (yuv = {0, 127, 127}).
|
||||
DLOG(ERROR) << "Can't convert RGB to I420";
|
||||
frame = media::VideoFrame::CreateColorFrame(
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "base/time/time.h"
|
||||
#include "build/build_config.h"
|
||||
#include "media/base/video_encoder.h"
|
||||
#include "media/base/video_frame_converter.h"
|
||||
#include "media/base/video_frame_pool.h"
|
||||
#include "media/muxers/webm_muxer.h"
|
||||
#include "media/renderers/paint_canvas_video_renderer.h"
|
||||
@ -248,11 +249,12 @@ class VideoTrackRecorder : public TrackRecorder<MediaStreamVideoSink> {
|
||||
std::unique_ptr<WebGraphicsContext3DProvider> encoder_thread_context_;
|
||||
KeyFrameRequestProcessor key_frame_processor_;
|
||||
bool awaiting_first_frame_ = true;
|
||||
std::vector<uint8_t> resize_buffer_
|
||||
ALLOW_DISCOURAGED_TYPE("Avoids conversion when passed to media:: code");
|
||||
std::unique_ptr<media::VideoEncoderMetricsProvider> metrics_provider_;
|
||||
|
||||
media::VideoFramePool frame_pool_;
|
||||
|
||||
// Handle frame format conversions.
|
||||
media::VideoFrameConverter frame_converter_;
|
||||
};
|
||||
|
||||
// Class to encapsulate the enumeration of CodecIds/VideoCodecProfiles
|
||||
|
Reference in New Issue
Block a user