FFmpeg
Data Structures | Macros | Functions | Variables
libxavs2.c File Reference
#include "xavs2.h"
#include "mpeg12.h"
#include "libavutil/avstring.h"

Go to the source code of this file.

Data Structures

struct  XAVS2EContext
 

Macros

#define xavs2_opt_set2(name, format, ...)
 
#define OFFSET(x)   offsetof(XAVS2EContext, x)
 
#define VE   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 

Functions

static av_cold int xavs2_init (AVCodecContext *avctx)
 
static void xavs2_copy_frame_with_shift (xavs2_picture_t *pic, const AVFrame *frame, const int shift_in)
 
static void xavs2_copy_frame (xavs2_picture_t *pic, const AVFrame *frame)
 
static int xavs2_encode_frame (AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
 
static av_cold int xavs2_close (AVCodecContext *avctx)
 

Variables

static const AVOption options []
 
static const AVClass libxavs2
 
static const AVCodecDefault xavs2_defaults []
 
AVCodec ff_libxavs2_encoder
 

Macro Definition Documentation

◆ xavs2_opt_set2

#define xavs2_opt_set2 (   name,
  format,
  ... 
)
Value:
do{ \
char opt_str[16] = {0}; \
int err; \
av_strlcatf(opt_str, sizeof(opt_str), format, __VA_ARGS__); \
err = cae->api->opt_set2(cae->param, name, opt_str); \
if (err < 0) {\
av_log(avctx, AV_LOG_WARNING, "Invalid value for %s: %s\n", name, opt_str);\
}\
} while(0);

Definition at line 29 of file libxavs2.c.

◆ OFFSET

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

Definition at line 259 of file libxavs2.c.

◆ VE

Definition at line 260 of file libxavs2.c.

Function Documentation

◆ xavs2_init()

static av_cold int xavs2_init ( AVCodecContext avctx)
static

Definition at line 60 of file libxavs2.c.

◆ xavs2_copy_frame_with_shift()

static void xavs2_copy_frame_with_shift ( xavs2_picture_t *  pic,
const AVFrame frame,
const int  shift_in 
)
static

Definition at line 125 of file libxavs2.c.

Referenced by xavs2_encode_frame().

◆ xavs2_copy_frame()

static void xavs2_copy_frame ( xavs2_picture_t *  pic,
const AVFrame frame 
)
static

Definition at line 147 of file libxavs2.c.

Referenced by xavs2_encode_frame().

◆ xavs2_encode_frame()

static int xavs2_encode_frame ( AVCodecContext avctx,
AVPacket pkt,
const AVFrame frame,
int got_packet 
)
static

Definition at line 167 of file libxavs2.c.

◆ xavs2_close()

static av_cold int xavs2_close ( AVCodecContext avctx)
static

Definition at line 245 of file libxavs2.c.

Variable Documentation

◆ options

const AVOption options[]
static
Initial value:
= {
{ "lcu_row_threads" , "number of parallel threads for rows" , OFFSET(lcu_row_threads) , AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, VE },
{ "initial_qp" , "Quantization initial parameter" , OFFSET(initial_qp) , AV_OPT_TYPE_INT, {.i64 = 34 }, 1, 63, VE },
{ "qp" , "Quantization parameter" , OFFSET(qp) , AV_OPT_TYPE_INT, {.i64 = 34 }, 1, 63, VE },
{ "max_qp" , "max qp for rate control" , OFFSET(max_qp) , AV_OPT_TYPE_INT, {.i64 = 55 }, 0, 63, VE },
{ "min_qp" , "min qp for rate control" , OFFSET(min_qp) , AV_OPT_TYPE_INT, {.i64 = 20 }, 0, 63, VE },
{ "speed_level" , "Speed level, higher is better but slower", OFFSET(preset_level) , AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 9, VE },
{ "log_level" , "log level: -1: none, 0: error, 1: warning, 2: info, 3: debug", OFFSET(log_level) , AV_OPT_TYPE_INT, {.i64 = 0 }, -1, 3, VE },
{ "xavs2-params" , "set the xavs2 configuration using a :-separated list of key=value parameters", OFFSET(xavs2_opts), AV_OPT_TYPE_DICT, { 0 }, 0, 0, VE },
{ NULL },
}

Definition at line 262 of file libxavs2.c.

◆ libxavs2

const AVClass libxavs2
static
Initial value:
= {
.class_name = "XAVS2EContext",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 274 of file libxavs2.c.

◆ xavs2_defaults

const AVCodecDefault xavs2_defaults[]
static
Initial value:
= {
{ "b", "0" },
{ "g", "48"},
{ "bf", "7" },
{ NULL },
}

Definition at line 281 of file libxavs2.c.

◆ ff_libxavs2_encoder

AVCodec ff_libxavs2_encoder
Initial value:
= {
.name = "libxavs2",
.long_name = NULL_IF_CONFIG_SMALL("libxavs2 AVS2-P2/IEEE1857.4"),
.priv_data_size = sizeof(XAVS2EContext),
.encode2 = xavs2_encode_frame,
.close = xavs2_close,
.caps_internal = FF_CODEC_CAP_AUTO_THREADS,
.priv_class = &libxavs2,
.defaults = xavs2_defaults,
.wrapper_name = "libxavs2",
}

Definition at line 288 of file libxavs2.c.

AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition: log.h:200
AVPixelFormat
AVPixelFormat
Pixel format.
Definition: pixfmt.h:64
name
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option name
Definition: writing_filters.txt:88
init
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:31
AV_CODEC_ID_AVS2
@ AV_CODEC_ID_AVS2
Definition: codec_id.h:243
libxavs2
static const AVClass libxavs2
Definition: libxavs2.c:274
format
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample format(the sample packing is implied by the sample format) and sample rate. The lists are not just lists
XAVS2EContext
Definition: libxavs2.c:39
AV_CODEC_CAP_OTHER_THREADS
#define AV_CODEC_CAP_OTHER_THREADS
Codec supports multithreading through a method other than slice- or frame-level multithreading.
Definition: codec.h:122
pix_fmts
static enum AVPixelFormat pix_fmts[]
Definition: libkvazaar.c:309
AV_PIX_FMT_YUV420P
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:66
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
NULL
#define NULL
Definition: coverity.c:32
xavs2_encode_frame
static int xavs2_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
Definition: libxavs2.c:167
xavs2_init
static av_cold int xavs2_init(AVCodecContext *avctx)
Definition: libxavs2.c:60
VE
#define VE
Definition: libxavs2.c:260
AV_OPT_TYPE_DICT
@ AV_OPT_TYPE_DICT
Definition: opt.h:232
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:235
FF_CODEC_CAP_AUTO_THREADS
#define FF_CODEC_CAP_AUTO_THREADS
Codec handles avctx->thread_count == 0 (auto) internally.
Definition: internal.h:80
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:117
xavs2_defaults
static const AVCodecDefault xavs2_defaults[]
Definition: libxavs2.c:281
OFFSET
#define OFFSET(x)
Definition: libxavs2.c:259
AV_PIX_FMT_NONE
@ AV_PIX_FMT_NONE
Definition: pixfmt.h:65
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Definition: opt.h:225
AV_CODEC_CAP_DELAY
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
Definition: codec.h:77
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:201
options
static const AVOption options[]
Definition: libxavs2.c:262
xavs2_close
static av_cold int xavs2_close(AVCodecContext *avctx)
Definition: libxavs2.c:245