Chromium Code Reviews| 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_; |
|
sheu
2013/06/12 08:06:21
(see below)
|
| // 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_; |
|
sheu
2013/06/12 08:06:21
This is bad and I feel bad. This and its implicat
|
| VideoCaptureManager* video_capture_manager_; |