我試圖圍繞霓虹內在環繞我的頭,並認爲我可以從一個例子開始,並提出一些問題。ARM霓虹內在深度轉換
在這個實驗中,我想將32位RGB轉換爲16位BGR。將以下代碼轉換爲使用NEON內部函數將會是一個好的開始?我在這裏遇到的問題是16bit與我看不到的內在匹配。有16x4 16x8等,但我只是有點運氣包裝我的想法,我需要如何處理這個問題。有小費嗎?
這是我想要轉換的代碼。
typedef struct {
uint16_t b:5, g:6, r:5;
} _color16;
static int depth_transform_32_to_16_c (VisVideo *dest, VisVideo *src)
{
int x, y;
int w;
int h;
_color16 *dbuf = visual_video_get_pixels (dest);
uint8_t *sbuf = visual_video_get_pixels (src);
uint16x8
int ddiff;
int sdiff;
depth_transform_get_smallest (dest, src, &w, &h);
ddiff = (dest->pitch/dest->bpp) - w;
sdiff = src->pitch - (w * src->bpp);
for (y = 0; y < h; y++) {
for (x = 0; x < w; x++) {
dbuf->b = *(sbuf++) >> 3;
dbuf->g = *(sbuf++) >> 2;
dbuf->r = *(sbuf++) >> 3;
dbuf++;
sbuf++;
}
dbuf += ddiff;
sbuf += sdiff;
}
return VISUAL_OK;
}
編輯:哦,由於某種原因,我一直在尋找這個考慮16×3位,但我們正在尋找5,6,5- = 16位。我意識到我需要輪班。嗯。