[FFmpeg-devel] [PATCH 2/2] av_lockmgr_register defines behavior on failure.
Michael Niedermayer
michaelni at gmx.at
Wed Oct 1 01:02:25 CEST 2014
On Tue, Sep 30, 2014 at 03:20:43PM -0700, Manfred Georg wrote:
> The register function now specifies that the user callback should
> leave things in the same state that it found them on failure but
> that failure to destroy is ignored by ffmpeg. The register
> function is also now explicit about its behavior on failure (it now
> unregisters the previous callback and destroys all mutex).
> ---
> libavcodec/avcodec.h | 24 +++++++++++++++---------
> libavcodec/utils.c | 31 +++++++++++++++++++++----------
> 2 files changed, 36 insertions(+), 19 deletions(-)
>
> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
> index 94e82f7..69e7012 100644
> --- a/libavcodec/avcodec.h
> +++ b/libavcodec/avcodec.h
> @@ -5120,16 +5120,22 @@ enum AVLockOp {
>
> /**
> * 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: FFmpeg may invoke calls to this
> - * callback during the call to av_lockmgr_register().
> - * Thus, the application must be prepared to handle that.
> + * specified by AVLockOp. The "mutex" argument to the function points
> + * to a (void *) where the lockmgr should store/get a pointer to a user
> + * allocated mutex. It is NULL upon AV_LOCK_CREATE and equal to the
> + * value left by the last call for all other ops. If the lock manager
> + * is unable to perform the op then it should leave the mutex in the same
> + * state as when it was called. However, when called with AV_LOCK_DESTROY
> + * the mutex will always be assumed to have been successfully destroyed.
> + * If av_lockmgr_register succeeds it will return 0, if it fails it will
> + * return -1 and destroy all mutex and unregister all callbacks.
generally ffmpeg uses negative for errors, so this shouldnt
specifically use just -1. This allows providing richer error codes
at any later point
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Rewriting code that is poorly written but fully understood is good.
Rewriting code that one doesnt understand is a sign that one is less smart
then the original author, trying to rewrite it will not make it better.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20141001/1c494346/attachment.asc>
More information about the ffmpeg-devel
mailing list