-static GstStateChangeReturn
-gst_alsasrc_change_state (GstElement * element, GstStateChange transition)
-{
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
- GstBaseAudioSrc *src = GST_BASE_AUDIO_SRC (element);
- GstAlsaSrc *asrc = GST_ALSA_SRC (element);
- GstClock *clk;
-
- switch (transition) {
- /* Show the compiler that we care */
- case GST_STATE_CHANGE_NULL_TO_READY:
- case GST_STATE_CHANGE_READY_TO_PAUSED:
- case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- case GST_STATE_CHANGE_READY_TO_NULL:
- break;
-
- case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
- clk = src->clock;
- asrc->driver_timestamps = FALSE;
- if (GST_IS_SYSTEM_CLOCK (clk)) {
- gint clocktype;
- g_object_get (clk, "clock-type", &clocktype, NULL);
- if (clocktype == GST_CLOCK_TYPE_MONOTONIC) {
- asrc->driver_timestamps = TRUE;
- }
- }
- break;
- }
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- return ret;
-}
-
-static GstFlowReturn
-gst_alsasrc_create (GstBaseSrc * bsrc, guint64 offset, guint length,
- GstBuffer ** outbuf)
-{
- GstFlowReturn ret = GST_FLOW_OK;
- GstAlsaSrc *asrc = GST_ALSA_SRC (bsrc);
-
- ret =
- GST_BASE_SRC_CLASS (parent_class)->create (bsrc, offset, length, outbuf);
- if (asrc->driver_timestamps == TRUE && *outbuf) {
- GST_BUFFER_TIMESTAMP (*outbuf) =
- gst_alsasrc_get_timestamp ((GstAlsaSrc *) bsrc);
- }
-
- return ret;
-}
-