ffmpeg / libavformat / id3v2.h @ 56a10009
History | View | Annotate | Download (2.43 KB)
1 | 2ea512a6 | Alex Converse | /*
|
---|---|---|---|
2 | * ID3v2 header parser
|
||
3 | * Copyright (c) 2003 Fabrice Bellard
|
||
4 | *
|
||
5 | 2912e87a | Mans Rullgard | * This file is part of Libav.
|
6 | 2ea512a6 | Alex Converse | *
|
7 | 2912e87a | Mans Rullgard | * Libav is free software; you can redistribute it and/or
|
8 | 2ea512a6 | Alex Converse | * modify it under the terms of the GNU Lesser General Public
|
9 | * License as published by the Free Software Foundation; either
|
||
10 | * version 2.1 of the License, or (at your option) any later version.
|
||
11 | *
|
||
12 | 2912e87a | Mans Rullgard | * Libav is distributed in the hope that it will be useful,
|
13 | 2ea512a6 | Alex Converse | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
15 | * Lesser General Public License for more details.
|
||
16 | *
|
||
17 | * You should have received a copy of the GNU Lesser General Public
|
||
18 | 2912e87a | Mans Rullgard | * License along with Libav; if not, write to the Free Software
|
19 | 2ea512a6 | Alex Converse | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 | */
|
||
21 | |||
22 | #ifndef AVFORMAT_ID3V2_H
|
||
23 | #define AVFORMAT_ID3V2_H
|
||
24 | |||
25 | #include <stdint.h> |
||
26 | 75411182 | Patrick Dehne | #include "avformat.h" |
27 | 6378b062 | Anton Khirnov | #include "metadata.h" |
28 | 2ea512a6 | Alex Converse | |
29 | #define ID3v2_HEADER_SIZE 10 |
||
30 | |||
31 | /**
|
||
32 | 3a1350e8 | Michael Karcher | * Default magic bytes for ID3v2 header: "ID3"
|
33 | */
|
||
34 | #define ID3v2_DEFAULT_MAGIC "ID3" |
||
35 | |||
36 | 7a07d158 | Anton Khirnov | #define ID3v2_FLAG_DATALEN 0x0001 |
37 | #define ID3v2_FLAG_UNSYNCH 0x0002 |
||
38 | #define ID3v2_FLAG_ENCRYPTION 0x0004 |
||
39 | #define ID3v2_FLAG_COMPRESSION 0x0008 |
||
40 | |||
41 | d66eff36 | Anton Khirnov | enum ID3v2Encoding {
|
42 | ID3v2_ENCODING_ISO8859 = 0,
|
||
43 | ID3v2_ENCODING_UTF16BOM = 1,
|
||
44 | ID3v2_ENCODING_UTF16BE = 2,
|
||
45 | ID3v2_ENCODING_UTF8 = 3,
|
||
46 | }; |
||
47 | |||
48 | 3a1350e8 | Michael Karcher | /**
|
49 | 49bd8e4b | Måns Rullgård | * Detect ID3v2 Header.
|
50 | b8ab52e7 | Diego Biurrun | * @param buf must be ID3v2_HEADER_SIZE byte long
|
51 | * @param magic magic bytes to identify the header, machine byte order.
|
||
52 | 3a1350e8 | Michael Karcher | * If in doubt, use ID3v2_DEFAULT_MAGIC.
|
53 | 2ea512a6 | Alex Converse | */
|
54 | 3a1350e8 | Michael Karcher | int ff_id3v2_match(const uint8_t *buf, const char *magic); |
55 | 2ea512a6 | Alex Converse | |
56 | ac3ef4a4 | Alex Converse | /**
|
57 | 49bd8e4b | Måns Rullgård | * Get the length of an ID3v2 tag.
|
58 | b8ab52e7 | Diego Biurrun | * @param buf must be ID3v2_HEADER_SIZE bytes long and point to the start of an
|
59 | ac3ef4a4 | Alex Converse | * already detected ID3v2 tag
|
60 | */
|
||
61 | int ff_id3v2_tag_len(const uint8_t *buf); |
||
62 | |||
63 | 75411182 | Patrick Dehne | /**
|
64 | 50fcd5be | Patrick Dehne | * Read an ID3v2 tag
|
65 | */
|
||
66 | 3a1350e8 | Michael Karcher | void ff_id3v2_read(AVFormatContext *s, const char *magic); |
67 | 50fcd5be | Patrick Dehne | |
68 | cb6bc576 | Anton Khirnov | extern const AVMetadataConv ff_id3v2_34_metadata_conv[]; |
69 | extern const AVMetadataConv ff_id3v2_4_metadata_conv[]; |
||
70 | extern const AVMetadataConv ff_id3v2_2_metadata_conv[]; |
||
71 | 6378b062 | Anton Khirnov | |
72 | 078d89a2 | Anton Khirnov | /**
|
73 | cb6bc576 | Anton Khirnov | * A list of text information frames allowed in both ID3 v2.3 and v2.4
|
74 | 078d89a2 | Anton Khirnov | * http://www.id3.org/id3v2.4.0-frames
|
75 | cb6bc576 | Anton Khirnov | * http://www.id3.org/id3v2.4.0-changes
|
76 | 078d89a2 | Anton Khirnov | */
|
77 | cf671d05 | Måns Rullgård | extern const char ff_id3v2_tags[][4]; |
78 | 078d89a2 | Anton Khirnov | |
79 | cb6bc576 | Anton Khirnov | /**
|
80 | * ID3v2.4-only text information frames.
|
||
81 | */
|
||
82 | extern const char ff_id3v2_4_tags[][4]; |
||
83 | |||
84 | /**
|
||
85 | * ID3v2.3-only text information frames.
|
||
86 | */
|
||
87 | extern const char ff_id3v2_3_tags[][4]; |
||
88 | |||
89 | 2ea512a6 | Alex Converse | #endif /* AVFORMAT_ID3V2_H */ |