mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-29 13:11:06 +00:00
disksink -> filesink
Original commit message from CVS: disksink -> filesink
This commit is contained in:
parent
ac27b7cdba
commit
d2c0d11ea9
6 changed files with 40 additions and 40 deletions
|
@ -137,7 +137,7 @@ case 4)
|
||||||
case 5)
|
case 5)
|
||||||
|
|
||||||
(--------) (--------) (--------)
|
(--------) (--------) (--------)
|
||||||
! disksrc! ! mad ! !disksink!
|
! disksrc! ! mad ! !filesink!
|
||||||
! src ----- sink src ---- sink !
|
! src ----- sink src ---- sink !
|
||||||
(--------) (--------) (--------)
|
(--------) (--------) (--------)
|
||||||
|
|
||||||
|
@ -155,14 +155,14 @@ case 5)
|
||||||
src pad.
|
src pad.
|
||||||
the parent already has mad in the list of EOS providers so it does not
|
the parent already has mad in the list of EOS providers so it does not
|
||||||
get added twice.
|
get added twice.
|
||||||
mad finally fires the EOS signal. This time, disksink returns false on
|
mad finally fires the EOS signal. This time, filesink returns false on
|
||||||
the eos request. the parent removes mad as an EOS provider.
|
the eos request. the parent removes mad as an EOS provider.
|
||||||
|
|
||||||
disksink was responsible for the EOS delay and gets added to the bin
|
filesink was responsible for the EOS delay and gets added to the bin
|
||||||
as a possible EOS provider.
|
as a possible EOS provider.
|
||||||
When disksink has written all of it's data and closed the output file,
|
When filesink has written all of it's data and closed the output file,
|
||||||
it fires EOS.
|
it fires EOS.
|
||||||
The parent already has disksink in the list of EOS providers so it does
|
The parent already has filesink in the list of EOS providers so it does
|
||||||
not get added twice.
|
not get added twice.
|
||||||
The parent removes the EOS provider
|
The parent removes the EOS provider
|
||||||
from its list, and since the list is empty, the parent fires EOS.
|
from its list, and since the list is empty, the parent fires EOS.
|
||||||
|
@ -172,7 +172,7 @@ case 6)
|
||||||
(--------) (--------) (--------)
|
(--------) (--------) (--------)
|
||||||
!disksrc1! ! mad1 ! ! mixer !
|
!disksrc1! ! mad1 ! ! mixer !
|
||||||
! src ----- sink src ---- sink1 ! (--------)
|
! src ----- sink src ---- sink1 ! (--------)
|
||||||
(--------) (--------) ! ! !disksink!
|
(--------) (--------) ! ! !filesink!
|
||||||
! src ---- sink !
|
! src ---- sink !
|
||||||
(--------) (--------) ! ! (--------)
|
(--------) (--------) ! ! (--------)
|
||||||
!disksrc2! ! mad2 ! ! !
|
!disksrc2! ! mad2 ! ! !
|
||||||
|
@ -201,8 +201,8 @@ case 6)
|
||||||
realizing all of it's sources have reached eos, it sends out the final
|
realizing all of it's sources have reached eos, it sends out the final
|
||||||
buffer and fires EOS.
|
buffer and fires EOS.
|
||||||
|
|
||||||
At this point, disksink will return false, mixer will be removed as an
|
At this point, filesink will return false, mixer will be removed as an
|
||||||
eos provider, and disksink will write out it's final buffer and close
|
eos provider, and filesink will write out it's final buffer and close
|
||||||
the file on disk. At this point, it fires eos, and since it's the last
|
the file on disk. At this point, it fires eos, and since it's the last
|
||||||
eos provider, the parent can fire eos.
|
eos provider, the parent can fire eos.
|
||||||
|
|
||||||
|
|
|
@ -247,15 +247,15 @@ not important for the example.
|
||||||
time with the help of the previous length information supplied by the filesrc. It will then
|
time with the help of the previous length information supplied by the filesrc. It will then
|
||||||
issue another INFO event with that informations. This one will be send downstream and vertical.
|
issue another INFO event with that informations. This one will be send downstream and vertical.
|
||||||
|
|
||||||
* ... ! avimux ! disksink
|
* ... ! avimux ! filesink
|
||||||
|
|
||||||
This example is showing a more exotic way of using events. The reader should be aware that AVI
|
This example is showing a more exotic way of using events. The reader should be aware that AVI
|
||||||
files have a limited filesize. Only 4 GB are allowed. We now show what happens when the avimux
|
files have a limited filesize. Only 4 GB are allowed. We now show what happens when the avimux
|
||||||
encoder hits that limit.
|
encoder hits that limit.
|
||||||
- When the internal counter of avimux shows that it is approaching the filesize limit, the
|
- When the internal counter of avimux shows that it is approaching the filesize limit, the
|
||||||
avimux element pushes a buffer containig the footer to the disksink.
|
avimux element pushes a buffer containig the footer to the filesink.
|
||||||
- After that it issues a DISCONTINUOUS event of the type DISCONT_NEW indicating a new stream.
|
- After that it issues a DISCONTINUOUS event of the type DISCONT_NEW indicating a new stream.
|
||||||
The disksink will close the file and reopen a new one.
|
The filesink will close the file and reopen a new one.
|
||||||
- The avimux plugin resets its internal size counter and restarts sending data to the new file.
|
- The avimux plugin resets its internal size counter and restarts sending data to the new file.
|
||||||
|
|
||||||
* filesrc ! gunzip ! mikmod ! osssink
|
* filesrc ! gunzip ! mikmod ! osssink
|
||||||
|
@ -283,7 +283,7 @@ Open Questions
|
||||||
Open questions are issues that should probably be solved by events but can not be solved
|
Open questions are issues that should probably be solved by events but can not be solved
|
||||||
currently.
|
currently.
|
||||||
|
|
||||||
* A disksink needs to be able to inform elements of a restricted file size. Simply closing
|
* A filesink needs to be able to inform elements of a restricted file size. Simply closing
|
||||||
the file and opening a new one might not work because elements might need to supply a
|
the file and opening a new one might not work because elements might need to supply a
|
||||||
footer. (eg avimux)
|
footer. (eg avimux)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* cutter.c - cut audio into pieces based on silence - thomas@apestaart.org
|
* cutter.c - cut audio into pieces based on silence - thomas@apestaart.org
|
||||||
*
|
*
|
||||||
* construct a simple pipeline osssrc ! cutter ! disksink
|
* construct a simple pipeline osssrc ! cutter ! filesink
|
||||||
* pause when necessary, change output
|
* pause when necessary, change output
|
||||||
*
|
*
|
||||||
* Latest change : 03/06/2001
|
* Latest change : 03/06/2001
|
||||||
|
@ -26,7 +26,7 @@ GstElement *audiosrc;
|
||||||
GstElement *queue;
|
GstElement *queue;
|
||||||
GstElement *thread;
|
GstElement *thread;
|
||||||
GstElement *cutter;
|
GstElement *cutter;
|
||||||
GstElement *disksink;
|
GstElement *filesink;
|
||||||
GstElement *encoder;
|
GstElement *encoder;
|
||||||
char buffer[255];
|
char buffer[255];
|
||||||
|
|
||||||
|
@ -36,8 +36,8 @@ void
|
||||||
cut_start (GstElement * element)
|
cut_start (GstElement * element)
|
||||||
{
|
{
|
||||||
g_print ("\nDEBUG: main: cut start\n");
|
g_print ("\nDEBUG: main: cut start\n");
|
||||||
/* we should pause the pipeline, unlink cutter and disksink
|
/* we should pause the pipeline, unlink cutter and filesink
|
||||||
* create a new disksink to a real file, relink, and set to play
|
* create a new filesink to a real file, relink, and set to play
|
||||||
*/
|
*/
|
||||||
g_print ("DEBUG: cut_start: main_bin pausing\n");
|
g_print ("DEBUG: cut_start: main_bin pausing\n");
|
||||||
gst_element_set_state (main_bin, GST_STATE_PAUSED);
|
gst_element_set_state (main_bin, GST_STATE_PAUSED);
|
||||||
|
@ -56,8 +56,8 @@ cut_start (GstElement * element)
|
||||||
ct->tm_sec);
|
ct->tm_sec);
|
||||||
}
|
}
|
||||||
g_print ("DEBUG: cut_start: setting new location to %s\n", buffer);
|
g_print ("DEBUG: cut_start: setting new location to %s\n", buffer);
|
||||||
g_object_set (G_OBJECT (disksink), "location", buffer, NULL);
|
g_object_set (G_OBJECT (filesink), "location", buffer, NULL);
|
||||||
g_object_set (G_OBJECT (disksink), "type", 4, NULL);
|
g_object_set (G_OBJECT (filesink), "type", 4, NULL);
|
||||||
|
|
||||||
gst_element_set_state (main_bin, GST_STATE_PLAYING);
|
gst_element_set_state (main_bin, GST_STATE_PLAYING);
|
||||||
++id;
|
++id;
|
||||||
|
@ -76,14 +76,14 @@ void
|
||||||
cut_stop (GstElement * element)
|
cut_stop (GstElement * element)
|
||||||
{
|
{
|
||||||
g_print ("\nDEBUG: main: cut stop\n");
|
g_print ("\nDEBUG: main: cut stop\n");
|
||||||
/* we should pause the pipeline, unlink disksink, create a fake disksink,
|
/* we should pause the pipeline, unlink filesink, create a fake filesink,
|
||||||
* link to pipeline, and set to play
|
* link to pipeline, and set to play
|
||||||
*/
|
*/
|
||||||
g_print ("DEBUG: cut_stop: main_bin paused\n");
|
g_print ("DEBUG: cut_stop: main_bin paused\n");
|
||||||
gst_element_set_state (main_bin, GST_STATE_PAUSED);
|
gst_element_set_state (main_bin, GST_STATE_PAUSED);
|
||||||
|
|
||||||
g_print ("DEBUG: cut_stop: setting new location\n");
|
g_print ("DEBUG: cut_stop: setting new location\n");
|
||||||
g_object_set (G_OBJECT (disksink), "location", "/dev/null", NULL);
|
g_object_set (G_OBJECT (filesink), "location", "/dev/null", NULL);
|
||||||
|
|
||||||
gst_element_set_state (main_bin, GST_STATE_PLAYING);
|
gst_element_set_state (main_bin, GST_STATE_PLAYING);
|
||||||
g_print ("stop_cut_signal done\n");
|
g_print ("stop_cut_signal done\n");
|
||||||
|
@ -138,10 +138,10 @@ main (int argc, char *argv[])
|
||||||
if (!(encoder = gst_element_factory_make ("passthrough", "encoder")))
|
if (!(encoder = gst_element_factory_make ("passthrough", "encoder")))
|
||||||
g_error ("Could not create 'passthrough' element !\n");
|
g_error ("Could not create 'passthrough' element !\n");
|
||||||
|
|
||||||
if (!(disksink = gst_element_factory_make ("afsink", "disk_sink")))
|
if (!(filesink = gst_element_factory_make ("afsink", "disk_sink")))
|
||||||
g_error ("Could not create 'afsink' element !\n");
|
g_error ("Could not create 'afsink' element !\n");
|
||||||
|
|
||||||
g_object_set (G_OBJECT (disksink), "location", "/dev/null", NULL);
|
g_object_set (G_OBJECT (filesink), "location", "/dev/null", NULL);
|
||||||
|
|
||||||
thread = gst_thread_new ("thread");
|
thread = gst_thread_new ("thread");
|
||||||
g_assert (thread != NULL);
|
g_assert (thread != NULL);
|
||||||
|
@ -157,9 +157,9 @@ main (int argc, char *argv[])
|
||||||
gst_bin_add (GST_BIN (main_bin), audiosrc);
|
gst_bin_add (GST_BIN (main_bin), audiosrc);
|
||||||
gst_bin_add (GST_BIN (thread), queue);
|
gst_bin_add (GST_BIN (thread), queue);
|
||||||
|
|
||||||
gst_bin_add_many (GST_BIN (thread), cutter, encoder, disksink, NULL);
|
gst_bin_add_many (GST_BIN (thread), cutter, encoder, filesink, NULL);
|
||||||
|
|
||||||
gst_element_link_many (audiosrc, queue, cutter, encoder, disksink, NULL);
|
gst_element_link_many (audiosrc, queue, cutter, encoder, filesink, NULL);
|
||||||
gst_bin_add (GST_BIN (main_bin), thread);
|
gst_bin_add (GST_BIN (main_bin), thread);
|
||||||
|
|
||||||
/* set signal handlers */
|
/* set signal handlers */
|
||||||
|
@ -196,7 +196,7 @@ main (int argc, char *argv[])
|
||||||
|
|
||||||
gst_element_set_state (main_bin, GST_STATE_NULL);
|
gst_element_set_state (main_bin, GST_STATE_NULL);
|
||||||
|
|
||||||
gst_object_unref (GST_OBJECT (disksink));
|
gst_object_unref (GST_OBJECT (filesink));
|
||||||
gst_object_unref (GST_OBJECT (main_bin));
|
gst_object_unref (GST_OBJECT (main_bin));
|
||||||
|
|
||||||
exit (0);
|
exit (0);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
GstElement *pipe;
|
GstElement *pipe;
|
||||||
GstElement *disksink;
|
GstElement *filesink;
|
||||||
GstElement *audiosink;
|
GstElement *audiosink;
|
||||||
|
|
||||||
char *location;
|
char *location;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* cutter.c - cut audio into pieces based on silence - thomas@apestaart.org
|
* cutter.c - cut audio into pieces based on silence - thomas@apestaart.org
|
||||||
*
|
*
|
||||||
* construct a simple pipeline osssrc ! cutter ! disksink
|
* construct a simple pipeline osssrc ! cutter ! filesink
|
||||||
* pause when necessary, change output
|
* pause when necessary, change output
|
||||||
*
|
*
|
||||||
* Latest change : 03/06/2001
|
* Latest change : 03/06/2001
|
||||||
|
@ -26,7 +26,7 @@ GstElement *audiosrc;
|
||||||
GstElement *queue;
|
GstElement *queue;
|
||||||
GstElement *thread;
|
GstElement *thread;
|
||||||
GstElement *cutter;
|
GstElement *cutter;
|
||||||
GstElement *disksink;
|
GstElement *filesink;
|
||||||
GstElement *encoder;
|
GstElement *encoder;
|
||||||
char buffer[255];
|
char buffer[255];
|
||||||
|
|
||||||
|
@ -36,8 +36,8 @@ void
|
||||||
cut_start (GstElement * element)
|
cut_start (GstElement * element)
|
||||||
{
|
{
|
||||||
g_print ("\nDEBUG: main: cut start\n");
|
g_print ("\nDEBUG: main: cut start\n");
|
||||||
/* we should pause the pipeline, unlink cutter and disksink
|
/* we should pause the pipeline, unlink cutter and filesink
|
||||||
* create a new disksink to a real file, relink, and set to play
|
* create a new filesink to a real file, relink, and set to play
|
||||||
*/
|
*/
|
||||||
g_print ("DEBUG: cut_start: main_bin pausing\n");
|
g_print ("DEBUG: cut_start: main_bin pausing\n");
|
||||||
gst_element_set_state (main_bin, GST_STATE_PAUSED);
|
gst_element_set_state (main_bin, GST_STATE_PAUSED);
|
||||||
|
@ -56,8 +56,8 @@ cut_start (GstElement * element)
|
||||||
ct->tm_sec);
|
ct->tm_sec);
|
||||||
}
|
}
|
||||||
g_print ("DEBUG: cut_start: setting new location to %s\n", buffer);
|
g_print ("DEBUG: cut_start: setting new location to %s\n", buffer);
|
||||||
g_object_set (G_OBJECT (disksink), "location", buffer, NULL);
|
g_object_set (G_OBJECT (filesink), "location", buffer, NULL);
|
||||||
g_object_set (G_OBJECT (disksink), "type", 4, NULL);
|
g_object_set (G_OBJECT (filesink), "type", 4, NULL);
|
||||||
|
|
||||||
gst_element_set_state (main_bin, GST_STATE_PLAYING);
|
gst_element_set_state (main_bin, GST_STATE_PLAYING);
|
||||||
++id;
|
++id;
|
||||||
|
@ -76,14 +76,14 @@ void
|
||||||
cut_stop (GstElement * element)
|
cut_stop (GstElement * element)
|
||||||
{
|
{
|
||||||
g_print ("\nDEBUG: main: cut stop\n");
|
g_print ("\nDEBUG: main: cut stop\n");
|
||||||
/* we should pause the pipeline, unlink disksink, create a fake disksink,
|
/* we should pause the pipeline, unlink filesink, create a fake filesink,
|
||||||
* link to pipeline, and set to play
|
* link to pipeline, and set to play
|
||||||
*/
|
*/
|
||||||
g_print ("DEBUG: cut_stop: main_bin paused\n");
|
g_print ("DEBUG: cut_stop: main_bin paused\n");
|
||||||
gst_element_set_state (main_bin, GST_STATE_PAUSED);
|
gst_element_set_state (main_bin, GST_STATE_PAUSED);
|
||||||
|
|
||||||
g_print ("DEBUG: cut_stop: setting new location\n");
|
g_print ("DEBUG: cut_stop: setting new location\n");
|
||||||
g_object_set (G_OBJECT (disksink), "location", "/dev/null", NULL);
|
g_object_set (G_OBJECT (filesink), "location", "/dev/null", NULL);
|
||||||
|
|
||||||
gst_element_set_state (main_bin, GST_STATE_PLAYING);
|
gst_element_set_state (main_bin, GST_STATE_PLAYING);
|
||||||
g_print ("stop_cut_signal done\n");
|
g_print ("stop_cut_signal done\n");
|
||||||
|
@ -138,10 +138,10 @@ main (int argc, char *argv[])
|
||||||
if (!(encoder = gst_element_factory_make ("passthrough", "encoder")))
|
if (!(encoder = gst_element_factory_make ("passthrough", "encoder")))
|
||||||
g_error ("Could not create 'passthrough' element !\n");
|
g_error ("Could not create 'passthrough' element !\n");
|
||||||
|
|
||||||
if (!(disksink = gst_element_factory_make ("afsink", "disk_sink")))
|
if (!(filesink = gst_element_factory_make ("afsink", "disk_sink")))
|
||||||
g_error ("Could not create 'afsink' element !\n");
|
g_error ("Could not create 'afsink' element !\n");
|
||||||
|
|
||||||
g_object_set (G_OBJECT (disksink), "location", "/dev/null", NULL);
|
g_object_set (G_OBJECT (filesink), "location", "/dev/null", NULL);
|
||||||
|
|
||||||
thread = gst_thread_new ("thread");
|
thread = gst_thread_new ("thread");
|
||||||
g_assert (thread != NULL);
|
g_assert (thread != NULL);
|
||||||
|
@ -157,9 +157,9 @@ main (int argc, char *argv[])
|
||||||
gst_bin_add (GST_BIN (main_bin), audiosrc);
|
gst_bin_add (GST_BIN (main_bin), audiosrc);
|
||||||
gst_bin_add (GST_BIN (thread), queue);
|
gst_bin_add (GST_BIN (thread), queue);
|
||||||
|
|
||||||
gst_bin_add_many (GST_BIN (thread), cutter, encoder, disksink, NULL);
|
gst_bin_add_many (GST_BIN (thread), cutter, encoder, filesink, NULL);
|
||||||
|
|
||||||
gst_element_link_many (audiosrc, queue, cutter, encoder, disksink, NULL);
|
gst_element_link_many (audiosrc, queue, cutter, encoder, filesink, NULL);
|
||||||
gst_bin_add (GST_BIN (main_bin), thread);
|
gst_bin_add (GST_BIN (main_bin), thread);
|
||||||
|
|
||||||
/* set signal handlers */
|
/* set signal handlers */
|
||||||
|
@ -196,7 +196,7 @@ main (int argc, char *argv[])
|
||||||
|
|
||||||
gst_element_set_state (main_bin, GST_STATE_NULL);
|
gst_element_set_state (main_bin, GST_STATE_NULL);
|
||||||
|
|
||||||
gst_object_unref (GST_OBJECT (disksink));
|
gst_object_unref (GST_OBJECT (filesink));
|
||||||
gst_object_unref (GST_OBJECT (main_bin));
|
gst_object_unref (GST_OBJECT (main_bin));
|
||||||
|
|
||||||
exit (0);
|
exit (0);
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
GstElement *pipe;
|
GstElement *pipe;
|
||||||
GstElement *disksink;
|
GstElement *filesink;
|
||||||
GstElement *audiosink;
|
GstElement *audiosink;
|
||||||
|
|
||||||
char *location;
|
char *location;
|
||||||
|
|
Loading…
Reference in a new issue