#include "libavutil/pixdesc.h"
#include "libavutil/opt.h"
#include "dirac.h"
#include "put_bits.h"
#include "internal.h"
#include "version.h"
#include "vc2enc_dwt.h"
#include "diractab.h"
 
Go to the source code of this file.
 | 
| static av_always_inline void  | put_vc2_ue_uint (PutBitContext *pb, uint32_t val) | 
|   | 
| static av_always_inline int  | count_vc2_ue_uint (uint32_t val) | 
|   | 
| static void  | encode_parse_info (VC2EncContext *s, enum DiracParseCodes pcode) | 
|   | 
| static void  | encode_parse_params (VC2EncContext *s) | 
|   | 
| static void  | encode_frame_size (VC2EncContext *s) | 
|   | 
| static void  | encode_sample_fmt (VC2EncContext *s) | 
|   | 
| static void  | encode_scan_format (VC2EncContext *s) | 
|   | 
| static void  | encode_frame_rate (VC2EncContext *s) | 
|   | 
| static void  | encode_aspect_ratio (VC2EncContext *s) | 
|   | 
| static void  | encode_clean_area (VC2EncContext *s) | 
|   | 
| static void  | encode_signal_range (VC2EncContext *s) | 
|   | 
| static void  | encode_color_spec (VC2EncContext *s) | 
|   | 
| static void  | encode_source_params (VC2EncContext *s) | 
|   | 
| static void  | encode_seq_header (VC2EncContext *s) | 
|   | 
| static void  | encode_picture_header (VC2EncContext *s) | 
|   | 
| static void  | encode_slice_params (VC2EncContext *s) | 
|   | 
| static void  | init_quant_matrix (VC2EncContext *s) | 
|   | 
| static void  | encode_quant_matrix (VC2EncContext *s) | 
|   | 
| static void  | encode_transform_params (VC2EncContext *s) | 
|   | 
| static void  | encode_wavelet_transform (VC2EncContext *s) | 
|   | 
| static void  | encode_picture_start (VC2EncContext *s) | 
|   | 
| static void  | encode_subband (VC2EncContext *s, PutBitContext *pb, int sx, int sy, SubBand *b, int quant) | 
|   | 
| static int  | count_hq_slice (SliceArgs *slice, int quant_idx) | 
|   | 
| static int  | rate_control (AVCodecContext *avctx, void *arg) | 
|   | 
| static int  | calc_slice_sizes (VC2EncContext *s) | 
|   | 
| static int  | encode_hq_slice (AVCodecContext *avctx, void *arg) | 
|   | 
| static int  | encode_slices (VC2EncContext *s) | 
|   | 
| static int  | dwt_plane (AVCodecContext *avctx, void *arg) | 
|   | 
| static int  | encode_frame (VC2EncContext *s, AVPacket *avpkt, const AVFrame *frame, const char *aux_data, const int header_size, int field) | 
|   | 
| static av_cold int  | vc2_encode_frame (AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet) | 
|   | 
| static av_cold int  | vc2_encode_end (AVCodecContext *avctx) | 
|   | 
| static av_cold int  | vc2_encode_init (AVCodecContext *avctx) | 
|   | 
◆ SSIZE_ROUND
      
        
          | #define SSIZE_ROUND | 
          ( | 
            | 
          b | ) | 
             (FFALIGN((b), s->size_scaler) + 4 + s->prefix_bytes) | 
        
      
 
 
◆ SLICE_REDIST_TOTAL
      
        
          | #define SLICE_REDIST_TOTAL   150 | 
        
      
 
 
◆ QUANT
      
        
          | #define QUANT | 
          ( | 
            | 
          c,  | 
        
        
           | 
           | 
            | 
          mul,  | 
        
        
           | 
           | 
            | 
          add,  | 
        
        
           | 
           | 
            | 
          shift  | 
        
        
           | 
          ) | 
           |    (((mul) * (c) + (add)) >> (shift)) | 
        
      
 
 
◆ VC2ENC_FLAGS
◆ VC2_QM
| Enumerator | 
|---|
| VC2_QM_DEF  |  | 
| VC2_QM_COL  |  | 
| VC2_QM_FLAT  |  | 
| VC2_QM_NB  |  | 
Definition at line 78 of file vc2enc.c.
 
 
◆ put_vc2_ue_uint()
Definition at line 183 of file vc2enc.c.
Referenced by encode_aspect_ratio(), encode_color_spec(), encode_frame_rate(), encode_frame_size(), encode_parse_params(), encode_quant_matrix(), encode_sample_fmt(), encode_scan_format(), encode_seq_header(), encode_signal_range(), encode_slice_params(), encode_subband(), and encode_transform_params().
 
 
◆ count_vc2_ue_uint()
◆ encode_parse_info()
◆ encode_parse_params()
◆ encode_frame_size()
◆ encode_sample_fmt()
◆ encode_scan_format()
◆ encode_frame_rate()
◆ encode_aspect_ratio()
◆ encode_clean_area()
◆ encode_signal_range()
◆ encode_color_spec()
◆ encode_source_params()
◆ encode_seq_header()
◆ encode_picture_header()
◆ encode_slice_params()
◆ init_quant_matrix()
◆ encode_quant_matrix()
◆ encode_transform_params()
◆ encode_wavelet_transform()
◆ encode_picture_start()
◆ encode_subband()
◆ count_hq_slice()
◆ rate_control()
◆ calc_slice_sizes()
◆ encode_hq_slice()
◆ encode_slices()
◆ dwt_plane()
◆ encode_frame()
◆ vc2_encode_frame()
◆ vc2_encode_end()
◆ vc2_encode_init()
◆ base_video_fmts
◆ base_video_fmts_len
◆ vc2_qm_col_tab
Initial value:= {
    {20,  9, 15,  4},
    { 0,  6,  6,  4},
    { 0,  3,  3,  5},
    { 0,  3,  5,  1},
    { 0, 11, 10, 11}
}
 
Definition at line 426 of file vc2enc.c.
Referenced by init_quant_matrix().
 
 
◆ vc2_qm_flat_tab
Initial value:= {
    { 0,  0,  0,  0},
    { 0,  0,  0,  0},
    { 0,  0,  0,  0},
    { 0,  0,  0,  0},
    { 0,  0,  0,  0}
}
 
Definition at line 434 of file vc2enc.c.
Referenced by init_quant_matrix().
 
 
◆ vc2enc_options
Initial value:= {
        {
"9_7",          
"Deslauriers-Dubuc (9,7)", 0, 
AV_OPT_TYPE_CONST, {.i64 = 
VC2_TRANSFORM_9_7},    INT_MIN, INT_MAX, 
VC2ENC_FLAGS, 
"wavelet_idx"},
 
        {
"5_3",          
"LeGall (5,3)",            0, 
AV_OPT_TYPE_CONST, {.i64 = 
VC2_TRANSFORM_5_3},    INT_MIN, INT_MAX, 
VC2ENC_FLAGS, 
"wavelet_idx"},
 
}
 
Definition at line 1193 of file vc2enc.c.
 
 
◆ vc2enc_class
Initial value:= {
    .class_name = "SMPTE VC-2 encoder",
}
 
Definition at line 1210 of file vc2enc.c.
 
 
◆ vc2enc_defaults
Initial value:= {
    { "b",              "600000000"   },
}
 
Definition at line 1218 of file vc2enc.c.
 
 
◆ allowed_pix_fmts
◆ ff_vc2_encoder
 
#define FF_CODEC_CAP_INIT_THREADSAFE
The codec does not modify any global variables in the init function, allowing to call the init functi...
 
static av_cold int init(AVCodecContext *avctx)
 
#define AV_PIX_FMT_YUV420P10
 
static av_cold int vc2_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame, int *got_packet)
 
static const AVCodecDefault defaults[]
 
#define AV_PIX_FMT_YUV444P10
 
static const AVClass vc2enc_class
 
static enum AVPixelFormat pix_fmts[]
 
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
 
#define LIBAVUTIL_VERSION_INT
 
static const AVOption vc2enc_options[]
 
const char * av_default_item_name(void *ptr)
Return the context name.
 
#define AV_PIX_FMT_YUV422P10
 
static enum AVPixelFormat allowed_pix_fmts[]
 
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
 
#define AV_PIX_FMT_YUV422P12
 
static av_cold int vc2_encode_init(AVCodecContext *avctx)
 
#define AV_PIX_FMT_YUV444P12
 
#define AV_CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading.
 
static const AVCodecDefault vc2enc_defaults[]
 
static av_cold int vc2_encode_end(AVCodecContext *avctx)
 
#define AV_PIX_FMT_YUV420P12
 
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
 
@ AV_PIX_FMT_YUV422P
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
 
@ AV_CLASS_CATEGORY_ENCODER