| 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_;
|
|
|
|
|