From: Michael Niedermayer Date: Mon, 17 Mar 2014 13:14:10 +0000 (+0100) Subject: Merge commit '1481d24c3a0abf81e1d7a514547bd5305232be30' X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=6b1ca1709fe5d66eef8292dc9f495cf3182517b4;p=ffmpeg Merge commit '1481d24c3a0abf81e1d7a514547bd5305232be30' * commit '1481d24c3a0abf81e1d7a514547bd5305232be30': RGBA64 pixel formats Conflicts: doc/APIchanges libavutil/pixdesc.c libavutil/pixfmt.h libavutil/version.h libswscale/utils.c See: 9569a3c9f41387a8c7d1ce97d8693520477a66c3 See: 92afb431621c79155fcb7171d26f137eb1bee028, as well as others Note: the enum values added in libav are incompatible/different to what ffmpeg used since 3 years Merged-by: Michael Niedermayer --- 6b1ca1709fe5d66eef8292dc9f495cf3182517b4 diff --cc doc/APIchanges index 60984355af9,38d18bc826a..8da7ad336dc --- a/doc/APIchanges +++ b/doc/APIchanges @@@ -15,25 -13,16 +15,28 @@@ libavutil: 2012-10-2 API changes, most recent first: + 2014-xx-xx - xxxxxxx - lavu 53.06.0 - pixfmt.h - Add RGBA64 pixel format and variants. ++ Add RGBA64_LIBAV pixel format and variants for compatibility + -2014-xx-xx - xxxxxxx - lavu 53.05.0 - frame.h +2014-03-11 - 3f3229c - lavf 55.34.101 - avformat.h + Set AVFormatContext.start_time_realtime when demuxing. + +2014-xx-xx - xxxxxx - lavd 55.11.100 - avdevice.h + Add av_input_audio_device_next(). + Add av_input_video_device_next(). + Add av_output_audio_device_next(). + Add av_output_video_device_next(). + +2014-02-24 - fff5262 / 1155fd0 - lavu 52.66.100 / 53.5.0 - frame.h Add av_frame_copy() for copying the frame data. -2014-02-xx - xxxxxxx - lavr 1.2.0 - avresample.h +2014-02-24 - a66be60 - lswr 0.18.100 - swresample.h + Add swr_is_initialized() for checking whether a resample context is initialized. + +2014-02-22 - 5367c0b / 7e86c27 - lavr 1.2.0 - avresample.h Add avresample_is_open() for checking whether a resample context is open. -2014-xx-xx - xxxxxxx - lavu 53.04.0 - opt.h +2014-02-19 - 6a24d77 / c3ecd96 - lavu 52.65.100 / 53.4.0 - opt.h Add AV_OPT_FLAG_EXPORT and AV_OPT_FLAG_READONLY to mark options meant (only) for reading. diff --cc libavutil/pixdesc.c index 7d41b2220cd,d0e69194517..45889727ca2 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@@ -1050,27 -982,27 +1050,27 @@@ const AVPixFmtDescriptor av_pix_fmt_des }, [AV_PIX_FMT_BGRA64BE] = { .name = "bgra64be", - .nb_components= 4, - .log2_chroma_w= 0, - .log2_chroma_h= 0, + .nb_components = 4, + .log2_chroma_w = 0, + .log2_chroma_h = 0, .comp = { - { 0, 5, 1, 0, 15 }, /* B */ - { 0, 5, 3, 0, 15 }, /* G */ - { 0, 5, 5, 0, 15 }, /* R */ - { 0, 5, 7, 0, 15 }, /* A */ + { 0, 7, 5, 0, 15 }, /* R */ + { 0, 7, 3, 0, 15 }, /* G */ + { 0, 7, 1, 0, 15 }, /* B */ + { 0, 7, 7, 0, 15 }, /* A */ }, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, }, [AV_PIX_FMT_BGRA64LE] = { .name = "bgra64le", - .nb_components= 4, - .log2_chroma_w= 0, - .log2_chroma_h= 0, + .nb_components = 4, + .log2_chroma_w = 0, + .log2_chroma_h = 0, .comp = { - { 0, 5, 1, 0, 15 }, /* B */ - { 0, 5, 3, 0, 15 }, /* G */ - { 0, 5, 5, 0, 15 }, /* R */ - { 0, 5, 7, 0, 15 }, /* A */ + { 0, 7, 5, 0, 15 }, /* R */ + { 0, 7, 3, 0, 15 }, /* G */ + { 0, 7, 1, 0, 15 }, /* B */ + { 0, 7, 7, 0, 15 }, /* A */ }, .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, }, diff --cc libavutil/pixfmt.h index 9418c4a2b98,e86ec7ee791..374f967608e --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@@ -217,55 -191,10 +217,66 @@@ enum AVPixelFormat AV_PIX_FMT_NV20LE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian AV_PIX_FMT_NV20BE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian ++ /** ++ * duplicated pixel formats for compatibility with libav. ++ * FFmpeg supports these formats since Sat Sep 24 06:01:45 2011 +0200 (commits 9569a3c9f41387a8c7d1ce97d8693520477a66c3) ++ * also see Fri Nov 25 01:38:21 2011 +0100 92afb431621c79155fcb7171d26f137eb1bee028 ++ * Libav added them Sun Mar 16 23:05:47 2014 +0100 with incompatible values (commit 1481d24c3a0abf81e1d7a514547bd5305232be30) ++ */ ++ AV_PIX_FMT_RGBA64BE_LIBAV, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian ++ AV_PIX_FMT_RGBA64LE_LIBAV, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian ++ AV_PIX_FMT_BGRA64BE_LIBAV, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian ++ AV_PIX_FMT_BGRA64LE_LIBAV, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian ++ +#ifndef AV_PIX_FMT_ABI_GIT_MASTER + AV_PIX_FMT_RGBA64BE=0x123, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian + AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian + AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian + AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian +#endif + AV_PIX_FMT_0RGB=0x123+4, ///< packed RGB 8:8:8, 32bpp, 0RGB0RGB... + AV_PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGB0RGB0... + AV_PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, 0BGR0BGR... + AV_PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGR0BGR0... + AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) + AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) + + AV_PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + AV_PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + AV_PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + AV_PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + AV_PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + AV_PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + AV_PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + AV_PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big-endian + AV_PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little-endian + AV_PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big-endian + AV_PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little-endian + AV_PIX_FMT_GBRAP, ///< planar GBRA 4:4:4:4 32bpp + AV_PIX_FMT_GBRAP16BE, ///< planar GBRA 4:4:4:4 64bpp, big-endian + AV_PIX_FMT_GBRAP16LE, ///< planar GBRA 4:4:4:4 64bpp, little-endian + AV_PIX_FMT_YUVJ411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor of PIX_FMT_YUV411P and setting color_range + + AV_PIX_FMT_BAYER_BGGR8, ///< bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples */ + AV_PIX_FMT_BAYER_RGGB8, ///< bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples */ + AV_PIX_FMT_BAYER_GBRG8, ///< bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples */ + AV_PIX_FMT_BAYER_GRBG8, ///< bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples */ + AV_PIX_FMT_BAYER_BGGR16LE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian */ + AV_PIX_FMT_BAYER_BGGR16BE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian */ + AV_PIX_FMT_BAYER_RGGB16LE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian */ + AV_PIX_FMT_BAYER_RGGB16BE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian */ + AV_PIX_FMT_BAYER_GBRG16LE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian */ + AV_PIX_FMT_BAYER_GBRG16BE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian */ + AV_PIX_FMT_BAYER_GRBG16LE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian */ + AV_PIX_FMT_BAYER_GRBG16BE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian */ +#if !FF_API_XVMC + AV_PIX_FMT_XVMC,///< XVideo Motion Acceleration via common packet passing +#endif /* !FF_API_XVMC */ AV_PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions @@@ -274,15 -203,6 +285,19 @@@ #endif }; +#if AV_HAVE_INCOMPATIBLE_LIBAV_ABI +#define AV_PIX_FMT_YUVA422P AV_PIX_FMT_YUVA422P_LIBAV +#define AV_PIX_FMT_YUVA444P AV_PIX_FMT_YUVA444P_LIBAV ++#define AV_PIX_FMT_RGBA64BE AV_PIX_FMT_RGBA64BE_LIBAV ++#define AV_PIX_FMT_RGBA64LE AV_PIX_FMT_RGBA64LE_LIBAV ++#define AV_PIX_FMT_BGRA64BE AV_PIX_FMT_BGRA64BE_LIBAV ++#define AV_PIX_FMT_BGRA64LE AV_PIX_FMT_BGRA64LE_LIBAV +#endif + + +#define AV_PIX_FMT_Y400A AV_PIX_FMT_GRAY8A +#define AV_PIX_FMT_GBR24P AV_PIX_FMT_GBRP + #if AV_HAVE_BIGENDIAN # define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##be #else @@@ -322,20 -236,9 +339,18 @@@ #define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) #define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) - #define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE) - #define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE) #define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE) #define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE) +#define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE) +#define AV_PIX_FMT_GBRP14 AV_PIX_FMT_NE(GBRP14BE, GBRP14LE) #define AV_PIX_FMT_GBRP16 AV_PIX_FMT_NE(GBRP16BE, GBRP16LE) +#define AV_PIX_FMT_GBRAP16 AV_PIX_FMT_NE(GBRAP16BE, GBRAP16LE) + +#define AV_PIX_FMT_BAYER_BGGR16 AV_PIX_FMT_NE(BAYER_BGGR16BE, BAYER_BGGR16LE) +#define AV_PIX_FMT_BAYER_RGGB16 AV_PIX_FMT_NE(BAYER_RGGB16BE, BAYER_RGGB16LE) +#define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE, BAYER_GBRG16LE) +#define AV_PIX_FMT_BAYER_GRBG16 AV_PIX_FMT_NE(BAYER_GRBG16BE, BAYER_GRBG16LE) + #define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE) #define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE) diff --cc libavutil/version.h index fc959ebd742,36070b251a8..02c9ce0c0e1 --- a/libavutil/version.h +++ b/libavutil/version.h @@@ -55,9 -53,9 +55,9 @@@ * @{ */ -#define LIBAVUTIL_VERSION_MAJOR 53 -#define LIBAVUTIL_VERSION_MINOR 6 -#define LIBAVUTIL_VERSION_MICRO 0 +#define LIBAVUTIL_VERSION_MAJOR 52 - #define LIBAVUTIL_VERSION_MINOR 66 - #define LIBAVUTIL_VERSION_MICRO 101 ++#define LIBAVUTIL_VERSION_MINOR 67 ++#define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ LIBAVUTIL_VERSION_MINOR, \ diff --cc libswscale/swscale_internal.h index e1118611657,bd57b20d6f0..5ce54d0dc39 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@@ -683,12 -626,9 +683,10 @@@ static av_always_inline int isRGB(enum (x) == AV_PIX_FMT_GRAY16LE) #endif -#define isRGBinInt(x) \ - ((x) == AV_PIX_FMT_RGB48BE || \ +#define isRGBinInt(x) \ + ( \ + (x) == AV_PIX_FMT_RGB48BE || \ (x) == AV_PIX_FMT_RGB48LE || \ - (x) == AV_PIX_FMT_RGBA64BE || \ - (x) == AV_PIX_FMT_RGBA64LE || \ (x) == AV_PIX_FMT_RGB32 || \ (x) == AV_PIX_FMT_RGB32_1 || \ (x) == AV_PIX_FMT_RGB24 || \ @@@ -701,15 -641,14 +699,15 @@@ (x) == AV_PIX_FMT_RGB8 || \ (x) == AV_PIX_FMT_RGB4 || \ (x) == AV_PIX_FMT_RGB4_BYTE || \ + (x) == AV_PIX_FMT_RGBA64BE || \ + (x) == AV_PIX_FMT_RGBA64LE || \ (x) == AV_PIX_FMT_MONOBLACK || \ - (x) == AV_PIX_FMT_MONOWHITE) - -#define isBGRinInt(x) \ - ((x) == AV_PIX_FMT_BGR48BE || \ + (x) == AV_PIX_FMT_MONOWHITE \ + ) +#define isBGRinInt(x) \ + ( \ + (x) == AV_PIX_FMT_BGR48BE || \ (x) == AV_PIX_FMT_BGR48LE || \ - (x) == AV_PIX_FMT_BGRA64BE || \ - (x) == AV_PIX_FMT_BGRA64LE || \ (x) == AV_PIX_FMT_BGR32 || \ (x) == AV_PIX_FMT_BGR32_1 || \ (x) == AV_PIX_FMT_BGR24 || \ @@@ -722,51 -661,14 +720,53 @@@ (x) == AV_PIX_FMT_BGR8 || \ (x) == AV_PIX_FMT_BGR4 || \ (x) == AV_PIX_FMT_BGR4_BYTE || \ + (x) == AV_PIX_FMT_BGRA64BE || \ + (x) == AV_PIX_FMT_BGRA64LE || \ (x) == AV_PIX_FMT_MONOBLACK || \ - (x) == AV_PIX_FMT_MONOWHITE) - -#define isAnyRGB(x) \ - (isRGBinInt(x) || \ - isBGRinInt(x)) + (x) == AV_PIX_FMT_MONOWHITE \ + ) + +#define isRGBinBytes(x) ( \ + (x) == AV_PIX_FMT_RGB48BE \ + || (x) == AV_PIX_FMT_RGB48LE \ + || (x) == AV_PIX_FMT_RGBA64BE \ + || (x) == AV_PIX_FMT_RGBA64LE \ + || (x) == AV_PIX_FMT_RGBA \ + || (x) == AV_PIX_FMT_ARGB \ + || (x) == AV_PIX_FMT_RGB24 \ + ) +#define isBGRinBytes(x) ( \ + (x) == AV_PIX_FMT_BGR48BE \ + || (x) == AV_PIX_FMT_BGR48LE \ + || (x) == AV_PIX_FMT_BGRA64BE \ + || (x) == AV_PIX_FMT_BGRA64LE \ + || (x) == AV_PIX_FMT_BGRA \ + || (x) == AV_PIX_FMT_ABGR \ + || (x) == AV_PIX_FMT_BGR24 \ + ) + +#define isBayer(x) ( \ + (x)==AV_PIX_FMT_BAYER_BGGR8 \ + || (x)==AV_PIX_FMT_BAYER_BGGR16LE \ + || (x)==AV_PIX_FMT_BAYER_BGGR16BE \ + || (x)==AV_PIX_FMT_BAYER_RGGB8 \ + || (x)==AV_PIX_FMT_BAYER_RGGB16LE \ + || (x)==AV_PIX_FMT_BAYER_RGGB16BE \ + || (x)==AV_PIX_FMT_BAYER_GBRG8 \ + || (x)==AV_PIX_FMT_BAYER_GBRG16LE \ + || (x)==AV_PIX_FMT_BAYER_GBRG16BE \ + || (x)==AV_PIX_FMT_BAYER_GRBG8 \ + || (x)==AV_PIX_FMT_BAYER_GRBG16LE \ + || (x)==AV_PIX_FMT_BAYER_GRBG16BE \ + ) + +#define isAnyRGB(x) \ + ( \ + isBayer(x) || \ + isRGBinInt(x) || \ + isBGRinInt(x) || \ + isRGB(x) \ + ) static av_always_inline int isALPHA(enum AVPixelFormat pix_fmt) {