首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libyuv's NV21ToI420的构建参数

libyuv's NV21ToI420的构建参数
EN

Stack Overflow用户
提问于 2014-06-06 06:52:33
回答 1查看 1K关注 0票数 0

在我的Android应用程序中,我以字节数组的形式获得NV21格式的相机输出。在本机方面,我需要使用libyuv的I420函数将这个数组转换为NV21ToI420格式。它的定义如下:

代码语言:javascript
复制
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);

我只有一个指向NV21数据、宽度和高度的指针。我想知道如何计算src_stride_y、src_stride_vu等的值。如果有人能分享一些关于如何正确使用这个函数的示例代码,我很感激。在网络中搜索NV21ToI420并没有产生任何示例。致以问候。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-09 22:50:46

src_stride_y通常是帧的宽度,而src_stride_uv是帧宽的一半(因为对于任何YUV42x格式,水平维度都有下采样)。在某些情况下,宽度是一个奇怪的数字,使用它会在内存安排中造成很大的效率低下,例如,如果您使用的宽度为135。在这种情况下,处理器/编译器/库/OS会用零/1/垃圾填充每一行,直到这个大小变得更容易计算-- 4/64字节或类似的倍数。这一推理适用于dst_stride_y (~width)和dst_stride_u/dst_stride_v (~width/2)。IIRC,如果您选择了Android中摄像头提供的捕获大小,那么您就不应该有与宽度和宽度/2不同的步幅,所以您应该做得很好。

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

https://stackoverflow.com/questions/24075923

复制
相关文章

相似问题

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