Browse Source

pixdesc: add av_get_padded_bits_per_pixel()

This will be needed to allow removing the PixFmtInfo table

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n1.1
Michael Niedermayer 13 years ago
parent
commit
649d8bd8a5
2 changed files with 26 additions and 0 deletions
  1. +20
    -0
      libavutil/pixdesc.c
  2. +6
    -0
      libavutil/pixdesc.h

+ 20
- 0
libavutil/pixdesc.c View File

@@ -1712,6 +1712,26 @@ int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
return bits >> log2_pixels;
}

int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
{
int c, bits = 0;
int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
int steps[4] = {0};

for (c = 0; c < pixdesc->nb_components; c++) {
AVComponentDescriptor *comp = &pixdesc->comp[c];
int s = c == 1 || c == 2 ? 0 : log2_pixels;
steps[comp->plane] = (comp->step_minus1 + 1) << s;
}
for (c = 0; c < 4; c++)
bits += steps[c];

if(!(pixdesc->flags & PIX_FMT_BITSTREAM))
bits *= 8;

return bits >> log2_pixels;
}

char *av_get_pix_fmt_string (char *buf, int buf_size, enum AVPixelFormat pix_fmt)
{
/* print header */


+ 6
- 0
libavutil/pixdesc.h View File

@@ -188,6 +188,12 @@ char *av_get_pix_fmt_string (char *buf, int buf_size, enum AVPixelFormat pix_fmt
*/
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc);

/**
* Return the number of bits per pixel for the pixel format
* described by pixdesc, including any padding or unused bits.
*/
int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc);

/**
* @return a pixel format descriptor for provided pixel format or NULL if
* this pixel format is unknown.


Loading…
Cancel
Save