mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-04 09:42:19 +00:00
Revert "Revert "openh264: fix to work with released versions and master of upstream""
This reverts commit 329f0ccba1
.
This commit is contained in:
parent
21b7ce5504
commit
3a4d988a29
3 changed files with 9 additions and 27 deletions
22
configure.ac
22
configure.ac
|
@ -2521,27 +2521,7 @@ AG_GST_CHECK_FEATURE(OPENEXR, [openexr library], openexr, [
|
||||||
dnl *** openh264 ***
|
dnl *** openh264 ***
|
||||||
translit(dnm, m, l) AM_CONDITIONAL(USE_OPENH264, true)
|
translit(dnm, m, l) AM_CONDITIONAL(USE_OPENH264, true)
|
||||||
AG_GST_CHECK_FEATURE(OPENH264, [openh264 library], openh264, [
|
AG_GST_CHECK_FEATURE(OPENH264, [openh264 library], openh264, [
|
||||||
AC_LANG_PUSH([C++])
|
AG_GST_PKG_CHECK_MODULES(OPENH264, openh264)
|
||||||
AG_GST_CHECK_LIBHEADER(OPENH264, openh264, WelsSnprintf, $PTHREAD_LIBS,
|
|
||||||
wels/codec_api.h, [
|
|
||||||
AC_MSG_CHECKING([for right openh264 version/snapshot])
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <wels/codec_app_def.h>
|
|
||||||
#include <wels/codec_api.h>]], [[
|
|
||||||
SFrameBSInfo frame_info;
|
|
||||||
SEncParamExt enc_params;
|
|
||||||
enc_params.iInputCsp = videoFormatI420;
|
|
||||||
int *p = (int *) &frame_info.eFrameType;
|
|
||||||
*p = RC_LOW_BW_MODE;
|
|
||||||
]])], [
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
OPENH264_LIBS="-lopenh264 $PTHREAD_LIBS"
|
|
||||||
], [
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
HAVE_OPENH264="no"
|
|
||||||
])
|
|
||||||
])
|
|
||||||
AC_LANG_POP([C++])
|
|
||||||
AC_SUBST(OPENH264_LIBS)
|
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl *** OpenJPEG ***
|
dnl *** OpenJPEG ***
|
||||||
|
|
|
@ -190,8 +190,8 @@ gst_openh264dec_start (GstVideoDecoder * decoder)
|
||||||
WelsCreateDecoder (&(openh264dec->priv->decoder));
|
WelsCreateDecoder (&(openh264dec->priv->decoder));
|
||||||
|
|
||||||
dec_param.uiTargetDqLayer = 255;
|
dec_param.uiTargetDqLayer = 255;
|
||||||
dec_param.uiEcActiveFlag = 1;
|
dec_param.eEcActiveIdc = ERROR_CON_FRAME_COPY;
|
||||||
dec_param.iOutputColorFormat = videoFormatI420;
|
dec_param.eOutputColorFormat = videoFormatI420;
|
||||||
dec_param.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_AVC;
|
dec_param.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_AVC;
|
||||||
|
|
||||||
ret = openh264dec->priv->decoder->Initialize (&dec_param);
|
ret = openh264dec->priv->decoder->Initialize (&dec_param);
|
||||||
|
|
|
@ -74,7 +74,7 @@ gst_openh264enc_rc_modes_get_type (void)
|
||||||
static GEnumValue rc_modes_types[] = {
|
static GEnumValue rc_modes_types[] = {
|
||||||
{RC_QUALITY_MODE, "Quality mode", "quality"},
|
{RC_QUALITY_MODE, "Quality mode", "quality"},
|
||||||
{RC_BITRATE_MODE, "Bitrate mode", "bitrate"},
|
{RC_BITRATE_MODE, "Bitrate mode", "bitrate"},
|
||||||
{RC_LOW_BW_MODE, "Low bandwidth mode", "bandwidth"},
|
{RC_BUFFERBASED_MODE, "No bitrate control, just using buffer status", "buffer"},
|
||||||
{RC_OFF_MODE, "Rate control off mode", "off"},
|
{RC_OFF_MODE, "Rate control off mode", "off"},
|
||||||
{0, NULL, NULL},
|
{0, NULL, NULL},
|
||||||
};
|
};
|
||||||
|
@ -407,8 +407,8 @@ gst_openh264enc_set_rate_control (GstOpenh264Enc * openh264enc, gint rc_mode)
|
||||||
case RC_BITRATE_MODE:
|
case RC_BITRATE_MODE:
|
||||||
openh264enc->priv->rate_control = RC_BITRATE_MODE;
|
openh264enc->priv->rate_control = RC_BITRATE_MODE;
|
||||||
break;
|
break;
|
||||||
case RC_LOW_BW_MODE:
|
case RC_BUFFERBASED_MODE:
|
||||||
openh264enc->priv->rate_control = RC_LOW_BW_MODE;
|
openh264enc->priv->rate_control = RC_BUFFERBASED_MODE;
|
||||||
break;
|
break;
|
||||||
case RC_OFF_MODE:
|
case RC_OFF_MODE:
|
||||||
openh264enc->priv->rate_control = RC_OFF_MODE;
|
openh264enc->priv->rate_control = RC_OFF_MODE;
|
||||||
|
@ -633,6 +633,7 @@ gst_openh264enc_set_format (GstVideoEncoder * encoder,
|
||||||
GstCaps *outcaps;
|
GstCaps *outcaps;
|
||||||
GstVideoCodecState *output_state;
|
GstVideoCodecState *output_state;
|
||||||
openh264enc->priv->frame_count = 0;
|
openh264enc->priv->frame_count = 0;
|
||||||
|
int video_format = videoFormatI420;
|
||||||
|
|
||||||
debug_caps = gst_caps_to_string (state->caps);
|
debug_caps = gst_caps_to_string (state->caps);
|
||||||
GST_DEBUG_OBJECT (openh264enc, "gst_e26d4_enc_set_format called, caps: %s",
|
GST_DEBUG_OBJECT (openh264enc, "gst_e26d4_enc_set_format called, caps: %s",
|
||||||
|
@ -670,7 +671,6 @@ gst_openh264enc_set_format (GstVideoEncoder * encoder,
|
||||||
enc_params.iTemporalLayerNum = 1;
|
enc_params.iTemporalLayerNum = 1;
|
||||||
enc_params.iSpatialLayerNum = 1;
|
enc_params.iSpatialLayerNum = 1;
|
||||||
enc_params.iLtrMarkPeriod = 30;
|
enc_params.iLtrMarkPeriod = 30;
|
||||||
enc_params.iInputCsp = videoFormatI420;
|
|
||||||
enc_params.iMultipleThreadIdc = openh264enc->priv->multi_thread;
|
enc_params.iMultipleThreadIdc = openh264enc->priv->multi_thread;
|
||||||
enc_params.bEnableDenoise = openh264enc->priv->enable_denoise;
|
enc_params.bEnableDenoise = openh264enc->priv->enable_denoise;
|
||||||
enc_params.uiIntraPeriod = priv->gop_size;
|
enc_params.uiIntraPeriod = priv->gop_size;
|
||||||
|
@ -704,6 +704,8 @@ gst_openh264enc_set_format (GstVideoEncoder * encoder,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
priv->encoder->SetOption(ENCODER_OPTION_DATAFORMAT, &video_format);
|
||||||
|
|
||||||
memset (&bsInfo, 0, sizeof (SFrameBSInfo));
|
memset (&bsInfo, 0, sizeof (SFrameBSInfo));
|
||||||
|
|
||||||
ret = priv->encoder->EncodeParameterSets (&bsInfo);
|
ret = priv->encoder->EncodeParameterSets (&bsInfo);
|
||||||
|
|
Loading…
Reference in a new issue