首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将YCbCr平面格式转换为封装格式?

如何将YCbCr平面格式转换为封装格式?
EN

Stack Overflow用户
提问于 2015-12-14 15:21:48
回答 2查看 1.3K关注 0票数 0

我的资料来源于FFmpeg,它是YCbCr平面格式(YUV420P,I420),

出于某些原因,我需要将其转换为YCbCr打包格式(NV12),

而且它要用WIC YCbCr API来做,我怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2015-12-19 04:24:41

为什么是WIC?利比亚人更直截了当,可能表现得更好。

https://code.google.com/p/libyuv/

功能:

规模YUV准备内容压缩,与点,双线性或盒过滤器。 转换为YUV从网络摄像头格式。 从YUV转换为渲染/效果格式。 旋转90/180/270度,以调整移动设备的纵向模式。 在x86/x64上为SSE2 2/SSSE3 3/AVX2 2优化的

API:

代码语言:javascript
复制
/ Convert NV12 to I420.
LIBYUV_API
int NV12ToI420(const uint8* src_y, int src_stride_y,
               const uint8* src_uv, int src_stride_uv,
               uint8* dst_y, int dst_stride_y,
               uint8* dst_u, int dst_stride_u,
               uint8* dst_v, int dst_stride_v,
               int width, int height);

// Convert NV21 to I420.
LIBYUV_API
int NV21ToI420(const uint8* src_y, int src_stride_y,
               const uint8* src_vu, int src_stride_vu,
               uint8* dst_y, int dst_stride_y,
               uint8* dst_u, int dst_stride_u,
               uint8* dst_v, int dst_stride_v,
               int width, int height);
票数 1
EN

Stack Overflow用户

发布于 2015-12-19 08:48:51

我不确定WIC是否是正确的API来处理它。彩色转换器DSP是来自媒体基金会的一篇文章,可以单独使用,它肯定会负责转换。它使用SIMD指令进行了很好的优化,并且在Windows时代就存在于核心操作系统中。

FFmpeg的libswscale也做了同样的事情。像这样的库和API可能处理特定的方向,这取决于内部实现。有可能NV12在libswscale中没有很好地实现。

同时,I420到NV12是一个非常简单的转换方向,您可以使用一次代码屏幕和SIMD内部函数来实现它,并且非常有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34270596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档