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

Side by Side Diff: media/cast/video_sender/fake_software_video_encoder.cc

Issue 288103002: [Cast] EncodedAudioFrame+EncodedVideoFrame+reference_time --> EncodedFrame (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed hclam@'s first round comments. Fixed chrome unit_tests compiles. Created 6 years, 7 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
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/video_sender/fake_software_video_encoder.h" 5 #include "media/cast/video_sender/fake_software_video_encoder.h"
6 6
7 #include "base/json/json_writer.h" 7 #include "base/json/json_writer.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "media/cast/transport/cast_transport_config.h" 9 #include "media/cast/transport/cast_transport_config.h"
10 10
11 #ifndef OFFICIAL_BUILD 11 #ifndef OFFICIAL_BUILD
12 12
13 namespace media { 13 namespace media {
14 namespace cast { 14 namespace cast {
15 15
16 FakeSoftwareVideoEncoder::FakeSoftwareVideoEncoder() 16 FakeSoftwareVideoEncoder::FakeSoftwareVideoEncoder()
17 : next_frame_is_key_(true), 17 : next_frame_is_key_(true),
18 frame_id_(0), 18 frame_id_(0),
19 frame_id_to_reference_(0) { 19 frame_id_to_reference_(0) {
20 } 20 }
21 21
22 FakeSoftwareVideoEncoder::~FakeSoftwareVideoEncoder() {} 22 FakeSoftwareVideoEncoder::~FakeSoftwareVideoEncoder() {}
23 23
24 void FakeSoftwareVideoEncoder::Initialize() {} 24 void FakeSoftwareVideoEncoder::Initialize() {}
25 25
26 bool FakeSoftwareVideoEncoder::Encode( 26 bool FakeSoftwareVideoEncoder::Encode(
27 const scoped_refptr<media::VideoFrame>& video_frame, 27 const scoped_refptr<media::VideoFrame>& video_frame,
28 transport::EncodedVideoFrame* encoded_image) { 28 transport::EncodedFrame* encoded_image) {
29 encoded_image->codec = transport::kFakeSoftwareVideo;
30 encoded_image->key_frame = next_frame_is_key_;
31 next_frame_is_key_ = false;
32 encoded_image->frame_id = frame_id_++; 29 encoded_image->frame_id = frame_id_++;
33 encoded_image->last_referenced_frame_id = frame_id_to_reference_; 30 if (next_frame_is_key_) {
31 encoded_image->relationship = transport::EncodedFrame::KEY;
32 encoded_image->referenced_frame_id = encoded_image->frame_id;
33 next_frame_is_key_ = false;
34 } else {
35 encoded_image->relationship = transport::EncodedFrame::DEPENDENT;
36 encoded_image->referenced_frame_id = frame_id_to_reference_;
hubbe 2014/05/16 17:13:20 This makes this codec behave like 3-buffer mode. W
37 }
34 38
35 base::DictionaryValue values; 39 base::DictionaryValue values;
36 values.Set("key", base::Value::CreateBooleanValue(encoded_image->key_frame)); 40 values.Set("key", base::Value::CreateBooleanValue(
41 encoded_image->relationship == transport::EncodedFrame::KEY));
37 values.Set("id", base::Value::CreateIntegerValue(encoded_image->frame_id)); 42 values.Set("id", base::Value::CreateIntegerValue(encoded_image->frame_id));
38 values.Set("ref", base::Value::CreateIntegerValue( 43 values.Set("ref", base::Value::CreateIntegerValue(
39 encoded_image->last_referenced_frame_id)); 44 encoded_image->referenced_frame_id));
40 base::JSONWriter::Write(&values, &encoded_image->data); 45 base::JSONWriter::Write(&values, &encoded_image->data);
41 return true; 46 return true;
42 } 47 }
43 48
44 void FakeSoftwareVideoEncoder::UpdateRates(uint32 new_bitrate) { 49 void FakeSoftwareVideoEncoder::UpdateRates(uint32 new_bitrate) {
45 // TODO(hclam): Implement bitrate control. 50 // TODO(hclam): Implement bitrate control.
46 } 51 }
47 52
48 void FakeSoftwareVideoEncoder::GenerateKeyFrame() { 53 void FakeSoftwareVideoEncoder::GenerateKeyFrame() {
49 next_frame_is_key_ = true; 54 next_frame_is_key_ = true;
50 } 55 }
51 56
52 void FakeSoftwareVideoEncoder::LatestFrameIdToReference(uint32 frame_id) { 57 void FakeSoftwareVideoEncoder::LatestFrameIdToReference(uint32 frame_id) {
53 frame_id_to_reference_ = frame_id; 58 frame_id_to_reference_ = frame_id;
54 } 59 }
55 60
56 } // namespace cast 61 } // namespace cast
57 } // namespace media 62 } // namespace media
58 63
59 #endif 64 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698