From 4cba0d5faba52af30c9bb3e4d81cafde9fde6c41 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 30 Jun 2016 23:02:49 +0200 Subject: [PATCH] openh264enc: Make slice settings more explicit and don't set any number if not a fixed number of slices is selected --- ext/openh264/gstopenh264enc.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ext/openh264/gstopenh264enc.cpp b/ext/openh264/gstopenh264enc.cpp index 2951537..1d7cea5 100644 --- a/ext/openh264/gstopenh264enc.cpp +++ b/ext/openh264/gstopenh264enc.cpp @@ -105,7 +105,7 @@ static GType gst_openh264enc_slice_mode_get_type (void) { static const GEnumValue types[] = { - {SM_FIXEDSLCNUM_SLICE, "num-slices slices", "n-slices"}, + {SM_FIXEDSLCNUM_SLICE, "Fixed number of slices", "n-slices"}, {SM_AUTO_SLICE, "Number of slices equal to number of threads", "auto"}, {0, NULL, NULL}, }; @@ -680,9 +680,16 @@ gst_openh264enc_set_format (GstVideoEncoder * encoder, enc_params.sSpatialLayers[0].iVideoHeight = height; enc_params.sSpatialLayers[0].fFrameRate = fps_n * 1.0 / fps_d; enc_params.sSpatialLayers[0].iSpatialBitrate = openh264enc->bitrate; - enc_params.sSpatialLayers[0].sSliceCfg.uiSliceMode = openh264enc->slice_mode; - enc_params.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceNum = - openh264enc->num_slices; + + if (openh264enc->slice_mode == SM_FIXEDSLCNUM_SLICE) { + if (openh264enc->num_slices == 1) + enc_params.sSpatialLayers[0].sSliceCfg.uiSliceMode = SM_SINGLE_SLICE; + else + enc_params.sSpatialLayers[0].sSliceCfg.uiSliceMode = SM_FIXEDSLCNUM_SLICE; + enc_params.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceNum = openh264enc->num_slices; + } else { + enc_params.sSpatialLayers[0].sSliceCfg.uiSliceMode = openh264enc->slice_mode; + } openh264enc->framerate = (1 + fps_n / fps_d); -- 2.7.4