[FFmpeg-devel] [PATCHv4 2/2] avcodec/vp9: Add tile threading support
Michael Niedermayer
michael at niedermayer.cc
Fri Sep 1 18:35:04 EEST 2017
On Thu, Aug 31, 2017 at 05:30:44AM +0700, Ilia Valiakhmetov wrote:
{...]
> @@ -1481,6 +1661,68 @@ static int vp9_decode_update_thread_context(AVCodecContext *dst, const AVCodecCo
>
> return 0;
> }
> +
> +void vp9_free_entries(VP9Context *s) {
> + pthread_mutex_destroy(&s->progress_mutex);
> + pthread_cond_destroy(&s->progress_cond);
> + av_freep(&s->entries);
> +}
> +
> +int vp9_alloc_entries(AVCodecContext *avctx, int n) {
> + VP9Context *s = avctx->priv_data;
> + int i;
> +
> + if (avctx->active_thread_type & FF_THREAD_SLICE) {
> + if (s->entries)
> + av_freep(&s->entries);
> +
> + s->entries = av_malloc_array(n, sizeof(atomic_int));
> +
> + if (!s->entries) {
> + av_freep(&s->entries);
> + return AVERROR(ENOMEM);
> + }
> +
> + for (i = 0; i < n; i++)
> + atomic_init(&s->entries[i], 0);
> +
> + pthread_mutex_init(&s->progress_mutex, NULL);
> + pthread_cond_init(&s->progress_cond, NULL);
> + }
> + return 0;
> +}
> +
> +void vp9_report_tile_progress(VP9Context *s, int field, int n) {
> + atomic_fetch_add_explicit(&s->entries[field], n, memory_order_relaxed);
> + pthread_cond_signal(&s->progress_cond);
> +}
> +
> +void vp9_await_tile_progress(VP9Context *s, int field, int n) {
> + if (atomic_load_explicit(&s->entries[field], memory_order_acquire) >= n)
> + return;
> +
> + pthread_mutex_lock(&s->progress_mutex);
> + while (atomic_load_explicit(&s->entries[field], memory_order_relaxed) != n)
> + pthread_cond_wait(&s->progress_cond, &s->progress_mutex);
> + pthread_mutex_unlock(&s->progress_mutex);
> +}
> +#else
> +void vp9_free_entries(VP9Context *s)
> +{
> +}
> +
> +int vp9_alloc_entries(AVCodecContext *avctx, int n)
> +{
> + return 0;
> +}
> +
> +void vp9_report_tile_progress(VP9Context *s, int field, int n)
> +{
> +}
> +
> +void vp9_await_tile_progress(VP9Context *s, int field, int n)
> +{
> +}
> #endif
non static functions need a ff_ or av* prefix
no more comments from me, review left to others
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Into a blind darkness they enter who follow after the Ignorance,
they as if into a greater darkness enter who devote themselves
to the Knowledge alone. -- Isha Upanishad
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170901/5a28bbf6/attachment.sig>
More information about the ffmpeg-devel
mailing list