diff options
author | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2010-01-30 18:50:00 +0000 |
---|---|---|
committer | Stefano Sabatini <stefano.sabatini-lala@poste.it> | 2010-01-30 18:50:00 +0000 |
commit | 80a07f6e47a842ca351ebec3478878204cd1d0b7 (patch) | |
tree | 8fd672ac9acafe58958f0de532966c6dcfe8b6f3 | |
parent | 7b0b81a16d16f583b7a871e19ada8ccc1b6b4aa3 (diff) | |
download | ffmpeg-80a07f6e47a842ca351ebec3478878204cd1d0b7.tar.gz |
Implement av_get_pix_fmt(), and deprecate avcodec_get_pix_fmt().
Originally committed as revision 21545 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/avcodec.h | 6 | ||||
-rw-r--r-- | libavcodec/imgconvert.c | 33 | ||||
-rw-r--r-- | libavutil/avutil.h | 2 | ||||
-rw-r--r-- | libavutil/pixdesc.c | 37 | ||||
-rw-r--r-- | libavutil/pixdesc.h | 13 |
5 files changed, 59 insertions, 32 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 87d00fe2f4..e5c86fde44 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2995,6 +2995,7 @@ void avcodec_get_chroma_sub_sample(enum PixelFormat pix_fmt, int *h_shift, int * const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt); void avcodec_set_dimensions(AVCodecContext *s, int width, int height); +#if LIBAVCODEC_VERSION_MAJOR < 53 /** * Returns the pixel format corresponding to the name name. * @@ -3005,8 +3006,11 @@ void avcodec_set_dimensions(AVCodecContext *s, int width, int height); * then for "gray16le". * * Finally if no pixel format has been found, returns PIX_FMT_NONE. + * + * @deprecated Deprecated in favor of av_get_pix_fmt(). */ -enum PixelFormat avcodec_get_pix_fmt(const char* name); +attribute_deprecated enum PixelFormat avcodec_get_pix_fmt(const char* name); +#endif /** * Returns a value representing the fourCC code associated to the diff --git a/libavcodec/imgconvert.c b/libavcodec/imgconvert.c index 5dc7b92ee0..de6032d5c0 100644 --- a/libavcodec/imgconvert.c +++ b/libavcodec/imgconvert.c @@ -391,39 +391,12 @@ const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt) return av_pix_fmt_descriptors[pix_fmt].name; } -static enum PixelFormat avcodec_get_pix_fmt_internal(const char *name) -{ - int i; - - for (i=0; i < PIX_FMT_NB; i++) - if (av_pix_fmt_descriptors[i].name && !strcmp(av_pix_fmt_descriptors[i].name, name)) - return i; - return PIX_FMT_NONE; -} - -#if HAVE_BIGENDIAN -# define X_NE(be, le) be -#else -# define X_NE(be, le) le -#endif - +#if LIBAVCODEC_VERSION_MAJOR < 53 enum PixelFormat avcodec_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 = avcodec_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 = avcodec_get_pix_fmt_internal(name2); - } - return pix_fmt; + return av_get_pix_fmt(name); } +#endif void avcodec_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt) { diff --git a/libavutil/avutil.h b/libavutil/avutil.h index 01067e750e..0655dc2e68 100644 --- a/libavutil/avutil.h +++ b/libavutil/avutil.h @@ -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, \ diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index 972da4578f..837927ba7d 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -654,6 +654,43 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[PIX_FMT_NB] = { }, }; +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; diff --git a/libavutil/pixdesc.h b/libavutil/pixdesc.h index c8743487c9..1fa571f405 100644 --- a/libavutil/pixdesc.h +++ b/libavutil/pixdesc.h @@ -203,6 +203,19 @@ static inline void write_line(const uint16_t *src, uint8_t *data[4], const int l } /** + * 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. * |