Commit Graph

127 Commits

Author SHA1 Message Date
David Goldwich
7a019dffe5 id3v2: add support for non-text and GEOB type tag frames
This extends the ID3v2 parser to allow for reading of non-text (i.e.
other than T***) meta tag frames providing a ff_id3v2_read_all()
function. An additional data structure 'ID3v2ExtraMeta' is introduced
for these tags since AVDictionary is string oriented and unsuitable
for binary data.

A parser for tag frames of type GEOB is implemented, which is needed
to extract keyring information from encrypted OMA files. GEOB data
is parsed into 'ID3v2ExtraMetaGEOB' data structures.

The routine to decode characters from different encodings to UTF-8,
formerly part of the read_ttag() function, is moved to its own
function. Because some tag frames contain subparts of unknown length,
the function is now also able to read until a null character is found.
In addition, the function now takes care of allocating a buffer long
enough to hold the decoded characters.

Signed-off-by: David Goldwich <david.goldwich@gmail.com>
Signed-off-by: Anton Khirnov <anton@khirnov.net>
2011-09-21 08:28:21 +02:00
Michael Niedermayer
f9ecb849ef Merge remote-tracking branch 'qatar/master'
* qatar/master:
  crypto: Use av_freep instead of av_free
  lavf: don't try to free private options if priv_data is NULL.
  swscale: fix types of assembly arguments.
  swscale: move two macros that are only used once into caller.
  swscale: remove unused function.
  options: Add missing braces around struct initializer.
  mov: Remove leftover crufty debug statement with references to a local file.
  dvbsubdec: Fix compilation of debug code.
  Remove all uses of now deprecated metadata functions.
  Move metadata API from lavf to lavu.

Conflicts:
	doc/APIchanges
	libavformat/aiffdec.c
	libavformat/asfdec.c
	libavformat/avformat.h
	libavformat/avidec.c
	libavformat/cafdec.c
	libavformat/matroskaenc.c
	libavformat/mov.c
	libavformat/mp3enc.c
	libavformat/wtv.c
	libavutil/avutil.h
	libavutil/internal.h
	libswscale/swscale.c
	libswscale/x86/swscale_template.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-06-09 04:47:19 +02:00
Anton Khirnov
d2d67e424f Remove all uses of now deprecated metadata functions. 2011-06-08 07:43:45 +02:00
Michael Niedermayer
8381ab1437 Merge remote-tracking branch 'qatar/master'
* qatar/master: (29 commits)
  ARM: disable ff_vector_fmul_vfp on VFPv3 systems
  ARM: check for VFPv3
  swscale: Remove unused variables in x86 code.
  doc: Drop DJGPP section, Libav now compiles out-of-the-box on FreeDOS.
  x86: Add appropriate ifdefs around certain AVX functions.
  cmdutils: use sws_freeContext() instead of av_freep().
  swscale: delay allocation of formatConvBuffer().
  swscale: fix build with --disable-swscale-alpha.
  movenc: Deprecate the global RTP hinting flag, use a private AVOption instead
  movenc: Add an AVClass for setting muxer specific options
  swscale: fix non-bitexact yuv2yuv[X2]() MMX/MMX2 functions.
  configure: report yasm/nasm presence properly
  tcp: make connect() timeout properly
  rawdec: factor video demuxer definitions into a macro.
  rtspdec: add initial_pause private option.
  lavf: deprecate AVFormatParameters.width/height.
  tty: add video_size private option.
  rawdec: add video_size private option.
  x11grab: add video_size private option.
  x11grab: factorize returning error codes.
  ...

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-05-27 23:48:22 +02:00
Alex Converse
86f868771b id3v2: Check malloc result. ID3v2 tags can be very large. 2011-05-26 13:16:03 -07:00
Alex Converse
40a5dd2f35 id3v2: Initialize tflags for version 2.2. 2011-05-26 13:16:03 -07:00
Stefano Sabatini
64be0d1eda id3v2: prevent unsigned integer overflow in ff_id3v2_parse()
In ff_id3v2_parse(), prevent unsigned integer overflow if data length
indicator is skipped and tlen is < 4.

Fix crash decoding file Allaby_cut.mp3, fix trac issue #182.
2011-05-18 10:35:52 +02:00
Stefano Sabatini
b69e5ee902 id3v2: add @file doxy and link to format documentation 2011-05-18 10:35:45 +02:00
Michael Niedermayer
4fa0e24736 Merge remote-tracking branch 'newdev/master'
* newdev/master: (33 commits)
  Fix an infinite loop when RoQ encoded generated a frame with a size greater than the maximum valid size.
  Add kbdwin.o to AC3 decoder
  Detect byte-swapped AC-3 and support decoding it directly.
  cosmetics: indentation
  Always copy input data for AC3 decoder.
  ac3enc: make sym_quant() branch-free
  cosmetics: indentation
  Add a CPU flag for the Atom processor.
  id3v2: skip broken tags with invalid size
  id3v2: don't explicitly skip padding
  Make sure kbhit() is in conio.h
  fate: update wmv8-drm reference
  vc1: make P-frame deblock filter bit-exact.
  configure: Add the -D parameter to the dlltool command
  amr: Set the AVFMT_GENERIC_INDEX flag
  amr: Set the pkt->pos field properly to the start of the packet
  amr: Set the codec->bit_rate field based on the last packet
  rtsp: Specify unicast for TCP interleaved streams, too
  Set the correct target for mingw64 dlltool
  applehttp: Change the variable for stream position in seconds into int64_t
  ...

Conflicts:
	ffmpeg.c
	ffplay.c
	libavcodec/ac3dec.c
	libavformat/avio.h
	libavformat/id3v2.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-03-23 02:42:56 +01:00
Anton Khirnov
c5f4c0fd5c id3v2: skip broken tags with invalid size
fixes issue2649.
2011-03-22 09:08:59 -04:00
Anton Khirnov
1885488757 id3v2: don't explicitly skip padding
It's pointless, since there's a seek to the end of tag later.
2011-03-22 09:08:59 -04:00
Anton Khirnov
eb1e7f78ea id3v2: simplify error handling.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-21 15:08:01 -04:00
Anton Khirnov
bca6dee386 id3v2: explicitly seek to the end of the tag after reading
Current code might stop in the middle of an invalid tag.

fixes issue2650

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-21 14:56:59 -04:00
Mans Rullgard
2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
Michael Niedermayer
0fecf2642b Merge remote-tracking branch 'newdev/master'
Conflicts:
	Changelog
	doc/APIchanges
	doc/optimization.txt
	libavformat/avio.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-03-17 17:22:52 +01:00
Anton Khirnov
45a8a02a41 lavf: replace avio_seek(SEEK_CUR) with avio_skip where it makes sense
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-16 22:24:51 -04:00
Anton Khirnov
56e2ac6b45 id3v2: merge TYER/TDAT/TIME to date tag 2011-03-15 13:57:52 -04:00
Anton Khirnov
ffb0304593 id3v2: fix typo in error message
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit fb61a7c534)
2011-03-09 18:35:37 +01:00
Anton Khirnov
fb61a7c534 id3v2: fix typo in error message
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-09 10:57:44 +00:00
Carl Eugen Hoyos
ac533ac458 Do not loop endlessly if id3v2 tag size is negative / too large.
Fixes the sample from issue 2649.
2011-03-07 23:32:26 +01:00
Anton Khirnov
384c9c2fa7 avio: add avio_tell macro as a replacement for url_ftell
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit a2704c9712)
2011-03-05 02:29:31 +01:00
Anton Khirnov
a2704c9712 avio: add avio_tell macro as a replacement for url_ftell
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-04 11:26:57 -05:00
Anton Khirnov
74b3f67c9c lavf: replace all uses of url_fskip with avio_seek
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit e356fc57a2)
2011-03-03 14:15:08 +01:00
Anton Khirnov
f59d8ff8cd avio: avio_ prefix for url_fseek
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 6b4aa5dac8)
2011-03-03 14:15:03 +01:00
Anton Khirnov
e356fc57a2 lavf: replace all uses of url_fskip with avio_seek
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-01 12:22:16 -05:00
Anton Khirnov
6b4aa5dac8 avio: avio_ prefix for url_fseek
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-03-01 12:12:33 -05:00
Anton Khirnov
e63a362857 avio: avio_ prefixes for get_* functions
In the name of consistency:
get_byte           -> avio_r8
get_<type>         -> avio_r<type>
get_buffer         -> avio_read

get_partial_buffer will be made private later

get_strz is left out becase I want to change it later to return
something useful.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit b7effd4e83)
2011-02-22 02:44:37 +01:00
Anton Khirnov
b7effd4e83 avio: avio_ prefixes for get_* functions
In the name of consistency:
get_byte           -> avio_r8
get_<type>         -> avio_r<type>
get_buffer         -> avio_read

get_partial_buffer will be made private later

get_strz is left out becase I want to change it later to return
something useful.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-21 11:23:22 -05:00
Anton Khirnov
ae99313aa5 avio: move init_put_byte() to a new private header and rename it
init_put_byte should never be used outside of lavf, since
sizeof(AVIOContext) isn't part of public ABI.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit e731b8d872)
2011-02-20 19:05:47 +01:00
Anton Khirnov
471fe57e1a avio: rename ByteIOContext to AVIOContext.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit ae628ec1fd)
2011-02-20 19:05:47 +01:00
Anton Khirnov
e731b8d872 avio: move init_put_byte() to a new private header and rename it
init_put_byte should never be used outside of lavf, since
sizeof(AVIOContext) isn't part of public ABI.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-20 08:37:31 -05:00
Anton Khirnov
ae628ec1fd avio: rename ByteIOContext to AVIOContext.
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2011-02-20 08:37:15 -05:00
Anton Khirnov
fe01dd8d74 id3v2: split tables for various ID3v2 versions
This is needed for upcoming ID3v2.3 muxing support.

Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
(cherry picked from commit cb6bc57681)
2011-01-23 19:32:07 +01:00
Anton Khirnov
cb6bc57681 id3v2: split tables for various ID3v2 versions
This is needed for upcoming ID3v2.3 muxing support.

Signed-off-by: Janne Grunau <janne-ffmpeg@jannau.net>
2011-01-22 02:06:10 +01:00
Anton Khirnov
eeb0b893e3 id3v2: use an enum for encodings instead of magic numbers.
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit d66eff3685)
2011-01-21 20:36:01 +01:00
Anton Khirnov
d4cc1f5b97 id3v2: don't overwrite existing tags
Apparently some broken taggers prepend a new ID3v2 tag leaving the
existing one intact. Our parser currently reads all tags and overwrites
existing values with supposedly outdated ones.

fixes issue2419

Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 75aded8328)
2011-01-21 20:36:00 +01:00
Anton Khirnov
189665d927 id3v2: convert metadata after all the tags were read
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit f7fcd6a254)
2011-01-21 20:36:00 +01:00
Anton Khirnov
b3158f7a42 id3v2: make ff_id3v2_parse static
Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit 46a2da7698)
2011-01-21 20:36:00 +01:00
Anton Khirnov
d66eff3685 id3v2: use an enum for encodings instead of magic numbers.
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-21 18:42:10 +00:00
Anton Khirnov
75aded8328 id3v2: don't overwrite existing tags
Apparently some broken taggers prepend a new ID3v2 tag leaving the
existing one intact. Our parser currently reads all tags and overwrites
existing values with supposedly outdated ones.

fixes issue2419

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-20 13:39:19 +00:00
Anton Khirnov
f7fcd6a254 id3v2: convert metadata after all the tags were read
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-20 13:36:28 +00:00
Anton Khirnov
46a2da7698 id3v2: make ff_id3v2_parse static
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-20 13:36:22 +00:00
Anton Khirnov
a152c77f26 id3v2: skip data length indicator
Originally committed as revision 25926 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-10 15:48:56 +00:00
Anton Khirnov
407d3d5a3a id3v2: skip encrypted/compressed frames
Originally committed as revision 25903 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-07 07:52:54 +00:00
Anton Khirnov
7a07d158bd id3v2: use a named constant instead of 0x02
Originally committed as revision 25902 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-12-07 07:52:50 +00:00
Anton Khirnov
bcb5d217ba id3v2: add TDEN<->creation_time tag mapping
Originally committed as revision 25812 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-11-23 07:54:47 +00:00
Anton Khirnov
ad7768f4c4 add ff_ prefix to metadata_conv()
patch by Anton Khirnov  anton _at_ khirnov _dot_ net

Originally committed as revision 25505 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-10-16 13:20:41 +00:00
Anton Khirnov
03700d399b Export metadata in the generic format. Deprecate old conversion API.
patch by Anton Khirnov  anton _at_ khirnov _dot_ net

Originally committed as revision 25493 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-10-15 19:04:25 +00:00
Reimar Döffinger
27af8902c4 Fix indentation of ff_id3v2_read
Originally committed as revision 25292 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-10-01 17:45:18 +00:00
David Byron
0c41d554e2 Read all id3v2 tags at the beginning of mp3 files.
Patch by David Byron, dbyron dbyron com

Originally committed as revision 25105 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-09-11 16:29:23 +00:00
Alexander Kojevnikov
18bbe9df9a Support unsynchronisation for id3v2 tags.
Patch by Alexander Kojevnikov, alexander kojevnikov com

Originally committed as revision 24824 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-08-18 16:29:46 +00:00
Alexander Kojevnikov
ff58de29f1 Skip short padding in id3v2.
Patch by Alexander Kojevnikov, alexander kojevnikov com

Originally committed as revision 24567 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-07-28 08:06:52 +00:00
Michael Karcher
3a1350e8d9 Generalize ID3v2 functions to support ID3v2-like ID headers with a
different magic in the header (mainly targeted to Sony's .oma/.aa3
format).

Patch by Michael Karcher, ffmpeg A mkarcher dialup fu-berlin de

Originally committed as revision 23583 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-06-11 13:44:57 +00:00
Stefano Sabatini
2ef6c1242a Mark av_metadata_set() as deprecated, and use av_metadata_set2()
in its place.

av_metadata_set() is going to be dropped at the next major bump.

Originally committed as revision 22961 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-04-25 14:27:42 +00:00
Jai Menon
037e9afd37 Fix off-by-1 error in the tag parsing code.
Originally committed as revision 22945 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-04-22 12:54:50 +00:00
Anton Khirnov
ca76a11948 Add a list of generic tags and change demuxers to follow it.
Patch by Anton Khirnov, wyskas at gmail dot com

Originally committed as revision 21587 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-01 11:39:10 +00:00
Michael Niedermayer
dfe9ee6b95 More entries for ff_id3v2_metadata_conv from ffmbc.
Originally committed as revision 20839 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-13 21:02:43 +00:00
Michael Niedermayer
8a98be1a08 s/author/artist/ for ID3
from ffmbc

Originally committed as revision 20838 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-13 21:01:49 +00:00
Jai Menon
2e3ca1ffd0 Skip padding bytes correctly in ID3 tags.
This fixes a regression introduced in r20170.

Originally committed as revision 20238 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-10-15 13:55:19 +00:00
Anton Khirnov
41770abf86 id3v2: Export all text information frames with correct names.
Patch by Anton Khirnov <wyskas at gmail dot com>

Originally committed as revision 20171 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-10-05 20:10:07 +00:00
Anton Khirnov
078d89a2b0 MP3 muxer: Write all metadata.
Patch by Anton Khirnov <wyskas at gmail dot com>

Originally committed as revision 20170 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-10-05 16:06:00 +00:00
Anton Khirnov
6378b06208 Add id3v2 metadata conversion table and use it in mp3 muxer.
Patch by Anton Khirnov, wyskas gmail

Originally committed as revision 20073 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-29 07:05:03 +00:00
Anton Khirnov
20c6837880 id3v2: Add support for UTF-16 encoding.
patch by Anton Khirnov, wyskas gmail com

Originally committed as revision 20006 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-23 18:22:00 +00:00
Anton Khirnov
9aa1bcce51 id3v2: Use 0 instead of '\0'.
patch by Anton Khirnov, wyskas gmail com

Originally committed as revision 20005 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-23 18:10:29 +00:00
Anton Khirnov
787f8fad00 id3v2: check for enough space to write full UTF-8 characters.
patch by Anton Khirnov, wyskas gmail com

Originally committed as revision 20004 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-23 18:04:40 +00:00
Michael Niedermayer
d004179e19 indent
Originally committed as revision 19292 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-29 18:37:29 +00:00
Michael Niedermayer
3fd5a75b07 id3v2.4.0 uses syncsafe integers for sizes of frames.
Fixes issue1234
Fixes regression introduced in r19275

Originally committed as revision 19291 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-29 18:36:49 +00:00
Michael Niedermayer
1cd4422163 Fix id3v2.2 frame size parsing.
Fixes issue1202.

Originally committed as revision 19276 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-25 19:44:44 +00:00
Michael Niedermayer
47f42aec38 Fix id3v2.3/4 tag size parsing.
Fixes issue1106

Originally committed as revision 19275 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-25 19:26:39 +00:00
Patrick Dehne
50fcd5be36 Move id3v1/id3v2 handling code from mp3.c to id3v[12].c.
patch by Patrick Dehne, patrick mysonicweb com

Originally committed as revision 19224 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-19 14:03:35 +00:00
Diego Biurrun
1d4b1bf2f6 cosmetics: Prettyprint one more line to have columns line up.
Originally committed as revision 19158 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-11 20:45:35 +00:00
Diego Biurrun
7d7b8c32c9 cosmetics: Reformat to K&R and prettyprint newly created files.
Originally committed as revision 19156 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-11 15:35:23 +00:00
Patrick Dehne
7541118286 Move id3v2 parsing code from mp3.c to id3v2.h and id3v2.c.
patch by Patrick Dehne, patrick mysonicweb com

Originally committed as revision 19155 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-11 15:26:57 +00:00
Alex Converse
ac3ef4a41b Fix probing of files with ID3v2 tags. Discussed at
http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-January/059302.html

Originally committed as revision 16688 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-19 21:54:06 +00:00
Alex Converse
2ea512a6c2 Factorise id3v2 header parsing from mp3.c to be shared
Patch by Alex Converse ( alex converse gmail com )

Originally committed as revision 16615 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-15 12:23:03 +00:00
Clément Bœsch
049ce4facb id3v2: strdup the genre name explicitly.
It would have been done anyway in the av_dict_set() call.

This simplifies the code and avoid a warning because of assigning a
const string from ff_id3v1_genre_str to a non-const variable.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2012-09-17 15:48:20 +02:00
Clément Bœsch
ffdd2e9144 lavf/id3v2: do not export empty fields.
This also avoids a memleak.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2012-09-17 15:48:20 +02:00