mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-19 20:32:15 +02:00
obs-ffmpeg: Fix wrong framerate in AMF VUI header
Frame rate should be defined before AMF encoder initialization, because this information is used for setting vui_time_scale in SPS. If frame rate isn't defined before initialization, then AMF encoder set default frame rate into VUI header (30 fps).
This commit is contained in:
parent
d2e50c8c38
commit
b79ba49252
@ -1506,6 +1506,7 @@ static void amf_avc_create_internal(amf_base *enc, obs_data_t *settings)
|
||||
enc->amf_characteristic);
|
||||
set_avc_property(enc, OUTPUT_COLOR_PRIMARIES, enc->amf_primaries);
|
||||
set_avc_property(enc, FULL_RANGE_COLOR, enc->full_range);
|
||||
set_avc_property(enc, FRAMERATE, enc->amf_frame_rate);
|
||||
|
||||
amf_avc_init(enc, settings);
|
||||
|
||||
@ -1513,8 +1514,6 @@ static void amf_avc_create_internal(amf_base *enc, obs_data_t *settings)
|
||||
if (res != AMF_OK)
|
||||
throw amf_error("AMFComponent::Init failed", res);
|
||||
|
||||
set_avc_property(enc, FRAMERATE, enc->amf_frame_rate);
|
||||
|
||||
res = enc->amf_encoder->GetProperty(AMF_VIDEO_ENCODER_EXTRADATA, &p);
|
||||
if (res == AMF_OK && p.type == AMF_VARIANT_INTERFACE)
|
||||
enc->header = AMFBufferPtr(p.pInterface);
|
||||
@ -1853,6 +1852,7 @@ static void amf_hevc_create_internal(amf_base *enc, obs_data_t *settings)
|
||||
enc->amf_characteristic);
|
||||
set_hevc_property(enc, OUTPUT_COLOR_PRIMARIES, enc->amf_primaries);
|
||||
set_hevc_property(enc, NOMINAL_RANGE, enc->full_range);
|
||||
set_hevc_property(enc, FRAMERATE, enc->amf_frame_rate);
|
||||
|
||||
if (is_hdr) {
|
||||
const int hdr_nominal_peak_level =
|
||||
@ -1885,8 +1885,6 @@ static void amf_hevc_create_internal(amf_base *enc, obs_data_t *settings)
|
||||
if (res != AMF_OK)
|
||||
throw amf_error("AMFComponent::Init failed", res);
|
||||
|
||||
set_hevc_property(enc, FRAMERATE, enc->amf_frame_rate);
|
||||
|
||||
res = enc->amf_encoder->GetProperty(AMF_VIDEO_ENCODER_HEVC_EXTRADATA,
|
||||
&p);
|
||||
if (res == AMF_OK && p.type == AMF_VARIANT_INTERFACE)
|
||||
@ -2197,6 +2195,7 @@ static void amf_av1_create_internal(amf_base *enc, obs_data_t *settings)
|
||||
set_av1_property(enc, OUTPUT_TRANSFER_CHARACTERISTIC,
|
||||
enc->amf_characteristic);
|
||||
set_av1_property(enc, OUTPUT_COLOR_PRIMARIES, enc->amf_primaries);
|
||||
set_av1_property(enc, FRAMERATE, enc->amf_frame_rate);
|
||||
|
||||
amf_av1_init(enc, settings);
|
||||
|
||||
@ -2204,8 +2203,6 @@ static void amf_av1_create_internal(amf_base *enc, obs_data_t *settings)
|
||||
if (res != AMF_OK)
|
||||
throw amf_error("AMFComponent::Init failed", res);
|
||||
|
||||
set_av1_property(enc, FRAMERATE, enc->amf_frame_rate);
|
||||
|
||||
AMFVariant p;
|
||||
res = enc->amf_encoder->GetProperty(AMF_VIDEO_ENCODER_AV1_EXTRA_DATA,
|
||||
&p);
|
||||
|
Loading…
Reference in New Issue
Block a user