summaryrefslogtreecommitdiffstats
path: root/ext/libpng/gstpngenc.c
diff options
context:
space:
mode:
authorZaheer Abbas Merali <zaheerabbas@merali.org>2004-07-30 09:35:09 +0000
committerZaheer Abbas Merali <zaheerabbas@merali.org>2004-07-30 09:35:09 +0000
commit2bab75721bf223eec7be5cffd6e5ddc2f1303d29 (patch)
tree99a9487c7c09bc11991065859487777e95bb0a76 /ext/libpng/gstpngenc.c
parentf7b5db4c029968a340d00cbde63a7baf82703318 (diff)
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 <zaheerabbas at merali dot org> * 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
Diffstat (limited to 'ext/libpng/gstpngenc.c')
-rw-r--r--ext/libpng/gstpngenc.c25
1 files changed, 23 insertions, 2 deletions
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;