FFmpeg
Data Structures | Macros | Functions | Variables
oggenc.c File Reference
#include "config_components.h"
#include <stdint.h>
#include "libavutil/crc.h"
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
#include "libavutil/random_seed.h"
#include "libavcodec/xiph.h"
#include "libavcodec/bytestream.h"
#include "libavcodec/flac.h"
#include "avformat.h"
#include "avio_internal.h"
#include "internal.h"
#include "mux.h"
#include "version.h"
#include "vorbiscomment.h"

Go to the source code of this file.

Data Structures

struct  OGGPage
 
struct  OGGStreamContext
 
struct  OGGPageList
 
struct  OGGContext
 

Macros

#define MAX_PAGE_SIZE   65025
 
#define OFFSET(x)   offsetof(OGGContext, x)
 
#define PARAM   AV_OPT_FLAG_ENCODING_PARAM
 
#define SPEEX_HEADER_SIZE   80
 
#define OPUS_HEADER_SIZE   19
 
#define VP8_HEADER_SIZE   26
 

Functions

static void ogg_write_page (AVFormatContext *s, OGGPage *page, int extra_flags)
 
static int ogg_key_granule (OGGStreamContext *oggstream, int64_t granule)
 
static int64_t ogg_granule_to_timestamp (OGGStreamContext *oggstream, int64_t granule)
 
static int ogg_compare_granule (AVFormatContext *s, OGGPage *next, OGGPage *page)
 
static int ogg_reset_cur_page (OGGStreamContext *oggstream)
 
static int ogg_buffer_page (AVFormatContext *s, OGGStreamContext *oggstream)
 
static int ogg_buffer_data (AVFormatContext *s, AVStream *st, const uint8_t *data, unsigned size, int64_t granule, int header)
 
static uint8_t * ogg_write_vorbiscomment (int64_t offset, int bitexact, int *header_len, AVDictionary **m, int framing_bit, AVChapter **chapters, unsigned int nb_chapters)
 
static int ogg_build_flac_headers (AVCodecParameters *par, OGGStreamContext *oggstream, int bitexact, AVDictionary **m)
 
static int ogg_build_speex_headers (AVCodecParameters *par, OGGStreamContext *oggstream, int bitexact, AVDictionary **m)
 
static int ogg_build_opus_headers (AVCodecParameters *par, OGGStreamContext *oggstream, int bitexact, AVDictionary **m, AVChapter **chapters, unsigned int nb_chapters)
 
static int ogg_build_vp8_headers (AVFormatContext *s, AVStream *st, OGGStreamContext *oggstream, int bitexact)
 
static void ogg_write_pages (AVFormatContext *s, int flush)
 
static int ogg_init (AVFormatContext *s)
 
static int ogg_write_header (AVFormatContext *s)
 
static int ogg_write_packet_internal (AVFormatContext *s, AVPacket *pkt)
 
static int ogg_write_packet (AVFormatContext *s, AVPacket *pkt)
 
static int ogg_write_trailer (AVFormatContext *s)
 
static void ogg_free (AVFormatContext *s)
 

Variables

static const AVOption options []
 
static const AVClass ogg_muxer_class
 

Macro Definition Documentation

◆ MAX_PAGE_SIZE

#define MAX_PAGE_SIZE   65025

Definition at line 40 of file oggenc.c.

◆ OFFSET

#define OFFSET (   x)    offsetof(OGGContext, x)

Definition at line 83 of file oggenc.c.

◆ PARAM

#define PARAM   AV_OPT_FLAG_ENCODING_PARAM

Definition at line 84 of file oggenc.c.

◆ SPEEX_HEADER_SIZE

#define SPEEX_HEADER_SIZE   80

Definition at line 340 of file oggenc.c.

◆ OPUS_HEADER_SIZE

#define OPUS_HEADER_SIZE   19

Definition at line 369 of file oggenc.c.

◆ VP8_HEADER_SIZE

#define VP8_HEADER_SIZE   26

Definition at line 399 of file oggenc.c.

Function Documentation

◆ ogg_write_page()

static void ogg_write_page ( AVFormatContext s,
OGGPage page,
int  extra_flags 
)
static

Definition at line 105 of file oggenc.c.

Referenced by ogg_write_pages().

◆ ogg_key_granule()

static int ogg_key_granule ( OGGStreamContext oggstream,
int64_t  granule 
)
static

Definition at line 133 of file oggenc.c.

Referenced by ogg_buffer_data().

◆ ogg_granule_to_timestamp()

static int64_t ogg_granule_to_timestamp ( OGGStreamContext oggstream,
int64_t  granule 
)
static

Definition at line 139 of file oggenc.c.

Referenced by ogg_buffer_data(), ogg_buffer_page(), and ogg_compare_granule().

◆ ogg_compare_granule()

static int ogg_compare_granule ( AVFormatContext s,
OGGPage next,
OGGPage page 
)
static

Definition at line 150 of file oggenc.c.

Referenced by ogg_buffer_page().

◆ ogg_reset_cur_page()

static int ogg_reset_cur_page ( OGGStreamContext oggstream)
static

Definition at line 166 of file oggenc.c.

Referenced by ogg_buffer_page().

◆ ogg_buffer_page()

static int ogg_buffer_page ( AVFormatContext s,
OGGStreamContext oggstream 
)
static

Definition at line 175 of file oggenc.c.

Referenced by ogg_buffer_data(), ogg_write_header(), ogg_write_packet(), and ogg_write_trailer().

◆ ogg_buffer_data()

static int ogg_buffer_data ( AVFormatContext s,
AVStream st,
const uint8_t *  data,
unsigned  size,
int64_t  granule,
int  header 
)
static

Definition at line 200 of file oggenc.c.

Referenced by ogg_write_header(), and ogg_write_packet_internal().

◆ ogg_write_vorbiscomment()

static uint8_t* ogg_write_vorbiscomment ( int64_t  offset,
int  bitexact,
int header_len,
AVDictionary **  m,
int  framing_bit,
AVChapter **  chapters,
unsigned int  nb_chapters 
)
static

◆ ogg_build_flac_headers()

static int ogg_build_flac_headers ( AVCodecParameters par,
OGGStreamContext oggstream,
int  bitexact,
AVDictionary **  m 
)
static

Definition at line 304 of file oggenc.c.

Referenced by ogg_init().

◆ ogg_build_speex_headers()

static int ogg_build_speex_headers ( AVCodecParameters par,
OGGStreamContext oggstream,
int  bitexact,
AVDictionary **  m 
)
static

Definition at line 342 of file oggenc.c.

Referenced by ogg_init().

◆ ogg_build_opus_headers()

static int ogg_build_opus_headers ( AVCodecParameters par,
OGGStreamContext oggstream,
int  bitexact,
AVDictionary **  m,
AVChapter **  chapters,
unsigned int  nb_chapters 
)
static

Definition at line 371 of file oggenc.c.

Referenced by ogg_init().

◆ ogg_build_vp8_headers()

static int ogg_build_vp8_headers ( AVFormatContext s,
AVStream st,
OGGStreamContext oggstream,
int  bitexact 
)
static

Definition at line 401 of file oggenc.c.

Referenced by ogg_init().

◆ ogg_write_pages()

static void ogg_write_pages ( AVFormatContext s,
int  flush 
)
static

◆ ogg_init()

static int ogg_init ( AVFormatContext s)
static

KFGSHIFT is the width of the less significant section of the granule position The less significant section is the frame count since the last keyframe

Definition at line 472 of file oggenc.c.

◆ ogg_write_header()

static int ogg_write_header ( AVFormatContext s)
static

Definition at line 605 of file oggenc.c.

◆ ogg_write_packet_internal()

static int ogg_write_packet_internal ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 635 of file oggenc.c.

Referenced by ogg_write_packet().

◆ ogg_write_packet()

static int ogg_write_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 687 of file oggenc.c.

◆ ogg_write_trailer()

static int ogg_write_trailer ( AVFormatContext s)
static

Definition at line 704 of file oggenc.c.

◆ ogg_free()

static void ogg_free ( AVFormatContext s)
static

Definition at line 721 of file oggenc.c.

Variable Documentation

◆ options

const AVOption options[]
static
Initial value:
= {
{ "serial_offset", "serial number offset",
OFFSET(serial_offset), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, PARAM },
{ "oggpagesize", "Set preferred Ogg page size.",
OFFSET(pref_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, MAX_PAGE_SIZE, PARAM},
{ "pagesize", "preferred page size in bytes (deprecated)",
OFFSET(pref_size), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, MAX_PAGE_SIZE, PARAM },
{ "page_duration", "preferred page duration, in microseconds",
OFFSET(pref_duration), AV_OPT_TYPE_INT64, { .i64 = 1000000 }, 0, INT64_MAX, PARAM },
{ NULL },
}

Definition at line 86 of file oggenc.c.

◆ ogg_muxer_class

const AVClass ogg_muxer_class
static
Initial value:
= {
.class_name = "Ogg (audio/video/Speex/Opus) muxer",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 98 of file oggenc.c.

OFFSET
#define OFFSET(x)
Definition: oggenc.c:83
AV_OPT_TYPE_INT64
@ AV_OPT_TYPE_INT64
Definition: opt.h:236
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
NULL
#define NULL
Definition: coverity.c:32
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:237
options
static const AVOption options[]
Definition: oggenc.c:86
MAX_PAGE_SIZE
#define MAX_PAGE_SIZE
Definition: oggenc.c:40
PARAM
#define PARAM
Definition: oggenc.c:84
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Definition: opt.h:235