https://bugzilla.gnome.org/show_bug.cgi?id=793705
PROP_DETAIL,
PROP_MIRRORING,
PROP_SCALING_MODE,
PROP_DETAIL,
PROP_MIRRORING,
PROP_SCALING_MODE,
+ PROP_FORCE_ASPECT_RATIO,
#define PROP_DETAIL_DEFAULT 0
#define PROP_MIRRORING_DEFAULT MFX_MIRRORING_DISABLED
#define PROP_SCALING_MODE_DEFAULT MFX_SCALING_MODE_DEFAULT
#define PROP_DETAIL_DEFAULT 0
#define PROP_MIRRORING_DEFAULT MFX_MIRRORING_DISABLED
#define PROP_SCALING_MODE_DEFAULT MFX_SCALING_MODE_DEFAULT
+#define PROP_FORCE_ASPECT_RATIO_DEFAULT TRUE
#define gst_msdkvpp_parent_class parent_class
G_DEFINE_TYPE (GstMsdkVPP, gst_msdkvpp, GST_TYPE_BASE_TRANSFORM);
#define gst_msdkvpp_parent_class parent_class
G_DEFINE_TYPE (GstMsdkVPP, gst_msdkvpp, GST_TYPE_BASE_TRANSFORM);
thiz->scaling_mode = g_value_get_enum (value);
thiz->flags |= GST_MSDK_FLAG_SCALING_MODE;
break;
thiz->scaling_mode = g_value_get_enum (value);
thiz->flags |= GST_MSDK_FLAG_SCALING_MODE;
break;
+ case PROP_FORCE_ASPECT_RATIO:
+ thiz->keep_aspect = g_value_get_boolean (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
case PROP_SCALING_MODE:
g_value_set_enum (value, thiz->scaling_mode);
break;
case PROP_SCALING_MODE:
g_value_set_enum (value, thiz->scaling_mode);
break;
+ case PROP_FORCE_ASPECT_RATIO:
+ g_value_set_boolean (value, thiz->keep_aspect);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
"The Scaling mode to use", gst_msdkvpp_scaling_mode_get_type (),
PROP_SCALING_MODE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
"The Scaling mode to use", gst_msdkvpp_scaling_mode_get_type (),
PROP_SCALING_MODE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ obj_properties[PROP_FORCE_ASPECT_RATIO] =
+ g_param_spec_boolean ("force-aspect-ratio", "Force Aspect Ratio",
+ "When enabled, scaling will respect original aspect ratio",
+ PROP_FORCE_ASPECT_RATIO_DEFAULT,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (gobject_class, PROP_N, obj_properties);
}
g_object_class_install_properties (gobject_class, PROP_N, obj_properties);
}
thiz->detail = PROP_DETAIL_DEFAULT;
thiz->mirroring = PROP_MIRRORING_DEFAULT;
thiz->scaling_mode = PROP_SCALING_MODE_DEFAULT;
thiz->detail = PROP_DETAIL_DEFAULT;
thiz->mirroring = PROP_MIRRORING_DEFAULT;
thiz->scaling_mode = PROP_SCALING_MODE_DEFAULT;
+ thiz->keep_aspect = PROP_FORCE_ASPECT_RATIO_DEFAULT;
gst_video_info_init (&thiz->sinkpad_info);
gst_video_info_init (&thiz->srcpad_info);
}
gst_video_info_init (&thiz->sinkpad_info);
gst_video_info_init (&thiz->srcpad_info);
}
guint detail;
guint mirroring;
guint scaling_mode;
guint detail;
guint mirroring;
guint scaling_mode;
GstClockTime field_duration;
GstClockTime field_duration;
/* make a copy */
structure = gst_structure_copy (structure);
/* make a copy */
structure = gst_structure_copy (structure);
+ if (thiz->keep_aspect)
+ gst_structure_set (structure, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1,
+ 1, NULL);
+
/* Fixate the format */
if (!gst_structure_fixate_field (structure, "format"))
goto fixate_failed;
/* Fixate the format */
if (!gst_structure_fixate_field (structure, "format"))
goto fixate_failed;