int flags,/* 选择缩放算法(只有当输入输出图像大小不同时有效),一般选择SWS_FAST_BILINEAR */ SwsFilter *srcFilter, /* 输入图像的滤波器信息, 若不需要传NULL */ SwsFilter *dstFilter, /* 输出图像的滤波器信息, 若不需要传NULL */ const double *param /* 特定缩放算法需要的参数(?),默认为NULL */...
// 输入图像的像素格式m_size.width(),// 输出图像的宽度m_size.height(),// 输出图像的高度AV_PIX_FMT_RGBA,// 输出图像的像素格式SWS_BILINEAR,// 选择缩放算法(只有当输入输出图像大小不同时有效),一般选择SWS_FAST_BILINEARnullptr,// 输入图像的滤波器信息, 若不需要传NULLnullptr,//...
void VideoDecoder::InitSws() { // 初始化格式转换工具 m_sws_ctx = sws_getContext(width(), height(), video_pixel_format(), m_dst_w, m_dst_h, DST_FORMAT, SWS_FAST_BILINEAR, NULL, NULL, NULL); } 这个很简单,只要将原画面数据和目标画面数据的长宽、格式等传递进去即可。 释放相关资源 在...
sws_scale的算法有如下这些选择。 #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_SPL...
width, height, AV_PIX_FMT_YUV420P, SWS_FAST_BILINEAR, NULL, NULL, NULL); } 这里根据目标输出视频的宽高,原格式(OpenGL输出的RGBA数据)/目标格式(YUV),初始化格式转换器,这个与解码刚好是相反的过程。 2. 编码参数初始化: 2.1 初始化上下文和子类内部数据,主要时配置编码视频的宽高、码率、帧率、时间基...
SWS_FAST_BILINEAR, 0, 0, 0); numBytes = avpicture_get_size(AV_PIX_FMT_RGBA, pAVCodecContext->width, pAVCodecContext->height); outBuffer = (uchar *)av_malloc(numBytes); // pAVFrame32的data指针指向了outBuffer avpicture_fill((AVPicture *)pAVFrameRGB32, ...
SWS_FAST_BILINEAR, NULL, NULL, NULL); //3. 格式转换 sws_scale(m_SwsContext, frame->data, frame->linesize, 0, m_VideoHeight, m_RGBAFrame->data, m_RGBAFrame->linesize); //4. 释放资源 if(m_RGBAFrame != nullptr) { av_frame_free(&m_RGBAFrame); ...
SWS_FAST_BILINEAR, NULL, NULL, NULL); //3. 格式转换 sws_scale(m_SwsContext, frame->data, frame->linesize, 0, m_VideoHeight, m_RGBAFrame->data, m_RGBAFrame->linesize); //4. 释放资源 if(m_RGBAFrame != nullptr) { av_frame_free(&m_RGBAFrame); ...
SWS_PF_BGRA=PIX_FMT_BGRA, }; classCFFScale { public: CFFScale(void); ~CFFScale(void); //设置输入输出图片属性以及Scale算法 voidSetAttribute(PicFormat srcFormat, PicFormat dstFormat, SwsAlogrithm enAlogrithm=SWS_SA_FAST_BILINEAR);
个人建议,如果对图像的缩放,要追求高效,比如说是视频图像的处理,在不明确是放大还是缩小时,直接使用SWS_FAST_BILINEAR算法即可。如果明确是要缩小并显示,建议使用Point算法,如果是明确要放大并显示,其实使用CImage的Strech更高效。 当然,如果不计速度追求画面质量。在上面的算法中,选择帧率最低的那个即可,画面效果一般...