FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
mccenc.c File Reference
#include "avformat.h"
#include "internal.h"
#include "mux.h"
#include "libavcodec/codec_id.h"
#include "libavcodec/smpte_436m.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/error.h"
#include "libavutil/ffversion.h"
#include "libavutil/log.h"
#include "libavutil/macros.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.h"
#include "libavutil/rational.h"
#include "libavutil/time_internal.h"
#include "libavutil/timecode.h"

Go to the source code of this file.

Data Structures

struct  MCCContext
 

Macros

#define OFFSET(x)   offsetof(MCCContext, x)
 
#define ENC   AV_OPT_FLAG_ENCODING_PARAM
 

Enumerations

enum  MCCVersion { MCC_VERSION_1 = 1, MCC_VERSION_2 = 2, MCC_VERSION_MIN = MCC_VERSION_1, MCC_VERSION_MAX = MCC_VERSION_2 }
 

Functions

static int mcc_write_header (AVFormatContext *avf)
 
static void mcc_bytes_to_hex (char *dest, const uint8_t *bytes, size_t bytes_size, int use_u_alias)
 convert the input bytes to hexadecimal with mcc's aliases More...
 
static int mcc_write_packet (AVFormatContext *avf, AVPacket *pkt)
 
static int mcc_init (AVFormatContext *avf)
 
static int mcc_query_codec (enum AVCodecID codec_id, int std_compliance)
 

Variables

static const char mcc_header_v1 []
 
static const char mcc_header_v2 []
 
static const char mcc_ffmpeg_uuid [] = "0087C4F6-A6B4-5469-8C8E-BBF44950401D"
 generated with the bash command: More...
 
static AVRational valid_time_code_rates []
 
static const AVOption options []
 
static const AVClass mcc_muxer_class
 
const FFOutputFormat ff_mcc_muxer
 

Macro Definition Documentation

◆ OFFSET

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

Definition at line 503 of file mccenc.c.

◆ ENC

#define ENC   AV_OPT_FLAG_ENCODING_PARAM

Definition at line 504 of file mccenc.c.

Enumeration Type Documentation

◆ MCCVersion

enum MCCVersion
Enumerator
MCC_VERSION_1 
MCC_VERSION_2 
MCC_VERSION_MIN 
MCC_VERSION_MAX 

Definition at line 53 of file mccenc.c.

Function Documentation

◆ mcc_write_header()

static int mcc_write_header ( AVFormatContext avf)
static

Definition at line 158 of file mccenc.c.

◆ mcc_bytes_to_hex()

static void mcc_bytes_to_hex ( char *  dest,
const uint8_t *  bytes,
size_t  bytes_size,
int  use_u_alias 
)
static

convert the input bytes to hexadecimal with mcc's aliases

Definition at line 249 of file mccenc.c.

Referenced by mcc_write_packet().

◆ mcc_write_packet()

static int mcc_write_packet ( AVFormatContext avf,
AVPacket pkt 
)
static

Definition at line 325 of file mccenc.c.

◆ mcc_init()

static int mcc_init ( AVFormatContext avf)
static

Definition at line 420 of file mccenc.c.

◆ mcc_query_codec()

static int mcc_query_codec ( enum AVCodecID  codec_id,
int  std_compliance 
)
static

Definition at line 495 of file mccenc.c.

Variable Documentation

◆ mcc_header_v1

const char mcc_header_v1[]
static

Definition at line 61 of file mccenc.c.

Referenced by mcc_write_header().

◆ mcc_header_v2

const char mcc_header_v2[]
static

Definition at line 100 of file mccenc.c.

Referenced by mcc_write_header().

◆ mcc_ffmpeg_uuid

const char mcc_ffmpeg_uuid[] = "0087C4F6-A6B4-5469-8C8E-BBF44950401D"
static

generated with the bash command:

URL="https://code.ffmpeg.org/FFmpeg/FFmpeg/src/branch/master/libavformat/mccenc.c"
python3 -c "from uuid import *; print(str(uuid5(NAMESPACE_URL, '$URL')).upper())"

Definition at line 146 of file mccenc.c.

Referenced by mcc_write_header().

◆ valid_time_code_rates

AVRational valid_time_code_rates[]
static
Initial value:
= {
{ .num = 24, .den = 1 },
{ .num = 25, .den = 1 },
{ .num = 30000, .den = 1001 },
{ .num = 30, .den = 1 },
{ .num = 50, .den = 1 },
{ .num = 60000, .den = 1001 },
{ .num = 60, .den = 1 },
}

Definition at line 148 of file mccenc.c.

Referenced by mcc_init().

◆ options

const AVOption options[]
static
Initial value:
= {
{ "override_time_code_rate", "override the `Time Code Rate` value in the output", OFFSET(override_time_code_rate), AV_OPT_TYPE_STRING, { .str = NULL }, 0, INT_MAX, ENC },
{ "use_u_alias", "use the U alias for E1h 00h 00h 00h, disabled by default because some .mcc files disagree on whether it has 2 or 3 zero bytes", OFFSET(use_u_alias), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC },
{ "mcc_version", "the mcc file format version", OFFSET(mcc_version), AV_OPT_TYPE_UINT, { .i64 = MCC_VERSION_2 }, MCC_VERSION_MIN, MCC_VERSION_MAX, ENC },
{ "creation_program", "the creation program", OFFSET(creation_program), AV_OPT_TYPE_STRING, { .str = NULL }, 0, INT_MAX, ENC },
{ "creation_time", "the creation time", OFFSET(creation_time), AV_OPT_TYPE_STRING, { .str = "now" }, 0, INT_MAX, ENC },
{ NULL },
}

Definition at line 506 of file mccenc.c.

◆ mcc_muxer_class

const AVClass mcc_muxer_class
static
Initial value:
= {
.class_name = "mcc muxer",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 516 of file mccenc.c.

◆ ff_mcc_muxer

const FFOutputFormat ff_mcc_muxer
Initial value:
= {
.p.name = "mcc",
.p.long_name = NULL_IF_CONFIG_SMALL("MacCaption"),
.p.extensions = "mcc",
.p.flags = AVFMT_GLOBALHEADER,
.p.video_codec = AV_CODEC_ID_NONE,
.p.audio_codec = AV_CODEC_ID_NONE,
.p.subtitle_codec = AV_CODEC_ID_EIA_608,
.p.priv_class = &mcc_muxer_class,
.priv_data_size = sizeof(MCCContext),
}

Definition at line 523 of file mccenc.c.

AV_CODEC_ID_EIA_608
@ AV_CODEC_ID_EIA_608
Definition: codec_id.h:572
MCC_VERSION_MIN
@ MCC_VERSION_MIN
Definition: mccenc.c:57
ENC
#define ENC
Definition: mccenc.c:504
mcc_muxer_class
static const AVClass mcc_muxer_class
Definition: mccenc.c:516
MCCContext
Definition: mccdec.c:43
options
static const AVOption options[]
Definition: mccenc.c:506
query_codec
static int query_codec(enum AVCodecID id, int std_compliance)
Definition: img2enc.c:260
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:241
AV_OPT_TYPE_UINT
@ AV_OPT_TYPE_UINT
Underlying C type is unsigned int.
Definition: opt.h:335
init
int(* init)(AVBSFContext *ctx)
Definition: dts2pts.c:368
MCC_VERSION_2
@ MCC_VERSION_2
Definition: mccenc.c:56
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:94
MCC_VERSION_MAX
@ MCC_VERSION_MAX
Definition: mccenc.c:58
mcc_init
static int mcc_init(AVFormatContext *avf)
Definition: mccenc.c:420
OFFSET
#define OFFSET(x)
Definition: mccenc.c:503
mcc_write_header
static int mcc_write_header(AVFormatContext *avf)
Definition: mccenc.c:158
AVFMT_GLOBALHEADER
#define AVFMT_GLOBALHEADER
Format wants global header.
Definition: avformat.h:477
AV_CODEC_ID_NONE
@ AV_CODEC_ID_NONE
Definition: codec_id.h:50
mcc_write_packet
static int mcc_write_packet(AVFormatContext *avf, AVPacket *pkt)
Definition: mccenc.c:325
write_packet
static int write_packet(Muxer *mux, OutputStream *ost, AVPacket *pkt)
Definition: ffmpeg_mux.c:209
mcc_query_codec
static int mcc_query_codec(enum AVCodecID codec_id, int std_compliance)
Definition: mccenc.c:495
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition: opt.h:327
AV_OPT_TYPE_STRING
@ AV_OPT_TYPE_STRING
Underlying C type is a uint8_t* that is either NULL or points to a C string allocated with the av_mal...
Definition: opt.h:276
write_header
static void write_header(FFV1Context *f)
Definition: ffv1enc.c:384