mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-21 07:46:38 +00:00
gst/qtdemux/qtdemux.c: When buffering MDAT data, show the user something is happening by posting 'buffering' messages...
Original commit message from CVS: * gst/qtdemux/qtdemux.c: (gst_qtdemux_post_buffering), (gst_qtdemux_chain): When buffering MDAT data, show the user something is happening by posting 'buffering' messages on the bus.
This commit is contained in:
parent
6e172e01f0
commit
6e75290c49
2 changed files with 27 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2006-02-15 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
|
* gst/qtdemux/qtdemux.c: (gst_qtdemux_post_buffering),
|
||||||
|
(gst_qtdemux_chain):
|
||||||
|
When buffering MDAT data, show the user something is
|
||||||
|
happening by posting 'buffering' messages on the bus.
|
||||||
|
|
||||||
2006-02-14 Edward Hervey <edward@fluendo.com>
|
2006-02-14 Edward Hervey <edward@fluendo.com>
|
||||||
|
|
||||||
* gst/qtdemux/qtdemux.c: (gst_qtdemux_init),
|
* gst/qtdemux/qtdemux.c: (gst_qtdemux_init),
|
||||||
|
|
|
@ -104,7 +104,7 @@ enum QtDemuxState
|
||||||
QTDEMUX_STATE_INITIAL, /* Initial state (haven't got the header yet) */
|
QTDEMUX_STATE_INITIAL, /* Initial state (haven't got the header yet) */
|
||||||
QTDEMUX_STATE_HEADER, /* Parsing the header */
|
QTDEMUX_STATE_HEADER, /* Parsing the header */
|
||||||
QTDEMUX_STATE_MOVIE, /* Parsing/Playing the media data */
|
QTDEMUX_STATE_MOVIE, /* Parsing/Playing the media data */
|
||||||
QTDEMUX_STATE_BUFFER_MDAT, /* Buffering the mdat atom */
|
QTDEMUX_STATE_BUFFER_MDAT /* Buffering the mdat atom */
|
||||||
};
|
};
|
||||||
|
|
||||||
static GNode *qtdemux_tree_get_child_by_type (GNode * node, guint32 fourcc);
|
static GNode *qtdemux_tree_get_child_by_type (GNode * node, guint32 fourcc);
|
||||||
|
@ -810,6 +810,18 @@ next_entry_size (GstQTDemux * demux)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_qtdemux_post_buffering (GstQTDemux * demux, gint num, gint denom)
|
||||||
|
{
|
||||||
|
gint perc = (gint) ((gdouble) num * 100.0 / (gdouble) denom);
|
||||||
|
|
||||||
|
gst_element_post_message (GST_ELEMENT (demux),
|
||||||
|
gst_message_new_custom (GST_MESSAGE_BUFFERING,
|
||||||
|
GST_OBJECT (demux),
|
||||||
|
gst_structure_new ("GstMessageBuffering",
|
||||||
|
"buffer-percent", G_TYPE_INT, perc, NULL)));
|
||||||
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_qtdemux_chain (GstPad * sinkpad, GstBuffer * inbuf)
|
gst_qtdemux_chain (GstPad * sinkpad, GstBuffer * inbuf)
|
||||||
{
|
{
|
||||||
|
@ -920,6 +932,7 @@ gst_qtdemux_chain (GstPad * sinkpad, GstBuffer * inbuf)
|
||||||
demux->offset += demux->neededbytes;
|
demux->offset += demux->neededbytes;
|
||||||
demux->neededbytes = 16;
|
demux->neededbytes = 16;
|
||||||
demux->state = QTDEMUX_STATE_INITIAL;
|
demux->state = QTDEMUX_STATE_INITIAL;
|
||||||
|
gst_qtdemux_post_buffering (demux, 100, 1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1012,6 +1025,12 @@ gst_qtdemux_chain (GstPad * sinkpad, GstBuffer * inbuf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* when buffering movie data, at least show user something is happening */
|
||||||
|
if (ret == GST_FLOW_OK && demux->state == QTDEMUX_STATE_BUFFER_MDAT &&
|
||||||
|
gst_adapter_available (demux->adapter) <= demux->neededbytes) {
|
||||||
|
gst_qtdemux_post_buffering (demux, gst_adapter_available (demux->adapter),
|
||||||
|
demux->neededbytes);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue