|
FFmpeg
|
Go to the source code of this file.
Macros | |
| #define | Q(N) ((AVRational) { N, 1 }) |
| Copyright (C) 2025 Niklas Haas. More... | |
Functions | |
| static AVRational | ff_sws_pixel_expand (SwsPixelType from, SwsPixelType to) |
| static void | ff_sws_pack_op_decode (const SwsOp *op, uint64_t mask[4], int shift[4]) |
| int | ff_sws_solve_shuffle (const SwsOpList *ops, uint8_t shuffle[], int size, uint8_t clear_val, int *read_bytes, int *write_bytes) |
| "Solve" an op list into a fixed shuffle mask, with an optional ability to also directly clear the output value (for e.g. More... | |
| int | ff_sws_op_list_split_at (SwsOpList *ops1, SwsOpList **ops2, int index) |
| Split an op list into two at the given index. More... | |
| int | ff_sws_op_list_split_planes (SwsOpList *ops1, SwsOpList **ops2, SwsCompMask planes) |
| Reduce an op list into a reduced subset that operates only on a given subset of planes. More... | |
| #define Q | ( | N | ) | ((AVRational) { N, 1 }) |
Copyright (C) 2025 Niklas Haas.
This file is part of FFmpeg.
FFmpeg is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
FFmpeg is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with FFmpeg; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Definition at line 29 of file ops_internal.h.
|
inlinestatic |
Definition at line 31 of file ops_internal.h.
Referenced by ff_sws_apply_op_q(), and ff_sws_op_list_optimize().
|
inlinestatic |
Definition at line 43 of file ops_internal.h.
Referenced by ff_sws_apply_op_q().
| int ff_sws_solve_shuffle | ( | const SwsOpList * | ops, |
| uint8_t | shuffle[], | ||
| int | size, | ||
| uint8_t | clear_val, | ||
| int * | read_bytes, | ||
| int * | write_bytes | ||
| ) |
"Solve" an op list into a fixed shuffle mask, with an optional ability to also directly clear the output value (for e.g.
rgb24 -> rgb0). This can accept any operation chain that only consists of the following operations:
Basically, any operation that purely consists of moving around and reordering bytes within a single plane, can be turned into a shuffle mask.
| ops | The operation list to decompose. |
| shuffle | The output shuffle mask. |
| size | The size (in bytes) of the output shuffle mask. |
| clear_val | If nonzero, this index will be used to clear the output. |
| read_bytes | Returns the number of bytes read per shuffle iteration. |
| write_bytes | Returns the number of bytes written per shuffle iteration. |
Definition at line 873 of file ops_optimizer.c.
Referenced by solve_shuffle().
Split an op list into two at the given index.
The split will be mediated by a set of planar read/write operations, plus a swizzle (if necessary) to re-order only used components. If a split is performed, both output lists will be optimized before returning.
| ops1 | The first part of the split op list. Will be modified in-place. |
| ops2 | The second part of the split op list will be returned here, or NULL if no split was necessary. |
| index | The index of the operation to split before. The operation itself will be absent from ops1 and instead moved to the start of ops2. |
Returnse 0 or a negative error code.
Not all components may be needed; but we need the ones that are used to be contiguous for the write/read operations. So, first compress them into a linearly ascending list of components
Definition at line 1021 of file ops_optimizer.c.
Referenced by compile_subpass().
| int ff_sws_op_list_split_planes | ( | SwsOpList * | ops1, |
| SwsOpList ** | ops2, | ||
| SwsCompMask | planes | ||
| ) |
Reduce an op list into a reduced subset that operates only on a given subset of planes.
No effect if the output is not planar, or if the plane mask is empty or equal to all planes.
| ops1 | Updated in-place to contain only the selected planes. |
| ops2 | The removed remainder is returned here, or NULL if no-op. |
| planes | A mask of the plane indices to keep. |
Returns 0 or a negative error code.
Definition at line 840 of file ops_optimizer.c.
Referenced by compile_subpass().
1.8.17