FFmpeg
Data Structures | Functions
ffmpeg_enc.c File Reference
#include <math.h>
#include <stdint.h>
#include "ffmpeg.h"
#include "ffmpeg_utils.h"
#include "thread_queue.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/avutil.h"
#include "libavutil/dict.h"
#include "libavutil/display.h"
#include "libavutil/eval.h"
#include "libavutil/frame.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/log.h"
#include "libavutil/pixdesc.h"
#include "libavutil/rational.h"
#include "libavutil/time.h"
#include "libavutil/timestamp.h"
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"

Go to the source code of this file.

Data Structures

struct  Encoder
 
struct  EncoderThread
 

Functions

void enc_free (Encoder **penc)
 
int enc_alloc (Encoder **penc, const AVCodec *codec, Scheduler *sch, unsigned sch_idx)
 
static int hw_device_setup_for_encode (OutputStream *ost, AVBufferRef *frames_ref)
 
static int set_encoder_id (OutputFile *of, OutputStream *ost)
 
int enc_open (void *opaque, const AVFrame *frame)
 
static int check_recording_time (OutputStream *ost, int64_t ts, AVRational tb)
 
static int do_subtitle_out (OutputFile *of, OutputStream *ost, const AVSubtitle *sub, AVPacket *pkt)
 
void enc_stats_write (OutputStream *ost, EncStats *es, const AVFrame *frame, const AVPacket *pkt, uint64_t frame_num)
 
static double psnr (double d)
 
static int update_video_stats (OutputStream *ost, const AVPacket *pkt, int write_vstats)
 
static int encode_frame (OutputFile *of, OutputStream *ost, AVFrame *frame, AVPacket *pkt)
 
static int do_audio_out (OutputFile *of, OutputStream *ost, AVFrame *frame, AVPacket *pkt)
 
static enum AVPictureType forced_kf_apply (void *logctx, KeyframeForceCtx *kf, AVRational tb, const AVFrame *in_picture)
 
static int do_video_out (OutputFile *of, OutputStream *ost, AVFrame *in_picture, AVPacket *pkt)
 
static int frame_encode (OutputStream *ost, AVFrame *frame, AVPacket *pkt)
 
static void enc_thread_set_name (const OutputStream *ost)
 
static void enc_thread_uninit (EncoderThread *et)
 
static int enc_thread_init (EncoderThread *et)
 
void * encoder_thread (void *arg)
 

Function Documentation

◆ enc_free()

void enc_free ( Encoder **  penc)

Definition at line 63 of file ffmpeg_enc.c.

Referenced by ost_free().

◆ enc_alloc()

int enc_alloc ( Encoder **  penc,
const AVCodec codec,
Scheduler sch,
unsigned  sch_idx 
)

Definition at line 73 of file ffmpeg_enc.c.

Referenced by ost_add().

◆ hw_device_setup_for_encode()

static int hw_device_setup_for_encode ( OutputStream ost,
AVBufferRef frames_ref 
)
static

Definition at line 92 of file ffmpeg_enc.c.

Referenced by enc_open().

◆ set_encoder_id()

static int set_encoder_id ( OutputFile of,
OutputStream ost 
)
static

Definition at line 143 of file ffmpeg_enc.c.

Referenced by enc_open().

◆ enc_open()

int enc_open ( void *  opaque,
const AVFrame frame 
)

Definition at line 168 of file ffmpeg_enc.c.

Referenced by encoder_thread(), and ost_add().

◆ check_recording_time()

static int check_recording_time ( OutputStream ost,
int64_t  ts,
AVRational  tb 
)
static

Definition at line 383 of file ffmpeg_enc.c.

Referenced by do_audio_out(), do_subtitle_out(), and do_video_out().

◆ do_subtitle_out()

static int do_subtitle_out ( OutputFile of,
OutputStream ost,
const AVSubtitle sub,
AVPacket pkt 
)
static

Definition at line 394 of file ffmpeg_enc.c.

Referenced by frame_encode().

◆ enc_stats_write()

void enc_stats_write ( OutputStream ost,
EncStats es,
const AVFrame frame,
const AVPacket pkt,
uint64_t  frame_num 
)

Definition at line 481 of file ffmpeg_enc.c.

Referenced by encode_frame(), and write_packet().

◆ psnr()

static double psnr ( double  d)
inlinestatic

Definition at line 554 of file ffmpeg_enc.c.

Referenced by main(), run_psnr(), uninit(), and update_video_stats().

◆ update_video_stats()

static int update_video_stats ( OutputStream ost,
const AVPacket pkt,
int  write_vstats 
)
static

Definition at line 559 of file ffmpeg_enc.c.

Referenced by encode_frame().

◆ encode_frame()

static int encode_frame ( OutputFile of,
OutputStream ost,
AVFrame frame,
AVPacket pkt 
)
static

Definition at line 623 of file ffmpeg_enc.c.

Referenced by do_audio_out(), do_video_out(), and frame_encode().

◆ do_audio_out()

static int do_audio_out ( OutputFile of,
OutputStream ost,
AVFrame frame,
AVPacket pkt 
)
static

Definition at line 732 of file ffmpeg_enc.c.

Referenced by frame_encode().

◆ forced_kf_apply()

static enum AVPictureType forced_kf_apply ( void *  logctx,
KeyframeForceCtx kf,
AVRational  tb,
const AVFrame in_picture 
)
static

Definition at line 750 of file ffmpeg_enc.c.

Referenced by do_video_out().

◆ do_video_out()

static int do_video_out ( OutputFile of,
OutputStream ost,
AVFrame in_picture,
AVPacket pkt 
)
static

Definition at line 797 of file ffmpeg_enc.c.

Referenced by frame_encode().

◆ frame_encode()

static int frame_encode ( OutputStream ost,
AVFrame frame,
AVPacket pkt 
)
static

Definition at line 818 of file ffmpeg_enc.c.

Referenced by encoder_thread().

◆ enc_thread_set_name()

static void enc_thread_set_name ( const OutputStream ost)
static

Definition at line 840 of file ffmpeg_enc.c.

Referenced by encoder_thread().

◆ enc_thread_uninit()

static void enc_thread_uninit ( EncoderThread et)
static

Definition at line 848 of file ffmpeg_enc.c.

Referenced by enc_thread_init(), and encoder_thread().

◆ enc_thread_init()

static int enc_thread_init ( EncoderThread et)
static

Definition at line 856 of file ffmpeg_enc.c.

Referenced by encoder_thread().

◆ encoder_thread()

void* encoder_thread ( void *  arg)

Definition at line 875 of file ffmpeg_enc.c.

Referenced by ost_add().