blob: 15effab53d1847b5b6a3e195837b1d4e5a18bee9 [file] [log] [blame]
Ben Murdocheb525c52013-07-10 11:40:50 +01001// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4#ifndef MEDIA_VIDEO_VIDEO_ENCODE_TYPES_H_
5#define MEDIA_VIDEO_VIDEO_ENCODE_TYPES_H_
6
7#include <map>
8#include <ostream>
9#include <vector>
10
11#include "base/time/time.h"
12#include "media/base/video_decoder_config.h"
13#include "ui/gfx/size.h"
14
15namespace media {
16
17// Data to represent limitations for a particular encoder config.
Ben Murdocha3f7b4e2013-07-24 10:36:34 +010018// The |max_bitrate| value is in bits per second.
Ben Murdocheb525c52013-07-10 11:40:50 +010019struct VideoEncodingConfig {
20 VideoCodec codec_type;
21 std::string codec_name;
22 gfx::Size max_resolution;
Ben Murdocha3f7b4e2013-07-24 10:36:34 +010023 uint32 max_frames_per_second;
24 uint32 max_bitrate;
Ben Murdocheb525c52013-07-10 11:40:50 +010025};
26
27typedef std::vector<VideoEncodingConfig> VideoEncodingCapabilities;
28
29// Encoding parameters that can be configured during streaming without removing
Ben Murdocha3f7b4e2013-07-24 10:36:34 +010030// the bitstream first. The |target_bitrate| and |max_bitrate| values are in
31// bits per second.
Ben Murdocheb525c52013-07-10 11:40:50 +010032struct RuntimeVideoEncodingParameters {
Ben Murdocha3f7b4e2013-07-24 10:36:34 +010033 uint32 target_bitrate;
34 uint32 max_bitrate;
35 uint32 frames_per_second;
Ben Murdocheb525c52013-07-10 11:40:50 +010036};
37
38// Generic video encoding parameters to be configured during initialization
39// time.
40struct VideoEncodingParameters {
41 std::string codec_name;
42 gfx::Size resolution;
43 RuntimeVideoEncodingParameters runtime_params;
44};
45
46struct BufferEncodingMetadata {
47 base::Time timestamp;
48 bool key_frame;
49};
50
51} // namespace media
52
53#endif // MEDIA_VIDEO_VIDEO_ENCODE_TYPES_H_