FFmpeg
Macros | Functions | Variables
ops.c File Reference
#include "../ops_chain.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/tree.h"
#include "ops_impl_conv.c"
#include "ops_entries.c"

Go to the source code of this file.

Macros

#define ENTRY(fname, ...)   extern void fname(void);
 Check that there is no mismatch for the SwsOpExec/SwsOpImpl offset values used by ops_static. More...
 
#define ENTRY(fname, ...)   { .func = fname, .params = __VA_ARGS__ },
 Check that there is no mismatch for the SwsOpExec/SwsOpImpl offset values used by ops_static. More...
 

Functions

static SwsFuncPtr aarch64_lookup (const SwsAArch64OpImplParams *p)
 
static int aarch64_setup_linear (const SwsAArch64OpImplParams *p, const SwsOp *op, SwsImplResult *res)
 
static int aarch64_setup_dither (const SwsAArch64OpImplParams *p, const SwsOp *op, SwsImplResult *res)
 
static int aarch64_setup (const SwsOpList *ops, int block_size, int n, const SwsAArch64OpImplParams *p, SwsImplResult *out)
 
static int aarch64_compile (SwsContext *ctx, const SwsOpList *ops, SwsCompiledOp *out)
 

Variables

struct {
   void(*   func )(void)
 
   SwsAArch64OpImplParams   params
 
ops_entries []
 
const SwsOpBackend backend_aarch64
 

Macro Definition Documentation

◆ ENTRY [1/2]

#define ENTRY (   fname,
  ... 
)    extern void fname(void);

Check that there is no mismatch for the SwsOpExec/SwsOpImpl offset values used by ops_static.

NOTE: The check is performed here since this file only ever targets aarch64, differently from ops_static which may be built on any host.

Definition at line 45 of file ops.c.

◆ ENTRY [2/2]

#define ENTRY (   fname,
  ... 
)    { .func = fname, .params = __VA_ARGS__ },

Check that there is no mismatch for the SwsOpExec/SwsOpImpl offset values used by ops_static.

NOTE: The check is performed here since this file only ever targets aarch64, differently from ops_static which may be built on any host.

Definition at line 45 of file ops.c.

Function Documentation

◆ aarch64_lookup()

static SwsFuncPtr aarch64_lookup ( const SwsAArch64OpImplParams p)
static

Definition at line 59 of file ops.c.

Referenced by aarch64_compile().

◆ aarch64_setup_linear()

static int aarch64_setup_linear ( const SwsAArch64OpImplParams p,
const SwsOp op,
SwsImplResult res 
)
static

Compute number of full vector registers needed to pack all non-zero coefficients.

Copy non-zero coefficients, packed in sequential order, offset first. The same order must be followed in asmgen_op_linear().

Definition at line 68 of file ops.c.

Referenced by aarch64_setup().

◆ aarch64_setup_dither()

static int aarch64_setup_dither ( const SwsAArch64OpImplParams p,
const SwsOp op,
SwsImplResult res 
)
static

The input dither matrix is (1 << size_log2)² pixels large. It is periodic, so the x and y offsets should be masked to fit inside (1 << size_log2). The width of the matrix is assumed to be at least 8, which matches the maximum block_size for aarch64 asmgen when f32 operations (i.e., dithering) are used. This guarantees that the x offset is aligned and that reading block_size elements does not extend past the end of the row. The x offset doesn't change between components, so it is only required to be masked once. The y offset, on the other hand, may change per component, and would therefore need to be masked for every y_offset value. To simplify the execution, we over-allocate the number of rows of the output dither matrix by the largest y_offset value. This way, we only need to mask y offset once, and can safely increment the dither matrix pointer by fixed offsets for every y_offset change.

Definition at line 101 of file ops.c.

Referenced by aarch64_setup().

◆ aarch64_setup()

static int aarch64_setup ( const SwsOpList ops,
int  block_size,
int  n,
const SwsAArch64OpImplParams p,
SwsImplResult out 
)
static

Definition at line 150 of file ops.c.

Referenced by aarch64_compile().

◆ aarch64_compile()

static int aarch64_compile ( SwsContext ctx,
const SwsOpList ops,
SwsCompiledOp out 
)
static

Definition at line 196 of file ops.c.

Variable Documentation

◆ func

void(* func) (void)

Definition at line 50 of file ops.c.

Referenced by aarch64_compile(), and aarch64_lookup().

◆ params

Definition at line 51 of file ops.c.

Referenced by aarch64_collect_op(), aarch64_compile(), aarch64_lookup(), add_context_params(), apply_film_grain(), apply_grain_row(), av_dynamic_hdr_plus_from_t35(), av_film_grain_params_alloc(), blackman(), bwdif_vulkan_filter_frame(), call_resize_kernel(), check_filter_h_4x4(), collect_ops_compile(), cubic(), cudascale_filter_init(), cuvid_output_frame(), DECL_SETUP(), decode_frame(), deint_vaapi_build_filter_params(), deint_vaapi_filter_frame(), drawbox_vaapi_filter_frame(), dump_dynamic_hdr_plus(), dump_dynamic_hdr_vivid(), extract_lltask_from_task(), ff_aom_apply_film_grain(), ff_h274_apply_film_grain(), ff_nvdec_decode_init(), ff_nvenc_encode_close(), ff_parse_itu_t_t35_to_dynamic_hdr_vivid(), ff_rtp_parse_set_crypto(), ff_sipr_decode_frame_16k(), ff_srtp_set_crypto(), ff_sws_filter_generate(), ff_sws_setup_scalar(), ff_sws_setup_vec4(), ff_sws_uop_lookup(), ff_vaapi_vpp_init_params(), ff_vaapi_vpp_render_picture(), ff_vvc_store_sb_mvs(), fguv_32x32xn_c(), fgy_32x32xn_c(), framecrc_write_packet(), gaussian(), generate_grain_uv_c(), generate_grain_y_c(), handle_mdcv(), handle_side_data(), init(), kaiser(), linear_num_vregs(), misc_vaapi_filter_frame(), mmf_read_header(), nvdec_decoder_create(), nvdec_test_capabilities(), nvenc_check_cap(), nvenc_codec_specific_pic_params(), nvenc_open_session(), nvenc_set_timestamp(), ocio_create_display_view_processor(), ocio_create_output_colorspace_processor(), overlay_vaapi_blend(), pad_vaapi_filter_frame(), pitch_unquant_3tap(), print_dynamic_hdr10_plus(), print_dynamic_hdr_vivid(), print_op(), procamp_vaapi_filter_frame(), process_frame(), reconfig_encoder(), run_transcription(), scale_vaapi_filter_frame(), serialize_op(), set_params(), setup_clear(), setup_dither(), setup_filter_h(), setup_filter_h_4x4(), setup_filter_v(), setup_linear(), setup_rw_packed(), setup_scale(), split_cb_shape_sign_unquant(), tonemap_vaapi_filter_frame(), transpose_vaapi_filter_frame(), vaapi_encode_make_packed_header(), vaapi_vpp_colour_properties(), vaapi_vpp_render_single_pipeline_buffer(), vvc_deblock(), vvenc_init(), vvenc_log_callback(), vvenc_parse_vvenc_params(), vvenc_set_color_format(), vvenc_set_framerate(), vvenc_set_pic_format(), vvenc_set_rc_mode(), and vvenc_set_verbository().

◆ ops_entries

const { ... } ops_entries[]
Initial value:
= {
#define ENTRY(fname, ...)
}

Referenced by aarch64_lookup().

◆ backend_aarch64

const SwsOpBackend backend_aarch64
Initial value:
= {
.name = "aarch64",
.compile = aarch64_compile,
.hw_format = AV_PIX_FMT_NONE,
}

Definition at line 268 of file ops.c.

aarch64_compile
static int aarch64_compile(SwsContext *ctx, const SwsOpList *ops, SwsCompiledOp *out)
Definition: ops.c:196
AV_PIX_FMT_NONE
@ AV_PIX_FMT_NONE
Definition: pixfmt.h:72
SWS_BACKEND_AARCH64
@ SWS_BACKEND_AARCH64
Chained AArch64 NEON kernels.
Definition: swscale.h:119