gpt4 book ai didi

android - 如何将 jpeg 图像转换为 nv21 帧?

转载 作者:行者123 更新时间:2023-11-30 03:51:37 25 4
gpt4 key购买 nike

如何在 android 中将图像(jpeg、png)转换为 nv21/YCbCr 格式?

最佳答案

这是我用的:

static inline int _CLAMP(int x) {
unsigned y;
return !(y=x>>8) ? x : (0xff ^ (y>>24));
}

void rgbtoyuv(unsigned char * s_ptr,unsigned char* y_ptr, unsigned char* c_ptr, int width, int height) {

int i,j,r,g,b,y,u,v;
for(i=0;i<height;i++)
for(j=0;j<width;j++) {
r=*s_ptr++;
g=*s_ptr++;
b=*s_ptr++;
s_ptr++;
y=((77*r+150*g+29*b+128)>>8);
*y_ptr++=_CLAMP(y);
if(i%2 && j%2) {
u=((-43*r-85*g+128*b+128)>>8)+128;
v=((128*r-107*g-21*b+128)>>8)+128;
*c_ptr++=_CLAMP(v);
*c_ptr++=_CLAMP(u);
}
}
}
void Java_nativeBitmaptoYUV(JNIEnv* env, jobject obj, jobject bitmap, jint w, jint h,jbyteArray jdest) {
char *src=0;
jboolean isCopy;
char* buffer = (*env)->GetByteArrayElements(env, jdest, &isCopy);
AndroidBitmap_lockPixels(env, bitmap, (void**) &src);
rgbtoyuv(src,buffer,buffer+w*h,w,h);
AndroidBitmap_unlockPixels(env, bitmap);
(*env)->ReleaseByteArrayElements(env, jdest, buffer, 0);
}

关于android - 如何将 jpeg 图像转换为 nv21 帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14070291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com