summaryrefslogtreecommitdiffstats
path: root/gfx/layers/d3d9/Nv3DVUtils.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/layers/d3d9/Nv3DVUtils.h')
-rw-r--r--gfx/layers/d3d9/Nv3DVUtils.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/gfx/layers/d3d9/Nv3DVUtils.h b/gfx/layers/d3d9/Nv3DVUtils.h
new file mode 100644
index 000000000..0712dd888
--- /dev/null
+++ b/gfx/layers/d3d9/Nv3DVUtils.h
@@ -0,0 +1,86 @@
+/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * 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_NV3DVUTILS_H
+#define GFX_NV3DVUTILS_H
+
+#include "Layers.h"
+#include <windows.h>
+#include <d3d9.h>
+
+namespace mozilla {
+namespace layers {
+
+#define FIREFOX_3DV_APP_HANDLE 0xECB992B6
+
+enum Nv_Stereo_Mode {
+ NV_STEREO_MODE_LEFT_RIGHT = 0,
+ NV_STEREO_MODE_RIGHT_LEFT = 1,
+ NV_STEREO_MODE_TOP_BOTTOM = 2,
+ NV_STEREO_MODE_BOTTOM_TOP = 3,
+ NV_STEREO_MODE_MONO = 4,
+ NV_STEREO_MODE_LAST = 5
+};
+
+class INv3DVStreaming : public IUnknown {
+
+public:
+ virtual bool Nv3DVInitialize() = 0;
+ virtual bool Nv3DVRelease() = 0;
+ virtual bool Nv3DVSetDevice(IUnknown* pDevice) = 0;
+ virtual bool Nv3DVControl(Nv_Stereo_Mode eStereoMode, bool bEnableStereo, DWORD dw3DVAppHandle) = 0;
+ virtual bool Nv3DVMetaData(DWORD dwWidth, DWORD dwHeight, HANDLE hSrcLuma, HANDLE hDst) = 0;
+};
+
+/*
+ * Nv3DVUtils class
+ */
+class Nv3DVUtils {
+
+public:
+ Nv3DVUtils();
+ ~Nv3DVUtils();
+
+ /*
+ * Initializes the Nv3DVUtils object.
+ */
+ void Initialize();
+
+ /*
+ * Release any resources if needed
+ *
+ */
+ void UnInitialize();
+
+ /*
+ * Sets the device info, along with any other initialization that is needed after device creation
+ * Pass the D3D9 device pointer is an IUnknown input argument
+ */
+ void SetDeviceInfo(IUnknown *devUnknown);
+
+ /*
+ * Send Stereo Control Information. Used mainly to re-route
+ * calls from ImageLayerD3D9 to the 3DV COM object
+ */
+ void SendNv3DVControl(Nv_Stereo_Mode eStereoMode, bool bEnableStereo, DWORD dw3DVAppHandle);
+
+ /*
+ * Send Stereo Metadata. Used mainly to re-route calls
+ * from ImageLayerD3D9 to the 3DV COM object
+ */
+ void SendNv3DVMetaData(unsigned int dwWidth, unsigned int dwHeight, HANDLE hSrcLuma, HANDLE hDst);
+
+private:
+
+ /* Nv3DVStreaming interface pointer */
+ RefPtr<INv3DVStreaming> m3DVStreaming;
+
+};
+
+
+} // namespace layers
+} // namespace mozilla
+
+#endif /* GFX_NV3DVUTILS_H */