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 "nut.h"
#include "internal.h"
#include "avio_internal.h"
#include "riff.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 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
 
}; 
 
AVOutputFormat ff_nut_muxer
 

Macro Definition Documentation

◆ OFFSET

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

Definition at line 1213 of file nutenc.c.

◆ E

Definition at line 1214 of file nutenc.c.

Function Documentation

◆ find_expected_header()

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

Definition at line 38 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 105 of file nutenc.c.

Referenced by build_frame_code().

◆ build_elision_headers()

static void build_elision_headers ( AVFormatContext s)
static

Definition at line 122 of file nutenc.c.

Referenced by nut_write_header().

◆ build_frame_code()

static void build_frame_code ( AVFormatContext s)
static

Definition at line 144 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 283 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 306 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 315 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 323 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 328 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 349 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 429 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 486 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 494 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 522 of file nutenc.c.

Referenced by write_headers().

◆ write_chapter()

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

Definition at line 564 of file nutenc.c.

Referenced by write_headers().

◆ write_index()

static int write_index ( NUTContext nut,
AVIOContext bc 
)
static

Definition at line 592 of file nutenc.c.

Referenced by nut_write_trailer().

◆ write_headers()

static int write_headers ( AVFormatContext avctx,
AVIOContext bc 
)
static

Definition at line 644 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 696 of file nutenc.c.

◆ get_needed_flags()

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

Definition at line 782 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 811 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 830 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 953 of file nutenc.c.

◆ nut_write_trailer()

static int nut_write_trailer ( AVFormatContext s)
static

Definition at line 1175 of file nutenc.c.

◆ nut_write_deinit()

static void nut_write_deinit ( AVFormatContext s)
static

Definition at line 1198 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 1215 of file nutenc.c.

◆ class_name

class_name = "nutenc"
private

Definition at line 1225 of file nutenc.c.

◆ item_name

item_name = av_default_item_name
private

Definition at line 1226 of file nutenc.c.

◆ option

option = options
private

Definition at line 1227 of file nutenc.c.

◆ version

version = LIBAVUTIL_VERSION_INT
private

Definition at line 1228 of file nutenc.c.

◆ @274

const { ... }

◆ ff_nut_muxer

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

Definition at line 1231 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:1175
AVFMT_VARIABLE_FPS
#define AVFMT_VARIABLE_FPS
Format allows variable fps.
Definition: avformat.h:465
AV_CODEC_ID_MPEG4
@ AV_CODEC_ID_MPEG4
Definition: codec_id.h:61
nut_write_packet
static int nut_write_packet(AVFormatContext *s, AVPacket *pkt)
Definition: nutenc.c:953
nut_write_header
static int nut_write_header(AVFormatContext *s)
Definition: nutenc.c:696
AV_CODEC_ID_MP3
@ AV_CODEC_ID_MP3
preferred ID for decoding MPEG audio layer 1, 2 or 3
Definition: codec_id.h:411
NUTContext
Definition: nut.h:91
E
#define E
Definition: nutenc.c:1214
AV_CODEC_ID_MP2
@ AV_CODEC_ID_MP2
Definition: codec_id.h:410
write_index
static int write_index(NUTContext *nut, AVIOContext *bc)
Definition: nutenc.c:592
NULL
#define NULL
Definition: coverity.c:32
NUT_BROADCAST
#define NUT_BROADCAST
Definition: nut.h:113
write_trailer
static int write_trailer(AVFormatContext *s1)
Definition: v4l2enc.c:98
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:188
write_packet
static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int unqueue)
Definition: ffmpeg.c:702
AVFMT_GLOBALHEADER
#define AVFMT_GLOBALHEADER
Format wants global header.
Definition: avformat.h:461
ff_nut_codec_tags
const AVCodecTag *const ff_nut_codec_tags[]
Definition: nut.c:248
OFFSET
#define OFFSET(x)
Definition: nutenc.c:1213
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:240
nut_write_deinit
static void nut_write_deinit(AVFormatContext *s)
Definition: nutenc.c:1198
AV_OPT_TYPE_FLAGS
@ AV_OPT_TYPE_FLAGS
Definition: opt.h:222
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:565
AV_CODEC_ID_VORBIS
@ AV_CODEC_ID_VORBIS
Definition: codec_id.h:415
write_header
static void write_header(FFV1Context *f)
Definition: ffv1enc.c:346
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Definition: opt.h:232