FFmpeg
|
Color conversion and scaling library. More...
Files | |
file | swscale.h |
Data Structures | |
struct | SwsVector |
struct | SwsFilter |
Macros | |
#define | SWS_FAST_BILINEAR 1 |
#define | SWS_BILINEAR 2 |
#define | SWS_BICUBIC 4 |
#define | SWS_X 8 |
#define | SWS_POINT 0x10 |
#define | SWS_AREA 0x20 |
#define | SWS_BICUBLIN 0x40 |
#define | SWS_GAUSS 0x80 |
#define | SWS_SINC 0x100 |
#define | SWS_LANCZOS 0x200 |
#define | SWS_SPLINE 0x400 |
#define | SWS_SRC_V_CHR_DROP_MASK 0x30000 |
#define | SWS_SRC_V_CHR_DROP_SHIFT 16 |
#define | SWS_PARAM_DEFAULT 123456 |
#define | SWS_PRINT_INFO 0x1000 |
#define | SWS_FULL_CHR_H_INT 0x2000 |
Perform full chroma upsampling when upscaling to RGB. More... | |
#define | SWS_FULL_CHR_H_INP 0x4000 |
Perform full chroma interpolation when downscaling RGB sources. More... | |
#define | SWS_DIRECT_BGR 0x8000 |
#define | SWS_ACCURATE_RND 0x40000 |
#define | SWS_BITEXACT 0x80000 |
#define | SWS_ERROR_DIFFUSION 0x800000 |
#define | SWS_MAX_REDUCE_CUTOFF 0.002 |
#define | SWS_CS_ITU709 1 |
#define | SWS_CS_FCC 4 |
#define | SWS_CS_ITU601 5 |
#define | SWS_CS_ITU624 5 |
#define | SWS_CS_SMPTE170M 5 |
#define | SWS_CS_SMPTE240M 7 |
#define | SWS_CS_DEFAULT 5 |
#define | SWS_CS_BT2020 9 |
Functions | |
unsigned | swscale_version (void) |
const char * | swscale_configuration (void) |
Return the libswscale build-time configuration. More... | |
const char * | swscale_license (void) |
Return the libswscale license. More... | |
const AVClass * | sws_get_class (void) |
Get the AVClass for swsContext. More... | |
SwsContext * | sws_alloc_context (void) |
Allocate an empty SwsContext. More... | |
void | sws_free_context (SwsContext **ctx) |
Free the context and everything associated with it, and write NULL to the provided pointer. More... | |
int | sws_test_format (enum AVPixelFormat format, int output) |
Test if a given pixel format is supported. More... | |
int | sws_test_colorspace (enum AVColorSpace colorspace, int output) |
Test if a given color space is supported. More... | |
int | sws_test_primaries (enum AVColorPrimaries primaries, int output) |
Test if a given set of color primaries is supported. More... | |
int | sws_test_transfer (enum AVColorTransferCharacteristic trc, int output) |
Test if a given color transfer function is supported. More... | |
int | sws_test_frame (const AVFrame *frame, int output) |
Helper function to run all sws_test_* against a frame, as well as testing the basic frame properties for sanity. More... | |
int | sws_is_noop (const AVFrame *dst, const AVFrame *src) |
Check if a given conversion is a noop. More... | |
const int * | sws_getCoefficients (int colorspace) |
Return a pointer to yuv<->rgb coefficients for the given colorspace suitable for sws_setColorspaceDetails(). More... | |
int | sws_isSupportedInput (enum AVPixelFormat pix_fmt) |
Return a positive value if pix_fmt is a supported input format, 0 otherwise. More... | |
int | sws_isSupportedOutput (enum AVPixelFormat pix_fmt) |
Return a positive value if pix_fmt is a supported output format, 0 otherwise. More... | |
int | sws_isSupportedEndiannessConversion (enum AVPixelFormat pix_fmt) |
av_warn_unused_result int | sws_init_context (SwsContext *sws_context, SwsFilter *srcFilter, SwsFilter *dstFilter) |
Initialize the swscaler context sws_context. More... | |
void | sws_freeContext (SwsContext *swsContext) |
Free the swscaler context swsContext. More... | |
SwsContext * | sws_getContext (int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param) |
Allocate and return an SwsContext. More... | |
int | sws_scale (SwsContext *c, const uint8_t *const srcSlice[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[]) |
Scale the image slice in srcSlice and put the resulting scaled slice in the image in dst. More... | |
int | sws_scale_frame (SwsContext *c, AVFrame *dst, const AVFrame *src) |
Scale source data from src and write the output to dst. More... | |
int | sws_frame_start (SwsContext *c, AVFrame *dst, const AVFrame *src) |
Initialize the scaling process for a given pair of source/destination frames. More... | |
void | sws_frame_end (SwsContext *c) |
Finish the scaling process for a pair of source/destination frames previously submitted with sws_frame_start(). More... | |
int | sws_send_slice (SwsContext *c, unsigned int slice_start, unsigned int slice_height) |
Indicate that a horizontal slice of input data is available in the source frame previously provided to sws_frame_start(). More... | |
int | sws_receive_slice (SwsContext *c, unsigned int slice_start, unsigned int slice_height) |
Request a horizontal slice of the output data to be written into the frame previously provided to sws_frame_start(). More... | |
unsigned int | sws_receive_slice_alignment (const SwsContext *c) |
Get the alignment required for slices. More... | |
int | sws_setColorspaceDetails (SwsContext *c, const int inv_table[4], int srcRange, const int table[4], int dstRange, int brightness, int contrast, int saturation) |
int | sws_getColorspaceDetails (SwsContext *c, int **inv_table, int *srcRange, int **table, int *dstRange, int *brightness, int *contrast, int *saturation) |
SwsVector * | sws_allocVec (int length) |
Allocate and return an uninitialized vector with length coefficients. More... | |
SwsVector * | sws_getGaussianVec (double variance, double quality) |
Return a normalized Gaussian curve used to filter stuff quality = 3 is high quality, lower is lower quality. More... | |
void | sws_scaleVec (SwsVector *a, double scalar) |
Scale all the coefficients of a by the scalar value. More... | |
void | sws_normalizeVec (SwsVector *a, double height) |
Scale all the coefficients of a so that their sum equals height. More... | |
void | sws_freeVec (SwsVector *a) |
SwsFilter * | sws_getDefaultFilter (float lumaGBlur, float chromaGBlur, float lumaSharpen, float chromaSharpen, float chromaHShift, float chromaVShift, int verbose) |
void | sws_freeFilter (SwsFilter *filter) |
SwsContext * | sws_getCachedContext (SwsContext *context, int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flags, SwsFilter *srcFilter, SwsFilter *dstFilter, const double *param) |
Check if context can be reused, otherwise reallocate a new one. More... | |
void | sws_convertPalette8ToPacked32 (const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette) |
Convert an 8-bit paletted frame into a frame with a color depth of 32 bits. More... | |
void | sws_convertPalette8ToPacked24 (const uint8_t *src, uint8_t *dst, int num_pixels, const uint8_t *palette) |
Convert an 8-bit paletted frame into a frame with a color depth of 24 bits. More... | |
Color conversion and scaling library.
Return the LIBSWSCALE_VERSION_INT constant.
#define SWS_BILINEAR 2 |
#define SWS_FULL_CHR_H_INT 0x2000 |
Perform full chroma upsampling when upscaling to RGB.
For example, when converting 50x50 yuv420p to 100x100 rgba, setting this flag will scale the chroma plane from 25x25 to 100x100 (4:4:4), and then convert the 100x100 yuv444p image to rgba in the final output step.
Without this flag, the chroma plane is instead scaled to 50x100 (4:2:2), with a single chroma sample being re-used for both of the horizontally adjacent RGBA output pixels.
#define SWS_FULL_CHR_H_INP 0x4000 |
Perform full chroma interpolation when downscaling RGB sources.
For example, when converting a 100x100 rgba source to 50x50 yuv444p, setting this flag will generate a 100x100 (4:4:4) chroma plane, which is then downscaled to the required 50x50.
Without this flag, the chroma plane is instead generated at 50x100 (dropping every other pixel), before then being downscaled to the required 50x50 resolution.
const char* swscale_configuration | ( | void | ) |
const char* swscale_license | ( | void | ) |
const AVClass* sws_get_class | ( | void | ) |
Get the AVClass for swsContext.
It can be used in combination with AV_OPT_SEARCH_FAKE_OBJ for examining options.
Definition at line 97 of file options.c.
Referenced by child_class_iterate(), opt_default(), scale2ref_child_class_iterate(), and show_help_default().
SwsContext* sws_alloc_context | ( | void | ) |
Allocate an empty SwsContext.
This must be filled and passed to sws_init_context(). For filling see AVOptions, options.c and sws_setColorspaceDetails().
Definition at line 1227 of file utils.c.
Referenced by alloc_set_opts(), check_chrConvertRange(), check_hscale(), check_input_planar_rgb_to_a(), check_input_planar_rgb_to_uv(), check_input_planar_rgb_to_y(), check_lumConvertRange(), check_output_yuv2gbrp(), check_yuv2yuv1(), check_yuv2yuvX(), config_props(), context_init_threaded(), doTest(), draw_qrcode(), LLVMFuzzerTestOneInput(), output_single_frame(), preinit(), and sws_getCachedContext().
void sws_free_context | ( | SwsContext ** | ctx | ) |
int sws_test_format | ( | enum AVPixelFormat | format, |
int | output | ||
) |
Test if a given pixel format is supported.
output | If 0, test if compatible with the source/input frame; otherwise, with the destination/output frame. |
format | The format to check. |
Definition at line 2718 of file utils.c.
Referenced by ff_test_fmt().
int sws_test_colorspace | ( | enum AVColorSpace | colorspace, |
int | output | ||
) |
Test if a given color space is supported.
output | If 0, test if compatible with the source/input frame; otherwise, with the destination/output frame. |
colorspace | The colorspace to check. |
Definition at line 2723 of file utils.c.
Referenced by ff_test_fmt().
int sws_test_primaries | ( | enum AVColorPrimaries | primaries, |
int | output | ||
) |
Test if a given set of color primaries is supported.
output | If 0, test if compatible with the source/input frame; otherwise, with the destination/output frame. |
primaries | The color primaries to check. |
Definition at line 2740 of file utils.c.
Referenced by ff_test_fmt().
int sws_test_transfer | ( | enum AVColorTransferCharacteristic | trc, |
int | output | ||
) |
Test if a given color transfer function is supported.
output | If 0, test if compatible with the source/input frame; otherwise, with the destination/output frame. |
trc | The color transfer function to check. |
Definition at line 2746 of file utils.c.
Referenced by ff_test_fmt().
int sws_test_frame | ( | const AVFrame * | frame, |
int | output | ||
) |
const int* sws_getCoefficients | ( | int | colorspace | ) |
Return a pointer to yuv<->rgb coefficients for the given colorspace suitable for sws_setColorspaceDetails().
colorspace | One of the SWS_CS_* macros. If invalid, SWS_CS_DEFAULT is used. |
Definition at line 61 of file yuv2rgb.c.
Referenced by config_props().
int sws_isSupportedInput | ( | enum AVPixelFormat | pix_fmt | ) |
Return a positive value if pix_fmt is a supported input format, 0 otherwise.
Definition at line 374 of file utils.c.
Referenced by sws_init_single_context(), and sws_test_format().
int sws_isSupportedOutput | ( | enum AVPixelFormat | pix_fmt | ) |
Return a positive value if pix_fmt is a supported output format, 0 otherwise.
Definition at line 380 of file utils.c.
Referenced by sws_init_single_context(), and sws_test_format().
int sws_isSupportedEndiannessConversion | ( | enum AVPixelFormat | pix_fmt | ) |
[in] | pix_fmt | the pixel format |
Definition at line 386 of file utils.c.
Referenced by query_formats(), and sws_init_single_context().
av_warn_unused_result int sws_init_context | ( | SwsContext * | sws_context, |
SwsFilter * | srcFilter, | ||
SwsFilter * | dstFilter | ||
) |
Initialize the swscaler context sws_context.
Definition at line 2081 of file utils.c.
Referenced by check_chrConvertRange(), check_hscale(), check_input_planar_rgb_to_a(), check_input_planar_rgb_to_uv(), check_input_planar_rgb_to_y(), check_lumConvertRange(), check_output_yuv2gbrp(), check_yuv2yuv1(), check_yuv2yuvX(), config_props(), doTest(), draw_qrcode(), LLVMFuzzerTestOneInput(), output_single_frame(), sws_getCachedContext(), sws_getContext(), sws_init_single_context(), and sws_setColorspaceDetails().
void sws_freeContext | ( | SwsContext * | swsContext | ) |
Free the swscaler context swsContext.
If swsContext is NULL, then does nothing.
Definition at line 2446 of file utils.c.
Referenced by check_chrConvertRange(), check_hscale(), check_input_planar_rgb_to_a(), check_input_planar_rgb_to_uv(), check_input_planar_rgb_to_y(), check_lumConvertRange(), check_output_yuv2gbrp(), check_semiplanar(), check_yuv2rgb(), check_yuv2yuv1(), check_yuv2yuvX(), checkasm_check_sw_rgb(), close_filter_param(), close_stream(), config_props(), doTest(), draw_qrcode(), ff_frame_to_dnn_classify(), ff_frame_to_dnn_detect(), ff_proc_from_dnn_to_frame(), ff_proc_from_frame_to_dnn(), ff_scale_image(), LLVMFuzzerTestOneInput(), main(), output_single_frame(), stream_close(), sws_free_context(), sws_getCachedContext(), sws_getContext(), sws_init_single_context(), and uninit().
SwsContext* sws_getContext | ( | int | srcW, |
int | srcH, | ||
enum AVPixelFormat | srcFormat, | ||
int | dstW, | ||
int | dstH, | ||
enum AVPixelFormat | dstFormat, | ||
int | flags, | ||
SwsFilter * | srcFilter, | ||
SwsFilter * | dstFilter, | ||
const double * | param | ||
) |
Allocate and return an SwsContext.
You need it to perform scaling/conversion operations using sws_scale().
srcW | the width of the source image |
srcH | the height of the source image |
srcFormat | the source image format |
dstW | the width of the destination image |
dstH | the height of the destination image |
dstFormat | the destination image format |
flags | specify which algorithm and options to use for rescaling |
param | extra parameters to tune the used scaler For SWS_BICUBIC param[0] and [1] tune the shape of the basis function, param[0] tunes f(1) and param[1] f´(1) For SWS_GAUSS param[0] tunes the exponent and thus cutoff frequency For SWS_LANCZOS param[0] tunes the width of the window function |
Definition at line 2115 of file utils.c.
Referenced by check_semiplanar(), check_yuv2rgb(), checkasm_check_sw_rgb(), config_output(), doTest(), ff_frame_to_dnn_classify(), ff_frame_to_dnn_detect(), ff_proc_from_dnn_to_frame(), ff_proc_from_frame_to_dnn(), ff_scale_image(), get_video_frame(), main(), open_filter_param(), prepare_uv_scale(), process_frame(), recon_frame_process(), and sws_init_single_context().
int sws_scale | ( | SwsContext * | sws, |
const uint8_t *const | srcSlice[], | ||
const int | srcStride[], | ||
int | srcSliceY, | ||
int | srcSliceH, | ||
uint8_t *const | dst[], | ||
const int | dstStride[] | ||
) |
Scale the image slice in srcSlice and put the resulting scaled slice in the image in dst.
A slice is a sequence of consecutive rows in an image.
Slices have to be provided in sequential order, either in top-bottom or bottom-top order. If slices are provided in non-sequential order the behavior of the function is undefined.
c | the scaling context previously created with sws_getContext() |
srcSlice | the array containing the pointers to the planes of the source slice |
srcStride | the array containing the strides for each plane of the source image |
srcSliceY | the position in the source image of the slice to process, that is the number (counted starting from zero) in the image of the first row of the slice |
srcSliceH | the height of the source slice, that is the number of rows in the slice |
dst | the array containing the pointers to the planes of the destination image |
dstStride | the array containing the strides for each plane of the destination image |
Scale the image slice in srcSlice and put the resulting scaled slice in the image in dst.
Assumes planar YUV to be in YUV order instead of YVU.
Definition at line 1246 of file swscale.c.
Referenced by blur(), copy_uv_planes(), doTest(), draw_qrcode(), ff_frame_to_dnn_classify(), ff_frame_to_dnn_detect(), ff_proc_from_dnn_to_frame(), ff_proc_from_frame_to_dnn(), ff_scale_image(), filter_frame(), get_video_frame(), LLVMFuzzerTestOneInput(), main(), output_single_frame(), process_frame(), video_image_display(), and wrap().
int sws_scale_frame | ( | SwsContext * | c, |
AVFrame * | dst, | ||
const AVFrame * | src | ||
) |
Scale source data from src and write the output to dst.
This is merely a convenience wrapper around
c | The scaling context |
dst | The destination frame. See documentation for sws_frame_start() for more details. |
src | The source frame. |
Definition at line 1225 of file swscale.c.
Referenced by recon_frame_process(), scale_field(), and scale_frame().
int sws_frame_start | ( | SwsContext * | c, |
AVFrame * | dst, | ||
const AVFrame * | src | ||
) |
Initialize the scaling process for a given pair of source/destination frames.
Must be called before any calls to sws_send_slice() and sws_receive_slice().
This function will retain references to src and dst, so they must both use refcounted buffers (if allocated by the caller, in case of dst).
c | The scaling context |
dst | The destination frame. The data buffers may either be already allocated by the caller or left clear, in which case they will be allocated by the scaler. The latter may have performance advantages - e.g. in certain cases some output planes may be references to input planes, rather than copies. Output data will be written into this frame in successful sws_receive_slice() calls. |
src | The source frame. The data buffers must be allocated, but the frame data does not have to be ready at this point. Data availability is then signalled by sws_send_slice(). |
Definition at line 1117 of file swscale.c.
Referenced by sws_scale_frame().
void sws_frame_end | ( | SwsContext * | c | ) |
Finish the scaling process for a pair of source/destination frames previously submitted with sws_frame_start().
Must be called after all sws_send_slice() and sws_receive_slice() calls are done, before any new sws_frame_start() calls.
c | The scaling context |
Definition at line 1109 of file swscale.c.
Referenced by sws_scale_frame().
int sws_send_slice | ( | SwsContext * | c, |
unsigned int | slice_start, | ||
unsigned int | slice_height | ||
) |
Indicate that a horizontal slice of input data is available in the source frame previously provided to sws_frame_start().
The slices may be provided in any order, but may not overlap. For vertically subsampled pixel formats, the slices must be aligned according to subsampling.
c | The scaling context |
slice_start | first row of the slice |
slice_height | number of rows in the slice |
Definition at line 1148 of file swscale.c.
Referenced by sws_scale_frame().
int sws_receive_slice | ( | SwsContext * | c, |
unsigned int | slice_start, | ||
unsigned int | slice_height | ||
) |
Request a horizontal slice of the output data to be written into the frame previously provided to sws_frame_start().
c | The scaling context |
slice_start | first row of the slice; must be a multiple of sws_receive_slice_alignment() |
slice_height | number of rows in the slice; must be a multiple of sws_receive_slice_alignment(), except for the last slice (i.e. when slice_start+slice_height is equal to output frame height) |
Definition at line 1170 of file swscale.c.
Referenced by sws_scale_frame().
unsigned int sws_receive_slice_alignment | ( | const SwsContext * | c | ) |
Get the alignment required for slices.
c | The scaling context |
Definition at line 1161 of file swscale.c.
Referenced by sws_receive_slice().
int sws_setColorspaceDetails | ( | SwsContext * | c, |
const int | inv_table[4], | ||
int | srcRange, | ||
const int | table[4], | ||
int | dstRange, | ||
int | brightness, | ||
int | contrast, | ||
int | saturation | ||
) |
c | the scaling context |
dstRange | flag indicating the while-black range of the output (1=jpeg / 0=mpeg) |
srcRange | flag indicating the while-black range of the input (1=jpeg / 0=mpeg) |
table | the yuv2rgb coefficients describing the output yuv space, normally ff_yuv2rgb_coeffs[x] |
inv_table | the yuv2rgb coefficients describing the input yuv space, normally ff_yuv2rgb_coeffs[x] |
brightness | 16.16 fixed point brightness correction |
contrast | 16.16 fixed point contrast correction |
saturation | 16.16 fixed point saturation correction |
LIBSWSCALE_VERSION_MAJOR < 7
, returns -1 if not supported. Definition at line 1046 of file utils.c.
Referenced by config_props(), and sws_init_single_context().
int sws_getColorspaceDetails | ( | SwsContext * | c, |
int ** | inv_table, | ||
int * | srcRange, | ||
int ** | table, | ||
int * | dstRange, | ||
int * | brightness, | ||
int * | contrast, | ||
int * | saturation | ||
) |
LIBSWSCALE_VERSION_MAJOR < 7
, returns -1 if not supported. Definition at line 1202 of file utils.c.
Referenced by config_props().
SwsVector* sws_allocVec | ( | int | length | ) |
Allocate and return an uninitialized vector with length coefficients.
Definition at line 2152 of file utils.c.
Referenced by sws_getConstVec(), and sws_getGaussianVec().
Return a normalized Gaussian curve used to filter stuff quality = 3 is high quality, lower is lower quality.
Definition at line 2169 of file utils.c.
Referenced by alloc_sws_context(), open_filter_param(), and sws_getDefaultFilter().
Scale all the coefficients of a by the scalar value.
Definition at line 2235 of file utils.c.
Referenced by alloc_sws_context(), sws_getDefaultFilter(), and sws_normalizeVec().
Scale all the coefficients of a so that their sum equals height.
Definition at line 2243 of file utils.c.
Referenced by sws_getDefaultFilter(), and sws_getGaussianVec().
void sws_freeVec | ( | SwsVector * | a | ) |
Definition at line 2342 of file utils.c.
Referenced by alloc_sws_context(), open_filter_param(), sws_freeFilter(), and sws_getDefaultFilter().
SwsContext* sws_getCachedContext | ( | SwsContext * | context, |
int | srcW, | ||
int | srcH, | ||
enum AVPixelFormat | srcFormat, | ||
int | dstW, | ||
int | dstH, | ||
enum AVPixelFormat | dstFormat, | ||
int | flags, | ||
SwsFilter * | srcFilter, | ||
SwsFilter * | dstFilter, | ||
const double * | param | ||
) |
Check if context can be reused, otherwise reallocate a new one.
If context is NULL, just calls sws_getContext() to get a new context. Otherwise, checks if the parameters are the ones already saved in context. If that is the case, returns the current context. Otherwise, frees context and gets a new context with the new parameters.
Be warned that srcFilter and dstFilter are not checked, they are assumed to remain the same.
Definition at line 2532 of file utils.c.
Referenced by alloc_sws_context(), and video_image_display().
void sws_convertPalette8ToPacked32 | ( | const uint8_t * | src, |
uint8_t * | dst, | ||
int | num_pixels, | ||
const uint8_t * | palette | ||
) |
Convert an 8-bit paletted frame into a frame with a color depth of 32 bits.
The output frame will have the same packed format as the palette.
src | source frame buffer |
dst | destination frame buffer |
num_pixels | number of pixels to convert |
palette | array with [256] entries, which must match color arrangement (RGB or BGR) of src |
Definition at line 2603 of file swscale_unscaled.c.
Referenced by palToRgbWrapper().
void sws_convertPalette8ToPacked24 | ( | const uint8_t * | src, |
uint8_t * | dst, | ||
int | num_pixels, | ||
const uint8_t * | palette | ||
) |
Convert an 8-bit paletted frame into a frame with a color depth of 24 bits.
With the palette format "ABCD", the destination frame ends up with the format "ABC".
src | source frame buffer |
dst | destination frame buffer |
num_pixels | number of pixels to convert |
palette | array with [256] entries, which must match color arrangement (RGB or BGR) of src |
Definition at line 2613 of file swscale_unscaled.c.
Referenced by palToRgbWrapper().