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

Side by Side Diff: media/cast/sender/h264_vt_encoder.cc

Issue 901833004: [Cast] Repurpose CastInitializationStatus for variable frame size support. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Compile fixes. Created 5 years, 10 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/cast/sender/h264_vt_encoder.h" 5 #include "media/cast/sender/h264_vt_encoder.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/big_endian.h" 10 #include "base/big_endian.h"
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 220
221 DISALLOW_COPY_AND_ASSIGN(VideoFrameFactoryCVPixelBufferPoolImpl); 221 DISALLOW_COPY_AND_ASSIGN(VideoFrameFactoryCVPixelBufferPoolImpl);
222 }; 222 };
223 223
224 } // namespace 224 } // namespace
225 225
226 H264VideoToolboxEncoder::H264VideoToolboxEncoder( 226 H264VideoToolboxEncoder::H264VideoToolboxEncoder(
227 const scoped_refptr<CastEnvironment>& cast_environment, 227 const scoped_refptr<CastEnvironment>& cast_environment,
228 const VideoSenderConfig& video_config, 228 const VideoSenderConfig& video_config,
229 const gfx::Size& frame_size, 229 const gfx::Size& frame_size,
230 const CastInitializationCallback& initialization_cb) 230 const StatusChangeCallback& status_change_cb)
231 : cast_environment_(cast_environment), 231 : cast_environment_(cast_environment),
232
233 videotoolbox_glue_(VideoToolboxGlue::Get()), 232 videotoolbox_glue_(VideoToolboxGlue::Get()),
234 frame_id_(kStartFrameId), 233 frame_id_(kStartFrameId),
235 encode_next_frame_as_keyframe_(false) { 234 encode_next_frame_as_keyframe_(false) {
236 DCHECK(!frame_size.IsEmpty()); 235 DCHECK(!frame_size.IsEmpty());
236 DCHECK(!status_change_cb.is_null());
237 237
238 CastInitializationStatus initialization_status; 238 OperationalStatus operational_status;
239 if (videotoolbox_glue_) { 239 if (video_config.codec == CODEC_VIDEO_H264 && videotoolbox_glue_) {
240 initialization_status = (Initialize(video_config, frame_size)) 240 operational_status = Initialize(video_config, frame_size) ?
241 ? STATUS_VIDEO_INITIALIZED 241 STATUS_INITIALIZED : STATUS_INVALID_CONFIGURATION;
242 : STATUS_INVALID_VIDEO_CONFIGURATION;
243 } else { 242 } else {
244 LOG(ERROR) << " VideoToolbox is not available"; 243 operational_status = STATUS_UNSUPPORTED_CODEC;
245 initialization_status = STATUS_HW_VIDEO_ENCODER_NOT_SUPPORTED;
246 } 244 }
247 if (!initialization_cb.is_null()) { 245 cast_environment_->PostTask(
248 cast_environment_->PostTask( 246 CastEnvironment::MAIN,
249 CastEnvironment::MAIN, 247 FROM_HERE,
250 FROM_HERE, 248 base::Bind(status_change_cb, operational_status));
251 base::Bind(initialization_cb, initialization_status));
252 }
253 } 249 }
254 250
255 H264VideoToolboxEncoder::~H264VideoToolboxEncoder() { 251 H264VideoToolboxEncoder::~H264VideoToolboxEncoder() {
256 Teardown(); 252 Teardown();
257 } 253 }
258 254
259 bool H264VideoToolboxEncoder::Initialize( 255 bool H264VideoToolboxEncoder::Initialize(
260 const VideoSenderConfig& video_config, 256 const VideoSenderConfig& video_config,
261 const gfx::Size& frame_size) { 257 const gfx::Size& frame_size) {
262 DCHECK(thread_checker_.CalledOnValidThread()); 258 DCHECK(thread_checker_.CalledOnValidThread());
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
537 CopySampleBufferToAnnexBBuffer(sbuf, &encoded_frame->data, keyframe); 533 CopySampleBufferToAnnexBBuffer(sbuf, &encoded_frame->data, keyframe);
538 534
539 encoder->cast_environment_->PostTask( 535 encoder->cast_environment_->PostTask(
540 CastEnvironment::MAIN, FROM_HERE, 536 CastEnvironment::MAIN, FROM_HERE,
541 base::Bind(request->frame_encoded_callback, 537 base::Bind(request->frame_encoded_callback,
542 base::Passed(&encoded_frame))); 538 base::Passed(&encoded_frame)));
543 } 539 }
544 540
545 } // namespace cast 541 } // namespace cast
546 } // namespace media 542 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698