Commit 19cab246 authored by stefano's avatar stefano

Extend the behavior of avcodec_get_pix_fmt(), if it cannot find a

pixel format for the provided name, make it look for the native endian
variant of the name.


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18130 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 4d29e6c1
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#define LIBAVCODEC_VERSION_MAJOR 52 #define LIBAVCODEC_VERSION_MAJOR 52
#define LIBAVCODEC_VERSION_MINOR 22 #define LIBAVCODEC_VERSION_MINOR 22
#define LIBAVCODEC_VERSION_MICRO 1 #define LIBAVCODEC_VERSION_MICRO 2
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \ LIBAVCODEC_VERSION_MINOR, \
...@@ -2708,6 +2708,18 @@ int avpicture_get_size(enum PixelFormat pix_fmt, int width, int height); ...@@ -2708,6 +2708,18 @@ int avpicture_get_size(enum PixelFormat pix_fmt, int width, int height);
void avcodec_get_chroma_sub_sample(enum PixelFormat pix_fmt, int *h_shift, int *v_shift); void avcodec_get_chroma_sub_sample(enum PixelFormat pix_fmt, int *h_shift, int *v_shift);
const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt); const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt);
void avcodec_set_dimensions(AVCodecContext *s, int width, int height); void avcodec_set_dimensions(AVCodecContext *s, int width, int height);
/**
* Returns the pixel format corresponding to the name \p name.
*
* If there is no pixel format with name \p name, then looks for a
* pixel format with the name corresponding to the native endian
* format of \p name.
* For example in a little-endian system, first looks for "gray16",
* then for "gray16le".
*
* Finally if no pixel format has been found, returns \c PIX_FMT_NONE.
*/
enum PixelFormat avcodec_get_pix_fmt(const char* name); enum PixelFormat avcodec_get_pix_fmt(const char* name);
unsigned int avcodec_pix_fmt_to_codec_tag(enum PixelFormat p); unsigned int avcodec_pix_fmt_to_codec_tag(enum PixelFormat p);
......
...@@ -457,7 +457,7 @@ const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt) ...@@ -457,7 +457,7 @@ const char *avcodec_get_pix_fmt_name(enum PixelFormat pix_fmt)
return pix_fmt_info[pix_fmt].name; return pix_fmt_info[pix_fmt].name;
} }
enum PixelFormat avcodec_get_pix_fmt(const char* name) static enum PixelFormat avcodec_get_pix_fmt_internal(const char *name)
{ {
int i; int i;
...@@ -467,6 +467,24 @@ enum PixelFormat avcodec_get_pix_fmt(const char* name) ...@@ -467,6 +467,24 @@ enum PixelFormat avcodec_get_pix_fmt(const char* name)
return PIX_FMT_NONE; return PIX_FMT_NONE;
} }
enum PixelFormat avcodec_get_pix_fmt(const char *name)
{
#ifdef WORDS_BIGENDIAN
# define NE "be"
#else
# define NE "le"
#endif
enum PixelFormat pix_fmt = avcodec_get_pix_fmt_internal(name);
if (pix_fmt == PIX_FMT_NONE) {
char name2[32];
snprintf(name2, sizeof(name2), "%s%s", name, NE);
pix_fmt = avcodec_get_pix_fmt_internal(name2);
}
return pix_fmt;
#undef NE
}
void avcodec_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt) void avcodec_pix_fmt_string (char *buf, int buf_size, enum PixelFormat pix_fmt)
{ {
/* print header */ /* print header */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment