Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1361)

Side by Side Diff: media/base/video_decoder_config.cc

Issue 10832087: Remove VideoDecoderConfig.frame_rate_xxx() & VideoFrame:Get/SetDuration() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address more CR comments. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « media/base/video_decoder_config.h ('k') | media/base/video_frame.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/base/video_decoder_config.h" 5 #include "media/base/video_decoder_config.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
11 11
12 namespace media { 12 namespace media {
13 13
14 VideoDecoderConfig::VideoDecoderConfig() 14 VideoDecoderConfig::VideoDecoderConfig()
15 : codec_(kUnknownVideoCodec), 15 : codec_(kUnknownVideoCodec),
16 profile_(VIDEO_CODEC_PROFILE_UNKNOWN), 16 profile_(VIDEO_CODEC_PROFILE_UNKNOWN),
17 format_(VideoFrame::INVALID), 17 format_(VideoFrame::INVALID),
18 frame_rate_numerator_(0),
19 frame_rate_denominator_(0),
20 aspect_ratio_numerator_(0), 18 aspect_ratio_numerator_(0),
21 aspect_ratio_denominator_(0), 19 aspect_ratio_denominator_(0),
22 extra_data_size_(0) { 20 extra_data_size_(0) {
23 } 21 }
24 22
25 VideoDecoderConfig::VideoDecoderConfig(VideoCodec codec, 23 VideoDecoderConfig::VideoDecoderConfig(VideoCodec codec,
26 VideoCodecProfile profile, 24 VideoCodecProfile profile,
27 VideoFrame::Format format, 25 VideoFrame::Format format,
28 const gfx::Size& coded_size, 26 const gfx::Size& coded_size,
29 const gfx::Rect& visible_rect, 27 const gfx::Rect& visible_rect,
30 int frame_rate_numerator,
31 int frame_rate_denominator,
32 int aspect_ratio_numerator, 28 int aspect_ratio_numerator,
33 int aspect_ratio_denominator, 29 int aspect_ratio_denominator,
34 const uint8* extra_data, 30 const uint8* extra_data,
35 size_t extra_data_size) { 31 size_t extra_data_size) {
36 Initialize(codec, profile, format, coded_size, visible_rect, 32 Initialize(codec, profile, format, coded_size, visible_rect,
37 frame_rate_numerator, frame_rate_denominator,
38 aspect_ratio_numerator, aspect_ratio_denominator, 33 aspect_ratio_numerator, aspect_ratio_denominator,
39 extra_data, extra_data_size, true); 34 extra_data, extra_data_size, true);
40 } 35 }
41 36
42 VideoDecoderConfig::~VideoDecoderConfig() {} 37 VideoDecoderConfig::~VideoDecoderConfig() {}
43 38
44 // Some videos just want to watch the world burn, with a height of 0; cap the 39 // Some videos just want to watch the world burn, with a height of 0; cap the
45 // "infinite" aspect ratio resulting. 40 // "infinite" aspect ratio resulting.
46 static const int kInfiniteRatio = 99999; 41 static const int kInfiniteRatio = 99999;
47 42
(...skipping 13 matching lines...) Expand all
61 size.height() ? (size.width() * 100) / size.height() : kInfiniteRatio, 56 size.height() ? (size.width() * 100) / size.height() : kInfiniteRatio,
62 base::CustomHistogram::ArrayToCustomRanges( 57 base::CustomHistogram::ArrayToCustomRanges(
63 kCommonAspectRatios100, arraysize(kCommonAspectRatios100))); 58 kCommonAspectRatios100, arraysize(kCommonAspectRatios100)));
64 } 59 }
65 60
66 void VideoDecoderConfig::Initialize(VideoCodec codec, 61 void VideoDecoderConfig::Initialize(VideoCodec codec,
67 VideoCodecProfile profile, 62 VideoCodecProfile profile,
68 VideoFrame::Format format, 63 VideoFrame::Format format,
69 const gfx::Size& coded_size, 64 const gfx::Size& coded_size,
70 const gfx::Rect& visible_rect, 65 const gfx::Rect& visible_rect,
71 int frame_rate_numerator,
72 int frame_rate_denominator,
73 int aspect_ratio_numerator, 66 int aspect_ratio_numerator,
74 int aspect_ratio_denominator, 67 int aspect_ratio_denominator,
75 const uint8* extra_data, 68 const uint8* extra_data,
76 size_t extra_data_size, 69 size_t extra_data_size,
77 bool record_stats) { 70 bool record_stats) {
78 CHECK((extra_data_size != 0) == (extra_data != NULL)); 71 CHECK((extra_data_size != 0) == (extra_data != NULL));
79 72
80 if (record_stats) { 73 if (record_stats) {
81 UMA_HISTOGRAM_ENUMERATION("Media.VideoCodec", codec, kVideoCodecMax + 1); 74 UMA_HISTOGRAM_ENUMERATION("Media.VideoCodec", codec, kVideoCodecMax + 1);
82 // Drop UNKNOWN because U_H_E() uses one bucket for all values less than 1. 75 // Drop UNKNOWN because U_H_E() uses one bucket for all values less than 1.
83 if (profile >= 0) { 76 if (profile >= 0) {
84 UMA_HISTOGRAM_ENUMERATION("Media.VideoCodecProfile", profile, 77 UMA_HISTOGRAM_ENUMERATION("Media.VideoCodecProfile", profile,
85 VIDEO_CODEC_PROFILE_MAX + 1); 78 VIDEO_CODEC_PROFILE_MAX + 1);
86 } 79 }
87 UMA_HISTOGRAM_COUNTS_10000("Media.VideoCodedWidth", coded_size.width()); 80 UMA_HISTOGRAM_COUNTS_10000("Media.VideoCodedWidth", coded_size.width());
88 UmaHistogramAspectRatio("Media.VideoCodedAspectRatio", coded_size); 81 UmaHistogramAspectRatio("Media.VideoCodedAspectRatio", coded_size);
89 UMA_HISTOGRAM_COUNTS_10000("Media.VideoVisibleWidth", visible_rect.width()); 82 UMA_HISTOGRAM_COUNTS_10000("Media.VideoVisibleWidth", visible_rect.width());
90 UmaHistogramAspectRatio("Media.VideoVisibleAspectRatio", visible_rect); 83 UmaHistogramAspectRatio("Media.VideoVisibleAspectRatio", visible_rect);
91 } 84 }
92 85
93 codec_ = codec; 86 codec_ = codec;
94 profile_ = profile; 87 profile_ = profile;
95 format_ = format; 88 format_ = format;
96 coded_size_ = coded_size; 89 coded_size_ = coded_size;
97 visible_rect_ = visible_rect; 90 visible_rect_ = visible_rect;
98 frame_rate_numerator_ = frame_rate_numerator;
99 frame_rate_denominator_ = frame_rate_denominator;
100 aspect_ratio_numerator_ = aspect_ratio_numerator; 91 aspect_ratio_numerator_ = aspect_ratio_numerator;
101 aspect_ratio_denominator_ = aspect_ratio_denominator; 92 aspect_ratio_denominator_ = aspect_ratio_denominator;
102 extra_data_size_ = extra_data_size; 93 extra_data_size_ = extra_data_size;
103 94
104 if (extra_data_size_ > 0) { 95 if (extra_data_size_ > 0) {
105 extra_data_.reset(new uint8[extra_data_size_]); 96 extra_data_.reset(new uint8[extra_data_size_]);
106 memcpy(extra_data_.get(), extra_data, extra_data_size_); 97 memcpy(extra_data_.get(), extra_data, extra_data_size_);
107 } else { 98 } else {
108 extra_data_.reset(); 99 extra_data_.reset();
109 } 100 }
(...skipping 14 matching lines...) Expand all
124 // expected by WebKit layout tests. 115 // expected by WebKit layout tests.
125 natural_size_.SetSize(width & ~1, height); 116 natural_size_.SetSize(width & ~1, height);
126 } 117 }
127 118
128 void VideoDecoderConfig::CopyFrom(const VideoDecoderConfig& video_config) { 119 void VideoDecoderConfig::CopyFrom(const VideoDecoderConfig& video_config) {
129 Initialize(video_config.codec(), 120 Initialize(video_config.codec(),
130 video_config.profile(), 121 video_config.profile(),
131 video_config.format(), 122 video_config.format(),
132 video_config.coded_size(), 123 video_config.coded_size(),
133 video_config.visible_rect(), 124 video_config.visible_rect(),
134 video_config.frame_rate_numerator(),
135 video_config.frame_rate_denominator(),
136 video_config.aspect_ratio_numerator(), 125 video_config.aspect_ratio_numerator(),
137 video_config.aspect_ratio_denominator(), 126 video_config.aspect_ratio_denominator(),
138 video_config.extra_data(), 127 video_config.extra_data(),
139 video_config.extra_data_size(), 128 video_config.extra_data_size(),
140 false); 129 false);
141 } 130 }
142 131
143 bool VideoDecoderConfig::IsValidConfig() const { 132 bool VideoDecoderConfig::IsValidConfig() const {
144 return codec_ != kUnknownVideoCodec && 133 return codec_ != kUnknownVideoCodec &&
145 frame_rate_denominator_ > 0 &&
146 aspect_ratio_numerator_ > 0 && 134 aspect_ratio_numerator_ > 0 &&
147 aspect_ratio_denominator_ > 0 && 135 aspect_ratio_denominator_ > 0 &&
148 VideoFrame::IsValidConfig( 136 VideoFrame::IsValidConfig(
149 format_, natural_size_.width(), natural_size_.height()); 137 format_, natural_size_.width(), natural_size_.height());
150 } 138 }
151 139
152 bool VideoDecoderConfig::Matches(const VideoDecoderConfig& config) const { 140 bool VideoDecoderConfig::Matches(const VideoDecoderConfig& config) const {
153 return ((codec() == config.codec()) && 141 return ((codec() == config.codec()) &&
154 (format() == config.format()) && 142 (format() == config.format()) &&
155 (profile() == config.profile()) && 143 (profile() == config.profile()) &&
(...skipping 10 matching lines...) Expand all
166 s << "codec: " << codec() 154 s << "codec: " << codec()
167 << " format: " << format() 155 << " format: " << format()
168 << " coded size: [" << coded_size().width() 156 << " coded size: [" << coded_size().width()
169 << "," << coded_size().height() << "]" 157 << "," << coded_size().height() << "]"
170 << " visible rect: [" << visible_rect().x() 158 << " visible rect: [" << visible_rect().x()
171 << "," << visible_rect().y() 159 << "," << visible_rect().y()
172 << "," << visible_rect().width() 160 << "," << visible_rect().width()
173 << "," << visible_rect().height() << "]" 161 << "," << visible_rect().height() << "]"
174 << " natural size: [" << natural_size().width() 162 << " natural size: [" << natural_size().width()
175 << "," << natural_size().height() << "]" 163 << "," << natural_size().height() << "]"
176 << " frame rate: " << frame_rate_numerator()
177 << "/" << frame_rate_denominator()
178 << " aspect ratio: " << aspect_ratio_numerator() 164 << " aspect ratio: " << aspect_ratio_numerator()
179 << "/" << aspect_ratio_denominator(); 165 << "/" << aspect_ratio_denominator();
180 return s.str(); 166 return s.str();
181 } 167 }
182 168
183 VideoCodec VideoDecoderConfig::codec() const { 169 VideoCodec VideoDecoderConfig::codec() const {
184 return codec_; 170 return codec_;
185 } 171 }
186 172
187 VideoCodecProfile VideoDecoderConfig::profile() const { 173 VideoCodecProfile VideoDecoderConfig::profile() const {
188 return profile_; 174 return profile_;
189 } 175 }
190 176
191 VideoFrame::Format VideoDecoderConfig::format() const { 177 VideoFrame::Format VideoDecoderConfig::format() const {
192 return format_; 178 return format_;
193 } 179 }
194 180
195 gfx::Size VideoDecoderConfig::coded_size() const { 181 gfx::Size VideoDecoderConfig::coded_size() const {
196 return coded_size_; 182 return coded_size_;
197 } 183 }
198 184
199 gfx::Rect VideoDecoderConfig::visible_rect() const { 185 gfx::Rect VideoDecoderConfig::visible_rect() const {
200 return visible_rect_; 186 return visible_rect_;
201 } 187 }
202 188
203 gfx::Size VideoDecoderConfig::natural_size() const { 189 gfx::Size VideoDecoderConfig::natural_size() const {
204 return natural_size_; 190 return natural_size_;
205 } 191 }
206 192
207 int VideoDecoderConfig::frame_rate_numerator() const {
208 return frame_rate_numerator_;
209 }
210
211 int VideoDecoderConfig::frame_rate_denominator() const {
212 return frame_rate_denominator_;
213 }
214
215 int VideoDecoderConfig::aspect_ratio_numerator() const { 193 int VideoDecoderConfig::aspect_ratio_numerator() const {
216 return aspect_ratio_numerator_; 194 return aspect_ratio_numerator_;
217 } 195 }
218 196
219 int VideoDecoderConfig::aspect_ratio_denominator() const { 197 int VideoDecoderConfig::aspect_ratio_denominator() const {
220 return aspect_ratio_denominator_; 198 return aspect_ratio_denominator_;
221 } 199 }
222 200
223 uint8* VideoDecoderConfig::extra_data() const { 201 uint8* VideoDecoderConfig::extra_data() const {
224 return extra_data_.get(); 202 return extra_data_.get();
225 } 203 }
226 204
227 size_t VideoDecoderConfig::extra_data_size() const { 205 size_t VideoDecoderConfig::extra_data_size() const {
228 return extra_data_size_; 206 return extra_data_size_;
229 } 207 }
230 208
231 } // namespace media 209 } // namespace media
OLDNEW
« no previous file with comments | « media/base/video_decoder_config.h ('k') | media/base/video_frame.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698