[FFmpeg-devel] [PATCH v2 01/14] vvcdec: add thread executor

Michael Niedermayer michael at niedermayer.cc
Sun Jul 9 00:51:51 EEST 2023


On Fri, Jul 07, 2023 at 10:05:27PM +0800, Nuo Mi wrote:
> The executor design pattern was inroduced by java
> <https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/util/concurrent/Executor.html>
> it also adapted by python
> <https://docs.python.org/3/library/concurrent.futures.html>
> Compared to handcrafted thread pool management, it greatly simplifies the thread code.
> ---
>  libavcodec/Makefile     |   1 +
>  libavcodec/executor.c   | 182 ++++++++++++++++++++++++++++++++++++++++
>  libavcodec/executor.h   |  67 +++++++++++++++
>  libavcodec/vvc/Makefile |   4 +
>  4 files changed, 254 insertions(+)
>  create mode 100644 libavcodec/executor.c
>  create mode 100644 libavcodec/executor.h
>  create mode 100644 libavcodec/vvc/Makefile

This seems to need some fallback if pthreads are unavailable

src/libavcodec/executor.c: In function ‘executor_worker_task’:
src/libavcodec/executor.c:64:5: error: implicit declaration of function ‘pthread_mutex_lock’; did you mean ‘ff_mutex_lock’? [-Werror=implicit-function-declaration]
     pthread_mutex_lock(&e->lock);
     ^~~~~~~~~~~~~~~~~~
     ff_mutex_lock
src/libavcodec/executor.c:78:13: error: implicit declaration of function ‘pthread_mutex_unlock’; did you mean ‘ff_mutex_unlock’? [-Werror=implicit-function-declaration]
             pthread_mutex_unlock(&e->lock);
             ^~~~~~~~~~~~~~~~~~~~
             ff_mutex_unlock
src/libavcodec/executor.c:83:13: error: implicit declaration of function ‘pthread_cond_wait’; did you mean ‘__fread_chk_warn’? [-Werror=implicit-function-declaration]
             pthread_cond_wait(&e->cond, &e->lock);
             ^~~~~~~~~~~~~~~~~
             __fread_chk_warn
src/libavcodec/executor.c: In function ‘ff_executor_alloc’:
src/libavcodec/executor.c:108:11: error: implicit declaration of function ‘pthread_mutex_init’; did you mean ‘ff_mutex_init’? [-Werror=implicit-function-declaration]
     ret = pthread_mutex_init(&e->lock, NULL);
           ^~~~~~~~~~~~~~~~~~
           ff_mutex_init
src/libavcodec/executor.c:112:11: error: implicit declaration of function ‘pthread_cond_init’ [-Werror=implicit-function-declaration]
     ret = pthread_cond_init(&e->cond, NULL);
           ^~~~~~~~~~~~~~~~~
src/libavcodec/executor.c:119:15: error: implicit declaration of function ‘pthread_create’; did you mean ‘ff_thread_setname’? [-Werror=implicit-function-declaration]
         ret = pthread_create(&ti->thread, NULL, executor_worker_task, ti);
               ^~~~~~~~~~~~~~
               ff_thread_setname
src/libavcodec/executor.c:129:5: error: implicit declaration of function ‘pthread_cond_broadcast’ [-Werror=implicit-function-declaration]
     pthread_cond_broadcast(&e->cond);
     ^~~~~~~~~~~~~~~~~~~~~~
src/libavcodec/executor.c:132:9: error: implicit declaration of function ‘pthread_join’; did you mean ‘ff_thread_once’? [-Werror=implicit-function-declaration]
         pthread_join(e->threads[j].thread, NULL);
         ^~~~~~~~~~~~
         ff_thread_once
src/libavcodec/executor.c:133:5: error: implicit declaration of function ‘pthread_cond_destroy’ [-Werror=implicit-function-declaration]
     pthread_cond_destroy(&e->cond);
     ^~~~~~~~~~~~~~~~~~~~
src/libavcodec/executor.c:135:5: error: implicit declaration of function ‘pthread_mutex_destroy’; did you mean ‘ff_mutex_destroy’? [-Werror=implicit-function-declaration]
     pthread_mutex_destroy(&e->lock);
     ^~~~~~~~~~~~~~~~~~~~~
     ff_mutex_destroy
src/libavcodec/executor.c: In function ‘ff_executor_execute’:
src/libavcodec/executor.c:180:5: error: implicit declaration of function ‘pthread_cond_signal’ [-Werror=implicit-function-declaration]
     pthread_cond_signal(&e->cond);
     ^~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
ffmpeg/ffbuild/common.mak:81: recipe for target 'libavcodec/executor.o' failed
make: *** [libavcodec/executor.o] Error 1
make: *** Waiting for unfinished jobs....

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Why not whip the teacher when the pupil misbehaves? -- Diogenes of Sinope
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20230708/dc686e4d/attachment.sig>


More information about the ffmpeg-devel mailing list