Implement av_get_bits_per_pixel().
authorStefano Sabatini <stefano.sabatini-lala@poste.it>
Mon, 27 Apr 2009 23:20:30 +0000 (23:20 +0000)
committerStefano Sabatini <stefano.sabatini-lala@poste.it>
Mon, 27 Apr 2009 23:20:30 +0000 (23:20 +0000)
Originally committed as revision 18709 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/pixdesc.c
libavcodec/pixdesc.h

index 162b582..a313c95 100644 (file)
@@ -581,3 +581,16 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = {
         .flags = PIX_FMT_BE,
     },
 };
+
+int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
+{
+    int c, bits = 0;
+    int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
+
+    for (c = 0; c < pixdesc->nb_channels; c++) {
+        int s = c==1 || c==2 ? 0 : log2_pixels;
+        bits += (pixdesc->comp[c].depth_minus1+1) << s;
+    }
+
+    return bits >> log2_pixels;
+}
index 6660ea1..0a2acab 100644 (file)
@@ -193,4 +193,14 @@ static inline void write_line(const uint16_t *src, uint8_t *data[4], const int l
     }
 }
 
+/**
+ * Returns the number of bits per pixel used by the pixel format
+ * described by pixdesc.
+ *
+ * The returned number of bits refers to the number of bits actually
+ * used for storing the pixel information, that is padding bits are
+ * not counted.
+ */
+int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc);
+
 #endif /* AVCODEC_PIXDESC_H */