va_status = vaCreateContext(va_dpy->va_dpy, config_id, width, height, 0, &ret.surface, 1, &ret.context);
CHECK_VASTATUS(va_status, "vaCreateContext");
- va_status = vaCreateBuffer(va_dpy->va_dpy, config_id, VAEncCodedBufferType, width * height * 3 + 8192, 1, nullptr, &ret.data_buffer);
+ va_status = vaCreateBuffer(va_dpy->va_dpy, ret.context, VAEncCodedBufferType, width * height * 3 + 8192, 1, nullptr, &ret.data_buffer);
CHECK_VASTATUS(va_status, "vaCreateBuffer");
va_status = vaCreateImage(va_dpy->va_dpy, &uyvy_format, width, height, &ret.image);
return dest.dest;
}
-MJPEGEncoder::VAData MJPEGEncoder::get_va_data_for_resolution(unsigned width, unsigned height, const RGBTriplet &white_balance)
+MJPEGEncoder::VAData MJPEGEncoder::get_va_data_for_parameters(unsigned width, unsigned height, const RGBTriplet &white_balance)
{
- pair<unsigned, unsigned> key(width, height);
- if (va_data_for_resolution.count(key)) {
- return va_data_for_resolution[key];
+ VAKey key{width, height, white_balance};
+ if (va_data_for_parameters.count(key)) {
+ return va_data_for_parameters[key];
}
// Use libjpeg to generate a header and set sane defaults for e.g.
ret.q = q;
ret.huff = huff;
ret.parms = parms;
- va_data_for_resolution[key] = ret;
+ va_data_for_parameters[key] = ret;
return ret;
}
release = ReleaseVAResources(this, resources);
}
- VAData va_data = get_va_data_for_resolution(width, height, qf.white_balance);
+ VAData va_data = get_va_data_for_parameters(width, height, qf.white_balance);
va_data.pic_param.coded_buf = resources.data_buffer;
VABufferID pic_param_buffer;
- VAStatus va_status = vaCreateBuffer(va_dpy->va_dpy, config_id, VAEncPictureParameterBufferType, sizeof(va_data.pic_param), 1, &va_data.pic_param, &pic_param_buffer);
+ VAStatus va_status = vaCreateBuffer(va_dpy->va_dpy, resources.context, VAEncPictureParameterBufferType, sizeof(va_data.pic_param), 1, &va_data.pic_param, &pic_param_buffer);
CHECK_VASTATUS(va_status, "vaCreateBuffer");
VABufferDestroyer destroy_pic_param(va_dpy->va_dpy, pic_param_buffer);
VABufferID q_buffer;
- va_status = vaCreateBuffer(va_dpy->va_dpy, config_id, VAQMatrixBufferType, sizeof(va_data.q), 1, &va_data.q, &q_buffer);
+ va_status = vaCreateBuffer(va_dpy->va_dpy, resources.context, VAQMatrixBufferType, sizeof(va_data.q), 1, &va_data.q, &q_buffer);
CHECK_VASTATUS(va_status, "vaCreateBuffer");
VABufferDestroyer destroy_iq(va_dpy->va_dpy, q_buffer);
VABufferID huff_buffer;
- va_status = vaCreateBuffer(va_dpy->va_dpy, config_id, VAHuffmanTableBufferType, sizeof(va_data.huff), 1, &va_data.huff, &huff_buffer);
+ va_status = vaCreateBuffer(va_dpy->va_dpy, resources.context, VAHuffmanTableBufferType, sizeof(va_data.huff), 1, &va_data.huff, &huff_buffer);
CHECK_VASTATUS(va_status, "vaCreateBuffer");
VABufferDestroyer destroy_huff(va_dpy->va_dpy, huff_buffer);
VABufferID slice_param_buffer;
- va_status = vaCreateBuffer(va_dpy->va_dpy, config_id, VAEncSliceParameterBufferType, sizeof(va_data.parms), 1, &va_data.parms, &slice_param_buffer);
+ va_status = vaCreateBuffer(va_dpy->va_dpy, resources.context, VAEncSliceParameterBufferType, sizeof(va_data.parms), 1, &va_data.parms, &slice_param_buffer);
CHECK_VASTATUS(va_status, "vaCreateBuffer");
VABufferDestroyer destroy_slice_param(va_dpy->va_dpy, slice_param_buffer);
header_parm.bit_length = 8 * va_data.jpeg_header.size();
VABufferID header_parm_buffer;
- va_status = vaCreateBuffer(va_dpy->va_dpy, config_id, VAEncPackedHeaderParameterBufferType, sizeof(header_parm), 1, &header_parm, &header_parm_buffer);
+ va_status = vaCreateBuffer(va_dpy->va_dpy, resources.context, VAEncPackedHeaderParameterBufferType, sizeof(header_parm), 1, &header_parm, &header_parm_buffer);
CHECK_VASTATUS(va_status, "vaCreateBuffer");
VABufferDestroyer destroy_header(va_dpy->va_dpy, header_parm_buffer);
VABufferID header_data_buffer;
- va_status = vaCreateBuffer(va_dpy->va_dpy, config_id, VAEncPackedHeaderDataBufferType, va_data.jpeg_header.size(), 1, va_data.jpeg_header.data(), &header_data_buffer);
+ va_status = vaCreateBuffer(va_dpy->va_dpy, resources.context, VAEncPackedHeaderDataBufferType, va_data.jpeg_header.size(), 1, va_data.jpeg_header.data(), &header_data_buffer);
CHECK_VASTATUS(va_status, "vaCreateBuffer");
VABufferDestroyer destroy_header_data(va_dpy->va_dpy, header_data_buffer);