0
Cでlibturbojpegを使用してプレーン4:2:0のYUVバッファをjpegイメージに圧縮したいのですが、tjCompressFromYUV()
機能を使用する際に問題があります。libjpeg turbo tjCompressFromYUV
これは私のコードです:
#define PADDING 2
tjhandle tjh;
unsigned long buf_size;
unsigned char *jpegBuf = NULL;
unsigned long jpegSize;
int width = 352;
int height = 288;
int quality = 70;
unsigned char *ucp_frame;
int j;
FILE *fp = NULL;
ucp_frame = malloc(width * height * 3/2);
if (NULL == ucp_frame) {
printf("malloc error ucp_frame\n");
return 0;
}
fp = fopen("planar_352x288.raw", "rb");
if(NULL == fp) {
printf("fopen error\n");
return 0;
}
j = fread(ucp_frame, 1, width * height * 3/2, fp);
if(j != width * height * 3/2) {
printf("fread error\n");
return 0;
}
fclose(fp);
tjh = tjInitCompress();
if(NULL == tjh) {
printf("tjInitCompress error '%s'\n", tjGetErrorStr());
return 0;
}
buf_size = tjBufSizeYUV2(width, PADDING, height, TJSAMP_420);
jpegBuf = tjAlloc(buf_size);
if(tjCompressFromYUV(tjh, ucp_frame, width, PADDING, height,
TJSAMP_420, &jpegBuf, &jpegSize, quality,
TJFLAG_NOREALLOC)) {
printf("tjCompressFromYUV error '%s'\n", tjGetErrorStr());
}
tjGetErrorStr()
によって返されたエラー文字列が "偽の入力色空間" です。
libturbojpegバージョン1.4.2と1.4.90をリンクしようとしました。
すべてのヘルプは、それは問題が予想通り小さなテストプログラムでtjBufSizeYUV2
コールが実行する、私は投稿のコードを含むプログラムであったが、[OK]を、
おかげ