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

Unified Diff: media/video/video_decode_accelerator.h

Issue 1832123002: Revert of Introduce GpuVideoDecodeAcceleratorFactory. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/video/mock_video_decode_accelerator.h ('k') | media/video/video_decode_accelerator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/video/video_decode_accelerator.h
diff --git a/media/video/video_decode_accelerator.h b/media/video/video_decode_accelerator.h
index 45529730ece3652a80f54c3688d5bdd9fd8190a9..a840750d26d7b2392f2183c86ff14d02d2591e2a 100644
--- a/media/video/video_decode_accelerator.h
+++ b/media/video/video_decode_accelerator.h
@@ -10,19 +10,14 @@
#include <memory>
#include <vector>
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
#include "media/base/bitstream_buffer.h"
#include "media/base/surface_manager.h"
#include "media/base/video_decoder_config.h"
#include "media/video/picture.h"
#include "ui/gfx/geometry/size.h"
+#include "ui/gl/gl_image.h"
typedef unsigned int GLenum;
-
-namespace base {
-class SingleThreadTaskRunner;
-}
namespace media {
@@ -42,6 +37,10 @@
bool encrypted_only;
};
using SupportedProfiles = std::vector<SupportedProfile>;
+
+ using MakeContextCurrentCallback = base::Callback<bool(void)>;
+ using BindImageCallback = base::Callback<
+ void(uint32_t, uint32_t, scoped_refptr<gl::GLImage>, bool)>;
struct MEDIA_EXPORT Capabilities {
Capabilities();
@@ -230,39 +229,16 @@
// unconditionally, so make sure to drop all pointers to it!
virtual void Destroy() = 0;
- // TO BE CALLED IN THE SAME PROCESS AS THE VDA IMPLEMENTATION ONLY.
- //
- // A decode "task" is a sequence that includes a Decode() call from Client,
- // as well as corresponding callbacks to return the input BitstreamBuffer
- // after use, and the resulting output Picture(s).
- //
- // If the Client can support running these three calls on a separate thread,
- // it may call this method to try to set up the VDA implementation to do so.
- // If the VDA can support this as well, return true, otherwise return false.
- // If true is returned, the client may submit each Decode() call (but no other
- // calls) on |decode_task_runner|, and should then expect that
- // NotifyEndOfBitstreamBuffer() and PictureReady() callbacks may come on
- // |decode_task_runner| as well, called on |decode_client|, instead of client
- // provided to Initialize().
- //
- // This method may be called at any time.
- //
- // NOTE 1: some callbacks may still have to come on the main thread and the
- // Client should handle both callbacks coming on main and |decode_task_runner|
- // thread.
- //
- // NOTE 2: VDA implementations of Decode() must return as soon as possible and
- // never block, as |decode_task_runner| may be a latency critical thread
- // (such as the GPU IO thread).
- //
- // One application of this is offloading the GPU Child thread. In general,
- // calls to VDA in GPU process have to be done on the GPU Child thread, as
- // they may require GL context to be current. However, some VDAs may be able
- // to run decode operations without GL context, which helps reduce latency and
- // offloads the GPU Child thread.
- virtual bool TryToSetupDecodeOnSeparateThread(
- const base::WeakPtr<Client>& decode_client,
- const scoped_refptr<base::SingleThreadTaskRunner>& decode_task_runner);
+ // GPU PROCESS ONLY. Implementations of this interface in the
+ // content/common/gpu/media should implement this, and implementations in
+ // other processes should not override the default implementation.
+ // Returns true if VDA::Decode and VDA::Client callbacks can run on the IO
+ // thread. Otherwise they will run on the GPU child thread. The purpose of
+ // running Decode on the IO thread is to reduce decode latency. Note Decode
+ // should return as soon as possible and not block on the IO thread. Also,
+ // PictureReady should be run on the child thread if a picture is delivered
+ // the first time so it can be cleared.
+ virtual bool CanDecodeOnIOThread();
// Windows creates a BGRA texture.
// TODO(dshwang): after moving to D3D11, remove this. crbug.com/438691
« no previous file with comments | « media/video/mock_video_decode_accelerator.h ('k') | media/video/video_decode_accelerator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698