FFmpeg  4.0
Data Structures | Macros | Functions | Variables
libxavs.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <stdint.h>
#include <float.h>
#include <xavs.h>
#include "avcodec.h"
#include "internal.h"
#include "libavutil/internal.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"

Go to the source code of this file.

Data Structures

struct  XavsContext
 

Macros

#define END_OF_STREAM   0x001
 
#define XAVS_PART_I8X8   0x002 /* Analyze i8x8 (requires 8x8 transform) */
 
#define XAVS_PART_P8X8   0x010 /* Analyze p16x8, p8x16 and p8x8 */
 
#define XAVS_PART_B8X8   0x100 /* Analyze b16x8, b*/
 
#define OFFSET(x)   offsetof(XavsContext, x)
 
#define VE   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 

Functions

static void XAVS_log (void *p, int level, const char *fmt, va_list args)
 
static int encode_nals (AVCodecContext *ctx, AVPacket *pkt, xavs_nal_t *nals, int nnal)
 
static int XAVS_frame (AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
 
static av_cold int XAVS_close (AVCodecContext *avctx)
 
static av_cold int XAVS_init (AVCodecContext *avctx)
 

Variables

static const AVOption options []
 
static const AVClass xavs_class
 
static const AVCodecDefault xavs_defaults []
 
AVCodec ff_libxavs_encoder
 

Macro Definition Documentation

◆ END_OF_STREAM

#define END_OF_STREAM   0x001

Definition at line 35 of file libxavs.c.

Referenced by write_substrs(), and XAVS_frame().

◆ XAVS_PART_I8X8

#define XAVS_PART_I8X8   0x002 /* Analyze i8x8 (requires 8x8 transform) */

Definition at line 37 of file libxavs.c.

◆ XAVS_PART_P8X8

#define XAVS_PART_P8X8   0x010 /* Analyze p16x8, p8x16 and p8x8 */

Definition at line 38 of file libxavs.c.

◆ XAVS_PART_B8X8

#define XAVS_PART_B8X8   0x100 /* Analyze b16x8, b*/

Definition at line 39 of file libxavs.c.

◆ OFFSET

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

Definition at line 426 of file libxavs.c.

◆ VE

Definition at line 427 of file libxavs.c.

Function Documentation

◆ XAVS_log()

static void XAVS_log ( void p,
int  level,
const char *  fmt,
va_list  args 
)
static

Definition at line 68 of file libxavs.c.

Referenced by XAVS_init().

◆ encode_nals()

static int encode_nals ( AVCodecContext ctx,
AVPacket pkt,
xavs_nal_t *  nals,
int  nnal 
)
static

Definition at line 83 of file libxavs.c.

Referenced by XAVS_frame().

◆ XAVS_frame()

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

Definition at line 118 of file libxavs.c.

◆ XAVS_close()

static av_cold int XAVS_close ( AVCodecContext avctx)
static

Definition at line 226 of file libxavs.c.

◆ XAVS_init()

static av_cold int XAVS_init ( AVCodecContext avctx)
static

Definition at line 240 of file libxavs.c.

Variable Documentation

◆ options

const AVOption options[]
static
Initial value:
= {
{ "crf", "Select the quality for constant quality mode", OFFSET(crf), AV_OPT_TYPE_FLOAT, {.dbl = -1 }, -1, FLT_MAX, VE },
{ "qp", "Constant quantization parameter rate control method",OFFSET(cqp), AV_OPT_TYPE_INT, {.i64 = -1 }, -1, INT_MAX, VE },
{ "b-bias", "Influences how often B-frames are used", OFFSET(b_bias), AV_OPT_TYPE_INT, {.i64 = INT_MIN}, INT_MIN, INT_MAX, VE },
{ "cplxblur", "Reduce fluctuations in QP (before curve compression)", OFFSET(cplxblur), AV_OPT_TYPE_FLOAT, {.dbl = -1 }, -1, FLT_MAX, VE},
{ "direct-pred", "Direct MV prediction mode", OFFSET(direct_pred), AV_OPT_TYPE_INT, {.i64 = -1 }, -1, INT_MAX, VE, "direct-pred" },
{ "none", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = XAVS_DIRECT_PRED_NONE }, 0, 0, VE, "direct-pred" },
{ "spatial", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = XAVS_DIRECT_PRED_SPATIAL }, 0, 0, VE, "direct-pred" },
{ "temporal", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = XAVS_DIRECT_PRED_TEMPORAL }, 0, 0, VE, "direct-pred" },
{ "auto", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = XAVS_DIRECT_PRED_AUTO }, 0, 0, VE, "direct-pred" },
{ "aud", "Use access unit delimiters.", OFFSET(aud), AV_OPT_TYPE_BOOL, {.i64 = -1 }, -1, 1, VE},
{ "mbtree", "Use macroblock tree ratecontrol.", OFFSET(mbtree), AV_OPT_TYPE_BOOL, {.i64 = -1 }, -1, 1, VE},
{ "mixed-refs", "One reference per partition, as opposed to one reference per macroblock", OFFSET(mixed_refs), AV_OPT_TYPE_BOOL, {.i64 = -1}, -1, 1, VE },
{ "fast-pskip", NULL, OFFSET(fast_pskip), AV_OPT_TYPE_BOOL, {.i64 = -1 }, -1, 1, VE},
{ "motion-est", "Set motion estimation method", OFFSET(motion_est), AV_OPT_TYPE_INT, { .i64 = XAVS_ME_DIA }, -1, XAVS_ME_TESA, VE, "motion-est"},
{ "dia", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = XAVS_ME_DIA }, INT_MIN, INT_MAX, VE, "motion-est" },
{ "hex", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = XAVS_ME_HEX }, INT_MIN, INT_MAX, VE, "motion-est" },
{ "umh", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = XAVS_ME_UMH }, INT_MIN, INT_MAX, VE, "motion-est" },
{ "esa", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = XAVS_ME_ESA }, INT_MIN, INT_MAX, VE, "motion-est" },
{ "tesa", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = XAVS_ME_TESA }, INT_MIN, INT_MAX, VE, "motion-est" },
{ "b_strategy", "Strategy to choose between I/P/B-frames", OFFSET(b_frame_strategy), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 2, VE},
{ "chromaoffset", "QP difference between chroma and luma", OFFSET(chroma_offset), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, VE},
{ "sc_threshold", "Scene change threshold", OFFSET(scenechange_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, VE},
{ "noise_reduction", "Noise reduction", OFFSET(noise_reduction), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, INT_MAX, VE},
{ NULL },
}
#define NULL
Definition: coverity.c:32
#define VE
Definition: libxavs.c:427
static int FUNC() aud(CodedBitstreamContext *ctx, RWContext *rw, H264RawAUD *current)
#define OFFSET(x)
Definition: libxavs.c:426

Definition at line 428 of file libxavs.c.

◆ xavs_class

const AVClass xavs_class
static
Initial value:
= {
.class_name = "libxavs",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:191
static const AVOption options[]
Definition: libxavs.c:428

Definition at line 456 of file libxavs.c.

◆ xavs_defaults

const AVCodecDefault xavs_defaults[]
static
Initial value:
= {
{ "b", "0" },
{ NULL },
}
#define NULL
Definition: coverity.c:32

Definition at line 463 of file libxavs.c.

◆ ff_libxavs_encoder

AVCodec ff_libxavs_encoder
Initial value:
= {
.name = "libxavs",
.long_name = NULL_IF_CONFIG_SMALL("libxavs Chinese AVS (Audio Video Standard)"),
.priv_data_size = sizeof(XavsContext),
.encode2 = XAVS_frame,
.close = XAVS_close,
.priv_class = &xavs_class,
.defaults = xavs_defaults,
.wrapper_name = "libxavs",
}
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
#define AV_CODEC_CAP_AUTO_THREADS
Codec supports avctx->thread_count == 0 (auto).
Definition: avcodec.h:1027
static av_cold int XAVS_close(AVCodecContext *avctx)
Definition: libxavs.c:226
#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: avcodec.h:984
static av_cold int XAVS_init(AVCodecContext *avctx)
Definition: libxavs.c:240
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:186
static const AVCodecDefault xavs_defaults[]
Definition: libxavs.c:463
static const AVClass xavs_class
Definition: libxavs.c:456
static int XAVS_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
Definition: libxavs.c:118
static enum AVPixelFormat pix_fmts[]
Definition: libkvazaar.c:266
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:62
AVPixelFormat
Pixel format.
Definition: pixfmt.h:60

Definition at line 468 of file libxavs.c.