Skip to content
This repository has been archived by the owner on Feb 10, 2025. It is now read-only.

Commit

Permalink
Fix F16 to another surface type
Browse files Browse the repository at this point in the history
  • Loading branch information
awxkee committed Apr 13, 2024
1 parent 12e6d68 commit 6de8f36
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 16 deletions.
4 changes: 2 additions & 2 deletions src/Channels-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -266,12 +266,12 @@ ReformatSurfaceF16ToU(const uint16_t *SPARKYUV_RESTRICT src, const uint32_t srcS
const auto uout1l = ConvertTo(f32, PromoteLowerTo(di32, BitCast(di16, out1)));
const auto uout2l = ConvertTo(f32, PromoteLowerTo(di32, BitCast(di16, out2)));
const auto uout3l = ConvertTo(f32, PromoteLowerTo(di32, BitCast(di16, out3)));
const auto uout4l = ConvertTo(f32, PromoteLowerTo(di32, BitCast(di16, out3)));
const auto uout4l = ConvertTo(f32, PromoteLowerTo(di32, BitCast(di16, out4)));

const auto uout1h = ConvertTo(f32, PromoteUpperTo(di32, BitCast(di16, out1)));
const auto uout2h = ConvertTo(f32, PromoteUpperTo(di32, BitCast(di16, out2)));
const auto uout3h = ConvertTo(f32, PromoteUpperTo(di32, BitCast(di16, out3)));
const auto uout4h = ConvertTo(f32, PromoteUpperTo(di32, BitCast(di16, out3)));
const auto uout4h = ConvertTo(f32, PromoteUpperTo(di32, BitCast(di16, out4)));

const auto al = ConvertTo(d32, uout4l);
const auto rl = ConvertTo(d32, uout1l);
Expand Down
43 changes: 29 additions & 14 deletions tools/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,13 @@ int main() {
// sparkyuv::RGBToNV24BT601(inSrcData.data(), inWidth * sizeof(uint8_t) * 3, inWidth, inHeight, yNVPlane.data(),
// nvWidth, uvPlane.data(), uvPlaneStride);
sparkyuv::NV16ToRGBA(rgbaNVData.data(),
rgbaNVStride,
nvWidth,
nvHeight,
yNVPlane.data(),
nvWidth,
uvPlane.data(),
uvPlaneStride, 0.2126f, 0.0722f, sparkyuv::YUV_RANGE_TV);
rgbaNVStride,
nvWidth,
nvHeight,
yNVPlane.data(),
nvWidth,
uvPlane.data(),
uvPlaneStride, 0.2126f, 0.0722f, sparkyuv::YUV_RANGE_TV);
});

//
Expand Down Expand Up @@ -147,13 +147,13 @@ int main() {
const size_t rgbaStride = sizeof(uint8_t) * width * 4;
std::vector<uint8_t> rgbaData(rgbaStride * height);

sparkyuv::RGBToRGBA(inSrcData.data(), inWidth * sizeof (uint8_t) * 3, rgbaData.data(), rgbaStride, inWidth, inHeight);
sparkyuv::RGBToRGBA(inSrcData.data(), inWidth * sizeof(uint8_t) * 3, rgbaData.data(), rgbaStride, inWidth, inHeight);

bench(1, ANSI_COLOR_GREEN, "RGBA -> YCbCr420", [&]() {
sparkyuv::RGBA8ToYIQ422P8(rgbaData.data(), rgbaStride, width, height,
yPlane.data(), yPlaneStride,
uPlane.data(), uvPlaneStride,
vPlane.data(), uvPlaneStride, sparkyuv::YUV_RANGE_PC);
yPlane.data(), yPlaneStride,
uPlane.data(), uvPlaneStride,
vPlane.data(), uvPlaneStride, sparkyuv::YUV_RANGE_PC);
// libyuv::ABGRToI420(rgbaData.data(), rgbaStride, yPlane.data(), yPlaneStride,
// uPlane.data(), uvPlaneStride,
// vPlane.data(), uvPlaneStride, width, height );
Expand All @@ -166,9 +166,9 @@ int main() {
// uPlane.data(), uvPlaneStride,
// vPlane.data(), uvPlaneStride, rgbaData.data(), rgbaStride, width, height);
sparkyuv::YIQ422P8ToRGBA8(rgbaData.data(), rgbaStride, width, height,
yPlane.data(), yPlaneStride,
uPlane.data(), uvPlaneStride,
vPlane.data(), uvPlaneStride, sparkyuv::YUV_RANGE_PC);
yPlane.data(), yPlaneStride,
uPlane.data(), uvPlaneStride,
vPlane.data(), uvPlaneStride, sparkyuv::YUV_RANGE_PC);
});

// RGBToRGBA(inSrcData.data(), inWidth * sizeof(uint8_t)* 3, rgbaData.data(), inWidth*4* sizeof(uint8_t), width, height);
Expand Down Expand Up @@ -284,6 +284,21 @@ int main() {
// sparkyuv::SaturateRGBA10To8(reinterpret_cast<uint16_t *>(rgba16Data.data()), inWidth * 4 * sizeof(uint16_t),
// rgbaData.data(), inWidth * 4 * sizeof(uint8_t), inWidth, inHeight);

sparkyuv::RGBAToRGBAF16(rgbaData.data(),
rgbaStride,
reinterpret_cast<uint16_t *>(rgba16Data.data()),
sizeof(uint16_t) * inWidth * 4,
inWidth,
inHeight);
std::vector<uint8_t> rgba1010102(sizeof(uint32_t) * inWidth * inHeight);
sparkyuv::RGBAF16ToRGBA1010102(reinterpret_cast<uint16_t *>(rgba16Data.data()),
sizeof(uint16_t) * inWidth * 4, rgba1010102.data(), sizeof(uint32_t) * inWidth,
inWidth,
inHeight);
sparkyuv::RGBA1010102ToRGBA(rgba1010102.data(), sizeof(uint32_t) * inWidth, rgbaData.data(),
rgbaStride, inWidth,
inHeight);

aire::JPEGEncoder encoder(rgbaData.data(), rgbaStride, width, height);
auto encoded = encoder.encode();
saveVectorToFile(encoded, "jpeg.jpeg");
Expand Down

0 comments on commit 6de8f36

Please sign in to comment.