Go to the documentation of this file.
34 int idx =
out->par.move.num_moves++;
35 out->par.move.dst[idx] =
dst;
36 out->par.move.src[idx] =
src;
51 uint8_t src_used[4] = { 0 };
52 bool done[4] = {
true,
true,
true,
true };
60 for (
bool progress =
true; progress; ) {
63 if (done[
dst] || src_used[
dst])
80 uint8_t cur_dst =
dst;
81 uint8_t
src = swizzle.
in[cur_dst];
86 src = swizzle.
in[cur_dst];
103 out->block_size = block_size;
110 for (
int i = 0;
i < 4;
i++) {
115 out->type =
op->type;
120 if (
op->rw.filter.op)
126 if (
op->rw.frac == 1)
128 else if (
op->rw.frac == 3)
138 if (
op->rw.filter.op)
144 if (
op->rw.frac == 1)
146 else if (
op->rw.frac == 3)
164 uint8_t
src =
op->swizzle.in[
i];
179 if (
op->convert.expand) {
180 switch (
op->convert.to) {
185 switch (
op->convert.to) {
216 switch (
op->rw.elems) {
227 for (
int i = 0;
i < 4;
i++) {
237 for (
int i = 0;
i < 4;
i++)
238 out->par.pack.pattern[
i] =
op->pack.pattern[
i];
242 for (
int i = 0;
i < 4 &&
op->pack.pattern[
i];
i++)
244 for (
int i = 0;
i < 4;
i++)
245 out->par.pack.pattern[
i] =
op->pack.pattern[
i];
249 out->par.shift.amount =
op->shift.amount;
253 for (
int i = 0;
i < 4;
i++) {
256 if (
op->clear.value[
i].num == 0) {
259 uint32_t
val =
op->clear.value[
i].num /
op->clear.value[
i].den;
271 for (
int i = 0;
i < 4;
i++) {
273 for (
int j = 0; j < 5; j++)
278 for (
int j = 0; j < 5; j++) {
280 if (j < 4 && k.
num == k.
den)
289 op->dither.y_offset[1] >= 0,
290 op->dither.y_offset[2] >= 0,
291 op->dither.y_offset[3] >= 0);
293 out->par.dither.y_offset[
i] =
op->dither.y_offset[
i];
295 out->par.dither.size_log2 =
op->dither.size_log2;
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame 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 they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
@ SWS_RW_PLANAR
Note: 1-component reads are either SWS_RW_PLANAR or SWS_RW_PACKED, depending on the underlying interp...
#define SWS_COMP_MASK(X, Y, Z, W)
static double val(void *priv, double ch)
#define SWS_COMP_ELEMS(N)
static void convert_swizzle_to_moves(const SwsOp *op, SwsAArch64OpImplParams *out)
#define SWS_OP_NEEDED(op, idx)
int flags
Flags modifying the (de)muxer behaviour.
static int op(uint8_t **dst, const uint8_t *dst_end, GetByteContext *gb, int pixel, int count, int *x, int width, int linesize)
Perform decode operation.
static AVFormatContext * ctx
uint8_t SwsCompMask
Bit-mask of components.
static av_const int ff_sws_pixel_type_size(SwsPixelType type)
static void swizzle_emit(SwsAArch64OpImplParams *out, uint8_t dst, uint8_t src)
NOTE: This file is #include'd directly by both the NEON backend and the sws_ops_aarch64 tool.
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
#define i(width, name, range_min, range_max)
64-bit Rational number (pair of numerator and denominator).
static int convert_to_aarch64_impl(SwsContext *ctx, const SwsOpList *ops, int n, int block_size, SwsAArch64OpImplParams *out)
Convert SwsOp to a SwsAArch64OpImplParams.
SwsAArch64OpImplParams describes the parameters for an SwsUOpType operation.
Helper struct for representing a list of operations.
Main external API structure.