OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 MEDIA_FILTERS_GPU_VIDEO_DECODER_H_ | 5 #ifndef MEDIA_FILTERS_GPU_VIDEO_DECODER_H_ |
6 #define MEDIA_FILTERS_GPU_VIDEO_DECODER_H_ | 6 #define MEDIA_FILTERS_GPU_VIDEO_DECODER_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <list> | 9 #include <list> |
10 #include <map> | 10 #include <map> |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 const scoped_refptr<VideoFrame>& frame); | 112 const scoped_refptr<VideoFrame>& frame); |
113 | 113 |
114 // Indicate the picturebuffer can be reused by the decoder. | 114 // Indicate the picturebuffer can be reused by the decoder. |
115 void ReusePictureBuffer(int64 picture_buffer_id); | 115 void ReusePictureBuffer(int64 picture_buffer_id); |
116 | 116 |
117 void RecordBufferTimeData( | 117 void RecordBufferTimeData( |
118 const BitstreamBuffer& bitstream_buffer, const Buffer& buffer); | 118 const BitstreamBuffer& bitstream_buffer, const Buffer& buffer); |
119 void GetBufferTimeData( | 119 void GetBufferTimeData( |
120 int32 id, base::TimeDelta* timestamp, base::TimeDelta* duration); | 120 int32 id, base::TimeDelta* timestamp, base::TimeDelta* duration); |
121 | 121 |
| 122 // Set |vda_| and |weak_vda_| on the VDA thread (in practice the render |
| 123 // thread). |
| 124 void SetVDA(VideoDecodeAccelerator* vda); |
| 125 |
122 // A shared memory segment and its allocated size. | 126 // A shared memory segment and its allocated size. |
123 struct SHMBuffer { | 127 struct SHMBuffer { |
124 SHMBuffer(base::SharedMemory* m, size_t s); | 128 SHMBuffer(base::SharedMemory* m, size_t s); |
125 ~SHMBuffer(); | 129 ~SHMBuffer(); |
126 base::SharedMemory* shm; | 130 base::SharedMemory* shm; |
127 size_t size; | 131 size_t size; |
128 }; | 132 }; |
129 | 133 |
130 // Request a shared-memory segment of at least |min_size| bytes. Will | 134 // Request a shared-memory segment of at least |min_size| bytes. Will |
131 // allocate as necessary. Caller does not own returned pointer. | 135 // allocate as necessary. Caller does not own returned pointer. |
(...skipping 19 matching lines...) Expand all Loading... |
151 // if they arrive on other loops. | 155 // if they arrive on other loops. |
152 scoped_refptr<base::MessageLoopProxy> gvd_loop_proxy_; | 156 scoped_refptr<base::MessageLoopProxy> gvd_loop_proxy_; |
153 | 157 |
154 // Message loop on which to makes all calls to vda_. (beware this loop may be | 158 // Message loop on which to makes all calls to vda_. (beware this loop may be |
155 // paused during the Pause/Flush/Stop dance PipelineImpl::Stop() goes | 159 // paused during the Pause/Flush/Stop dance PipelineImpl::Stop() goes |
156 // through). | 160 // through). |
157 scoped_refptr<base::MessageLoopProxy> vda_loop_proxy_; | 161 scoped_refptr<base::MessageLoopProxy> vda_loop_proxy_; |
158 | 162 |
159 scoped_refptr<Factories> factories_; | 163 scoped_refptr<Factories> factories_; |
160 | 164 |
161 // Populated during Initialize() (on success) and unchanged thereafter. | 165 // Populated during Initialize() via SetVDA() (on success) and unchanged |
162 scoped_refptr<VideoDecodeAccelerator> vda_; | 166 // until an error occurs |
| 167 scoped_ptr<VideoDecodeAccelerator> vda_; |
| 168 // Used to post tasks from the GVD thread to the VDA thread safely. |
| 169 base::WeakPtr<VideoDecodeAccelerator> weak_vda_; |
163 | 170 |
164 // Callbacks that are !is_null() only during their respective operation being | 171 // Callbacks that are !is_null() only during their respective operation being |
165 // asynchronously executed. | 172 // asynchronously executed. |
166 ReadCB pending_read_cb_; | 173 ReadCB pending_read_cb_; |
167 base::Closure pending_reset_cb_; | 174 base::Closure pending_reset_cb_; |
168 | 175 |
169 State state_; | 176 State state_; |
170 | 177 |
171 // Is a demuxer read in flight? | 178 // Is a demuxer read in flight? |
172 bool demuxer_read_in_progress_; | 179 bool demuxer_read_in_progress_; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 | 217 |
211 // Indicates decoding error occurred. | 218 // Indicates decoding error occurred. |
212 bool error_occured_; | 219 bool error_occured_; |
213 | 220 |
214 DISALLOW_COPY_AND_ASSIGN(GpuVideoDecoder); | 221 DISALLOW_COPY_AND_ASSIGN(GpuVideoDecoder); |
215 }; | 222 }; |
216 | 223 |
217 } // namespace media | 224 } // namespace media |
218 | 225 |
219 #endif // MEDIA_FILTERS_GPU_VIDEO_DECODER_H_ | 226 #endif // MEDIA_FILTERS_GPU_VIDEO_DECODER_H_ |
OLD | NEW |