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

Unified Diff: content/common/gpu/media/va_surface.h

Issue 1882373004: Migrate content/common/gpu/media code to media/gpu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix several more bot-identified build issues Created 4 years, 8 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
Index: content/common/gpu/media/va_surface.h
diff --git a/content/common/gpu/media/va_surface.h b/content/common/gpu/media/va_surface.h
deleted file mode 100644
index 41c7880f8dd1010d696a059c1cd8c847efa452d9..0000000000000000000000000000000000000000
--- a/content/common/gpu/media/va_surface.h
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-// This file contains the definition of VASurface class, used for decoding by
-// VaapiVideoDecodeAccelerator and VaapiH264Decoder.
-
-#ifndef CONTENT_COMMON_GPU_MEDIA_VA_SURFACE_H_
-#define CONTENT_COMMON_GPU_MEDIA_VA_SURFACE_H_
-
-#include "base/callback.h"
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "content/common/content_export.h"
-#include "third_party/libva/va/va.h"
-#include "ui/gfx/geometry/size.h"
-
-namespace content {
-
-// A VA-API-specific decode surface used by VaapiH264Decoder to decode into
-// and use as reference for decoding other surfaces. It is also handed by the
-// decoder to VaapiVideoDecodeAccelerator when the contents of the surface are
-// ready and should be displayed. VAVDA converts the surface contents into an
-// X/Drm Pixmap bound to a texture for display and releases its reference to it.
-// Decoder releases its references to the surface when it's done decoding and
-// using it as reference. Note that a surface may still be used for reference
-// after it's been sent to output and also after it is no longer used by VAVDA.
-// Thus, the surface can be in use by both VAVDA and the Decoder at the same
-// time, or by either of them, with the restriction that VAVDA will never get
-// the surface until the contents are ready, and it is guaranteed that the
-// contents will not change after that.
-// When both the decoder and VAVDA release their references to the surface,
-// it is freed and the release callback is executed to put the surface back
-// into available surfaces pool, which is managed externally.
-//
-// VASurfaceID is allocated in VaapiWrapper.
-// |
-// +----->|
-// | v
-// | VASurfaceID is put onto VaapiVideoDecodeAccelerator::available_va_surfaces_
-// | | list.
-// | v
-// | VASurfaceID is taken off of the VVDA:available_va_surfaces_ when
-// | | VaapiH264Decoder requests more output surfaces, is wrapped into
-// | | a VASurface and passed to VaapiH264Decoder.
-// | v
-// | VASurface is put onto VaapiH264Decoder::available_va_surfaces_, keeping
-// | | the only reference to it until it's needed for decoding.
-// | v
-// | VaapiH264Decoder starts decoding a new frame. It takes a VASurface off of
-// | | VHD::available_va_surfaces_ and assigns it to a DecodeSurface,
-// | | which now keeps the only reference.
-// | v
-// | DecodeSurface is used for decoding, putting data into associated VASurface.
-// | |
-// | |--------------------------------------------------+
-// | | |
-// | v v
-// | DecodeSurface is to be output. VaapiH264Decoder uses the
-// | VaapiH264Decoder passes the associated DecodeSurface and associated
-// | VASurface to VaapiVideoDecodeAccelerator, VASurface as reference for
-// | which stores it (taking a ref) on decoding more frames.
-// | pending_output_cbs_ queue until an output |
-// | VaapiPicture becomes available. v
-// | | Once the DecodeSurface is not
-// | | needed as reference anymore,
-// | v it is released, releasing the
-// | A VaapiPicture becomes available after associated VASurface reference.
-// | the client of VVDA returns |
-// | a PictureBuffer associated with it. VVDA |
-// | puts the contents of the VASurface into |
-// | it and releases the reference to VASurface. |
-// | | |
-// | '---------------------------------------'
-// | |
-// | v
-// | Neither VVDA nor VHD hold a reference to VASurface. VASurface is released,
-// | ReleaseCB gets called in its destructor, which puts the associated
-// | VASurfaceID back onto VVDA::available_va_surfaces_.
-// | |
-// '-------------------------------------|
-// |
-// v
-// VaapiWrapper frees VASurfaceID.
-//
-class CONTENT_EXPORT VASurface : public base::RefCountedThreadSafe<VASurface> {
- public:
- // Provided by user, will be called when all references to the surface
- // are released.
- typedef base::Callback<void(VASurfaceID)> ReleaseCB;
-
- VASurface(VASurfaceID va_surface_id,
- const gfx::Size& size,
- unsigned int format,
- const ReleaseCB& release_cb);
-
- VASurfaceID id() {
- return va_surface_id_;
- }
-
- const gfx::Size& size() const { return size_; }
- unsigned int format() const { return format_; }
-
- private:
- friend class base::RefCountedThreadSafe<VASurface>;
- ~VASurface();
-
- const VASurfaceID va_surface_id_;
- gfx::Size size_;
- unsigned int format_;
- ReleaseCB release_cb_;
-
- DISALLOW_COPY_AND_ASSIGN(VASurface);
-};
-
-} // namespace content
-
-#endif // CONTENT_COMMON_GPU_MEDIA_VA_SURFACE_H_

Powered by Google App Engine
This is Rietveld 408576698