X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Fpixdesc.c;h=0be8ae42dfadf3acbf3e824a6a97f12aa19d4c8a;hb=52066bdb300b3a2cdef48897d0c864410b259084;hp=bbe64bee7a472f64b4a9845e5f7e21310908fa8c;hpb=0c79a3d9cb0c7a7acef30b7c01e9337ba91a4a81;p=ffmpeg diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index bbe64bee7a4..0be8ae42dfa 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -436,7 +436,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 0, 3, 4, 0, 7 }, /* B */ { 0, 3, 1, 0, 7 }, /* A */ }, - .flags = PIX_FMT_RGB, + .flags = PIX_FMT_RGB | PIX_FMT_ALPHA, }, [AV_PIX_FMT_RGBA] = { .name = "rgba", @@ -449,7 +449,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 0, 3, 3, 0, 7 }, /* B */ { 0, 3, 4, 0, 7 }, /* A */ }, - .flags = PIX_FMT_RGB, + .flags = PIX_FMT_RGB | PIX_FMT_ALPHA, }, [AV_PIX_FMT_ABGR] = { .name = "abgr", @@ -462,7 +462,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 0, 3, 2, 0, 7 }, /* B */ { 0, 3, 1, 0, 7 }, /* A */ }, - .flags = PIX_FMT_RGB, + .flags = PIX_FMT_RGB | PIX_FMT_ALPHA, }, [AV_PIX_FMT_BGRA] = { .name = "bgra", @@ -475,7 +475,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 0, 3, 1, 0, 7 }, /* B */ { 0, 3, 4, 0, 7 }, /* A */ }, - .flags = PIX_FMT_RGB, + .flags = PIX_FMT_RGB | PIX_FMT_ALPHA, }, [AV_PIX_FMT_0RGB] = { .name = "0rgb", @@ -581,7 +581,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 0, 1, 0, 7 }, /* V */ { 3, 0, 1, 0, 7 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA422P] = { .name = "yuva422p", @@ -594,7 +594,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 0, 1, 0, 7 }, /* V */ { 3, 0, 1, 0, 7 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA444P] = { .name = "yuva444p", @@ -607,7 +607,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 0, 1, 0, 7 }, /* V */ { 3, 0, 1, 0, 7 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA420P9BE] = { .name = "yuva420p9be", @@ -620,7 +620,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 8 }, /* V */ { 3, 1, 1, 0, 8 }, /* A */ }, - .flags = PIX_FMT_BE | PIX_FMT_PLANAR, + .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA420P9LE] = { .name = "yuva420p9le", @@ -633,7 +633,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 8 }, /* V */ { 3, 1, 1, 0, 8 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA422P9BE] = { .name = "yuva422p9be", @@ -646,7 +646,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 8 }, /* V */ { 3, 1, 1, 0, 8 }, /* A */ }, - .flags = PIX_FMT_BE | PIX_FMT_PLANAR, + .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA422P9LE] = { .name = "yuva422p9le", @@ -659,7 +659,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 8 }, /* V */ { 3, 1, 1, 0, 8 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA444P9BE] = { .name = "yuva444p9be", @@ -672,7 +672,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 8 }, /* V */ { 3, 1, 1, 0, 8 }, /* A */ }, - .flags = PIX_FMT_BE | PIX_FMT_PLANAR, + .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA444P9LE] = { .name = "yuva444p9le", @@ -685,7 +685,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 8 }, /* V */ { 3, 1, 1, 0, 8 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA420P10BE] = { .name = "yuva420p10be", @@ -698,7 +698,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 9 }, /* V */ { 3, 1, 1, 0, 9 }, /* A */ }, - .flags = PIX_FMT_BE | PIX_FMT_PLANAR, + .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA420P10LE] = { .name = "yuva420p10le", @@ -711,7 +711,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA422P10BE] = { .name = "yuva422p10be", @@ -724,7 +724,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_BE | PIX_FMT_PLANAR, + .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA422P10LE] = { .name = "yuva422p10le", @@ -737,7 +737,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA444P10BE] = { .name = "yuva444p10be", @@ -750,7 +750,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_BE | PIX_FMT_PLANAR, + .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA444P10LE] = { .name = "yuva444p10le", @@ -763,7 +763,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA420P16BE] = { .name = "yuva420p16be", @@ -776,7 +776,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_BE | PIX_FMT_PLANAR, + .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA420P16LE] = { .name = "yuva420p16le", @@ -789,7 +789,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA422P16BE] = { .name = "yuva422p16be", @@ -802,7 +802,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_BE | PIX_FMT_PLANAR, + .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA422P16LE] = { .name = "yuva422p16le", @@ -815,7 +815,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA444P16BE] = { .name = "yuva444p16be", @@ -828,7 +828,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_BE | PIX_FMT_PLANAR, + .flags = PIX_FMT_BE | PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_YUVA444P16LE] = { .name = "yuva444p16le", @@ -841,7 +841,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 2, 1, 1, 0, 15 }, /* V */ { 3, 1, 1, 0, 15 }, /* A */ }, - .flags = PIX_FMT_PLANAR, + .flags = PIX_FMT_PLANAR | PIX_FMT_ALPHA, }, [AV_PIX_FMT_VDPAU_H264] = { .name = "vdpau_h264", @@ -914,7 +914,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 0, 7, 5, 0, 15 }, /* B */ { 0, 7, 7, 0, 15 }, /* A */ }, - .flags = PIX_FMT_RGB | PIX_FMT_BE, + .flags = PIX_FMT_RGB | PIX_FMT_BE | PIX_FMT_ALPHA, }, [AV_PIX_FMT_RGBA64LE] = { .name = "rgba64le", @@ -927,7 +927,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 0, 7, 5, 0, 15 }, /* B */ { 0, 7, 7, 0, 15 }, /* A */ }, - .flags = PIX_FMT_RGB, + .flags = PIX_FMT_RGB | PIX_FMT_ALPHA, }, [AV_PIX_FMT_RGB565BE] = { .name = "rgb565be", @@ -1036,7 +1036,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 0, 7, 1, 0, 15 }, /* B */ { 0, 7, 7, 0, 15 }, /* A */ }, - .flags = PIX_FMT_BE | PIX_FMT_RGB, + .flags = PIX_FMT_BE | PIX_FMT_RGB | PIX_FMT_ALPHA, }, [AV_PIX_FMT_BGRA64LE] = { .name = "bgra64le", @@ -1049,7 +1049,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 0, 7, 1, 0, 15 }, /* B */ { 0, 7, 7, 0, 15 }, /* A */ }, - .flags = PIX_FMT_RGB, + .flags = PIX_FMT_RGB | PIX_FMT_ALPHA, }, [AV_PIX_FMT_BGR565BE] = { .name = "bgr565be", @@ -1520,6 +1520,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { { 0, 1, 1, 0, 7 }, /* Y */ { 0, 1, 2, 0, 7 }, /* A */ }, + .flags = PIX_FMT_ALPHA, }, [AV_PIX_FMT_GBRP] = { .name = "gbrp", @@ -1711,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 */