mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-22 10:23:47 +00:00
gst/tcp/gstmultifdsink.c: Updates, fixes, and typo corrections for multifdsink. No functional changes.
Original commit message from CVS: * gst/tcp/gstmultifdsink.c: (gst_sync_method_get_type), (gst_multi_fd_sink_class_init): Updates, fixes, and typo corrections for multifdsink. No functional changes.
This commit is contained in:
parent
1720784dc1
commit
6b4cf938a4
2 changed files with 50 additions and 31 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2006-09-18 Michael Smith <msmith@fluendo.com>
|
||||||
|
|
||||||
|
* gst/tcp/gstmultifdsink.c: (gst_sync_method_get_type),
|
||||||
|
(gst_multi_fd_sink_class_init):
|
||||||
|
Updates, fixes, and typo corrections for multifdsink. No functional
|
||||||
|
changes.
|
||||||
|
|
||||||
2006-09-17 Michael Smith <msmith@fluendo.com>
|
2006-09-17 Michael Smith <msmith@fluendo.com>
|
||||||
|
|
||||||
* gst/typefind/gsttypefindfunctions.c: (ogganx_type_find):
|
* gst/typefind/gsttypefindfunctions.c: (ogganx_type_find):
|
||||||
|
|
|
@ -27,8 +27,8 @@
|
||||||
* <refsect2>
|
* <refsect2>
|
||||||
* <para>
|
* <para>
|
||||||
* This plugin writes incoming data to a set of file descriptors. The
|
* This plugin writes incoming data to a set of file descriptors. The
|
||||||
* file descriptors can be added to multifdsink by emiting the "add" signal. For
|
* file descriptors can be added to multifdsink by emitting the "add" signal.
|
||||||
* each descriptor added, the "client-added" signal will be called.
|
* For each descriptor added, the "client-added" signal will be called.
|
||||||
* </para>
|
* </para>
|
||||||
* <para>
|
* <para>
|
||||||
* As of version 0.10.8, a client can also be added with the "add-full" signal
|
* As of version 0.10.8, a client can also be added with the "add-full" signal
|
||||||
|
@ -36,22 +36,22 @@
|
||||||
* initially receives.
|
* initially receives.
|
||||||
* </para>
|
* </para>
|
||||||
* <para>
|
* <para>
|
||||||
* Clients can be removed from multifdsink by emiting the "remove" signal. For
|
* Clients can be removed from multifdsink by emitting the "remove" signal. For
|
||||||
* each descriptor removed, the "client-removed" signal will be called. The
|
* each descriptor removed, the "client-removed" signal will be called. The
|
||||||
* "client-removed" signal can also be fired when multifdsink decides that a
|
* "client-removed" signal can also be fired when multifdsink decides that a
|
||||||
* client is not active anymore or, depending on the value of the
|
* client is not active anymore or, depending on the value of the
|
||||||
* "recover-policy," if the client is reading to slow.
|
* "recover-policy" property, if the client is reading too slowly.
|
||||||
* In all cases, multifdsink will never ever close a file descriptor itself.
|
* In all cases, multifdsink will never close a file descriptor itself.
|
||||||
* The user of multifdsink is responsible for closing all file descriptors.
|
* The user of multifdsink is responsible for closing all file descriptors.
|
||||||
* This can for example be done in response to the "client-fd-removed" signal.
|
* This can for example be done in response to the "client-fd-removed" signal.
|
||||||
* Note that multifdsink still has a reference to the file descriptor when the
|
* Note that multifdsink still has a reference to the file descriptor when the
|
||||||
* "client-removed" signal is emited so that "get-stats" can be performed on
|
* "client-removed" signal is emitted, so that "get-stats" can be performed on
|
||||||
* the descriptor; It is therefore not allowed to close the file descriptor in
|
* the descriptor; it is therefore not safe to close the file descriptor in
|
||||||
* the "client-removed" signal, use the "client-fd-removed" signal to safely
|
* the "client-removed" signal handler, and you should use the
|
||||||
* close the fd.
|
* "client-fd-removed" signal to safely close the fd.
|
||||||
* </para>
|
* </para>
|
||||||
* <para>
|
* <para>
|
||||||
* Multifdsink internally keeps a queue of the incomming buffers and uses a
|
* Multifdsink internally keeps a queue of the incoming buffers and uses a
|
||||||
* separate thread to send the buffers to the clients. This ensures that no
|
* separate thread to send the buffers to the clients. This ensures that no
|
||||||
* client write can block the pipeline and that clients can read with different
|
* client write can block the pipeline and that clients can read with different
|
||||||
* speeds.
|
* speeds.
|
||||||
|
@ -59,28 +59,37 @@
|
||||||
* <para>
|
* <para>
|
||||||
* When adding a client to multifdsink, the "sync-method" property will define
|
* When adding a client to multifdsink, the "sync-method" property will define
|
||||||
* which buffer in the queued buffers will be sent first to the client. Clients
|
* which buffer in the queued buffers will be sent first to the client. Clients
|
||||||
* can be sent respectively the most recent buffer (which might not be decodable
|
* can be sent the most recent buffer (which might not be decodable by the
|
||||||
* by the client when it is not a keyframe), the next keyframe received in
|
* client if it is not a keyframe), the next keyframe received in
|
||||||
* multifdsink (which can take some time depending on the keyframe rate, or the
|
* multifdsink (which can take some time depending on the keyframe rate), or the
|
||||||
* last received keyframe (which will cause a simpl burst-on-connect).
|
* last received keyframe (which will cause a simple burst-on-connect).
|
||||||
* Multifdsink will always keep at least one keyframe in its internal buffers
|
* Multifdsink will always keep at least one keyframe in its internal buffers
|
||||||
* when the sync-mode is set to latest-keyframe.
|
* when the sync-mode is set to latest-keyframe.
|
||||||
* </para>
|
* </para>
|
||||||
* <para>
|
* <para>
|
||||||
|
* As of version 0.10.8, there are additional values for the sync-method
|
||||||
|
* property to allow finer control over burst-on-connect behaviour. By selecting
|
||||||
|
* the 'burst' method a minimum burst size can be chosen, 'burst-keyframe'
|
||||||
|
* additionally requires that the burst begin with a keyframe, and
|
||||||
|
* 'burst-with-keyframe' attempts to burst beginning with a keyframe, but will
|
||||||
|
* prefer a minimum burst size even if it requires not starting with a keyframe.
|
||||||
|
* </para>
|
||||||
|
* <para>
|
||||||
* Multifdsink can be instructed to keep at least a minimum amount of data
|
* Multifdsink can be instructed to keep at least a minimum amount of data
|
||||||
* expressed in time or byte units in its internal queues with the the
|
* expressed in time or byte units in its internal queues with the the
|
||||||
* "time-min" and "bytes-min" properties respectively. These properties are
|
* "time-min" and "bytes-min" properties respectively. These properties are
|
||||||
* usefull if the application adds clients with the "add-full" signal to
|
* useful if the application adds clients with the "add-full" signal to
|
||||||
* make sure that a burst connect can actually be honored.
|
* make sure that a burst connect can actually be honored.
|
||||||
* </para>
|
* </para>
|
||||||
* <para>
|
* <para>
|
||||||
* When streaming data, clients are allowed to read at a different rate than
|
* When streaming data, clients are allowed to read at a different rate than
|
||||||
* the rate at which multifdsink receives data. If the client is reading too
|
* the rate at which multifdsink receives data. If the client is reading too
|
||||||
* fast, no data will be send to the client until multifdsink receives more
|
* fast, no data will be send to the client until multifdsink receives more
|
||||||
* data. If the client however reads too slow, data for that client will bunch
|
* data. If the client, however, reads too slowly, data for that client will be
|
||||||
* up in multifdsink. Two properties control the amount of data (buffers) that
|
* queued up in multifdsink. Two properties control the amount of data
|
||||||
* is queued in multifdsink: "buffers-max" and "buffers-soft-max". A client
|
* (buffers) that is queued in multifdsink: "buffers-max" and
|
||||||
* with a lag of "buffers-max" is removed from multifdsink forcibly.
|
* "buffers-soft-max". A client that falls behind by "buffers-max" is removed
|
||||||
|
* from multifdsink forcibly.
|
||||||
* </para>
|
* </para>
|
||||||
* <para>
|
* <para>
|
||||||
* A client with a lag of at least "buffers-soft-max" enters the recovery
|
* A client with a lag of at least "buffers-soft-max" enters the recovery
|
||||||
|
@ -88,18 +97,18 @@
|
||||||
* policy of NONE will do nothing, RESYNC_LATEST will send the most recently
|
* policy of NONE will do nothing, RESYNC_LATEST will send the most recently
|
||||||
* received buffer as the next buffer for the client, RESYNC_SOFT_LIMIT
|
* received buffer as the next buffer for the client, RESYNC_SOFT_LIMIT
|
||||||
* positions the client to the soft limit in the buffer queue and
|
* positions the client to the soft limit in the buffer queue and
|
||||||
* RESYNC_KEYFRAME positions the client to the most recent keyframe in the
|
* RESYNC_KEYFRAME positions the client at the most recent keyframe in the
|
||||||
* buffer queue.
|
* buffer queue.
|
||||||
* </para>
|
* </para>
|
||||||
* <para>
|
* <para>
|
||||||
* multifdsink will by default synchronize on the clock before serving the buffers
|
* multifdsink will by default synchronize on the clock before serving the
|
||||||
* to the clients. This behaviour can be disabled by setting the sync
|
* buffers to the clients. This behaviour can be disabled by setting the sync
|
||||||
* property to FALSE. Multifdsink will be default not do QoS and will never
|
* property to FALSE. Multifdsink will by default not do QoS and will never
|
||||||
* drop late buffers.
|
* drop late buffers.
|
||||||
* </para>
|
* </para>
|
||||||
* </refsect2>
|
* </refsect2>
|
||||||
*
|
*
|
||||||
* Last reviewed on 2006-06-13 (0.10.9)
|
* Last reviewed on 2006-09-12 (0.10.10)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
|
@ -471,9 +480,12 @@ gst_multi_fd_sink_class_init (GstMultiFdSinkClass * klass)
|
||||||
* @gstmultifdsink: the multifdsink element to emit this signal on
|
* @gstmultifdsink: the multifdsink element to emit this signal on
|
||||||
* @fd: the file descriptor to add to multifdsink
|
* @fd: the file descriptor to add to multifdsink
|
||||||
* @keyframe: start bursting from a keyframe
|
* @keyframe: start bursting from a keyframe
|
||||||
* @unit_type: the unit-type of @value
|
* @unit_type_min: the unit-type of @value_min
|
||||||
* @value: the minimal amount of data to burst expressed in
|
* @value_min: the minimum amount of data to burst expressed in
|
||||||
* @format units.
|
* @unit_type_min units.
|
||||||
|
* @unit_type_max: the unit-type of @value_max
|
||||||
|
* @value_max: the maximum amount of data to burst expressed in
|
||||||
|
* @unit_type_max units.
|
||||||
*
|
*
|
||||||
* Hand the given open file descriptor to multifdsink to write to and
|
* Hand the given open file descriptor to multifdsink to write to and
|
||||||
* specify the burst parameters for the new connection.
|
* specify the burst parameters for the new connection.
|
||||||
|
@ -501,7 +513,7 @@ gst_multi_fd_sink_class_init (GstMultiFdSinkClass * klass)
|
||||||
*
|
*
|
||||||
* Remove all file descriptors from multifdsink. Since multifdsink did not
|
* Remove all file descriptors from multifdsink. Since multifdsink did not
|
||||||
* open fd's itself, it does not explicitly close the fd. The application
|
* open fd's itself, it does not explicitly close the fd. The application
|
||||||
* should do so by connecting to the client-removed callback.
|
* should do so by connecting to the client-fd-removed callback.
|
||||||
*/
|
*/
|
||||||
gst_multi_fd_sink_signals[SIGNAL_CLEAR] =
|
gst_multi_fd_sink_signals[SIGNAL_CLEAR] =
|
||||||
g_signal_new ("clear", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
|
g_signal_new ("clear", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST,
|
||||||
|
@ -534,7 +546,7 @@ gst_multi_fd_sink_class_init (GstMultiFdSinkClass * klass)
|
||||||
* @fd: the file descriptor that was added to multifdsink
|
* @fd: the file descriptor that was added to multifdsink
|
||||||
*
|
*
|
||||||
* The given file descriptor was added to multifdsink. This signal will
|
* The given file descriptor was added to multifdsink. This signal will
|
||||||
* be emited from the streaming thread so application should be prepared
|
* be emitted from the streaming thread so application should be prepared
|
||||||
* for that.
|
* for that.
|
||||||
*/
|
*/
|
||||||
gst_multi_fd_sink_signals[SIGNAL_CLIENT_ADDED] =
|
gst_multi_fd_sink_signals[SIGNAL_CLIENT_ADDED] =
|
||||||
|
@ -548,7 +560,7 @@ gst_multi_fd_sink_class_init (GstMultiFdSinkClass * klass)
|
||||||
* @status: the reason why the client was removed
|
* @status: the reason why the client was removed
|
||||||
*
|
*
|
||||||
* The given file descriptor is about to be removed from multifdsink. This
|
* The given file descriptor is about to be removed from multifdsink. This
|
||||||
* signal will be emited from the streaming thread so applications should
|
* signal will be emitted from the streaming thread so applications should
|
||||||
* be prepared for that.
|
* be prepared for that.
|
||||||
*
|
*
|
||||||
* @gstmultifdsink still holds a handle to @fd so it is possible to call
|
* @gstmultifdsink still holds a handle to @fd so it is possible to call
|
||||||
|
@ -566,7 +578,7 @@ gst_multi_fd_sink_class_init (GstMultiFdSinkClass * klass)
|
||||||
* @fd: the file descriptor that was removed from multifdsink
|
* @fd: the file descriptor that was removed from multifdsink
|
||||||
*
|
*
|
||||||
* The given file descriptor was removed from multifdsink. This signal will
|
* The given file descriptor was removed from multifdsink. This signal will
|
||||||
* be emited from the streaming thread so applications should be prepared
|
* be emitted from the streaming thread so applications should be prepared
|
||||||
* for that.
|
* for that.
|
||||||
*
|
*
|
||||||
* In this callback, @gstmultifdsink has removed all the information
|
* In this callback, @gstmultifdsink has removed all the information
|
||||||
|
|
Loading…
Reference in a new issue