On Sat, Nov 23, 2013 at 12:21 AM, Justin Ruggles <[email protected]>wrote:

> My first suspicion is that it is an application issue since libavformat is
> not meant to be multi-threaded.


Are you sure about that? This is from libavcodec/avcodec.h:

/**
 * Register a user provided lock manager supporting the operations
 * specified by AVLockOp. mutex points to a (void *) where the
 * lockmgr should store/get a pointer to a user allocated mutex. It's
 * NULL upon AV_LOCK_CREATE and != NULL for all other ops.
 *
 * @param cb User defined callback. Note: Libav may invoke calls to this
 *           callback during the call to av_lockmgr_register().
 *           Thus, the application must be prepared to handle that.
 *           If cb is set to NULL the lockmgr will be unregistered.
 *           Also note that during unregistration the previously registered
 *           lockmgr callback may also be invoked.
 */
int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op));

Granted, this is from libavcodec, not libavformat. But I don't see why not
to support multi-threaded use. Arguably it's better design to not have
global state regardless.


> That said, it would be good to have some code example that can reproduce
> the issue.
>

I'm working on it. Currently I am able to reliably trigger the bug, but it
requires me to spawn 6 different instances of an application running
forever in a bash while loop for about 60 seconds.


>
> For FPEs in general, just trace back the 0 as far as it takes.
>

I'll see what I can do. Thanks.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to