[FFmpeg-devel] [PATCH] lavu: add ff_pthread_setname() and use it in various places

Clément Bœsch u at pkh.me
Wed Jan 20 21:44:32 CET 2016


---
 libavcodec/frame_thread_encoder.c | 2 ++
 libavcodec/pthread_slice.c        | 2 ++
 libavfilter/pthread.c             | 2 ++
 libavformat/async.c               | 2 ++
 libavformat/udp.c                 | 3 +++
 libavutil/thread.h                | 9 +++++++++
 6 files changed, 20 insertions(+)

diff --git a/libavcodec/frame_thread_encoder.c b/libavcodec/frame_thread_encoder.c
index f4d35f9..6c3b048 100644
--- a/libavcodec/frame_thread_encoder.c
+++ b/libavcodec/frame_thread_encoder.c
@@ -62,6 +62,8 @@ static void * attribute_align_arg worker(void *v){
     ThreadContext *c = avctx->internal->frame_thread_encoder;
     AVPacket *pkt = NULL;
 
+    ff_pthread_setname("ffmpeg frame worker");
+
     while(!c->exit){
         int got_packet, ret;
         AVFrame *frame;
diff --git a/libavcodec/pthread_slice.c b/libavcodec/pthread_slice.c
index 3ba5c66..5d26fc7 100644
--- a/libavcodec/pthread_slice.c
+++ b/libavcodec/pthread_slice.c
@@ -70,6 +70,8 @@ static void* attribute_align_arg worker(void *v)
     int thread_count = avctx->thread_count;
     int self_id;
 
+    ff_pthread_setname("ffmpeg slice worker");
+
     pthread_mutex_lock(&c->current_job_lock);
     self_id = c->current_job++;
     for (;;){
diff --git a/libavfilter/pthread.c b/libavfilter/pthread.c
index 1c54193..1fbcac9 100644
--- a/libavfilter/pthread.c
+++ b/libavfilter/pthread.c
@@ -63,6 +63,8 @@ static void* attribute_align_arg worker(void *v)
     unsigned int last_execute = 0;
     int self_id;
 
+    ff_pthread_setname("ffmpeg filter worker");
+
     pthread_mutex_lock(&c->current_job_lock);
     self_id = c->current_job++;
     for (;;) {
diff --git a/libavformat/async.c b/libavformat/async.c
index 4308c4b..4232f79 100644
--- a/libavformat/async.c
+++ b/libavformat/async.c
@@ -181,6 +181,8 @@ static void *async_buffer_task(void *arg)
     int           ret  = 0;
     int64_t       seek_ret;
 
+    ff_pthread_setname("ffmpeg async buffer task");
+
     while (1) {
         int fifo_space, to_copy;
 
diff --git a/libavformat/udp.c b/libavformat/udp.c
index ea80e52..b52987e 100644
--- a/libavformat/udp.c
+++ b/libavformat/udp.c
@@ -35,6 +35,7 @@
 #include "libavutil/avstring.h"
 #include "libavutil/opt.h"
 #include "libavutil/log.h"
+#include "libavutil/thread.h"
 #include "libavutil/time.h"
 #include "internal.h"
 #include "network.h"
@@ -492,6 +493,8 @@ static void *circular_buffer_task( void *_URLContext)
     UDPContext *s = h->priv_data;
     int old_cancelstate;
 
+    ff_pthread_setname("ffmpeg UDP circular buffer task");
+
     pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old_cancelstate);
     pthread_mutex_lock(&s->mutex);
     if (ff_socket_nonblock(s->udp_fd, 0) < 0) {
diff --git a/libavutil/thread.h b/libavutil/thread.h
index 32ddf40..a7b5763 100644
--- a/libavutil/thread.h
+++ b/libavutil/thread.h
@@ -169,4 +169,13 @@ static inline int ff_thread_once(char *control, void (*routine)(void))
 
 #endif
 
+static inline void ff_pthread_setname(const char *name)
+{
+#if defined(__APPLE__)
+    pthread_setname_np(name);
+#elif defined(__linux__)
+    pthread_setname_np(pthread_self(), name);
+#endif
+}
+
 #endif /* AVUTIL_THREAD_H */
-- 
2.7.0



More information about the ffmpeg-devel mailing list