Commit eb496531 authored by Christopher Cameron's avatar Christopher Cameron Committed by Commit Bot

Mac Zero Copy Capture: Remove OnIncomingCapturedExternalBuffer access

The ScopedAccessPermission argument to OnIncomingCapturedExternalBuffer
is no longer used, now that GpuMemoryBufferTrackerMac keeps the buffer
from being reused via its gfx::ScopedInUseIOSurface. Remove the argument
and its many entrails.

Bug: 1125879
Change-Id: I58c7a74621f09a0bbb4524f55ee2a740179e14de
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2505457Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Reviewed-by: default avatarMarkus Handell <handellm@google.com>
Commit-Queue: ccameron <ccameron@chromium.org>
Cr-Commit-Position: refs/heads/master@{#822541}
parent 3fccae4e
...@@ -34,10 +34,8 @@ class MockDeviceClient : public media::VideoCaptureDevice::Client { ...@@ -34,10 +34,8 @@ class MockDeviceClient : public media::VideoCaptureDevice::Client {
base::TimeTicks reference_time, base::TimeTicks reference_time,
base::TimeDelta timestamp, base::TimeDelta timestamp,
int frame_feedback_id)); int frame_feedback_id));
MOCK_METHOD6(OnIncomingCapturedExternalBuffer, MOCK_METHOD5(OnIncomingCapturedExternalBuffer,
void(gfx::GpuMemoryBufferHandle handle, void(gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<Buffer::ScopedAccessPermission>
read_access_permission,
const media::VideoCaptureFormat& format, const media::VideoCaptureFormat& format,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
base::TimeTicks reference_time, base::TimeTicks reference_time,
......
...@@ -69,7 +69,6 @@ void MockVideoCaptureClient::OnIncomingCapturedGfxBuffer( ...@@ -69,7 +69,6 @@ void MockVideoCaptureClient::OnIncomingCapturedGfxBuffer(
void MockVideoCaptureClient::OnIncomingCapturedExternalBuffer( void MockVideoCaptureClient::OnIncomingCapturedExternalBuffer(
gfx::GpuMemoryBufferHandle handle, gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<Buffer::ScopedAccessPermission> read_access_permission,
const VideoCaptureFormat& format, const VideoCaptureFormat& format,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
base::TimeTicks reference_time, base::TimeTicks reference_time,
......
...@@ -56,7 +56,6 @@ class MockVideoCaptureClient : public VideoCaptureDevice::Client { ...@@ -56,7 +56,6 @@ class MockVideoCaptureClient : public VideoCaptureDevice::Client {
int frame_feedback_id = 0) override; int frame_feedback_id = 0) override;
void OnIncomingCapturedExternalBuffer( void OnIncomingCapturedExternalBuffer(
gfx::GpuMemoryBufferHandle handle, gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<Buffer::ScopedAccessPermission> read_access_permission,
const VideoCaptureFormat& format, const VideoCaptureFormat& format,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
base::TimeTicks reference_time, base::TimeTicks reference_time,
......
...@@ -164,7 +164,6 @@ class TestVideoCaptureClient : public VideoCaptureDevice::Client { ...@@ -164,7 +164,6 @@ class TestVideoCaptureClient : public VideoCaptureDevice::Client {
} }
void OnIncomingCapturedExternalBuffer( void OnIncomingCapturedExternalBuffer(
gfx::GpuMemoryBufferHandle handle, gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<Buffer::ScopedAccessPermission> read_access_permission,
const VideoCaptureFormat& format, const VideoCaptureFormat& format,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
base::TimeTicks reference_time, base::TimeTicks reference_time,
......
...@@ -30,9 +30,6 @@ class MockVideoCaptureDeviceAVFoundationFrameReceiver ...@@ -30,9 +30,6 @@ class MockVideoCaptureDeviceAVFoundationFrameReceiver
MOCK_METHOD(void, MOCK_METHOD(void,
ReceiveExternalGpuMemoryBufferFrame, ReceiveExternalGpuMemoryBufferFrame,
(gfx::GpuMemoryBufferHandle handle, (gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<
VideoCaptureDevice::Client::Buffer::ScopedAccessPermission>
read_access_permission,
const VideoCaptureFormat& frame_format, const VideoCaptureFormat& frame_format,
const gfx::ColorSpace color_space, const gfx::ColorSpace color_space,
base::TimeDelta timestamp), base::TimeDelta timestamp),
......
...@@ -48,17 +48,6 @@ base::TimeDelta GetCMSampleBufferTimestamp(CMSampleBufferRef sampleBuffer) { ...@@ -48,17 +48,6 @@ base::TimeDelta GetCMSampleBufferTimestamp(CMSampleBufferRef sampleBuffer) {
return timestamp; return timestamp;
} }
class CMSampleBufferScopedAccessPermission
: public media::VideoCaptureDevice::Client::Buffer::ScopedAccessPermission {
public:
CMSampleBufferScopedAccessPermission(CMSampleBufferRef buffer)
: buffer_(buffer, base::scoped_policy::RETAIN) {}
~CMSampleBufferScopedAccessPermission() override { buffer_.reset(); }
private:
base::ScopedCFTypeRef<CMSampleBufferRef> buffer_;
};
} // anonymous namespace } // anonymous namespace
namespace media { namespace media {
...@@ -608,7 +597,6 @@ AVCaptureDeviceFormat* FindBestCaptureFormat( ...@@ -608,7 +597,6 @@ AVCaptureDeviceFormat* FindBestCaptureFormat(
_lock.AssertAcquired(); _lock.AssertAcquired();
_frameReceiver->ReceiveExternalGpuMemoryBufferFrame( _frameReceiver->ReceiveExternalGpuMemoryBufferFrame(
std::move(handle), std::move(handle),
std::make_unique<CMSampleBufferScopedAccessPermission>(sampleBuffer),
captureFormat, colorSpace, timestamp); captureFormat, colorSpace, timestamp);
return YES; return YES;
} }
......
...@@ -36,9 +36,6 @@ class CAPTURE_EXPORT VideoCaptureDeviceAVFoundationFrameReceiver { ...@@ -36,9 +36,6 @@ class CAPTURE_EXPORT VideoCaptureDeviceAVFoundationFrameReceiver {
// AVFoundation. // AVFoundation.
virtual void ReceiveExternalGpuMemoryBufferFrame( virtual void ReceiveExternalGpuMemoryBufferFrame(
gfx::GpuMemoryBufferHandle handle, gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<
VideoCaptureDevice::Client::Buffer::ScopedAccessPermission>
read_access_permission,
const VideoCaptureFormat& frame_format, const VideoCaptureFormat& frame_format,
const gfx::ColorSpace color_space, const gfx::ColorSpace color_space,
base::TimeDelta timestamp) = 0; base::TimeDelta timestamp) = 0;
......
...@@ -82,9 +82,6 @@ class VideoCaptureDeviceMac ...@@ -82,9 +82,6 @@ class VideoCaptureDeviceMac
base::TimeDelta timestamp) override; base::TimeDelta timestamp) override;
void ReceiveExternalGpuMemoryBufferFrame( void ReceiveExternalGpuMemoryBufferFrame(
gfx::GpuMemoryBufferHandle handle, gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<
VideoCaptureDevice::Client::Buffer::ScopedAccessPermission>
read_access_permission,
const VideoCaptureFormat& frame_format, const VideoCaptureFormat& frame_format,
const gfx::ColorSpace color_space, const gfx::ColorSpace color_space,
base::TimeDelta timestamp) override; base::TimeDelta timestamp) override;
......
...@@ -804,8 +804,6 @@ void VideoCaptureDeviceMac::ReceiveFrame(const uint8_t* video_frame, ...@@ -804,8 +804,6 @@ void VideoCaptureDeviceMac::ReceiveFrame(const uint8_t* video_frame,
void VideoCaptureDeviceMac::ReceiveExternalGpuMemoryBufferFrame( void VideoCaptureDeviceMac::ReceiveExternalGpuMemoryBufferFrame(
gfx::GpuMemoryBufferHandle handle, gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<VideoCaptureDevice::Client::Buffer::ScopedAccessPermission>
read_access_permission,
const VideoCaptureFormat& format, const VideoCaptureFormat& format,
const gfx::ColorSpace color_space, const gfx::ColorSpace color_space,
base::TimeDelta timestamp) { base::TimeDelta timestamp) {
...@@ -816,9 +814,9 @@ void VideoCaptureDeviceMac::ReceiveExternalGpuMemoryBufferFrame( ...@@ -816,9 +814,9 @@ void VideoCaptureDeviceMac::ReceiveExternalGpuMemoryBufferFrame(
", and expected " + capture_format_.frame_size.ToString()); ", and expected " + capture_format_.frame_size.ToString());
return; return;
} }
client_->OnIncomingCapturedExternalBuffer( client_->OnIncomingCapturedExternalBuffer(std::move(handle), format,
std::move(handle), std::move(read_access_permission), format, color_space, color_space, base::TimeTicks::Now(),
base::TimeTicks::Now(), timestamp); timestamp);
} }
void VideoCaptureDeviceMac::OnPhotoTaken(const uint8_t* image_data, void VideoCaptureDeviceMac::OnPhotoTaken(const uint8_t* image_data,
......
...@@ -35,10 +35,8 @@ class MockVideoCaptureDeviceClient : public VideoCaptureDevice::Client { ...@@ -35,10 +35,8 @@ class MockVideoCaptureDeviceClient : public VideoCaptureDevice::Client {
base::TimeTicks reference_time, base::TimeTicks reference_time,
base::TimeDelta timestamp, base::TimeDelta timestamp,
int frame_feedback_id)); int frame_feedback_id));
MOCK_METHOD6(OnIncomingCapturedExternalBuffer, MOCK_METHOD5(OnIncomingCapturedExternalBuffer,
void(gfx::GpuMemoryBufferHandle handle, void(gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<Buffer::ScopedAccessPermission>
read_access_permission,
const VideoCaptureFormat& format, const VideoCaptureFormat& format,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
base::TimeTicks reference_time, base::TimeTicks reference_time,
......
...@@ -179,11 +179,14 @@ class CAPTURE_EXPORT VideoCaptureDevice ...@@ -179,11 +179,14 @@ class CAPTURE_EXPORT VideoCaptureDevice
int frame_feedback_id = 0) = 0; int frame_feedback_id = 0) = 0;
// Captured a new video frame. The data for this frame is in |handle|, // Captured a new video frame. The data for this frame is in |handle|,
// which is owned by the platform-specific capture device, and is kept valid // which is owned by the platform-specific capture device. It is the
// by |read_access_permission|. // responsibilty of the implementation to prevent the buffer in |handle|
// from being reused by the external capturer. In practice, this is used
// only on macOS, the external capturer maintains a CVPixelBufferPool, and
// gfx::ScopedInUseIOSurface is used to prevent reuse of buffers until all
// consumers have consumed them.
virtual void OnIncomingCapturedExternalBuffer( virtual void OnIncomingCapturedExternalBuffer(
gfx::GpuMemoryBufferHandle handle, gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<Buffer::ScopedAccessPermission> read_access_permission,
const VideoCaptureFormat& format, const VideoCaptureFormat& format,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
base::TimeTicks reference_time, base::TimeTicks reference_time,
......
...@@ -466,8 +466,6 @@ void VideoCaptureDeviceClient::OnIncomingCapturedGfxBuffer( ...@@ -466,8 +466,6 @@ void VideoCaptureDeviceClient::OnIncomingCapturedGfxBuffer(
void VideoCaptureDeviceClient::OnIncomingCapturedExternalBuffer( void VideoCaptureDeviceClient::OnIncomingCapturedExternalBuffer(
gfx::GpuMemoryBufferHandle handle, gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<VideoCaptureDevice::Client::Buffer::ScopedAccessPermission>
scoped_access_permission_to_wrap,
const VideoCaptureFormat& format, const VideoCaptureFormat& format,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
base::TimeTicks reference_time, base::TimeTicks reference_time,
......
...@@ -82,7 +82,6 @@ class CAPTURE_EXPORT VideoCaptureDeviceClient ...@@ -82,7 +82,6 @@ class CAPTURE_EXPORT VideoCaptureDeviceClient
int frame_feedback_id = 0) override; int frame_feedback_id = 0) override;
void OnIncomingCapturedExternalBuffer( void OnIncomingCapturedExternalBuffer(
gfx::GpuMemoryBufferHandle handle, gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<Buffer::ScopedAccessPermission> read_access_permission,
const VideoCaptureFormat& format, const VideoCaptureFormat& format,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
base::TimeTicks reference_time, base::TimeTicks reference_time,
......
...@@ -68,7 +68,6 @@ class MockClient : public VideoCaptureDevice::Client { ...@@ -68,7 +68,6 @@ class MockClient : public VideoCaptureDevice::Client {
void OnIncomingCapturedExternalBuffer( void OnIncomingCapturedExternalBuffer(
gfx::GpuMemoryBufferHandle handle, gfx::GpuMemoryBufferHandle handle,
std::unique_ptr<Buffer::ScopedAccessPermission> read_access_permission,
const VideoCaptureFormat& format, const VideoCaptureFormat& format,
const gfx::ColorSpace& color_space, const gfx::ColorSpace& color_space,
base::TimeTicks reference_time, base::TimeTicks reference_time,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment