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

Side by Side Diff: content/renderer/media/rtc_video_decoder.h

Issue 193303002: WeakPtr destruction order cleanup: media edition. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 6 years, 9 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #ifndef CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_H_ 5 #ifndef CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_H_
6 #define CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_H_ 6 #define CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <list> 9 #include <list>
10 #include <map> 10 #include <map>
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 static const int32 ID_LAST; // maximum bitstream buffer id 195 static const int32 ID_LAST; // maximum bitstream buffer id
196 static const int32 ID_HALF; // half of the maximum bitstream buffer id 196 static const int32 ID_HALF; // half of the maximum bitstream buffer id
197 static const int32 ID_INVALID; // indicates Reset or Release never occurred 197 static const int32 ID_INVALID; // indicates Reset or Release never occurred
198 198
199 // The hardware video decoder. 199 // The hardware video decoder.
200 scoped_ptr<media::VideoDecodeAccelerator> vda_; 200 scoped_ptr<media::VideoDecodeAccelerator> vda_;
201 201
202 // The size of the incoming video frames. 202 // The size of the incoming video frames.
203 gfx::Size frame_size_; 203 gfx::Size frame_size_;
204 204
205 // Weak pointer to this, which can be dereferenced only on |vda_task_runner_|.
206 base::WeakPtr<RTCVideoDecoder> weak_this_;
207
208 scoped_refptr<media::GpuVideoAcceleratorFactories> factories_; 205 scoped_refptr<media::GpuVideoAcceleratorFactories> factories_;
209 206
210 // The task runner to run callbacks on. This is from |factories_|. 207 // The task runner to run callbacks on. This is from |factories_|.
211 scoped_refptr<base::SingleThreadTaskRunner> vda_task_runner_; 208 scoped_refptr<base::SingleThreadTaskRunner> vda_task_runner_;
212 209
213 // The texture target used for decoded pictures. 210 // The texture target used for decoded pictures.
214 uint32 decoder_texture_target_; 211 uint32 decoder_texture_target_;
215 212
216 // Metadata of the buffers that have been sent for decode. 213 // Metadata of the buffers that have been sent for decode.
217 std::list<BufferData> input_buffer_data_; 214 std::list<BufferData> input_buffer_data_;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 // decode. The queue owns SHM buffers. Guarded by |lock_|. 259 // decode. The queue owns SHM buffers. Guarded by |lock_|.
263 std::deque<std::pair<SHMBuffer*, BufferData> > decode_buffers_; 260 std::deque<std::pair<SHMBuffer*, BufferData> > decode_buffers_;
264 261
265 // The id that will be given to the next bitstream buffer. Guarded by |lock_|. 262 // The id that will be given to the next bitstream buffer. Guarded by |lock_|.
266 int32 next_bitstream_buffer_id_; 263 int32 next_bitstream_buffer_id_;
267 264
268 // A buffer that has an id less than this should be dropped because Reset or 265 // A buffer that has an id less than this should be dropped because Reset or
269 // Release has been called. Guarded by |lock_|. 266 // Release has been called. Guarded by |lock_|.
270 int32 reset_bitstream_buffer_id_; 267 int32 reset_bitstream_buffer_id_;
271 268
272 // Factory used to populate |weak_this_|. Must be destroyed, or invalidated, 269 // Must be destroyed, or invalidated, on |vda_loop_proxy_|
273 // on |vda_loop_proxy_|. 270 // NOTE: Weak pointers must be invalidated before all other member variables.
274 base::WeakPtrFactory<RTCVideoDecoder> weak_factory_; 271 base::WeakPtrFactory<RTCVideoDecoder> weak_factory_;
275 272
276 DISALLOW_COPY_AND_ASSIGN(RTCVideoDecoder); 273 DISALLOW_COPY_AND_ASSIGN(RTCVideoDecoder);
277 }; 274 };
278 275
279 } // namespace content 276 } // namespace content
280 277
281 #endif // CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_H_ 278 #endif // CONTENT_RENDERER_MEDIA_RTC_VIDEO_DECODER_H_
OLDNEW
« no previous file with comments | « content/renderer/media/crypto/proxy_decryptor.cc ('k') | content/renderer/media/rtc_video_decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698