#endif
#include "gstvideosink.h"
-#include "video-info.h"
enum
{
switch (transition) {
case GST_STATE_CHANGE_READY_TO_PAUSED:
- memset (&vsink->priv->info, 0, sizeof (vsink->priv->info));
+ gst_video_info_init (&vsink->priv->info);
break;
default:
break;
gst_video_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
{
GstVideoSink *vsink;
+ GstVideoSinkClass *klass;
GstVideoInfo info;
vsink = GST_VIDEO_SINK_CAST (bsink);
+ klass = GST_VIDEO_SINK_GET_CLASS (vsink);
if (!gst_video_info_from_caps (&info, caps)) {
GST_ERROR_OBJECT (bsink, "Failed to parse caps %" GST_PTR_FORMAT, caps);
GST_DEBUG_OBJECT (bsink, "Setting caps %" GST_PTR_FORMAT, caps);
vsink->priv->info = info;
+ if (klass->set_info)
+ return klass->set_info (vsink, caps, &vsink->priv->info);
+
return TRUE;
}
#include <gst/gst.h>
#include <gst/base/gstbasesink.h>
#include <gst/video/video-prelude.h>
+#include <gst/video/video-info.h>
G_BEGIN_DECLS
GstFlowReturn (*show_frame) (GstVideoSink *video_sink, GstBuffer *buf);
+ /**
+ * GstVideoSinkClass::set_info:
+ * @caps: A #GstCaps.
+ * @info: A #GstVideoInfo corresponding to @caps.
+ *
+ * Notifies the subclass of changed #GstVideoInfo.
+ *
+ * Since: 1.20
+ */
+ gboolean (*set_info) (GstVideoSink *video_sink, GstCaps *caps, const GstVideoInfo *info);
+
/*< private >*/
- gpointer _gst_reserved[GST_PADDING];
+ gpointer _gst_reserved[GST_PADDING-1];
};
GST_VIDEO_API