Added h264 main profile override to QSV encoder
parent
0d87d3977b
commit
764f01f778
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -47,7 +47,7 @@ public:
|
|||
mfxVideoParam* operator&() { return ¶ms; }
|
||||
mfxVideoParam* operator->() { return ¶ms; }
|
||||
|
||||
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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue