MCPcopy Create free account
hub / github.com/FFmpeg/FFmpeg / log_callback

Function log_callback

fftools/ffprobe.c:377–424  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

375}
376
377static void log_callback(void *ptr, int level, const char *fmt, va_list vl)
378{
379 AVClass* avc = ptr ? *(AVClass **) ptr : NULL;
380 va_list vl2;
381 char line[1024];
382 static int print_prefix = 1;
383 void *new_log_buffer;
384
385 va_copy(vl2, vl);
386 av_log_default_callback(ptr, level, fmt, vl);
387 av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix);
388 va_end(vl2);
389
390#if HAVE_THREADS
391 ff_mutex_lock(&log_mutex);
392
393 new_log_buffer = av_realloc_array(log_buffer, log_buffer_size + 1, sizeof(*log_buffer));
394 if (new_log_buffer) {
395 char *msg;
396 int i;
397
398 log_buffer = new_log_buffer;
399 memset(&log_buffer[log_buffer_size], 0, sizeof(log_buffer[log_buffer_size]));
400 log_buffer[log_buffer_size].context_name= avc ? av_strdup(avc->item_name(ptr)) : NULL;
401 if (avc) {
402 if (avc->get_category) log_buffer[log_buffer_size].category = avc->get_category(ptr);
403 else log_buffer[log_buffer_size].category = avc->category;
404 }
405 log_buffer[log_buffer_size].log_level = level;
406 msg = log_buffer[log_buffer_size].log_message = av_strdup(line);
407 for (i=strlen(msg) - 1; i>=0 && msg[i] == '\n'; i--) {
408 msg[i] = 0;
409 }
410 if (avc && avc->parent_log_context_offset) {
411 AVClass** parent = *(AVClass ***) (((uint8_t *) ptr) +
412 avc->parent_log_context_offset);
413 if (parent && *parent) {
414 log_buffer[log_buffer_size].parent_name = av_strdup((*parent)->item_name(parent));
415 log_buffer[log_buffer_size].parent_category =
416 (*parent)->get_category ? (*parent)->get_category(parent) :(*parent)->category;
417 }
418 }
419 log_buffer_size ++;
420 }
421
422 ff_mutex_unlock(&log_mutex);
423#endif
424}
425
426
427#define print_fmt(k, f, ...) do { \

Callers

nothing calls this directly

Calls 6

av_log_default_callbackFunction · 0.85
av_log_format_lineFunction · 0.85
ff_mutex_lockFunction · 0.85
av_realloc_arrayFunction · 0.85
av_strdupFunction · 0.85
ff_mutex_unlockFunction · 0.85

Tested by

no test coverage detected