2017-10-28 02:10:06 +03:00
|
|
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
2012-08-19 23:33:25 +04:00
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
#ifndef GFX_IMAGETYPES_H
|
|
|
|
#define GFX_IMAGETYPES_H
|
|
|
|
|
2019-02-13 22:13:55 +03:00
|
|
|
#include <stdint.h> // for uint32_t
|
|
|
|
|
2012-08-19 23:33:25 +04:00
|
|
|
namespace mozilla {
|
|
|
|
|
2015-01-26 01:22:07 +03:00
|
|
|
enum class ImageFormat {
|
2012-08-19 23:33:25 +04:00
|
|
|
/**
|
|
|
|
* The PLANAR_YCBCR format creates a PlanarYCbCrImage. All backends should
|
|
|
|
* support this format, because the Ogg video decoder depends on it.
|
|
|
|
* The maximum image width and height is 16384.
|
|
|
|
*/
|
|
|
|
PLANAR_YCBCR,
|
|
|
|
|
2016-03-10 05:35:27 +03:00
|
|
|
/**
|
|
|
|
* The NV_IMAGE format creates a NVImage. The PLANAR_YCBCR together with this
|
|
|
|
* complete the YUV format family.
|
|
|
|
*/
|
|
|
|
NV_IMAGE,
|
|
|
|
|
2012-12-13 02:47:28 +04:00
|
|
|
/**
|
2014-04-01 10:28:00 +04:00
|
|
|
* The SHARED_RGB format creates a SharedRGBImage, which stores RGB data in
|
2012-12-13 02:47:28 +04:00
|
|
|
* shared memory. Some Android hardware video decoders require this format.
|
|
|
|
* Currently only used on Android.
|
|
|
|
*/
|
|
|
|
SHARED_RGB,
|
|
|
|
|
2012-08-19 23:33:25 +04:00
|
|
|
/**
|
2022-07-06 10:46:17 +03:00
|
|
|
* The MOZ2D_SURFACE format creates a SourceSurfaceImage. All backends should
|
2012-08-19 23:33:25 +04:00
|
|
|
* support this format, because video rendering sometimes requires it.
|
Bug 825928: Land layers refactoring. r=jrmuizel,bas,nical,mattwoodrow,roc,nrc,benwa,bjacob,jgilbert,kchen CLOSED TREE
Please contact Bas Schouten <bschouten@mozilla.com>, Nicolas Silva <nsilva@mozilla.com> or Nicholas Cameron <ncameron@mozilla.com> with general questions. Below is a rough list of authors to contact with specific questions.
Authors:
gfx/layers/Compositor.* gfx/layers/Effects.h - Compositor Interface - bas,nrc,nical
gfx/layers/d3d* - D3D9/D3D10 - bas
gfx/layers/ThebesLayer* - ThebesLayers - nrc,bas
gfx/layers/composite/* - CompositeLayers - nrc,nical
gfx/layers/client/* - Client - nrc,nical,bas
gfx/layers/*Image* - nical
gfx/layers/ipc ipc - IPC - nical
gfx/layers/opengl - CompositorOGL - nrc,nical
gfx/2d - bas,nrc
gfx/gl - GLContext - bjacob
dom/* layout/* - DOM - mattwoodrow
2013-04-10 13:20:52 +04:00
|
|
|
*
|
2014-09-26 21:06:08 +04:00
|
|
|
* This format is useful even though a PaintedLayer could be used.
|
2012-08-19 23:33:25 +04:00
|
|
|
* It makes it easy to render a cairo surface when another Image format
|
|
|
|
* could be used. It can also avoid copying the surface data in some
|
|
|
|
* cases.
|
|
|
|
*/
|
2022-07-06 10:46:17 +03:00
|
|
|
MOZ2D_SURFACE,
|
2012-08-19 23:33:25 +04:00
|
|
|
|
2013-11-01 05:54:14 +04:00
|
|
|
/**
|
|
|
|
* A MacIOSurface object.
|
|
|
|
*/
|
|
|
|
MAC_IOSURFACE,
|
|
|
|
|
2012-08-19 23:33:25 +04:00
|
|
|
/**
|
2014-09-17 17:13:29 +04:00
|
|
|
* An Android SurfaceTexture ID that can be shared across threads and
|
|
|
|
* processes.
|
2012-08-19 23:33:25 +04:00
|
|
|
*/
|
2014-09-17 17:13:29 +04:00
|
|
|
SURFACE_TEXTURE,
|
|
|
|
|
2013-05-04 14:12:40 +04:00
|
|
|
/**
|
|
|
|
* The D3D9_RGB32_TEXTURE format creates a D3D9SurfaceImage, and wraps a
|
|
|
|
* IDirect3DTexture9 in RGB32 layout.
|
|
|
|
*/
|
2014-08-19 06:14:00 +04:00
|
|
|
D3D9_RGB32_TEXTURE,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* An Image type carries an opaque handle once for each stream.
|
|
|
|
* The opaque handle would be a platform specific identifier.
|
|
|
|
*/
|
2015-03-31 08:21:15 +03:00
|
|
|
OVERLAY_IMAGE,
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A share handle to a ID3D11Texture2D.
|
|
|
|
*/
|
2015-12-02 22:31:17 +03:00
|
|
|
D3D11_SHARE_HANDLE_TEXTURE,
|
|
|
|
|
2022-03-03 05:30:28 +03:00
|
|
|
/**
|
|
|
|
* A wrapper of ID3D11Texture2D of IMFSample.
|
|
|
|
* Expected to be used in GPU process.
|
|
|
|
*/
|
|
|
|
D3D11_TEXTURE_IMF_SAMPLE,
|
|
|
|
|
2015-12-02 22:31:17 +03:00
|
|
|
/**
|
|
|
|
* A wrapper around a drawable TextureClient.
|
|
|
|
*/
|
2016-09-21 12:24:44 +03:00
|
|
|
TEXTURE_WRAPPER,
|
|
|
|
|
2017-05-04 00:23:45 +03:00
|
|
|
/**
|
|
|
|
* A D3D11 backed YUV image.
|
|
|
|
*/
|
|
|
|
D3D11_YCBCR_IMAGE,
|
|
|
|
|
2016-09-21 12:24:44 +03:00
|
|
|
/**
|
|
|
|
* An opaque handle that refers to an Image stored in the GPU
|
|
|
|
* process.
|
|
|
|
*/
|
2020-02-06 18:15:02 +03:00
|
|
|
GPU_VIDEO,
|
|
|
|
|
|
|
|
/**
|
2020-06-21 16:59:17 +03:00
|
|
|
* The DMABUF format creates a SharedDMABUFImage, which stores YUV
|
|
|
|
* data in DMABUF memory. Used by VAAPI decoder on Linux.
|
2020-02-06 18:15:02 +03:00
|
|
|
*/
|
2020-06-21 16:59:17 +03:00
|
|
|
DMABUF,
|
Bug 1771011 - part2 : wrap media engine's dcomp handle, and use it on our gfx pipeline in the GPU process.r=jolin,sotaro
In this patch, we ask the media engine to return a handle for shareable
dcomp surface, which will then be packaged into a new texture data type
and being shared with the GPU process via the video bridge.
DcompSurfaceImage is the image which contains the handle texture data,
which doesn't support being accessed in the content process. When the
compositor uploads the image to the GPU process, the corresponding
texture host will be created.
The render texture host will be created by that texture host, and it
will be used in DCLayerTree. In DCLayerTree, we create a new type of
surface for our dcomp handle. DCSurfaceHandle will ask the render
texture host to reconstruct the surface by the handle shared from the
remote process (the handle is actually duplicated to the parent process
first due to the sandbox policy, and then be duplicated to the GPU
process later)
DCSurfaceHandle will attach that surface to its visual in order to
display the video frame directly. In the whole process, it's not
possible for Gecko to access any decoded video data which is protected by the
media engine itself.
Depends on D149941
Differential Revision: https://phabricator.services.mozilla.com/D151019
2022-08-14 02:48:07 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* A Wrapper of Dcomp surface handle, used by the windows media foundation
|
|
|
|
* media engine playback.
|
|
|
|
*/
|
|
|
|
DCOMP_SURFACE,
|
2015-01-26 01:22:07 +03:00
|
|
|
};
|
2014-01-31 02:58:49 +04:00
|
|
|
|
2015-01-26 01:22:07 +03:00
|
|
|
enum class StereoMode {
|
2014-01-31 02:58:49 +04:00
|
|
|
MONO,
|
|
|
|
LEFT_RIGHT,
|
|
|
|
RIGHT_LEFT,
|
|
|
|
BOTTOM_TOP,
|
2016-04-25 20:09:59 +03:00
|
|
|
TOP_BOTTOM,
|
|
|
|
MAX,
|
2015-01-26 01:22:07 +03:00
|
|
|
};
|
2012-08-19 23:33:25 +04:00
|
|
|
|
2019-02-13 22:13:55 +03:00
|
|
|
namespace layers {
|
|
|
|
|
|
|
|
typedef uint32_t ContainerFrameID;
|
|
|
|
constexpr ContainerFrameID kContainerFrameID_Invalid = 0;
|
|
|
|
|
|
|
|
typedef uint32_t ContainerProducerID;
|
|
|
|
constexpr ContainerProducerID kContainerProducerID_Invalid = 0;
|
|
|
|
|
|
|
|
} // namespace layers
|
|
|
|
|
2015-07-13 18:25:42 +03:00
|
|
|
} // namespace mozilla
|
2012-08-19 23:33:25 +04:00
|
|
|
|
2012-08-21 14:22:58 +04:00
|
|
|
#endif
|