metal - 我想用金属将RGB转换为YUV
问题描述
我想用metal把RGB转YUV,现在得到的YUV数据显示有问题,谁能帮帮我?
kernel void rgb2yuv(
texture2d<float, access::sample> inTexture [[ texture(0) ]],
device float *outBufferY [[ buffer(0) ]],
device float2 *outBufferUV [[ buffer(1) ]],
// device float *outBufferV [[ buffer(2) ]],
constant uint2 &outSize [[ buffer(3) ]],
constant TestColorConversion &colorConversion [[ buffer(4) ]],
uint2 gid [[thread_position_in_grid]]
) {
if (gid.x >= outSize.x || gid.y >= outSize.y) {
return;
}
float3 rgb = inTexture.read(gid).rgb;
float3 ycbcr = colorConversion.offset + colorConversion.matrix*rgb;
uint idx = gid.y * outSize.x + gid.x;
outBufferY[idx] = ycbcr.r;
outBufferUV[idx] = ycbcr.gb;
}
解决方案
推荐阅读
- ruby-on-rails - Nginx 试图打开不存在的passengerfile.json
- sql - SQL join 仅一次
- spring-webflux - Webflux - 多次读取单声道(请求)
- css - 带圆角的 Spinner CSS
- javascript - 读取对象数据导致未定义但正确读取键
- javascript - 在打字稿中的多维数组中查找索引
- javascript - 使用 reactjs 将数据保存在表单中
- java - 在android中拨打电话号码时缺少括号
- c# - ASP.NET Core 3.1 - EF Core 无法翻译 GroupBy 和 Join
- python - Kivy - 从弹出窗口自动启动方法