Go to the documentation of this file.
42 *h_shift =
desc->log2_chroma_w;
43 *v_shift =
desc->log2_chroma_h;
68 int has_alpha,
int *loss_ptr){
75 loss = loss_ptr ? *loss_ptr : 0;
97 for (
i = 0;
i <
desc->nb_components;
i++)
118 y_shift =
desc->log2_chroma_h;
119 x_shift =
desc->log2_chroma_w;
123 dst->
data[0] =
src->data[0] + (top_band *
src->linesize[0]) + left_band;
124 dst->
data[1] =
src->data[1] + ((top_band >> y_shift) *
src->linesize[1]) + (left_band >> x_shift);
125 dst->
data[2] =
src->data[2] + ((top_band >> y_shift) *
src->linesize[2]) + (left_band >> x_shift);
127 if(top_band % (1<<y_shift) || left_band % (1<<x_shift))
129 dst->
data[0] =
src->data[0] + (top_band *
src->linesize[0]) + (left_band * max_step[0]);
159 if (padtop || padleft) {
161 dst->
linesize[0] * padtop + (padleft * max_step[0]));
164 if (padleft || padright) {
166 (dst->
linesize[0] - (padright * max_step[0]));
167 yheight =
height - 1 - (padtop + padbottom);
168 for (y = 0; y < yheight; y++) {
169 memset(optr,
color[0], (padleft + padright) * max_step[0]);
174 if (padbottom || padright) {
176 (padright * max_step[0]);
178 (padright * max_step[0]));
184 for (
i = 0;
i < 3;
i++) {
185 x_shift =
i ?
desc->log2_chroma_w : 0;
186 y_shift =
i ?
desc->log2_chroma_h : 0;
188 if (padtop || padleft) {
190 dst->
linesize[
i] * (padtop >> y_shift) + (padleft >> x_shift));
193 if (padleft || padright) {
195 (dst->
linesize[
i] - (padright >> x_shift));
196 yheight = (
height - 1 - (padtop + padbottom)) >> y_shift;
197 for (y = 0; y < yheight; y++) {
198 memset(optr,
color[
i], (padleft + padright) >> x_shift);
206 (padleft >> x_shift);
207 memcpy(optr, iptr, (
width - padleft - padright) >> x_shift);
208 iptr +=
src->linesize[
i];
210 (dst->
linesize[
i] - (padright >> x_shift));
211 yheight = (
height - 1 - (padtop + padbottom)) >> y_shift;
212 for (y = 0; y < yheight; y++) {
213 memset(optr,
color[
i], (padleft + padright) >> x_shift);
214 memcpy(optr + ((padleft + padright) >> x_shift), iptr,
215 (
width - padleft - padright) >> x_shift);
216 iptr +=
src->linesize[
i];
221 if (padbottom || padright) {
223 ((
height - padbottom) >> y_shift) - (padright >> x_shift);
225 (padbottom >> y_shift) + (padright >> x_shift));
#define FF_ENABLE_DEPRECATION_WARNINGS
AVPixelFormat
Pixel format.
static FF_DISABLE_DEPRECATION_WARNINGS int is_yuv_planar(const AVPixFmtDescriptor *desc)
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
Find the best pixel format to convert to given a certain source pixel format.
attribute_deprecated uint8_t * data[AV_NUM_DATA_POINTERS]
pointers to the image data planes
@ AV_PIX_FMT_NB
number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of...
int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt, int has_alpha)
#define av_assert0(cond)
assert() equivalent, that is always enabled.
static enum AVPixelFormat pix_fmt
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.
#define AV_PIX_FMT_FLAG_RGB
The pixel format contains RGB-like data (as opposed to YUV/grayscale).
enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2, enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr)
enum AVPixelFormat avcodec_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)
int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt, int padtop, int padbottom, int padleft, int padright, int *color)
int av_picture_crop(AVPicture *dst, const AVPicture *src, enum AVPixelFormat pix_fmt, int top_band, int left_band)
static const struct @315 planes[]
#define i(width, name, range_min, range_max)
void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift)
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.
#define AV_PIX_FMT_FLAG_PLANAR
At least one pixel component is not in the first data plane.
void av_image_fill_max_pixsteps(int max_pixsteps[4], int max_pixstep_comps[4], const AVPixFmtDescriptor *pixdesc)
Compute the max pixel step for each plane of an image with a format described by pixdesc.
#define FF_DISABLE_DEPRECATION_WARNINGS
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
attribute_deprecated int linesize[AV_NUM_DATA_POINTERS]
number of bytes per line