[libav-api] libvpx threads bug/fix

Evgeny Yakimov john.yakimov at gmail.com
Tue Jan 10 14:00:08 CET 2012


Hello,

I apologise in advance if this is not the correct way to submit
bugs/patches.

I encountered a bug with libvpx in that, although the threads parameter is
forwarded using:
enccfg.g_threads      = avctx->thread_count;

and multithreading is supported by libvpx, the threading capability flag is
not set and as a result thread_count=1 is always set during "
validate_thread_parameters<http://ffmpeg.org/doxygen/trunk/pthread_8c.html#e405eb489c19e417b70fcd334562f699>"
function.

I've added the CODEC_CAP_AUTO_THREADS to the capabilities list and it
appears to be working now:

AVCodec ff_libvpx_encoder = {
    .name           = "libvpx",
    .type           = AVMEDIA_TYPE_VIDEO,
    .id             = CODEC_ID_VP8,
    .priv_data_size = sizeof(VP8Context),
    .init           = vp8_init,
    .encode         = vp8_encode,
    .close          = vp8_free,
    .capabilities   = CODEC_CAP_DELAY | CODEC_CAP_AUTO_THREADS,
    .pix_fmts = (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE},
    .long_name = NULL_IF_CONFIG_SMALL("libvpx VP8"),
    .priv_class = &class,
    .defaults       = defaults,
};

Regards,
Evgeny
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.libav.org/pipermail/libav-api/attachments/20120110/3fe67265/attachment.html>


More information about the libav-api mailing list