Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
83890c66
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
83890c66
编写于
12月 30, 2011
作者:
D
Diego Biurrun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
swscale: K&R reformatting cosmetics for header files
上级
a83f5b8a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
157 addition
and
144 deletion
+157
-144
libswscale/ppc/yuv2rgb_altivec.h
libswscale/ppc/yuv2rgb_altivec.h
+12
-7
libswscale/rgb2rgb.h
libswscale/rgb2rgb.h
+15
-15
libswscale/swscale.h
libswscale/swscale.h
+2
-3
libswscale/swscale_internal.h
libswscale/swscale_internal.h
+128
-119
未找到文件。
libswscale/ppc/yuv2rgb_altivec.h
浏览文件 @
83890c66
...
...
@@ -24,13 +24,18 @@
#ifndef SWSCALE_PPC_YUV2RGB_ALTIVEC_H
#define SWSCALE_PPC_YUV2RGB_ALTIVEC_H
#define YUV2PACKEDX_HEADER(suffix) \
void ff_yuv2 ## suffix ## _X_altivec(SwsContext *c, const int16_t *lumFilter, \
const int16_t **lumSrc, int lumFilterSize, \
const int16_t *chrFilter, const int16_t **chrUSrc, \
const int16_t **chrVSrc, int chrFilterSize, \
const int16_t **alpSrc, uint8_t *dest, \
int dstW, int dstY);
#define YUV2PACKEDX_HEADER(suffix) \
void ff_yuv2 ## suffix ## _X_altivec(SwsContext *c, \
const int16_t *lumFilter, \
const int16_t **lumSrc, \
int lumFilterSize, \
const int16_t *chrFilter, \
const int16_t **chrUSrc, \
const int16_t **chrVSrc, \
int chrFilterSize, \
const int16_t **alpSrc, \
uint8_t *dest, \
int dstW, int dstY);
YUV2PACKEDX_HEADER
(
abgr
);
YUV2PACKEDX_HEADER
(
bgra
);
...
...
libswscale/rgb2rgb.h
浏览文件 @
83890c66
...
...
@@ -36,32 +36,33 @@ extern void (*rgb24tobgr32)(const uint8_t *src, uint8_t *dst, int src_size);
extern
void
(
*
rgb24tobgr16
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb24tobgr15
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb32tobgr24
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb32to16
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb32to15
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb15to16
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb32to16
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb32to15
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb15to16
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb15tobgr24
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb15to32
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb16to15
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb15to32
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb16to15
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb16tobgr24
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb16to32
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb16to32
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb24tobgr24
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb24to16
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb24to15
)
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
shuffle_bytes_2103
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb24to16
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb24to15
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb32tobgr16
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
rgb32tobgr15
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb24to32
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb32to24
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
extern
void
(
*
shuffle_bytes_2103
)(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb24to32
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb32to24
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb16tobgr32
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb16to24
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb16to24
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb16tobgr16
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb16tobgr15
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb15tobgr32
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb15to24
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb15to24
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb15tobgr16
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
rgb15tobgr15
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
bgr8torgb8
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
bgr8torgb8
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
shuffle_bytes_0321
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
void
shuffle_bytes_1230
(
const
uint8_t
*
src
,
uint8_t
*
dst
,
int
src_size
);
...
...
@@ -138,7 +139,6 @@ extern void (*yvu9_to_yuy2)(const uint8_t *src1, const uint8_t *src2, const uint
int
srcStride1
,
int
srcStride2
,
int
srcStride3
,
int
dstStride
);
extern
void
(
*
uyvytoyuv420
)(
uint8_t
*
ydst
,
uint8_t
*
udst
,
uint8_t
*
vdst
,
const
uint8_t
*
src
,
int
width
,
int
height
,
int
lumStride
,
int
chromStride
,
int
srcStride
);
...
...
libswscale/swscale.h
浏览文件 @
83890c66
...
...
@@ -132,7 +132,6 @@ const char *swscale_license(void);
*/
const
int
*
sws_getCoefficients
(
int
colorspace
);
// when used for filters they must have an odd number of elements
// coeffs cannot be shared between vectors
typedef
struct
{
...
...
@@ -232,9 +231,9 @@ struct SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat
* the destination image
* @return the height of the output slice
*/
int
sws_scale
(
struct
SwsContext
*
c
,
const
uint8_t
*
const
srcSlice
[],
int
sws_scale
(
struct
SwsContext
*
c
,
const
uint8_t
*
const
srcSlice
[],
const
int
srcStride
[],
int
srcSliceY
,
int
srcSliceH
,
uint8_t
*
const
dst
[],
const
int
dstStride
[]);
uint8_t
*
const
dst
[],
const
int
dstStride
[]);
/**
* @param inv_table the yuv2rgb coefficients, normally ff_yuv2rgb_coeffs[x]
...
...
libswscale/swscale_internal.h
浏览文件 @
83890c66
...
...
@@ -32,9 +32,9 @@
#include "libavutil/pixfmt.h"
#include "libavutil/pixdesc.h"
#define STR(s)
AV_TOSTRING(s) //
AV_STRINGIFY is too long
#define STR(s)
AV_TOSTRING(s) //
AV_STRINGIFY is too long
#define FAST_BGR2YV12 //use 7-bit instead of 15-bit coefficients
#define FAST_BGR2YV12 //
use 7-bit instead of 15-bit coefficients
#define MAX_FILTER_SIZE 256
...
...
@@ -45,21 +45,20 @@
#endif
#if ARCH_X86_64
# define APCK_PTR2 8
# define APCK_PTR2
8
# define APCK_COEF 16
# define APCK_SIZE 24
#else
# define APCK_PTR2 4
# define APCK_COEF 8
# define APCK_PTR2
4
# define APCK_COEF
8
# define APCK_SIZE 16
#endif
struct
SwsContext
;
typedef
int
(
*
SwsFunc
)(
struct
SwsContext
*
context
,
const
uint8_t
*
src
[],
typedef
int
(
*
SwsFunc
)(
struct
SwsContext
*
context
,
const
uint8_t
*
src
[],
int
srcStride
[],
int
srcSliceY
,
int
srcSliceH
,
uint8_t
*
dst
[],
int
dstStride
[]);
uint8_t
*
dst
[],
int
dstStride
[]);
/**
* Write one line of horizontally scaled data to planar output
...
...
@@ -73,8 +72,8 @@ typedef int (*SwsFunc)(struct SwsContext *context, const uint8_t* src[],
* @param dither ordered dither array of type int16_t and size 8
* @param offset Dither offset
*/
typedef
void
(
*
yuv2planar1_fn
)
(
const
int16_t
*
src
,
uint8_t
*
dest
,
int
dstW
,
const
uint8_t
*
dither
,
int
offset
);
typedef
void
(
*
yuv2planar1_fn
)(
const
int16_t
*
src
,
uint8_t
*
dest
,
int
dstW
,
const
uint8_t
*
dither
,
int
offset
);
/**
* Write one line of horizontally scaled data to planar output
...
...
@@ -89,9 +88,9 @@ typedef void (*yuv2planar1_fn) (const int16_t *src, uint8_t *dest, int dstW,
* @param dstW width of destination pixels
* @param offset Dither offset
*/
typedef
void
(
*
yuv2planarX_fn
)
(
const
int16_t
*
filter
,
int
filterSize
,
const
int16_t
**
src
,
uint8_t
*
dest
,
int
dstW
,
const
uint8_t
*
dither
,
int
offset
);
typedef
void
(
*
yuv2planarX_fn
)(
const
int16_t
*
filter
,
int
filterSize
,
const
int16_t
**
src
,
uint8_t
*
dest
,
int
dstW
,
const
uint8_t
*
dither
,
int
offset
);
/**
* Write one line of horizontally scaled chroma to interleaved output
...
...
@@ -108,9 +107,12 @@ typedef void (*yuv2planarX_fn) (const int16_t *filter, int filterSize,
* output, this is in uint16_t
* @param dstW width of chroma planes
*/
typedef
void
(
*
yuv2interleavedX_fn
)
(
struct
SwsContext
*
c
,
const
int16_t
*
chrFilter
,
int
chrFilterSize
,
const
int16_t
**
chrUSrc
,
const
int16_t
**
chrVSrc
,
uint8_t
*
dest
,
int
dstW
);
typedef
void
(
*
yuv2interleavedX_fn
)(
struct
SwsContext
*
c
,
const
int16_t
*
chrFilter
,
int
chrFilterSize
,
const
int16_t
**
chrUSrc
,
const
int16_t
**
chrVSrc
,
uint8_t
*
dest
,
int
dstW
);
/**
* Write one line of horizontally scaled Y/U/V/A to packed-pixel YUV/RGB
...
...
@@ -141,10 +143,11 @@ typedef void (*yuv2interleavedX_fn) (struct SwsContext *c, const int16_t *chrFil
* but can be used to generate comfort noise using dithering
* for some output formats.
*/
typedef
void
(
*
yuv2packed1_fn
)
(
struct
SwsContext
*
c
,
const
int16_t
*
lumSrc
,
const
int16_t
*
chrUSrc
[
2
],
const
int16_t
*
chrVSrc
[
2
],
const
int16_t
*
alpSrc
,
uint8_t
*
dest
,
int
dstW
,
int
uvalpha
,
int
y
);
typedef
void
(
*
yuv2packed1_fn
)(
struct
SwsContext
*
c
,
const
int16_t
*
lumSrc
,
const
int16_t
*
chrUSrc
[
2
],
const
int16_t
*
chrVSrc
[
2
],
const
int16_t
*
alpSrc
,
uint8_t
*
dest
,
int
dstW
,
int
uvalpha
,
int
y
);
/**
* Write one line of horizontally scaled Y/U/V/A to packed-pixel YUV/RGB
* output by doing bilinear scaling between two input lines.
...
...
@@ -173,10 +176,12 @@ typedef void (*yuv2packed1_fn) (struct SwsContext *c, const int16_t *lumSrc,
* but can be used to generate comfort noise using dithering
* for some output formats.
*/
typedef
void
(
*
yuv2packed2_fn
)
(
struct
SwsContext
*
c
,
const
int16_t
*
lumSrc
[
2
],
const
int16_t
*
chrUSrc
[
2
],
const
int16_t
*
chrVSrc
[
2
],
const
int16_t
*
alpSrc
[
2
],
uint8_t
*
dest
,
int
dstW
,
int
yalpha
,
int
uvalpha
,
int
y
);
typedef
void
(
*
yuv2packed2_fn
)(
struct
SwsContext
*
c
,
const
int16_t
*
lumSrc
[
2
],
const
int16_t
*
chrUSrc
[
2
],
const
int16_t
*
chrVSrc
[
2
],
const
int16_t
*
alpSrc
[
2
],
uint8_t
*
dest
,
int
dstW
,
int
yalpha
,
int
uvalpha
,
int
y
);
/**
* Write one line of horizontally scaled Y/U/V/A to packed-pixel YUV/RGB
* output by doing multi-point vertical scaling between input pixels.
...
...
@@ -203,12 +208,13 @@ typedef void (*yuv2packed2_fn) (struct SwsContext *c, const int16_t *lumSrc[2],
* but can be used to generate comfort noise using dithering
* or some output formats.
*/
typedef
void
(
*
yuv2packedX_fn
)
(
struct
SwsContext
*
c
,
const
int16_t
*
lumFilter
,
const
int16_t
**
lumSrc
,
int
lumFilterSize
,
const
int16_t
*
chrFilter
,
const
int16_t
**
chrUSrc
,
const
int16_t
**
chrVSrc
,
int
chrFilterSize
,
const
int16_t
**
alpSrc
,
uint8_t
*
dest
,
int
dstW
,
int
y
);
typedef
void
(
*
yuv2packedX_fn
)(
struct
SwsContext
*
c
,
const
int16_t
*
lumFilter
,
const
int16_t
**
lumSrc
,
int
lumFilterSize
,
const
int16_t
*
chrFilter
,
const
int16_t
**
chrUSrc
,
const
int16_t
**
chrVSrc
,
int
chrFilterSize
,
const
int16_t
**
alpSrc
,
uint8_t
*
dest
,
int
dstW
,
int
y
);
/* This struct should be aligned on at least a 32-byte boundary. */
typedef
struct
SwsContext
{
...
...
@@ -261,12 +267,12 @@ typedef struct SwsContext {
int16_t
**
chrUPixBuf
;
///< Ring buffer for scaled horizontal chroma plane lines to be fed to the vertical scaler.
int16_t
**
chrVPixBuf
;
///< Ring buffer for scaled horizontal chroma plane lines to be fed to the vertical scaler.
int16_t
**
alpPixBuf
;
///< Ring buffer for scaled horizontal alpha plane lines to be fed to the vertical scaler.
int
vLumBufSize
;
///< Number of vertical luma/alpha lines allocated in the ring buffer.
int
vChrBufSize
;
///< Number of vertical chroma lines allocated in the ring buffer.
int
lastInLumBuf
;
///< Last scaled horizontal luma/alpha line from source in the ring buffer.
int
lastInChrBuf
;
///< Last scaled horizontal chroma line from source in the ring buffer.
int
lumBufIndex
;
///< Index in ring buffer of the last scaled horizontal luma/alpha line from source.
int
chrBufIndex
;
///< Index in ring buffer of the last scaled horizontal chroma line from source.
int
vLumBufSize
;
///< Number of vertical luma/alpha lines allocated in the ring buffer.
int
vChrBufSize
;
///< Number of vertical chroma lines allocated in the ring buffer.
int
lastInLumBuf
;
///< Last scaled horizontal luma/alpha line from source in the ring buffer.
int
lastInChrBuf
;
///< Last scaled horizontal chroma line from source in the ring buffer.
int
lumBufIndex
;
///< Index in ring buffer of the last scaled horizontal luma/alpha line from source.
int
chrBufIndex
;
///< Index in ring buffer of the last scaled horizontal chroma line from source.
//@}
uint8_t
*
formatConvBuffer
;
...
...
@@ -293,10 +299,10 @@ typedef struct SwsContext {
int16_t
*
hChrFilterPos
;
///< Array of horizontal filter starting positions for each dst[i] for chroma planes.
int16_t
*
vLumFilterPos
;
///< Array of vertical filter starting positions for each dst[i] for luma/alpha planes.
int16_t
*
vChrFilterPos
;
///< Array of vertical filter starting positions for each dst[i] for chroma planes.
int
hLumFilterSize
;
///< Horizontal filter size for luma/alpha pixels.
int
hChrFilterSize
;
///< Horizontal filter size for chroma pixels.
int
vLumFilterSize
;
///< Vertical filter size for luma/alpha pixels.
int
vChrFilterSize
;
///< Vertical filter size for chroma pixels.
int
hLumFilterSize
;
///< Horizontal filter size for luma/alpha pixels.
int
hChrFilterSize
;
///< Horizontal filter size for chroma pixels.
int
vLumFilterSize
;
///< Vertical filter size for luma/alpha pixels.
int
vChrFilterSize
;
///< Vertical filter size for chroma pixels.
//@}
int
lumMmx2FilterCodeSize
;
///< Runtime-generated MMX2 horizontal fast bilinear scaler code size for luma/alpha planes.
...
...
@@ -308,11 +314,11 @@ typedef struct SwsContext {
int
dstY
;
///< Last destination vertical line output from last slice.
int
flags
;
///< Flags passed by the user to select scaler algorithm, optimizations, subsampling, etc...
void
*
yuvTable
;
// pointer to the yuv->rgb table start so it can be freed()
uint8_t
*
table_rV
[
256
];
uint8_t
*
table_gU
[
256
];
int
table_gV
[
256
];
uint8_t
*
table_bU
[
256
];
void
*
yuvTable
;
// pointer to the yuv->rgb table start so it can be freed()
uint8_t
*
table_rV
[
256
];
uint8_t
*
table_gU
[
256
];
int
table_gV
[
256
];
uint8_t
*
table_bU
[
256
];
//Colorspace stuff
int
contrast
,
brightness
,
saturation
;
// for sws_getColorspaceDetails
...
...
@@ -364,15 +370,15 @@ typedef struct SwsContext {
DECLARE_ALIGNED
(
8
,
uint64_t
,
yOffset
);
DECLARE_ALIGNED
(
8
,
uint64_t
,
uOffset
);
DECLARE_ALIGNED
(
8
,
uint64_t
,
vOffset
);
int32_t
lumMmxFilter
[
4
*
MAX_FILTER_SIZE
];
int32_t
chrMmxFilter
[
4
*
MAX_FILTER_SIZE
];
int32_t
lumMmxFilter
[
4
*
MAX_FILTER_SIZE
];
int32_t
chrMmxFilter
[
4
*
MAX_FILTER_SIZE
];
int
dstW
;
///< Width of destination luma/alpha planes.
DECLARE_ALIGNED
(
8
,
uint64_t
,
esp
);
DECLARE_ALIGNED
(
8
,
uint64_t
,
vRounder
);
DECLARE_ALIGNED
(
8
,
uint64_t
,
u_temp
);
DECLARE_ALIGNED
(
8
,
uint64_t
,
v_temp
);
DECLARE_ALIGNED
(
8
,
uint64_t
,
y_temp
);
int32_t
alpMmxFilter
[
4
*
MAX_FILTER_SIZE
];
int32_t
alpMmxFilter
[
4
*
MAX_FILTER_SIZE
];
// alignment of these values is not necessary, but merely here
// to maintain the same offset across x8632 and x86-64. Once we
// use proper offset macros in the asm, they can be removed.
...
...
@@ -391,7 +397,7 @@ typedef struct SwsContext {
vector
signed
short
CGV
;
vector
signed
short
OY
;
vector
unsigned
short
CSHIFT
;
vector
signed
short
*
vYCoeffsBank
,
*
vCCoeffsBank
;
vector
signed
short
*
vYCoeffsBank
,
*
vCCoeffsBank
;
#endif
#if ARCH_BFIN
...
...
@@ -420,21 +426,25 @@ typedef struct SwsContext {
yuv2packed2_fn
yuv2packed2
;
yuv2packedX_fn
yuv2packedX
;
/// Unscaled conversion of luma plane to YV12 for horizontal scaler.
void
(
*
lumToYV12
)(
uint8_t
*
dst
,
const
uint8_t
*
src
,
int
width
,
uint32_t
*
pal
);
///< Unscaled conversion of luma plane to YV12 for horizontal scaler.
int
width
,
uint32_t
*
pal
);
/// Unscaled conversion of alpha plane to YV12 for horizontal scaler.
void
(
*
alpToYV12
)(
uint8_t
*
dst
,
const
uint8_t
*
src
,
int
width
,
uint32_t
*
pal
);
///< Unscaled conversion of alpha plane to YV12 for horizontal scaler.
int
width
,
uint32_t
*
pal
);
/// Unscaled conversion of chroma planes to YV12 for horizontal scaler.
void
(
*
chrToYV12
)(
uint8_t
*
dstU
,
uint8_t
*
dstV
,
const
uint8_t
*
src1
,
const
uint8_t
*
src2
,
int
width
,
uint32_t
*
pal
);
///< Unscaled conversion of chroma planes to YV12 for horizontal scaler.
int
width
,
uint32_t
*
pal
);
/**
* Functions to read planar input, such as planar RGB, and convert
* internally to Y/UV.
*/
* Functions to read planar input, such as planar RGB, and convert
* internally to Y/UV.
*/
/** @{ */
void
(
*
readLumPlanar
)(
uint8_t
*
dst
,
const
uint8_t
*
src
[
4
],
int
width
);
void
(
*
readChrPlanar
)(
uint8_t
*
dstU
,
uint8_t
*
dstV
,
const
uint8_t
*
src
[
4
],
int
width
);
void
(
*
readChrPlanar
)(
uint8_t
*
dstU
,
uint8_t
*
dstV
,
const
uint8_t
*
src
[
4
],
int
width
);
/** @} */
/**
...
...
@@ -496,19 +506,20 @@ typedef struct SwsContext {
* to simplify creating SIMD code.
*/
/** @{ */
void
(
*
hyScale
)(
struct
SwsContext
*
c
,
int16_t
*
dst
,
int
dstW
,
const
uint8_t
*
src
,
const
int16_t
*
filter
,
const
int16_t
*
filterPos
,
int
filterSize
);
void
(
*
hcScale
)(
struct
SwsContext
*
c
,
int16_t
*
dst
,
int
dstW
,
const
uint8_t
*
src
,
const
int16_t
*
filter
,
const
int16_t
*
filterPos
,
int
filterSize
);
void
(
*
hyScale
)(
struct
SwsContext
*
c
,
int16_t
*
dst
,
int
dstW
,
const
uint8_t
*
src
,
const
int16_t
*
filter
,
const
int16_t
*
filterPos
,
int
filterSize
);
void
(
*
hcScale
)(
struct
SwsContext
*
c
,
int16_t
*
dst
,
int
dstW
,
const
uint8_t
*
src
,
const
int16_t
*
filter
,
const
int16_t
*
filterPos
,
int
filterSize
);
/** @} */
void
(
*
lumConvertRange
)(
int16_t
*
dst
,
int
width
);
///< Color range conversion function for luma plane if needed.
void
(
*
chrConvertRange
)(
int16_t
*
dst1
,
int16_t
*
dst2
,
int
width
);
///< Color range conversion function for chroma planes if needed.
/// Color range conversion function for luma plane if needed.
void
(
*
lumConvertRange
)(
int16_t
*
dst
,
int
width
);
/// Color range conversion function for chroma planes if needed.
void
(
*
chrConvertRange
)(
int16_t
*
dst1
,
int16_t
*
dst2
,
int
width
);
int
needs_hcscale
;
///< Set if there are chroma planes to be converted.
}
SwsContext
;
//FIXME check init (where 0)
...
...
@@ -557,66 +568,64 @@ const char *sws_format_name(enum PixelFormat format);
(!(av_pix_fmt_descriptors[x].flags & PIX_FMT_PAL) && \
av_pix_fmt_descriptors[x].nb_components <= 2)
#else
#define isGray(x) ( \
(x)==PIX_FMT_GRAY8 \
|| (x)==PIX_FMT_Y400A \
|| (x)==PIX_FMT_GRAY16BE \
|| (x)==PIX_FMT_GRAY16LE \
)
#define isGray(x) \
((x) == PIX_FMT_GRAY8 || \
(x) == PIX_FMT_Y400A || \
(x) == PIX_FMT_GRAY16BE || \
(x) == PIX_FMT_GRAY16LE)
#endif
#define isRGBinInt(x)
(
\
(x)==PIX_FMT_RGB48BE
\
|| (x)==PIX_FMT_RGB48LE
\
|| (x)==PIX_FMT_RGB32
\
|| (x)==PIX_FMT_RGB32_1
\
|| (x)==PIX_FMT_RGB24
\
|| (x)==PIX_FMT_RGB565BE
\
|| (x)==PIX_FMT_RGB565LE
\
|| (x)==PIX_FMT_RGB555BE
\
|| (x)==PIX_FMT_RGB555LE
\
|| (x)==PIX_FMT_RGB444BE
\
|| (x)==PIX_FMT_RGB444LE
\
|| (x)==PIX_FMT_RGB8
\
|| (x)==PIX_FMT_RGB4
\
|| (x)==PIX_FMT_RGB4_BYTE
\
|| (x)==PIX_FMT_MONOBLACK
\
|| (x)==PIX_FMT_MONOWHITE \
)
#define isBGRinInt(x)
(
\
(x)==PIX_FMT_BGR48BE
\
|| (x)==PIX_FMT_BGR48LE
\
|| (x)==PIX_FMT_BGR32
\
|| (x)==PIX_FMT_BGR32_1
\
|| (x)==PIX_FMT_BGR24
\
|| (x)==PIX_FMT_BGR565BE
\
|| (x)==PIX_FMT_BGR565LE
\
|| (x)==PIX_FMT_BGR555BE
\
|| (x)==PIX_FMT_BGR555LE
\
|| (x)==PIX_FMT_BGR444BE
\
|| (x)==PIX_FMT_BGR444LE
\
|| (x)==PIX_FMT_BGR8
\
|| (x)==PIX_FMT_BGR4
\
|| (x)==PIX_FMT_BGR4_BYTE
\
|| (x)==PIX_FMT_MONOBLACK
\
|| (x)==PIX_FMT_MONOWHITE \
)
#define isAnyRGB(x)
(
\
isRGBinInt(x)
\
|| isBGRinInt(x) \
)
#define isALPHA(x) \
(av_pix_fmt_descriptors[x].nb_components == 2 || \
#define isRGBinInt(x)
\
((x) == PIX_FMT_RGB48BE ||
\
(x) == PIX_FMT_RGB48LE ||
\
(x) == PIX_FMT_RGB32 ||
\
(x) == PIX_FMT_RGB32_1 ||
\
(x) == PIX_FMT_RGB24 ||
\
(x) == PIX_FMT_RGB565BE ||
\
(x) == PIX_FMT_RGB565LE ||
\
(x) == PIX_FMT_RGB555BE ||
\
(x) == PIX_FMT_RGB555LE ||
\
(x) == PIX_FMT_RGB444BE ||
\
(x) == PIX_FMT_RGB444LE ||
\
(x) == PIX_FMT_RGB8 ||
\
(x) == PIX_FMT_RGB4 ||
\
(x) == PIX_FMT_RGB4_BYTE ||
\
(x) == PIX_FMT_MONOBLACK ||
\
(x) == PIX_FMT_MONOWHITE)
#define isBGRinInt(x)
\
((x) == PIX_FMT_BGR48BE ||
\
(x) == PIX_FMT_BGR48LE ||
\
(x) == PIX_FMT_BGR32 ||
\
(x) == PIX_FMT_BGR32_1 ||
\
(x) == PIX_FMT_BGR24 ||
\
(x) == PIX_FMT_BGR565BE ||
\
(x) == PIX_FMT_BGR565LE ||
\
(x) == PIX_FMT_BGR555BE ||
\
(x) == PIX_FMT_BGR555LE ||
\
(x) == PIX_FMT_BGR444BE ||
\
(x) == PIX_FMT_BGR444LE ||
\
(x) == PIX_FMT_BGR8 ||
\
(x) == PIX_FMT_BGR4 ||
\
(x) == PIX_FMT_BGR4_BYTE ||
\
(x) == PIX_FMT_MONOBLACK ||
\
(x) == PIX_FMT_MONOWHITE)
#define isAnyRGB(x)
\
(isRGBinInt(x) ||
\
isBGRinInt(x))
#define isALPHA(x)
\
(av_pix_fmt_descriptors[x].nb_components == 2
|| \
av_pix_fmt_descriptors[x].nb_components == 4)
#define isPacked(x) (\
(av_pix_fmt_descriptors[x].nb_components >= 2 && \
!(av_pix_fmt_descriptors[x].flags & PIX_FMT_PLANAR)) || \
(x) == PIX_FMT_PAL8\
)
#define isPacked(x) \
((av_pix_fmt_descriptors[x].nb_components >= 2 && \
!(av_pix_fmt_descriptors[x].flags & PIX_FMT_PLANAR)) || \
(x) == PIX_FMT_PAL8)
#define isPlanar(x) \
(av_pix_fmt_descriptors[x].nb_components >= 2
&&
\
(av_pix_fmt_descriptors[x].nb_components >= 2
&&
\
(av_pix_fmt_descriptors[x].flags & PIX_FMT_PLANAR))
#define usePal(x) ((av_pix_fmt_descriptors[x].flags & PIX_FMT_PAL) || (x) == PIX_FMT_Y400A)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录