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

Side by Side Diff: content/common/gpu/media/vaapi_video_decode_accelerator.h

Issue 385793002: content: Add support for Video Decode Acceleration on GBM (Closed) Base URL: 038ca4ab40c387bf3bc1541d56578bc522df9f41
Patch Set: merge changes into one single vaapi_video_decode_accelerator Created 6 years, 4 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
OLDNEW
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 // This file contains an implementation of VideoDecoderAccelerator 5 // This file contains an implementation of VideoDecoderAccelerator
6 // that utilizes hardware video decoder present on Intel CPUs. 6 // that utilizes hardware video decoder present on Intel CPUs.
7 7
8 #ifndef CONTENT_COMMON_GPU_MEDIA_VAAPI_VIDEO_DECODE_ACCELERATOR_H_ 8 #ifndef CONTENT_COMMON_GPU_MEDIA_VAAPI_VIDEO_DECODE_ACCELERATOR_H_
9 #define CONTENT_COMMON_GPU_MEDIA_VAAPI_VIDEO_DECODE_ACCELERATOR_H_ 9 #define CONTENT_COMMON_GPU_MEDIA_VAAPI_VIDEO_DECODE_ACCELERATOR_H_
10 10
11 #include <list>
11 #include <map> 12 #include <map>
12 #include <queue> 13 #include <queue>
13 #include <utility> 14 #include <utility>
14 #include <vector> 15 #include <vector>
15 16
16 #include "base/logging.h" 17 #include "base/logging.h"
17 #include "base/memory/linked_ptr.h" 18 #include "base/memory/linked_ptr.h"
18 #include "base/memory/shared_memory.h" 19 #include "base/memory/shared_memory.h"
19 #include "base/memory/weak_ptr.h" 20 #include "base/memory/weak_ptr.h"
20 #include "base/message_loop/message_loop.h" 21 #include "base/message_loop/message_loop.h"
(...skipping 16 matching lines...) Expand all
37 // Decoding tasks are performed in a separate decoding thread. 38 // Decoding tasks are performed in a separate decoding thread.
38 // 39 //
39 // Threading/life-cycle: this object is created & destroyed on the GPU 40 // Threading/life-cycle: this object is created & destroyed on the GPU
40 // ChildThread. A few methods on it are called on the decoder thread which is 41 // ChildThread. A few methods on it are called on the decoder thread which is
41 // stopped during |this->Destroy()|, so any tasks posted to the decoder thread 42 // stopped during |this->Destroy()|, so any tasks posted to the decoder thread
42 // can assume |*this| is still alive. See |weak_this_| below for more details. 43 // can assume |*this| is still alive. See |weak_this_| below for more details.
43 class CONTENT_EXPORT VaapiVideoDecodeAccelerator 44 class CONTENT_EXPORT VaapiVideoDecodeAccelerator
44 : public media::VideoDecodeAccelerator { 45 : public media::VideoDecodeAccelerator {
45 public: 46 public:
46 VaapiVideoDecodeAccelerator( 47 VaapiVideoDecodeAccelerator(
48 #if defined(USE_X11)
47 Display* x_display, 49 Display* x_display,
50 #endif
48 const base::Callback<bool(void)>& make_context_current); 51 const base::Callback<bool(void)>& make_context_current);
49 virtual ~VaapiVideoDecodeAccelerator(); 52 virtual ~VaapiVideoDecodeAccelerator();
50 53
51 // media::VideoDecodeAccelerator implementation. 54 // media::VideoDecodeAccelerator implementation.
52 virtual bool Initialize(media::VideoCodecProfile profile, 55 virtual bool Initialize(media::VideoCodecProfile profile,
53 Client* client) OVERRIDE; 56 Client* client) OVERRIDE;
54 virtual void Decode(const media::BitstreamBuffer& bitstream_buffer) OVERRIDE; 57 virtual void Decode(const media::BitstreamBuffer& bitstream_buffer) OVERRIDE;
55 virtual void AssignPictureBuffers( 58 virtual void AssignPictureBuffers(
56 const std::vector<media::PictureBuffer>& buffers) OVERRIDE; 59 const std::vector<media::PictureBuffer>& buffers) OVERRIDE;
57 virtual void ReusePictureBuffer(int32 picture_buffer_id) OVERRIDE; 60 virtual void ReusePictureBuffer(int32 picture_buffer_id) OVERRIDE;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 // synced/waiting to be synced to a picture. Returns it to available surfaces 144 // synced/waiting to be synced to a picture. Returns it to available surfaces
142 // pool. 145 // pool.
143 void RecycleVASurfaceID(VASurfaceID va_surface_id); 146 void RecycleVASurfaceID(VASurfaceID va_surface_id);
144 147
145 // Initiate wait cycle for surfaces to be released before we release them 148 // Initiate wait cycle for surfaces to be released before we release them
146 // and allocate new ones, as requested by the decoder. 149 // and allocate new ones, as requested by the decoder.
147 void InitiateSurfaceSetChange(size_t num_pics, gfx::Size size); 150 void InitiateSurfaceSetChange(size_t num_pics, gfx::Size size);
148 // Check if the surfaces have been released or post ourselves for later. 151 // Check if the surfaces have been released or post ourselves for later.
149 void TryFinishSurfaceSetChange(); 152 void TryFinishSurfaceSetChange();
150 153
154 #if defined(USE_X11)
151 // Client-provided X/GLX state. 155 // Client-provided X/GLX state.
152 Display* x_display_; 156 Display* x_display_;
157 GLXFBConfig fb_config_;
158 #else
159 int fd_;
160 #endif
153 base::Callback<bool(void)> make_context_current_; 161 base::Callback<bool(void)> make_context_current_;
154 GLXFBConfig fb_config_;
155 162
156 // VAVDA state. 163 // VAVDA state.
157 enum State { 164 enum State {
158 // Initialize() not called yet or failed. 165 // Initialize() not called yet or failed.
159 kUninitialized, 166 kUninitialized,
160 // DecodeTask running. 167 // DecodeTask running.
161 kDecoding, 168 kDecoding,
162 // Resetting, waiting for decoder to finish current task and cleanup. 169 // Resetting, waiting for decoder to finish current task and cleanup.
163 kResetting, 170 kResetting,
164 // Flushing, waiting for decoder to finish current task and cleanup. 171 // Flushing, waiting for decoder to finish current task and cleanup.
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 277
271 // The WeakPtrFactory for |weak_this_|. 278 // The WeakPtrFactory for |weak_this_|.
272 base::WeakPtrFactory<VaapiVideoDecodeAccelerator> weak_this_factory_; 279 base::WeakPtrFactory<VaapiVideoDecodeAccelerator> weak_this_factory_;
273 280
274 DISALLOW_COPY_AND_ASSIGN(VaapiVideoDecodeAccelerator); 281 DISALLOW_COPY_AND_ASSIGN(VaapiVideoDecodeAccelerator);
275 }; 282 };
276 283
277 } // namespace content 284 } // namespace content
278 285
279 #endif // CONTENT_COMMON_GPU_MEDIA_VAAPI_VIDEO_DECODE_ACCELERATOR_H_ 286 #endif // CONTENT_COMMON_GPU_MEDIA_VAAPI_VIDEO_DECODE_ACCELERATOR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698