#include <inttypes.h>
#include "attributes.h"
#include "pixfmt.h"
#include "version.h"
Go to the source code of this file.
|
int | av_get_bits_per_pixel (const AVPixFmtDescriptor *pixdesc) |
|
int | av_get_padded_bits_per_pixel (const AVPixFmtDescriptor *pixdesc) |
|
const AVPixFmtDescriptor * | av_pix_fmt_desc_get (enum AVPixelFormat pix_fmt) |
|
const AVPixFmtDescriptor * | av_pix_fmt_desc_next (const AVPixFmtDescriptor *prev) |
|
enum AVPixelFormat | av_pix_fmt_desc_get_id (const AVPixFmtDescriptor *desc) |
|
int | av_pix_fmt_get_chroma_sub_sample (enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift) |
|
int | av_pix_fmt_count_planes (enum AVPixelFormat pix_fmt) |
|
const char * | av_color_range_name (enum AVColorRange range) |
|
const char * | av_color_primaries_name (enum AVColorPrimaries primaries) |
|
const char * | av_color_transfer_name (enum AVColorTransferCharacteristic transfer) |
|
const char * | av_color_space_name (enum AVColorSpace space) |
|
const char * | av_chroma_location_name (enum AVChromaLocation location) |
|
enum AVPixelFormat | av_get_pix_fmt (const char *name) |
|
const char * | av_get_pix_fmt_name (enum AVPixelFormat pix_fmt) |
|
char * | av_get_pix_fmt_string (char *buf, int buf_size, enum AVPixelFormat pix_fmt) |
|
void | av_read_image_line (uint16_t *dst, const uint8_t *data[4], const int linesize[4], const AVPixFmtDescriptor *desc, int x, int y, int c, int w, int read_pal_component) |
|
void | av_write_image_line (const uint16_t *src, uint8_t *data[4], const int linesize[4], const AVPixFmtDescriptor *desc, int x, int y, int c, int w) |
|
enum AVPixelFormat | av_pix_fmt_swap_endianness (enum AVPixelFormat pix_fmt) |
|
int | av_get_pix_fmt_loss (enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, int has_alpha) |
|
enum AVPixelFormat | av_find_best_pix_fmt_of_2 (enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr) |
|
◆ AV_PIX_FMT_FLAG_ALPHA
#define AV_PIX_FMT_FLAG_ALPHA (1 << 7) |
The pixel format has an alpha channel. This is set on all formats that support alpha in some way. The exception is AV_PIX_FMT_PAL8, which can carry alpha as part of the palette. Details are explained in the AVPixelFormat enum, and are also encoded in the corresponding AVPixFmtDescriptor.
The alpha is always straight, never pre-multiplied.
If a codec or a filter does not support alpha, it should set all alpha to opaque, or use the equivalent pixel formats without alpha component, e.g. AV_PIX_FMT_RGB0 (or AV_PIX_FMT_RGB24 etc.) instead of AV_PIX_FMT_RGBA.
◆ AV_PIX_FMT_FLAG_BE
#define AV_PIX_FMT_FLAG_BE (1 << 0) |
Pixel format is big-endian.
◆ AV_PIX_FMT_FLAG_BITSTREAM
#define AV_PIX_FMT_FLAG_BITSTREAM (1 << 2) |
All values of a component are bit-wise packed end to end.
◆ AV_PIX_FMT_FLAG_HWACCEL
#define AV_PIX_FMT_FLAG_HWACCEL (1 << 3) |
Pixel format is an HW accelerated format.
◆ AV_PIX_FMT_FLAG_PAL
#define AV_PIX_FMT_FLAG_PAL (1 << 1) |
Pixel format has a palette in data[1], values are indexes in this palette.
◆ AV_PIX_FMT_FLAG_PLANAR
#define AV_PIX_FMT_FLAG_PLANAR (1 << 4) |
At least one pixel component is not in the first data plane.
◆ AV_PIX_FMT_FLAG_PSEUDOPAL
#define AV_PIX_FMT_FLAG_PSEUDOPAL (1 << 6) |
The pixel format is "pseudo-paletted". This means that it contains a fixed palette in the 2nd plane but the palette is fixed/constant for each PIX_FMT. This allows interpreting the data as if it was PAL8, which can in some cases be simpler. Or the data can be interpreted purely based on the pixel format without using the palette. An example of a pseudo-paletted format is AV_PIX_FMT_GRAY8
◆ AV_PIX_FMT_FLAG_RGB
#define AV_PIX_FMT_FLAG_RGB (1 << 5) |
The pixel format contains RGB-like data (as opposed to YUV/grayscale).
◆ FF_LOSS_ALPHA
#define FF_LOSS_ALPHA 0x0008 |
◆ FF_LOSS_CHROMA
#define FF_LOSS_CHROMA 0x0020 |
loss of chroma (e.g. RGB to gray conversion)
◆ FF_LOSS_COLORQUANT
#define FF_LOSS_COLORQUANT 0x0010 |
loss due to color quantization
◆ FF_LOSS_COLORSPACE
#define FF_LOSS_COLORSPACE 0x0004 |
loss due to color space conversion
◆ FF_LOSS_DEPTH
#define FF_LOSS_DEPTH 0x0002 |
loss due to color depth change
◆ FF_LOSS_RESOLUTION
#define FF_LOSS_RESOLUTION 0x0001 |
loss due to resolution change
◆ AVComponentDescriptor
◆ AVPixFmtDescriptor
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes of an image. It also stores the subsampling factors and number of components.
- Note
- This is separate of the colorspace (RGB, YCbCr, YPbPr, JPEG-style YUV and all the YUV variants) AVPixFmtDescriptor just stores how values are stored not what these values represent.
◆ av_chroma_location_name()
- Returns
- the name for provided chroma location or NULL if unknown.
◆ av_color_primaries_name()
- Returns
- the name for provided color primaries or NULL if unknown.
◆ av_color_range_name()
- Returns
- the name for provided color range or NULL if unknown.
◆ av_color_space_name()
- Returns
- the name for provided color space or NULL if unknown.
◆ av_color_transfer_name()
- Returns
- the name for provided color transfer or NULL if unknown.
◆ av_find_best_pix_fmt_of_2()
Compute what kind of losses will occur when converting from one specific pixel format to another. When converting from one pixel format to another, information loss may occur. For example, when converting from RGB24 to GRAY, the color information will be lost. Similarly, other losses occur when converting from some formats to other formats. These losses can involve loss of chroma, but also loss of resolution, loss of color depth, loss due to the color space conversion, loss of the alpha bits or loss due to color quantization. av_get_fix_fmt_loss() informs you about the various types of losses which will occur when converting from one pixel format to another.
- Parameters
-
[in] | dst_pix_fmt | destination pixel format |
[in] | src_pix_fmt | source pixel format |
[in] | has_alpha | Whether the source pixel format alpha channel is used. |
- Returns
- Combination of flags informing you what kind of losses will occur (maximum loss for an invalid dst_pix_fmt).
◆ av_get_bits_per_pixel()
Return the number of bits per pixel used by the pixel format described by pixdesc. Note that this is not the same as the number of bits per sample.
The returned number of bits refers to the number of bits actually used for storing the pixel information, that is padding bits are not counted.
◆ av_get_padded_bits_per_pixel()
Return the number of bits per pixel for the pixel format described by pixdesc, including any padding or unused bits.
◆ av_get_pix_fmt()
Return the pixel format corresponding to name.
If there is no pixel format with name name, then looks for a pixel format with the name corresponding to the native endian format of name. For example in a little-endian system, first looks for "gray16", then for "gray16le".
Finally if no pixel format has been found, returns AV_PIX_FMT_NONE.
◆ av_get_pix_fmt_loss()
Compute what kind of losses will occur when converting from one specific pixel format to another. When converting from one pixel format to another, information loss may occur. For example, when converting from RGB24 to GRAY, the color information will be lost. Similarly, other losses occur when converting from some formats to other formats. These losses can involve loss of chroma, but also loss of resolution, loss of color depth, loss due to the color space conversion, loss of the alpha bits or loss due to color quantization. av_get_fix_fmt_loss() informs you about the various types of losses which will occur when converting from one pixel format to another.
- Parameters
-
[in] | dst_pix_fmt | destination pixel format |
[in] | src_pix_fmt | source pixel format |
[in] | has_alpha | Whether the source pixel format alpha channel is used. |
- Returns
- Combination of flags informing you what kind of losses will occur (maximum loss for an invalid dst_pix_fmt).
◆ av_get_pix_fmt_name()
◆ av_get_pix_fmt_string()
char* av_get_pix_fmt_string |
( |
char * |
buf, |
|
|
int |
buf_size, |
|
|
enum AVPixelFormat |
pix_fmt |
|
) |
| |
Print in buf the string corresponding to the pixel format with number pix_fmt, or a header if pix_fmt is negative.
- Parameters
-
buf | the buffer where to write the string |
buf_size | the size of buf |
pix_fmt | the number of the pixel format to print the corresponding info string, or a negative value to print the corresponding header. |
◆ av_pix_fmt_count_planes()
- Returns
- number of planes in pix_fmt, a negative AVERROR if pix_fmt is not a valid pixel format.
◆ av_pix_fmt_desc_get()
- Returns
- a pixel format descriptor for provided pixel format or NULL if this pixel format is unknown.
◆ av_pix_fmt_desc_get_id()
- Returns
- an AVPixelFormat id described by desc, or AV_PIX_FMT_NONE if desc is not a valid pointer to a pixel format descriptor.
◆ av_pix_fmt_desc_next()
Iterate over all pixel format descriptors known to libavutil.
- Parameters
-
prev | previous descriptor. NULL to get the first descriptor. |
- Returns
- next descriptor or NULL after the last descriptor
◆ av_pix_fmt_get_chroma_sub_sample()
int av_pix_fmt_get_chroma_sub_sample |
( |
enum AVPixelFormat |
pix_fmt, |
|
|
int * |
h_shift, |
|
|
int * |
v_shift |
|
) |
| |
Utility function to access log2_chroma_w log2_chroma_h from the pixel format AVPixFmtDescriptor.
See av_get_chroma_sub_sample() for a function that asserts a valid pixel format instead of returning an error code. Its recommended that you use avcodec_get_chroma_sub_sample unless you do check the return code!
- Parameters
-
[in] | pix_fmt | the pixel format |
[out] | h_shift | store log2_chroma_w (horizontal/width shift) |
[out] | v_shift | store log2_chroma_h (vertical/height shift) |
- Returns
- 0 on success, AVERROR(ENOSYS) on invalid or unknown pixel format
◆ av_pix_fmt_swap_endianness()
Utility function to swap the endianness of a pixel format.
- Parameters
-
[in] | pix_fmt | the pixel format |
- Returns
- pixel format with swapped endianness if it exists, otherwise AV_PIX_FMT_NONE
◆ av_read_image_line()
void av_read_image_line |
( |
uint16_t * |
dst, |
|
|
const uint8_t * |
data[4], |
|
|
const int |
linesize[4], |
|
|
const AVPixFmtDescriptor * |
desc, |
|
|
int |
x, |
|
|
int |
y, |
|
|
int |
c, |
|
|
int |
w, |
|
|
int |
read_pal_component |
|
) |
| |
Read a line from an image, and write the values of the pixel format component c to dst.
- Parameters
-
data | the array containing the pointers to the planes of the image |
linesize | the array containing the linesizes of the image |
desc | the pixel format descriptor for the image |
x | the horizontal coordinate of the first pixel to read |
y | the vertical coordinate of the first pixel to read |
w | the width of the line to read, that is the number of values to write to dst |
read_pal_component | if not zero and the format is a paletted format writes the values corresponding to the palette component c in data[1] to dst, rather than the palette indexes in data[0]. The behavior is undefined if the format is not paletted. |
◆ av_write_image_line()
void av_write_image_line |
( |
const uint16_t * |
src, |
|
|
uint8_t * |
data[4], |
|
|
const int |
linesize[4], |
|
|
const AVPixFmtDescriptor * |
desc, |
|
|
int |
x, |
|
|
int |
y, |
|
|
int |
c, |
|
|
int |
w |
|
) |
| |
Write the values from src to the pixel format component c of an image line.
- Parameters
-
src | array containing the values to write |
data | the array containing the pointers to the planes of the image to write into. It is supposed to be zeroed. |
linesize | the array containing the linesizes of the image |
desc | the pixel format descriptor for the image |
x | the horizontal coordinate of the first pixel to write |
y | the vertical coordinate of the first pixel to write |
w | the width of the line to write, that is the number of values to write to the image line |