more template fixes

This commit is contained in:
Wim Taymans 2011-11-04 13:12:37 +01:00
parent a95acb7122
commit a19a4a69ae
7 changed files with 45 additions and 45 deletions

View file

@ -140,17 +140,17 @@ gst_avi_demux_class_init (GstAviDemuxClass * klass)
audcaps = gst_riff_create_audio_template_caps (); audcaps = gst_riff_create_audio_template_caps ();
gst_caps_append (audcaps, gst_caps_new_empty_simple ("audio/x-avi-unknown")); gst_caps_append (audcaps, gst_caps_new_empty_simple ("audio/x-avi-unknown"));
audiosrctempl = gst_pad_template_new ("audio_%02d", audiosrctempl = gst_pad_template_new ("audio_%u",
GST_PAD_SRC, GST_PAD_SOMETIMES, audcaps); GST_PAD_SRC, GST_PAD_SOMETIMES, audcaps);
vidcaps = gst_riff_create_video_template_caps (); vidcaps = gst_riff_create_video_template_caps ();
gst_caps_append (vidcaps, gst_riff_create_iavs_template_caps ()); gst_caps_append (vidcaps, gst_riff_create_iavs_template_caps ());
gst_caps_append (vidcaps, gst_caps_new_empty_simple ("video/x-avi-unknown")); gst_caps_append (vidcaps, gst_caps_new_empty_simple ("video/x-avi-unknown"));
videosrctempl = gst_pad_template_new ("video_%02d", videosrctempl = gst_pad_template_new ("video_%u",
GST_PAD_SRC, GST_PAD_SOMETIMES, vidcaps); GST_PAD_SRC, GST_PAD_SOMETIMES, vidcaps);
subcaps = gst_caps_new_empty_simple ("application/x-subtitle-avi"); subcaps = gst_caps_new_empty_simple ("application/x-subtitle-avi");
subsrctempl = gst_pad_template_new ("subtitle_%02d", subsrctempl = gst_pad_template_new ("subtitle_%u",
GST_PAD_SRC, GST_PAD_SOMETIMES, subcaps); GST_PAD_SRC, GST_PAD_SOMETIMES, subcaps);
gst_element_class_add_pad_template (gstelement_class, audiosrctempl); gst_element_class_add_pad_template (gstelement_class, audiosrctempl);
gst_element_class_add_pad_template (gstelement_class, videosrctempl); gst_element_class_add_pad_template (gstelement_class, videosrctempl);
@ -2162,8 +2162,8 @@ gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf)
fourcc = (stream->strf.vids->compression) ? fourcc = (stream->strf.vids->compression) ?
stream->strf.vids->compression : stream->strh->fcc_handler; stream->strf.vids->compression : stream->strh->fcc_handler;
padname = g_strdup_printf ("video_%02d", avi->num_v_streams); padname = g_strdup_printf ("video_%u", avi->num_v_streams);
templ = gst_element_class_get_pad_template (klass, "video_%02d"); templ = gst_element_class_get_pad_template (klass, "video_%u");
caps = gst_riff_create_video_caps (fourcc, stream->strh, caps = gst_riff_create_video_caps (fourcc, stream->strh,
stream->strf.vids, stream->extradata, stream->initdata, &codec_name); stream->strf.vids, stream->extradata, stream->initdata, &codec_name);
if (!caps) { if (!caps) {
@ -2190,8 +2190,8 @@ gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf)
break; break;
} }
case GST_RIFF_FCC_auds:{ case GST_RIFF_FCC_auds:{
padname = g_strdup_printf ("audio_%02d", avi->num_a_streams); padname = g_strdup_printf ("audio_%u", avi->num_a_streams);
templ = gst_element_class_get_pad_template (klass, "audio_%02d"); templ = gst_element_class_get_pad_template (klass, "audio_%u");
caps = gst_riff_create_audio_caps (stream->strf.auds->format, caps = gst_riff_create_audio_caps (stream->strf.auds->format,
stream->strh, stream->strf.auds, stream->extradata, stream->strh, stream->strf.auds, stream->extradata,
stream->initdata, &codec_name); stream->initdata, &codec_name);
@ -2206,8 +2206,8 @@ gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf)
case GST_RIFF_FCC_iavs:{ case GST_RIFF_FCC_iavs:{
guint32 fourcc = stream->strh->fcc_handler; guint32 fourcc = stream->strh->fcc_handler;
padname = g_strdup_printf ("video_%02d", avi->num_v_streams); padname = g_strdup_printf ("video_%u", avi->num_v_streams);
templ = gst_element_class_get_pad_template (klass, "video_%02d"); templ = gst_element_class_get_pad_template (klass, "video_%u");
caps = gst_riff_create_iavs_caps (fourcc, stream->strh, caps = gst_riff_create_iavs_caps (fourcc, stream->strh,
stream->strf.iavs, stream->extradata, stream->initdata, &codec_name); stream->strf.iavs, stream->extradata, stream->initdata, &codec_name);
if (!caps) { if (!caps) {
@ -2219,8 +2219,8 @@ gst_avi_demux_parse_stream (GstAviDemux * avi, GstBuffer * buf)
break; break;
} }
case GST_RIFF_FCC_txts:{ case GST_RIFF_FCC_txts:{
padname = g_strdup_printf ("subtitle_%02d", avi->num_t_streams); padname = g_strdup_printf ("subtitle_%u", avi->num_t_streams);
templ = gst_element_class_get_pad_template (klass, "subtitle_%02d"); templ = gst_element_class_get_pad_template (klass, "subtitle_%u");
caps = gst_caps_new_empty_simple ("application/x-subtitle-avi"); caps = gst_caps_new_empty_simple ("application/x-subtitle-avi");
tag_name = NULL; tag_name = NULL;
avi->num_t_streams++; avi->num_t_streams++;
@ -3979,7 +3979,7 @@ gst_avi_demux_do_seek (GstAviDemux * avi, GstSegment * segment)
GstAviStream *stream; GstAviStream *stream;
seek_time = segment->position; seek_time = segment->position;
keyframe = !!(segment->flags & GST_SEEK_FLAG_KEY_UNIT); keyframe = ! !(segment->flags & GST_SEEK_FLAG_KEY_UNIT);
GST_DEBUG_OBJECT (avi, "seek to: %" GST_TIME_FORMAT GST_DEBUG_OBJECT (avi, "seek to: %" GST_TIME_FORMAT
" keyframe seeking:%d", GST_TIME_ARGS (seek_time), keyframe); " keyframe seeking:%d", GST_TIME_ARGS (seek_time), keyframe);
@ -4219,7 +4219,7 @@ avi_demux_handle_seek_push (GstAviDemux * avi, GstPad * pad, GstEvent * event)
gst_segment_do_seek (&seeksegment, rate, format, flags, gst_segment_do_seek (&seeksegment, rate, format, flags,
cur_type, cur, stop_type, stop, &update); cur_type, cur, stop_type, stop, &update);
keyframe = !!(flags & GST_SEEK_FLAG_KEY_UNIT); keyframe = ! !(flags & GST_SEEK_FLAG_KEY_UNIT);
cur = seeksegment.position; cur = seeksegment.position;
GST_DEBUG_OBJECT (avi, GST_DEBUG_OBJECT (avi,

View file

@ -69,7 +69,7 @@
GST_DEBUG_CATEGORY_STATIC (gst_deinterleave_debug); GST_DEBUG_CATEGORY_STATIC (gst_deinterleave_debug);
#define GST_CAT_DEFAULT gst_deinterleave_debug #define GST_CAT_DEFAULT gst_deinterleave_debug
static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src%d", static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src_%u",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_SOMETIMES, GST_PAD_SOMETIMES,
GST_STATIC_CAPS ("audio/x-raw-int, " GST_STATIC_CAPS ("audio/x-raw-int, "
@ -255,7 +255,7 @@ gst_deinterleave_add_new_pads (GstDeinterleave * self, GstCaps * caps)
guint i; guint i;
for (i = 0; i < self->channels; i++) { for (i = 0; i < self->channels; i++) {
gchar *name = g_strdup_printf ("src%d", i); gchar *name = g_strdup_printf ("src_%u", i);
GstCaps *srccaps; GstCaps *srccaps;

View file

@ -33,7 +33,7 @@
* <refsect2> * <refsect2>
* <title>Example launch line</title> * <title>Example launch line</title>
* |[ * |[
* gst-launch filesrc location=test.mov ! qtdemux name=demux demux.audio_00 ! decodebin ! audioconvert ! audioresample ! autoaudiosink demux.video_00 ! queue ! decodebin ! ffmpegcolorspace ! videoscale ! autovideosink * gst-launch filesrc location=test.mov ! qtdemux name=demux demux.audio_0 ! decodebin ! audioconvert ! audioresample ! autoaudiosink demux.video_0 ! queue ! decodebin ! ffmpegcolorspace ! videoscale ! autovideosink
* ]| Play (parse and decode) a .mov file and try to output it to * ]| Play (parse and decode) a .mov file and try to output it to
* an automatically detected soundcard and videosink. If the MOV file contains * an automatically detected soundcard and videosink. If the MOV file contains
* compressed audio or video data, this will only work if you have the * compressed audio or video data, this will only work if you have the
@ -367,19 +367,19 @@ static GstStaticPadTemplate gst_qtdemux_sink_template =
); );
static GstStaticPadTemplate gst_qtdemux_videosrc_template = static GstStaticPadTemplate gst_qtdemux_videosrc_template =
GST_STATIC_PAD_TEMPLATE ("video_%02d", GST_STATIC_PAD_TEMPLATE ("video_%u",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_SOMETIMES, GST_PAD_SOMETIMES,
GST_STATIC_CAPS_ANY); GST_STATIC_CAPS_ANY);
static GstStaticPadTemplate gst_qtdemux_audiosrc_template = static GstStaticPadTemplate gst_qtdemux_audiosrc_template =
GST_STATIC_PAD_TEMPLATE ("audio_%02d", GST_STATIC_PAD_TEMPLATE ("audio_%u",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_SOMETIMES, GST_PAD_SOMETIMES,
GST_STATIC_CAPS_ANY); GST_STATIC_CAPS_ANY);
static GstStaticPadTemplate gst_qtdemux_subsrc_template = static GstStaticPadTemplate gst_qtdemux_subsrc_template =
GST_STATIC_PAD_TEMPLATE ("subtitle_%02d", GST_STATIC_PAD_TEMPLATE ("subtitle_%u",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_SOMETIMES, GST_PAD_SOMETIMES,
GST_STATIC_CAPS_ANY); GST_STATIC_CAPS_ANY);
@ -4995,7 +4995,7 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux,
gst_segment_init (&stream->segment, GST_FORMAT_TIME); gst_segment_init (&stream->segment, GST_FORMAT_TIME);
if (stream->subtype == FOURCC_vide) { if (stream->subtype == FOURCC_vide) {
gchar *name = g_strdup_printf ("video_%02d", qtdemux->n_video_streams); gchar *name = g_strdup_printf ("video_%u", qtdemux->n_video_streams);
stream->pad = stream->pad =
gst_pad_new_from_static_template (&gst_qtdemux_videosrc_template, name); gst_pad_new_from_static_template (&gst_qtdemux_videosrc_template, name);
@ -5111,7 +5111,7 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux,
} }
qtdemux->n_video_streams++; qtdemux->n_video_streams++;
} else if (stream->subtype == FOURCC_soun) { } else if (stream->subtype == FOURCC_soun) {
gchar *name = g_strdup_printf ("audio_%02d", qtdemux->n_audio_streams); gchar *name = g_strdup_printf ("audio_%u", qtdemux->n_audio_streams);
stream->pad = stream->pad =
gst_pad_new_from_static_template (&gst_qtdemux_audiosrc_template, name); gst_pad_new_from_static_template (&gst_qtdemux_audiosrc_template, name);
@ -5125,7 +5125,7 @@ gst_qtdemux_add_stream (GstQTDemux * qtdemux,
} else if (stream->subtype == FOURCC_strm) { } else if (stream->subtype == FOURCC_strm) {
GST_DEBUG_OBJECT (qtdemux, "stream type, not creating pad"); GST_DEBUG_OBJECT (qtdemux, "stream type, not creating pad");
} else if (stream->subtype == FOURCC_subp || stream->subtype == FOURCC_text) { } else if (stream->subtype == FOURCC_subp || stream->subtype == FOURCC_text) {
gchar *name = g_strdup_printf ("subtitle_%02d", qtdemux->n_sub_streams); gchar *name = g_strdup_printf ("subtitle_%u", qtdemux->n_sub_streams);
stream->pad = stream->pad =
gst_pad_new_from_static_template (&gst_qtdemux_subsrc_template, name); gst_pad_new_from_static_template (&gst_qtdemux_subsrc_template, name);
@ -5323,7 +5323,7 @@ qtdemux_stbl_init (GstQTDemux * qtdemux, QtDemuxStream * stream, GNode * stbl)
/* sync sample atom */ /* sync sample atom */
stream->stps_present = FALSE; stream->stps_present = FALSE;
if ((stream->stss_present = if ((stream->stss_present =
!!qtdemux_tree_get_child_by_type_full (stbl, FOURCC_stss, ! !qtdemux_tree_get_child_by_type_full (stbl, FOURCC_stss,
&stream->stss) ? TRUE : FALSE) == TRUE) { &stream->stss) ? TRUE : FALSE) == TRUE) {
/* copy atom data into a new buffer for later use */ /* copy atom data into a new buffer for later use */
stream->stss.data = g_memdup (stream->stss.data, stream->stss.size); stream->stss.data = g_memdup (stream->stss.data, stream->stss.size);
@ -5341,7 +5341,7 @@ qtdemux_stbl_init (GstQTDemux * qtdemux, QtDemuxStream * stream, GNode * stbl)
/* partial sync sample atom */ /* partial sync sample atom */
if ((stream->stps_present = if ((stream->stps_present =
!!qtdemux_tree_get_child_by_type_full (stbl, FOURCC_stps, ! !qtdemux_tree_get_child_by_type_full (stbl, FOURCC_stps,
&stream->stps) ? TRUE : FALSE) == TRUE) { &stream->stps) ? TRUE : FALSE) == TRUE) {
/* copy atom data into a new buffer for later use */ /* copy atom data into a new buffer for later use */
stream->stps.data = g_memdup (stream->stps.data, stream->stps.size); stream->stps.data = g_memdup (stream->stps.data, stream->stps.size);
@ -5460,7 +5460,7 @@ qtdemux_stbl_init (GstQTDemux * qtdemux, QtDemuxStream * stream, GNode * stbl)
/* composition time-to-sample */ /* composition time-to-sample */
if ((stream->ctts_present = if ((stream->ctts_present =
!!qtdemux_tree_get_child_by_type_full (stbl, FOURCC_ctts, ! !qtdemux_tree_get_child_by_type_full (stbl, FOURCC_ctts,
&stream->ctts) ? TRUE : FALSE) == TRUE) { &stream->ctts) ? TRUE : FALSE) == TRUE) {
/* copy atom data into a new buffer for later use */ /* copy atom data into a new buffer for later use */
stream->ctts.data = g_memdup (stream->ctts.data, stream->ctts.size); stream->ctts.data = g_memdup (stream->ctts.data, stream->ctts.size);

View file

@ -96,21 +96,21 @@ static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink",
/* TODO: fill in caps! */ /* TODO: fill in caps! */
static GstStaticPadTemplate audio_src_templ = static GstStaticPadTemplate audio_src_templ =
GST_STATIC_PAD_TEMPLATE ("audio_%02d", GST_STATIC_PAD_TEMPLATE ("audio_%u",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_SOMETIMES, GST_PAD_SOMETIMES,
GST_STATIC_CAPS ("ANY") GST_STATIC_CAPS ("ANY")
); );
static GstStaticPadTemplate video_src_templ = static GstStaticPadTemplate video_src_templ =
GST_STATIC_PAD_TEMPLATE ("video_%02d", GST_STATIC_PAD_TEMPLATE ("video_%u",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_SOMETIMES, GST_PAD_SOMETIMES,
GST_STATIC_CAPS ("ANY") GST_STATIC_CAPS ("ANY")
); );
static GstStaticPadTemplate subtitle_src_templ = static GstStaticPadTemplate subtitle_src_templ =
GST_STATIC_PAD_TEMPLATE ("subtitle_%02d", GST_STATIC_PAD_TEMPLATE ("subtitle_%u",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_SOMETIMES, GST_PAD_SOMETIMES,
GST_STATIC_CAPS ("text/x-pango-markup; application/x-ssa; " GST_STATIC_CAPS ("text/x-pango-markup; application/x-ssa; "
@ -1207,8 +1207,8 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
GstMatroskaTrackVideoContext *videocontext = GstMatroskaTrackVideoContext *videocontext =
(GstMatroskaTrackVideoContext *) context; (GstMatroskaTrackVideoContext *) context;
padname = g_strdup_printf ("video_%02d", demux->num_v_streams++); padname = g_strdup_printf ("video_%u", demux->num_v_streams++);
templ = gst_element_class_get_pad_template (klass, "video_%02d"); templ = gst_element_class_get_pad_template (klass, "video_%u");
caps = gst_matroska_demux_video_caps (videocontext, caps = gst_matroska_demux_video_caps (videocontext,
context->codec_id, (guint8 *) context->codec_priv, context->codec_id, (guint8 *) context->codec_priv,
context->codec_priv_size, &codec, &riff_fourcc); context->codec_priv_size, &codec, &riff_fourcc);
@ -1226,8 +1226,8 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
GstMatroskaTrackAudioContext *audiocontext = GstMatroskaTrackAudioContext *audiocontext =
(GstMatroskaTrackAudioContext *) context; (GstMatroskaTrackAudioContext *) context;
padname = g_strdup_printf ("audio_%02d", demux->num_a_streams++); padname = g_strdup_printf ("audio_%u", demux->num_a_streams++);
templ = gst_element_class_get_pad_template (klass, "audio_%02d"); templ = gst_element_class_get_pad_template (klass, "audio_%u");
caps = gst_matroska_demux_audio_caps (audiocontext, caps = gst_matroska_demux_audio_caps (audiocontext,
context->codec_id, context->codec_priv, context->codec_priv_size, context->codec_id, context->codec_priv, context->codec_priv_size,
&codec, &riff_audio_fmt); &codec, &riff_audio_fmt);
@ -1245,8 +1245,8 @@ gst_matroska_demux_add_stream (GstMatroskaDemux * demux, GstEbmlRead * ebml)
GstMatroskaTrackSubtitleContext *subtitlecontext = GstMatroskaTrackSubtitleContext *subtitlecontext =
(GstMatroskaTrackSubtitleContext *) context; (GstMatroskaTrackSubtitleContext *) context;
padname = g_strdup_printf ("subtitle_%02d", demux->num_t_streams++); padname = g_strdup_printf ("subtitle_%u", demux->num_t_streams++);
templ = gst_element_class_get_pad_template (klass, "subtitle_%02d"); templ = gst_element_class_get_pad_template (klass, "subtitle_%u");
caps = gst_matroska_demux_subtitle_caps (subtitlecontext, caps = gst_matroska_demux_subtitle_caps (subtitlecontext,
context->codec_id, context->codec_priv, context->codec_priv_size); context->codec_id, context->codec_priv, context->codec_priv_size);
break; break;
@ -1936,8 +1936,8 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux,
} }
} }
flush = !!(flags & GST_SEEK_FLAG_FLUSH); flush = ! !(flags & GST_SEEK_FLAG_FLUSH);
keyunit = !!(flags & GST_SEEK_FLAG_KEY_UNIT); keyunit = ! !(flags & GST_SEEK_FLAG_KEY_UNIT);
GST_DEBUG_OBJECT (demux, "New segment %" GST_SEGMENT_FORMAT, &seeksegment); GST_DEBUG_OBJECT (demux, "New segment %" GST_SEGMENT_FORMAT, &seeksegment);

View file

@ -75,7 +75,7 @@ enum
}; };
static GstStaticPadTemplate multipart_demux_src_template_factory = static GstStaticPadTemplate multipart_demux_src_template_factory =
GST_STATIC_PAD_TEMPLATE ("src_%d", GST_STATIC_PAD_TEMPLATE ("src_%u",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_SOMETIMES, GST_PAD_SOMETIMES,
GST_STATIC_CAPS_ANY); GST_STATIC_CAPS_ANY);
@ -306,7 +306,7 @@ gst_multipart_find_pad_by_mime (GstMultipartDemux * demux, gchar * mime,
GST_DEBUG_OBJECT (demux, "creating pad with mime: %s", mime); GST_DEBUG_OBJECT (demux, "creating pad with mime: %s", mime);
name = g_strdup_printf ("src_%d", demux->numpads); name = g_strdup_printf ("src_%u", demux->numpads);
pad = pad =
gst_pad_new_from_static_template (&multipart_demux_src_template_factory, gst_pad_new_from_static_template (&multipart_demux_src_template_factory,
name); name);

View file

@ -68,7 +68,7 @@ struct _GstMultipartDemux
GstPad *sinkpad; GstPad *sinkpad;
GSList *srcpads; GSList *srcpads;
gint numpads; guint numpads;
GstAdapter *adapter; GstAdapter *adapter;

View file

@ -70,14 +70,14 @@ GST_STATIC_PAD_TEMPLATE ("rtcp_sink",
); );
static GstStaticPadTemplate rtp_ssrc_demux_src_template = static GstStaticPadTemplate rtp_ssrc_demux_src_template =
GST_STATIC_PAD_TEMPLATE ("src_%d", GST_STATIC_PAD_TEMPLATE ("src_%u",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_SOMETIMES, GST_PAD_SOMETIMES,
GST_STATIC_CAPS ("application/x-rtp") GST_STATIC_CAPS ("application/x-rtp")
); );
static GstStaticPadTemplate rtp_ssrc_demux_rtcp_src_template = static GstStaticPadTemplate rtp_ssrc_demux_rtcp_src_template =
GST_STATIC_PAD_TEMPLATE ("rtcp_src_%d", GST_STATIC_PAD_TEMPLATE ("rtcp_src_%u",
GST_PAD_SRC, GST_PAD_SRC,
GST_PAD_SOMETIMES, GST_PAD_SOMETIMES,
GST_STATIC_CAPS ("application/x-rtcp") GST_STATIC_CAPS ("application/x-rtcp")
@ -174,13 +174,13 @@ find_or_create_demux_pad_for_ssrc (GstRtpSsrcDemux * demux, guint32 ssrc)
} }
klass = GST_ELEMENT_GET_CLASS (demux); klass = GST_ELEMENT_GET_CLASS (demux);
templ = gst_element_class_get_pad_template (klass, "src_%d"); templ = gst_element_class_get_pad_template (klass, "src_%u");
padname = g_strdup_printf ("src_%d", ssrc); padname = g_strdup_printf ("src_%u", ssrc);
rtp_pad = gst_pad_new_from_template (templ, padname); rtp_pad = gst_pad_new_from_template (templ, padname);
g_free (padname); g_free (padname);
templ = gst_element_class_get_pad_template (klass, "rtcp_src_%d"); templ = gst_element_class_get_pad_template (klass, "rtcp_src_%u");
padname = g_strdup_printf ("rtcp_src_%d", ssrc); padname = g_strdup_printf ("rtcp_src_%u", ssrc);
rtcp_pad = gst_pad_new_from_template (templ, padname); rtcp_pad = gst_pad_new_from_template (templ, padname);
g_free (padname); g_free (padname);