Go to the documentation of this file.
   45     int i, cnum, 
h, m, 
s, ms, keylen = strlen(
key);
 
   52         if (sscanf(
val, 
"%02d:%02d:%02d.%03d", &
h, &m, &
s, &ms) < 4)
 
   56                            ms + 1000 * (
s + 60 * (m + 60 * 
h)),
 
   75                              const uint8_t *buf, 
int size)
 
   92                                        const uint8_t *buf, uint32_t 
size,
 
   93                                        int *updates, 
int parse_picture)
 
   95     char *t = (
char*)buf, *v = memchr(t, 
'=', 
size);
 
  120     if (!
av_strcasecmp(t, 
"METADATA_BLOCK_PICTURE") && parse_picture) {
 
  150                       const uint8_t *buf, 
int size,
 
  153     const uint8_t *
p   = buf;
 
  154     const uint8_t *end = buf + 
size;
 
  163     s = bytestream_get_le32(&
p);
 
  165     if (end - 
p - 4 < 
s || 
s < 0)
 
  170     n = bytestream_get_le32(&
p);
 
  172     while (end - 
p >= 4 && n > 0) {
 
  173         s = bytestream_get_le32(&
p);
 
  175         if (end - 
p < 
s || 
s < 0)
 
  190                "truncated comment header, %i comments not found\n", n);
 
  235     buf_len = 
len + 
len / 255 + 64;
 
  243     memset(*buf, 
'\0', buf_len);
 
  249     for (
i = 0; 
i < 3; 
i++) {
 
  261     struct ogg *
ogg = 
s->priv_data;
 
  267         for (
i = 0; 
i < 3; 
i++)
 
  277                               const uint8_t *buf, 
int size)
 
  279     struct ogg *
ogg = 
s->priv_data;
 
  303                                const uint8_t *
p, 
unsigned int psize)
 
  305     unsigned blocksize, bs0, bs1;
 
  314     if (bytestream_get_le32(&
p) != 0) 
 
  324     srate               = bytestream_get_le32(&
p);
 
  329     blocksize = bytestream_get_byte(&
p);
 
  330     bs0       = blocksize & 15;
 
  331     bs1       = blocksize >> 4;
 
  335     if (bs0 < 6 || bs1 > 13)
 
  338     if (bytestream_get_byte(&
p) != 1) 
 
  360     struct ogg *
ogg = 
s->priv_data;
 
  373     struct ogg *
ogg = 
s->priv_data;
 
  398     if (priv->
packet[pkt_type >> 1])
 
  400     if (pkt_type > 1 && !priv->
packet[0] || pkt_type > 3 && !priv->
packet[1])
 
  403     priv->
len[pkt_type >> 1]    = os->
psize;
 
  405     if (!priv->
packet[pkt_type >> 1])
 
  420             if (new_len >= 16 && new_len < os->psize) {
 
  422                 priv->
packet[1][new_len - 1] = 1;
 
  423                 priv->
len[1]                 = new_len;
 
  452     struct ogg *
ogg = 
s->priv_data;
 
  457     int ret, new_extradata_size;
 
  469         uint8_t *last_pkt  = os->
buf + os->
pstart;
 
  470         uint8_t *next_pkt  = last_pkt;
 
  484         last_pkt = next_pkt =  next_pkt + os->
psize;
 
  485         for (; seg < os->
nsegs; seg++) {
 
  496                 last_pkt  = next_pkt + os->
segments[seg];
 
  509                 s->streams[idx]->duration -= 
s->streams[idx]->start_time;
 
  614     .
magic     = 
"\001vorbis",
 
  
AVChapter * avpriv_new_chapter(AVFormatContext *s, int64_t id, AVRational time_base, int64_t start, int64_t end, const char *title)
Add a new chapter.
#define AV_LOG_WARNING
Something somehow does not look correct.
uint8_t * extradata
Extra binary data needed for initializing the decoder, codec-dependent.
void av_vorbis_parse_free(AVVorbisParseContext **s)
Free the parser and everything associated with it.
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
enum AVMediaType codec_type
General type of the encoded data.
unsigned int nb_chapters
Number of chapters in AVChapter array.
int ff_replaygain_export(AVStream *st, AVDictionary *metadata)
Parse replaygain tags and export them as per-stream side data.
int av_vorbis_parse_frame_flags(AVVorbisParseContext *s, const uint8_t *buf, int buf_size, int *flags)
Get the duration for a Vorbis packet.
int av_strcasecmp(const char *a, const char *b)
Locale-independent case-insensitive compare.
int ff_vorbis_stream_comment(AVFormatContext *as, AVStream *st, const uint8_t *buf, int size)
Parse Vorbis comments and add metadata to an AVStream.
#define AV_DICT_APPEND
If the entry already exists, append to it.
#define AV_LOG_VERBOSE
Detailed information.
#define AVERROR_UNKNOWN
Unknown error, typically from an external library.
int nb_channels
Number of channels in this layout.
static int ogm_chapter(AVFormatContext *as, const uint8_t *key, const uint8_t *val)
size_t new_extradata_size
void * av_memdup(const void *p, size_t size)
Duplicate a buffer with av_malloc().
#define AV_BASE64_DECODE_SIZE(x)
Calculate the output size in bytes needed to decode a base64 string with length x to a data buffer.
static double val(void *priv, double ch)
int ff_vorbis_comment(AVFormatContext *as, AVDictionary **m, const uint8_t *buf, int size, int parse_picture)
Parse Vorbis comments.
static int vorbis_parse_single_comment(AVFormatContext *as, AVDictionary **m, const uint8_t *buf, uint32_t size, int *updates, int parse_picture)
This function temporarily modifies the (const qualified) input buffer and reverts its changes before ...
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define AV_PKT_FLAG_CORRUPT
The packet content is corrupted.
static av_always_inline void bytestream2_init_writer(PutByteContext *p, uint8_t *buf, int buf_size)
AVDictionaryEntry * av_dict_get(const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
Get a dictionary entry with matching key.
int ff_vorbis_update_metadata(AVFormatContext *s, AVStream *st, const uint8_t *buf, int size)
Parse Vorbis comments, add metadata to an AVStream.
static av_always_inline unsigned int bytestream2_put_buffer(PutByteContext *p, const uint8_t *src, unsigned int size)
#define VORBIS_FLAG_COMMENT
const struct ogg_codec ff_vorbis_codec
unsigned char * packet[3]
AVCodecParameters * codecpar
Codec parameters associated with this stream.
#define PTRDIFF_SPECIFIER
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
#define VORBIS_FLAG_HEADER
Rational number (pair of numerator and denominator).
int av_base64_decode(uint8_t *out, const char *in_str, int out_size)
Decode a base64-encoded string.
AVChannelLayout ch_layout
Audio only.
struct ogg_stream * streams
int sample_rate
Audio only.
int ff_flac_parse_picture(AVFormatContext *s, uint8_t **bufp, int buf_size, int truncate_workaround)
Parse a FLAC METADATA_BLOCK_PICTURE.
int extradata_size
Size of the extradata content in bytes.
static void vorbis_cleanup(AVFormatContext *s, int idx)
int av_strncasecmp(const char *a, const char *b, size_t n)
Locale-independent case-insensitive compare.
int av_reallocp(void *ptr, size_t size)
Allocate, reallocate, or free a block of memory through a pointer to a pointer.
#define AV_NOPTS_VALUE
Undefined timestamp value.
int event_flags
Flags indicating events happening on the stream, a combination of AVSTREAM_EVENT_FLAG_*.
unsigned int av_xiphlacing(unsigned char *s, unsigned int v)
Encode extradata length to a buffer.
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
uint8_t * av_packet_pack_dictionary(AVDictionary *dict, size_t *size)
Pack a dictionary for use in side_data.
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values.
#define AV_LOG_INFO
Standard information.
static int vorbis_update_metadata(AVFormatContext *s, int idx)
#define i(width, name, range_min, range_max)
int64_t id
unique ID to identify the chapter
static int vorbis_header(AVFormatContext *s, int idx)
static int vorbis_packet(AVFormatContext *s, int idx)
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
AVVorbisParseContext * vp
AVVorbisParseContext * av_vorbis_parse_init(const uint8_t *extradata, int extradata_size)
Allocate and initialize the Vorbis parser using headers in the extradata.
#define AV_INPUT_BUFFER_PADDING_SIZE
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
int index
stream index in AVFormatContext
#define VORBIS_FLAG_SETUP
IDirect3DDxgiInterfaceAccess _COM_Outptr_ void ** p
void av_vorbis_parse_reset(AVVorbisParseContext *s)
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
static int vorbis_parse_header(AVFormatContext *s, AVStream *st, const uint8_t *p, unsigned int psize)
Copyright (C) 2005 Michael Ahlberg, Måns Rullgård.
int64_t bit_rate
The average bitrate of the encoded data (in bits per second).
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
int end_trimming
set the number of packets to drop from the end
static void BS_FUNC() skip(BSCTX *bc, unsigned int n)
Skip n bits in the buffer.
void * av_realloc(void *ptr, size_t size)
Allocate, reallocate, or free a block of memory.
static int fixup_vorbis_headers(AVFormatContext *as, struct oggvorbis_private *priv, uint8_t **buf)