FFMPEG学习【libswscale】

颜色转换和缩放库。

返回LIBSWSCALE_VERSION_INT常量。



一、数据结构

struct   SwsVector{
double * coeff; // 指向系数列表的指针
int length; //向量中的系数数量
}

struct   SwsFilter{
SwsVector * lumH;
SwsVector * lumV;
SwsVector * chrH;
SwsVector * chrV;
}



二、宏

#define  SWS_FAST_BILINEAR   1
 
#define  SWS_BILINEAR   2
 
#define  SWS_BICUBIC   4
 
#define  SWS_X   8
 
#define  SWS_POINT   0x10
 
#define  SWS_AREA   0x20
 
#define  SWS_BICUBLIN   0x40
 
#define  SWS_GAUSS   0x80
 
#define  SWS_SINC   0x100
 
#define  SWS_LANCZOS   0x200
 
#define  SWS_SPLINE   0x400
 
#define  SWS_SRC_V_CHR_DROP_MASK   0x30000
 
#define  SWS_SRC_V_CHR_DROP_SHIFT   16
 
#define  SWS_PARAM_DEFAULT   123456
 
#define  SWS_PRINT_INFO   0x1000
 
#define  SWS_FULL_CHR_H_INT   0x2000
 
#define  SWS_FULL_CHR_H_INP   0x4000
 
#define  SWS_DIRECT_BGR   0x8000
 
#define  SWS_ACCURATE_RND   0x40000
 
#define  SWS_BITEXACT   0x80000
 
#define  SWS_ERROR_DIFFUSION   0x800000
 
#define  SWS_MAX_REDUCE_CUTOFF   0.002
 
#define  SWS_CS_ITU709   1
 
#define  SWS_CS_FCC   4
 
#define  SWS_CS_ITU601   5
 
#define  SWS_CS_ITU624   5
 
#define  SWS_CS_SMPTE170M   5
 
#define  SWS_CS_SMPTE240M   7
 
#define  SWS_CS_DEFAULT   5
 
#define  SWS_CS_BT2020   9



三、函数

unsigned  swscale_version (void)

const char *  swscale_configuration (void)
返回libswscale构建时配置。


const char *  swscale_license (void)
返回libswscale许可证。


const int *  sws_getCoefficients (int colorspace)
返回指向适用于sws setColorspace Details()的给定颜色空间的yuv < - > rgb系数的指针。

参数:colorspace:其中一个SWS_CS_ *宏。 如果无效,则使用SWS_CS_DEFAULT。


int  sws_isSupportedInput (enum AVPixelFormat pix_fmt)
如果pix_fmt是支持的输入格式,则返回正值,否则返回0。


int  sws_isSupportedOutput (enum AVPixelFormat pix_fmt)
如果pix_fmt是支持的输出格式,则返回正值,否则返回0。


int  sws_isSupportedEndiannessConversion (enum AVPixelFormat pix_fmt)
参数:pix_fmt:像素格式

返回:如果支持pix_fmt的字节顺序转换,则为正值,否则为0。


struct SwsContext *  sws_alloc_context (void)
分配一个空的SwsContext。

他必须填写并传递给sws_init_context()。 要填写,请参阅AVOptions,options.c和sws_setColorspaceDetails()。


av_warn_unused_result int  sws_init_context (struct SwsContext *sws_context, SwsFilter *srcFilter, SwsFilter *dstFilter)
初始化swscaler上下文sws_context。

返回:成功为零或正值,误差为负值


void  sws_freeContext (struct SwsContext *swsContext)
释放swscaler上下文swsContext。

如果swsContext为NULL,则不做任何操作。


struct SwsContext *  sws_getContext (int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flagsSwsFilter *srcFilter, SwsFilter *dstFilter, const double *param)
分配并返回SwsContext。

您需要使用sws_scale()执行缩放/转换操作。

参数:srcW:源图像的宽度

   srcH:源图像的高度

   srcFormat:源图像格式

   dstW:目的地图像的宽度

   dstW:目的地图像的高度

   dstFormat:目的地图像格式

   flags:指定用于重新缩放的哪种算法和选项

   param:调整使用的缩放器的额外参数对于SWS_BICUBIC参数[0]和[1]调整基函数的形状,param [0]调谐f(1)和param [1] f'(1)对于SWS_GAUSS参数[0] 调整指数并因此调节截止频率对于SWS_LANCZOS参数[0]调整窗口函数的宽度

返回:指向分配的上下文的指针,如果出现错误则为NULL

注意:这个函数将在写入更清晰的替代方法后被删除


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[])
缩放srcSlice中的图像切片,并将结果缩放的切片放在dst中的图像中。

切片是图像中连续行的序列。

必须按顺序提供切片,无论是以顶部还是底部的顺序。 如果以不间断的顺序提供切片,则该函数的行为是未定义的。

参数:c:以前使用sws_getContext()创建的缩放上下文

   srcSlice:该数组包含指向源切片平面的指针

   srcStride:该阵列包含源图像的每个平面的步幅

   srcSliceY:要处理的片的源图像中的位置,即片的第一行的图像中的数(从零开始计数)

   srcSliceH:源切片的高度,即切片中的行数

   dst:该数组包含指向目标图像平面的指针

   dstStride:该阵列包含目标图像的每个平面的步幅

返回:输出切片的高度

缩放srcSlice中的图像切片,并将结果缩放的切片放在dst中的图像中。

假设平面YUV处于YUV顺序而不是YVU。


int  sws_setColorspaceDetails (struct SwsContext *c, const int inv_table[4], int srcRange, const int table[4], int dstRange, int brightness, int contrast, int saturation)
参数: dstRange:指示输出的while-black范围的标志(1 = jpeg / 0 = mpeg)

   srcRange:指示输入的while-black范围的标志(1 = jpeg / 0 = mpeg)

   table:描述输出yuv空间的yuv2rgb系数,通常为ff_yuv2rgb_coeffs [x]

   inv_table:描述输入yuv空间的yuv2rgb系数,通常为ff_yuv2rgb_coeffs [x]

   brightness:16.16定点亮度校正

   brightness:16.16定点对比度校正

   saturation:16.16定点饱和度校正

返回:-1如果不支持。


int  sws_getColorspaceDetails (struct SwsContext *cint **inv_table, int *srcRange, int **tableint *dstRange, int *brightness, int *contrast, int *saturation)
返回:-1如果不支持。

SwsVector *  sws_allocVec (int length)
分配并返回具有长度系数的未初始化向量。


SwsVector *  sws_getGaussianVec (double variance, double quality)
返回用于过滤质量的归一化高斯曲线= 3是高品质,较低质量。


void  sws_scaleVec (SwsVector *a, double scalar)
将a的所有系数缩放为标量值。


void  sws_normalizeVec (SwsVector *a, double height)
缩放a的所有系数,使其总和等于高度。


attribute_deprecated SwsVector *  sws_getConstVec (double cint length)
分配并返回具有长度系数的向量,全部具有相同的值c。


attribute_deprecated SwsVector *  sws_getIdentityVec (void)
分配并返回一个只有一个系数的值,值为1.0。


attribute_deprecated void  sws_convVec (SwsVector *aSwsVector *b)

attribute_deprecated void  sws_addVec (SwsVector *aSwsVector *b)

attribute_deprecated void  sws_subVec (SwsVector *aSwsVector *b)

attribute_deprecated void  sws_shiftVec (SwsVector *aint shift)

attribute_deprecated SwsVector *  sws_cloneVec (SwsVector *a)

attribute_deprecated void  sws_printVec2 (SwsVector *aAVClass *log_ctx, int log_level)
用av_log()打印向量的文本表示,如果log_level <= av_log_level。


void  sws_freeVec (SwsVector *a)

SwsFilter *  sws_getDefaultFilter (float lumaGBlur, float chromaGBlur, float lumaSharpen, float chromaSharpen, float chromaHShift, float chromaVShift, int verbose)

void  sws_freeFilter (SwsFilter *filter)

struct SwsContext *  sws_getCachedContext (struct SwsContext *context, int srcW, int srcH, enum AVPixelFormat srcFormat, int dstW, int dstH, enum AVPixelFormat dstFormat, int flagsSwsFilter *srcFilter, SwsFilter *dstFilter, const double *param)
检查上下文是否可以重用,否则重新分配一个上下文。

如果上下文为NULL,则只需调用sws_getContext()即可获取新的上下文。 否则,检查参数是否已经保存在上下文中。 如果是这样,返回当前上下文。 否则,释放上下文并使用新参数获取新的上下文。

要警告srcFilter和dstFilter不被检查,它们被认为保持不变。


void  sws_convertPalette8ToPacked32 (const uint8_t *srcuint8_t *dst, int num_pixels, const uint8_t *palette)
将8位调色框转换为颜色深度为32位的帧。

输出框将具有与调色板相同的打包格式。

参数:src:源帧缓冲区

   dst:目的帧缓冲区

   num_pixels:要转换的像素数

   palette:数组具有[256]条目,必须匹配src的颜色排列(RGB或BGR)


void  sws_convertPalette8ToPacked24 (const uint8_t *srcuint8_t *dst, int num_pixels, const uint8_t *palette)
将8位调色框转换为颜色深度为24位的帧。

使用调色板格式“ABCD”,目标帧的格式为“ABC”。

参数:src:源帧缓冲区

   dst:目的帧缓冲区

   num_pixels:要转换的像素数

   palette:数组具有[256]条目,必须匹配src的颜色排列(RGB或BGR)


const AVClass *  sws_get_class (void)
获取swsContext的AVClass。

它可以与AV_OPT_SEARCH_FAKE_OBJ结合使用来检查选项。

查看:av_opt_find().

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值