summaryrefslogtreecommitdiffstats
path: root/gst/id3demux/id3v2frames.c
Commit message (Collapse)AuthorAgeFilesLines
* build: fprintf, sprintf, sscanf need stdio.hStefan Kost2009-10-071-0/+1
|
* Fix compile warnings with gcc 4.0.1.Alessandro Decina2009-09-221-1/+1
|
* id3demux: Try GST_*_TAG_ENCODING and locale encoding if tags are not UTF8LoneStar2009-08-091-2/+70
| | | | Fixes bug #499242.
* id3demux: sizes in ID3 v2.3 are unlikely to be sync-safe integersTim-Philipp Müller2009-08-071-1/+5
| | | | | | | 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.
* id3demux: fix parsing of unsync'ed ID3 v2.4 tags and framesTim-Philipp Müller2009-08-071-6/+22
| | | | | | | | | | | | | | | | 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.
* Use new utility functions in libgsttag to process coverart (#512333).Tim-Philipp Müller2008-06-041-84/+5
| | | | | | | Original commit message from CVS: * ext/flac/gstflacdec.c: (gst_flac_extract_picture_buffer): * gst/id3demux/id3v2frames.c: (parse_picture_frame): Use new utility functions in libgsttag to process coverart (#512333).
* Generate the image-type values correctly. Leave them out of the caps when ↵Jan Schmidt2008-01-111-8/+15
| | | | | | | | | | | | | | | outputting a "preview image" tag, since it ... Original commit message from CVS: * ext/flac/gstflacdec.c: (gst_flac_extract_picture_buffer): * gst/id3demux/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.
* gst/id3demux/id3v2frames.c: Make sure the ISO 639-X language code in ID3v2 ↵Tommi Myöhänen2008-01-091-5/+9
| | | | | | | | | | | | | 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/id3demux/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.
* gst/id3demux/id3v2frames.c: Parse WOAF frames and put the result into ↵Tim-Philipp Müller2007-12-141-0/+5
| | | | | | | | | | | GST_TAG_CONTACT, which is where it would end up... Original commit message from CVS: * gst/id3demux/id3v2frames.c: (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.
* gst/id3demux/: We don't want the same string multiple times in a tag list ↵Tim-Philipp Müller2007-11-141-7/+16
| | | | | | | | | | | | for the same tag ever, for any tag, not jus... Original commit message from CVS: * gst/id3demux/id3tags.c: * gst/id3demux/id3tags.h: * gst/id3demux/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.
* gst/id3demux/id3v2frames.c: Extract license/copyright URIs from ID3v2 WCOP ↵Jason Kivlighn2007-10-111-0/+57
| | | | | | | | | | | | | | frames (Fixes #447000). Original commit message from CVS: Based on patch by: Jason Kivlighn <jkivlighn gmail com> * gst/id3demux/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.
* gst/id3demux/: Port ID3 tag demuxer over to the new GstTagDemux in -base ↵Tim-Philipp Müller2007-10-061-2/+0
| | | | | | | | | | | | | | (now would be a good time to test re-importi... Original commit message from CVS: * gst/id3demux/gstid3demux.c: * gst/id3demux/gstid3demux.h: * gst/id3demux/id3tags.c: * gst/id3demux/id3tags.h: * gst/id3demux/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).
* gst/id3demux/id3v2frames.c: Fix parsing of ID3 v2.2.0 PIC frames. Only in ↵Tim-Philipp Müller2007-03-121-7/+32
| | | | | | | | | | | | version >= 2.3.0 is the image format a vari... Original commit message from CVS: * gst/id3demux/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'.
* gst/id3demux/: Do not convert obsolete TDA/TDAT frames to TDRC frames, ↵Tim-Philipp Müller2007-03-061-4/+26
| | | | | | | | | | | | | | | otherwise the four-digit number will be interp... Original commit message from CVS: * gst/id3demux/id3tags.c: (id3demux_id3v2_frames_to_tag_list): * gst/id3demux/id3tags.h: * gst/id3demux/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.
* gst/id3demux/id3v2frames.c: Make sure that g_free always gets called on the ↵René Stadler2006-11-191-7/+16
| | | | | | | | | | | | same pointer that was returned by g_mallo... Original commit message from CVS: * gst/id3demux/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>
* gst/id3demux/id3v2frames.c: We require a -base more recent than 0.10.9, so ↵Tim-Philipp Müller2006-11-011-3/+0
| | | | | | | | | | | | | | | it's safe to use Original commit message from CVS: * gst/id3demux/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.
* Printf format fixes.Tim-Philipp Müller2006-10-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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/id3demux/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.
* gst/id3demux/id3v2frames.c: If strings in text fields are marked ISO8859-1, ↵Jan Schmidt2006-08-221-6/+9
| | | | | | | | | | | but contain valid UTF-8 already, then han... Original commit message from CVS: * gst/id3demux/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)
* configure.ac: Require CVS of GStreamer core and -base (forTim-Philipp Müller2006-08-161-12/+30
| | | | | | | | | | | | | | 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/id3demux/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).
* gst/id3demux/id3v2frames.c: Set image type from APIC frame as "image-type" ↵Tim-Philipp Müller2006-06-221-3/+9
| | | | | | | | | field of GST_TAG_IMAGE buffer caps (#344605). Original commit message from CVS: * gst/id3demux/id3v2frames.c: (parse_picture_frame): Set image type from APIC frame as "image-type" field of GST_TAG_IMAGE buffer caps (#344605).
* gst/id3demux/id3v2frames.c: Extract images from ID3v2 tags (APIC frames). ↵Tim-Philipp Müller2006-06-111-1/+169
| | | | | | | | | | | | Fixes #339704. Original commit message from CVS: * gst/id3demux/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).
* gst/id3demux/id3v2frames.c: A track/volume number or count of 0 does not ↵Tim-Philipp Müller2006-05-281-5/+5
| | | | | | | | | | make sense, just ignore it along with negati... Original commit message from CVS: * gst/id3demux/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).
* gst/id3demux/id3v2frames.c: Don't output any tag when we encounter a ↵Jan Schmidt2006-05-191-32/+25
| | | | | | | | | | negative track number - the tag type is uint, so... Original commit message from CVS: * gst/id3demux/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)
* gst/autodetect/: Make the name of the child element be based on the name of ↵Jan Schmidt2006-05-161-43/+69
| | | | | | | | | | | | | | | | | | the parent, so that debug output is more ... 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/id3demux/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
* gst/id3demux/id3v2frames.c: Some more debug info. No need to check whether ↵Tim-Philipp Müller2006-05-121-6/+12
| | | | | | | | | | the string returned by g_convert() is real... Original commit message from CVS: * gst/id3demux/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.
* gst/id3demux/id3v2frames.c: Fix parsing of numeric genre strings some more, ↵Jan Schmidt2006-05-101-2/+17
| | | | | | | | | | | | by ensuring that we only try and parse st... Original commit message from CVS: * gst/id3demux/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
* gst/id3demux/id3v2frames.c: Recognise and skip any byte order marker (BOM) inTim-Philipp Müller2006-04-281-0/+24
| | | | | | | | Original commit message from CVS: * gst/id3demux/id3v2frames.c: (has_utf16_bom), (parse_split_strings): Recognise and skip any byte order marker (BOM) in UTF-16 strings.
* ext\jpeg\smokecodec.c: use of GST_DEBUG instead of DEBUG(a...) for WIN32Sébastien Moutte2006-03-301-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* gst/id3demux/id3v2frames.c: We only care about gain and peak data for the ↵Tim-Philipp Müller2006-03-161-3/+5
| | | | | | | | | master volume. Original commit message from CVS: * gst/id3demux/id3v2frames.c: (parse_relative_volume_adjustment_two): We only care about gain and peak data for the master volume.
* gst/id3demux/id3v2frames.c: Read replay gain tags (#323721).Tim-Philipp Müller2006-03-161-8/+108
| | | | | | | | Original commit message from CVS: * gst/id3demux/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).
* configure.ac: Bump -base requirement to 0.10.5 for ↵Tim-Philipp Müller2006-03-141-1/+91
| | | | | | | | | | | | | | 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/id3demux/gstid3demux.c: (plugin_init): * gst/id3demux/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.
* gst/id3demux/: Handle 0 data size in otherwise valid frames.Jan Schmidt2006-02-181-1/+3
| | | | | | | | Original commit message from CVS: * gst/id3demux/id3tags.c: (id3demux_id3v2_frames_to_tag_list): * gst/id3demux/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
* gst/id3demux/id3v2frames.c: Add more validation to ensure that a char ↵Jan Schmidt2006-02-131-33/+35
| | | | | | | | | | encoding conversion produced a valid UTF-8 string. Original commit message from CVS: * gst/id3demux/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.
* gst/id3demux/id3v2frames.c: Adjust for data length indicators when parsing ↵Jan Schmidt2006-02-041-9/+14
| | | | | | | | | | | | (Fixes #329810) Original commit message from CVS: * gst/id3demux/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.
* gst/id3demux/id3v2frames.c: Never output a tag with a null contents string.Jan Schmidt2006-02-031-3/+15
| | | | | | | | Original commit message from CVS: * gst/id3demux/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.
* gst/id3demux/id3v2frames.c: Never trust ANY information encoded in a media ↵Jan Schmidt2006-01-251-0/+11
| | | | | | | | | file, especially when it's giving you size... Original commit message from CVS: * gst/id3demux/id3v2frames.c: (id3demux_id3v2_parse_frame): Never trust ANY information encoded in a media file, especially when it's giving you sizes. (Fixes #328452)
* gst/id3demux/id3v2frames.c: Remove errant break statement, and fix ↵Jan Schmidt2006-01-231-4/+3
| | | | | | | | | compilation with older GCC. Original commit message from CVS: * gst/id3demux/id3v2frames.c: (id3v2_tag_to_taglist): Remove errant break statement, and fix compilation with older GCC.
* gst/id3demux/: Rewrite parsing of text tags to handle multiple NULL ↵Jan Schmidt2006-01-231-83/+229
| | | | | | | | | | | | | | | | | terminated strings. Parse numeric genre strings a... Original commit message from CVS: * gst/id3demux/id3tags.c: (id3demux_read_id3v2_tag): * gst/id3demux/id3tags.h: * gst/id3demux/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.
* gst/id3demux/id3v2frames.c: Fix compilation of id3demux when zlib is not ↵Sergey Scobich2006-01-151-0/+6
| | | | | | | | | present. Original commit message from CVS: * gst/id3demux/id3v2frames.c: (id3demux_id3v2_parse_frame): Fix compilation of id3demux when zlib is not present. (Fixes #326602; patch by: Sergey Scobich)
* gst/id3demux/gstid3demux.c: Add gst_element_no_more_pads() for proper ↵Edward Hervey2006-01-061-5/+5
| | | | | | | | | | | | | | decodebin behaviour. Original commit message from CVS: * gst/id3demux/gstid3demux.c: (gst_id3demux_add_srcpad): Add gst_element_no_more_pads() for proper decodebin behaviour. * gst/id3demux/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.
* configure.ac: Check for optional dependency on zlib for id3demuxJan Schmidt2005-12-181-0/+382
Original commit message from CVS: * configure.ac: Check for optional dependency on zlib for id3demux * gst/id3demux/Makefile.am: * gst/id3demux/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/id3demux/gstid3demux.h: * gst/id3demux/id3tags.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/id3demux/id3tags.h: * gst/id3demux/id3v2.4.0-frames.txt: * gst/id3demux/id3v2.4.0-structure.txt: * gst/id3demux/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