Variable was being written to and could cause crashes
if multiple elements were parsing xmp at the same time.
Moving it to local scope solves the problem.
This makes sure we do not touch the stream taglist once the pipeline has
been prerolled. Adding of stream tags happens in the pad event probe
which runs in a different thread from discoverer stream processing, so
modifying the tag list while discoverer might be processing it can
sometimes cause a crash.
https://bugzilla.gnome.org/show_bug.cgi?id=639778
This avoids a race where the timeout callback is scheduled to run but we
get sufficient information to finish discovery before actually getting
around to executing the callback. See the documentation of
g_source_is_destroyed() for more details.
https://bugzilla.gnome.org/show_bug.cgi?id=639730
This ensures that everything is properly cleaned up before the
GstDiscoverer object is freed. Specifically, it makes sure that we've
removed the async timeout callback before freeing the object to avoid a
potential crash later on.
https://bugzilla.gnome.org/show_bug.cgi?id=639755
Use LC_MESSAGES rather than LC_ALL. Save/load description as untranslated string
when using an English language locale. Strip locale information to the language,
so we don't save keys like description[fr_FR.UTF-8]=...
https://bugzilla.gnome.org/show_bug.cgi?id=638860
Makes things work again properly in uninstalled setups (and
presumably in installed setups where GStreamer is installed
into a non-standard prefix). Requires fixes from core git.
https://bugzilla.gnome.org/show_bug.cgi?id=639039
Need to pass libgstreamer-0.10 explicitly to linker, since we're
calling gst_init(), which in turn is needed because the encoding
target get_type() function calls gst_value_register().
https://bugzilla.gnome.org/show_bug.cgi?id=639039
Make sure to use the PKG_CONFIG_PATH set at configure time instead of
just relying on an env-var set one. This makes sure both g-ir-compiler
and g-ir-scanner use the same PKG_CONFIG_PATH for determining include
paths etc.
Observed a case where the sink went to null-state during the query,
hence the ringbuffer-pointer was NULL, causing a crash.
Moving the ringbuffer-check code until after the query, and hold the
lock during the check and while using the spec-values. It should not matter
to the query wether the ringbuffer is present or not, and it actually
gets a time bit more time to get the ringbuffer set up in this case!
Fixes#635231
When we have an invalid running-time (because we clipped, for example) use the
RTP base time for timestamping instead of generating wrong RTP timestamps.
with i686-apple-darwin10-gcc-4.2.1:
encoding-profile.h:134: warning: type qualifiers ignored on function return type
encoding-profile.c:240: warning: type qualifiers ignored on function return type
gstencodebin.c: In function 'next_unused_stream_profile':
gstencodebin.c:454: warning: format '%d' expects type 'int', but argument 8 has type 'GType'
gstencodebin.c:464: warning: format '%d' expects type 'int', but argument 8 has type 'GType'
gst_discoverer_discover_uri() expects the caller to unref the returned
GstDiscovererInfo object. The corresponding gtk-doc annotation was not
updated to reflect this.
We want to send the keealive message a little earlier than the timeout value
specifies. Scale this based on the value of the timeout instead of just assuming
5 seconds.
Because we should act before the rtsp server does a timeout, we
reduce the timeout-time with 5 seconds, this should be safe to always
keep te rtsp connection alive.
https://bugzilla.gnome.org/show_bug.cgi?id=633455
Use GstDiscoverer{Audio,Video}Info in getters like
gst_discoverer_{audio,video}_info_get_*(). This avoids the casts in the macros,
help language bindings and is more correct.
Force regeneration of marshal.[ch] files after prefix changes in
Makefile.am, to avoid build errors for those of us who don't
habitually make clean first.
Adds a tag to inform what mode was used by a camera to calculate
the picture capturing exposure
Also adds mapping to exif and tests
API: GST_TAG_CAPTURING_METERING_MODE
https://bugzilla.gnome.org/show_bug.cgi?id=631773
Adds new tag for tagging sharpness processing used
when capturing an image. Also maps it in the exif
tags.
Tests included.
API: GST_TAG_CAPTURING_SHARPNESS
https://bugzilla.gnome.org/show_bug.cgi?id=631773
There's no reason to make the marshaller public API. Don't install
pbutils-marshal.h header file and use prefix that makes sure the
symbol doesn't get exported.
So run-time bindings can introspect the names correctly (we abuse this
field as description field only in elements, not for public API
(where the description belongs into the gtk-doc chunk).
https://bugzilla.gnome.org/show_bug.cgi?id=629746
Add a new function called gst_rtp_buffer_list_from_buffer() that takes
a GstBuffer containing a RTP packets and spits out a GstBufferList
containing two buffers, one with the header and the other with the payload.
RFC 5285 describes a generic method to add multiple header extensions to RTP packets.
These functions parse these headers and return them, both for the one-byte header and the
two bytes headers.
This adds code to translate the profile_and_level indication from the
MPEG-4 video (ISO/IEC 14496-2) headers to a string profile/level. The
mappings are taken from the spec and Wireshark's code, and might need to
be expanded on.
https://bugzilla.gnome.org/show_bug.cgi?id=617314
API: gst_codec_utils_mpeg4video_get_profile()
API: gst_codec_utils_mpeg4video_get_level()
API: gst_codec_utils_mpeg4video_caps_set_level_and_profile()
This adds code to parse the first few bytes of H.264 sequence parameter
set in order to extract the profile and level as const strings. This
code was originally in both qtdemux and matroskademux.
https://bugzilla.gnome.org/show_bug.cgi?id=617314
API: gst_codec_utils_h264_get_level()
API: gst_codec_utils_h264_get_profile()
API: gst_codec_utils_h264_caps_set_level_and_profile()
This moves AAC profile detection to pbutils, and uses this in
typefindfunctions. This will also be used in qtdemux.
https://bugzilla.gnome.org/show_bug.cgi?id=617314
API: gst_codec_utils_aac_get_profile()
API: codec_utils_aac_caps_set_level_and_profile()
This allows us to add generic codec-specific functionality, like
extracting profile/level data from headers, without having to duplicate
code across demuxers and typefindfunctions.
As a starting point, this moves over AAC level extraction code from
typefindfunctions, so it can be reused in qtdemux, etc.
https://bugzilla.gnome.org/show_bug.cgi?id=617314
API: gst_codec_utils_aac_get_sample_rate_from_index()
API: gst_codec_utils_aac_get_level()
From gstinfo.h:
/* do not use this function, use the GST_DEBUG_CATEGORY_INIT macro */
GstDebugCategory *_gst_debug_category_new (const gchar * name,
And more importantly:
#pragma GCC poison _gst_debug_category_new
So this commit fixes --disable-gst-debug builds.
Make appsrc not set caps on buffers when its own caps is NULL.
This avoids calling make_metadata_writable on all buffers and
prevents losing buffer caps in case we are not replacing it
with something meaningful.
https://bugzilla.gnome.org/show_bug.cgi?id=630353
While the doc parser allows for certain variation, it is a good idea to not
use random characters here and there, but try to stick to the little markup
syntax there is.
Binding generators apparently need this as they can't really know
that the callback is guaranteed to be called exactly once and that
the user_data can be freed at the end of it.
And deprecate the gulong versions. This is to support platforms
where sizeof(unsigned long) < sizeof(void *). Fixes#627565.
API: Add gst_x_overlay_set_window_handle()
API: Deprecate: gst_x_overlay_set_xwindow_id()
API: Add gst_x_overlay_got_window_handle()
API: Deprecate: gst_x_overlay_got_xwindow_id()
API: Add GstXOverlay::set_window_handle()
API: Deprecate: GstXOverlay::set_xwindow_id()
There will always be only a single output buffer and if the
target caps have a different framerate than the input there
will be a negotiation error during conversion.
Add methods to convert between uri and sdpmessages, loosly based on
http://tools.ietf.org/html/draft-fujikawa-sdp-url-01
API: GstSDPMessage::gst_sdp_message_parse_uri
API: GstSDPMessage::gst_sdp_message_as_uri
Don't take an extra ref on the sink and source because that creates a reference
cycle. Instead, use the invalidate method of the clock when the sink and source
are freed. This way, we don't call into the time function anymore after the
objects are disposed.
This is pretty much an FAQ, so try to make the error message a bit
more helpful. Also, don't tell people to file a bug in bugzilla
about this (which is what happens if the default error message for
CORE_NEGOTIATION is used).
Adds mappings from:
GST_TAG_CAPTURING_EXPOSURE_PROGRAM -> ExposureProgram
GST_TAG_CAPTURING_EXPOSURE_MODE -> ExposureMode
GST_TAG_CAPTURING_SCENE_CAPTURE_TYPE -> SceneCaptureType
GST_TAG_CAPTURING_GAIN_ADJUSTMENT -> GainControl
GST_TAG_CAPTURING_WHITE_BALANCE -> WhiteBalance
GST_TAG_CAPTURING_CONTRAST -> Constrast
GST_TAG_CAPTURING_SATURATION -> Saturation
Also renames gst_tag_image_orientation_from_exif_value and
gst_tag_image_orientation_to_exif_value to remove the 'gst'
prefix and not including in the win32 defs.
Tests included.
Adds a new tag for informing if flash was used while
capturing an image and the flash mode selected by the
user during this capture
API: GST_TAG_CAPTURING_FLASH_FIRED
API: GST_TAG_CAPTURING_FLASH_MODE
https://bugzilla.gnome.org/show_bug.cgi?id=626651
When calling gobject-introspection scanner, make sure our own
freshly-built libs within the source tree (well, build dir) come
first in the PKG_CONFIG_PATH. May or may not help to make sure
that it doesn't pick up older external plugins-base libs (or
.gir files) from outside the source tree / build directory as
dependencies of the introspected lib instead of using the
stuff we just built in a sibling directory.
https://bugzilla.gnome.org/show_bug.cgi?id=623698
Change "Src" into "Source" (we use that elsewhere). I did not keept "Src" as it
is quite unlikely that someone plugs appsrc by searching the registry by classification.
Do not use the result of inner ifd's parsing to increment
the current tag index. The reasons are:
1) The function returns a boolean.
2) The inner ifd's tags are in a separate table, so they shouldn't
interfere with its parent ifd table parsing.
Makes the xmp helper lib aware that the tags can be simple,
sequences or bags (there is still struct and alt, but those
aren't handled yet). Adding this info makes serialization
and deserialization more consistent.
If we find a bag of tags of type string in the xmp packet, we
should concat them, this is not the ideal approach, but at
least works for now as we don't know what type of tag it
is (simple, structure, seq, alt or bag)
Everything in the xmp helper lib is initiallized once and on a thread
safe way, and after that there are only reads going on, no more
writing. Based on that, drop the locking.
So people can check what version of the gst-plugins-base libs they're
building against or linked against.
API: GST_PLUGINS_BASE_VERSION_MAJOR
API: GST_PLUGINS_BASE_VERSION_MINOR
API: GST_PLUGINS_BASE_VERSION_MICRO
API: GST_PLUGINS_BASE_VERSION_NANO
API: GST_CHECK_PLUGINS_BASE_VERSION
API: gst_plugins_base_version()
API: gst_plugins_base_version_string()
Elements usually use their own instance as instance data but the
clock can have a longer lifetime than their elements and the clock
doesn't own a reference of the element.
Fixes bug #623807.
Check for the state of the ringbuffer before doing the checks of the other
buffer properties, when we're not started, we don't care about those values.
Adds mappings for:
GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION
GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION
GST_TAG_GEO_LOCATION_MOVEMENT_SPEED
GST_TAG_GEO_LOCATION_ELEVATION
Does some refactoring in the code to reduce number of parameters
passed to functions
Tests included.
Adds exif helper lib functions to parse exif buffers from/to
taglists. Exif is tipically used in jpeg images, but it can
also be embedded into TIFF, AVI and WAV formats.
Adds a couple function to handle exif in tiff header structures, that is how
exif is embedded in jpeg and (obviously) in tiff.
API: gst_tag_list_to_exif_buffer
API: gst_tag_list_to_exif_buffer_with_tiff_header
API: gst_tag_list_from_exif_buffer
API: gst_tag_list_from_exif_buffer_with_tiff_header
Fixes#614872
This reverts commit cea2644ed8.
Many audio sink assume that they can create a clock in
the instance init function and it will be there forever
and not be cleared by the state change functions.
Adds GST_TAG_GEO_LOCATION_MOVEMENT_SPEED,
GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION and
GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION to xmp
mappings.
Tests included.