From 2bab75721bf223eec7be5cffd6e5ddc2f1303d29 Mon Sep 17 00:00:00 2001 From: Zaheer Abbas Merali Date: Fri, 30 Jul 2004 09:35:09 +0000 Subject: ext/libpng/gstpngenc.*: Added newmedia support to pngenc so now gst-launch-0.8 videotestsrc ! ffmpegcolorspace ! pnge... Original commit message from CVS: 2004-07-30 Zaheer Abbas Merali * ext/libpng/gstpngenc.c: (gst_pngenc_class_init), (gst_pngenc_init), (gst_pngenc_chain), (gst_pngenc_get_property), (gst_pngenc_set_property): * ext/libpng/gstpngenc.h: Added newmedia support to pngenc so now gst-launch-0.8 videotestsrc ! ffmpegcolorspace ! pngenc snapshot=false newmedia=true ! multifilesink location=blah%d.png works as expected --- ext/libpng/gstpngenc.c | 25 +++++++++++++++++++++++-- ext/libpng/gstpngenc.h | 1 + 2 files changed, 24 insertions(+), 2 deletions(-) (limited to 'ext') diff --git a/ext/libpng/gstpngenc.c b/ext/libpng/gstpngenc.c index fcad7e87..f9f99ea2 100644 --- a/ext/libpng/gstpngenc.c +++ b/ext/libpng/gstpngenc.c @@ -47,7 +47,8 @@ enum enum { ARG_0, - ARG_SNAPSHOT + ARG_SNAPSHOT, + ARG_NEWMEDIA }; static void gst_pngenc_base_init (gpointer g_class); @@ -151,7 +152,12 @@ gst_pngenc_class_init (GstPngEncClass * klass) g_object_class_install_property (gobject_class, ARG_SNAPSHOT, g_param_spec_boolean ("snapshot", "Snapshot", - "Send EOS after encoding a frame, usefull for snapshots", + "Send EOS after encoding a frame, useful for snapshots", + DEFAULT_SNAPSHOT, (GParamFlags) G_PARAM_READWRITE)); + + g_object_class_install_property (gobject_class, ARG_NEWMEDIA, + g_param_spec_boolean ("newmedia", "newmedia", + "Send new media discontinuity after encoding each frame", DEFAULT_SNAPSHOT, (GParamFlags) G_PARAM_READWRITE)); gstelement_class->get_property = gst_pngenc_get_property; @@ -198,6 +204,7 @@ gst_pngenc_init (GstPngEnc * pngenc) pngenc->png_info_ptr = NULL; pngenc->snapshot = DEFAULT_SNAPSHOT; + pngenc->newmedia = FALSE; } static void @@ -308,6 +315,14 @@ gst_pngenc_chain (GstPad * pad, GstData * _data) gst_pad_push (pngenc->srcpad, GST_DATA (event)); gst_element_set_eos (GST_ELEMENT (pngenc)); + } else if (pngenc->newmedia) { + /* send new media discont */ + GstEvent *newmedia_event; + + newmedia_event = + gst_event_new_discontinuous (TRUE, GST_FORMAT_TIME, (gint64) 0, + GST_FORMAT_UNDEFINED); + gst_pad_push (pngenc->srcpad, GST_DATA (newmedia_event)); } } @@ -324,6 +339,9 @@ gst_pngenc_get_property (GObject * object, case ARG_SNAPSHOT: g_value_set_boolean (value, pngenc->snapshot); break; + case ARG_NEWMEDIA: + g_value_set_boolean (value, pngenc->newmedia); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -343,6 +361,9 @@ gst_pngenc_set_property (GObject * object, case ARG_SNAPSHOT: pngenc->snapshot = g_value_get_boolean (value); break; + case ARG_NEWMEDIA: + pngenc->newmedia = g_value_get_boolean (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; diff --git a/ext/libpng/gstpngenc.h b/ext/libpng/gstpngenc.h index 14836dc8..093b8cb1 100644 --- a/ext/libpng/gstpngenc.h +++ b/ext/libpng/gstpngenc.h @@ -55,6 +55,7 @@ struct _GstPngEnc gint bpp; gboolean snapshot; + gboolean newmedia; }; struct _GstPngEncClass -- cgit