On 21 April 2018 at 20:51, Clément Bœsch <u...@pkh.me> wrote: > --- > Been away from FFmpeg for way too long. Hope this patch get me back on > track. Feel free to nitpick on the name. > --- > doc/APIchanges | 3 +++ > libavutil/threadmessage.c | 9 +++++++++ > libavutil/threadmessage.h | 5 +++++ > libavutil/version.h | 2 +- > tests/api/api-threadmessage-test.c | 4 +++- > 5 files changed, 21 insertions(+), 2 deletions(-) > > diff --git a/doc/APIchanges b/doc/APIchanges > index 4f6ac2a031..393491c8e9 100644 > --- a/doc/APIchanges > +++ b/doc/APIchanges > @@ -15,6 +15,9 @@ libavutil: 2017-10-21 > > API changes, most recent first: > > +2018-04-xx - xxxxxxxxxx - lavu 56.16.100 - threadmessage.h > + Add av_thread_message_queue_nelem(). > + > -------- 8< --------- FFmpeg 4.0 was cut here -------- 8< --------- > > 2018-04-03 - d6fc031caf - lavu 56.13.100 - pixdesc.h > diff --git a/libavutil/threadmessage.c b/libavutil/threadmessage.c > index 872e9392b1..fed398926a 100644 > --- a/libavutil/threadmessage.c > +++ b/libavutil/threadmessage.c > @@ -102,6 +102,15 @@ void av_thread_message_queue_free(AVThreadMessageQueue > **mq) > #endif > } > > +int av_thread_message_queue_nelem(AVThreadMessageQueue *mq) > +{ > + int ret; > + pthread_mutex_lock(&mq->lock); > + ret = av_fifo_size(mq->fifo); > + pthread_mutex_unlock(&mq->lock); > + return ret / mq->elsize; > +} > + > #if HAVE_THREADS > > static int av_thread_message_queue_send_locked(AVThreadMessageQueue *mq, > diff --git a/libavutil/threadmessage.h b/libavutil/threadmessage.h > index 8480a0a3db..e41d95ccf7 100644 > --- a/libavutil/threadmessage.h > +++ b/libavutil/threadmessage.h > @@ -95,6 +95,11 @@ void > av_thread_message_queue_set_err_recv(AVThreadMessageQueue > *mq, > void av_thread_message_queue_set_free_func(AVThreadMessageQueue *mq, > void (*free_func)(void *msg)); > > +/** > + * Return the current number of messages in the queue. > + */ > +int av_thread_message_queue_nelem(AVThreadMessageQueue *mq); > + > /** > * Flush the message queue > * > diff --git a/libavutil/version.h b/libavutil/version.h > index 387421775f..23567000a3 100644 > --- a/libavutil/version.h > +++ b/libavutil/version.h > @@ -79,7 +79,7 @@ > */ > > #define LIBAVUTIL_VERSION_MAJOR 56 > -#define LIBAVUTIL_VERSION_MINOR 15 > +#define LIBAVUTIL_VERSION_MINOR 16 > #define LIBAVUTIL_VERSION_MICRO 100 > > #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ > diff --git a/tests/api/api-threadmessage-test.c > b/tests/api/api-threadmessage-test.c > index 05a8062b8c..494808f176 100644 > --- a/tests/api/api-threadmessage-test.c > +++ b/tests/api/api-threadmessage-test.c > @@ -130,7 +130,9 @@ static void *receiver_thread(void *arg) > > for (i = 0; i < rd->workload; i++) { > if (rand() % rd->workload < rd->workload / 10) { > - av_log(NULL, AV_LOG_INFO, "receiver #%d: flushing the > queue\n", rd->id); > + av_log(NULL, AV_LOG_INFO, "receiver #%d: flushing the queue, " > + "discarding %d message(s)\n", rd->id, > + av_thread_message_queue_nelem(rd->queue)); > av_thread_message_flush(rd->queue); > } else { > struct message msg; > -- > 2.17.0 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel >
I think av_thread_message_queue_elems would be a better name, had to think for a good period of time what "nelem" meant. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel