You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Implement av_get_pix_fmt(), and deprecate avcodec_get_pix_fmt().
Originally committed as revision 21545 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
| @@ -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) | ||||
| { | ||||
|   | ||||
| @@ -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, \ | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -202,6 +202,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. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user