48 lines
1.1 KiB
C++
48 lines
1.1 KiB
C++
/**
|
|
* @file src/nvenc/nvenc_d3d11.h
|
|
* @brief Declarations for abstract Direct3D11 NVENC encoder.
|
|
*/
|
|
#pragma once
|
|
#ifdef _WIN32
|
|
|
|
#include <comdef.h>
|
|
#include <d3d11.h>
|
|
|
|
#include "nvenc_base.h"
|
|
|
|
namespace nvenc {
|
|
|
|
_COM_SMARTPTR_TYPEDEF(ID3D11Device, IID_ID3D11Device);
|
|
_COM_SMARTPTR_TYPEDEF(ID3D11Texture2D, IID_ID3D11Texture2D);
|
|
_COM_SMARTPTR_TYPEDEF(IDXGIDevice, IID_IDXGIDevice);
|
|
_COM_SMARTPTR_TYPEDEF(IDXGIAdapter, IID_IDXGIAdapter);
|
|
|
|
/**
|
|
* @brief Abstract Direct3D11 NVENC encoder.
|
|
* Encapsulates common code used by native and interop implementations.
|
|
*/
|
|
class nvenc_d3d11: public nvenc_base {
|
|
public:
|
|
explicit nvenc_d3d11(NV_ENC_DEVICE_TYPE device_type):
|
|
nvenc_base(device_type) {}
|
|
|
|
~nvenc_d3d11();
|
|
|
|
/**
|
|
* @brief Get input surface texture.
|
|
* @return Input surface texture.
|
|
*/
|
|
virtual ID3D11Texture2D *
|
|
get_input_texture() = 0;
|
|
|
|
protected:
|
|
bool
|
|
init_library() override;
|
|
|
|
private:
|
|
HMODULE dll = NULL;
|
|
};
|
|
|
|
} // namespace nvenc
|
|
#endif
|