From 329f0ccba1aa604da1bd80293fd1fe717447df5d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Fri, 12 Dec 2014 20:57:28 +0000 Subject: [PATCH] Revert "openh264: fix to work with released versions and master of upstream" This reverts commit 15394aa70543f55c54fa8a474805224f4138f76c. The latest release (v1.1) does not have pkg-config support yet, so this plugin won't be built with the latest release. Cerbero uses the latest release, so this makes cerbero builds fail, which expect the plugin to be built. We can re-commit this once there's a release that includes pkg-config support. --- configure.ac | 22 +++++++++++++++++++++- ext/openh264/gstopenh264dec.cpp | 4 ++-- ext/openh264/gstopenh264enc.cpp | 10 ++++------ 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/configure.ac b/configure.ac index 71ca13c..fd1ad03 100644 --- a/configure.ac +++ b/configure.ac @@ -2521,7 +2521,27 @@ AG_GST_CHECK_FEATURE(OPENEXR, [openexr library], openexr, [ dnl *** openh264 *** translit(dnm, m, l) AM_CONDITIONAL(USE_OPENH264, true) AG_GST_CHECK_FEATURE(OPENH264, [openh264 library], openh264, [ - AG_GST_PKG_CHECK_MODULES(OPENH264, openh264) + AC_LANG_PUSH([C++]) + 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 +#include ]], [[ + 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 *** diff --git a/ext/openh264/gstopenh264dec.cpp b/ext/openh264/gstopenh264dec.cpp index e8fb3d2..428a884 100644 --- a/ext/openh264/gstopenh264dec.cpp +++ b/ext/openh264/gstopenh264dec.cpp @@ -190,8 +190,8 @@ gst_openh264dec_start (GstVideoDecoder * decoder) WelsCreateDecoder (&(openh264dec->priv->decoder)); dec_param.uiTargetDqLayer = 255; - dec_param.eEcActiveIdc = ERROR_CON_FRAME_COPY; - dec_param.eOutputColorFormat = videoFormatI420; + dec_param.uiEcActiveFlag = 1; + dec_param.iOutputColorFormat = videoFormatI420; dec_param.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_AVC; ret = openh264dec->priv->decoder->Initialize (&dec_param); diff --git a/ext/openh264/gstopenh264enc.cpp b/ext/openh264/gstopenh264enc.cpp index 7e3b18e..89a505e 100644 --- a/ext/openh264/gstopenh264enc.cpp +++ b/ext/openh264/gstopenh264enc.cpp @@ -74,7 +74,7 @@ gst_openh264enc_rc_modes_get_type (void) static GEnumValue rc_modes_types[] = { {RC_QUALITY_MODE, "Quality mode", "quality"}, {RC_BITRATE_MODE, "Bitrate mode", "bitrate"}, - {RC_BUFFERBASED_MODE, "No bitrate control, just using buffer status", "buffer"}, + {RC_LOW_BW_MODE, "Low bandwidth mode", "bandwidth"}, {RC_OFF_MODE, "Rate control off mode", "off"}, {0, NULL, NULL}, }; @@ -407,8 +407,8 @@ gst_openh264enc_set_rate_control (GstOpenh264Enc * openh264enc, gint rc_mode) case RC_BITRATE_MODE: openh264enc->priv->rate_control = RC_BITRATE_MODE; break; - case RC_BUFFERBASED_MODE: - openh264enc->priv->rate_control = RC_BUFFERBASED_MODE; + case RC_LOW_BW_MODE: + openh264enc->priv->rate_control = RC_LOW_BW_MODE; break; case RC_OFF_MODE: openh264enc->priv->rate_control = RC_OFF_MODE; @@ -633,7 +633,6 @@ gst_openh264enc_set_format (GstVideoEncoder * encoder, GstCaps *outcaps; GstVideoCodecState *output_state; openh264enc->priv->frame_count = 0; - int video_format = videoFormatI420; debug_caps = gst_caps_to_string (state->caps); GST_DEBUG_OBJECT (openh264enc, "gst_e26d4_enc_set_format called, caps: %s", @@ -668,6 +667,7 @@ gst_openh264enc_set_format (GstVideoEncoder * encoder, enc_params.iTemporalLayerNum = 1; enc_params.iSpatialLayerNum = 1; enc_params.iLtrMarkPeriod = 30; + enc_params.iInputCsp = videoFormatI420; enc_params.iMultipleThreadIdc = openh264enc->priv->multi_thread; enc_params.bEnableDenoise = openh264enc->priv->enable_denoise; enc_params.uiIntraPeriod = priv->gop_size; @@ -701,8 +701,6 @@ gst_openh264enc_set_format (GstVideoEncoder * encoder, return FALSE; } - priv->encoder->SetOption(ENCODER_OPTION_DATAFORMAT, &video_format); - memset (&bsInfo, 0, sizeof (SFrameBSInfo)); ret = priv->encoder->EncodeParameterSets (&bsInfo); -- 2.7.4