MediaProcessors
Classes | Typedefs | Functions | Variables
ffmpeg_mp3.c File Reference
#include "ffmpeg_mp3.h"
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <pthread.h>
#include <libcjson/cJSON.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 "audio_settings.h"
#include "ffmpeg_audio.h"
#include "proc_frame_2_ffmpeg.h"
Include dependency graph for ffmpeg_mp3.c:

Go to the source code of this file.

Classes

struct  ffmpeg_mp3_enc_settings_ctx_s
 
struct  ffmpeg_mp3_enc_ctx_s
 
struct  ffmpeg_mp3_dec_settings_ctx_s
 
struct  ffmpeg_mp3_dec_ctx_s
 

Typedefs

typedef struct ffmpeg_mp3_enc_settings_ctx_s ffmpeg_mp3_enc_settings_ctx_t
 
typedef struct ffmpeg_mp3_enc_ctx_s ffmpeg_mp3_enc_ctx_t
 
typedef struct ffmpeg_mp3_dec_settings_ctx_s ffmpeg_mp3_dec_settings_ctx_t
 
typedef struct ffmpeg_mp3_dec_ctx_s ffmpeg_mp3_dec_ctx_t
 

Functions

static proc_ctx_tffmpeg_mp3_enc_open (const proc_if_t *proc_if, const char *settings_str, log_ctx_t *log_ctx, va_list arg)
 
static void ffmpeg_mp3_enc_close (proc_ctx_t **ref_proc_ctx)
 
static int ffmpeg_mp3_enc_process_frame (proc_ctx_t *proc_ctx, fifo_ctx_t *iput_fifo_ctx, fifo_ctx_t *oput_fifo_ctx)
 
static int ffmpeg_mp3_enc_rest_put (proc_ctx_t *proc_ctx, const char *str)
 
static int ffmpeg_mp3_enc_rest_get (proc_ctx_t *proc_ctx, const proc_if_rest_fmt_t rest_fmt, void **ref_reponse)
 
static int ffmpeg_mp3_enc_settings_ctx_init (volatile ffmpeg_mp3_enc_settings_ctx_t *ffmpeg_mp3_enc_settings_ctx, log_ctx_t *log_ctx)
 
static void ffmpeg_mp3_enc_settings_ctx_deinit (volatile ffmpeg_mp3_enc_settings_ctx_t *ffmpeg_mp3_enc_settings_ctx, log_ctx_t *log_ctx)
 
static proc_ctx_tffmpeg_mp3_dec_open (const proc_if_t *proc_if, const char *settings_str, log_ctx_t *log_ctx, va_list arg)
 
static void ffmpeg_mp3_dec_close (proc_ctx_t **ref_proc_ctx)
 
static int ffmpeg_mp3_dec_process_frame (proc_ctx_t *proc_ctx, fifo_ctx_t *iput_fifo_ctx, fifo_ctx_t *oput_fifo_ctx)
 
static int ffmpeg_mp3_dec_rest_put (proc_ctx_t *proc_ctx, const char *str)
 
static int ffmpeg_mp3_dec_rest_get (proc_ctx_t *proc_ctx, const proc_if_rest_fmt_t rest_fmt, void **ref_reponse)
 
static int ffmpeg_mp3_dec_settings_ctx_init (volatile ffmpeg_mp3_dec_settings_ctx_t *ffmpeg_mp3_dec_settings_ctx, log_ctx_t *log_ctx)
 
static void ffmpeg_mp3_dec_settings_ctx_deinit (volatile ffmpeg_mp3_dec_settings_ctx_t *ffmpeg_mp3_dec_settings_ctx, log_ctx_t *log_ctx)
 

Variables

const proc_if_t proc_if_ffmpeg_mp3_enc
 
const proc_if_t proc_if_ffmpeg_mp3_dec
 

Detailed Description

Author
Rafael Antoniello

Definition in file ffmpeg_mp3.c.

Typedef Documentation

FFmpeg's MP3 audio decoder context structure.

FFmpeg's MP3 audio decoder settings context structure.

FFmpeg's MP3 audio encoder context structure.

FFmpeg's MP3 audio encoder settings context structure.

Function Documentation

static void ffmpeg_mp3_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 582 of file ffmpeg_mp3.c.

static proc_ctx_t * ffmpeg_mp3_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 523 of file ffmpeg_mp3.c.

static int ffmpeg_mp3_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 613 of file ffmpeg_mp3.c.

static int ffmpeg_mp3_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 701 of file ffmpeg_mp3.c.

static int ffmpeg_mp3_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 659 of file ffmpeg_mp3.c.

static void ffmpeg_mp3_dec_settings_ctx_deinit ( volatile ffmpeg_mp3_dec_settings_ctx_t ffmpeg_mp3_dec_settings_ctx,
log_ctx_t log_ctx 
)
static

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

Parameters
ffmpeg_mp3_dec_settings_ctx
log_ctx

Definition at line 832 of file ffmpeg_mp3.c.

static int ffmpeg_mp3_dec_settings_ctx_init ( volatile ffmpeg_mp3_dec_settings_ctx_t ffmpeg_mp3_dec_settings_ctx,
log_ctx_t log_ctx 
)
static

Initialize specific MP3 decoder settings to defaults.

Parameters
ffmpeg_mp3_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 802 of file ffmpeg_mp3.c.

static void ffmpeg_mp3_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 248 of file ffmpeg_mp3.c.

static proc_ctx_t * ffmpeg_mp3_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 189 of file ffmpeg_mp3.c.

static int ffmpeg_mp3_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 280 of file ffmpeg_mp3.c.

static int ffmpeg_mp3_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 368 of file ffmpeg_mp3.c.

static int ffmpeg_mp3_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 326 of file ffmpeg_mp3.c.

static void ffmpeg_mp3_enc_settings_ctx_deinit ( volatile ffmpeg_mp3_enc_settings_ctx_t ffmpeg_mp3_enc_settings_ctx,
log_ctx_t log_ctx 
)
static

Release specific MP3 audio encoder settings (allocated in heap memory).

Parameters
ffmpeg_mp3_enc_settings_ctx
log_ctx

Definition at line 499 of file ffmpeg_mp3.c.

static int ffmpeg_mp3_enc_settings_ctx_init ( volatile ffmpeg_mp3_enc_settings_ctx_t ffmpeg_mp3_enc_settings_ctx,
log_ctx_t log_ctx 
)
static

Initialize specific MP3 audio encoder settings to defaults.

Parameters
ffmpeg_mp3_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 469 of file ffmpeg_mp3.c.

Variable Documentation

const proc_if_t proc_if_ffmpeg_mp3_dec
Initial value:
=
{
"ffmpeg_mp3_dec", "decoder", "audio/MPA",
(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 int ffmpeg_mp3_dec_rest_get(proc_ctx_t *proc_ctx, const proc_if_rest_fmt_t rest_fmt, void **ref_reponse)
Definition: ffmpeg_mp3.c:701
static proc_ctx_t * ffmpeg_mp3_dec_open(const proc_if_t *proc_if, const char *settings_str, log_ctx_t *log_ctx, va_list arg)
Definition: ffmpeg_mp3.c:523
static int ffmpeg_mp3_dec_process_frame(proc_ctx_t *proc_ctx, fifo_ctx_t *iput_fifo_ctx, fifo_ctx_t *oput_fifo_ctx)
Definition: ffmpeg_mp3.c:613
void avpacket_release(void **ref_avpacket)
void * proc_frame_ctx_2_avpacket(const proc_frame_ctx_t *proc_frame_ctx)
static void ffmpeg_mp3_dec_close(proc_ctx_t **ref_proc_ctx)
Definition: ffmpeg_mp3.c:582
static int ffmpeg_mp3_dec_rest_put(proc_ctx_t *proc_ctx, const char *str)
Definition: ffmpeg_mp3.c:659

Processor interface implementing the FFmpeg wrapper of the MP3 decoder.

Definition at line 165 of file ffmpeg_mp3.c.

const proc_if_t proc_if_ffmpeg_mp3_enc
Initial value:
=
{
"ffmpeg_mp3_enc", "encoder", "audio/MPA",
(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_mp3_enc_rest_put(proc_ctx_t *proc_ctx, const char *str)
Definition: ffmpeg_mp3.c:326
static int ffmpeg_mp3_enc_rest_get(proc_ctx_t *proc_ctx, const proc_if_rest_fmt_t rest_fmt, void **ref_reponse)
Definition: ffmpeg_mp3.c:368
proc_frame_ctx_t * avpacket_2_proc_frame_ctx(const void *avpacket_arg)
static int ffmpeg_mp3_enc_process_frame(proc_ctx_t *proc_ctx, fifo_ctx_t *iput_fifo_ctx, fifo_ctx_t *oput_fifo_ctx)
Definition: ffmpeg_mp3.c:280
static proc_ctx_t * ffmpeg_mp3_enc_open(const proc_if_t *proc_if, const char *settings_str, log_ctx_t *log_ctx, va_list arg)
Definition: ffmpeg_mp3.c:189
void * proc_frame_ctx_2_avframe(const proc_frame_ctx_t *proc_frame_ctx)
static void ffmpeg_mp3_enc_close(proc_ctx_t **ref_proc_ctx)
Definition: ffmpeg_mp3.c:248

Processor interface implementing the FFmpeg wrapper of the MP3 encoder.

Definition at line 145 of file ffmpeg_mp3.c.