VP8 encoder support via libvpx. More...
#include <vpx/vpx_encoder.h>#include <vpx/vp8cx.h>#include "avcodec.h"#include "internal.h"#include "libavutil/base64.h"#include "libavutil/mathematics.h"#include "libavutil/opt.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 | OFFSET(x) offsetof(VP8Context, x) |
| #define | VE AV_OPT_FLAG_VIDEO_PARAM | 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 char * | ctlidstr [] |
| String mappings for enum vp8e_enc_control_id. | |
| static const AVOption | options [] |
| class { | |
| class_name = "libvpx encoder" | |
| item_name = av_default_item_name | |
| option = options | |
| version = LIBAVUTIL_VERSION_INT | |
| }; | |
| static const AVCodecDefault | defaults [] |
| AVCodec | ff_libvpx_encoder |
VP8 encoder support via libvpx.
Definition in file libvpxenc.c.
| #define OFFSET | ( | x | ) | offsetof(VP8Context, x) |
Definition at line 523 of file libvpxenc.c.
| #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM |
Definition at line 524 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 181 of file libvpxenc.c.
Referenced by vp8_init().
| static void coded_frame_add | ( | void * | list, | |
| struct FrameListData * | cx_frame | |||
| ) | [static] |
Definition at line 154 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 354 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 99 of file libvpxenc.c.
Referenced by vp8_init().
| static av_cold void free_coded_frame | ( | struct FrameListData * | cx_frame | ) | [static] |
Definition at line 164 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 170 of file libvpxenc.c.
Referenced by vp8_free().
| static av_cold void log_encoder_error | ( | AVCodecContext * | avctx, | |
| const char * | desc | |||
| ) | [static] |
Definition at line 88 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 402 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 372 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 480 of file libvpxenc.c.
| static av_cold int vp8_free | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 202 of file libvpxenc.c.
Referenced by vp8_init().
| static av_cold int vp8_init | ( | AVCodecContext * | avctx | ) | [static] |
Definition at line 214 of file libvpxenc.c.
const { ... } [static] |
| class_name = "libvpx encoder" |
Definition at line 553 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",
}
String mappings for enum vp8e_enc_control_id.
Definition at line 69 of file libvpxenc.c.
Referenced by codecctl_int().
const AVCodecDefault defaults[] [static] |
{
{ "qmin", "-1" },
{ "qmax", "-1" },
{ "g", "-1" },
{ "keyint_min", "-1" },
{ NULL },
}
Definition at line 559 of file libvpxenc.c.
{
.name = "libvpx",
.type = AVMEDIA_TYPE_VIDEO,
.id = CODEC_ID_VP8,
.priv_data_size = sizeof(VP8Context),
.init = vp8_init,
.encode = vp8_encode,
.close = vp8_free,
.capabilities = CODEC_CAP_DELAY | CODEC_CAP_AUTO_THREADS,
.pix_fmts = (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
.long_name = NULL_IF_CONFIG_SMALL("libvpx VP8"),
.priv_class = &class,
.defaults = defaults,
}
Definition at line 567 of file libvpxenc.c.
| item_name = av_default_item_name |
Definition at line 554 of file libvpxenc.c.
Definition at line 555 of file libvpxenc.c.
{
{ "cpu-used", "Quality/Speed ratio modifier", OFFSET(cpu_used), AV_OPT_TYPE_INT, {INT_MIN}, INT_MIN, INT_MAX, VE},
{ "auto-alt-ref", "Enable use of alternate reference "
"frames (2-pass only)", OFFSET(auto_alt_ref), AV_OPT_TYPE_INT, {-1}, -1, 1, VE},
{ "lag-in-frames", "Number of frames to look ahead for "
"alternate reference frame selection", OFFSET(lag_in_frames), AV_OPT_TYPE_INT, {-1}, -1, INT_MAX, VE},
{ "arnr-maxframes", "altref noise reduction max frame count", OFFSET(arnr_max_frames), AV_OPT_TYPE_INT, {-1}, -1, INT_MAX, VE},
{ "arnr-strength", "altref noise reduction filter strength", OFFSET(arnr_strength), AV_OPT_TYPE_INT, {-1}, -1, INT_MAX, VE},
{ "arnr-type", "altref noise reduction filter type", OFFSET(arnr_type), AV_OPT_TYPE_INT, {-1}, -1, INT_MAX, VE, "arnr_type"},
{ "backward", NULL, 0, AV_OPT_TYPE_CONST, {1}, 0, 0, VE, "arnr_type" },
{ "forward", NULL, 0, AV_OPT_TYPE_CONST, {2}, 0, 0, VE, "arnr_type" },
{ "centered", NULL, 0, AV_OPT_TYPE_CONST, {3}, 0, 0, VE, "arnr_type" },
{ "deadline", "Time to spend encoding, in microseconds.", OFFSET(deadline), AV_OPT_TYPE_INT, {VPX_DL_GOOD_QUALITY}, INT_MIN, INT_MAX, VE, "quality"},
{ "best", NULL, 0, AV_OPT_TYPE_CONST, {VPX_DL_BEST_QUALITY}, 0, 0, VE, "quality"},
{ "good", NULL, 0, AV_OPT_TYPE_CONST, {VPX_DL_GOOD_QUALITY}, 0, 0, VE, "quality"},
{ "realtime", NULL, 0, AV_OPT_TYPE_CONST, {VPX_DL_REALTIME}, 0, 0, VE, "quality"},
{ "error-resilient", "Error resilience configuration", OFFSET(error_resilient), AV_OPT_TYPE_FLAGS, {0}, INT_MIN, INT_MAX, VE, "er"},
{ NULL }
}
Definition at line 525 of file libvpxenc.c.
Definition at line 556 of file libvpxenc.c.