]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/imgconvert.c
is_yuv_planar: remove use of PixFmtInfo
[ffmpeg] / libavcodec / imgconvert.c
index 202fbf522ebbf56e878caa7c2e5c443072ab1a97..e79daccc809f9d396bea32dd741a8b7a663d7917 100644 (file)
@@ -33,6 +33,7 @@
 #include "avcodec.h"
 #include "dsputil.h"
 #include "internal.h"
+#include "libavutil/avassert.h"
 #include "libavutil/colorspace.h"
 #include "libavutil/common.h"
 #include "libavutil/pixdesc.h"
@@ -193,6 +194,42 @@ static const PixFmtInfo pix_fmt_info[AV_PIX_FMT_NB] = {
     [AV_PIX_FMT_YUVA444P] = {
         .color_type = FF_COLOR_YUV,
     },
+    [AV_PIX_FMT_YUVA420P9LE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA422P9LE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA444P9LE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA420P9BE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA422P9BE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA444P9BE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA420P10LE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA422P10LE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA444P10LE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA420P10BE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA422P10BE] = {
+        .color_type = FF_COLOR_YUV,
+    },
+    [AV_PIX_FMT_YUVA444P10BE] = {
+        .color_type = FF_COLOR_YUV,
+    },
 
     /* JPEG YUV */
     [AV_PIX_FMT_YUVJ420P] = {
@@ -391,36 +428,11 @@ static const PixFmtInfo pix_fmt_info[AV_PIX_FMT_NB] = {
 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);
+    av_assert0(desc);
     *h_shift = desc->log2_chroma_w;
     *v_shift = desc->log2_chroma_h;
 }
 
-int ff_is_hwaccel_pix_fmt(enum AVPixelFormat pix_fmt)
-{
-    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
-    return desc->flags & PIX_FMT_HWACCEL;
-}
-
-int avpicture_fill(AVPicture *picture, uint8_t *ptr,
-                   enum AVPixelFormat pix_fmt, int width, int height)
-{
-    return av_image_fill_arrays(picture->data, picture->linesize,
-                                ptr, pix_fmt, width, height, 1);
-}
-
-int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt, int width, int height,
-                     unsigned char *dest, int dest_size)
-{
-    return av_image_copy_to_buffer(dest, dest_size,
-                                   (const uint8_t * const*)src->data, src->linesize,
-                                   pix_fmt, width, height, 1);
-}
-
-int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height)
-{
-    return av_image_get_buffer_size(pix_fmt, width, height, 1);
-}
-
 static int get_pix_fmt_depth(int *min, int *max, enum AVPixelFormat pix_fmt)
 {
     const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
@@ -603,13 +615,6 @@ enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(enum AVPixelFormat *pix_fmt
     return best;
 }
 
-void av_picture_copy(AVPicture *dst, const AVPicture *src,
-                     enum AVPixelFormat pix_fmt, int width, int height)
-{
-    av_image_copy(dst->data, dst->linesize, (const uint8_t **)src->data,
-                  src->linesize, pix_fmt, width, height);
-}
-
 /* 2x2 -> 1x1 */
 void ff_shrink22(uint8_t *dst, int dst_wrap,
                      const uint8_t *src, int src_wrap,
@@ -696,35 +701,15 @@ void ff_shrink88(uint8_t *dst, int dst_wrap,
     }
 }
 
-
-int avpicture_alloc(AVPicture *picture,
-                    enum AVPixelFormat pix_fmt, int width, int height)
-{
-    int ret;
-
-    if ((ret = av_image_alloc(picture->data, picture->linesize, width, height, pix_fmt, 1)) < 0) {
-        memset(picture, 0, sizeof(AVPicture));
-        return ret;
-    }
-
-    return 0;
-}
-
-void avpicture_free(AVPicture *picture)
-{
-    av_free(picture->data[0]);
-}
-
 /* return true if yuv planar */
 static inline int is_yuv_planar(enum AVPixelFormat fmt)
 {
-    const PixFmtInfo         *info = &pix_fmt_info[fmt];
     const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(fmt);
     int i;
     int planes[4] = { 0 };
 
-    if (info->color_type != FF_COLOR_YUV &&
-        info->color_type != FF_COLOR_YUV_JPEG)
+    if (     desc->flags & PIX_FMT_RGB
+        || !(desc->flags & PIX_FMT_PLANAR))
         return 0;
 
     /* set the used planes */
@@ -988,3 +973,18 @@ int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
     emms_c();
     return 0;
 }
+
+#ifdef TEST
+
+int main(void){
+    int i;
+    for (i=0; i<AV_PIX_FMT_NB*2; i++) {
+        AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(i);
+        if(!desc)
+            continue;
+        av_log(0, AV_LOG_INFO, "pix fmt %s %d\n", desc->name, is_yuv_planar(i));
+    }
+    return 0;
+}
+
+#endif