#include "avcodec.h"
#include "dsputil.h"
#include "colorspace.h"
#include "internal.h"
#include "imgconvert.h"
#include "libavutil/pixdesc.h"
#include "x86/mmx.h"
#include "x86/dsputil_mmx.h"
Go to the source code of this file.
Data Structures | |
struct | PixFmtInfo |
Defines | |
#define | xglue(x, y) x ## y |
#define | glue(x, y) xglue(x, y) |
#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 | FF_PIXEL_PLANAR 0 |
each channel has one component in AVPicture | |
#define | FF_PIXEL_PACKED 1 |
only one components containing all the channels | |
#define | FF_PIXEL_PALETTE 2 |
one components containing indexes for a palette | |
#define | DEINT_INPLACE_LINE_LUM |
#define | DEINT_LINE_LUM |
Functions | |
void | avcodec_get_chroma_sub_sample (enum PixelFormat pix_fmt, int *h_shift, int *v_shift) |
const char * | avcodec_get_pix_fmt_name (enum PixelFormat pix_fmt) |
enum PixelFormat | avcodec_get_pix_fmt (const char *name) |
Returns the pixel format corresponding to the name name. | |
void | avcodec_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt) |
Print in buf the string corresponding to the pixel format with number pix_fmt, or an header if pix_fmt is negative. | |
int | ff_is_hwaccel_pix_fmt (enum PixelFormat pix_fmt) |
Determines whether pix_fmt is a hardware accelerated format. | |
int | ff_set_systematic_pal (uint32_t pal[256], enum PixelFormat pix_fmt) |
int | ff_fill_linesize (AVPicture *picture, enum PixelFormat pix_fmt, int width) |
int | ff_fill_pointer (AVPicture *picture, uint8_t *ptr, enum PixelFormat pix_fmt, int height) |
int | avpicture_fill (AVPicture *picture, uint8_t *ptr, enum PixelFormat pix_fmt, int width, int height) |
Fill in the AVPicture fields. | |
int | avpicture_layout (const AVPicture *src, enum PixelFormat pix_fmt, int width, int height, unsigned char *dest, int dest_size) |
int | avpicture_get_size (enum PixelFormat pix_fmt, int width, int height) |
Calculate the size in bytes that a picture of the given width and height would occupy if stored in the given picture format. | |
int | avcodec_get_pix_fmt_loss (enum PixelFormat dst_pix_fmt, enum PixelFormat src_pix_fmt, int has_alpha) |
Computes what kind of losses will occur when converting from one specific pixel format to another. | |
static int | avg_bits_per_pixel (enum PixelFormat pix_fmt) |
static enum PixelFormat | avcodec_find_best_pix_fmt1 (int64_t pix_fmt_mask, enum PixelFormat src_pix_fmt, int has_alpha, int loss_mask) |
enum PixelFormat | avcodec_find_best_pix_fmt (int64_t pix_fmt_mask, enum PixelFormat src_pix_fmt, int has_alpha, int *loss_ptr) |
Finds the best pixel format to convert to given a certain source pixel format. | |
void | ff_img_copy_plane (uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height) |
int | ff_get_plane_bytewidth (enum PixelFormat pix_fmt, int width, int plane) |
void | av_picture_copy (AVPicture *dst, const AVPicture *src, enum PixelFormat pix_fmt, int width, int height) |
Copy image 'src' to 'dst'. | |
void | ff_shrink22 (uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height) |
void | ff_shrink44 (uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height) |
void | ff_shrink88 (uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height) |
int | avpicture_alloc (AVPicture *picture, enum PixelFormat pix_fmt, int width, int height) |
Allocate memory for a picture. | |
void | avpicture_free (AVPicture *picture) |
Free a picture previously allocated by avpicture_alloc(). | |
static int | is_yuv_planar (const PixFmtInfo *ps) |
int | av_picture_crop (AVPicture *dst, const AVPicture *src, enum PixelFormat pix_fmt, int top_band, int left_band) |
Crop image top and left side. | |
int | av_picture_pad (AVPicture *dst, const AVPicture *src, int height, int width, enum PixelFormat pix_fmt, int padtop, int padbottom, int padleft, int padright, int *color) |
Pad image. | |
static int | get_alpha_info_pal8 (const AVPicture *src, int width, int height) |
int | img_get_alpha_info (const AVPicture *src, enum PixelFormat pix_fmt, int width, int height) |
Tell if an image really has transparent alpha values. | |
static void | deinterlace_line (uint8_t *dst, const uint8_t *lum_m4, const uint8_t *lum_m3, const uint8_t *lum_m2, const uint8_t *lum_m1, const uint8_t *lum, int size) |
static void | deinterlace_line_inplace (uint8_t *lum_m4, uint8_t *lum_m3, uint8_t *lum_m2, uint8_t *lum_m1, uint8_t *lum, int size) |
static void | deinterlace_bottom_field (uint8_t *dst, int dst_wrap, const uint8_t *src1, int src_wrap, int width, int height) |
static void | deinterlace_bottom_field_inplace (uint8_t *src1, int src_wrap, int width, int height) |
int | avpicture_deinterlace (AVPicture *dst, const AVPicture *src, enum PixelFormat pix_fmt, int width, int height) |
Variables | |
static const PixFmtInfo | pix_fmt_info [PIX_FMT_NB] |
Definition in file imgconvert.c.
#define DEINT_INPLACE_LINE_LUM |
Value:
movd_m2r(lum_m4[0],mm0);\ movd_m2r(lum_m3[0],mm1);\ movd_m2r(lum_m2[0],mm2);\ movd_m2r(lum_m1[0],mm3);\ movd_m2r(lum[0],mm4);\ punpcklbw_r2r(mm7,mm0);\ movd_r2m(mm2,lum_m4[0]);\ punpcklbw_r2r(mm7,mm1);\ punpcklbw_r2r(mm7,mm2);\ punpcklbw_r2r(mm7,mm3);\ punpcklbw_r2r(mm7,mm4);\ paddw_r2r(mm3,mm1);\ psllw_i2r(1,mm2);\ paddw_r2r(mm4,mm0);\ psllw_i2r(2,mm1);\ paddw_r2r(mm6,mm2);\ paddw_r2r(mm2,mm1);\ psubusw_r2r(mm0,mm1);\ psrlw_i2r(3,mm1);\ packuswb_r2r(mm7,mm1);\ movd_r2m(mm1,lum_m2[0]);
Definition at line 1250 of file imgconvert.c.
Referenced by deinterlace_line_inplace().
#define DEINT_LINE_LUM |
Value:
movd_m2r(lum_m4[0],mm0);\ movd_m2r(lum_m3[0],mm1);\ movd_m2r(lum_m2[0],mm2);\ movd_m2r(lum_m1[0],mm3);\ movd_m2r(lum[0],mm4);\ punpcklbw_r2r(mm7,mm0);\ punpcklbw_r2r(mm7,mm1);\ punpcklbw_r2r(mm7,mm2);\ punpcklbw_r2r(mm7,mm3);\ punpcklbw_r2r(mm7,mm4);\ paddw_r2r(mm3,mm1);\ psllw_i2r(1,mm2);\ paddw_r2r(mm4,mm0);\ psllw_i2r(2,mm1);\ paddw_r2r(mm6,mm2);\ paddw_r2r(mm2,mm1);\ psubusw_r2r(mm0,mm1);\ psrlw_i2r(3,mm1);\ packuswb_r2r(mm7,mm1);\ movd_r2m(mm1,dst[0]);
Definition at line 1273 of file imgconvert.c.
Referenced by deinterlace_line().
#define FF_COLOR_GRAY 1 |
gray color space
Definition at line 49 of file imgconvert.c.
Referenced by avcodec_get_pix_fmt_loss().
#define FF_COLOR_RGB 0 |
RGB color space.
Definition at line 48 of file imgconvert.c.
Referenced by avcodec_get_pix_fmt_loss().
#define FF_COLOR_YUV 2 |
YUV color space.
16 <= Y <= 235, 16 <= U, V <= 240
Definition at line 50 of file imgconvert.c.
Referenced by avcodec_get_pix_fmt_loss(), and is_yuv_planar().
#define FF_COLOR_YUV_JPEG 3 |
YUV color space.
0 <= Y <= 255, 0 <= U, V <= 255
Definition at line 51 of file imgconvert.c.
Referenced by avcodec_get_pix_fmt_loss(), and is_yuv_planar().
#define FF_PIXEL_PACKED 1 |
only one components containing all the channels
Definition at line 54 of file imgconvert.c.
Referenced by av_picture_copy(), avg_bits_per_pixel(), avpicture_layout(), and ff_get_plane_bytewidth().
#define FF_PIXEL_PALETTE 2 |
one components containing indexes for a palette
Definition at line 55 of file imgconvert.c.
Referenced by av_picture_copy(), avcodec_get_pix_fmt_loss(), avg_bits_per_pixel(), avpicture_layout(), and ff_get_plane_bytewidth().
#define FF_PIXEL_PLANAR 0 |
each channel has one component in AVPicture
Definition at line 53 of file imgconvert.c.
Referenced by av_picture_copy(), avg_bits_per_pixel(), ff_get_plane_bytewidth(), and is_yuv_planar().
#define glue | ( | x, | |||
y | ) | xglue(x, y) |
Definition at line 46 of file imgconvert.c.
#define xglue | ( | x, | |||
y | ) | x ## y |
Definition at line 45 of file imgconvert.c.
void av_picture_copy | ( | AVPicture * | dst, | |
const AVPicture * | src, | |||
enum PixelFormat | pix_fmt, | |||
int | width, | |||
int | height | |||
) |
Copy image 'src' to 'dst'.
Definition at line 966 of file imgconvert.c.
Referenced by avcodec_default_reget_buffer(), copy_frame(), qtrle_encode_frame(), queue_picture(), and roq_decode_frame().
int av_picture_crop | ( | AVPicture * | dst, | |
const AVPicture * | src, | |||
enum PixelFormat | pix_fmt, | |||
int | top_band, | |||
int | left_band | |||
) |
Crop image top and left side.
Definition at line 1120 of file imgconvert.c.
Referenced by do_video_out().
int av_picture_pad | ( | AVPicture * | dst, | |
const AVPicture * | src, | |||
int | height, | |||
int | width, | |||
enum PixelFormat | pix_fmt, | |||
int | padtop, | |||
int | padbottom, | |||
int | padleft, | |||
int | padright, | |||
int * | color | |||
) |
enum PixelFormat avcodec_find_best_pix_fmt | ( | int64_t | pix_fmt_mask, | |
enum PixelFormat | src_pix_fmt, | |||
int | has_alpha, | |||
int * | loss_ptr | |||
) |
Finds the best pixel format to convert to given a certain source pixel format.
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. avcodec_find_best_pix_fmt() searches which of the given pixel formats should be used to suffer the least amount of loss. The pixel formats from which it chooses one, are determined by the pix_fmt_mask parameter.
src_pix_fmt = PIX_FMT_YUV420P; pix_fmt_mask = (1 << PIX_FMT_YUV422P) || (1 << PIX_FMT_RGB24); dst_pix_fmt = avcodec_find_best_pix_fmt(pix_fmt_mask, src_pix_fmt, alpha, &loss);
[in] | pix_fmt_mask | bitmask determining which pixel format to choose from |
[in] | src_pix_fmt | source pixel format |
[in] | has_alpha | Whether the source pixel format alpha channel is used. |
[out] | loss_ptr | Combination of flags informing you what kind of losses will occur. |
Definition at line 870 of file imgconvert.c.
static enum PixelFormat avcodec_find_best_pix_fmt1 | ( | int64_t | pix_fmt_mask, | |
enum PixelFormat | src_pix_fmt, | |||
int | has_alpha, | |||
int | loss_mask | |||
) | [static] |
void avcodec_get_chroma_sub_sample | ( | enum PixelFormat | pix_fmt, | |
int * | h_shift, | |||
int * | v_shift | |||
) |
Definition at line 406 of file imgconvert.c.
Referenced by avcodec_default_get_buffer(), config_input(), encode_init(), ff_print_debug_info(), load_input_picture(), MPV_common_init(), MPV_encode_init(), and vp3_decode_init().
enum PixelFormat avcodec_get_pix_fmt | ( | const char * | name | ) |
Returns the pixel format corresponding to the name 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 PIX_FMT_NONE.
Definition at line 421 of file imgconvert.c.
int avcodec_get_pix_fmt_loss | ( | enum PixelFormat | dst_pix_fmt, | |
enum PixelFormat | src_pix_fmt, | |||
int | has_alpha | |||
) |
Computes 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. avcodec_get_fix_fmt_loss() informs you about the various types of losses which will occur when converting from one pixel format to another.
[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. |
Definition at line 732 of file imgconvert.c.
Referenced by avcodec_find_best_pix_fmt(), and avcodec_find_best_pix_fmt1().
const char* avcodec_get_pix_fmt_name | ( | enum PixelFormat | pix_fmt | ) |
Definition at line 412 of file imgconvert.c.
Referenced by avcodec_string(), dc1394_read_common(), do_video_out(), dvvideo_init_encoder(), and encode_init().
void avcodec_pix_fmt_string | ( | char * | buf, | |
int | buf_size, | |||
enum PixelFormat | pix_fmt | |||
) |
Print in buf the string corresponding to the pixel format with number pix_fmt, or an header if pix_fmt is negative.
[in] | buf | the buffer where to write the string |
[in] | buf_size | the size of buf |
[in] | pix_fmt | the number of the pixel format to print the corresponding info string, or a negative value to print the corresponding header. Meaningful values for obtaining a pixel format info vary from 0 to PIX_FMT_NB -1. |
Definition at line 427 of file imgconvert.c.
static int avg_bits_per_pixel | ( | enum PixelFormat | pix_fmt | ) | [static] |
int avpicture_alloc | ( | AVPicture * | picture, | |
enum PixelFormat | pix_fmt, | |||
int | width, | |||
int | height | |||
) |
Allocate memory for a picture.
Call avpicture_free to free it.
picture | the picture to be filled in | |
pix_fmt | the format of the picture | |
width | the width of the picture | |
height | the height of the picture |
Definition at line 1085 of file imgconvert.c.
Referenced by av_transcode(), ff_create_schro_frame(), libschroedinger_handle_first_access_unit(), and qtrle_encode_init().
int avpicture_deinterlace | ( | AVPicture * | dst, | |
const AVPicture * | src, | |||
enum PixelFormat | pix_fmt, | |||
int | width, | |||
int | height | |||
) |
int avpicture_fill | ( | AVPicture * | picture, | |
uint8_t * | ptr, | |||
enum PixelFormat | pix_fmt, | |||
int | width, | |||
int | height | |||
) |
Fill in the AVPicture fields.
The fields of the given AVPicture are filled in by using the 'ptr' address which points to the image data buffer. Depending on the specified picture format, one or multiple image data pointers and line sizes will be set. If a planar format is specified, several pointers will be set pointing to the different picture planes and the line sizes of the different planes will be stored in the lines_sizes array. Call with ptr == NULL to get the required size for the ptr buffer.
picture | AVPicture whose fields are to be filled in | |
ptr | Buffer which will contain or contains the actual image data | |
pix_fmt | The format in which the picture data is stored. | |
width | the width of the image in pixels | |
height | the height of the image in pixels |
Definition at line 632 of file imgconvert.c.
Referenced by alloc_picture(), avpicture_alloc(), avpicture_get_size(), copy_frame(), libdirac_decode_frame(), libschroedinger_decode_frame(), pre_process_video_frame(), and raw_decode().
void avpicture_free | ( | AVPicture * | picture | ) |
Free a picture previously allocated by avpicture_alloc().
picture | the AVPicture to be freed |
Definition at line 1107 of file imgconvert.c.
Referenced by FreeSchroFrame(), libschroedinger_decode_close(), and qtrle_encode_end().
int avpicture_get_size | ( | enum PixelFormat | pix_fmt, | |
int | width, | |||
int | height | |||
) |
Calculate the size in bytes that a picture of the given width and height would occupy if stored in the given picture format.
Note that this returns the size of a compact representation as generated by avpicture_layout, which can be smaller than the size required for e.g. avpicture_fill.
pix_fmt | the given picture format | |
width | the width of the image | |
height | the height of the image |
Definition at line 715 of file imgconvert.c.
Referenced by alloc_picture(), avpicture_layout(), dc1394_read_common(), libdirac_decode_frame(), libdirac_encode_init(), libschroedinger_encode_init(), pam_encode_frame(), pnm_encode_frame(), pnm_parse(), pre_process_video_frame(), raw_init_decoder(), targa_encode_frame(), v4l2_read_header(), and yuv4_read_packet().
int avpicture_layout | ( | const AVPicture * | src, | |
enum PixelFormat | pix_fmt, | |||
int | width, | |||
int | height, | |||
unsigned char * | dest, | |||
int | dest_size | |||
) |
Definition at line 645 of file imgconvert.c.
Referenced by libdirac_encode_frame(), libschroedinger_frame_from_data(), and raw_encode().
static void deinterlace_bottom_field | ( | uint8_t * | dst, | |
int | dst_wrap, | |||
const uint8_t * | src1, | |||
int | src_wrap, | |||
int | width, | |||
int | height | |||
) | [static] |
static void deinterlace_bottom_field_inplace | ( | uint8_t * | src1, | |
int | src_wrap, | |||
int | width, | |||
int | height | |||
) | [static] |
static void deinterlace_line | ( | uint8_t * | dst, | |
const uint8_t * | lum_m4, | |||
const uint8_t * | lum_m3, | |||
const uint8_t * | lum_m2, | |||
const uint8_t * | lum_m1, | |||
const uint8_t * | lum, | |||
int | size | |||
) | [static] |
static void deinterlace_line_inplace | ( | uint8_t * | lum_m4, | |
uint8_t * | lum_m3, | |||
uint8_t * | lum_m2, | |||
uint8_t * | lum_m1, | |||
uint8_t * | lum, | |||
int | size | |||
) | [static] |
int ff_fill_linesize | ( | AVPicture * | picture, | |
enum PixelFormat | pix_fmt, | |||
int | width | |||
) |
Definition at line 493 of file imgconvert.c.
Referenced by avcodec_default_get_buffer(), avfilter_default_get_video_buffer(), and avpicture_fill().
int ff_fill_pointer | ( | AVPicture * | picture, | |
uint8_t * | ptr, | |||
enum PixelFormat | pix_fmt, | |||
int | height | |||
) |
Definition at line 528 of file imgconvert.c.
Referenced by avcodec_default_get_buffer(), avfilter_default_get_video_buffer(), and avpicture_fill().
int ff_get_plane_bytewidth | ( | enum PixelFormat | pix_fmt, | |
int | width, | |||
int | plane | |||
) |
Definition at line 916 of file imgconvert.c.
Referenced by av_picture_copy(), and avfilter_draw_slice().
void ff_img_copy_plane | ( | uint8_t * | dst, | |
int | dst_wrap, | |||
const uint8_t * | src, | |||
int | src_wrap, | |||
int | width, | |||
int | height | |||
) |
int ff_is_hwaccel_pix_fmt | ( | enum PixelFormat | pix_fmt | ) |
Determines whether pix_fmt is a hardware accelerated format.
Definition at line 449 of file imgconvert.c.
Referenced by avcodec_default_get_format().
int ff_set_systematic_pal | ( | uint32_t | pal[256], | |
enum PixelFormat | pix_fmt | |||
) |
Definition at line 454 of file imgconvert.c.
Referenced by avcodec_default_get_buffer(), and avpicture_alloc().
void ff_shrink22 | ( | uint8_t * | dst, | |
int | dst_wrap, | |||
const uint8_t * | src, | |||
int | src_wrap, | |||
int | width, | |||
int | height | |||
) |
void ff_shrink44 | ( | uint8_t * | dst, | |
int | dst_wrap, | |||
const uint8_t * | src, | |||
int | src_wrap, | |||
int | width, | |||
int | height | |||
) |
void ff_shrink88 | ( | uint8_t * | dst, | |
int | dst_wrap, | |||
const uint8_t * | src, | |||
int | src_wrap, | |||
int | width, | |||
int | height | |||
) |
static int get_alpha_info_pal8 | ( | const AVPicture * | src, | |
int | width, | |||
int | height | |||
) | [static] |
int img_get_alpha_info | ( | const AVPicture * | src, | |
enum PixelFormat | pix_fmt, | |||
int | width, | |||
int | height | |||
) |
Tell if an image really has transparent alpha values.
Definition at line 1228 of file imgconvert.c.
static int is_yuv_planar | ( | const PixFmtInfo * | ps | ) | [inline, static] |
Definition at line 1113 of file imgconvert.c.
Referenced by av_picture_crop(), and av_picture_pad().
const PixFmtInfo pix_fmt_info[PIX_FMT_NB] [static] |
Definition at line 66 of file imgconvert.c.