Когда вы пишете:
boost::thread UrlWriteFrame(url_context, (unsigned char *)pb_buffer, len);
, вы создаете объект boost :: thread с именем UrlWriteFrame и передаете url_context
, pb_buffer
и len
конструктор boost :: thread.Один из ctors boost :: thread ожидает что-то вызываемое (указатель на функцию, объект-функцию) в качестве 1-го аргумента и передает другие аргументы этой функции.В вашем примере это заканчивается тем, что вы пытаетесь что-то вроде:
url_context(pb_buffer, len);
, что, вероятно, вызывает ошибку «не вычисляется для функции, принимающей 2 аргумента».
IIUC, вам бы хотелосьвызвать функцию UrlWriteFrame
в новом потоке.Правильный способ сделать это с boost :: thread будет выглядеть примерно так:
boost::thread (&VideoEncoder::UrlWriteFrame, this, url_context, (unsigned char *)pb_buffer, len);
(при условии, что это вызывается одним из методов VideoEncoder)