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

Side by Side Diff: media/cast/receiver/video_decoder.cc

Issue 1534273002: Switch to standard integer types in media/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more Created 5 years 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/receiver/video_decoder.h" 5 #include "media/cast/receiver/video_decoder.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/json/json_reader.h" 9 #include "base/json/json_reader.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 } 42 }
43 43
44 void DecodeFrame(scoped_ptr<EncodedFrame> encoded_frame, 44 void DecodeFrame(scoped_ptr<EncodedFrame> encoded_frame,
45 const DecodeFrameCallback& callback) { 45 const DecodeFrameCallback& callback) {
46 DCHECK_EQ(operational_status_, STATUS_INITIALIZED); 46 DCHECK_EQ(operational_status_, STATUS_INITIALIZED);
47 47
48 static_assert(sizeof(encoded_frame->frame_id) == sizeof(last_frame_id_), 48 static_assert(sizeof(encoded_frame->frame_id) == sizeof(last_frame_id_),
49 "size of frame_id types do not match"); 49 "size of frame_id types do not match");
50 bool is_continuous = true; 50 bool is_continuous = true;
51 if (seen_first_frame_) { 51 if (seen_first_frame_) {
52 const uint32 frames_ahead = encoded_frame->frame_id - last_frame_id_; 52 const uint32_t frames_ahead = encoded_frame->frame_id - last_frame_id_;
53 if (frames_ahead > 1) { 53 if (frames_ahead > 1) {
54 RecoverBecauseFramesWereDropped(); 54 RecoverBecauseFramesWereDropped();
55 is_continuous = false; 55 is_continuous = false;
56 } 56 }
57 } else { 57 } else {
58 seen_first_frame_ = true; 58 seen_first_frame_ = true;
59 } 59 }
60 last_frame_id_ = encoded_frame->frame_id; 60 last_frame_id_ = encoded_frame->frame_id;
61 61
62 const scoped_refptr<VideoFrame> decoded_frame = Decode( 62 const scoped_refptr<VideoFrame> decoded_frame = Decode(
(...skipping 14 matching lines...) Expand all
77 base::Bind(callback, decoded_frame, is_continuous)); 77 base::Bind(callback, decoded_frame, is_continuous));
78 } 78 }
79 79
80 protected: 80 protected:
81 friend class base::RefCountedThreadSafe<ImplBase>; 81 friend class base::RefCountedThreadSafe<ImplBase>;
82 virtual ~ImplBase() {} 82 virtual ~ImplBase() {}
83 83
84 virtual void RecoverBecauseFramesWereDropped() {} 84 virtual void RecoverBecauseFramesWereDropped() {}
85 85
86 // Note: Implementation of Decode() is allowed to mutate |data|. 86 // Note: Implementation of Decode() is allowed to mutate |data|.
87 virtual scoped_refptr<VideoFrame> Decode(uint8* data, int len) = 0; 87 virtual scoped_refptr<VideoFrame> Decode(uint8_t* data, int len) = 0;
88 88
89 const scoped_refptr<CastEnvironment> cast_environment_; 89 const scoped_refptr<CastEnvironment> cast_environment_;
90 const Codec codec_; 90 const Codec codec_;
91 91
92 // Subclass' ctor is expected to set this to STATUS_INITIALIZED. 92 // Subclass' ctor is expected to set this to STATUS_INITIALIZED.
93 OperationalStatus operational_status_; 93 OperationalStatus operational_status_;
94 94
95 // Pool of VideoFrames to decode incoming frames into. 95 // Pool of VideoFrames to decode incoming frames into.
96 media::VideoFramePool video_frame_pool_; 96 media::VideoFramePool video_frame_pool_;
97 97
98 private: 98 private:
99 bool seen_first_frame_; 99 bool seen_first_frame_;
100 uint32 last_frame_id_; 100 uint32_t last_frame_id_;
101 101
102 DISALLOW_COPY_AND_ASSIGN(ImplBase); 102 DISALLOW_COPY_AND_ASSIGN(ImplBase);
103 }; 103 };
104 104
105 class VideoDecoder::Vp8Impl : public VideoDecoder::ImplBase { 105 class VideoDecoder::Vp8Impl : public VideoDecoder::ImplBase {
106 public: 106 public:
107 explicit Vp8Impl(const scoped_refptr<CastEnvironment>& cast_environment) 107 explicit Vp8Impl(const scoped_refptr<CastEnvironment>& cast_environment)
108 : ImplBase(cast_environment, CODEC_VIDEO_VP8) { 108 : ImplBase(cast_environment, CODEC_VIDEO_VP8) {
109 if (ImplBase::operational_status_ != STATUS_UNINITIALIZED) 109 if (ImplBase::operational_status_ != STATUS_UNINITIALIZED)
110 return; 110 return;
(...skipping 13 matching lines...) Expand all
124 } 124 }
125 ImplBase::operational_status_ = STATUS_INITIALIZED; 125 ImplBase::operational_status_ = STATUS_INITIALIZED;
126 } 126 }
127 127
128 private: 128 private:
129 ~Vp8Impl() final { 129 ~Vp8Impl() final {
130 if (ImplBase::operational_status_ == STATUS_INITIALIZED) 130 if (ImplBase::operational_status_ == STATUS_INITIALIZED)
131 CHECK_EQ(VPX_CODEC_OK, vpx_codec_destroy(&context_)); 131 CHECK_EQ(VPX_CODEC_OK, vpx_codec_destroy(&context_));
132 } 132 }
133 133
134 scoped_refptr<VideoFrame> Decode(uint8* data, int len) final { 134 scoped_refptr<VideoFrame> Decode(uint8_t* data, int len) final {
135 if (len <= 0 || vpx_codec_decode(&context_, 135 if (len <= 0 || vpx_codec_decode(&context_,
136 data, 136 data,
137 static_cast<unsigned int>(len), 137 static_cast<unsigned int>(len),
138 NULL, 138 NULL,
139 0) != VPX_CODEC_OK) { 139 0) != VPX_CODEC_OK) {
140 return NULL; 140 return NULL;
141 } 141 }
142 142
143 vpx_codec_iter_t iter = NULL; 143 vpx_codec_iter_t iter = NULL;
144 vpx_image_t* const image = vpx_codec_get_frame(&context_, &iter); 144 vpx_image_t* const image = vpx_codec_get_frame(&context_, &iter);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 : ImplBase(cast_environment, CODEC_VIDEO_FAKE), 186 : ImplBase(cast_environment, CODEC_VIDEO_FAKE),
187 last_decoded_id_(-1) { 187 last_decoded_id_(-1) {
188 if (ImplBase::operational_status_ != STATUS_UNINITIALIZED) 188 if (ImplBase::operational_status_ != STATUS_UNINITIALIZED)
189 return; 189 return;
190 ImplBase::operational_status_ = STATUS_INITIALIZED; 190 ImplBase::operational_status_ = STATUS_INITIALIZED;
191 } 191 }
192 192
193 private: 193 private:
194 ~FakeImpl() final {} 194 ~FakeImpl() final {}
195 195
196 scoped_refptr<VideoFrame> Decode(uint8* data, int len) final { 196 scoped_refptr<VideoFrame> Decode(uint8_t* data, int len) final {
197 // Make sure this is a JSON string. 197 // Make sure this is a JSON string.
198 if (!len || data[0] != '{') 198 if (!len || data[0] != '{')
199 return NULL; 199 return NULL;
200 base::JSONReader reader; 200 base::JSONReader reader;
201 scoped_ptr<base::Value> values( 201 scoped_ptr<base::Value> values(
202 reader.Read(base::StringPiece(reinterpret_cast<char*>(data), len))); 202 reader.Read(base::StringPiece(reinterpret_cast<char*>(data), len)));
203 if (!values) 203 if (!values)
204 return NULL; 204 return NULL;
205 base::DictionaryValue* dict = NULL; 205 base::DictionaryValue* dict = NULL;
206 values->GetAsDictionary(&dict); 206 values->GetAsDictionary(&dict);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 cast_environment_->PostTask(CastEnvironment::VIDEO, 265 cast_environment_->PostTask(CastEnvironment::VIDEO,
266 FROM_HERE, 266 FROM_HERE,
267 base::Bind(&VideoDecoder::ImplBase::DecodeFrame, 267 base::Bind(&VideoDecoder::ImplBase::DecodeFrame,
268 impl_, 268 impl_,
269 base::Passed(&encoded_frame), 269 base::Passed(&encoded_frame),
270 callback)); 270 callback));
271 } 271 }
272 272
273 } // namespace cast 273 } // namespace cast
274 } // namespace media 274 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698