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> |
11 | 11 |
12 #include "media/base/decoder_buffer.h" | |
scherkus (not reviewing)
2012/05/26 01:36:32
fwd decl instead?
DaleCurtis
2012/05/29 21:17:01
Done.
| |
12 #include "media/base/pipeline_status.h" | 13 #include "media/base/pipeline_status.h" |
13 #include "media/base/video_decoder.h" | 14 #include "media/base/video_decoder.h" |
14 #include "media/video/video_decode_accelerator.h" | 15 #include "media/video/video_decode_accelerator.h" |
15 | 16 |
16 class MessageLoop; | 17 class MessageLoop; |
17 template <class T> class scoped_refptr; | 18 template <class T> class scoped_refptr; |
18 namespace base { | 19 namespace base { |
19 class MessageLoopProxy; | 20 class MessageLoopProxy; |
20 class SharedMemory; | 21 class SharedMemory; |
21 } | 22 } |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
91 // enough). | 92 // enough). |
92 kDrainingDecoder, | 93 kDrainingDecoder, |
93 kDecoderDrained, | 94 kDecoderDrained, |
94 }; | 95 }; |
95 | 96 |
96 // If no demuxer read is in flight and no bitstream buffers are in the | 97 // If no demuxer read is in flight and no bitstream buffers are in the |
97 // decoder, kick some off demuxing/decoding. | 98 // decoder, kick some off demuxing/decoding. |
98 void EnsureDemuxOrDecode(); | 99 void EnsureDemuxOrDecode(); |
99 | 100 |
100 // Callback to pass to demuxer_stream_->Read() for receiving encoded bits. | 101 // Callback to pass to demuxer_stream_->Read() for receiving encoded bits. |
101 void RequestBufferDecode(const scoped_refptr<Buffer>& buffer); | 102 void RequestBufferDecode(const scoped_refptr<DecoderBuffer>& buffer); |
102 | 103 |
103 // Enqueue a frame for later delivery (or drop it on the floor if a | 104 // Enqueue a frame for later delivery (or drop it on the floor if a |
104 // vda->Reset() is in progress) and trigger out-of-line delivery of the oldest | 105 // vda->Reset() is in progress) and trigger out-of-line delivery of the oldest |
105 // ready frame to the client if there is a pending read. A NULL |frame| | 106 // ready frame to the client if there is a pending read. A NULL |frame| |
106 // merely triggers delivery, and requires the ready_video_frames_ queue not be | 107 // merely triggers delivery, and requires the ready_video_frames_ queue not be |
107 // empty. | 108 // empty. |
108 void EnqueueFrameAndTriggerFrameDelivery( | 109 void EnqueueFrameAndTriggerFrameDelivery( |
109 const scoped_refptr<VideoFrame>& frame); | 110 const scoped_refptr<VideoFrame>& frame); |
110 | 111 |
111 // Indicate the picturebuffer can be reused by the decoder. | 112 // Indicate the picturebuffer can be reused by the decoder. |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
168 // Is a demuxer read in flight? | 169 // Is a demuxer read in flight? |
169 bool demuxer_read_in_progress_; | 170 bool demuxer_read_in_progress_; |
170 | 171 |
171 // Shared-memory buffer pool. Since allocating SHM segments requires a | 172 // Shared-memory buffer pool. Since allocating SHM segments requires a |
172 // round-trip to the browser process, we keep allocation out of the | 173 // round-trip to the browser process, we keep allocation out of the |
173 // steady-state of the decoder. | 174 // steady-state of the decoder. |
174 std::vector<SHMBuffer*> available_shm_segments_; | 175 std::vector<SHMBuffer*> available_shm_segments_; |
175 | 176 |
176 // Book-keeping variables. | 177 // Book-keeping variables. |
177 struct BufferPair { | 178 struct BufferPair { |
178 BufferPair(SHMBuffer* s, const scoped_refptr<Buffer>& b); | 179 BufferPair(SHMBuffer* s, const scoped_refptr<DecoderBuffer>& b); |
179 ~BufferPair(); | 180 ~BufferPair(); |
180 SHMBuffer* shm_buffer; | 181 SHMBuffer* shm_buffer; |
181 scoped_refptr<Buffer> buffer; | 182 scoped_refptr<DecoderBuffer> buffer; |
182 }; | 183 }; |
183 std::map<int32, BufferPair> bitstream_buffers_in_decoder_; | 184 std::map<int32, BufferPair> bitstream_buffers_in_decoder_; |
184 std::map<int32, PictureBuffer> picture_buffers_in_decoder_; | 185 std::map<int32, PictureBuffer> picture_buffers_in_decoder_; |
185 | 186 |
186 // The texture target used for decoded pictures. | 187 // The texture target used for decoded pictures. |
187 uint32 decoder_texture_target_; | 188 uint32 decoder_texture_target_; |
188 | 189 |
189 struct BufferTimeData { | 190 struct BufferTimeData { |
190 BufferTimeData(int32 bbid, base::TimeDelta ts, base::TimeDelta dur); | 191 BufferTimeData(int32 bbid, base::TimeDelta ts, base::TimeDelta dur); |
191 ~BufferTimeData(); | 192 ~BufferTimeData(); |
(...skipping 15 matching lines...) Expand all Loading... | |
207 | 208 |
208 // Indicates decoding error occurred. | 209 // Indicates decoding error occurred. |
209 bool error_occured_; | 210 bool error_occured_; |
210 | 211 |
211 DISALLOW_COPY_AND_ASSIGN(GpuVideoDecoder); | 212 DISALLOW_COPY_AND_ASSIGN(GpuVideoDecoder); |
212 }; | 213 }; |
213 | 214 |
214 } // namespace media | 215 } // namespace media |
215 | 216 |
216 #endif // MEDIA_FILTERS_GPU_VIDEO_DECODER_H_ | 217 #endif // MEDIA_FILTERS_GPU_VIDEO_DECODER_H_ |
OLD | NEW |