| Index: content/browser/renderer_host/media/video_capture_controller.h
|
| diff --git a/content/browser/renderer_host/media/video_capture_controller.h b/content/browser/renderer_host/media/video_capture_controller.h
|
| index 091b87dc87929f9c048b92d49921e281bc3591ea..cb8babf091167f8b539be2a3a079d3ac47b73afb 100644
|
| --- a/content/browser/renderer_host/media/video_capture_controller.h
|
| +++ b/content/browser/renderer_host/media/video_capture_controller.h
|
| @@ -30,6 +30,7 @@
|
| #include "media/video/capture/video_capture.h"
|
| #include "media/video/capture/video_capture_device.h"
|
| #include "media/video/capture/video_capture_types.h"
|
| +#include "media/video/video_encode_types.h"
|
|
|
| namespace content {
|
| class VideoCaptureManager;
|
| @@ -67,8 +68,15 @@ class CONTENT_EXPORT VideoCaptureController
|
| VideoCaptureControllerEventHandler* event_handler,
|
| int buffer_id);
|
|
|
| + // Attempt to configure the encoding parameters for an encoded bitstream.
|
| + // Fails silently if the capture device does not support encoding.
|
| + void TryConfigureEncodedBitstream(
|
| + const media::RuntimeVideoEncodingParameters& params);
|
| +
|
| // Implement media::VideoCaptureDevice::EventHandler.
|
| - virtual scoped_refptr<media::VideoFrame> ReserveOutputBuffer() OVERRIDE;
|
| + virtual scoped_refptr<media::VideoFrame> ReserveOutputVideoFrame() OVERRIDE;
|
| + virtual scoped_refptr<media::EncodedBitstreamBuffer>
|
| + ReserveOutputEncodedBitstreamBuffer() OVERRIDE;
|
| virtual void OnIncomingCapturedFrame(const uint8* data,
|
| int length,
|
| base::Time timestamp,
|
| @@ -78,14 +86,26 @@ class CONTENT_EXPORT VideoCaptureController
|
| virtual void OnIncomingCapturedVideoFrame(
|
| const scoped_refptr<media::VideoFrame>& frame,
|
| base::Time timestamp) OVERRIDE;
|
| + virtual void OnIncomingCapturedEncodedBitstreamBuffer(
|
| + const scoped_refptr<media::EncodedBitstreamBuffer>& buffer,
|
| + size_t data_size,
|
| + base::Time timestamp) OVERRIDE;
|
| virtual void OnError() OVERRIDE;
|
| virtual void OnFrameInfo(
|
| const media::VideoCaptureCapability& info) OVERRIDE;
|
| + virtual void OnEncodedFrameInfo(
|
| + const media::VideoEncodingParameters& info) OVERRIDE;
|
| + virtual void OnBitstreamConfigChanged(
|
| + const media::RuntimeVideoEncodingParameters& params) OVERRIDE;
|
|
|
| // Reserve a media::VideoFrame in I420 format from a buffer pool.
|
| static scoped_refptr<media::VideoFrame> ReserveI420VideoFrame(
|
| VideoCaptureBufferPool* buffer_pool, const gfx::Size& size);
|
|
|
| + // Reserve a media::EncodedBitstreaBuffer from a buffer pool.
|
| + static scoped_refptr<media::EncodedBitstreamBuffer>
|
| + ReserveEncodedBitstreamBuffer(VideoCaptureBufferPool* buffer_pool);
|
| +
|
| protected:
|
| virtual ~VideoCaptureController();
|
|
|
| @@ -99,10 +119,20 @@ class CONTENT_EXPORT VideoCaptureController
|
| void OnDeviceStopped();
|
|
|
| // Worker functions on IO thread.
|
| - void DoIncomingCapturedFrameOnIOThread(
|
| - const scoped_refptr<media::VideoFrame>& captured_frame,
|
| + void DoIncomingCapturedVideoFrameOnIOThread(
|
| + const scoped_refptr<media::VideoFrame>& frame,
|
| + base::Time timestamp);
|
| + void DoIncomingCapturedEncodedBitstreamBufferOnIOThread(
|
| + const scoped_refptr<media::EncodedBitstreamBuffer>& buffer,
|
| + size_t data_size,
|
| + base::Time timestamp);
|
| + void DoIncomingCapturedSharedMemoryOnIOThread(
|
| + base::SharedMemoryHandle reserved_handle,
|
| + size_t data_size,
|
| base::Time timestamp);
|
| - void DoFrameInfoOnIOThread();
|
| + void DoFrameInfoOnIOThread(bool encoded);
|
| + void DoBitstreamConfigChangedOnIOThread(
|
| + const media::RuntimeVideoEncodingParameters& params);
|
| void DoErrorOnIOThread();
|
| void DoDeviceStoppedOnIOThread();
|
|
|
| @@ -143,6 +173,7 @@ class CONTENT_EXPORT VideoCaptureController
|
| // It's modified on caller thread, assuming there is only one OnFrameInfo()
|
| // call per StartCapture().
|
| media::VideoCaptureCapability frame_info_;
|
| + media::VideoEncodingParameters encoded_frame_info_;
|
|
|
| // Chopped pixels in width/height in case video capture device has odd numbers
|
| // for width/height.
|
| @@ -151,6 +182,7 @@ class CONTENT_EXPORT VideoCaptureController
|
|
|
| // It's accessed only on IO thread.
|
| bool frame_info_available_;
|
| + bool encoded_frame_info_available_;
|
|
|
| VideoCaptureManager* video_capture_manager_;
|
|
|
|
|