Chromium Code Reviews| Index: media/video/capture/video_capture_device.h |
| diff --git a/media/video/capture/video_capture_device.h b/media/video/capture/video_capture_device.h |
| index 9177302a92f9528d60da6b6c999c12b5f2b0b4f0..5731003ed0739903927f2d756a6001b2a2cfcd83 100644 |
| --- a/media/video/capture/video_capture_device.h |
| +++ b/media/video/capture/video_capture_device.h |
| @@ -18,9 +18,12 @@ |
| #include "base/time.h" |
| #include "media/base/media_export.h" |
| #include "media/video/capture/video_capture_types.h" |
| +#include "media/video/video_encode_types.h" |
| namespace media { |
| +class EncodedBitstreamBuffer; |
| + |
| class MEDIA_EXPORT VideoCaptureDevice { |
| public: |
| @@ -37,7 +40,7 @@ class MEDIA_EXPORT VideoCaptureDevice { |
| class MEDIA_EXPORT EventHandler { |
| public: |
| - // Reserve an output buffer into which a video frame can be captured |
| + // Reserve an output VideoFrame into which a video frame can be captured |
| // directly. If all buffers are currently busy, returns NULL. |
| // |
| // The returned VideoFrames will always be allocated with a YV12 format. The |
| @@ -45,9 +48,9 @@ class MEDIA_EXPORT VideoCaptureDevice { |
| // the VideoCaptureDevice's responsibility to obey whatever stride and |
| // memory layout are indicated on the returned VideoFrame object. |
| // |
| - // The output buffer stays reserved for use by the calling |
| + // The output frame stays reserved for use by the calling |
| // VideoCaptureDevice until either the last reference to the VideoFrame is |
| - // released, or until the buffer is passed back to the EventHandler's |
| + // released, or until the frame is passed back to the EventHandler's |
| // OnIncomingCapturedFrame() method. |
| // |
| // Threading note: After VideoCaptureDevice::DeAllocate() occurs, the |
| @@ -56,7 +59,14 @@ class MEDIA_EXPORT VideoCaptureDevice { |
| // DO remain valid after DeAllocate(). The VideoCaptureDevice must still |
| // eventually release them, but it may do so later -- e.g., after a queued |
| // capture operation completes. |
| - virtual scoped_refptr<media::VideoFrame> ReserveOutputBuffer() = 0; |
| + virtual scoped_refptr<media::VideoFrame> ReserveOutputVideoFrame() = 0; |
| + |
| + // Reserve an output EncodedBitstreamBuffer into which an encoded video |
| + // frame can be captured directly. If all buffers are currently busy, |
| + // returns NULL. Semantics for reservation and threading are same as with |
| + // ReserveOutputVideoFrame(). |
|
Ami GONE FROM CHROMIUM
2013/06/18 18:35:55
TODO to drop this & point to EVS->VEA crbug?
sheu
2013/08/22 22:40:31
Done.
|
| + virtual scoped_refptr<media::EncodedBitstreamBuffer> |
| + ReserveOutputEncodedBitstreamBuffer() = 0; |
| // Captured a new video frame as a raw buffer. The size, color format, and |
| // layout are taken from the parameters specified by an earlier call to |
| @@ -92,14 +102,29 @@ class MEDIA_EXPORT VideoCaptureDevice { |
| const scoped_refptr<media::VideoFrame>& frame, |
| base::Time timestamp) = 0; |
| + virtual void OnIncomingCapturedEncodedBitstreamBuffer( |
| + const scoped_refptr<media::EncodedBitstreamBuffer>& buffer, |
| + size_t data_size, |
| + base::Time timestamp) = 0; |
| + |
| // An error has occurred that cannot be handled and VideoCaptureDevice must |
| // be DeAllocate()-ed. |
| virtual void OnError() = 0; |
| // Called when VideoCaptureDevice::Allocate() has been called to inform of |
| - // the resulting frame size. |
| + // the resulting frame size, for unencoded capture. |
| virtual void OnFrameInfo(const VideoCaptureCapability& info) = 0; |
| + // As above, but for encoded capture. |
| + virtual void OnEncodedFrameInfo( |
| + const media::VideoEncodingParameters& info) = 0; |
| + |
| + // Called when the EncodedVideoBitstream's encoding parameters has changed |
| + // during runtime, to inform client of new parameters. Valid only for |
| + // capture devices exporting an EncodedVideoBitstream. |
| + virtual void OnBitstreamConfigChanged( |
| + const media::RuntimeVideoEncodingParameters& parameters) = 0; |
| + |
| protected: |
| virtual ~EventHandler() {} |
| }; |
| @@ -111,6 +136,13 @@ class MEDIA_EXPORT VideoCaptureDevice { |
| // Gets the names of all video capture devices connected to this computer. |
| static void GetDeviceNames(Names* device_names); |
| + // Gets the encoding capablities of this capture device, if any. |
| + virtual media::VideoEncodingCapabilities GetEncodingCapabilities() = 0; |
| + |
| + // Attempts to configure the encoded bitstream output of this device, if any. |
| + virtual void TryConfigureEncodedBitstream( |
| + const media::RuntimeVideoEncodingParameters& params) = 0; |
|
Ami GONE FROM CHROMIUM
2013/06/18 18:35:55
I think the majority of files & lines in this CL w
sheu
2013/08/22 22:40:31
I thought we tried to keep interfaces pure virtual
|
| + |
| // Prepare the camera for use. After this function has been called no other |
| // applications can use the camera. On completion EventHandler::OnFrameInfo() |
| // is called informing of the resulting resolution and frame rate. |