FFmpeg
Macros | Functions | Variables
nutenc.c File Reference
#include <stdint.h>
#include "libavutil/intreadwrite.h"
#include "libavutil/mathematics.h"
#include "libavutil/tree.h"
#include "libavutil/dict.h"
#include "libavutil/avassert.h"
#include "libavutil/time.h"
#include "libavutil/opt.h"
#include "libavcodec/bytestream.h"
#include "libavcodec/mpegaudiodata.h"
#include "mux.h"
#include "nut.h"
#include "internal.h"
#include "avio_internal.h"
#include "riff.h"
#include "version.h"

Go to the source code of this file.

Macros

#define OFFSET(x)   offsetof(NUTContext, x)
 
#define E   AV_OPT_FLAG_ENCODING_PARAM
 

Functions

static AVRational choose_timebase (AVFormatContext *s, AVStream *st, int min_precision)
 Chooses a timebase for muxing the specified stream. More...
 
static int find_expected_header (AVCodecParameters *p, int size, int key_frame, uint8_t out[64])
 
static int find_header_idx (AVFormatContext *s, AVCodecParameters *p, int size, int frame_type)
 
static void build_elision_headers (AVFormatContext *s)
 
static void build_frame_code (AVFormatContext *s)
 
static int get_v_length (uint64_t val)
 Get the length in bytes which is needed to store val as v. More...
 
static void put_v (AVIOContext *bc, uint64_t val)
 Put val using a variable number of bytes. More...
 
static void put_tt (NUTContext *nut, AVRational *time_base, AVIOContext *bc, uint64_t val)
 
static void put_str (AVIOContext *bc, const char *string)
 Store a string as vb. More...
 
static void put_s (AVIOContext *bc, int64_t val)
 
static void put_packet (NUTContext *nut, AVIOContext *bc, AVIOContext *dyn_bc, uint64_t startcode)
 
static void write_mainheader (NUTContext *nut, AVIOContext *bc)
 
static int write_streamheader (AVFormatContext *avctx, AVIOContext *bc, AVStream *st, int i)
 
static int add_info (AVIOContext *bc, const char *type, const char *value)
 
static int write_globalinfo (NUTContext *nut, AVIOContext *bc)
 
static int write_streaminfo (NUTContext *nut, AVIOContext *bc, int stream_id)
 
static int write_chapter (NUTContext *nut, AVIOContext *bc, int id)
 
static int write_index (NUTContext *nut, AVIOContext *bc)
 
static int write_headers (AVFormatContext *avctx, AVIOContext *bc)
 
static int nut_write_header (AVFormatContext *s)
 
static int get_needed_flags (NUTContext *nut, StreamContext *nus, FrameCode *fc, AVPacket *pkt)
 
static int find_best_header_idx (NUTContext *nut, AVPacket *pkt)
 
static int write_sm_data (AVFormatContext *s, AVIOContext *bc, AVPacket *pkt, int is_meta)
 
static int nut_write_packet (AVFormatContext *s, AVPacket *pkt)
 
static int nut_write_trailer (AVFormatContext *s)
 
static void nut_write_deinit (AVFormatContext *s)
 

Variables

static const AVOption options []
 
class {
      class_name = "nutenc"
 
      item_name = av_default_item_name
 
      option = options
 
      version = LIBAVUTIL_VERSION_INT
 
}; 
 
const FFOutputFormat ff_nut_muxer
 

Macro Definition Documentation

◆ OFFSET

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

Definition at line 1238 of file nutenc.c.

◆ E

Definition at line 1239 of file nutenc.c.

Function Documentation

◆ choose_timebase()

static AVRational choose_timebase ( AVFormatContext s,
AVStream st,
int  min_precision 
)
static

Chooses a timebase for muxing the specified stream.

The chosen timebase allows sample accurate timestamps based on the framerate or sample rate for audio streams. It also is at least as precise as 1/min_precision would be.

Definition at line 47 of file nutenc.c.

Referenced by nut_write_header().

◆ find_expected_header()

static int find_expected_header ( AVCodecParameters p,
int  size,
int  key_frame,
uint8_t  out[64] 
)
static

Definition at line 60 of file nutenc.c.

Referenced by find_header_idx().

◆ find_header_idx()

static int find_header_idx ( AVFormatContext s,
AVCodecParameters p,
int  size,
int  frame_type 
)
static

Definition at line 127 of file nutenc.c.

Referenced by build_frame_code().

◆ build_elision_headers()

static void build_elision_headers ( AVFormatContext s)
static

Definition at line 144 of file nutenc.c.

Referenced by nut_write_header().

◆ build_frame_code()

static void build_frame_code ( AVFormatContext s)
static

Definition at line 166 of file nutenc.c.

Referenced by nut_write_header().

◆ get_v_length()

static int get_v_length ( uint64_t  val)
static

Get the length in bytes which is needed to store val as v.

Definition at line 305 of file nutenc.c.

Referenced by nut_write_packet(), and put_v().

◆ put_v()

static void put_v ( AVIOContext bc,
uint64_t  val 
)
static

◆ put_tt()

static void put_tt ( NUTContext nut,
AVRational time_base,
AVIOContext bc,
uint64_t  val 
)
static

Definition at line 328 of file nutenc.c.

Referenced by nut_write_packet(), write_chapter(), and write_index().

◆ put_str()

static void put_str ( AVIOContext bc,
const char *  string 
)
static

Store a string as vb.

Definition at line 337 of file nutenc.c.

Referenced by add_info(), and write_sm_data().

◆ put_s()

static void put_s ( AVIOContext bc,
int64_t  val 
)
static

Definition at line 345 of file nutenc.c.

Referenced by add_info(), write_chapter(), write_mainheader(), and write_sm_data().

◆ put_packet()

static void put_packet ( NUTContext nut,
AVIOContext bc,
AVIOContext dyn_bc,
uint64_t  startcode 
)
static

Definition at line 350 of file nutenc.c.

Referenced by nut_write_packet(), nut_write_trailer(), and write_headers().

◆ write_mainheader()

static void write_mainheader ( NUTContext nut,
AVIOContext bc 
)
static

Definition at line 371 of file nutenc.c.

Referenced by write_headers().

◆ write_streamheader()

static int write_streamheader ( AVFormatContext avctx,
AVIOContext bc,
AVStream st,
int  i 
)
static

Definition at line 451 of file nutenc.c.

Referenced by write_headers().

◆ add_info()

static int add_info ( AVIOContext bc,
const char *  type,
const char *  value 
)
static

Definition at line 508 of file nutenc.c.

Referenced by write_chapter(), write_globalinfo(), and write_streaminfo().

◆ write_globalinfo()

static int write_globalinfo ( NUTContext nut,
AVIOContext bc 
)
static

Definition at line 516 of file nutenc.c.

Referenced by write_headers().

◆ write_streaminfo()

static int write_streaminfo ( NUTContext nut,
AVIOContext bc,
int  stream_id 
)
static

Definition at line 544 of file nutenc.c.

Referenced by write_headers().

◆ write_chapter()

static int write_chapter ( NUTContext nut,
AVIOContext bc,
int  id 
)
static

Definition at line 586 of file nutenc.c.

Referenced by write_headers().

◆ write_index()

static int write_index ( NUTContext nut,
AVIOContext bc 
)
static

Definition at line 614 of file nutenc.c.

Referenced by nut_write_trailer().

◆ write_headers()

static int write_headers ( AVFormatContext avctx,
AVIOContext bc 
)
static

Definition at line 666 of file nutenc.c.

Referenced by nut_write_header(), nut_write_packet(), and nut_write_trailer().

◆ nut_write_header()

static int nut_write_header ( AVFormatContext s)
static

Definition at line 718 of file nutenc.c.

◆ get_needed_flags()

static int get_needed_flags ( NUTContext nut,
StreamContext nus,
FrameCode fc,
AVPacket pkt 
)
static

Definition at line 804 of file nutenc.c.

Referenced by nut_write_packet().

◆ find_best_header_idx()

static int find_best_header_idx ( NUTContext nut,
AVPacket pkt 
)
static

Definition at line 833 of file nutenc.c.

Referenced by nut_write_packet().

◆ write_sm_data()

static int write_sm_data ( AVFormatContext s,
AVIOContext bc,
AVPacket pkt,
int  is_meta 
)
static

Definition at line 852 of file nutenc.c.

Referenced by nut_write_packet().

◆ nut_write_packet()

static int nut_write_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 977 of file nutenc.c.

◆ nut_write_trailer()

static int nut_write_trailer ( AVFormatContext s)
static

Definition at line 1200 of file nutenc.c.

◆ nut_write_deinit()

static void nut_write_deinit ( AVFormatContext s)
static

Definition at line 1223 of file nutenc.c.

Variable Documentation

◆ options

const AVOption options[]
static
Initial value:
= {
{ "syncpoints", "NUT syncpoint behaviour", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64 = 0}, INT_MIN, INT_MAX, E, "syncpoints" },
{ "default", "", 0, AV_OPT_TYPE_CONST, {.i64 = 0}, INT_MIN, INT_MAX, E, "syncpoints" },
{ "none", "Disable syncpoints, low overhead and unseekable", 0, AV_OPT_TYPE_CONST, {.i64 = NUT_PIPE}, INT_MIN, INT_MAX, E, "syncpoints" },
{ "timestamped", "Extend syncpoints with a wallclock timestamp", 0, AV_OPT_TYPE_CONST, {.i64 = NUT_BROADCAST}, INT_MIN, INT_MAX, E, "syncpoints" },
{ "write_index", "Write index", OFFSET(write_index), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, E, },
{ NULL },
}

Definition at line 1240 of file nutenc.c.

◆ class_name

class_name = "nutenc"
private

Definition at line 1250 of file nutenc.c.

◆ item_name

item_name = av_default_item_name
private

Definition at line 1251 of file nutenc.c.

◆ option

option = options
private

Definition at line 1252 of file nutenc.c.

◆ version

version = LIBAVUTIL_VERSION_INT
private

Definition at line 1253 of file nutenc.c.

◆ @322

const { ... }

◆ ff_nut_muxer

const FFOutputFormat ff_nut_muxer
Initial value:
= {
.p.name = "nut",
.p.long_name = NULL_IF_CONFIG_SMALL("NUT"),
.p.mime_type = "video/x-nut",
.p.extensions = "nut",
.priv_data_size = sizeof(NUTContext),
.p.audio_codec = CONFIG_LIBVORBIS ? AV_CODEC_ID_VORBIS :
CONFIG_LIBMP3LAME ? AV_CODEC_ID_MP3 : AV_CODEC_ID_MP2,
.p.video_codec = AV_CODEC_ID_MPEG4,
.write_header = nut_write_header,
.write_packet = nut_write_packet,
.write_trailer = nut_write_trailer,
.deinit = nut_write_deinit,
.p.codec_tag = ff_nut_codec_tags,
.p.priv_class = &class,
}

Definition at line 1256 of file nutenc.c.

NUT_PIPE
#define NUT_PIPE
Definition: nut.h:114
nut_write_trailer
static int nut_write_trailer(AVFormatContext *s)
Definition: nutenc.c:1200
AVFMT_VARIABLE_FPS
#define AVFMT_VARIABLE_FPS
Format allows variable fps.
Definition: avformat.h:483
AV_CODEC_ID_MPEG4
@ AV_CODEC_ID_MPEG4
Definition: codec_id.h:64
nut_write_packet
static int nut_write_packet(AVFormatContext *s, AVPacket *pkt)
Definition: nutenc.c:977
nut_write_header
static int nut_write_header(AVFormatContext *s)
Definition: nutenc.c:718
AV_CODEC_ID_MP3
@ AV_CODEC_ID_MP3
preferred ID for decoding MPEG audio layer 1, 2 or 3
Definition: codec_id.h:443
NUTContext
Definition: nut.h:91
E
#define E
Definition: nutenc.c:1239
AV_CODEC_ID_MP2
@ AV_CODEC_ID_MP2
Definition: codec_id.h:442
write_index
static int write_index(NUTContext *nut, AVIOContext *bc)
Definition: nutenc.c:614
NULL
#define NULL
Definition: coverity.c:32
NUT_BROADCAST
#define NUT_BROADCAST
Definition: nut.h:113
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:106
AVFMT_GLOBALHEADER
#define AVFMT_GLOBALHEADER
Format wants global header.
Definition: avformat.h:479
ff_nut_codec_tags
const AVCodecTag *const ff_nut_codec_tags[]
Definition: nut.c:252
OFFSET
#define OFFSET(x)
Definition: nutenc.c:1238
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:244
nut_write_deinit
static void nut_write_deinit(AVFormatContext *s)
Definition: nutenc.c:1223
AV_OPT_TYPE_FLAGS
@ AV_OPT_TYPE_FLAGS
Definition: opt.h:224
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:474
AV_CODEC_ID_VORBIS
@ AV_CODEC_ID_VORBIS
Definition: codec_id.h:447
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Definition: opt.h:234