mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-08 23:58:51 +00:00
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);
|
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
|
* Allocate an empty SwsContext. This must be filled and passed to
|
||||||
* sws_init_context(). For filling see AVOptions, options.c and
|
* 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
|
#define RET 0xC3 // near return opcode for x86
|
||||||
|
|
||||||
typedef struct FormatEntry {
|
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;
|
} FormatEntry;
|
||||||
|
|
||||||
static const FormatEntry format_entries[AV_PIX_FMT_NB] = {
|
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;
|
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];
|
extern const int32_t ff_yuv2rgb_coeffs[8][4];
|
||||||
|
|
||||||
#if FF_API_SWS_FORMAT_NAME
|
#if FF_API_SWS_FORMAT_NAME
|
||||||
@ -1077,6 +1085,8 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
|
|||||||
c->dstFormat= dstFormat;
|
c->dstFormat= dstFormat;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!(unscaled && sws_isSupportedEndiannessConversion(srcFormat) &&
|
||||||
|
av_pix_fmt_swap_endianness(srcFormat) == dstFormat)) {
|
||||||
if (!sws_isSupportedInput(srcFormat)) {
|
if (!sws_isSupportedInput(srcFormat)) {
|
||||||
av_log(c, AV_LOG_ERROR, "%s is not supported as input pixel format\n",
|
av_log(c, AV_LOG_ERROR, "%s is not supported as input pixel format\n",
|
||||||
av_get_pix_fmt_name(srcFormat));
|
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));
|
av_get_pix_fmt_name(dstFormat));
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
i = flags & (SWS_POINT |
|
i = flags & (SWS_POINT |
|
||||||
SWS_AREA |
|
SWS_AREA |
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include "libavutil/avutil.h"
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
#define LIBSWSCALE_VERSION_MAJOR 2
|
#define LIBSWSCALE_VERSION_MAJOR 2
|
||||||
#define LIBSWSCALE_VERSION_MINOR 2
|
#define LIBSWSCALE_VERSION_MINOR 3
|
||||||
#define LIBSWSCALE_VERSION_MICRO 100
|
#define LIBSWSCALE_VERSION_MICRO 100
|
||||||
|
|
||||||
#define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
|
#define LIBSWSCALE_VERSION_INT AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user