213 lines
5.7 KiB
C
213 lines
5.7 KiB
C
// Copyright (c) 2018-2020 Intel Corporation
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to deal
|
|
// in the Software without restriction, including without limitation the rights
|
|
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
// copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in all
|
|
// copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
// SOFTWARE.
|
|
#ifndef __MFXCOMMON_H__
|
|
#define __MFXCOMMON_H__
|
|
#include "mfxdefs.h"
|
|
|
|
#if !defined (__GNUC__)
|
|
#pragma warning(disable: 4201)
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif /* __cplusplus */
|
|
|
|
#define MFX_MAKEFOURCC(A,B,C,D) ((((int)A))+(((int)B)<<8)+(((int)C)<<16)+(((int)D)<<24))
|
|
|
|
/* Extended Configuration Header Structure */
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU32 BufferId;
|
|
mfxU32 BufferSz;
|
|
} mfxExtBuffer;
|
|
MFX_PACK_END()
|
|
|
|
/* Library initialization and deinitialization */
|
|
typedef mfxI32 mfxIMPL;
|
|
#define MFX_IMPL_BASETYPE(x) (0x00ff & (x))
|
|
|
|
enum {
|
|
MFX_IMPL_AUTO = 0x0000, /* Auto Selection/In or Not Supported/Out */
|
|
MFX_IMPL_SOFTWARE = 0x0001, /* Pure Software Implementation */
|
|
MFX_IMPL_HARDWARE = 0x0002, /* Hardware Accelerated Implementation (default device) */
|
|
MFX_IMPL_AUTO_ANY = 0x0003, /* Auto selection of any hardware/software implementation */
|
|
MFX_IMPL_HARDWARE_ANY = 0x0004, /* Auto selection of any hardware implementation */
|
|
MFX_IMPL_HARDWARE2 = 0x0005, /* Hardware accelerated implementation (2nd device) */
|
|
MFX_IMPL_HARDWARE3 = 0x0006, /* Hardware accelerated implementation (3rd device) */
|
|
MFX_IMPL_HARDWARE4 = 0x0007, /* Hardware accelerated implementation (4th device) */
|
|
MFX_IMPL_RUNTIME = 0x0008,
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
MFX_IMPL_SINGLE_THREAD= 0x0009,
|
|
#endif
|
|
MFX_IMPL_VIA_ANY = 0x0100,
|
|
MFX_IMPL_VIA_D3D9 = 0x0200,
|
|
MFX_IMPL_VIA_D3D11 = 0x0300,
|
|
MFX_IMPL_VIA_VAAPI = 0x0400,
|
|
|
|
MFX_IMPL_AUDIO = 0x8000,
|
|
#if (MFX_VERSION >= MFX_VERSION_NEXT)
|
|
MFX_IMPL_EXTERNAL_THREADING = 0x10000,
|
|
#endif
|
|
|
|
MFX_IMPL_UNSUPPORTED = 0x0000 /* One of the MFXQueryIMPL returns */
|
|
};
|
|
|
|
/* Version Info */
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef union {
|
|
struct {
|
|
mfxU16 Minor;
|
|
mfxU16 Major;
|
|
};
|
|
mfxU32 Version;
|
|
} mfxVersion;
|
|
MFX_PACK_END()
|
|
|
|
/* session priority */
|
|
typedef enum
|
|
{
|
|
MFX_PRIORITY_LOW = 0,
|
|
MFX_PRIORITY_NORMAL = 1,
|
|
MFX_PRIORITY_HIGH = 2
|
|
|
|
} mfxPriority;
|
|
|
|
typedef struct _mfxEncryptedData mfxEncryptedData;
|
|
MFX_PACK_BEGIN_STRUCT_W_L_TYPE()
|
|
typedef struct {
|
|
union {
|
|
struct {
|
|
mfxEncryptedData* EncryptedData;
|
|
mfxExtBuffer **ExtParam;
|
|
mfxU16 NumExtParam;
|
|
};
|
|
mfxU32 reserved[6];
|
|
};
|
|
mfxI64 DecodeTimeStamp;
|
|
mfxU64 TimeStamp;
|
|
mfxU8* Data;
|
|
mfxU32 DataOffset;
|
|
mfxU32 DataLength;
|
|
mfxU32 MaxLength;
|
|
|
|
mfxU16 PicStruct;
|
|
mfxU16 FrameType;
|
|
mfxU16 DataFlag;
|
|
mfxU16 reserved2;
|
|
} mfxBitstream;
|
|
MFX_PACK_END()
|
|
|
|
typedef struct _mfxSyncPoint *mfxSyncPoint;
|
|
|
|
/* GPUCopy */
|
|
enum {
|
|
MFX_GPUCOPY_DEFAULT = 0,
|
|
MFX_GPUCOPY_ON = 1,
|
|
MFX_GPUCOPY_OFF = 2
|
|
};
|
|
|
|
MFX_PACK_BEGIN_STRUCT_W_PTR()
|
|
typedef struct {
|
|
mfxIMPL Implementation;
|
|
mfxVersion Version;
|
|
mfxU16 ExternalThreads;
|
|
union {
|
|
struct {
|
|
mfxExtBuffer **ExtParam;
|
|
mfxU16 NumExtParam;
|
|
};
|
|
mfxU16 reserved2[5];
|
|
};
|
|
mfxU16 GPUCopy;
|
|
mfxU16 reserved[21];
|
|
} mfxInitParam;
|
|
MFX_PACK_END()
|
|
|
|
enum {
|
|
MFX_EXTBUFF_THREADS_PARAM = MFX_MAKEFOURCC('T','H','D','P')
|
|
};
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxExtBuffer Header;
|
|
|
|
mfxU16 NumThread;
|
|
mfxI32 SchedulingType;
|
|
mfxI32 Priority;
|
|
mfxU16 reserved[55];
|
|
} mfxExtThreadsParam;
|
|
MFX_PACK_END()
|
|
|
|
/* PlatformCodeName */
|
|
enum {
|
|
MFX_PLATFORM_UNKNOWN = 0,
|
|
MFX_PLATFORM_SANDYBRIDGE = 1,
|
|
MFX_PLATFORM_IVYBRIDGE = 2,
|
|
MFX_PLATFORM_HASWELL = 3,
|
|
MFX_PLATFORM_BAYTRAIL = 4,
|
|
MFX_PLATFORM_BROADWELL = 5,
|
|
MFX_PLATFORM_CHERRYTRAIL = 6,
|
|
MFX_PLATFORM_SKYLAKE = 7,
|
|
MFX_PLATFORM_APOLLOLAKE = 8,
|
|
MFX_PLATFORM_KABYLAKE = 9,
|
|
#if (MFX_VERSION >= 1025)
|
|
MFX_PLATFORM_GEMINILAKE = 10,
|
|
MFX_PLATFORM_COFFEELAKE = 11,
|
|
MFX_PLATFORM_CANNONLAKE = 20,
|
|
#endif
|
|
#if (MFX_VERSION >= 1027)
|
|
MFX_PLATFORM_ICELAKE = 30,
|
|
#endif
|
|
MFX_PLATFORM_JASPERLAKE = 32,
|
|
MFX_PLATFORM_ELKHARTLAKE = 33,
|
|
MFX_PLATFORM_TIGERLAKE = 40,
|
|
MFX_PLATFORM_KEEMBAY = 50,
|
|
};
|
|
|
|
#if (MFX_VERSION >= 1031)
|
|
typedef enum
|
|
{
|
|
MFX_MEDIA_UNKNOWN = 0xffff,
|
|
MFX_MEDIA_INTEGRATED = 0,
|
|
MFX_MEDIA_DISCRETE = 1
|
|
} mfxMediaAdapterType;
|
|
#endif
|
|
|
|
MFX_PACK_BEGIN_USUAL_STRUCT()
|
|
typedef struct {
|
|
mfxU16 CodeName;
|
|
mfxU16 DeviceId;
|
|
#if (MFX_VERSION >= 1031)
|
|
mfxU16 MediaAdapterType;
|
|
mfxU16 reserved[13];
|
|
#else
|
|
mfxU16 reserved[14];
|
|
#endif
|
|
} mfxPlatform;
|
|
MFX_PACK_END()
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
|
|
#endif
|
|
|