Added h264 main profile override to QSV encoder

master
palana 2013-12-19 15:19:16 +01:00
parent 0d87d3977b
commit 764f01f778
5 changed files with 9 additions and 4 deletions

View File

@ -98,7 +98,7 @@ struct Encoder
: use_cbr(init_req->use_cbr), first_frame(true), frame_time_ms(static_cast<unsigned>(1./init_req->fps*1000)), exit_code(0)
, using_d3d11(false), session(), encoder(session), event_prefix(event_prefix), log_file(log_file)
{
params.Init(init_req->fps, init_req->keyint, init_req->bframes, init_req->width, init_req->height, init_req->max_bitrate, init_req->buffer_size, init_req->use_cbr);
params.Init(init_req->fps, init_req->keyint, init_req->bframes, init_req->width, init_req->height, init_req->max_bitrate, init_req->buffer_size, init_req->use_cbr, init_req->main_profile);
params.SetVideoSignalInfo(init_req->full_range, init_req->primaries, init_req->transfer, init_req->matrix);
}

View File

@ -30,7 +30,7 @@ struct init_request
enum { MODE_QUERY, MODE_ENCODE } mode;
uint32_t obs_process_id;
int32_t fps, keyint, bframes, width, height, max_bitrate, buffer_size;
bool use_cbr;
bool use_cbr, main_profile;
int32_t full_range, matrix, primaries, transfer;
bool use_custom_impl;
mfxVersion custom_version;

View File

@ -55,7 +55,7 @@ Parameters::Parameters()
zero(params);
}
void Parameters::Init(int fps, int keyframe_interval_frames, int bframes, int width, int height, int max_bitrate, int buffer_size, bool use_cbr)
void Parameters::Init(int fps, int keyframe_interval_frames, int bframes, int width, int height, int max_bitrate, int buffer_size, bool use_cbr, bool main_profile)
{
params.mfx.CodecId = MFX_CODEC_AVC;
params.mfx.TargetUsage = MFX_TARGETUSAGE_BEST_QUALITY;
@ -66,6 +66,8 @@ void Parameters::Init(int fps, int keyframe_interval_frames, int bframes, int wi
params.mfx.GopPicSize = keyframe_interval_frames;
params.mfx.GopRefDist = bframes+1;
params.mfx.NumSlice = 1;
if (main_profile)
params.mfx.CodecProfile = MFX_PROFILE_AVC_MAIN;
params.mfx.RateControlMethod = use_cbr ? MFX_RATECONTROL_CBR : MFX_RATECONTROL_VBR;
params.IOPattern = MFX_IOPATTERN_IN_SYSTEM_MEMORY;

View File

@ -47,7 +47,7 @@ public:
mfxVideoParam* operator&() { return &params; }
mfxVideoParam* operator->() { return &params; }
void Init(int fps, int keyframe_interval_frames, int bframes, int width, int height, int max_bitrate, int buffer_size, bool use_cbr);
void Init(int fps, int keyframe_interval_frames, int bframes, int width, int height, int max_bitrate, int buffer_size, bool use_cbr, bool main_profile);
void SetCodingOptionSPSPPS(mfxU8 *sps_buff, mfxU16 sps_size, mfxU8 *pps_buff, mfxU16 pps_size);
void SetVideoSignalInfo(int full_range, int primaries, int transfer, int matrix);

View File

@ -375,6 +375,8 @@ public:
int keyint = fps*keyframeInterval;
int bframes = 7;
bool main_profile = AppConfig->GetString(TEXT("Video Encoding"), TEXT("X264Profile"), TEXT("high")) != L"high";
bool bHaveCustomImpl = false;
impl_parameters custom = { 0 };
@ -457,6 +459,7 @@ public:
request->max_bitrate = maxBitrate;
request->buffer_size = bufferSize;
request->use_cbr = bUseCBR;
request->main_profile = main_profile;
request->full_range = colorDesc.fullRange;
request->matrix = colorDesc.matrix;
request->primaries = colorDesc.primaries;