Mercurial > libavutil.hg
changeset 827:f01765adeb5c libavutil
Implement av_get_pix_fmt(), and deprecate avcodec_get_pix_fmt().
author | stefano |
---|---|
date | Sat, 30 Jan 2010 18:50:00 +0000 |
parents | 5d63d070e9ff |
children | 5dc6729a3b4e |
files | avutil.h pixdesc.c pixdesc.h |
diffstat | 3 files changed, 51 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/avutil.h Fri Jan 29 03:26:17 2010 +0000 +++ b/avutil.h Sat Jan 30 18:50:00 2010 +0000 @@ -40,7 +40,7 @@ #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) #define LIBAVUTIL_VERSION_MAJOR 50 -#define LIBAVUTIL_VERSION_MINOR 7 +#define LIBAVUTIL_VERSION_MINOR 8 #define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
--- a/pixdesc.c Fri Jan 29 03:26:17 2010 +0000 +++ b/pixdesc.c Sat Jan 30 18:50:00 2010 +0000 @@ -654,6 +654,43 @@ }, }; +static enum PixelFormat get_pix_fmt_internal(const char *name) +{ + enum PixelFormat pix_fmt; + + for (pix_fmt = 0; pix_fmt < PIX_FMT_NB; pix_fmt++) + if (av_pix_fmt_descriptors[pix_fmt].name && + !strcmp(av_pix_fmt_descriptors[pix_fmt].name, name)) + return pix_fmt; + + return PIX_FMT_NONE; +} + +#if HAVE_BIGENDIAN +# define X_NE(be, le) be +#else +# define X_NE(be, le) le +#endif + +enum PixelFormat av_get_pix_fmt(const char *name) +{ + enum PixelFormat pix_fmt; + + if (!strcmp(name, "rgb32")) + name = X_NE("argb", "bgra"); + else if (!strcmp(name, "bgr32")) + name = X_NE("abgr", "rgba"); + + pix_fmt = get_pix_fmt_internal(name); + if (pix_fmt == PIX_FMT_NONE) { + char name2[32]; + + snprintf(name2, sizeof(name2), "%s%s", name, X_NE("be", "le")); + pix_fmt = get_pix_fmt_internal(name2); + } + return pix_fmt; +} + int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc) { int c, bits = 0;
--- a/pixdesc.h Fri Jan 29 03:26:17 2010 +0000 +++ b/pixdesc.h Sat Jan 30 18:50:00 2010 +0000 @@ -203,6 +203,19 @@ } /** + * Returns the pixel format corresponding to name. + * + * If there is no pixel format with name name, then looks for a + * pixel format with the name corresponding to the native endian + * format of name. + * For example in a little-endian system, first looks for "gray16", + * then for "gray16le". + * + * Finally if no pixel format has been found, returns PIX_FMT_NONE. + */ +enum PixelFormat av_get_pix_fmt(const char *name); + +/** * Returns the number of bits per pixel used by the pixel format * described by pixdesc. *