libopenjpegenc.c File Reference

JPEG 2000 encoder using libopenjpeg. More...

#include "libavutil/avassert.h"
#include "libavutil/common.h"
#include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
#include "avcodec.h"
#include "internal.h"
#include <openjpeg.h>
Include dependency graph for libopenjpegenc.c:

Go to the source code of this file.

Data Structures

struct  LibOpenJPEGContext
 

Macros

#define OPJ_STATIC
 
#define OFFSET(x)   offsetof(LibOpenJPEGContext, x)
 
#define VE   AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 

Functions

static void error_callback (const char *msg, void *data)
 
static void warning_callback (const char *msg, void *data)
 
static void info_callback (const char *msg, void *data)
 
static opj_image_t * mj2_create_image (AVCodecContext *avctx, opj_cparameters_t *parameters)
 
static av_cold int libopenjpeg_encode_init (AVCodecContext *avctx)
 
static int libopenjpeg_copy_packed8 (AVCodecContext *avctx, const AVFrame *frame, opj_image_t *image)
 
static int libopenjpeg_copy_packed16 (AVCodecContext *avctx, const AVFrame *frame, opj_image_t *image)
 
static int libopenjpeg_copy_unpacked8 (AVCodecContext *avctx, const AVFrame *frame, opj_image_t *image)
 
static int libopenjpeg_copy_unpacked16 (AVCodecContext *avctx, const AVFrame *frame, opj_image_t *image)
 
static int libopenjpeg_encode_frame (AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
 
static av_cold int libopenjpeg_encode_close (AVCodecContext *avctx)
 

Variables

static const AVOption options []
 
class {
      class_name = "libopenjpeg"
 
      item_name = av_default_item_name
 
      option = options
 
      version = LIBAVUTIL_VERSION_INT
 
}; 
 
AVCodec ff_libopenjpeg_encoder
 

Detailed Description

JPEG 2000 encoder using libopenjpeg.

Definition in file libopenjpegenc.c.

Macro Definition Documentation

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

Definition at line 516 of file libopenjpegenc.c.

#define OPJ_STATIC

Definition at line 27 of file libopenjpegenc.c.

Definition at line 517 of file libopenjpegenc.c.

Function Documentation

static void error_callback ( const char *  msg,
void data 
)
static

Definition at line 60 of file libopenjpegenc.c.

Referenced by libopenjpeg_encode_init().

static void info_callback ( const char *  msg,
void data 
)
static

Definition at line 70 of file libopenjpegenc.c.

Referenced by libopenjpeg_encode_init().

static int libopenjpeg_copy_packed16 ( AVCodecContext avctx,
const AVFrame frame,
opj_image_t *  image 
)
static

Definition at line 283 of file libopenjpegenc.c.

Referenced by libopenjpeg_encode_frame().

static int libopenjpeg_copy_packed8 ( AVCodecContext avctx,
const AVFrame frame,
opj_image_t *  image 
)
static

Definition at line 253 of file libopenjpegenc.c.

Referenced by libopenjpeg_encode_frame().

static int libopenjpeg_copy_unpacked16 ( AVCodecContext avctx,
const AVFrame frame,
opj_image_t *  image 
)
static

Definition at line 346 of file libopenjpegenc.c.

Referenced by libopenjpeg_encode_frame().

static int libopenjpeg_copy_unpacked8 ( AVCodecContext avctx,
const AVFrame frame,
opj_image_t *  image 
)
static

Definition at line 314 of file libopenjpegenc.c.

Referenced by libopenjpeg_encode_frame().

static av_cold int libopenjpeg_encode_close ( AVCodecContext avctx)
static

Definition at line 506 of file libopenjpegenc.c.

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

Definition at line 380 of file libopenjpegenc.c.

static av_cold int libopenjpeg_encode_init ( AVCodecContext avctx)
static

Definition at line 173 of file libopenjpegenc.c.

static opj_image_t* mj2_create_image ( AVCodecContext avctx,
opj_cparameters_t *  parameters 
)
static

Definition at line 75 of file libopenjpegenc.c.

Referenced by libopenjpeg_encode_init().

static void warning_callback ( const char *  msg,
void data 
)
static

Definition at line 65 of file libopenjpegenc.c.

Referenced by libopenjpeg_encode_init().

Variable Documentation

const { ... }
class_name = "libopenjpeg"
private

Definition at line 546 of file libopenjpegenc.c.

AVCodec ff_libopenjpeg_encoder
Initial value:
= {
.name = "libopenjpeg",
.priv_data_size = sizeof(LibOpenJPEGContext),
.capabilities = 0,
.pix_fmts = (const enum AVPixelFormat[]) {
},
.long_name = NULL_IF_CONFIG_SMALL("OpenJPEG JPEG 2000"),
.priv_class = &class,
}
#define AV_PIX_FMT_YUVA422P16
Definition: pixfmt.h:307
#define AV_PIX_FMT_YUVA422P9
Definition: pixfmt.h:301
#define AV_PIX_FMT_YUVA420P10
Definition: pixfmt.h:303
#define AV_PIX_FMT_YUV444P14
Definition: pixfmt.h:287
#define AV_PIX_FMT_YUVA422P10
Definition: pixfmt.h:304
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
Definition: pixfmt.h:73
packed RGB 8:8:8, 24bpp, RGBRGB...
Definition: pixfmt.h:70
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
#define AV_PIX_FMT_RGBA64
Definition: pixfmt.h:292
#define AV_PIX_FMT_GBRP10
Definition: pixfmt.h:295
#define AV_PIX_FMT_YUV420P12
Definition: pixfmt.h:282
static av_cold int libopenjpeg_encode_close(AVCodecContext *avctx)
planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
Definition: pixfmt.h:105
#define AV_PIX_FMT_YUVA420P9
Definition: pixfmt.h:300
#define AV_PIX_FMT_GBRP9
Definition: pixfmt.h:294
#define AV_PIX_FMT_YUV444P16
Definition: pixfmt.h:290
#define AV_PIX_FMT_YUV422P12
Definition: pixfmt.h:283
#define AV_PIX_FMT_YUVA420P16
Definition: pixfmt.h:306
planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
Definition: pixfmt.h:219
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
#define AV_PIX_FMT_YUVA444P16
Definition: pixfmt.h:308
#define AV_PIX_FMT_RGB48
Definition: pixfmt.h:267
#define AV_PIX_FMT_YUV444P10
Definition: pixfmt.h:281
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
Definition: pixfmt.h:97
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
Definition: pixfmt.h:72
#define AV_PIX_FMT_YUV422P9
Definition: pixfmt.h:277
#define AV_PIX_FMT_GBRP16
Definition: pixfmt.h:298
8bit gray, 8bit alpha
Definition: pixfmt.h:141
#define AV_PIX_FMT_GRAY16
Definition: pixfmt.h:266
#define AV_PIX_FMT_YUVA444P10
Definition: pixfmt.h:305
#define AV_PIX_FMT_YUV444P9
Definition: pixfmt.h:278
#define AV_PIX_FMT_GBRP14
Definition: pixfmt.h:297
static av_cold int libopenjpeg_encode_init(AVCodecContext *avctx)
#define AV_PIX_FMT_YUV420P16
Definition: pixfmt.h:288
#define AV_PIX_FMT_YUV420P14
Definition: pixfmt.h:285
planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
Definition: pixfmt.h:218
static void close(AVCodecParserContext *s)
Definition: h264_parser.c:375
#define AV_PIX_FMT_YUV420P10
Definition: pixfmt.h:279
planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
Definition: pixfmt.h:74
#define AV_PIX_FMT_YUV420P9
Definition: pixfmt.h:276
#define AV_PIX_FMT_GBR24P
Definition: pixfmt.h:251
#define AV_PIX_FMT_YUV422P14
Definition: pixfmt.h:286
#define AV_PIX_FMT_GBRP12
Definition: pixfmt.h:296
#define AV_PIX_FMT_YUV422P10
Definition: pixfmt.h:280
#define AV_PIX_FMT_YUV444P12
Definition: pixfmt.h:284
static int libopenjpeg_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition: pixfmt.h:68
Y , 8bpp.
Definition: pixfmt.h:76
#define AV_PIX_FMT_YUVA444P9
Definition: pixfmt.h:302
planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
Definition: pixfmt.h:75
planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
Definition: pixfmt.h:103
AVPixelFormat
Pixel format.
Definition: pixfmt.h:66
#define AV_PIX_FMT_YUV422P16
Definition: pixfmt.h:289

Definition at line 552 of file libopenjpegenc.c.

item_name = av_default_item_name
private

Definition at line 547 of file libopenjpegenc.c.

option = options
private

Definition at line 548 of file libopenjpegenc.c.

const AVOption options[]
static
Initial value:
= {
{ "format", "Codec Format", OFFSET(format), AV_OPT_TYPE_INT, { .i64 = CODEC_JP2 }, CODEC_J2K, CODEC_JP2, VE, "format" },
{ "j2k", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CODEC_J2K }, 0, 0, VE, "format" },
{ "jp2", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CODEC_JP2 }, 0, 0, VE, "format" },
{ "profile", NULL, OFFSET(profile), AV_OPT_TYPE_INT, { .i64 = STD_RSIZ }, STD_RSIZ, CINEMA4K, VE, "profile" },
{ "jpeg2000", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = STD_RSIZ }, 0, 0, VE, "profile" },
{ "cinema2k", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CINEMA2K }, 0, 0, VE, "profile" },
{ "cinema4k", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CINEMA4K }, 0, 0, VE, "profile" },
{ "cinema_mode", "Digital Cinema", OFFSET(cinema_mode), AV_OPT_TYPE_INT, { .i64 = OFF }, OFF, CINEMA4K_24, VE, "cinema_mode" },
{ "off", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = OFF }, 0, 0, VE, "cinema_mode" },
{ "2k_24", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CINEMA2K_24 }, 0, 0, VE, "cinema_mode" },
{ "2k_48", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CINEMA2K_48 }, 0, 0, VE, "cinema_mode" },
{ "4k_24", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CINEMA4K_24 }, 0, 0, VE, "cinema_mode" },
{ "prog_order", "Progression Order", OFFSET(prog_order), AV_OPT_TYPE_INT, { .i64 = LRCP }, LRCP, CPRL, VE, "prog_order" },
{ "lrcp", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = LRCP }, 0, 0, VE, "prog_order" },
{ "rlcp", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = RLCP }, 0, 0, VE, "prog_order" },
{ "rpcl", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = RPCL }, 0, 0, VE, "prog_order" },
{ "pcrl", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = PCRL }, 0, 0, VE, "prog_order" },
{ "cprl", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPRL }, 0, 0, VE, "prog_order" },
{ "numresolution", NULL, OFFSET(numresolution), AV_OPT_TYPE_INT, { .i64 = 6 }, 1, INT_MAX, VE },
{ "numlayers", NULL, OFFSET(numlayers), AV_OPT_TYPE_INT, { .i64 = 1 }, 1, 10, VE },
{ "disto_alloc", NULL, OFFSET(disto_alloc), AV_OPT_TYPE_INT, { .i64 = 1 }, 0, 1, VE },
{ "fixed_alloc", NULL, OFFSET(fixed_alloc), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE },
{ "fixed_quality", NULL, OFFSET(fixed_quality), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE },
{ NULL },
}
#define VE
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFilterBuffer 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
NULL
Definition: eval.c:55
#define OFFSET(x)

Definition at line 518 of file libopenjpegenc.c.

version = LIBAVUTIL_VERSION_INT
private

Definition at line 549 of file libopenjpegenc.c.