Dear Everyone,
I am working with Jetson Tx1 and Jetpack version 2.3.1. I use Tegra_multimedia_api to encode YUV420 to jpeg , but sometimes I get the segmentation fault. It does not happen all the times, so I don’t know what is the problem. I don’t know how to attach the screenshot, so I would like to make some description as below.segmentation fault at jpeg_write_raw_data() due to memcpy().
int
NvJPEGEncoder::encodeFromBuffer(NvBuffer & buffer, J_COLOR_SPACE color_space,
unsigned char **out_buf, unsigned long &out_buf_size)
{
.........
for (i = 0; i < height; i += v_max_samp * DCTSIZE)
{
for (k = 0; k < channels; k++)
{
for (j = 0; j < v_samp[k] * DCTSIZE; j++)
{
line[k][j] = base[k];
if (base[k] + stride[k] < end[k])
base[k] += stride[k];
}
}
jpeg_write_raw_data(&cinfo, line, v_max_samp * DCTSIZE);//>>> segmentation fault in this line of code due to memcpy()
}
.........
return 0;
}
when I print out the debug information like this:
printf("encodeFromBuffer out_buf_size:%d, width:%d, height:%d, v_max_samp:%d, cinfo.width:%d, cinfo.height:%d\n", out_buf_size, width, height, v_max_samp, cinfo.image_width, cinfo.image_height);
int v = 0;
for (i = 0; i < height; i += v_max_samp * DCTSIZE)
{
for (k = 0; k < channels; k++)
{
for (j = 0; j < v_samp[k] * DCTSIZE; j++)
{
line[k][j] = base[k];
if (base[k] + stride[k] < end[k])
base[k] += stride[k];
}
}
printf("channels:%d, i:%d, k:%d, j:%d, v:%d, line:%08X, cinfo->comp_info[0].v_samp_factor:%d\n", channels,i, k, j, v,line, cinfo.comp_info[0].v_samp_factor);
v += jpeg_write_raw_data(&cinfo, line, v_max_samp * DCTSIZE);
if (cinfo.err->msg_code)
{
printf("jpeg_write_raw_data error code :%d\n", cinfo.err->msg_code);
}
}
I got:
…
channels:3, i:832, k:3, j:8, v:832, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:848, k:3, j:8, v:848, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:864, k:3, j:8, v:864, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:880, k:3, j:8, v:880, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:896, k:3, j:8, v:896, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:912, k:3, j:8, v:912, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:928, k:3, j:8, v:928, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:944, k:3, j:8, v:944, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:960, k:3, j:8, v:960, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:976, k:3, j:8, v:976, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:992, k:3, j:8, v:992, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:1008, k:3, j:8, v:1008, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:1024, k:3, j:8, v:1024, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:1040, k:3, j:8, v:1040, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:1056, k:3, j:8, v:1056, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
channels:3, i:1072, k:3, j:8, v:1072, line:6D870610, cinfo->comp_info[0].v_samp_factor:2
Segmentation fault
Image resolution is FullHD(1920x1080).
Maybe this topic is relevant, but I am not sure, could you confirm whether it is the jetpack api issue?
https://devtalk.nvidia.com/default/topic/1005580/nvjpegenc-segmentation-fault/?offset=7
Thanks for supporting.