FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
pixdesc.c File Reference
#include <stdio.h>
#include <string.h>
#include "avassert.h"
#include "avstring.h"
#include "common.h"
#include "pixfmt.h"
#include "pixdesc.h"
#include "internal.h"
#include "intreadwrite.h"
#include "version.h"

Go to the source code of this file.

Macros

#define BAYER8_DESC_COMMON
 
#define BAYER16_DESC_COMMON
 
#define X_NE(be, le)   le
 
#define FF_COLOR_NA   -1
 
#define FF_COLOR_RGB   0
 RGB color space.
 
#define FF_COLOR_GRAY   1
 gray color space
 
#define FF_COLOR_YUV   2
 YUV color space.
 
#define FF_COLOR_YUV_JPEG   3
 YUV color space.
 
#define pixdesc_has_alpha(pixdesc)   ((pixdesc)->nb_components == 2 || (pixdesc)->nb_components == 4 || (pixdesc)->flags & AV_PIX_FMT_FLAG_PAL)
 

Functions

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.
 
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.
 
static
FF_DISABLE_DEPRECATION_WARNINGS
enum AVPixelFormat 
get_pix_fmt_internal (const char *name)
 
const char * av_get_pix_fmt_name (enum AVPixelFormat pix_fmt)
 Return the short name for a pixel format, NULL in case pix_fmt is unknown.
 
enum AVPixelFormat av_get_pix_fmt (const char *name)
 Return the pixel format corresponding to name.
 
int av_get_bits_per_pixel (const AVPixFmtDescriptor *pixdesc)
 Return the number of bits per pixel used by the pixel format described by pixdesc.
 
int av_get_padded_bits_per_pixel (const AVPixFmtDescriptor *pixdesc)
 Return the number of bits per pixel for the pixel format described by pixdesc, including any padding or unused bits.
 
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.
 
const AVPixFmtDescriptorav_pix_fmt_desc_get (enum AVPixelFormat pix_fmt)
 
const AVPixFmtDescriptorav_pix_fmt_desc_next (const AVPixFmtDescriptor *prev)
 Iterate over all pixel format descriptors known to libavutil.
 
enum AVPixelFormat av_pix_fmt_desc_get_id (const AVPixFmtDescriptor *desc)
 
FF_ENABLE_DEPRECATION_WARNINGS 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.
 
int av_pix_fmt_count_planes (enum AVPixelFormat pix_fmt)
 
void ff_check_pixfmt_descriptors (void)
 
enum AVPixelFormat av_pix_fmt_swap_endianness (enum AVPixelFormat pix_fmt)
 Utility function to swap the endianness of a pixel format.
 
static int get_color_type (const AVPixFmtDescriptor *desc)
 
static int get_pix_fmt_depth (int *min, int *max, enum AVPixelFormat pix_fmt)
 
static int get_pix_fmt_score (enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, unsigned *lossp, unsigned consider)
 
int av_get_pix_fmt_loss (enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, int has_alpha)
 Compute what kind of losses will occur when converting from one specific pixel format to another.
 
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)
 Compute what kind of losses will occur when converting from one specific pixel format to another.
 

Variables

const AVPixFmtDescriptor av_pix_fmt_descriptors [AV_PIX_FMT_NB]
 The array of all the pixel format descriptors.
 

Macro Definition Documentation

#define BAYER8_DESC_COMMON
Value:
.nb_components= 3, \
.log2_chroma_w= 0, \
.log2_chroma_h= 0, \
.comp = { \
{0,0,0,0,1}, \
{0,0,0,0,3}, \
{0,0,0,0,1}, \
}, \
#define BAYER16_DESC_COMMON
Value:
.nb_components= 3, \
.log2_chroma_w= 0, \
.log2_chroma_h= 0, \
.comp = { \
{0,1,0,0, 3}, \
{0,1,0,0, 7}, \
{0,1,0,0, 3}, \
}, \
#define X_NE (   be,
  le 
)    le

Definition at line 1928 of file pixdesc.c.

Referenced by av_get_pix_fmt().

#define FF_COLOR_NA   -1

Definition at line 2114 of file pixdesc.c.

Referenced by get_color_type().

#define FF_COLOR_RGB   0

RGB color space.

Definition at line 2115 of file pixdesc.c.

Referenced by get_color_type(), and get_pix_fmt_score().

#define FF_COLOR_GRAY   1

gray color space

Definition at line 2116 of file pixdesc.c.

Referenced by get_color_type(), and get_pix_fmt_score().

#define FF_COLOR_YUV   2

YUV color space.

16 <= Y <= 235, 16 <= U, V <= 240

Definition at line 2117 of file pixdesc.c.

Referenced by get_color_type(), and get_pix_fmt_score().

#define FF_COLOR_YUV_JPEG   3

YUV color space.

0 <= Y <= 255, 0 <= U, V <= 255

Definition at line 2118 of file pixdesc.c.

Referenced by get_color_type(), and get_pix_fmt_score().

#define pixdesc_has_alpha (   pixdesc)    ((pixdesc)->nb_components == 2 || (pixdesc)->nb_components == 4 || (pixdesc)->flags & AV_PIX_FMT_FLAG_PAL)

Definition at line 2120 of file pixdesc.c.

Referenced by get_pix_fmt_score().

Function Documentation

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
datathe array containing the pointers to the planes of the image
linesizethe array containing the linesizes of the image
descthe pixel format descriptor for the image
xthe horizontal coordinate of the first pixel to read
ythe vertical coordinate of the first pixel to read
wthe width of the line to read, that is the number of values to write to dst
read_pal_componentif 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.

Definition at line 34 of file pixdesc.c.

Referenced by ff_check_pixfmt_descriptors(), and filter_frame().

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
srcarray containing the values to write
datathe array containing the pointers to the planes of the image to write into. It is supposed to be zeroed.
linesizethe array containing the linesizes of the image
descthe pixel format descriptor for the image
xthe horizontal coordinate of the first pixel to write
ythe vertical coordinate of the first pixel to write
wthe width of the line to write, that is the number of values to write to the image line

Definition at line 82 of file pixdesc.c.

Referenced by ff_check_pixfmt_descriptors(), and filter_frame().

static FF_DISABLE_DEPRECATION_WARNINGS enum AVPixelFormat get_pix_fmt_internal ( const char *  name)
static

Definition at line 1906 of file pixdesc.c.

Referenced by av_get_pix_fmt(), and av_pix_fmt_swap_endianness().

const char* av_get_pix_fmt_name ( enum AVPixelFormat  pix_fmt)
enum AVPixelFormat av_get_pix_fmt ( const char *  name)

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.

Definition at line 1931 of file pixdesc.c.

Referenced by dc1394_read_common(), ff_check_pixfmt_descriptors(), ff_img_read_header(), ff_parse_pixel_format(), fileTest(), main(), new_video_stream(), parse_ffconfig(), rawvideo_read_header(), set_string_pixel_fmt(), and v4l2_read_header().

int av_get_bits_per_pixel ( const AVPixFmtDescriptor pixdesc)

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.

Definition at line 1950 of file pixdesc.c.

Referenced by av_get_pix_fmt_string(), caca_write_header(), config_input(), config_props(), decode_frame(), encode_frame(), ff_fill_line_with_color(), raw_decode(), raw_encode_init(), show_pix_fmts(), sws_init_context(), sws_setColorspaceDetails(), targa_encode_frame(), and xwd_encode_frame().

int av_get_padded_bits_per_pixel ( const AVPixFmtDescriptor pixdesc)

Return the number of bits per pixel for the pixel format described by pixdesc, including any padding or unused bits.

Definition at line 1963 of file pixdesc.c.

Referenced by av_find_best_pix_fmt_of_2(), config_input(), config_output(), and lavfi_read_header().

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
bufthe buffer where to write the string
buf_sizethe size of buf
pix_fmtthe number of the pixel format to print the corresponding info string, or a negative value to print the corresponding header.

Definition at line 1983 of file pixdesc.c.

const AVPixFmtDescriptor* av_pix_fmt_desc_get ( enum AVPixelFormat  pix_fmt)
Returns
a pixel format descriptor for provided pixel format or NULL if this pixel format is unknown.

Definition at line 1998 of file pixdesc.c.

Referenced by av_find_best_pix_fmt_of_2(), av_image_alloc(), av_image_copy(), av_image_copy_to_buffer(), av_image_fill_linesizes(), av_image_fill_pointers(), av_image_get_buffer_size(), av_image_get_linesize(), av_picture_crop(), av_picture_pad(), av_pix_fmt_count_planes(), av_pix_fmt_get_chroma_sub_sample(), av_pix_fmt_swap_endianness(), avcodec_align_dimensions(), avcodec_get_chroma_sub_sample(), avcodec_string(), avpriv_color_frame(), caca_write_header(), check_image_pointers(), choose_pixel_fmt(), config_input(), config_input_main(), config_input_overlay(), config_input_ref(), config_out_props(), config_output(), config_props(), config_props_output(), copy_picture_field(), create_all_formats(), decode_frame(), decode_slice(), decode_thread(), doTest(), encode_frame(), encode_init(), encode_slice(), ff_draw_horiz_band(), ff_draw_init(), ff_draw_supported_pixel_formats(), ff_fill_line_with_color(), ff_get_format(), ff_get_unscaled_swscale(), ff_h264_draw_horiz_band(), ff_hevc_decode_nal_sps(), ff_hevc_output_frame(), ff_llviddsp_init_x86(), ff_merge_formats(), ff_mjpeg_decode_frame(), ff_mjpeg_decode_sof(), ff_opencl_deshake_process_inout_buf(), ff_parse_pixel_format(), ff_pnm_decode_header(), ff_sws_init_output_funcs(), filter_frame(), frame_end(), geq_config_props(), get_aspect_ratio(), get_buffer_internal(), get_format(), get_pix_fmt_depth(), get_pix_fmt_score(), get_video_buffer(), hScale16To15_c(), hScale16To19_c(), init(), init_image(), is16BPS(), is9_OR_10BPS(), is_hwaccel_pix_fmt(), isALPHA(), isBE(), isPackedRGB(), isPlanar(), isPlanarRGB(), isPlanarYUV(), isRGB(), isYUV(), jpeg2000_decode_tile(), lavfi_read_header(), libopenjpeg_copy_to_packed16(), libopenjpeg_copyto16(), libopenjpeg_decode_frame(), libopenjpeg_ispacked(), libopenjpeg_matches_pix_fmt(), libx265_encode_frame(), libx265_encode_init(), main(), mj2_create_image(), opengl_draw(), opengl_fill_color_map(), opengl_init_context(), output_frame(), pick_format(), pix_fmt_match(), planarCopyWrapper(), planarRgb16ToRgb16Wrapper(), pnm_encode_frame(), print_digraph(), query_formats(), raw_decode(), raw_encode_init(), raw_init_decoder(), Rgb16ToPlanarRgb16Wrapper(), rgb48Toxyz12(), rgbToRgbWrapper(), selfTest(), shuffleplanes_config_input(), smv_img_pnt(), smvjpeg_decode_frame(), sws_init_context(), sws_setColorspaceDetails(), swscale(), targa_encode_frame(), tiff_unpack_strip(), usePal(), utvideo_encode_init(), verify_md5(), video_frame_cksum(), write_header(), write_packet(), xwd_encode_frame(), xyz12Torgb48(), and yuv2gbrp_full_X_c().

const AVPixFmtDescriptor* av_pix_fmt_desc_next ( const AVPixFmtDescriptor prev)

Iterate over all pixel format descriptors known to libavutil.

Parameters
prevprevious descriptor. NULL to get the first descriptor.
Returns
next descriptor or NULL after the last descriptor

Definition at line 2005 of file pixdesc.c.

Referenced by ff_all_formats(), init(), query_formats(), and show_pix_fmts().

enum AVPixelFormat av_pix_fmt_desc_get_id ( const AVPixFmtDescriptor desc)
Returns
an AVPixelFormat id described by desc, or AV_PIX_FMT_NONE if desc is not a valid pointer to a pixel format descriptor.

Definition at line 2017 of file pixdesc.c.

Referenced by ff_all_formats(), init(), query_formats(), and show_pix_fmts().

FF_ENABLE_DEPRECATION_WARNINGS 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_fmtthe pixel format
[out]h_shiftstore log2_chroma_w
[out]v_shiftstore log2_chroma_h
Returns
0 on success, AVERROR(ENOSYS) on invalid or unknown pixel format

Definition at line 2027 of file pixdesc.c.

Referenced by alloc_picture(), amv_encode_picture(), decode_init(), encode_frame(), encode_init(), ff_mjpeg_init_hvsample(), ff_mpv_frame_start(), gray_frame(), h264_slice_header_init(), load_input_picture(), sws_init_context(), and yuv4_write_packet().

int av_pix_fmt_count_planes ( enum AVPixelFormat  pix_fmt)
Returns
number of planes in pix_fmt, a negative AVERROR if pix_fmt is not a valid pixel format.

Definition at line 2039 of file pixdesc.c.

Referenced by config_input(), config_output(), config_props(), config_props_output(), frame_copy_video(), get_buffer_internal(), init(), query_formats(), and shuffleplanes_config_input().

void ff_check_pixfmt_descriptors ( void  )

Definition at line 2054 of file pixdesc.c.

Referenced by avutil_version().

enum AVPixelFormat av_pix_fmt_swap_endianness ( enum AVPixelFormat  pix_fmt)

Utility function to swap the endianness of a pixel format.

Parameters
[in]pix_fmtthe pixel format
Returns
pixel format with swapped endianness if it exists, otherwise AV_PIX_FMT_NONE

Definition at line 2096 of file pixdesc.c.

Referenced by sws_init_context().

static int get_color_type ( const AVPixFmtDescriptor desc)
static

Definition at line 2124 of file pixdesc.c.

Referenced by get_pix_fmt_score().

static int get_pix_fmt_depth ( int *  min,
int *  max,
enum AVPixelFormat  pix_fmt 
)
static

Definition at line 2143 of file pixdesc.c.

Referenced by get_pix_fmt_score().

static int get_pix_fmt_score ( enum AVPixelFormat  dst_pix_fmt,
enum AVPixelFormat  src_pix_fmt,
unsigned *  lossp,
unsigned  consider 
)
static

Definition at line 2161 of file pixdesc.c.

Referenced by av_find_best_pix_fmt_of_2(), and av_get_pix_fmt_loss().

int av_get_pix_fmt_loss ( enum AVPixelFormat  dst_pix_fmt,
enum AVPixelFormat  src_pix_fmt,
int  has_alpha 
)

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_fmtdestination pixel format
[in]src_pix_fmtsource pixel format
[in]has_alphaWhether 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).

Definition at line 2266 of file pixdesc.c.

Referenced by av_find_best_pix_fmt_of_2(), and avcodec_get_pix_fmt_loss().

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 
)

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_fmtdestination pixel format
[in]src_pix_fmtsource pixel format
[in]has_alphaWhether 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).

Definition at line 2277 of file pixdesc.c.

Referenced by avcodec_find_best_pix_fmt_of_2(), and pick_format().

Variable Documentation

const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB]

The array of all the pixel format descriptors.

Definition at line 133 of file pixdesc.c.

Referenced by av_pix_fmt_desc_get_id().