Revert "openh264: fix to work with released versions and master of upstream"
authorTim-Philipp Müller <tim@centricular.com>
Fri, 12 Dec 2014 20:57:28 +0000 (20:57 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 12 Dec 2014 20:58:49 +0000 (20:58 +0000)
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
ext/openh264/gstopenh264dec.cpp
ext/openh264/gstopenh264enc.cpp

index 71ca13c..fd1ad03 100644 (file)
@@ -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 <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 ***
index e8fb3d2..428a884 100644 (file)
@@ -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);
index 7e3b18e..89a505e 100644 (file)
@@ -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);