FFmpeg
Data Structures | Macros | Functions | Variables
oggenc.c File Reference
#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 "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, 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 36 of file oggenc.c.

◆ OFFSET

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

Definition at line 79 of file oggenc.c.

◆ PARAM

#define PARAM   AV_OPT_FLAG_ENCODING_PARAM

Definition at line 80 of file oggenc.c.

◆ SPEEX_HEADER_SIZE

#define SPEEX_HEADER_SIZE   80

Definition at line 336 of file oggenc.c.

◆ OPUS_HEADER_SIZE

#define OPUS_HEADER_SIZE   19

Definition at line 365 of file oggenc.c.

◆ VP8_HEADER_SIZE

#define VP8_HEADER_SIZE   26

Definition at line 395 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 101 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 129 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 135 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 146 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 162 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 171 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,
uint8_t *  data,
unsigned  size,
int64_t  granule,
int  header 
)
static

Definition at line 196 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 300 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 338 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 367 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 397 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 468 of file oggenc.c.

◆ ogg_write_header()

static int ogg_write_header ( AVFormatContext s)
static

Definition at line 601 of file oggenc.c.

◆ ogg_write_packet_internal()

static int ogg_write_packet_internal ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 631 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 683 of file oggenc.c.

◆ ogg_write_trailer()

static int ogg_write_trailer ( AVFormatContext s)
static

Definition at line 700 of file oggenc.c.

◆ ogg_free()

static void ogg_free ( AVFormatContext s)
static

Definition at line 717 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 82 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 94 of file oggenc.c.

OFFSET
#define OFFSET(x)
Definition: oggenc.c:79
AV_OPT_TYPE_INT64
@ AV_OPT_TYPE_INT64
Definition: opt.h:225
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:235
options
static const AVOption options[]
Definition: oggenc.c:82
MAX_PAGE_SIZE
#define MAX_PAGE_SIZE
Definition: oggenc.c:36
PARAM
#define PARAM
Definition: oggenc.c:80
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Definition: opt.h:224