| Index: media/video/encoded_video_source.h
|
| diff --git a/media/video/encoded_video_source.h b/media/video/encoded_video_source.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1b269bfe82ed65dd83cce326725789dc20c653cc
|
| --- /dev/null
|
| +++ b/media/video/encoded_video_source.h
|
| @@ -0,0 +1,76 @@
|
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef MEDIA_VIDEO_ENCODED_VIDEO_SOURCE_H_
|
| +#define MEDIA_VIDEO_ENCODED_VIDEO_SOURCE_H_
|
| +
|
| +#include "base/memory/ref_counted.h"
|
| +#include "media/base/encoded_bitstream_buffer.h"
|
| +#include "media/video/video_encode_types.h"
|
| +
|
| +namespace media {
|
| +
|
| +// Class to represent any encoded video source. Anything that provides encoded
|
| +// video can be an EncodedVideoSource. Notable examples of this can be video
|
| +// encoder and webcam that has encoding capabilities.
|
| +// TODO(hshi): merge this with VEA interface. http://crbug.com/248334.
|
| +class EncodedVideoSource {
|
| + public:
|
| + class Client {
|
| + public:
|
| + // Notifies client that bitstream is opened successfully. The |params|
|
| + // contains the actual encoding parameters chosen by the browser process.
|
| + // It may be different from the params requested in OpenBitstream().
|
| + virtual void OnOpened(const VideoEncodingParameters& params) = 0;
|
| +
|
| + // Notifies client that bitstream is closed. After this call it is
|
| + // guaranteed that client will not receive further calls.
|
| + virtual void OnClosed() = 0;
|
| +
|
| + // Delivers an encoded bitstream buffer to the client.
|
| + virtual void OnBufferReady(
|
| + scoped_refptr<const EncodedBitstreamBuffer> buffer) = 0;
|
| +
|
| + // Notifies client that encoding parameters has changed. The |params|
|
| + // contains the current encoding parameters chosen by the browser process.
|
| + // It may be different from the params requested in TrySetBitstreamConfig().
|
| + virtual void OnConfigChanged(
|
| + const RuntimeVideoEncodingParameters& params) = 0;
|
| + };
|
| +
|
| + // Callback is invoked once RequestCapabilities() is complete.
|
| + typedef base::Callback<void(const VideoEncodingCapabilities& capabilities)>
|
| + RequestCapabilitiesCallback;
|
| +
|
| + // RequestCapabilities initiates an asynchronous query for the types of
|
| + // encoded bitstream supported by the encoder. This call should be invoked
|
| + // only once. EncodedVideoSource will invoke |callback| when capabilities
|
| + // become available.
|
| + virtual void RequestCapabilities(
|
| + const RequestCapabilitiesCallback& callback) = 0;
|
| +
|
| + // OpenBitstream opens the bitstream on the encoded video source. Only one
|
| + // bitstream can be opened for an encoded video source.
|
| + virtual void OpenBitstream(Client* client,
|
| + const VideoEncodingParameters& params) = 0;
|
| +
|
| + // CloseBitstream closes the bitstream.
|
| + virtual void CloseBitstream() = 0;
|
| +
|
| + // ReturnBitstreamBuffer notifies that the data within the buffer has been
|
| + // processed and it can be reused to encode upcoming bitstream.
|
| + virtual void ReturnBitstreamBuffer(
|
| + scoped_refptr<const media::EncodedBitstreamBuffer> buffer) = 0;
|
| +
|
| + // TrySetBitstreamConfig requests to change encoding parameters. Old config
|
| + // must be considered valid until OnConfigChanged is invoked on the client
|
| + // signaling successful change.
|
| + virtual void TrySetBitstreamConfig(
|
| + const RuntimeVideoEncodingParameters& params) = 0;
|
| +};
|
| +
|
| +} // namespace media
|
| +
|
| +#endif // MEDIA_VIDEO_ENCODED_VIDEO_SOURCE_H_
|
| +
|
|
|