MediaProcessors
Classes | Typedefs | Functions | Variables
ffmpeg_x264.c File Reference
#include "ffmpeg_x264.h"
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <pthread.h>
#include <libcjson/cJSON.h>
#include <libmediaprocsutils/uri_parser.h>
#include <libavcodec/avcodec.h>
#include <libmediaprocsutils/log.h>
#include <libmediaprocsutils/stat_codes.h>
#include <libmediaprocsutils/check_utils.h>
#include <libmediaprocsutils/fifo.h>
#include <libmediaprocs/proc_if.h>
#include <libmediaprocs/proc.h>
#include "ffmpeg_video.h"
#include "proc_frame_2_ffmpeg.h"
#include "video_settings.h"
Include dependency graph for ffmpeg_x264.c:

Go to the source code of this file.

Classes

struct  ffmpeg_x264_enc_settings_ctx_s
 
struct  ffmpeg_x264_enc_ctx_s
 
struct  ffmpeg_x264_dec_settings_ctx_s
 
struct  ffmpeg_x264_dec_ctx_s
 

Typedefs

typedef struct ffmpeg_x264_enc_settings_ctx_s ffmpeg_x264_enc_settings_ctx_t
 
typedef struct ffmpeg_x264_enc_ctx_s ffmpeg_x264_enc_ctx_t
 
typedef struct ffmpeg_x264_dec_settings_ctx_s ffmpeg_x264_dec_settings_ctx_t
 
typedef struct ffmpeg_x264_dec_ctx_s ffmpeg_x264_dec_ctx_t
 

Functions

static proc_ctx_tffmpeg_x264_enc_open (const proc_if_t *proc_if, const char *settings_str, log_ctx_t *log_ctx, va_list arg)
 
static void ffmpeg_x264_enc_close (proc_ctx_t **ref_proc_ctx)
 
static int ffmpeg_x264_enc_process_frame (proc_ctx_t *proc_ctx, fifo_ctx_t *iput_fifo_ctx, fifo_ctx_t *oput_fifo_ctx)
 
static int ffmpeg_x264_enc_rest_put (proc_ctx_t *proc_ctx, const char *str)
 
static int ffmpeg_x264_enc_rest_get (proc_ctx_t *proc_ctx, const proc_if_rest_fmt_t rest_fmt, void **ref_reponse)
 
static int ffmpeg_x264_enc_settings_ctx_init (volatile ffmpeg_x264_enc_settings_ctx_t *ffmpeg_x264_enc_settings_ctx, log_ctx_t *log_ctx)
 
static void ffmpeg_x264_enc_settings_ctx_deinit (volatile ffmpeg_x264_enc_settings_ctx_t *ffmpeg_x264_enc_settings_ctx, log_ctx_t *log_ctx)
 
static proc_ctx_tffmpeg_x264_dec_open (const proc_if_t *proc_if, const char *settings_str, log_ctx_t *log_ctx, va_list arg)
 
static void ffmpeg_x264_dec_close (proc_ctx_t **ref_proc_ctx)
 
static int ffmpeg_x264_dec_process_frame (proc_ctx_t *proc_ctx, fifo_ctx_t *iput_fifo_ctx, fifo_ctx_t *oput_fifo_ctx)
 
static int ffmpeg_x264_dec_rest_put (proc_ctx_t *proc_ctx, const char *str)
 
static int ffmpeg_x264_dec_rest_get (proc_ctx_t *proc_ctx, const proc_if_rest_fmt_t rest_fmt, void **ref_reponse)
 
static int ffmpeg_x264_dec_settings_ctx_init (volatile ffmpeg_x264_dec_settings_ctx_t *ffmpeg_x264_dec_settings_ctx, log_ctx_t *log_ctx)
 
static void ffmpeg_x264_dec_settings_ctx_deinit (volatile ffmpeg_x264_dec_settings_ctx_t *ffmpeg_x264_dec_settings_ctx, log_ctx_t *log_ctx)
 

Variables

const proc_if_t proc_if_ffmpeg_x264_enc
 
const proc_if_t proc_if_ffmpeg_x264_dec
 

Detailed Description

Author
Rafael Antoniello

Definition in file ffmpeg_x264.c.

Typedef Documentation

FFmpeg's x264 video decoder wrapper context structure.

FFmpeg's x264 video decoder settings context structure.

FFmpeg's x264 video encoder wrapper context structure.

FFmpeg's x264 video encoder settings context structure.

Function Documentation

static void ffmpeg_x264_dec_close ( proc_ctx_t **  ref_proc_ctx)
static

Implements the proc_if_s::close callback. See .proc_if.h for further details.

Definition at line 650 of file ffmpeg_x264.c.

static proc_ctx_t * ffmpeg_x264_dec_open ( const proc_if_t proc_if,
const char *  settings_str,
log_ctx_t log_ctx,
va_list  arg 
)
static

Implements the proc_if_s::open callback. See .proc_if.h for further details.

Definition at line 591 of file ffmpeg_x264.c.

static int ffmpeg_x264_dec_process_frame ( proc_ctx_t proc_ctx,
fifo_ctx_t iput_fifo_ctx,
fifo_ctx_t oput_fifo_ctx 
)
static

Implements the proc_if_s::process_frame callback. See .proc_if.h for further details.

Definition at line 681 of file ffmpeg_x264.c.

static int ffmpeg_x264_dec_rest_get ( proc_ctx_t proc_ctx,
const proc_if_rest_fmt_t  rest_fmt,
void **  ref_reponse 
)
static

Implements the proc_if_s::rest_get callback. See .proc_if.h for further details.

Definition at line 769 of file ffmpeg_x264.c.

static int ffmpeg_x264_dec_rest_put ( proc_ctx_t proc_ctx,
const char *  str 
)
static

Implements the proc_if_s::rest_put callback. See .proc_if.h for further details.

Definition at line 727 of file ffmpeg_x264.c.

static void ffmpeg_x264_dec_settings_ctx_deinit ( volatile ffmpeg_x264_dec_settings_ctx_t ffmpeg_x264_dec_settings_ctx,
log_ctx_t log_ctx 
)
static

Release specific x264 decoder settings (allocated in heap memory).

Parameters
ffmpeg_x264_dec_settings_ctx
log_ctx

Definition at line 900 of file ffmpeg_x264.c.

static int ffmpeg_x264_dec_settings_ctx_init ( volatile ffmpeg_x264_dec_settings_ctx_t ffmpeg_x264_dec_settings_ctx,
log_ctx_t log_ctx 
)
static

Initialize specific x264 decoder settings to defaults.

Parameters
ffmpeg_x264_dec_settings_ctx
log_ctx
Returns
Status code (STAT_SUCCESS code in case of success, for other code values please refer to .stat_codes.h).

Definition at line 870 of file ffmpeg_x264.c.

static void ffmpeg_x264_enc_close ( proc_ctx_t **  ref_proc_ctx)
static

Implements the proc_if_s::close callback. See .proc_if.h for further details.

Definition at line 253 of file ffmpeg_x264.c.

static proc_ctx_t * ffmpeg_x264_enc_open ( const proc_if_t proc_if,
const char *  settings_str,
log_ctx_t log_ctx,
va_list  arg 
)
static

Implements the proc_if_s::open callback. See .proc_if.h for further details.

Definition at line 194 of file ffmpeg_x264.c.

static int ffmpeg_x264_enc_process_frame ( proc_ctx_t proc_ctx,
fifo_ctx_t iput_fifo_ctx,
fifo_ctx_t oput_fifo_ctx 
)
static

Implements the proc_if_s::process_frame callback. See .proc_if.h for further details.

Definition at line 284 of file ffmpeg_x264.c.

static int ffmpeg_x264_enc_rest_get ( proc_ctx_t proc_ctx,
const proc_if_rest_fmt_t  rest_fmt,
void **  ref_reponse 
)
static

Implements the proc_if_s::rest_get callback. See .proc_if.h for further details.

Definition at line 423 of file ffmpeg_x264.c.

static int ffmpeg_x264_enc_rest_put ( proc_ctx_t proc_ctx,
const char *  str 
)
static

Implements the proc_if_s::rest_put callback. See .proc_if.h for further details.

Definition at line 330 of file ffmpeg_x264.c.

static void ffmpeg_x264_enc_settings_ctx_deinit ( volatile ffmpeg_x264_enc_settings_ctx_t ffmpeg_x264_enc_settings_ctx,
log_ctx_t log_ctx 
)
static

Release specific x264 encoder settings (allocated in heap memory).

Parameters
ffmpeg_x264_enc_settings_ctx
log_ctx

Definition at line 567 of file ffmpeg_x264.c.

static int ffmpeg_x264_enc_settings_ctx_init ( volatile ffmpeg_x264_enc_settings_ctx_t ffmpeg_x264_enc_settings_ctx,
log_ctx_t log_ctx 
)
static

Initialize specific x264 encoder settings to defaults.

Parameters
ffmpeg_x264_enc_settings_ctx
log_ctx
Returns
Status code (STAT_SUCCESS code in case of success, for other code values please refer to .stat_codes.h).

Definition at line 533 of file ffmpeg_x264.c.

Variable Documentation

const proc_if_t proc_if_ffmpeg_x264_dec
Initial value:
=
{
"ffmpeg_x264_dec", "decoder", "video/H264",
(uint64_t)(PROC_FEATURE_BITRATE|PROC_FEATURE_REGISTER_PTS|
PROC_FEATURE_LATENCY),
proc_send_frame_default1,
NULL,
proc_recv_frame_default1,
NULL,
NULL,
}
proc_frame_ctx_t * avframe_2_proc_frame_ctx(const void *avframe_arg)
static void ffmpeg_x264_dec_close(proc_ctx_t **ref_proc_ctx)
Definition: ffmpeg_x264.c:650
static proc_ctx_t * ffmpeg_x264_dec_open(const proc_if_t *proc_if, const char *settings_str, log_ctx_t *log_ctx, va_list arg)
Definition: ffmpeg_x264.c:591
static int ffmpeg_x264_dec_rest_put(proc_ctx_t *proc_ctx, const char *str)
Definition: ffmpeg_x264.c:727
void avpacket_release(void **ref_avpacket)
static int ffmpeg_x264_dec_rest_get(proc_ctx_t *proc_ctx, const proc_if_rest_fmt_t rest_fmt, void **ref_reponse)
Definition: ffmpeg_x264.c:769
void * proc_frame_ctx_2_avpacket(const proc_frame_ctx_t *proc_frame_ctx)
static int ffmpeg_x264_dec_process_frame(proc_ctx_t *proc_ctx, fifo_ctx_t *iput_fifo_ctx, fifo_ctx_t *oput_fifo_ctx)
Definition: ffmpeg_x264.c:681

Processor interface implementing the FFmpeg wrapper of the x264 decoder.

Definition at line 170 of file ffmpeg_x264.c.

const proc_if_t proc_if_ffmpeg_x264_enc
Initial value:
=
{
"ffmpeg_x264_enc", "encoder", "video/H264",
(uint64_t)(PROC_FEATURE_BITRATE|PROC_FEATURE_REGISTER_PTS|
PROC_FEATURE_LATENCY),
proc_send_frame_default1,
NULL,
proc_recv_frame_default1,
NULL,
NULL,
}
void avframe_release(void **ref_avfame)
static int ffmpeg_x264_enc_rest_put(proc_ctx_t *proc_ctx, const char *str)
Definition: ffmpeg_x264.c:330
proc_frame_ctx_t * avpacket_2_proc_frame_ctx(const void *avpacket_arg)
static proc_ctx_t * ffmpeg_x264_enc_open(const proc_if_t *proc_if, const char *settings_str, log_ctx_t *log_ctx, va_list arg)
Definition: ffmpeg_x264.c:194
static int ffmpeg_x264_enc_process_frame(proc_ctx_t *proc_ctx, fifo_ctx_t *iput_fifo_ctx, fifo_ctx_t *oput_fifo_ctx)
Definition: ffmpeg_x264.c:284
static int ffmpeg_x264_enc_rest_get(proc_ctx_t *proc_ctx, const proc_if_rest_fmt_t rest_fmt, void **ref_reponse)
Definition: ffmpeg_x264.c:423
static void ffmpeg_x264_enc_close(proc_ctx_t **ref_proc_ctx)
Definition: ffmpeg_x264.c:253
void * proc_frame_ctx_2_avframe(const proc_frame_ctx_t *proc_frame_ctx)

Processor interface implementing the FFmpeg wrapper of the x264 encoder.

Definition at line 150 of file ffmpeg_x264.c.