l = message;
if(level == AV_LOG_DEBUG)
+#if ENABLE_TRACE
+ level = LOG_TRACE;
+#else
level = LOG_DEBUG;
+#endif
else if(level == AV_LOG_VERBOSE)
- level = LOG_INFO;
+ level = LOG_DEBUG;
else if(level == AV_LOG_INFO)
- level = LOG_NOTICE;
+ level = LOG_INFO;
else if(level == AV_LOG_WARNING)
level = LOG_WARNING;
else if(level == AV_LOG_ERROR)
*
*/
void
+libav_set_loglevel(void)
+{
+ int level = AV_LOG_VERBOSE;
+
+ if (tvhlog_options & TVHLOG_OPT_LIBAV)
+ level = AV_LOG_DEBUG;
+
+ av_log_set_level(level);
+}
+
+/**
+ *
+ */
+void
libav_init(void)
{
av_log_set_callback(libav_log_callback);
- av_log_set_level(AV_LOG_VERBOSE);
+ libav_set_loglevel();
av_register_all();
}
#ifndef LIBAV_H_
#define LIBAV_H_
+#include "build.h"
+
+#if ENABLE_LIBAV
#include <libavformat/avformat.h>
#include "tvheadend.h"
enum AVCodecID streaming_component_type2codec_id(streaming_component_type_t type);
streaming_component_type_t codec_id2streaming_component_type(enum AVCodecID id);
int libav_is_encoder(AVCodec *codec);
+void libav_set_loglevel(void);
void libav_init(void);
+#else
+
+static inline void libav_set_loglevel(void);
+static inline void libav_init(void);
+
#endif
+#endif
#include "esfilter.h"
#include "intlconv.h"
#include "dbus.h"
-#if ENABLE_LIBAV
#include "libav.h"
-#endif
#include "profile.h"
#include "bouquet.h"
#include "tvhtime.h"
#endif
#if ENABLE_TRACE
{ "trace", NULL },
+#endif
+#if ENABLE_LIBAV
+ { "libav", NULL },
#endif
{ NULL, NULL }
};
opt_noacl = 0,
opt_fileline = 0,
opt_threadid = 0,
+ opt_libav = 0,
opt_ipv6 = 0,
opt_satip_rtsp = 0,
#if ENABLE_TSFILE
#endif
{ 0, "fileline", "Add file and line numbers to debug", OPT_BOOL, &opt_fileline },
{ 0, "threadid", "Add the thread ID to debug", OPT_BOOL, &opt_threadid },
+#if ENABLE_LIBAV
+ { 0, "libav", "More verbose libav log", OPT_BOOL, &opt_libav },
+#endif
{ 0, "uidebug", "Enable webUI debug (non-minified JS)", OPT_BOOL, &opt_uidebug },
{ 'A', "abort", "Immediately abort", OPT_BOOL, &opt_abort },
{ 'D', "dump", "Enable coredumps for daemon", OPT_BOOL, &opt_dump },
log_options |= TVHLOG_OPT_FILELINE;
if (opt_threadid)
log_options |= TVHLOG_OPT_THREAD;
+ if (opt_libav)
+ log_options |= TVHLOG_OPT_LIBAV;
if (opt_log_trace) {
log_level = LOG_TRACE;
log_trace = opt_log_trace;
fsmonitor_init();
-#if ENABLE_LIBAV
libav_init();
-#endif
tvhtime_init();
#define TVHLOG_OPT_DECORATE 0x0200
#define TVHLOG_OPT_FILELINE 0x0400
#define TVHLOG_OPT_THREAD 0x0800
+#define TVHLOG_OPT_LIBAV 0x1000
#define TVHLOG_OPT_ALL 0xFFFF
/* Levels */
#include "timeshift.h"
#include "tvhtime.h"
#include "input.h"
+#include "libav.h"
#include "satip/server.h"
#define EXTJSPATH "static/extjs"
htsmsg_add_str(m, "tvhlog_path", tvhlog_path ?: "");
htsmsg_add_u32(m, "tvhlog_options", tvhlog_options);
htsmsg_add_u32(m, "tvhlog_dbg_syslog",
- tvhlog_options & TVHLOG_OPT_DBG_SYSLOG);
+ !!(tvhlog_options & TVHLOG_OPT_DBG_SYSLOG));
+ htsmsg_add_u32(m, "tvhlog_libav",
+ !!(tvhlog_options & TVHLOG_OPT_LIBAV));
pthread_mutex_unlock(&tvhlog_mutex);
out = json_single_record(m, "config");
tvhlog_options |= TVHLOG_OPT_DBG_SYSLOG;
else
tvhlog_options &= ~TVHLOG_OPT_DBG_SYSLOG;
+ if ((str = http_arg_get(&hc->hc_req_args, "tvhlog_libav")))
+ tvhlog_options |= TVHLOG_OPT_LIBAV;
+ else
+ tvhlog_options &= ~TVHLOG_OPT_LIBAV;
+ libav_set_loglevel();
if (tvhlog_path && tvhlog_path[0] != '\0')
tvhlog_options |= TVHLOG_OPT_DBG_FILE;
tvhlog_set_trace(http_arg_get(&hc->hc_req_args, "tvhlog_trace"));
width: 400
});
+ var tvhlogLibav = new Ext.form.Checkbox({
+ name: 'tvhlog_libav',
+ fieldLabel: 'Debug libav log'
+ });
+
+
/* ****************************************************************
* Form
* ***************************************************************/
items.push(tvhlogDebugSubsys);
if (tvheadend.capabilities.indexOf('trace') !== -1)
items.push(tvhlogTraceSubsys);
+ if (tvheadend.capabilities.indexOf('libav') !== -1)
+ items.push(tvhlogLibav);
var DebuggingPanel = new Ext.form.FieldSet({
title: 'Debugging Options',