Commit graph

418 commits

Author SHA1 Message Date
Wim Taymans d3b93e839a tagdemux: port to 0.11 2011-08-17 10:57:52 +02:00
Wim Taymans 33467d9629 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	ext/pango/gsttextoverlay.c
	ext/theora/gsttheoradec.c
	gst/adder/gstadder.c
	gst/adder/gstadder.h
	gst/audioresample/gstaudioresample.c
	gst/encoding/gstencodebin.c
	gst/playback/gstdecodebin.c
	gst/playback/gstdecodebin2.c
	tests/check/elements/decodebin2.c
	tests/check/elements/playbin-compressed.c
	win32/common/libgsttag.def
2011-08-16 18:01:14 +02:00
Tim-Philipp Müller 6d875c5ccd tag: id3: avoid some more relocations in genre table 2011-08-16 12:27:25 +01:00
Tim-Philipp Müller 685eb3b954 tag: id3v2: add specs to git for reference 2011-08-15 00:10:35 +01:00
Tim-Philipp Müller 169c5033f0 tag: id3v2: avoid some relocations, make table static 2011-08-15 00:10:34 +01:00
Tim-Philipp Müller f25c715104 tag: id3v2: add debug category for ID3 tag parsing 2011-08-15 00:10:34 +01:00
Mark Nauwelaerts 08e6b5c54e tag: id3v2: add id3v2 tag parsing helpers
https://bugzilla.gnome.org/show_bug.cgi?id=654388
2011-08-15 00:10:34 +01:00
Stefan Kost 4f042aeb1a tag: id3v2: return ID3TAGS_BROKEN_TAG for unsupported versions
This prevents us for trying to work with a NULL taglist.
2011-08-15 00:10:34 +01:00
Erich Schubert afe6ee7f3c tag: id3v2: fix parsing of ID3v2.4 genre frames with multiple genres
We'd only extract the first genre (multiple times) instead of all
genres.

https://bugzilla.gnome.org/show_bug.cgi?id=638535
2011-08-15 00:10:34 +01:00
Edward Hervey d2cec9e102 tag: id3v2: Sanitize id3 frame names
This is similar to what is done in qtdemux. Avoids providing invalid
structure/tags names
2011-08-15 00:10:34 +01:00
Tim-Philipp Müller 366ed8edb4 tag: id3v2: fix parsing of unsynced frames with data length indicator
Fixes bug #614158.
2011-08-15 00:10:34 +01:00
Benjamin Otte 50a6cb5450 Add -Wwrite-strings to the configure flags
... and fix all warnings
2011-08-15 00:10:34 +01:00
Tim-Philipp Müller e4752b52b8 tag: id3v2: prefer two letter ISO 639-1 code for extended comment 2011-08-15 00:10:34 +01:00
Josep Torra ad10b0185a tag: id3v2: fixes warnings building on macosx
Another round on the formating of that debug line.
2011-08-15 00:10:33 +01:00
Stefan Kost aa6ff34c57 tag: id3v2: cast pointer math results to glong 2011-08-15 00:10:33 +01:00
Stefan Kost dd3826a3a6 tag: id3v2: don't cast, but use the right format specified instead
This correct some of the previous macos fixes.
2011-08-15 00:10:33 +01:00
Josep Torra 67fabdb461 tag: id3v2: fix printf warnings on macosx 2011-08-15 00:10:33 +01:00
Stefan Kost ed05fcfb2c tag: id3v2: fprintf, sprintf, sscanf need stdio.h 2011-08-15 00:10:33 +01:00
Alessandro Decina 4a885b094f tag: id3v2: Fix compile warnings with gcc 4.0.1. 2011-08-15 00:10:33 +01:00
LoneStar 687055c852 tag: id3v2: Try GST_*_TAG_ENCODING and locale encoding if tags are not UTF8
Fixes bug #499242.
2011-08-15 00:10:32 +01:00
Tim-Philipp Müller 09b26dbf5c tag: id3v2: sizes in ID3 v2.3 are unlikely to be sync-safe integers
In ID3 v2.3 compressed frames will have a 4-byte data length indicator
after the frame header to indicate the size of the decompressed data.
This integer is unlikely to be a sync-safe integer for v2.3 tags,
only in v2.4 it's sync-safe.
2011-08-15 00:10:32 +01:00
Tim-Philipp Müller 891ed455e7 tag: id3v2: fix typo in debug message 2011-08-15 00:10:32 +01:00
Tim-Philipp Müller c2c21806ba tag: id3v2: fix parsing of unsync'ed ID3 v2.4 tags and frames
Reversing the unsynchronisation seems to work slightly differently
for ID3 v2.3 tags and v2.4 tags: v2.3 tags don't have syncsafe frame
sizes in the frame header, so the unsynchronisation is applied to
the whole frame data including all the frame headers. v2.4 frames
have sync-safe sizes, however, so the unsynchronisation only needs
to be applied to the actual frame data, and it seems that's what's
being done as well. So we need to undo the unsynchronisation on a
per-frame basis for v2.4 tags for things to work properly.

Fixes extraction of coverart/images from APIC frames in ID3 v2.4
tags (#588148).

Add unit test for this as well.
2011-08-15 00:10:32 +01:00
Tim-Philipp Müller 941d5080fa tag: id3v2: parse unsynchronised tags properly
We didn't handle unsynchronization at all up to now, which might have
caused frames to not be extracted - esp. frames after an APIC picture
frame. Fixes #577468.
2011-08-15 00:10:32 +01:00
Tim-Philipp Müller bd738166a7 tag: id3v2: pass the right size value for size of all frames to the parser
Frame data size is tag size adjusted for size of the tag header and
footer, not tag size including header and footer.
2011-08-15 00:10:32 +01:00
Tim-Philipp Müller a91620dbdf tag: id3v2: Use new utility functions in libgsttag to process coverart (#512333).
Original commit message from CVS:
* ext/flac/gstflacdec.c: (gst_flac_extract_picture_buffer):
* gst-libs/gst/tag/id3v2frames.c: (parse_picture_frame):
Use new utility functions in libgsttag to process coverart (#512333).
2011-08-15 00:10:32 +01:00
Jan Schmidt 904051e9d4 tag: id3v2: Generate the image-type values correctly. Leave them out of the caps when outputting a "preview image" tag, since it ...
Original commit message from CVS:
* ext/flac/gstflacdec.c: (gst_flac_extract_picture_buffer):
* gst-libs/gst/tag/id3v2frames.c: (parse_picture_frame):
Generate the image-type values correctly. Leave them out of the caps
when outputting a "preview image" tag, since it only makes sense
to have one of those - the type is irrelevant.
* sys/sunaudio/gstsunaudiomixerctrl.c:
(gst_sunaudiomixer_ctrl_open):
If we can, mark the mixer multiple open when we use it, in case
(for some reason) the process wants to open it again elsewhere.
2011-08-15 00:10:32 +01:00
Tommi Myöhänen 6d7fcfbcde tag: id3v2: Make sure the ISO 639-X language code in ID3v2 COMM frames so we don't end up with non-UT...
Original commit message from CVS:
Based on patch by: Tommi Myöhänen <ext-tommi.myohanen nokia com>
* gst-libs/gst/tag/id3v2frames.c: (parse_comment_frame):
Make sure the ISO 639-X language code in ID3v2 COMM frames
is actually valid UTF-8 (or rather: ASCII), so we don't end
up with non-UTF8 strings in tags if there's garbage in the
language field. Also make sure the language code is always
lower case. Fixes: #508291.
2011-08-15 00:10:31 +01:00
Tim-Philipp Müller d4b43861a2 tag: id3v2: Parse WOAF frames and put the result into GST_TAG_CONTACT, which is where it would end up...
Original commit message from CVS:
* tag: id3v2: (parse_url_link_frame):
Parse WOAF frames and put the result into GST_TAG_CONTACT,
which is where it would end up if the same information was
put in a vorbis comment (don't think it's worth adding a
new URI tag for this). Fixes #488112.
2011-08-15 00:10:31 +01:00
Tim-Philipp Müller 1dd5350109 tag: id3v2: We don't want the same string multiple times in a tag list for the same tag ever, for any tag, not jus...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2.c:
* gst-libs/gst/tag/id3v2.h:
* gst-libs/gst/tag/id3v2frames.c: (id3v2_tag_to_taglist):
We don't want the same string multiple times in a tag list for the
same tag ever, for any tag, not just for GST_TAG_GENRE, so make sure
this doesn't happen and remove special-case code for GST_TAG_GENRE.
2011-08-15 00:10:31 +01:00
Jason Kivlighn 66c4980024 tag: id3v2: Extract license/copyright URIs from ID3v2 WCOP frames (Fixes #447000).
Original commit message from CVS:
Based on patch by: Jason Kivlighn  <jkivlighn gmail com>
* gst-libs/gst/tag/id3v2frames.c:
Extract license/copyright URIs from ID3v2 WCOP frames
(Fixes #447000).
* tests/check/elements/id3demux.c:
* tests/files/Makefile.am:
* tests/files/id3-447000-wcop.tag:
Add simple unit test.
2011-08-15 00:10:31 +01:00
Tim-Philipp Müller 2ff93c3826 tag: id3v2: Port ID3 tag demuxer over to the new GstTagDemux in -base (now would be a good time to test re-importi...
Original commit message from CVS:
* gst-libs/gst/tag/gstid3demux.c:
* gst-libs/gst/tag/gstid3demux.h:
* gst-libs/gst/tag/id3v2.c:
* gst-libs/gst/tag/id3v2.h:
* gst-libs/gst/tag/id3v2frames.c:
Port ID3 tag demuxer over to the new GstTagDemux in -base
(now would be a good time to test re-importing your music
collection).
2011-08-15 00:10:31 +01:00
Tim-Philipp Müller 0277ee0b79 tag: id3v2: Fix parsing of ID3 v2.2.0 PIC frames. Only in version >= 2.3.0 is the image format a vari...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (parse_picture_frame):
Fix parsing of ID3 v2.2.0 PIC frames. Only in version >= 2.3.0 is
the image format a variable-length NUL-terminated string; in
versions before that the image format is a fixed-length string of
3 characters (see #348644 for a sample tag).
Also make supplied mime type lower-case and fix up 'jpg' to 'jpeg'.
2011-08-15 00:10:31 +01:00
Tim-Philipp Müller c76c78670d tag: id3v2: Do not convert obsolete TDA/TDAT frames to TDRC frames, otherwise the four-digit number will be interp...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2.c: (id3demux_id3v2_frames_to_tag_list):
* gst-libs/gst/tag/id3v2.h:
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame),
(parse_obsolete_tdat_frame):
Do not convert obsolete TDA/TDAT frames to TDRC frames, otherwise
the four-digit number will be interpreted as a year, whereas it is
month and day in DDMM format. Instead, parse TDAT frames and fix up
the date in the GST_TAG_DATE tag later if we also extracted a year.
Fixes #407349.
2011-08-15 00:10:30 +01:00
René Stadler 763eea481e tag: id3v2: Make sure that g_free always gets called on the same pointer that was returned by g_mallo...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame):
Make sure that g_free always gets called on the same pointer that was
returned by g_malloc.  Fixes #376594.
Do not leak memory if decompressed size is wrong.
Remove unneeded check of return value of g_malloc.
Patch by: René Stadler <mail@renestadler.de>
2011-08-15 00:10:30 +01:00
Tim-Philipp Müller 07feb53dbd tag: id3v2: We require a -base more recent than 0.10.9, so it's safe to use
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (parse_picture_frame):
We require a -base more recent than 0.10.9, so it's safe to use
GST_TYPE_TAG_IMAGE_TYPE unconditionally now.
* ext/dv/gstdvdec.c: (gst_dvdec_sink_event):
* ext/jpeg/gstjpegdec.c: (gst_jpeg_dec_sink_event):
Use _newsegment_full() now that we depend on a recent enough core.
* gst/wavparse/gstwavparse.c:
Remove cruft that we don't need any longer now that we depend on
a recent enough -base.
2011-08-15 00:10:30 +01:00
Tim-Philipp Müller bac37d9917 tag: id3v2: Printf format fixes.
Original commit message from CVS:
* ext/cairo/gsttimeoverlay.c:
(gst_cairo_time_overlay_update_font_height):
* ext/gdk_pixbuf/pixbufscale.c: (gst_pixbufscale_transform_caps):
* ext/jpeg/gstjpegdec.c: (gst_jpeg_dec_parse_image_data):
* ext/jpeg/gstjpegenc.c: (gst_jpegenc_chain):
* ext/jpeg/gstsmokedec.c: (gst_smokedec_chain):
* ext/jpeg/gstsmokeenc.c: (gst_smokeenc_chain):
* ext/libpng/gstpngdec.c: (user_endrow_callback):
* gst/auparse/gstauparse.c: (gst_au_parse_parse_header):
* gst/avi/gstavidemux.c: (gst_avi_demux_parse_superindex),
(gst_avi_demux_parse_subindex), (gst_avi_demux_parse_stream),
(gst_avi_demux_stream_data):
* gst/cutter/gstcutter.c: (gst_cutter_chain):
* gst/debug/efence.c: (gst_efence_buffer_alloc),
(gst_fenced_buffer_copy):
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame):
* gst/matroska/matroska-demux.c: (gst_matroska_demux_add_stream):
* gst/matroska/matroska-mux.c: (gst_matroska_mux_start):
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_send),
(gst_rtspsrc_handle_message):
* gst/wavparse/gstwavparse.c: (gst_wavparse_stream_headers):
* sys/ximage/ximageutil.c: (ximageutil_xcontext_get):
Printf format fixes.
2011-08-15 00:10:30 +01:00
Jan Schmidt 8bdde43777 tag: id3v2: If strings in text fields are marked ISO8859-1, but contain valid UTF-8 already, then han...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (parse_text_identification_frame),
(parse_insert_string_field):
If strings in text fields are marked ISO8859-1, but contain
valid UTF-8 already, then handle them as UTF-8 and ignore
the encoding. (#351794)
2011-08-15 00:10:30 +01:00
Tim-Philipp Müller 075ceac5e7 configure.ac: Require CVS of GStreamer core and -base (for
Original commit message from CVS:
* configure.ac:
Require CVS of GStreamer core and -base (for
GST_TAG_EXTENDED_COMMENT and gst_tag_parse_extended_comment()).
* ext/taglib/gstid3v2mux.cc:
Write extended comment tags properly (#348762).
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame),
(parse_comment_frame):
Extract COMM frames into extended comments, which makes it
easier to properly retain the description bit of the tag
and maintain this information when re-tagging (#348762).
2011-08-15 00:10:29 +01:00
Tim-Philipp Müller 2444a6459b tag: id3v2: Extract frames for ID3v2 versions prior to ID3v2.3.0 properly as well, and add the version to...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2.c:
(id3demux_add_id3v2_frame_blob_to_taglist):
Extract frames for ID3v2 versions prior to ID3v2.3.0 properly as
well, and add the version to the blob's buffer caps, since that
information will be needed for deserialisation later on (#348644).
2011-08-15 00:10:29 +01:00
Tim-Philipp Müller 3f1bc48d0b tag: id3v2: On second thought, it might be wiser and more efficient not to do tag registration from a streaming th...
Original commit message from CVS:
* gst-libs/gst/tag/gstid3demux.c: (plugin_init):
* gst-libs/gst/tag/id3v2.c:
(id3demux_add_id3v2_frame_blob_to_taglist):
* gst-libs/gst/tag/id3v2.h:
On second thought, it might be wiser and more efficient
not to do tag registration from a streaming thread.
2011-08-15 00:10:29 +01:00
Tim-Philipp Müller ba3a9d3b9d tag: id3v2: Put ID3v2 frames we can't parse as binary blobs into private tags, so that they are not lost ...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2.c:
(id3demux_add_id3v2_frame_blob_to_taglist),
(id3demux_id3v2_frames_to_tag_list):
Put ID3v2 frames we can't parse as binary blobs into private
tags, so that they are not lost when retagging, at least once
id3v2mux has been taught to re-inject those frames again.
See bug #334375.
2011-08-15 00:10:29 +01:00
Wim Taymans 488a625bb4 tag: id3v2: Don't use \n in debug lines
Original commit message from CVS:
* gst/avi/gstavidemux.c: (gst_avi_demux_parse_stream),
(gst_avi_demux_process_next_entry):
Fix some leaks.
* gst-libs/gst/tag/id3v2.c: (id3demux_id3v2_frames_to_tag_list):
Don't use \n in debug lines.
2011-08-15 00:10:29 +01:00
Tim-Philipp Müller f0a1b71dfe tag: id3v2: Set image type from APIC frame as "image-type" field of GST_TAG_IMAGE buffer caps (#344605).
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (parse_picture_frame):
Set image type from APIC frame as "image-type" field
of GST_TAG_IMAGE buffer caps (#344605).
2011-08-15 00:10:29 +01:00
Tim-Philipp Müller 1cc10b3611 tag: id3v2: Extract images from ID3v2 tags (APIC frames). Fixes #339704.
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame),
(scan_encoded_string), (parse_picture_frame):
Extract images from ID3v2 tags (APIC frames). Fixes #339704.
* configure.ac:
Require core >= 0.10.8 (for GST_TAG_IMAGE and
GST_TAG_PPEVIEW_IMAGE used in the patch above).
2011-08-15 00:10:29 +01:00
Tim-Philipp Müller 6f5e16f4ba tag: id3v2: A track/volume number or count of 0 does not make sense, just ignore it along with negati...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (id3v2_tag_to_taglist):
A track/volume number or count of 0 does not make sense,
just ignore it along with negative numbers (a tag might
only contain a track count without a track number).
2011-08-15 00:10:28 +01:00
Jan Schmidt 7e7ee7278b tag: id3v2: Don't output any tag when we encounter a negative track number - the tag type is uint, so...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (id3v2_tag_to_taglist):
Don't output any tag when we encounter a negative track number - the
tag type is uint, so we end up outputting huge positive numbers
instead. (Fixes: #342029)
2011-08-15 00:10:28 +01:00
Jan Schmidt 5b67108b7d tag: id3v2: Rework string parsing to always walk over BOM markers in UTF16 strings, using the endianness indicated by the innermost one ...
Original commit message from CVS:
* gst/autodetect/gstautoaudiosink.c:
(gst_auto_audio_sink_find_best):
* gst/autodetect/gstautovideosink.c:
(gst_auto_video_sink_find_best):
Make the name of the child element be based on the name of the
parent, so that debug output is more useful.
* gst-libs/gst/tag/id3v2frames.c: (find_utf16_bom),
(parse_insert_string_field), (parse_split_strings):
Rework string parsing to always walk over BOM markers in UTF16
strings, using the endianness indicated by the innermost one,
then trying the opposite endianness if that fails to convert
to valid UTF-8. Fixes #341774
2011-08-15 00:10:28 +01:00
Tim-Philipp Müller 2fd7d6c3eb tag: id3v2: Some more debug info. No need to check whether the string returned by g_convert() is real...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (parse_insert_string_field):
Some more debug info. No need to check whether the string
returned by g_convert() is really UTF-8 - either it is or
we get NULL returned.
2011-08-15 00:10:28 +01:00
Jan Schmidt 9f4827af39 tag: id3v2: Fix parsing of numeric genre strings some more, by ensuring that we only try and parse st...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (id3v2_genre_fields_to_taglist):
Fix parsing of numeric genre strings some more, by ensuring that
we only try and parse strings that a) Start with '(' and b) Consist
only of digits.
Also, when finding an escaping '((' sequence, bust it back to '(' by
swallowing the first parenthesis
2011-08-15 00:10:28 +01:00
Tim-Philipp Müller 1b885bafba tag: id3v2: Recognise and skip any byte order marker (BOM) in
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (has_utf16_bom),
(parse_split_strings):
Recognise and skip any byte order marker (BOM) in
UTF-16 strings.
2011-08-15 00:10:28 +01:00
Alex Lancaster e3aa8b3163 tag: id3v2: Recognise TCO (Genre) tags in ID3v2.2
Original commit message from CVS:
* gst-libs/gst/tag/id3v2.c:
Recognise TCO (Genre) tags in ID3v2.2. Patch by Alex Lancaster
(Fixes #338713)
2011-08-15 00:10:27 +01:00
Sébastien Moutte 571d8f9d86 tag: id3v2: use of GST_DEBUG instead of DEBUG(a...) for WIN32
Original commit message from CVS:
* ext\jpeg\smokecodec.c:
use of GST_DEBUG instead of DEBUG(a...) for WIN32
* ext\speex\gstspeexenc.c: (gst_speexenc_set_header_on_caps):
move first instruction after all variables declarations
* gst\alpha\gstalpha.c:
* gst\effectv\gstshagadelic.c:
* gst\smpte\paint.c:
* gst\videofilter\gstvideobalance.c:
define M_PI if it's not defined (it's not defined on WIN32)
* gst\cutter\gstcutter.c: (gst_cutter_chain):
* gst\id3demux\id3v2frames.c: (parse_relative_volume_adjustment_two):
* gst\level\gstlevel.c: (gst_level_set_property), (gst_level_transform_ip):
* gst\matroska\matroska-demux.c: (gst_matroska_demux_parse_info),
(gst_matroska_demux_video_caps):
* gst\matroska\matroska-mux.c: (gst_matroska_mux_start), (gst_matroska_mux_finish):
* gst\wavparse\gstwavparse.c: (gst_wavparse_stream_data):
use gst_guint64_to_gdouble for conversions
* gst\goom\filters.c: (setPixelRGB_):
fix a debug which was using undefined variable
* gst\level\gstlevel.c: (gst_level_set_caps), (gst_level_transform_ip):
* gst\matroska\ebml-read.c: (gst_ebml_read_sint):
replace LL suffix with L suffix (LL isn't supported by MSVC6.0)
* win32/vs6:
add vs6 projects files for most of plugins-good
2011-08-15 00:10:27 +01:00
Jan Schmidt a2e391cb68 tag: id3v2: Don't attempt typefinding on too-short buffers that have been completely trimmed away.
Original commit message from CVS:
* gst/apetag/gsttagdemux.c: (gst_tag_demux_chain):
* gst-libs/gst/tag/gstid3demux.c: (gst_id3demux_chain):
Don't attempt typefinding on too-short buffers that have been
completely trimmed away.
* gst-libs/gst/tag/id3v2.c: (id3demux_read_id3v2_tag):
Improve the debug output
2011-08-15 00:10:27 +01:00
Tim-Philipp Müller 17be9f715b tag: id3v2: We only care about gain and peak data for the master volume.
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c:
(parse_relative_volume_adjustment_two):
We only care about gain and peak data for the master volume.
2011-08-15 00:10:27 +01:00
Tim-Philipp Müller 84cc22cacc tag: id3v2: Read replay gain tags
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame),
(parse_id_string), (parse_unique_file_identifier),
(parse_relative_volume_adjustment_two), (id3v2_tag_to_taglist):
Read replay gain tags (#323721).
2011-08-15 00:10:27 +01:00
Tim-Philipp Müller d8900f72b5 configure.ac: Bump -base requirement to 0.10.5 for gst_tag_from_id3_user_tag(), used by id3demux.
Original commit message from CVS:
* configure.ac:
Bump -base requirement to 0.10.5 for gst_tag_from_id3_user_tag(),
used by id3demux.
* gst-libs/gst/tag/gstid3demux.c: (plugin_init):
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame),
(parse_user_text_identification_frame),
(parse_unique_file_identifier):
Add support for UFID and TXXX frames and extract musicbrainz tags.
2011-08-15 00:10:27 +01:00
Jan Schmidt dbcf8fc320 tag: id3v2: Handle 0 data size in otherwise valid frames.
Original commit message from CVS:
* gst-libs/gst/tag/id3v2.c: (id3demux_id3v2_frames_to_tag_list):
* gst-libs/gst/tag/id3v2frames.c: (id3v2_genre_fields_to_taglist):
Handle 0 data size in otherwise valid frames.
Handle numeric strings in 2.4.0 even when not in parentheses
2011-08-15 00:10:27 +01:00
Jan Schmidt e4af0fe41f tag: id3v2: 3 2.3.0 used synch-safe integers for the tag size, but not for the frame size. (Fixes #331368)
Original commit message from CVS:
* gst-libs/gst/tag/id3v2.c: (id3demux_id3v2_frames_to_tag_list):
ID3 2.3.0 used synch-safe integers for the tag size, but not for the
frame size. (Fixes #331368)
2011-08-15 00:10:27 +01:00
Jan Schmidt dc5506d372 tag: id3v2: Add more validation to ensure that a char encoding conversion produced a valid UTF-8 string.
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (parse_insert_string_field),
(parse_split_strings):
Add more validation to ensure that a char encoding conversion
produced a valid UTF-8 string.
2011-08-15 00:10:27 +01:00
Jan Schmidt 05a5fd1e51 tag: id3v2: Adjust for data length indicators when parsing (Fixes #329810)
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame),
(parse_split_strings):
Adjust for data length indicators when parsing (Fixes #329810)
Fix stupid bug parsing UTF-8 tag text.
Output tag strings with multiple fields as multiple tags, so the
app gets all the data.
2011-08-15 00:10:27 +01:00
Jan Schmidt 207f8e9f23 tag: id3v2: Never output a tag with a null contents string.
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (parse_text_identification_frame),
(id3v2_tag_to_taglist), (id3v2_genre_string_to_taglist),
(id3v2_genre_fields_to_taglist):
Never output a tag with a null contents string.
2011-08-15 00:10:26 +01:00
Jan Schmidt 78aa922244 tag: id3v2: Someone should kick my butt. Remove ID3v1 tags from the end of the file.
Original commit message from CVS:

* gst-libs/gst/tag/gstid3demux.c: (gst_id3demux_chain),
(gst_id3demux_read_id3v1), (gst_id3demux_sink_activate),
(gst_id3demux_send_tag_event):
* gst-libs/gst/tag/id3v2.c: (id3demux_read_id3v1_tag):
Someone should kick my butt. Remove ID3v1 tags from the end of the
file.

Improve error messages. Send the TAG message as soon as we complete
typefinding, instead of waiting until we send the first buffer.
Downstream tag event is still sent before the first buffer.
2011-08-15 00:10:26 +01:00
Jan Schmidt fbd1cbe006 tag: id3v2: Never trust ANY information encoded in a media file, especially when it's giving you size...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame):
Never trust ANY information encoded in a media file, especially
when it's giving you sizes. (Fixes #328452)
2011-08-15 00:10:26 +01:00
Jan Schmidt 3a91d17b76 tag: id3v2: Remove errant break statement, and fix compilation with older GCC.
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (id3v2_tag_to_taglist):
Remove errant break statement, and fix compilation with
older GCC.
2011-08-15 00:10:26 +01:00
Jan Schmidt a6f7ebffa2 tag: id3v2: Rewrite parsing of text tags to handle multiple NULL terminated strings. Parse numeric genre strings a...
Original commit message from CVS:
* gst-libs/gst/tag/id3v2.c: (id3demux_read_id3v2_tag):
* gst-libs/gst/tag/id3v2.h:
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame),
(parse_comment_frame), (parse_text_identification_frame),
(id3v2_tag_to_taglist), (id3v2_are_digits),
(id3v2_genre_string_to_taglist), (id3v2_genre_fields_to_taglist),
(parse_split_strings), (free_tag_strings):
Rewrite parsing of text tags to handle multiple NULL terminated
strings. Parse numeric genre strings and ID3v2 type
"(3)(6)Alternative" style genre strings.
Parse dates that are only YYYY or YYYY-mm format.
2011-08-15 00:10:26 +01:00
Sergey Scobich a9c6822e3f tag: id3v2: Fix compilation of id3demux when zlib is not present.
Original commit message from CVS:
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame):
Fix compilation of id3demux when zlib is not present.
(Fixes #326602; patch by: Sergey Scobich)
2011-08-15 00:10:25 +01:00
Edward Hervey f34424e933 tag: id3v2: Add gst_element_no_more_pads() for proper decodebin behaviour.
Original commit message from CVS:
* gst-libs/gst/tag/gstid3demux.c: (gst_id3demux_add_srcpad):
Add gst_element_no_more_pads() for proper decodebin behaviour.
* gst-libs/gst/tag/id3v2frames.c: (parse_comment_frame),
(parse_text_identification_frame), (parse_split_strings):
Failure to decode some tags is not a GST_ERROR() but a
GST_WARNING()
When iterating over a chunk of text, check that we haven't gone too
far.
2011-08-15 00:10:25 +01:00
Jan Schmidt a2415c8edb tag: id3v2: If a broken tag has 0 bytes payload, at least still skip the 10 byte header
Original commit message from CVS:
* gst-libs/gst/tag/id3v2.c: (id3demux_read_id3v2_tag):
If a broken tag has 0 bytes payload, at least still skip
the 10 byte header
2011-08-15 00:10:25 +01:00
Jan Schmidt 83bffb642c tag: id3v2: all new LGPL id3 demuxer, can use zlib for compressed frames
Original commit message from CVS:
* configure.ac:
Check for optional dependency on zlib for id3demux

* gst-libs/gst/tag/Makefile.am:
* gst-libs/gst/tag/gstid3demux.c: (gst_gst_id3demux_get_type),
(gst_id3demux_base_init), (gst_id3demux_class_init),
(gst_id3demux_reset), (gst_id3demux_init), (gst_id3demux_dispose),
(gst_id3demux_add_srcpad), (gst_id3demux_remove_srcpad),
(gst_id3demux_trim_buffer), (gst_id3demux_chain),
(gst_id3demux_set_property), (gst_id3demux_get_property),
(id3demux_get_upstream_size), (gst_id3demux_srcpad_event),
(gst_id3demux_read_id3v1), (gst_id3demux_read_id3v2),
(gst_id3demux_sink_activate), (gst_id3demux_src_activate_pull),
(gst_id3demux_src_checkgetrange), (gst_id3demux_read_range),
(gst_id3demux_src_getrange), (gst_id3demux_change_state),
(gst_id3demux_pad_query), (gst_id3demux_get_query_types),
(simple_find_peek), (simple_find_suggest),
(gst_id3demux_do_typefind), (gst_id3demux_send_tag_event),
(plugin_init):
* gst-libs/gst/tag/gstid3demux.h:
* gst-libs/gst/tag/id3v2.c: (read_synch_uint),
(id3demux_read_id3v1_tag), (id3demux_read_id3v2_tag),
(id3demux_id3v2_frame_hdr_size), (convert_fid_to_v240),
(id3demux_id3v2_frames_to_tag_list):
* gst-libs/gst/tag/id3v2.h:
* gst-libs/gst/tag/id3v2.4.0-frames.txt:
* gst-libs/gst/tag/id3v2.4.0-structure.txt:
* gst-libs/gst/tag/id3v2frames.c: (id3demux_id3v2_parse_frame),
(parse_comment_frame), (parse_text_identification_frame),
(id3v2_tag_to_taglist), (parse_split_strings):
All new LGPL id3 demuxer. Can use zlib for compressed frames,
otherwise it discards them. Works on my test files.

* gst/wavparse/gstwavparse.c: (gst_wavparse_loop):
Don't send EOS to a non-existing srcpad
The debug category can be static
2011-08-15 00:09:53 +01:00
Thiago Santos 72b92af807 tag: exif: Check for utf8 before trying to convert
If the string is already on utf8, there is no need to
try to convert it, because it is useless and it might garble
the string.
2011-08-11 12:12:07 -03:00
Thiago Santos cd46e0ca13 tag: exif: Exif strings should be ascii
Use g_convert to turn all strings into extended ascii before writing
to the exif buffer and converting back from ascii to utf8 when
reading them.
2011-08-10 17:46:01 -03:00
Tim-Philipp Müller 7c1fef18ac tag: don't build helper programs that generate/update data by default
No point building these by default. Also, these generated files
should go into the srcdir, not the builddir in this case, since
they're version controlled.
2011-08-10 15:22:46 +01:00
Tim-Philipp Müller 3b2b96bc56 tag: fix stray printf in mklicensestables
Don't dump debug output to stdout.
2011-08-10 15:20:37 +01:00
Tim-Philipp Müller 12ab3c9204 tag: fix compilation of new licenses code with GLib versions < 2.28
Add local g_variant_lookup_value() fallback for now when compiling
against older GLib versions.
2011-08-10 15:06:59 +01:00
Tim-Philipp Müller 3e34c2da1c tag: add GType for GstTagLicenseFlags
API: gst_tag_license_flags_get_type()
2011-08-10 14:57:14 +01:00
Tim-Philipp Müller 2d1ffa68a9 xmptag: fix compiler warning in release mode
Fix compiler warning caused by g_assert_not_reached() being skipped
because releases are compiled with -DG_DISABLE_ASSERT.

https://bugzilla.gnome.org/show_bug.cgi?id=656264
2011-08-10 11:08:29 +01:00
Tim-Philipp Müller 25f8f6453e tag: add mklicensestables utility
Add (uninstalled) tool to create licenses-table.dat from liblicense's
RDF files. It's not very pretty and makes loats of assumptions about
the input, but should work. If things change, we can fix it then.

https://bugzilla.gnome.org/show_bug.cgi?id=646868
2011-08-10 10:34:20 +01:00
Tim-Philipp Müller c4bab487e7 tag: add convenience API to handle creative commons licenses
Based on liblicense's RDF files.

API: GstTagLicenseFlags
API: gst_tag_get_licenses()
API: gst_tag_get_license_flags()
API: gst_tag_get_license_nick()
API: gst_tag_get_license_title()
API: gst_tag_get_license_version()
API: gst_tag_get_license_description()
API: gst_tag_get_license_jurisdiction()

https://bugzilla.gnome.org/show_bug.cgi?id=646868
2011-08-10 10:33:47 +01:00
Josep Torra 5629ed74b3 Fix debug statements
Fixes build on MacOSX

Signed-off-by: Edward Hervey <edward.hervey@collabora.co.uk>
2011-08-10 11:15:41 +02:00
Vincent Penquerc'h c87f164eff gstvorbistag: map ENCODER Vorbis comment to application-name
What GStreamer calls encoder ("encoder used to encode this stream") is
stored in the vendor string in Vorbis/Theora/Kate and possibly others.
The Vorbis comment packet used in those streams uses ENCODER as the name
of the encoding program, which GStreamer calls application-name.

https://bugzilla.gnome.org/show_bug.cgi?id=656034
2011-08-06 18:36:00 +02:00
Tim-Philipp Müller e161334988 Add new GstTagMux base class
Hook up new tag muxing base class to build system.

https://bugzilla.gnome.org/show_bug.cgi?id=555437

API: GstTagMux
2011-07-29 10:26:07 +01:00
Tim-Philipp Müller b83c7e0a0e docs: add documentation for GstTagMux 2011-07-29 10:26:07 +01:00
Tim-Philipp Müller 2633692072 tagmux: require subclass to install sink pad template
Require the subclass to install both source and sink pad
templates. Also, print some warnings if the subclass doesn't
do that.

https://bugzilla.gnome.org/show_bug.cgi?id=555437
2011-07-29 10:26:07 +01:00
Tim-Philipp Müller 9f0745bab4 tagmux: const-ify GstTagList argument of render vfuncs 2011-07-29 10:26:07 +01:00
Tim-Philipp Müller db88b19f1e tagmux: fix up private base class header so it can be made public
Move private bits into a private struct, add some padding.

https://bugzilla.gnome.org/show_bug.cgi?id=555437
2011-07-29 10:26:06 +01:00
Michael Smith e16f2f891a tagmux: add support for end tags
Originally "id3tag: Add new id3 tagging plugin, supports v1, v2.3,
and v2.4." from gst-plugins-bad. This is an artificial bridge commit.
2011-07-29 10:26:06 +01:00
Sebastian Dröge b567db4155 ext: Don't use GST_DEBUG_FUNCPTR for GObject vfuncs 2011-07-29 10:26:06 +01:00
Julien Moutte 992cf09a5a Fix build on Mac OS X 10.5
Original commit message from CVS:
2007-11-20  Julien MOUTTE  <julien@moutte.net>

* gst-libs/gst/tag/gsttagmux.c: (gst_tag_lib_mux_render_tag),
(gst_tag_lib_mux_adjust_event_offsets):
* gst/qtdemux/qtdemux.c: (qtdemux_parse_theora_extension):
* sys/osxaudio/Makefile.am:
* sys/osxvideo/cocoawindow.h:
* sys/osxvideo/cocoawindow.m: Fix build on Mac OS X 10.5
2011-07-29 10:26:06 +01:00
Sebastian Dröge dcfd4027a4 Update my mail address.
Original commit message from CVS:
* ext/taglib/gstapev2mux.cc:
* ext/taglib/gstapev2mux.h:
* gst-libs/gst/tag/gsttagmux.c:
* tests/check/elements/apev2mux.c:
Update my mail address.
2011-07-29 10:26:06 +01:00
Sebastian Dröge b303e8e19e Add apev2mux element (#343122).
Original commit message from CVS:
Patch by: Sebastian Dröge  <mail at slomosnail de >
* docs/plugins/gst-plugins-good-plugins-docs.sgml:
* docs/plugins/gst-plugins-good-plugins-sections.txt:
* ext/taglib/Makefile.am:
* ext/taglib/gstapev2mux.cc:
* ext/taglib/gstapev2mux.h:
* ext/taglib/gstid3v2mux.cc:
* gst-libs/gst/tag/gsttagmux.c: (plugin_init):
* gst-libs/gst/tag/gsttagmux.h:
Add apev2mux element (#343122).
* tests/check/Makefile.am:
* tests/check/elements/apev2mux.c:
(test_taglib_apev2mux_create_tags),
(test_taglib_apev2mux_check_tags), (fill_mp3_buffer), (got_buffer),
(demux_pad_added), (test_taglib_apev2mux_check_output_buffer),
(test_taglib_apev2mux_with_tags), (GST_START_TEST),
(apev2mux_suite), (main):
Add unit test for apev2mux element.
2011-07-29 10:26:06 +01:00
James Doc Livingston e286dcec81 gst-libs/gst/tag/gsttagmux.c: Merge event tags and tag setter tags
correctly (#339918). Also, don't leak taglist in case...

Original commit message from CVS:
Patch by: James "Doc" Livingston  <doclivingston gmail com>
* gst-libs/gst/tag/gsttagmux.c: (gst_tag_lib_mux_render_tag):
Merge event tags and tag setter tags correctly (#339918). Also,
don't leak taglist in case of an error.
2011-07-29 10:26:06 +01:00
Thomas Vander Stichele 87e56b7713 docs/plugins/Makefile.am: also check .cc files for gtk-doc markup
Original commit message from CVS:

* docs/plugins/Makefile.am:
also check .cc files for gtk-doc markup
* configure.ac:
* docs/plugins/gst-plugins-good-plugins-docs.sgml:
* docs/plugins/gst-plugins-good-plugins-sections.txt:
* tests/check/Makefile.am:
* tests/check/elements/id3v2mux.c: (id3v2mux_suite), (main):
* ext/Makefile.am:
* ext/taglib/Makefile.am:
* ext/taglib/gstid3v2mux.h:
* gst-libs/gst/tag/gsttagmux.c:
* gst-libs/gst/tag/gsttagmux.h:
move taglib-based id3v2muxer to -good.  Fixes #336110.
2011-07-29 10:26:06 +01:00
Thomas Vander Stichele 400dc037fd small cleanups
Original commit message from CVS:
small cleanups
2011-07-29 10:26:06 +01:00
Tim-Philipp Müller 7ef4528676 ext/taglib/gsttaglib.cc: Post an error message on the bus in the
(extremely unlikely) case of an error.

Original commit message from CVS:
* ext/taglib/gsttaglib.cc:
Post an error message on the bus in the (extremely unlikely)
case of an error.
2011-07-29 10:26:06 +01:00
Tim-Philipp Müller 873f24298f ext/taglib/: Split the actual ID3v2 tag rendering code into its own
subclass.

Original commit message from CVS:
* ext/taglib/Makefile.am:
* ext/taglib/gstid3v2mux.cc:
* ext/taglib/gstid3v2mux.h:
* ext/taglib/gsttaglib.cc:
* ext/taglib/gsttaglib.h:
Split the actual ID3v2 tag rendering code into
its own subclass.
2011-07-29 10:26:06 +01:00
Thomas Vander Stichele 4ee80726bd pedantic cleanups
Original commit message from CVS:
pedantic cleanups
2011-07-29 10:26:06 +01:00
Thomas Vander Stichele 3446b35424 add taglib checks and docs
Original commit message from CVS:
add taglib checks and docs
2011-07-29 10:26:06 +01:00
Tim-Philipp Müller 4a3ff452dd ext/taglib/gsttaglib.*: Fix newsegment event handling a bit. We need
to cache the first newsegment event, because we ...

Original commit message from CVS:
* ext/taglib/gsttaglib.cc:
* ext/taglib/gsttaglib.h:
Fix newsegment event handling a bit. We need to
cache the first newsegment event, because we can't
adjust offsets yet when we get it, as we don't
know the size of the tag yet for sure at that point.
Also do some minor cleaning up here and there and add
some debug statements.
2011-07-29 10:26:05 +01:00
Tim-Philipp Müller 800c145a3a ext/taglib/gsttaglib.cc: We do not want to proxy the caps on the
sink pad; our source pad should have application/x-i...

Original commit message from CVS:
* ext/taglib/gsttaglib.cc:
We do not want to proxy the caps on the sink pad; our
source pad should have application/x-id3 caps; also,
don't use already-freed strings in debug messages;
finally, adjust buffer offsets on buffers sent out.
2011-07-29 10:26:05 +01:00