changeset 5084:9930b7031cb2 libavcodec

Add support for listing the supported pixel formats using the option -pix_fmt list patch by Stefano Sabatini stefano sabatini minus lala chez poste it original thread: [FFmpeg-devel] [PATCH] List supported pixel formats date: 05/25/2007 05:46 PM
author benoit
date Wed, 30 May 2007 14:20:55 +0000
parents ce36118abbbb
children 81bbca75ae2f
files avcodec.h imgconvert.c
diffstat 2 files changed, 34 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/avcodec.h	Wed May 30 09:32:25 2007 +0000
+++ b/avcodec.h	Wed May 30 14:20:55 2007 +0000
@@ -2615,6 +2615,19 @@
 int avcodec_find_best_pix_fmt(int pix_fmt_mask, int src_pix_fmt,
                               int has_alpha, int *loss_ptr);
 
+
+/**
+ * Print in buf the string corresponding to the pixel format with
+ * number pix_fmt, or an header if pix_fmt is negative.
+ *
+ * @param buf[in] the buffer where to write the string
+ * @param buf_size[in] the size of buf
+ * @param pix_fmt[in] the number of the pixel format to print the corresponding info string, or
+ * a negative value to print the corresponding header.
+ * Meaningful values for obtaining a pixel format info vary from 0 to PIX_FMT_NB -1.
+ */
+void avcodec_pix_fmt_string (char *buf, int buf_size, int pix_fmt);
+
 #define FF_ALPHA_TRANSP       0x0001 /* image has some totally transparent pixels */
 #define FF_ALPHA_SEMI_TRANSP  0x0002 /* image has some transparent pixels */
 
--- a/imgconvert.c	Wed May 30 09:32:25 2007 +0000
+++ b/imgconvert.c	Wed May 30 14:20:55 2007 +0000
@@ -378,6 +378,27 @@
     return i;
 }
 
+void avcodec_pix_fmt_string (char *buf, int buf_size, int pix_fmt)
+{
+    PixFmtInfo info= pix_fmt_info[pix_fmt];
+
+    char is_alpha_char= info.is_alpha ? 'y' : 'n';
+
+    /* print header */
+    if (pix_fmt < 0)
+        snprintf (buf, buf_size,
+                  "name      " " nb_channels" " depth" " is_alpha"
+            );
+    else
+        snprintf (buf, buf_size,
+                  "%-10s" "      %1d     " "   %2d " "     %c   ",
+                  info.name,
+                  info.nb_channels,
+                  info.depth,
+                  is_alpha_char
+            );
+}
+
 int avpicture_fill(AVPicture *picture, uint8_t *ptr,
                    int pix_fmt, int width, int height)
 {