Thiago Santos [Thu, 12 Aug 2010 23:23:45 +0000 (20:23 -0300)]
element: link_many should activate pads if needed
gst_element_link_many does some magic and creates ghostpads
if needed, but it didn't set the newly created ghostpad to
active if needed. This patch fixes it.
https://bugzilla.gnome.org/show_bug.cgi?id=626784
Sebastian Dröge [Thu, 19 Aug 2010 09:11:28 +0000 (11:11 +0200)]
datetime: Fix memory leak in the unit test by unreffing GstDateTime instance after usage
Wim Taymans [Thu, 19 Aug 2010 08:03:08 +0000 (10:03 +0200)]
tests: fix comments in test
Edward Hervey [Thu, 19 Aug 2010 07:58:55 +0000 (09:58 +0200)]
queue2: Use G_GUINT64_FORMAT where needed
Fixes build on macosx
Wim Taymans [Wed, 18 Aug 2010 13:31:09 +0000 (15:31 +0200)]
check: enable queue test again
Jonas Holmberg [Wed, 18 Aug 2010 13:12:45 +0000 (15:12 +0200)]
queue: fixed racy unit tests
Fixes #600004
Stefan Kost [Mon, 16 Aug 2010 15:01:27 +0000 (18:01 +0300)]
plugins: add example launch lines and more explanation to the docs.
The plugins where almost undocumented :/ ...
Wim Taymans [Fri, 13 Aug 2010 14:19:36 +0000 (16:19 +0200)]
queue2: fix compilation
Robert Swain [Wed, 7 Jul 2010 06:20:21 +0000 (08:20 +0200)]
queue2: Fix a special case during range management
When a range contained no data, if it was new or newly empty, it would
be mishandled if it were the current range.
Robert Swain [Mon, 5 Jul 2010 11:43:05 +0000 (13:43 +0200)]
queue2: fix locking around init_ranges
This fixes a segfault where the ready to paused state change causes
freeing and allocation of new ranges while another thread is trying to
use them.
Robert Swain [Fri, 2 Jul 2010 15:40:08 +0000 (17:40 +0200)]
queue2: More ring buffer fixes
- Set reading_pos correctly in _create_read ()
- Seek to data if it is further than QUEUE_MAX_BYTES (queue) -
cur_level.bytes away. This should avoid a situation where the ring
buffer is full but the data offset from which we shall read is not in
the ring buffer.
- Only update the max_reading_pos to a lower value to protect data when
necessary
- Always signal an ADD in _locked_enqueue () so that an EOS unlocks the
reader
- More useful debug output
Robert Swain [Mon, 28 Jun 2010 15:50:06 +0000 (17:50 +0200)]
queue2: ring buffer fixes
One must not affect the values of the current range based on a read
request before the correct range is activated.
Robert Swain [Fri, 25 Jun 2010 10:58:27 +0000 (12:58 +0200)]
queue2: Fix bugs
update_buffering () needs to be called every time we write to the ring
buffer so that applications don't get stuck waiting for a 100% buffered
message while queue2 is waiting for space
_create_write () must only be called for temp file/ring buffer cases
Robert Swain [Fri, 18 Jun 2010 15:43:40 +0000 (17:43 +0200)]
queue2: extend ring buffer to support ram mode
Robert Swain [Fri, 18 Jun 2010 12:36:33 +0000 (14:36 +0200)]
queue2: merge write buffer functions and fix bugs
Cached data could have been overwritten so it is now protected until
it is read. Similarly data was overread as _have_data () was always
looking for the originally requested data even if part of it had been
read already.
Wim Taymans [Thu, 17 Jun 2010 08:18:48 +0000 (10:18 +0200)]
queue2: small cleanup
Wim Taymans [Wed, 16 Jun 2010 16:25:35 +0000 (18:25 +0200)]
queue2: cleanup write_to_ring_buffer
Use cur_level.bytes to see how much space is free in the ringbuffer.
Simplyfy the write function, avoid taking subbuffers, move waiting for free
space in one spot, use simply counter to write data of a buffer.
Wim Taymans [Wed, 16 Jun 2010 15:03:49 +0000 (17:03 +0200)]
queue2: cleanups
Add a macro to get the max size of the queue in bytes, which depends on the
max_level.bytes and the ring_buffer_max_size.
Some cleanups.
Wim Taymans [Wed, 16 Jun 2010 14:23:02 +0000 (16:23 +0200)]
queue2: remove unused variable
Wim Taymans [Wed, 16 Jun 2010 14:13:28 +0000 (16:13 +0200)]
queue2: cleanups
Make sure the cur_level.bytes is updated after we change the writing_pos or the
max_reading_pos.
Refactor get_free_space()
Add some comments
Wim Taymans [Wed, 16 Jun 2010 10:00:45 +0000 (12:00 +0200)]
queue2: remove unneeded signal
Wim Taymans [Wed, 16 Jun 2010 10:00:30 +0000 (12:00 +0200)]
queue2: set buffering mode correctly
Wim Taymans [Wed, 16 Jun 2010 09:20:00 +0000 (11:20 +0200)]
queue2: fix calculation of available ringbuffer data
Wim Taymans [Wed, 16 Jun 2010 09:11:32 +0000 (11:11 +0200)]
queue2: reading_pos is updated in create_read only
Wim Taymans [Wed, 16 Jun 2010 09:11:11 +0000 (11:11 +0200)]
queue2: refactor and add debug
Wim Taymans [Wed, 16 Jun 2010 09:10:23 +0000 (11:10 +0200)]
queue2: fix flushing
Wim Taymans [Wed, 16 Jun 2010 09:09:25 +0000 (11:09 +0200)]
queue2: add debug
Wim Taymans [Tue, 15 Jun 2010 15:26:15 +0000 (17:26 +0200)]
queue2: don't try to write 0 bytes
Wim Taymans [Tue, 15 Jun 2010 14:12:02 +0000 (16:12 +0200)]
queue2; cleanups and fixes
Make a macro for some frequent checks
Emit the removed signal in all cases when we remove something
Wim Taymans [Tue, 15 Jun 2010 10:37:33 +0000 (12:37 +0200)]
queue2: refactorings
Check and handle seek errors
Refactor the wait_free_space function.
Robert Swain [Wed, 16 Jun 2010 10:24:25 +0000 (12:24 +0200)]
queue2: Use ring-buffer-max-size prop to control ring buffer
Robert Swain [Sun, 6 Jun 2010 07:30:48 +0000 (09:30 +0200)]
queue2: Clean up and improve code
Robert Swain [Wed, 26 May 2010 02:11:48 +0000 (04:11 +0200)]
queue2: Fix conditions where behaviour should differ between ring
buffer and temp file
Robert Swain [Wed, 19 May 2010 14:04:15 +0000 (16:04 +0200)]
queue2: add useful debug messages and fix an assumption in _have_data ()
Robert Swain [Tue, 18 May 2010 15:42:07 +0000 (17:42 +0200)]
queue2: fix buffering percentage in ring buffer mode
Robert Swain [Tue, 18 May 2010 15:21:40 +0000 (17:21 +0200)]
queue2: various ring buffer fixes
- make _get_range () emit the del signal once a buffer has been read
- use do {} while (); for wait code as queue is locked and no data could
have been read in the mean time so it makes no sense to check before
waiting
- make _is_filled () more robust
Robert Swain [Fri, 7 May 2010 07:30:44 +0000 (09:30 +0200)]
queue2: ring buffer work in progress
Robert Swain [Wed, 5 May 2010 08:21:55 +0000 (10:21 +0200)]
queue2: Add use-ring-buffer and ring-buffer-max-size properties
Robert Swain [Tue, 15 Jun 2010 06:59:11 +0000 (08:59 +0200)]
queue2: add ST-Ericsson copyright
Stefan Kost [Fri, 13 Aug 2010 14:23:31 +0000 (17:23 +0300)]
Automatic update of common submodule
From 3e8db1d to ec60217
Stefan Kost [Thu, 12 Aug 2010 19:08:44 +0000 (22:08 +0300)]
info: xrefs glib symbol in docs
Thiago Santos [Thu, 12 Aug 2010 19:05:35 +0000 (16:05 -0300)]
gstcollectpads: Fix docs about GstCollectData list
Add to the docs the fact that is only safe to iterate
GstCollectPad's data list inside the collected callback.
Fixes #610366
Tim-Philipp Müller [Tue, 10 Aug 2010 09:56:38 +0000 (10:56 +0100)]
Automatic update of common submodule
From bd2054b to 3e8db1d
Thiago Santos [Wed, 4 Aug 2010 14:24:12 +0000 (11:24 -0300)]
tag: Adds GST_TAG_APPLICATION_NAME tag
Adds a new tag for representing application used to create
a media
https://bugzilla.gnome.org/show_bug.cgi?id=626027
Sebastian Dröge [Sun, 8 Aug 2010 15:57:52 +0000 (17:57 +0200)]
bufferlist: Initialize the GType cache for the bufferlist again
This was accidentially removed with last commit.
Sebastian Dröge [Fri, 6 Aug 2010 17:38:22 +0000 (19:38 +0200)]
bufferlist: Don't chain up finalize to the parent class
GstMiniObject::finalize does nothing and this prevents a
runtime-type-check cast and function call per buffer list.
Shixin Zeng [Tue, 20 Jul 2010 14:23:11 +0000 (09:23 -0500)]
gst: make _get_type() in gst/* thread safe
This is not really necessary here because everything is
initialized from gst_init() already but using G_DEFINE_TYPE()
removes some copy&paste boilerplate code.
Sebastian Dröge [Fri, 6 Aug 2010 17:34:42 +0000 (19:34 +0200)]
plugins: Add declarations for _get_type() functions to fix compiler warnings
Shixin Zeng [Tue, 20 Jul 2010 14:23:54 +0000 (09:23 -0500)]
plugins: Make *_get_type() in plugins/* thread safe
It's not really needed here but using G_DEFINE_TYPE() reduces
some copy&paste boilerplate code.
Sebastian Dröge [Fri, 6 Aug 2010 16:43:56 +0000 (18:43 +0200)]
basesrc: Make sure the buffer metadata is writable before changing it
Stefan Kost [Thu, 5 Aug 2010 10:56:11 +0000 (13:56 +0300)]
Automatic update of common submodule
From 2004d03 to bd2054b
Tim-Philipp Müller [Thu, 5 Aug 2010 09:04:47 +0000 (10:04 +0100)]
utils: speed up pad linking utility functions by not trying pads that will never work
In gst_element_get_compatible_pad(), when trying to find a compatible pad on an
element for a given pad, there's no point in checking the element's sink pads
if the pad to link is a sink pad as well, or the element's source pads if the
given pad is a source pad already, since those would never be able to link
anyway. Should speed up linking using the convenience functions a little bit,
or at least reduce debug log output.
Stefan Kost [Thu, 5 Aug 2010 07:32:53 +0000 (10:32 +0300)]
info: take the timestamp a tick later
The logging is not an atomic operation and because of the multi-threading we end
up with out-of-order log lines. Tools that present the log-file should probably
resort the lines. This change just takes the timestamp a bit closer to the
actual logging.
Stefan Kost [Thu, 5 Aug 2010 06:36:16 +0000 (09:36 +0300)]
debug: logging improvements
Use the event serialisation. Log formats name instead of number.
Stefan Kost [Thu, 15 Jul 2010 12:46:24 +0000 (15:46 +0300)]
check: don't use c++ keywords as variable names
Stefan Kost [Thu, 15 Jul 2010 08:37:30 +0000 (11:37 +0300)]
basesrc: log seek event details
Stefan Kost [Mon, 12 Jul 2010 07:50:53 +0000 (10:50 +0300)]
manual: update gst-controller chapter
The docs were still describing deprecated api. Update it to tell about
control-cources.
Stefan Kost [Fri, 9 Jul 2010 12:58:50 +0000 (15:58 +0300)]
tests: clean up eventloop in examples
Don't leak the bus. Don't parse messages with the method for errors (triggers
gobject warning).
Stefan Kost [Thu, 8 Jul 2010 11:08:27 +0000 (14:08 +0300)]
benchmark: handle errors from the pipeline
Catch errors and warnings on the bus. This fixes hanging pipelines in the case
of bugs elsewhere. Also print state-change messages to give more detail on the progress.
Stefan Kost [Tue, 6 Jul 2010 15:20:40 +0000 (18:20 +0300)]
benchmark: cleanup last change in capsnego benchmark
A pad name is not a factory name.
Stefan Kost [Tue, 6 Jul 2010 11:29:39 +0000 (14:29 +0300)]
docs: more docs for gst_parse_launch and co
Tell about limited reusability of some parsed pipelines.
Stefan Kost [Mon, 5 Jul 2010 13:32:00 +0000 (16:32 +0300)]
inspect: pad info output improvements
Don't print empty query types. Also print caps-vmethods.
Stefan Kost [Tue, 6 Jul 2010 13:47:22 +0000 (16:47 +0300)]
pad: log element:pad names with caps
Stefan Kost [Wed, 30 Jun 2010 08:46:11 +0000 (11:46 +0300)]
utils: better error logging in link_pads_filtered
Stefan Kost [Thu, 24 Jun 2010 07:00:04 +0000 (10:00 +0300)]
tests: add comments telling the meaning of the abbreviations
Stefan Kost [Mon, 5 Jul 2010 09:19:29 +0000 (12:19 +0300)]
basesrc: avoid some caps manipulation
After the intersect we have writable caps. Copy the template caps so that also
there we have writable caps.
Tim-Philipp Müller [Thu, 5 Aug 2010 00:09:02 +0000 (01:09 +0100)]
tests: add basic unit test for gst_pad_proxy_getcaps()
https://bugzilla.gnome.org/show_bug.cgi?id=624203
Olivier Crête [Thu, 5 Aug 2010 00:06:57 +0000 (01:06 +0100)]
gstutils: Make gst_pad_proxy_getcaps() return empty caps if it's what the other side has
gst_pad_proxy_getcaps() would return the pad template caps if the other side
returned empty caps or if the intersection of all the caps on the other side
was empty.
https://bugzilla.gnome.org/show_bug.cgi?id=624203
Sebastian Dröge [Wed, 4 Aug 2010 17:19:55 +0000 (19:19 +0200)]
configure: Check if the compiler supports ISO C89 or C99 and which parameters are required
This first checks what is required for ISO C99 support and sets the relevant
compiler parameters and if no C99 compiler is found, it checks for a
C89 compiler. This enables us to check for and use C89/C99 functions
that gcc hides from us without the correct compiler parameters.
Thiago Santos [Wed, 4 Aug 2010 16:47:23 +0000 (13:47 -0300)]
bytereader: Fix docs
Fix typo in docs for the unsigned peek functions
Wim Taymans [Mon, 5 Jul 2010 08:00:02 +0000 (10:00 +0200)]
gst: remove \n from debug statements
Tim-Philipp Müller [Tue, 3 Aug 2010 10:37:13 +0000 (11:37 +0100)]
docs: fix build with gtk-doc from git
For some reason the static inline function GST_CAT_LEVEL_LOG_valist is
now picked up, which then breaks the build because it's not documented,
so add it to the sections file.
Based on patch by Víctor Manuel Jáquez Leal <vjaquez@igalia.com>.
Fixes #625862.
Stefan Kost [Thu, 15 Jul 2010 20:05:09 +0000 (23:05 +0300)]
typefind: add comment and more logging
Mark Nauwelaerts [Thu, 29 Jul 2010 15:27:06 +0000 (17:27 +0200)]
queue2: download mode; prevent range corruption due to race
Current range was being updated in the thread performing seek, but as
no locks were kept for a short section, data flow could resume before
current range updated, so data for the new range would be accepted as
from the previous range.
Rather, range should be updated in serialized manner based on
newsegment event.
Rob Clark [Sat, 22 May 2010 21:33:11 +0000 (16:33 -0500)]
basetransform fix for upstream caps-renegotiation
If initially pass-through caps are negotiated between a transform element's
sink and src pads, but then the downstream element returns different caps
on a buffer from pad_alloc(), basetransform gets stuck with proxy_alloc=TRUE
even though the upstream peer doesn't accept the caps, causing
gst_pad_peer_accept_caps() to be called on each buffer in _buffer_alloc():
if (!gst_caps_is_equal (newcaps, caps)) {
GST_DEBUG_OBJECT (trans, "caps are new");
/* we have new caps, see if we can proxy downstream */
>> if (gst_pad_peer_accept_caps (pad, newcaps)) {
/* peer accepts the caps, return a buffer in this format */
GST_DEBUG_OBJECT (trans, "peer accepted new caps");
which is taking ~40ms/frame.
This patch does two things. (1) if the buffer returned from pad_alloc() has
new caps, trigger the decision whether to proxy the buffer-alloc to be
revisited, and (2) disable proxy if peer does not accept new caps. (The first
part may not be strictly needed, but seemed like a good idea.)
Note that this issue would not arise except in case of downstream elements
who have on their template-caps, some that would be suitable for pass-through,
but at runtime pick more restrictive caps (for ex, after querying a driver for
what formats it actually supports).
Tim-Philipp Müller [Tue, 27 Jul 2010 12:30:51 +0000 (14:30 +0200)]
info: fix compilation on windows
Fix mismatched brackets (#625295).
Thiago Santos [Tue, 27 Jul 2010 10:21:19 +0000 (07:21 -0300)]
gstdatetime: Fix localtime usage
localtime only takes one parameter and returns a statically
allocated tm struct. Use it correctly.
Fixes #625368
Thiago Santos [Mon, 29 Mar 2010 21:05:40 +0000 (18:05 -0300)]
basetransform: Try suggesting caps on bad caps pad_alloc
When basetransform received an unsupported caps on pad_alloc
it just returned not-negotiated. This patch makes it query
the allowed caps between his sinkpad and upstream's srcpad
to find a caps to suggest.
This happens when dinamically switching pipeline elements
and upstream pad_allocs with the previous caps that was
being used.
Fixes #614296
Tim-Philipp Müller [Mon, 26 Jul 2010 16:53:57 +0000 (18:53 +0200)]
info: flush again after every line of debug output
g_printerr() used to do this for us. Also use libc's fprintf() functions,
to make sure the stderr pointer we use is actually compatible with the
libc linked against by GStreamer (which apparently may not always be the
same as what GLib is linked against on windows), and we don't need the
functionality ensured by g_fprintf().
Fixes #625295.
Tim-Philipp Müller [Mon, 26 Jul 2010 16:53:35 +0000 (18:53 +0200)]
po: update for new strings
Thiago Santos [Wed, 23 Jun 2010 14:31:33 +0000 (11:31 -0300)]
gstvalue: Adds tests for datetime
Adds tests for datetime fields in gstvalue tests
Fixes #594504
Thiago Santos [Wed, 23 Jun 2010 14:30:02 +0000 (11:30 -0300)]
gststructure: Adds datetime getter function
Adds gst_structure_get_date_time function
API: gst_structure_get_date_time
Fixes #594504
Thiago Santos [Tue, 22 Jun 2010 02:42:44 +0000 (23:42 -0300)]
tag: Adds GST_TAG_DATE_TIME tag
Adds a new tag that represents a date and time a media was
created
API: GST_TAG_DATE_TIME
Fixes #594504
Thiago Santos [Thu, 22 Jul 2010 01:08:21 +0000 (22:08 -0300)]
taglist: Add datetime get functions
Adds _date_time_get and _date_time_get_index functions to
taglist.
API: gst_tag_list_get_date_time
API: gst_tag_list_get_date_time_index
Fixes #594504
Thiago Santos [Thu, 22 Jul 2010 01:04:23 +0000 (22:04 -0300)]
gstvalue: Adds datetime functions
Adds a datetime functions to gstvalue
Fixes #594504
Thiago Santos [Fri, 16 Jul 2010 17:09:12 +0000 (14:09 -0300)]
gstdatetime: Adds GstDateTime
Adds GstDateTime to represent dates + time + timezone
information.
Tests included.
API: GstDateTime
API: gst_date_time_get_day
API: gst_date_time_get_month
API: gst_date_time_get_year
API: gst_date_time_get_hour
API: gst_date_time_get_microsecond
API: gst_date_time_get_minute
API: gst_date_time_get_second
API: gst_date_time_get_time_zone_offset
API: gst_date_time_new
API: gst_date_time_new_local_time
API: gst_date_time_new_from_unix_epoch
API: gst_date_time_new_now_local_time
API: gst_date_time_new_now_utc
API: gst_date_time_ref
API: gst_date_time_unref
Fixes #594504
Sebastian Dröge [Mon, 26 Jul 2010 12:59:51 +0000 (14:59 +0200)]
gst: Fix usage of glib_check_version()
It returns NULL if the installed GLib version is as least as
new as the required version and some explanatory string otherwise.
Tim-Philipp Müller [Fri, 23 Jul 2010 19:46:10 +0000 (20:46 +0100)]
tools: make gst-inspect print the release date time stamp
Tim-Philipp Müller [Mon, 21 Jun 2010 16:34:49 +0000 (17:34 +0100)]
configure: use new AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO macro
Tim-Philipp Müller [Sun, 20 Jun 2010 00:55:00 +0000 (01:55 +0100)]
binaryregistry: save and load release date time in GstPluginDesc
https://bugzilla.gnome.org/show_bug.cgi?id=623040
Tim-Philipp Müller [Sat, 19 Jun 2010 23:33:36 +0000 (00:33 +0100)]
plugin: add release datetime field to GstPluginDesc and set it if GST_PACKAGE_RELEASE_DATETIME is defined
This is a string describing a date and/or date/time in a simple subset of
the ISO-8601 format, namely either "YYYY-MM-DD" or "YYYY-MM-DDTHH:MMZ" (with
'T' the date/time separator and the 'Z' indicating UTC).
The main purpose of this field is to keep track of plugin and element versions
on an absolute timeline, so it's possible to determine which one is newer when
comparing two date time numbers. This will allow us to express 'replaces'-type
relationships betweeen plugins and element factories in future, even across
different modules and plugin merges or splits (source module version numbers
aren't particularly useful here, since they can only meaningfully be compared
within the same module). It also allows applications and libraries to reliably
check that a plugin is recent enough without making assumptions about modules
or module versions.
We use a string here to keep things simple and clear, esp. on the build system
side of things.
https://bugzilla.gnome.org/show_bug.cgi?id=623040
Shixin Zeng [Tue, 20 Jul 2010 14:25:20 +0000 (09:25 -0500)]
tests: make *_get_type() in tests thread safe
Even if it shouldn't be needed here. See #623491.
Tim-Philipp Müller [Fri, 4 Jun 2010 10:24:59 +0000 (11:24 +0100)]
info: write debugging output to file if GST_DEBUG_FILE environment variable is set
This changes behaviour slightly in that we no longer output things
via g_printerr(), so any non-standard glib printerr handlers are no
longer called when GST_DEBUG is enabled. However, this seems not
really desirable in most cases anyway, and the GLib docs also say
that libraries should not use g_printerr() for logging.
Other stderr output (e.g. warnings, or application messages) will
of course not be captured in the log file this way.
GST_DEBUG_FILE=- will redirect debug output to stdout.
Edward Hervey [Tue, 20 Jul 2010 18:49:12 +0000 (20:49 +0200)]
gstpad: Assume pads are compatible if we don't have templates
This is the same behaviour as if we had a pad template caps of
GST_CAPS_ANY on any of the pads (i.e. the actual check will be done
during caps negotiation).
Sebastian Dröge [Sat, 17 Jul 2010 19:28:41 +0000 (21:28 +0200)]
basetransform: Allow the subclass to add new fields to caps when getting new caps from downstream
This was already done in all other cases where new caps are handled
except upstream negotiation.
Michael Bunk [Mon, 12 Jul 2010 12:39:00 +0000 (14:39 +0200)]
docs: fix some typos and add some missing links in the app dev manual
Fixes #624164.
Michael Bunk [Mon, 12 Jul 2010 12:22:50 +0000 (14:22 +0200)]
docs: fix typo on gst-inspect man page
See #624164.
Tim-Philipp Müller [Sat, 3 Jul 2010 14:08:12 +0000 (15:08 +0100)]
gstcheck: fix some silly list iteration code
g_list_length() is not the best way to check if a list is empty or not.
Tim-Philipp Müller [Fri, 16 Jul 2010 16:53:38 +0000 (17:53 +0100)]
registry: use GStatBuf unconditionally and add typedef for backwards compatibility
No need to clutter the code with #if #else #endif.
See #623875.
Sebastian Dröge [Fri, 16 Jul 2010 15:33:38 +0000 (17:33 +0200)]
structure: Use a const GstStructure * as parameter for some more gst_structure_get variants