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

Nuo Mi nuomi2021 at gmail.com
Mon Jul 10 10:41:56 EEST 2023


On Sun, Jul 9, 2023 at 5:52 AM Michael Niedermayer <michael at niedermayer.cc>
wrote:

> 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
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
Hi Michael,
Thank you for the information. I will fixed it


More information about the ffmpeg-devel mailing list