parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
- gst_element_install_std_props (
+ gst_element_class_install_std_props (
GST_ELEMENT_CLASS (klass),
"location", ARG_LOCATION, G_PARAM_READWRITE,
NULL);
/* open the file */
if (!gst_disksink_getcurrentfilename(sink))
{
- gst_element_error(GST_ELEMENT(sink), "Out of files");
+ /* Out of files */
+ gst_element_set_eos(GST_ELEMENT(sink));
return FALSE;
}
sink->file = fopen (gst_disksink_getcurrentfilename(sink), "w");
gst_disksink_getcurrentfilename(disksink), sys_errlist[errno]);
break;
default:
- g_warning("Unhandled event %d\n", type);
+ gst_pad_event_default (pad, event);
break;
}
{
if ((disksink->data_written + GST_BUFFER_SIZE(buf))/(1024*1024) > disksink->maxfilesize)
{
- GstEvent *event;
- event = gst_event_new(GST_EVENT_NEW_MEDIA);
- gst_pad_send_event(pad, event);
-
- /* if the event wasn't handled, we probably need to open a new file ourselves */
- if ((disksink->data_written + GST_BUFFER_SIZE(buf))/(1024*1024) > disksink->maxfilesize)
+ if (GST_ELEMENT_IS_EVENT_AWARE(GST_ELEMENT(disksink)))
{
- gst_disksink_close_file(disksink);
- disksink->filenum++;
- if (!gst_disksink_open_file(disksink)) return;
+ GstEvent *event;
+ event = gst_event_new(GST_EVENT_NEW_MEDIA);
+ gst_pad_send_event(pad, event);
}
}
}
}
}
disksink->data_written += GST_BUFFER_SIZE(buf);
+
gst_buffer_unref (buf);
g_signal_emit (G_OBJECT (disksink), gst_disksink_signals[SIGNAL_HANDOFF], 0,