FFmpeg
Loading...
Searching...
No Matches
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, ...)
 Check that there is no mismatch for the SwsOpExec/SwsOpImpl offset values used by ops_static.
 
#define ENTRY(fname, ...)
 Check that there is no mismatch for the SwsOpExec/SwsOpImpl offset values used by ops_static.
 

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,
... )
Value:
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,
... )
Value:
{ .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) ( void )

Definition at line 50 of file ops.c.

◆ 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(), bohman(), box(), bwdif_vulkan_filter_frame(), call_resize_kernel(), check_filter_h_4x4(), collect_ops_compile(), cosine(), cubic(), cudascale_filter_init(), cuvid_output_frame(), DECL_SETUP(), DECL_SETUP(), DECL_SETUP(), DECL_SETUP(), 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_clamp(), ff_sws_setup_clear(), ff_sws_setup_scalar(), ff_sws_setup_scale(), 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(), hamming(), handle_mdcv(), handle_side_data(), handle_side_data(), hann(), init(), jinc(), 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(), quadratic(), 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(), sinc(), sphinx(), spline(), split_cb_shape_sign_unquant(), tonemap_vaapi_filter_frame(), transpose_vaapi_filter_frame(), triangle(), 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(), vvenc_set_verbository(), and welch().

◆ [struct]

const struct { ... } ops_entries[]

Referenced by aarch64_lookup(), and asmgen().

◆ backend_aarch64

const SwsOpBackend backend_aarch64
Initial value:
= {
.name = "aarch64",
.compile = aarch64_compile,
.hw_format = AV_PIX_FMT_NONE,
}
static int aarch64_compile(SwsContext *ctx, const SwsOpList *ops, SwsCompiledOp *out)
Definition ops.c:196
@ SWS_BACKEND_AARCH64
Chained AArch64 NEON kernels.
Definition swscale.h:119
@ AV_PIX_FMT_NONE
Definition pixfmt.h:72

Definition at line 268 of file ops.c.