On Wed, Jun 08, 2016 at 12:04:44AM -0300, James Almer wrote: > On 5/31/2016 4:23 PM, Michael Niedermayer wrote: > > adding demuxer and other logs should be easy > > This forces single threaded decoding for simplicity > > It also requires pthreads, this could be avoided either with > > some lockless tricks or simply by assuming av_log would never be called from > > another thread. > > > > doc/ffprobe.xsd update missing (TODO & help welcome) > > > > Fixes Ticket5521 > > > > Signed-off-by: Michael Niedermayer <mich...@niedermayer.cc> > > --- > > ffprobe.c | 154 > > ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- > > 1 file changed, 153 insertions(+), 1 deletion(-) > > > > diff --git a/ffprobe.c b/ffprobe.c > > index a7e329c..07b61ec 100644 > > --- a/ffprobe.c > > +++ b/ffprobe.c > > @@ -49,6 +49,19 @@ > > #include "libpostproc/postprocess.h" > > #include "cmdutils.h" > > > > +#if HAVE_PTHREADS > > +# include <pthread.h> > > +#else > > +# ifdef pthread_mutex_lock > > +# undef pthread_mutex_lock > > +# endif > > +# define pthread_mutex_lock(a) > > +# ifdef pthread_mutex_unlock > > +# undef pthread_mutex_unlock > > +# endif > > +# define pthread_mutex_unlock(a) > > +#endif > > Why are you not using the compat wrappers here? These are simple > mutex locks that don't even use static init, so i don't see why > they wouldn't work with w32threads or os2threads.
i just used the same as ffmpeg.c does but locally changed as: no idea if it works on os2 or w32 diff --git a/ffprobe.c b/ffprobe.c index 07b61ec..ef6d4db 100644 --- a/ffprobe.c +++ b/ffprobe.c @@ -49,9 +49,9 @@ #include "libpostproc/postprocess.h" #include "cmdutils.h" -#if HAVE_PTHREADS -# include <pthread.h> -#else +#include "libavutil/thread.h" + +#if !HAVE_THREADS # ifdef pthread_mutex_lock # undef pthread_mutex_lock # endif @@ -274,7 +274,7 @@ static uint64_t *nb_streams_packets; static uint64_t *nb_streams_frames; static int *selected_streams; -#if HAVE_PTHREADS +#if HAVE_THREADS pthread_mutex_t log_mutex; #endif typedef struct LogBuffer { @@ -302,7 +302,7 @@ static void log_callback(void *ptr, int level, const char *fmt, va_list vl) av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix); va_end(vl2); -#if HAVE_PTHREADS +#if HAVE_THREADS pthread_mutex_lock(&log_mutex); new_log_buffer = av_realloc_array(log_buffer, log_buffer_size + 1, sizeof(*log_buffer)); @@ -338,7 +338,7 @@ static void ffprobe_cleanup(int ret) for (i = 0; i < FF_ARRAY_ELEMS(sections); i++) av_dict_free(&(sections[i].entries_to_show)); -#if HAVE_PTHREADS +#if HAVE_THREADS pthread_mutex_destroy(&log_mutex); #endif } @@ -3332,7 +3332,7 @@ static const OptionDef real_options[] = { "show a particular entry from the format/container info", "entry" }, { "show_entries", HAS_ARG, {.func_arg = opt_show_entries}, "show a set of specified entries", "entry_list" }, -#if HAVE_PTHREADS +#if HAVE_THREADS { "show_log", OPT_INT|HAS_ARG, {(void*)&do_show_log}, "show log" }, #endif { "show_packets", 0, {(void*)&opt_show_packets}, "show packets info" }, @@ -3379,7 +3379,7 @@ int main(int argc, char **argv) char *w_name = NULL, *w_args = NULL; int ret, i; -#if HAVE_PTHREADS +#if HAVE_THREADS ret = pthread_mutex_init(&log_mutex, NULL); if (ret != 0) { goto end; [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB It is what and why we do it that matters, not just one of them.
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel