24 #include "libavutil/avstring.h"
25 #include "libavutil/dict.h"
26 #include "libavutil/intreadwrite.h"
41 while (*str && *str < 128) str++;
104 if (t->
key[0] !=
'T' || strlen(t->
key) != 4)
107 for (i = 0; *table[i]; i++)
167 const char *mimetype =
NULL, *desc =
"";
170 int i,
len, type = 0;
175 mimetype = mime->
str;
182 "write an attached picture.\n", st->
index);
int len
size of the tag written so far
int ff_id3v2_write_metadata(AVFormatContext *s, ID3v2EncContext *id3)
Convert and write all global metadata from s into an ID3v2 tag.
AVCodecContext * codec
Codec context associated with this stream.
int index
stream index in AVFormatContext
void av_log(void *avcl, int level, const char *fmt,...) av_printf_format(3
Send the specified message to the log if the level is less than or equal to the current av_log_level...
const char ff_id3v2_4_tags[][4]
ID3v2.4-only text information frames.
void av_freep(void *ptr)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc() and set the pointer ...
void ff_id3v2_start(ID3v2EncContext *id3, AVIOContext *pb, int id3v2_version, const char *magic)
Initialize an ID3v2 tag.
#define ID3v2_HEADER_SIZE
const AVMetadataConv ff_id3v2_34_metadata_conv[]
#define MKBETAG(a, b, c, d)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
const AVMetadataConv ff_id3v2_4_metadata_conv[]
static int string_is_ascii(const uint8_t *str)
const char * ff_id3v2_picture_types[21]
const CodecMime ff_id3v2_mime_tags[]
int64_t size_pos
offset of the tag total size
int av_strcasecmp(const char *a, const char *b)
AVStream ** streams
A list of all streams in the file.
#define FF_ARRAY_ELEMS(a)
if(ac->has_optimized_func)
const char ff_id3v2_tags[][4]
A list of text information frames allowed in both ID3 v2.3 and v2.4 http://www.id3.org/id3v2.4.0-frames http://www.id3.org/id3v2.4.0-changes.
static int id3v2_check_write_tag(ID3v2EncContext *id3, AVIOContext *pb, AVDictionaryEntry *t, const char table[][4], enum ID3v2Encoding enc)
AVIOContext * pb
I/O context.
AVDictionary * metadata
Metadata that applies to the whole file.
static void id3v2_encode_string(AVIOContext *pb, const uint8_t *str, enum ID3v2Encoding enc)
int ff_id3v2_write_simple(struct AVFormatContext *s, int id3v2_version, const char *magic)
Write an ID3v2 tag containing all global metadata from s.
static int id3v2_put_ttag(ID3v2EncContext *id3, AVIOContext *avioc, const char *str1, const char *str2, uint32_t tag, enum ID3v2Encoding enc)
Write a text frame with one (normal frames) or two (TXXX frames) strings according to encoding (only ...
static void id3v2_put_size(AVIOContext *pb, int size)
AVDictionaryEntry * av_dict_get(const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
Get a dictionary entry with matching key.
const char ff_id3v2_3_tags[][4]
ID3v2.3-only text information frames.
int ff_id3v2_write_apic(AVFormatContext *s, ID3v2EncContext *id3, AVPacket *pkt)
Write an attached picture from pkt into an ID3v2 tag.
#define AV_DICT_IGNORE_SUFFIX
int version
ID3v2 minor version, either 3 or 4.
This structure stores compressed data.
void ff_id3v2_finish(ID3v2EncContext *id3, AVIOContext *pb)
Finalize an opened ID3v2 tag.