[FFmpeg-devel] [PATCH v3] avutil/thread: add wrappers for pthread_cond_t and pthread_t functions

Andreas Rheinhardt andreas.rheinhardt at outlook.com
Sat Aug 19 14:55:18 EEST 2023


James Almer:
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavutil/thread.h | 30 ++++++++++++++++++++++++++++++
>  1 file changed, 30 insertions(+)
> 
> diff --git a/libavutil/thread.h b/libavutil/thread.h
> index 2f5e7e1cb5..f67b0cdc44 100644
> --- a/libavutil/thread.h
> +++ b/libavutil/thread.h
> @@ -163,11 +163,25 @@ static inline int strict_pthread_once(pthread_once_t *once_control, void (*init_
>  #define ff_mutex_unlock  pthread_mutex_unlock
>  #define ff_mutex_destroy pthread_mutex_destroy
>  
> +#define AVCond pthread_cond_t
> +
> +#define ff_cond_init      pthread_cond_init
> +#define ff_cond_destroy   pthread_cond_destroy
> +#define ff_cond_signal    pthread_cond_signal
> +#define ff_cond_broadcast pthread_cond_broadcast
> +#define ff_cond_wait      pthread_cond_wait
> +#define ff_cond_timedwait pthread_cond_timedwait
> +
>  #define AVOnce pthread_once_t
>  #define AV_ONCE_INIT PTHREAD_ONCE_INIT
>  
>  #define ff_thread_once(control, routine) pthread_once(control, routine)
>  
> +#define AVThread pthread_t
> +
> +#define ff_thread_create pthread_create
> +#define ff_thread_join   pthread_join
> +
>  #else
>  
>  #define AVMutex char
> @@ -178,6 +192,16 @@ static inline int ff_mutex_lock(AVMutex *mutex){ return 0; }
>  static inline int ff_mutex_unlock(AVMutex *mutex){ return 0; }
>  static inline int ff_mutex_destroy(AVMutex *mutex){ return 0; }
>  
> +#define AVCond char
> +
> +static inline int ff_cond_init(AVCond *cond, const void *attr){ return 0; }
> +static inline int ff_cond_destroy(AVCond *cond){ return 0; }
> +static inline int ff_cond_signal(AVCond *cond){ return 0; }
> +static inline int ff_cond_broadcast(AVCond *cond){ return 0; }
> +static inline int ff_cond_wait(AVCond *cond, AVMutex *mutex){ return 0; }
> +static inline int ff_cond_timedwait(AVCond *cond, AVMutex *mutex,
> +                                    const void *abstime){ return 0; }
> +
>  #define AVOnce char
>  #define AV_ONCE_INIT 0
>  
> @@ -190,6 +214,12 @@ static inline int ff_thread_once(char *control, void (*routine)(void))
>      return 0;
>  }
>  
> +#define AVThread char
> +
> +static inline int ff_thread_create(AVThread *thread, const void *unused_attr,
> +                                   void *(*start_routine)(void*), void *arg){ return 0; }
> +static inline int ff_thread_join(AVThread thread, void **value_ptr){ return 0; }
> +
>  #endif
>  
>  static inline int ff_thread_setname(const char *name)

The commit message should explain what the gain of this is; after all,
we managed to make it without these wrappers until now.

- Andreas



More information about the ffmpeg-devel mailing list