242 lines
7.6 KiB
C
242 lines
7.6 KiB
C
/*
|
|
* Copyright 1993-2010 NVIDIA Corporation. All rights reserved.
|
|
*
|
|
* Please refer to the NVIDIA end user license agreement (EULA) associated
|
|
* with this source code for terms and conditions that govern your use of
|
|
* this software. Any use, reproduction, disclosure, or distribution of
|
|
* this software and related documentation outside the terms of the EULA
|
|
* is strictly prohibited.
|
|
*
|
|
*/
|
|
|
|
#ifndef TYPES_H
|
|
#define TYPES_H
|
|
|
|
#include "NVEncodeDataTypes.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct NVEncoderParams
|
|
{
|
|
char configFile[256];
|
|
char inputFile[256];
|
|
char outputFile[256];
|
|
int measure_psnr;
|
|
int measure_fps;
|
|
int force_device;
|
|
int iSurfaceFormat;
|
|
int iPictureType;
|
|
int nDeviceMemPitch;
|
|
|
|
int iCodecType; // NVVE_CODEC_TYPE,
|
|
int GPU_count; // Choose the specific GPU count
|
|
int GPU_devID; // Choose the specific GPU device ID
|
|
int iUseDeviceMem; // CUDA with DEVICE_MEMORY_INPUT (for encoding)
|
|
int iForcedGPU; // NVVE_FORCE_GPU_SELECTION //F22
|
|
int iOutputSize[2]; // NVVE_OUT_SIZE,
|
|
int iInputSize[2]; // NVVE_IN_SIZE,
|
|
float fAspectRatio; //
|
|
int iAspectRatio[3]; // NVVE_ASPECT_RATIO,
|
|
NVVE_FIELD_MODE Fieldmode; // NVVE_FIELD_ENC_MODE,
|
|
int iP_Interval; // NVVE_P_INTERVAL,
|
|
int iIDR_Period; // NVVE_IDR_PERIOD,
|
|
int iDynamicGOP; // NVVE_DYNAMIC_GOP,
|
|
NVVE_RateCtrlType RCType; // NVVE_RC_TYPE,
|
|
int iAvgBitrate; // NVVE_AVG_BITRATE,
|
|
int iPeakBitrate; // NVVE_PEAK_BITRATE,
|
|
int iQP_Level_Intra; // NVVE_QP_LEVEL_INTRA,
|
|
int iQP_Level_InterP; // NVVE_QP_LEVEL_INTER_P,
|
|
int iQP_Level_InterB; // NVVE_QP_LEVEL_INTER_B,
|
|
int iFrameRate[2]; // NVVE_FRAME_RATE,
|
|
int iDeblockMode; // NVVE_DEBLOCK_MODE,
|
|
int iProfileLevel; // NVVE_PROFILE_LEVEL,
|
|
int iForceIntra; // NVVE_FORCE_INTRA,
|
|
int iForceIDR; // NVVE_FORCE_IDR,
|
|
int iClearStat; // NVVE_CLEAR_STAT,
|
|
NVVE_DI_MODE DIMode; // NVVE_SET_DEINTERLACE,
|
|
NVVE_PRESETS_TARGET Presets; // NVVE_PRESETS,
|
|
int iDisableCabac; // NVVE_DISABLE_CABAC,
|
|
int iNaluFramingType; // NVVE_CONFIGURE_NALU_FRAMING_TYPE
|
|
int iDisableSPSPPS; // NVVE_DISABLE_SPS_PPS
|
|
NVVE_GPUOffloadLevel GPUOffloadLevel; // NVVE_GPU_OFFLOAD_LEVEL
|
|
NVVE_GPUOffloadLevel MaxOffloadLevel; // NVVE_GPU_OFFLOAD_LEVEL_MAX
|
|
int iSliceCnt; // NVVE_SLICE_COUNT //F19
|
|
int iMultiGPU; // NVVE_MULTI_GPU //F21
|
|
int iDeviceMemInput; // NVVE_DEVICE_MEMORY_INPUT //F23
|
|
|
|
// NVVE_STAT_NUM_CODED_FRAMES,
|
|
// NVVE_STAT_NUM_RECEIVED_FRAMES,
|
|
// NVVE_STAT_BITRATE,
|
|
// NVVE_STAT_NUM_BITS_GENERATED,
|
|
// NVVE_GET_PTS_DIFF_TIME,
|
|
// NVVE_GET_PTS_BASE_TIME,
|
|
// NVVE_GET_PTS_CODED_TIME,
|
|
// NVVE_GET_PTS_RECEIVED_TIME,
|
|
// NVVE_STAT_ELAPSED_TIME,
|
|
// NVVE_STAT_QBUF_FULLNESS,
|
|
// NVVE_STAT_PERF_FPS,
|
|
// NVVE_STAT_PERF_AVG_TIME,
|
|
};
|
|
|
|
typedef struct {
|
|
char *name;
|
|
char *yuv_type;
|
|
int bpp;
|
|
} _sYUVParams;
|
|
|
|
static _sYUVParams sSurfaceFormat[] =
|
|
{
|
|
{ "UYVY", "4:2:2", 16 },
|
|
{ "YUY2", "4:2:2", 16 },
|
|
{ "YV12", "4:2:0", 12 },
|
|
{ "NV12", "4:2:0", 12 },
|
|
{ "IYUV", "4:2:0", 12 },
|
|
{ NULL , 0 }
|
|
};
|
|
|
|
typedef struct {
|
|
char *name;
|
|
int params;
|
|
} _sNVVEEncodeParams;
|
|
|
|
static _sNVVEEncodeParams sNVVE_EncodeParams[] =
|
|
{
|
|
{ "UNDEFINED", 1 },
|
|
{ "NVVE_OUT_SIZE", 2 },
|
|
{ "NVVE_ASPECT_RATIO", 3 },
|
|
{ "NVVE_FIELD_ENC_MODE", 1 },
|
|
{ "NVVE_P_INTERVAL", 1 },
|
|
{ "NVVE_IDR_PERIOD", 1 },
|
|
{ "NVVE_DYNAMIC_GOP", 1 },
|
|
{ "NVVE_RC_TYPE", 1 },
|
|
{ "NVVE_AVG_BITRATE", 1 },
|
|
{ "NVVE_PEAK_BITRATE", 1 },
|
|
{ "NVVE_QP_LEVEL_INTRA", 1 },
|
|
{ "NVVE_QP_LEVEL_INTER_P", 1 },
|
|
{ "NVVE_QP_LEVEL_INTER_B", 1 },
|
|
{ "NVVE_FRAME_RATE", 2 },
|
|
{ "NVVE_DEBLOCK_MODE", 1 },
|
|
{ "NVVE_PROFILE_LEVEL", 1 },
|
|
{ "NVVE_FORCE_INTRA (DS)", 1 }, //DShow only
|
|
{ "NVVE_FORCE_IDR (DS)", 1 }, //DShow only
|
|
{ "NVVE_CLEAR_STAT (DS)", 1 }, //DShow only
|
|
{ "NVVE_SET_DEINTERLACE", 1 },
|
|
{ "NVVE_PRESETS", 1 },
|
|
{ "NVVE_IN_SIZE", 2 },
|
|
{ "NVVE_STAT_NUM_CODED_FRAMES (DS)", 1 }, //DShow only
|
|
{ "NVVE_STAT_NUM_RECEIVED_FRAMES (DS)", 1 }, //DShow only
|
|
{ "NVVE_STAT_BITRATE (DS)", 1 }, //DShow only
|
|
{ "NVVE_STAT_NUM_BITS_GENERATED (DS)", 1 }, //DShow only
|
|
{ "NVVE_GET_PTS_DIFF_TIME (DS)", 1 }, //DShow only
|
|
{ "NVVE_GET_PTS_BASE_TIME (DS)", 1 }, //DShow only
|
|
{ "NVVE_GET_PTS_CODED_TIME (DS)", 1 }, //DShow only
|
|
{ "NVVE_GET_PTS_RECEIVED_TIME (DS)", 1 }, //DShow only
|
|
{ "NVVE_STAT_ELAPSED_TIME (DS)", 1 }, //DShow only
|
|
{ "NVVE_STAT_QBUF_FULLNESS (DS)", 1 }, //DShow only
|
|
{ "NVVE_STAT_PERF_FPS (DS)", 1 }, //DShow only
|
|
{ "NVVE_STAT_PERF_AVG_TIME (DS)", 1 }, //DShow only
|
|
{ "NVVE_DISABLE_CABAC", 1 },
|
|
{ "NVVE_CONFIGURE_NALU_FRAMING_TYPE", 1 },
|
|
{ "NVVE_DISABLE_SPS_PPS", 1 },
|
|
{ "NVVE_SLICE_COUNT", 1 },
|
|
{ "NVVE_GPU_OFFLOAD_LEVEL", 1 },
|
|
{ "NVVE_GPU_OFFLOAD_LEVEL_MAX", 1 },
|
|
{ "NVVE_MULTI_GPU", 1 },
|
|
{ "NVVE_GET_GPU_COUNT", 1 },
|
|
{ "NVVE_GET_GPU_ATTRIBUTES", 1 },
|
|
{ "NVVE_FORCE_GPU_SELECTION", 1 },
|
|
{ "NVVE_DEVICE_MEMORY_INPUT", 1 },
|
|
{ "NVVE_DEVICE_CTX_LOCK", 1 },
|
|
{ NULL, 0 }
|
|
};
|
|
|
|
static _sNVVEEncodeParams sProfileName[] = {
|
|
{ "Baseline", 0x42 },
|
|
{ "Main" , 0x4d },
|
|
{ "High" , 0x64 },
|
|
{ NULL , 0 }
|
|
};
|
|
|
|
static _sNVVEEncodeParams sProfileLevel[] = {
|
|
{ "1.0", 0x0a },
|
|
{ "1.1", 0x0b },
|
|
{ "1.2", 0x0c },
|
|
{ "1.3", 0x0d },
|
|
{ "2.0", 0x14 },
|
|
{ "2.1", 0x15 },
|
|
{ "2.2", 0x16 },
|
|
{ "3.0", 0x1e },
|
|
{ "3.1", 0x1f },
|
|
{ "3.2", 0x20 },
|
|
{ "4.0", 0x28 },
|
|
{ "4.1", 0x29 },
|
|
{ "4.2", 0x29 },
|
|
{ "5.0", 0x32 },
|
|
{ "5.1", 0x33 },
|
|
{ "Auto", 0xff },
|
|
{ NULL , 0 }
|
|
};
|
|
|
|
inline char * sProfileIDX2Char(_sNVVEEncodeParams *pProfile, int ID)
|
|
{
|
|
int index;
|
|
for (index = 0; pProfile[index].name != NULL; index++) {
|
|
if (pProfile[index].params == ID) {
|
|
// found the profile return the string
|
|
return pProfile[index].name;
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
static char *sVideoEncodePresets[] = {
|
|
"PSP ( 320x 240)",
|
|
"iPod/iPhone ( 320x 240)",
|
|
"AVCHD",
|
|
"BluRay",
|
|
"HDV_1440",
|
|
"ZuneHD",
|
|
"FlipCam",
|
|
NULL
|
|
};
|
|
|
|
static char *sGPUOffloadLevel[] = {
|
|
"CPU PEL processing",
|
|
"Motion Estimation",
|
|
"Full Encode",
|
|
NULL
|
|
};
|
|
|
|
static char *sPictureType[] = {
|
|
"Frame Mode",
|
|
"Field Mode (top first)",
|
|
"Field Mode (bottom first)",
|
|
"Field Mode (picaff) unsupported",
|
|
NULL
|
|
};
|
|
|
|
static char *sPictureStructure[] = {
|
|
"Unknown",
|
|
"Top Field",
|
|
"Bottom Field",
|
|
"Frame Picture",
|
|
NULL
|
|
};
|
|
|
|
// Rate Control Method (NVVE_RC_TYPE)
|
|
static char *sNVVE_RateCtrlType[] = {
|
|
"Rate Control CQP",
|
|
"Rate Control VBR",
|
|
"Rate Control CBR with QP",
|
|
"Rate Control VBR with Min QP",
|
|
NULL
|
|
};
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|