[FFmpeg-cvslog] tools: do not use av_pix_fmt_descriptors directly.

Anton Khirnov git at videolan.org
Fri Oct 12 15:39:44 CEST 2012


ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sat Oct  6 13:29:37 2012 +0200| [b7f1010c8fce09096057528f7cd29589ea1ae7df] | committer: Anton Khirnov

tools: do not use av_pix_fmt_descriptors directly.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b7f1010c8fce09096057528f7cd29589ea1ae7df
---

 avprobe.c         |    6 +++---
 cmdutils.c        |   16 +++++++++++-----
 tools/graph2dot.c |    4 ++--
 3 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/avprobe.c b/avprobe.c
index 16a5d29..3a3ae0f 100644
--- a/avprobe.c
+++ b/avprobe.c
@@ -584,6 +584,7 @@ static void show_stream(AVFormatContext *fmt_ctx, int stream_idx)
     const char *profile;
     char val_str[128];
     AVRational display_aspect_ratio;
+    const AVPixFmtDescriptor *desc;
 
     probe_object_header("stream");
 
@@ -629,9 +630,8 @@ static void show_stream(AVFormatContext *fmt_ctx, int stream_idx)
                           rational_string(val_str, sizeof(val_str), ":",
                           &display_aspect_ratio));
             }
-            probe_str("pix_fmt",
-                      dec_ctx->pix_fmt != AV_PIX_FMT_NONE ?
-                      av_pix_fmt_descriptors[dec_ctx->pix_fmt].name : "unknown");
+            desc = av_pix_fmt_desc_get(dec_ctx->pix_fmt);
+            probe_str("pix_fmt", desc ? desc->name : "unknown");
             probe_int("level", dec_ctx->level);
             break;
 
diff --git a/cmdutils.c b/cmdutils.c
index ac971df..34c52ca 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -866,7 +866,7 @@ int show_filters(void *optctx, const char *opt, const char *arg)
 
 int show_pix_fmts(void *optctx, const char *opt, const char *arg)
 {
-    enum AVPixelFormat pix_fmt;
+    const AVPixFmtDescriptor *pix_desc = NULL;
 
     printf("Pixel formats:\n"
            "I.... = Supported Input  format for conversion\n"
@@ -882,8 +882,8 @@ int show_pix_fmts(void *optctx, const char *opt, const char *arg)
 #   define sws_isSupportedOutput(x) 0
 #endif
 
-    for (pix_fmt = 0; pix_fmt < AV_PIX_FMT_NB; pix_fmt++) {
-        const AVPixFmtDescriptor *pix_desc = &av_pix_fmt_descriptors[pix_fmt];
+    while ((pix_desc = av_pix_fmt_desc_next(pix_desc))) {
+        enum AVPixelFormat pix_fmt = av_pix_fmt_desc_get_id(pix_desc);
         printf("%c%c%c%c%c %-16s       %d            %2d\n",
                sws_isSupportedInput (pix_fmt)      ? 'I' : '.',
                sws_isSupportedOutput(pix_fmt)      ? 'O' : '.',
@@ -1282,13 +1282,19 @@ void *grow_array(void *array, int elem_size, int *size, int new_size)
 
 static int alloc_buffer(FrameBuffer **pool, AVCodecContext *s, FrameBuffer **pbuf)
 {
-    FrameBuffer  *buf = av_mallocz(sizeof(*buf));
+    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(s->pix_fmt);
+    FrameBuffer *buf;
     int i, ret;
-    const int pixel_size = av_pix_fmt_descriptors[s->pix_fmt].comp[0].step_minus1+1;
+    int pixel_size;
     int h_chroma_shift, v_chroma_shift;
     int edge = 32; // XXX should be avcodec_get_edge_width(), but that fails on svq1
     int w = s->width, h = s->height;
 
+    if (!desc)
+        return AVERROR(EINVAL);
+    pixel_size = desc->comp[0].step_minus1 + 1;
+
+    buf = av_mallocz(sizeof(*buf));
     if (!buf)
         return AVERROR(ENOMEM);
 
diff --git a/tools/graph2dot.c b/tools/graph2dot.c
index e7f487d..c0142cc 100644
--- a/tools/graph2dot.c
+++ b/tools/graph2dot.c
@@ -80,10 +80,10 @@ static void print_digraph(FILE *outfile, AVFilterGraph *graph)
                 fprintf(outfile, "\"%s\" -> \"%s\"",
                         filter_ctx_label, dst_filter_ctx_label);
                 if (link->type == AVMEDIA_TYPE_VIDEO) {
+                    const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(link->format);
                     fprintf(outfile,
                             " [ label= \"fmt:%s w:%d h:%d tb:%d/%d\" ]",
-                            av_pix_fmt_descriptors[link->format].name,
-                            link->w, link->h, link->time_base.num,
+                            desc->name, link->w, link->h, link->time_base.num,
                             link->time_base.den);
                 } else if (link->type == AVMEDIA_TYPE_AUDIO) {
                     char buf[255];



More information about the ffmpeg-cvslog mailing list