/** * Convert from <n x i32> packed YUYV to <4n x i8> RGBA AoS */ static LLVMValueRef yuyv_to_rgba_aos(struct gallivm_state *gallivm, unsigned n, LLVMValueRef packed, LLVMValueRef i) { LLVMValueRef y, u, v; LLVMValueRef r, g, b; LLVMValueRef rgba; yuyv_to_yuv_soa(gallivm, n, packed, i, &y, &u, &v); yuv_to_rgb_soa(gallivm, n, y, u, v, &r, &g, &b); rgba = rgb_to_rgba_aos(gallivm, n, r, g, b); return rgba; }
/** * Convert from <n x i32> packed YUYV to <4n x i8> RGBA AoS */ static LLVMValueRef yuyv_to_rgba_aos(LLVMBuilderRef builder, unsigned n, LLVMValueRef packed, LLVMValueRef i) { LLVMValueRef y, u, v; LLVMValueRef r, g, b; LLVMValueRef rgba; yuyv_to_yuv_soa(builder, n, packed, i, &y, &u, &v); yuv_to_rgb_soa(builder, n, y, u, v, &r, &g, &b); rgba = rgb_to_rgba_aos(builder, n, r, g, b); return rgba; }