log.c
上传用户:lctgjx
上传日期:2022-06-04
资源大小:8887k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * log functions
  3.  * Copyright (c) 2003 Michel Bardiaux
  4.  *
  5.  * This file is part of FFmpeg.
  6.  *
  7.  * FFmpeg is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * FFmpeg is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with FFmpeg; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20.  */
  21. /**
  22.  * @file log.c
  23.  * log.
  24.  */
  25. #include "avutil.h"
  26. #include <stdio.h>
  27. int av_log_level = AV_LOG_DEBUG;
  28. void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl)
  29. {
  30.     static int print_prefix=1;
  31.     AVClass* avc= ptr ? *(AVClass**)ptr : NULL;
  32.     if(level>av_log_level)
  33.         return;
  34. #undef fprintf
  35.     if(print_prefix && avc) {
  36.             fprintf(stderr, "[%s @ %p]", avc->item_name(ptr), avc);
  37.     }
  38. #define fprintf please_use_av_log
  39.     print_prefix= strstr(fmt, "n") != NULL;
  40.     vfprintf(stderr, fmt, vl);
  41. }
  42. static void (*av_log_callback)(void*, int, const char*, va_list) = av_log_default_callback;
  43. void av_log(void* avcl, int level, const char *fmt, ...)
  44. {
  45.     va_list vl;
  46.     va_start(vl, fmt);
  47.     av_vlog(avcl, level, fmt, vl);
  48.     va_end(vl);
  49. }
  50. void av_vlog(void* avcl, int level, const char *fmt, va_list vl)
  51. {
  52.     av_log_callback(avcl, level, fmt, vl);
  53. }
  54. int av_log_get_level(void)
  55. {
  56.     return av_log_level;
  57. }
  58. void av_log_set_level(int level)
  59. {
  60.     av_log_level = level;
  61. }
  62. void av_log_set_callback(void (*callback)(void*, int, const char*, va_list))
  63. {
  64.     av_log_callback = callback;
  65. }