mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-29 22:00:58 +02:00
id3v2: make ff_id3v2_parse static
Signed-off-by: Mans Rullgard <mans@mansr.com> (cherry picked from commit 46a2da7698634214eed6d269fc72d284e3d3700f)
This commit is contained in:
parent
9256dc28ab
commit
b3158f7a42
@ -50,33 +50,6 @@ int ff_id3v2_tag_len(const uint8_t * buf)
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_id3v2_read(AVFormatContext *s, const char *magic)
|
|
||||||
{
|
|
||||||
int len, ret;
|
|
||||||
uint8_t buf[ID3v2_HEADER_SIZE];
|
|
||||||
int found_header;
|
|
||||||
int64_t off;
|
|
||||||
|
|
||||||
do {
|
|
||||||
/* save the current offset in case there's nothing to read/skip */
|
|
||||||
off = url_ftell(s->pb);
|
|
||||||
ret = get_buffer(s->pb, buf, ID3v2_HEADER_SIZE);
|
|
||||||
if (ret != ID3v2_HEADER_SIZE)
|
|
||||||
return;
|
|
||||||
found_header = ff_id3v2_match(buf, magic);
|
|
||||||
if (found_header) {
|
|
||||||
/* parse ID3v2 header */
|
|
||||||
len = ((buf[6] & 0x7f) << 21) |
|
|
||||||
((buf[7] & 0x7f) << 14) |
|
|
||||||
((buf[8] & 0x7f) << 7) |
|
|
||||||
(buf[9] & 0x7f);
|
|
||||||
ff_id3v2_parse(s, len, buf[3], buf[5]);
|
|
||||||
} else {
|
|
||||||
url_fseek(s->pb, off, SEEK_SET);
|
|
||||||
}
|
|
||||||
} while (found_header);
|
|
||||||
}
|
|
||||||
|
|
||||||
static unsigned int get_size(ByteIOContext *s, int len)
|
static unsigned int get_size(ByteIOContext *s, int len)
|
||||||
{
|
{
|
||||||
int v = 0;
|
int v = 0;
|
||||||
@ -162,7 +135,7 @@ static void read_ttag(AVFormatContext *s, ByteIOContext *pb, int taglen, const c
|
|||||||
av_metadata_set2(&s->metadata, key, val, 0);
|
av_metadata_set2(&s->metadata, key, val, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version, uint8_t flags)
|
static void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version, uint8_t flags)
|
||||||
{
|
{
|
||||||
int isv34, tlen, unsync;
|
int isv34, tlen, unsync;
|
||||||
char tag[5];
|
char tag[5];
|
||||||
@ -276,6 +249,33 @@ void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version, uint8_t flags)
|
|||||||
av_free(buffer);
|
av_free(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ff_id3v2_read(AVFormatContext *s, const char *magic)
|
||||||
|
{
|
||||||
|
int len, ret;
|
||||||
|
uint8_t buf[ID3v2_HEADER_SIZE];
|
||||||
|
int found_header;
|
||||||
|
int64_t off;
|
||||||
|
|
||||||
|
do {
|
||||||
|
/* save the current offset in case there's nothing to read/skip */
|
||||||
|
off = url_ftell(s->pb);
|
||||||
|
ret = get_buffer(s->pb, buf, ID3v2_HEADER_SIZE);
|
||||||
|
if (ret != ID3v2_HEADER_SIZE)
|
||||||
|
return;
|
||||||
|
found_header = ff_id3v2_match(buf, magic);
|
||||||
|
if (found_header) {
|
||||||
|
/* parse ID3v2 header */
|
||||||
|
len = ((buf[6] & 0x7f) << 21) |
|
||||||
|
((buf[7] & 0x7f) << 14) |
|
||||||
|
((buf[8] & 0x7f) << 7) |
|
||||||
|
(buf[9] & 0x7f);
|
||||||
|
ff_id3v2_parse(s, len, buf[3], buf[5]);
|
||||||
|
} else {
|
||||||
|
url_fseek(s->pb, off, SEEK_SET);
|
||||||
|
}
|
||||||
|
} while (found_header);
|
||||||
|
}
|
||||||
|
|
||||||
const AVMetadataConv ff_id3v2_metadata_conv[] = {
|
const AVMetadataConv ff_id3v2_metadata_conv[] = {
|
||||||
{ "TALB", "album"},
|
{ "TALB", "album"},
|
||||||
{ "TAL", "album"},
|
{ "TAL", "album"},
|
||||||
|
@ -53,12 +53,6 @@ int ff_id3v2_match(const uint8_t *buf, const char *magic);
|
|||||||
*/
|
*/
|
||||||
int ff_id3v2_tag_len(const uint8_t *buf);
|
int ff_id3v2_tag_len(const uint8_t *buf);
|
||||||
|
|
||||||
/**
|
|
||||||
* ID3v2 parser
|
|
||||||
* Handles ID3v2.2, 2.3 and 2.4.
|
|
||||||
*/
|
|
||||||
void ff_id3v2_parse(AVFormatContext *s, int len, uint8_t version, uint8_t flags);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read an ID3v2 tag
|
* Read an ID3v2 tag
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user