Index: content/renderer/media/rtc_video_decoder.h |
diff --git a/content/renderer/media/rtc_video_decoder.h b/content/renderer/media/rtc_video_decoder.h |
index 8c4c195fe1302b86914e52fc7956959ee03bb63a..619c632523da51e472db7c702e7b63deb8f3ee2e 100644 |
--- a/content/renderer/media/rtc_video_decoder.h |
+++ b/content/renderer/media/rtc_video_decoder.h |
@@ -36,12 +36,11 @@ namespace content { |
// This class uses hardware accelerated video decoder to decode video for |
// WebRTC. The message loop of RendererGpuVideoDecoderFactories is stored as |
-// |vda_message_loop_|. It is the compositor thread, or the renderer thread if |
-// threaded compositing is disabled. VDA::Client methods run on |
-// |vda_message_loop_|. webrtc::VideoDecoder methods run on WebRTC |
-// DecodingThread or Chrome_libJingle_WorkerThread, which are trampolined to |
-// |vda_message_loop_|. Decode() is non-blocking and queues the buffers. Decoded |
-// frames are delivered on |vda_message_loop_|. |
+// |vda_message_loop_|. VDA::Client methods run on |vda_message_loop_|. |
+// webrtc::VideoDecoder methods run on WebRTC DecodingThread or |
+// Chrome_libJingle_WorkerThread, which are trampolined to |vda_message_loop_|. |
+// Decode() is non-blocking and queues the buffers. Decoded frames are delivered |
+// on |vda_message_loop_|. |
class CONTENT_EXPORT RTCVideoDecoder |
: NON_EXPORTED_BASE(public webrtc::VideoDecoder), |
public media::VideoDecodeAccelerator::Client, |
@@ -51,6 +50,7 @@ class CONTENT_EXPORT RTCVideoDecoder |
// Creates a RTCVideoDecoder. Returns NULL if failed. |
static scoped_ptr<RTCVideoDecoder> Create( |
+ webrtc::VideoCodecType type, |
const scoped_refptr<media::GpuVideoDecoder::Factories>& factories); |
// webrtc::VideoDecoder implementation. |
@@ -147,6 +147,7 @@ class CONTENT_EXPORT RTCVideoDecoder |
// Resets VDA. |
void ResetInternal(); |
+ void ReleaseInternal(); |
// Tells VDA that a picture buffer can be recycled. |
void ReusePictureBuffer(int64 picture_buffer_id, uint32 sync_point); |
@@ -201,15 +202,6 @@ class CONTENT_EXPORT RTCVideoDecoder |
// of |factories_|. |
scoped_refptr<base::MessageLoopProxy> vda_loop_proxy_; |
- // The thread to create shared memory. Factories::CreateSharedMemory is |
- // trampolined to the child thread. When |vda_loop_proxy_| is the compositor |
- // thread, blocking on the child thread will deadlock. During WebRTC hang up, |
- // the child thread waits for Chrome_libJingle_WorkerThread. libJingle thread |
- // cannot finish when DecodingThread holds a WebRTC lock and blocks on the |
- // child thread. So we need to call CreateSharedMemory asynchronously from a |
- // different thread. |
- base::Thread create_shm_thread_; |
- |
// The texture target used for decoded pictures. |
uint32 decoder_texture_target_; |