Merge commit 'c1eb3e7fecdc270e03a700d61ef941600a6af491'
* commit 'c1eb3e7fecdc270e03a700d61ef941600a6af491': swscale: add support for endianness only conversion Conflicts: libswscale/utils.c libswscale/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		
						commit
						2060d94409
					
				@ -146,6 +146,13 @@ int sws_isSupportedInput(enum AVPixelFormat pix_fmt);
 | 
			
		||||
 */
 | 
			
		||||
int sws_isSupportedOutput(enum AVPixelFormat pix_fmt);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @param[in]  pix_fmt the pixel format
 | 
			
		||||
 * @return a positive value if an endianness conversion for pix_fmt is
 | 
			
		||||
 * supported, 0 otherwise.
 | 
			
		||||
 */
 | 
			
		||||
int sws_isSupportedEndiannessConversion(enum AVPixelFormat pix_fmt);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Allocate an empty SwsContext. This must be filled and passed to
 | 
			
		||||
 * sws_init_context(). For filling see AVOptions, options.c and
 | 
			
		||||
 | 
			
		||||
@ -72,7 +72,9 @@ const char *swscale_license(void)
 | 
			
		||||
#define RET 0xC3 // near return opcode for x86
 | 
			
		||||
 | 
			
		||||
typedef struct FormatEntry {
 | 
			
		||||
    int is_supported_in, is_supported_out;
 | 
			
		||||
    uint8_t is_supported_in         :1;
 | 
			
		||||
    uint8_t is_supported_out        :1;
 | 
			
		||||
    uint8_t is_supported_endianness :1;
 | 
			
		||||
} FormatEntry;
 | 
			
		||||
 | 
			
		||||
static const FormatEntry format_entries[AV_PIX_FMT_NB] = {
 | 
			
		||||
@ -215,6 +217,12 @@ int sws_isSupportedOutput(enum AVPixelFormat pix_fmt)
 | 
			
		||||
           format_entries[pix_fmt].is_supported_out : 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int sws_isSupportedEndiannessConversion(enum AVPixelFormat pix_fmt)
 | 
			
		||||
{
 | 
			
		||||
    return (unsigned)pix_fmt < AV_PIX_FMT_NB ?
 | 
			
		||||
           format_entries[pix_fmt].is_supported_endianness : 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extern const int32_t ff_yuv2rgb_coeffs[8][4];
 | 
			
		||||
 | 
			
		||||
#if FF_API_SWS_FORMAT_NAME
 | 
			
		||||
@ -1077,6 +1085,8 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
 | 
			
		||||
        c->dstFormat= dstFormat;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!(unscaled && sws_isSupportedEndiannessConversion(srcFormat) &&
 | 
			
		||||
          av_pix_fmt_swap_endianness(srcFormat) == dstFormat)) {
 | 
			
		||||
    if (!sws_isSupportedInput(srcFormat)) {
 | 
			
		||||
        av_log(c, AV_LOG_ERROR, "%s is not supported as input pixel format\n",
 | 
			
		||||
               av_get_pix_fmt_name(srcFormat));
 | 
			
		||||
@ -1087,6 +1097,7 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
 | 
			
		||||
               av_get_pix_fmt_name(dstFormat));
 | 
			
		||||
        return AVERROR(EINVAL);
 | 
			
		||||
    }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    i = flags & (SWS_POINT         |
 | 
			
		||||
                 SWS_AREA          |
 | 
			
		||||
 | 
			
		||||
@ -27,7 +27,7 @@
 | 
			
		||||
#include "libavutil/avutil.h"
 | 
			
		||||
 | 
			
		||||
#define LIBSWSCALE_VERSION_MAJOR 2
 | 
			
		||||
#define LIBSWSCALE_VERSION_MINOR 2
 | 
			
		||||
#define LIBSWSCALE_VERSION_MINOR 3
 | 
			
		||||
#define LIBSWSCALE_VERSION_MICRO 100
 | 
			
		||||
 | 
			
		||||
#define LIBSWSCALE_VERSION_INT  AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user