[swscaler] Warning: data is not aligned! This can lead to a speedloss 的解决方法【FFmpeg】

[swscaler] Warning: data is not aligned! This can lead to a speedloss 的解决

相信如果你用了FFmpeg一段时间,对以下的黄色警告肯定不会陌生




这种刺眼的黄色警告(还会影响性能),对一个强迫症患者来说,实在是不能忍!

其实导致报警的原因很简单,就是swscaler的缩放的目标尺寸不合适,它想要的大小是 16 的倍数!


只要简单的代码就解决掉这个讨厌的警告:

	m_dst_h = (dst_h >> 4) << 4 ;
	m_dst_w = (dst_w >> 4) <<4 ;


如果是按比例的话,就是:

	float ratio = 1.0f * getSrcWidth()/getSrcHeight();
	m_dst_h = (dst_h >> 4) << 4 ;
	m_dst_w = (int(ratio * m_dst_h)>>4)  <<4 ;


如图,世界就清净了



注意以上方法得到的尺寸是不大于原大小的,如果想得到不小于原大小尺寸,那么就要改为以下方法:

size = (size + 0xf) & ~0xf;


如果想得到2次幂的宽高,且不小于原宽高,那么改为以下方法:


 int tmp = 1;
 int w = bitmap.getWidth();
 int h = bitmap.getHeight();
 while (w > tmp || h > tmp) {
      tmp <<= 1;
 }

 int width = tmp;
 int height = tmp;





发布了239 篇原创文章 · 获赞 223 · 访问量 108万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览