summaryrefslogtreecommitdiffstats
path: root/video/decode/d3d.h
diff options
context:
space:
mode:
authorKevin Mitchell <kevmitch@gmail.com>2016-03-17 23:28:29 -0700
committerKevin Mitchell <kevmitch@gmail.com>2016-03-30 09:01:27 -0700
commita7110862c8a828e556dd2da0905c3e69f56eca29 (patch)
tree2596247d8712307a370e6d48a254a7e8f29ae94f /video/decode/d3d.h
parent872d0838a4040e6ed275e4510741c8a54035ff73 (diff)
downloadmpv-a7110862c8a828e556dd2da0905c3e69f56eca29.tar.bz2
mpv-a7110862c8a828e556dd2da0905c3e69f56eca29.tar.xz
vd_lavc: add d3d11va hwdec
This commit adds the d3d11va-copy hwdec mode using the ffmpeg d3d11va api. Functions in common with dxva2 are handled in a separate decode/d3d.c file. A future commit will rewrite decode/dxva2.c to share this code.
Diffstat (limited to 'video/decode/d3d.h')
-rw-r--r--video/decode/d3d.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/video/decode/d3d.h b/video/decode/d3d.h
new file mode 100644
index 0000000000..107a227579
--- /dev/null
+++ b/video/decode/d3d.h
@@ -0,0 +1,50 @@
+/*
+ * This file is part of mpv.
+ *
+ * mpv is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * mpv is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with mpv. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MPV_DECODE_D3D_H
+#define MPV_DECODE_D3D_H
+
+#include <windows.h>
+#include <inttypes.h>
+
+struct mp_image;
+struct lavc_ctx;
+
+struct d3d_decoder_fmt {
+ const GUID *guid;
+ int mpfmt_decoded;
+ DWORD dxfmt_decoded; // D3DFORMAT or DXGI_FORMAT
+};
+
+int d3d_probe_codec(const char *decode);
+struct d3d_decoder_fmt d3d_select_decoder_mode(
+ struct lavc_ctx *s, const GUID *device_guids, UINT n_guids,
+ DWORD (*get_dxfmt_cb)(struct lavc_ctx *s, const GUID *guid, int depth));
+
+char *d3d_decoder_guid_to_desc_buf(char *buf, size_t buf_size,
+ const GUID *mode_guid);
+#define d3d_decoder_guid_to_desc(guid) d3d_decoder_guid_to_desc_buf((char[256]){0}, 256, (guid))
+
+void d3d_surface_align(struct lavc_ctx *s, int *w, int *h);
+unsigned d3d_decoder_config_score(struct lavc_ctx *s,
+ GUID *guidConfigBitstreamEncryption,
+ UINT ConfigBitstreamRaw);
+BOOL is_clearvideo(const GUID *mode_guid);
+void copy_nv12(struct mp_image *dest, uint8_t *src_bits,
+ unsigned src_pitch, unsigned surf_height);
+
+#endif