]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_thumbnail.c
avcodec/mjpegdec: fix SOF check in EOI
[ffmpeg] / libavfilter / vf_thumbnail.c
index a0561683aaf3415d9a174c3288755802cd0bae67..825e536e67a18ab0575e858a556dc94c94fa8e1f 100644 (file)
@@ -157,6 +157,32 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
             p += frame->linesize[0];
         }
         break;
+    case AV_PIX_FMT_RGB0:
+    case AV_PIX_FMT_BGR0:
+    case AV_PIX_FMT_RGBA:
+    case AV_PIX_FMT_BGRA:
+        for (j = 0; j < inlink->h; j++) {
+            for (i = 0; i < inlink->w; i++) {
+                hist[0*256 + p[i*4    ]]++;
+                hist[1*256 + p[i*4 + 1]]++;
+                hist[2*256 + p[i*4 + 2]]++;
+            }
+            p += frame->linesize[0];
+        }
+        break;
+    case AV_PIX_FMT_0RGB:
+    case AV_PIX_FMT_0BGR:
+    case AV_PIX_FMT_ARGB:
+    case AV_PIX_FMT_ABGR:
+        for (j = 0; j < inlink->h; j++) {
+            for (i = 0; i < inlink->w; i++) {
+                hist[0*256 + p[i*4 + 1]]++;
+                hist[1*256 + p[i*4 + 2]]++;
+                hist[2*256 + p[i*4 + 3]]++;
+            }
+            p += frame->linesize[0];
+        }
+        break;
     default:
         for (int plane = 0; plane < 3; plane++) {
             const uint8_t *p = frame->data[plane];
@@ -222,6 +248,10 @@ static int query_formats(AVFilterContext *ctx)
 {
     static const enum AVPixelFormat pix_fmts[] = {
         AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
+        AV_PIX_FMT_RGBA,  AV_PIX_FMT_BGRA,
+        AV_PIX_FMT_RGB0,  AV_PIX_FMT_BGR0,
+        AV_PIX_FMT_ABGR,  AV_PIX_FMT_ARGB,
+        AV_PIX_FMT_0BGR,  AV_PIX_FMT_0RGB,
         AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P,
         AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P,
         AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P,
@@ -257,7 +287,7 @@ static const AVFilterPad thumbnail_outputs[] = {
     { NULL }
 };
 
-AVFilter ff_vf_thumbnail = {
+const AVFilter ff_vf_thumbnail = {
     .name          = "thumbnail",
     .description   = NULL_IF_CONFIG_SMALL("Select the most representative frame in a given sequence of consecutive frames."),
     .priv_size     = sizeof(ThumbContext),