aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefano Sabatini <stefano.sabatini-lala@poste.it>2010-01-30 18:50:00 +0000
committerStefano Sabatini <stefano.sabatini-lala@poste.it>2010-01-30 18:50:00 +0000
commit80a07f6e47a842ca351ebec3478878204cd1d0b7 (patch)
tree8fd672ac9acafe58958f0de532966c6dcfe8b6f3
parent7b0b81a16d16f583b7a871e19ada8ccc1b6b4aa3 (diff)
downloadffmpeg-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.h6
-rw-r--r--libavcodec/imgconvert.c33
-rw-r--r--libavutil/avutil.h2
-rw-r--r--libavutil/pixdesc.c37
-rw-r--r--libavutil/pixdesc.h13
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.
*