X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fimgconvert.c;h=9c8fab59a305e547b9d41b45b6b96a209db55116;hb=a93faf30d688b872e0ecc453b2dfc36470683ed6;hp=c9bf6a938a33bd61999661c7632baebe695652a8;hpb=cad40a3833ad81a352e7657ec6f7d637cea3b798;p=ffmpeg diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c index c9bf6a938a3..9c8fab59a30 100644 --- a/libavcodec/imgconvert.c +++ b/libavcodec/imgconvert.c @@ -24,28 +24,15 @@ * misc image conversion routines */ -/* TODO: - * - write 'ffimg' program to test all the image related stuff - * - move all api to slice based system - * - integrate deinterlacing, postprocessing and scaling in the conversion process - */ - #include "avcodec.h" -#include "imgconvert.h" #include "internal.h" #include "mathops.h" #include "libavutil/colorspace.h" #include "libavutil/common.h" #include "libavutil/pixdesc.h" +#include "libavutil/internal.h" #include "libavutil/imgutils.h" -void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift) -{ - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); - *h_shift = desc->log2_chroma_w; - *v_shift = desc->log2_chroma_h; -} - static int is_gray(const AVPixFmtDescriptor *desc) { return desc->nb_components - (desc->flags & AV_PIX_FMT_FLAG_ALPHA) == 1; @@ -67,7 +54,7 @@ int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, return 0; for (i = 0; i < nb_components; i++) - if (src_desc->comp[i].depth_minus1 > dst_desc->comp[i].depth_minus1) + if (src_desc->comp[i].depth > dst_desc->comp[i].depth) loss |= FF_LOSS_DEPTH; if (dst_desc->log2_chroma_w > src_desc->log2_chroma_w || @@ -159,92 +146,8 @@ enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat *pix_fmt_list, return dst_pix_fmt; } -/* 2x2 -> 1x1 */ -void ff_shrink22(uint8_t *dst, int dst_wrap, - const uint8_t *src, int src_wrap, - int width, int height) -{ - int w; - const uint8_t *s1, *s2; - uint8_t *d; - - for(;height > 0; height--) { - s1 = src; - s2 = s1 + src_wrap; - d = dst; - for(w = width;w >= 4; w-=4) { - d[0] = (s1[0] + s1[1] + s2[0] + s2[1] + 2) >> 2; - d[1] = (s1[2] + s1[3] + s2[2] + s2[3] + 2) >> 2; - d[2] = (s1[4] + s1[5] + s2[4] + s2[5] + 2) >> 2; - d[3] = (s1[6] + s1[7] + s2[6] + s2[7] + 2) >> 2; - s1 += 8; - s2 += 8; - d += 4; - } - for(;w > 0; w--) { - d[0] = (s1[0] + s1[1] + s2[0] + s2[1] + 2) >> 2; - s1 += 2; - s2 += 2; - d++; - } - src += 2 * src_wrap; - dst += dst_wrap; - } -} - -/* 4x4 -> 1x1 */ -void ff_shrink44(uint8_t *dst, int dst_wrap, - const uint8_t *src, int src_wrap, - int width, int height) -{ - int w; - const uint8_t *s1, *s2, *s3, *s4; - uint8_t *d; - - for(;height > 0; height--) { - s1 = src; - s2 = s1 + src_wrap; - s3 = s2 + src_wrap; - s4 = s3 + src_wrap; - d = dst; - for(w = width;w > 0; w--) { - d[0] = (s1[0] + s1[1] + s1[2] + s1[3] + - s2[0] + s2[1] + s2[2] + s2[3] + - s3[0] + s3[1] + s3[2] + s3[3] + - s4[0] + s4[1] + s4[2] + s4[3] + 8) >> 4; - s1 += 4; - s2 += 4; - s3 += 4; - s4 += 4; - d++; - } - src += 4 * src_wrap; - dst += dst_wrap; - } -} - -/* 8x8 -> 1x1 */ -void ff_shrink88(uint8_t *dst, int dst_wrap, - const uint8_t *src, int src_wrap, - int width, int height) -{ - int w, i; - - for(;height > 0; height--) { - for(w = width;w > 0; w--) { - int tmp=0; - for(i=0; i<8; i++){ - tmp += src[0] + src[1] + src[2] + src[3] + src[4] + src[5] + src[6] + src[7]; - src += src_wrap; - } - *(dst++) = (tmp + 32)>>6; - src += 8 - 8*src_wrap; - } - src += 8*src_wrap - 8*width; - dst += dst_wrap - width; - } -} - +#if FF_API_AVPICTURE +FF_DISABLE_DEPRECATION_WARNINGS /* return true if yuv planar */ static inline int is_yuv_planar(const AVPixFmtDescriptor *desc) { @@ -335,3 +238,6 @@ int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, } return 0; } + +FF_ENABLE_DEPRECATION_WARNINGS +#endif /* FF_API_AVPICTURE */