FFmpeg
Loading...
Searching...
No Matches
smoothstreamingenc.c File Reference
#include "config.h"
#include "avformat.h"
#include "internal.h"
#include "mux.h"
#include "os_support.h"
#include "avc.h"
#include "url.h"
#include "libavutil/attributes_internal.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/avstring.h"
#include "libavutil/mathematics.h"
#include "libavutil/uuid.h"

Go to the source code of this file.

Data Structures

struct  Fragment
 
struct  OutputStream
 
struct  SmoothStreamingContext
 

Macros

#define OFFSET(x)
 
#define E   AV_OPT_FLAG_ENCODING_PARAM
 

Functions

static int ism_write (void *opaque, const uint8_t *buf, int buf_size)
 
static int64_t ism_seek (void *opaque, int64_t offset, int whence)
 
static void get_private_data (OutputStream *os)
 
static void ism_free (AVFormatContext *s)
 
static void output_chunk_list (OutputStream *os, AVIOContext *out, int final, int skip, int window_size)
 
static int write_manifest (AVFormatContext *s, int final)
 
static int ism_write_header (AVFormatContext *s)
 
static int parse_fragment (AVFormatContext *s, const char *filename, int64_t *start_ts, int64_t *duration, int64_t *moof_size, int64_t size)
 
static int add_fragment (OutputStream *os, const char *file, const char *infofile, int64_t start_time, int64_t duration, int64_t start_pos, int64_t size)
 
static int copy_moof (AVFormatContext *s, const char *infile, const char *outfile, int64_t size)
 
static int ism_flush (AVFormatContext *s, int final)
 
static int ism_write_packet (AVFormatContext *s, AVPacket *pkt)
 
static int ism_write_trailer (AVFormatContext *s)
 

Variables

static const AVOption options []
 
static const AVClass ism_class
 
const FFOutputFormat ff_smoothstreaming_muxer
 

Macro Definition Documentation

◆ OFFSET

#define OFFSET ( x)
Value:

Definition at line 621 of file smoothstreamingenc.c.

◆ E

Definition at line 622 of file smoothstreamingenc.c.

Function Documentation

◆ ism_write()

static int ism_write ( void * opaque,
const uint8_t * buf,
int buf_size )
static

Definition at line 80 of file smoothstreamingenc.c.

Referenced by ism_write_header().

◆ ism_seek()

static int64_t ism_seek ( void * opaque,
int64_t offset,
int whence )
static

Definition at line 93 of file smoothstreamingenc.c.

Referenced by ism_write_header().

◆ get_private_data()

static void get_private_data ( OutputStream * os)
static

Definition at line 140 of file smoothstreamingenc.c.

Referenced by ism_write_header().

◆ ism_free()

static void ism_free ( AVFormatContext * s)
static

Definition at line 163 of file smoothstreamingenc.c.

◆ output_chunk_list()

static void output_chunk_list ( OutputStream * os,
AVIOContext * out,
int final,
int skip,
int window_size )
static

Definition at line 185 of file smoothstreamingenc.c.

Referenced by write_manifest().

◆ write_manifest()

static int write_manifest ( AVFormatContext * s,
int final )
static

Definition at line 205 of file smoothstreamingenc.c.

Referenced by ism_flush(), and ism_write_header().

◆ ism_write_header()

static int ism_write_header ( AVFormatContext * s)
static

Definition at line 283 of file smoothstreamingenc.c.

◆ parse_fragment()

static int parse_fragment ( AVFormatContext * s,
const char * filename,
int64_t * start_ts,
int64_t * duration,
int64_t * moof_size,
int64_t size )
static

Definition at line 391 of file smoothstreamingenc.c.

Referenced by ism_flush().

◆ add_fragment()

static int add_fragment ( OutputStream * os,
const char * file,
const char * infofile,
int64_t start_time,
int64_t duration,
int64_t start_pos,
int64_t size )
static

Definition at line 441 of file smoothstreamingenc.c.

Referenced by ism_flush().

◆ copy_moof()

static int copy_moof ( AVFormatContext * s,
const char * infile,
const char * outfile,
int64_t size )
static

Definition at line 469 of file smoothstreamingenc.c.

Referenced by ism_flush().

◆ ism_flush()

static int ism_flush ( AVFormatContext * s,
int final )
static

Definition at line 496 of file smoothstreamingenc.c.

Referenced by ism_write_packet(), and ism_write_trailer().

◆ ism_write_packet()

static int ism_write_packet ( AVFormatContext * s,
AVPacket * pkt )
static

Definition at line 580 of file smoothstreamingenc.c.

◆ ism_write_trailer()

static int ism_write_trailer ( AVFormatContext * s)
static

Definition at line 606 of file smoothstreamingenc.c.

Variable Documentation

◆ options

const AVOption options[]
static
Initial value:
= {
{ "window_size", "number of fragments kept in the manifest", OFFSET(window_size), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, E },
{ "extra_window_size", "number of fragments kept outside of the manifest before removing from disk", OFFSET(extra_window_size), AV_OPT_TYPE_INT, { .i64 = 5 }, 0, INT_MAX, E },
{ "lookahead_count", "number of lookahead fragments", OFFSET(lookahead_count), AV_OPT_TYPE_INT, { .i64 = 2 }, 0, INT_MAX, E },
{ "min_frag_duration", "minimum fragment duration (in microseconds)", OFFSET(min_frag_duration), AV_OPT_TYPE_INT64, { .i64 = 5000000 }, 0, INT_MAX, E },
{ "remove_at_exit", "remove all fragments when finished", OFFSET(remove_at_exit), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E },
{ NULL },
}
#define E
Definition avdct.c:34
#define NULL
Definition coverity.c:32
#define OFFSET(x)
@ AV_OPT_TYPE_INT64
Underlying C type is int64_t.
Definition opt.h:262
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition opt.h:258
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition opt.h:326

Definition at line 623 of file smoothstreamingenc.c.

◆ ism_class

const AVClass ism_class
static
Initial value:
= {
.class_name = "smooth streaming muxer",
.item_name = av_default_item_name,
.option = options,
}
const char * av_default_item_name(void *ptr)
Return the context name.
Definition log.c:241
#define LIBAVUTIL_VERSION_INT
Definition version.h:85

Definition at line 632 of file smoothstreamingenc.c.

◆ ff_smoothstreaming_muxer

const FFOutputFormat ff_smoothstreaming_muxer
Initial value:
= {
.p.name = "smoothstreaming",
.p.long_name = NULL_IF_CONFIG_SMALL("Smooth Streaming Muxer"),
.p.audio_codec = AV_CODEC_ID_AAC,
.p.video_codec = AV_CODEC_ID_H264,
.p.priv_class = &ism_class,
.priv_data_size = sizeof(SmoothStreamingContext),
}
#define AVFMT_NOFILE
Demuxer will use avio_open, no opened file should be provided by the caller.
Definition avformat.h:488
#define AVFMT_GLOBALHEADER
Format wants global header.
Definition avformat.h:497
static void deinit(AVFormatContext *s)
Definition chromaprint.c:53
static int write_packet(Muxer *mux, OutputStream *ost, AVPacket *pkt)
Definition ffmpeg_mux.c:204
static void write_header(FFV1Context *f)
Definition ffv1enc.c:384
@ AV_CODEC_ID_H264
Definition codec_id.h:77
@ AV_CODEC_ID_AAC
Definition codec_id.h:455
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition internal.h:88
static const AVClass ism_class
static int ism_write_packet(AVFormatContext *s, AVPacket *pkt)
static void ism_free(AVFormatContext *s)
static int ism_write_trailer(AVFormatContext *s)
static int ism_write_header(AVFormatContext *s)
static int write_trailer(AVFormatContext *s1)
Definition v4l2enc.c:101

Definition at line 640 of file smoothstreamingenc.c.