]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_pp7.c
avutil/pixfmt: Clarify the meaning of the alpha byte in RGB0 and similar formats
[ffmpeg] / libavfilter / vf_pp7.c
index 2f071f211670ca349a8c1d2eca1115850d0adba3..0a709021c6560880330d035d39a528c731546845 100644 (file)
@@ -33,7 +33,6 @@
 #include "libavutil/pixdesc.h"
 #include "internal.h"
 #include "vf_pp7.h"
-#include "libavcodec/avcodec.h"
 
 enum mode {
     MODE_HARD,
@@ -87,17 +86,6 @@ static const int thres[16] = {
     N / (SN2 * SN0), N / (SN2 * SN2), N / (SN2 * SN0), N / (SN2 * SN2),
 };
 
-static inline int norm_qscale(int qscale, int type)
-{
-    switch (type) {
-    case FF_QSCALE_TYPE_MPEG1: return qscale;
-    case FF_QSCALE_TYPE_MPEG2: return qscale >> 1;
-    case FF_QSCALE_TYPE_H264:  return qscale >> 2;
-    case FF_QSCALE_TYPE_VP56:  return (63 - qscale + 2) >> 2;
-    }
-    return qscale;
-}
-
 static void init_thres2(PP7Context *p)
 {
     int qp, i;
@@ -259,7 +247,7 @@ static void filter(PP7Context *p, uint8_t *dst, uint8_t *src,
                 qp = p->qp;
             else {
                 qp = qp_store[ (FFMIN(x, width - 1) >> qps) + (FFMIN(y, height - 1) >> qps) * qp_stride];
-                qp = norm_qscale(qp, p->qscale_type);
+                qp = ff_norm_qscale(qp, p->qscale_type);
             }
             for (; x < end; x++) {
                 const int index = x + y * stride + (8 - 3) * (1 + stride) + 8; //FIXME silly offset
@@ -290,6 +278,7 @@ static int query_formats(AVFilterContext *ctx)
         AV_PIX_FMT_YUV410P,  AV_PIX_FMT_YUV440P,
         AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ422P,
         AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ440P,
+        AV_PIX_FMT_GBRP,
         AV_PIX_FMT_GRAY8,    AV_PIX_FMT_NONE
     };
     ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
@@ -307,7 +296,7 @@ static int config_input(AVFilterLink *inlink)
     pp7->vsub = desc->log2_chroma_h;
 
     pp7->temp_stride = FFALIGN(inlink->w + 16, 16);
-    pp7->src = av_malloc(pp7->temp_stride * (h + 8) * sizeof(uint8_t));
+    pp7->src = av_malloc_array(pp7->temp_stride,  (h + 8) * sizeof(uint8_t));
 
     if (!pp7->src)
         return AVERROR(ENOMEM);
@@ -358,6 +347,8 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
                 return AVERROR(ENOMEM);
             }
             av_frame_copy_props(out, in);
+            out->width = in->width;
+            out->height = in->height;
         }
 
         if (qp_table || pp7->qp) {