Browse Source

Merge pull request #8548 from andrewvoznytsa/pr-gstqgcvideosinkbin-update

gstqgcvideosinkbin update
QGC4.4
Gus Grubba 5 years ago committed by GitHub
parent
commit
bf304e55d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      src/VideoStreaming/VideoManager.cc
  2. 21
      src/VideoStreaming/gstqgcvideosinkbin.c

2
src/VideoStreaming/VideoManager.cc

@ -464,6 +464,8 @@ VideoManager::_makeVideoSink(gpointer widget)
if ((sink = gst_element_factory_make("qgcvideosinkbin", nullptr)) != nullptr) { if ((sink = gst_element_factory_make("qgcvideosinkbin", nullptr)) != nullptr) {
g_object_set(sink, "widget", widget, NULL); g_object_set(sink, "widget", widget, NULL);
// FIXME: AV: temporally disable sync due to MPEG2-TS sync issues
g_object_set(sink, "sync", FALSE, NULL);
} else { } else {
qCritical() << "gst_element_factory_make('qgcvideosinkbin') failed"; qCritical() << "gst_element_factory_make('qgcvideosinkbin') failed";
} }

21
src/VideoStreaming/gstqgcvideosinkbin.c

@ -46,6 +46,7 @@ enum {
PROP_WIDGET, PROP_WIDGET,
PROP_FORCE_ASPECT_RATIO, PROP_FORCE_ASPECT_RATIO,
PROP_PIXEL_ASPECT_RATIO, PROP_PIXEL_ASPECT_RATIO,
PROP_SYNC,
}; };
#define PROP_ENABLE_LAST_SAMPLE_NAME "enable-last-sample" #define PROP_ENABLE_LAST_SAMPLE_NAME "enable-last-sample"
@ -53,11 +54,13 @@ enum {
#define PROP_WIDGET_NAME "widget" #define PROP_WIDGET_NAME "widget"
#define PROP_FORCE_ASPECT_RATIO_NAME "force-aspect-ratio" #define PROP_FORCE_ASPECT_RATIO_NAME "force-aspect-ratio"
#define PROP_PIXEL_ASPECT_RATIO_NAME "pixel-aspect-ratio" #define PROP_PIXEL_ASPECT_RATIO_NAME "pixel-aspect-ratio"
#define PROP_SYNC_NAME "sync"
#define DEFAULT_ENABLE_LAST_SAMPLE TRUE #define DEFAULT_ENABLE_LAST_SAMPLE TRUE
#define DEFAULT_FORCE_ASPECT_RATIO TRUE #define DEFAULT_FORCE_ASPECT_RATIO TRUE
#define DEFAULT_PAR_N 0 #define DEFAULT_PAR_N 0
#define DEFAULT_PAR_D 1 #define DEFAULT_PAR_D 1
#define DEFAULT_SYNC TRUE
static GstBinClass *parent_class; static GstBinClass *parent_class;
@ -125,9 +128,6 @@ _vsb_init(GstQgcVideoSinkBin *vsb)
break; break;
} }
// FIXME: AV: temporally disable sync due to MPEG2-TS sync issues
g_object_set(vsb->qmlglsink, "sync", FALSE, NULL);
if ((glcolorconvert = gst_element_factory_make("glcolorconvert", NULL)) == NULL) { if ((glcolorconvert = gst_element_factory_make("glcolorconvert", NULL)) == NULL) {
GST_ERROR_OBJECT(vsb, "gst_element_factory_make('glcolorconvert' failed)"); GST_ERROR_OBJECT(vsb, "gst_element_factory_make('glcolorconvert' failed)");
break; break;
@ -259,6 +259,13 @@ _vsb_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *psp
gst_value_set_fraction(value, num, den); gst_value_set_fraction(value, num, den);
} while(0); } while(0);
break; break;
case PROP_SYNC:
do {
gboolean enable = FALSE;
g_object_get(G_OBJECT(vsb->qmlglsink), PROP_SYNC_NAME, &enable, NULL);
g_value_set_boolean(value, enable);
} while(0);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break; break;
@ -285,6 +292,9 @@ _vsb_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpe
case PROP_PIXEL_ASPECT_RATIO: case PROP_PIXEL_ASPECT_RATIO:
g_object_set(G_OBJECT(vsb->qmlglsink), PROP_PIXEL_ASPECT_RATIO_NAME, gst_value_get_fraction_numerator(value), gst_value_get_fraction_denominator(value), NULL); g_object_set(G_OBJECT(vsb->qmlglsink), PROP_PIXEL_ASPECT_RATIO_NAME, gst_value_get_fraction_numerator(value), gst_value_get_fraction_denominator(value), NULL);
break; break;
case PROP_SYNC:
g_object_set(G_OBJECT(vsb->qmlglsink), PROP_SYNC_NAME, g_value_get_boolean(value), NULL);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break; break;
@ -357,6 +367,11 @@ _vsb_class_init(GstQgcVideoSinkBinClass *klass)
G_MAXINT, 1, 1, 1, G_MAXINT, 1, 1, 1,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_klass, PROP_SYNC,
g_param_spec_boolean(PROP_SYNC_NAME, "Sync",
"Sync on the clock", DEFAULT_SYNC,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
gst_element_class_set_static_metadata(gstelement_klass, gst_element_class_set_static_metadata(gstelement_klass,
"QGC Video Sink Bin", "Sink/Video/Bin", "QGC Video Sink Bin", "Sink/Video/Bin",
"Video rendering for QGC", "Video rendering for QGC",

Loading…
Cancel
Save