VP8 encoder support via libvpx. More...
#include <vpx/vpx_encoder.h>
#include <vpx/vp8cx.h>
#include "avcodec.h"
#include "libavutil/base64.h"
#include "libavutil/opt.h"
#include "libavutil/mathematics.h"
Go to the source code of this file.
Data Structures | |
struct | FrameListData |
Portion of struct vpx_codec_cx_pkt from vpx_encoder.h. More... | |
struct | VP8EncoderContext |
Defines | |
#define | VPX_DISABLE_CTRL_TYPECHECKS 1 |
#define | VPX_CODEC_DISABLE_COMPAT 1 |
#define | VP8F_ERROR_RESILIENT 0x00000001 |
Enable measures appropriate for streaming over lossy links. | |
#define | VP8F_AUTO_ALT_REF 0x00000002 |
Enable automatic alternate reference frame generation. | |
#define | V AV_OPT_FLAG_VIDEO_PARAM |
#define | E AV_OPT_FLAG_ENCODING_PARAM |
Typedefs | |
typedef struct VP8EncoderContext | VP8Context |
Functions | |
static av_cold void | log_encoder_error (AVCodecContext *avctx, const char *desc) |
static av_cold void | dump_enc_cfg (AVCodecContext *avctx, const struct vpx_codec_enc_cfg *cfg) |
static void | coded_frame_add (void *list, struct FrameListData *cx_frame) |
static av_cold void | free_coded_frame (struct FrameListData *cx_frame) |
static av_cold void | free_frame_list (struct FrameListData *list) |
static av_cold int | codecctl_int (AVCodecContext *avctx, enum vp8e_enc_control_id id, int val) |
static av_cold int | vp8_free (AVCodecContext *avctx) |
static av_cold int | vp8_init (AVCodecContext *avctx) |
static void | cx_pktcpy (struct FrameListData *dst, const struct vpx_codec_cx_pkt *src) |
static int | storeframe (AVCodecContext *avctx, struct FrameListData *cx_frame, uint8_t *buf, int buf_size, AVFrame *coded_frame) |
Store coded frame information in format suitable for return from encode(). | |
static int | queue_frames (AVCodecContext *avctx, uint8_t *buf, int buf_size, AVFrame *coded_frame) |
Queue multiple output frames from the encoder, returning the front-most. | |
static int | vp8_encode (AVCodecContext *avctx, uint8_t *buf, int buf_size, void *data) |
Variables | |
static const AVOption | options [] |
class { | |
libvpx | |
av_default_item_name | |
options | |
}; | |
static const char * | ctlidstr [] |
String mappings for enum vp8e_enc_control_id. | |
AVCodec | ff_libvpx_encoder |
VP8 encoder support via libvpx.
Definition in file libvpxenc.c.
#define E AV_OPT_FLAG_ENCODING_PARAM |
Definition at line 74 of file libvpxenc.c.
#define V AV_OPT_FLAG_VIDEO_PARAM |
Definition at line 73 of file libvpxenc.c.
#define VP8F_AUTO_ALT_REF 0x00000002 |
Enable automatic alternate reference frame generation.
Definition at line 66 of file libvpxenc.c.
Referenced by vp8_init().
#define VP8F_ERROR_RESILIENT 0x00000001 |
Enable measures appropriate for streaming over lossy links.
Definition at line 65 of file libvpxenc.c.
#define VPX_CODEC_DISABLE_COMPAT 1 |
Definition at line 27 of file libvpxenc.c.
#define VPX_DISABLE_CTRL_TYPECHECKS 1 |
Definition at line 26 of file libvpxenc.c.
typedef struct VP8EncoderContext VP8Context |
static av_cold int codecctl_int | ( | AVCodecContext * | avctx, | |
enum vp8e_enc_control_id | id, | |||
int | val | |||
) | [static] |
Definition at line 209 of file libvpxenc.c.
Referenced by vp8_init().
static void coded_frame_add | ( | void * | list, | |
struct FrameListData * | cx_frame | |||
) | [static] |
Definition at line 182 of file libvpxenc.c.
Referenced by queue_frames().
static void cx_pktcpy | ( | struct FrameListData * | dst, | |
const struct vpx_codec_cx_pkt * | src | |||
) | [inline, static] |
Definition at line 379 of file libvpxenc.c.
Referenced by queue_frames().
static av_cold void dump_enc_cfg | ( | AVCodecContext * | avctx, | |
const struct vpx_codec_enc_cfg * | cfg | |||
) | [static] |
Definition at line 127 of file libvpxenc.c.
Referenced by vp8_init().
static av_cold void free_coded_frame | ( | struct FrameListData * | cx_frame | ) | [static] |
Definition at line 192 of file libvpxenc.c.
Referenced by free_frame_list(), and queue_frames().
static av_cold void free_frame_list | ( | struct FrameListData * | list | ) | [static] |
Definition at line 198 of file libvpxenc.c.
Referenced by vp8_free().
static av_cold void log_encoder_error | ( | AVCodecContext * | avctx, | |
const char * | desc | |||
) | [static] |
Definition at line 116 of file libvpxenc.c.
Referenced by codecctl_int(), vp8_encode(), and vp8_init().
static int queue_frames | ( | AVCodecContext * | avctx, | |
uint8_t * | buf, | |||
int | buf_size, | |||
AVFrame * | coded_frame | |||
) | [static] |
Queue multiple output frames from the encoder, returning the front-most.
In cases where vpx_codec_get_cx_data() returns more than 1 frame append the frame queue. Return the head frame if available.
Definition at line 427 of file libvpxenc.c.
Referenced by vp8_encode().
static int storeframe | ( | AVCodecContext * | avctx, | |
struct FrameListData * | cx_frame, | |||
uint8_t * | buf, | |||
int | buf_size, | |||
AVFrame * | coded_frame | |||
) | [static] |
Store coded frame information in format suitable for return from encode().
Write buffer information from cx_frame to buf & buf_size. Timing/frame details to coded_frame.
Definition at line 397 of file libvpxenc.c.
Referenced by queue_frames().
static int vp8_encode | ( | AVCodecContext * | avctx, | |
uint8_t * | buf, | |||
int | buf_size, | |||
void * | data | |||
) | [static] |
Definition at line 505 of file libvpxenc.c.
static av_cold int vp8_free | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 230 of file libvpxenc.c.
Referenced by vp8_init().
static av_cold int vp8_init | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 242 of file libvpxenc.c.
const { ... } [static] |
av_default_item_name |
Definition at line 90 of file libvpxenc.c.
const char* ctlidstr[] [static] |
{ [VP8E_UPD_ENTROPY] = "VP8E_UPD_ENTROPY", [VP8E_UPD_REFERENCE] = "VP8E_UPD_REFERENCE", [VP8E_USE_REFERENCE] = "VP8E_USE_REFERENCE", [VP8E_SET_ROI_MAP] = "VP8E_SET_ROI_MAP", [VP8E_SET_ACTIVEMAP] = "VP8E_SET_ACTIVEMAP", [VP8E_SET_SCALEMODE] = "VP8E_SET_SCALEMODE", [VP8E_SET_CPUUSED] = "VP8E_SET_CPUUSED", [VP8E_SET_ENABLEAUTOALTREF] = "VP8E_SET_ENABLEAUTOALTREF", [VP8E_SET_NOISE_SENSITIVITY] = "VP8E_SET_NOISE_SENSITIVITY", [VP8E_SET_SHARPNESS] = "VP8E_SET_SHARPNESS", [VP8E_SET_STATIC_THRESHOLD] = "VP8E_SET_STATIC_THRESHOLD", [VP8E_SET_TOKEN_PARTITIONS] = "VP8E_SET_TOKEN_PARTITIONS", [VP8E_GET_LAST_QUANTIZER] = "VP8E_GET_LAST_QUANTIZER", [VP8E_SET_ARNR_MAXFRAMES] = "VP8E_SET_ARNR_MAXFRAMES", [VP8E_SET_ARNR_STRENGTH] = "VP8E_SET_ARNR_STRENGTH", [VP8E_SET_ARNR_TYPE] = "VP8E_SET_ARNR_TYPE", [VP8E_SET_CQ_LEVEL] = "VP8E_SET_CQ_LEVEL", }
String mappings for enum vp8e_enc_control_id.
Definition at line 96 of file libvpxenc.c.
Referenced by codecctl_int().
{ "libvpx", AVMEDIA_TYPE_VIDEO, CODEC_ID_VP8, sizeof(VP8Context), vp8_init, vp8_encode, vp8_free, NULL, CODEC_CAP_DELAY, .pix_fmts = (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, .long_name = NULL_IF_CONFIG_SMALL("libvpx VP8"), .priv_class= &class, }
Definition at line 548 of file libvpxenc.c.
Definition at line 90 of file libvpxenc.c.
Referenced by avcodec_register_all().
options [static] |
{ {"speed", "", 0x42, FF_OPT_TYPE_INT, 3, -16, 16, V|E}, {"quality", "", 0x42, FF_OPT_TYPE_INT, VPX_DL_GOOD_QUALITY, INT_MIN, INT_MAX, V|E, "quality"}, {"best", NULL, 0, FF_OPT_TYPE_CONST, VPX_DL_BEST_QUALITY, INT_MIN, INT_MAX, V|E, "quality"}, {"good", NULL, 0, FF_OPT_TYPE_CONST, VPX_DL_GOOD_QUALITY, INT_MIN, INT_MAX, V|E, "quality"}, {"realtime", NULL, 0, FF_OPT_TYPE_CONST, VPX_DL_REALTIME, INT_MIN, INT_MAX, V|E, "quality"}, {"vp8flags", "", 0x42, FF_OPT_TYPE_FLAGS, 0, 0, UINT_MAX, V|E, "flags"}, {"error_resilient", "enable error resilience", 0, FF_OPT_TYPE_CONST, VP8F_ERROR_RESILIENT, INT_MIN, INT_MAX, V|E, "flags"}, {"altref", "enable use of alternate reference frames (VP8/2-pass only)", 0, FF_OPT_TYPE_CONST, VP8F_AUTO_ALT_REF, INT_MIN, INT_MAX, V|E, "flags"}, {"arnr_max_frames", "altref noise reduction max frame count", 0x42, FF_OPT_TYPE_INT, 0, 0, 15, V|E}, {"arnr_strength", "altref noise reduction filter strength", 0x42, FF_OPT_TYPE_INT, 3, 0, 6, V|E}, {"arnr_type", "altref noise reduction filter type", 0x42, FF_OPT_TYPE_INT, 3, 1, 3, V|E}, {NULL} }
Definition at line 76 of file libvpxenc.c.