obs-ffmpeg: Improve RIST/SRT log messages

Overall improvements to match behavior of other log sources.
This commit is contained in:
tt2468
2022-11-19 18:16:05 -08:00
parent e141def61b
commit 24d7bea41f
3 changed files with 75 additions and 68 deletions
+26 -25
View File
@@ -31,8 +31,8 @@
#include <libavutil/mastering_display_metadata.h>
/* ------------------------------------------------------------------------- */
#define do_log(level, format, ...) \
blog(level, "[obs-ffmpeg mpegts muxer: '%s'] " format, \
#define do_log(level, format, ...) \
blog(level, "[obs-ffmpeg mpegts muxer: '%s']: " format, \
obs_output_get_name(stream->output), ##__VA_ARGS__)
#define warn(format, ...) do_log(LOG_WARNING, format, ##__VA_ARGS__)
@@ -151,7 +151,7 @@ static bool create_video_stream(struct ffmpeg_output *stream,
const char *name = data->config.video_encoder;
const AVCodecDescriptor *codec = avcodec_descriptor_get_by_name(name);
if (!codec) {
error("Couldn't find codec '%s'\n", name);
error("Couldn't find codec '%s'", name);
return false;
}
if (!new_stream(data, &data->video, name))
@@ -239,7 +239,7 @@ static bool create_audio_stream(struct ffmpeg_output *stream,
const AVCodecDescriptor *codec = avcodec_descriptor_get_by_name(name);
if (!codec) {
warn("Couldn't find codec '%s'\n", name);
warn("Couldn't find codec '%s'", name);
return false;
}
@@ -327,14 +327,14 @@ static inline int connect_mpegts_url(struct ffmpeg_output *stream, bool is_rist)
const char *url = stream->ff_data.config.url;
if (!ff_network_init()) {
ffmpeg_mpegts_log_error(LOG_ERROR, &stream->ff_data,
"Can not initialize network.");
"Couldn't initialize network");
return AVERROR(EIO);
}
URLContext *uc = av_mallocz(sizeof(URLContext) + strlen(url) + 1);
if (!uc) {
ffmpeg_mpegts_log_error(LOG_ERROR, &stream->ff_data,
"Can not allocate memory.");
"Couldn't allocate memory");
goto fail;
}
uc->url = (char *)url;
@@ -344,7 +344,7 @@ static inline int connect_mpegts_url(struct ffmpeg_output *stream, bool is_rist)
: av_mallocz(sizeof(SRTContext));
if (!uc->priv_data) {
ffmpeg_mpegts_log_error(LOG_ERROR, &stream->ff_data,
"Can not allocate memory.");
"Couldn't allocate memory");
goto fail;
}
/* For SRT, pass streamid & passphrase; for RIST, pass passphrase, username
@@ -458,9 +458,9 @@ static inline int open_output_file(struct ffmpeg_output *stream,
"=", " ", 0))) {
ffmpeg_mpegts_log_error(
LOG_WARNING, data,
"Failed to parse protocol settings: %s\n%s",
av_err2str(ret),
data->config.protocol_settings);
"Failed to parse protocol settings: %s, %s",
data->config.protocol_settings,
av_err2str(ret));
av_dict_free(&dict);
return OBS_OUTPUT_INVALID_STREAM;
@@ -494,7 +494,7 @@ static inline int open_output_file(struct ffmpeg_output *stream,
ret = avio_open2(&data->output->pb, data->config.url,
AVIO_FLAG_WRITE, NULL, &dict);
} else {
info("[ffmpeg mpegts muxer:] Invalid protocol: %s",
info("[ffmpeg mpegts muxer]: Invalid protocol: %s",
data->config.url);
return OBS_OUTPUT_BAD_PATH;
}
@@ -502,7 +502,7 @@ static inline int open_output_file(struct ffmpeg_output *stream,
if (ret < 0) {
if ((rist || srt) && (ret == OBS_OUTPUT_CONNECT_FAILED ||
ret == OBS_OUTPUT_INVALID_STREAM)) {
error("failed to open the url or invalid stream");
error("Failed to open the url or invalid stream");
} else {
ffmpeg_mpegts_log_error(LOG_WARNING, data,
"Couldn't open '%s', %s",
@@ -527,7 +527,7 @@ static inline int open_output_file(struct ffmpeg_output *stream,
dstr_catf(&str, "\n\t%s=%s", entry->key,
entry->value);
info("[ffmpeg mpegts muxer:]Invalid protocol settings: %s",
info("[ffmpeg mpegts muxer]: Invalid protocol settings: %s",
str.array);
dstr_free(&str);
}
@@ -535,7 +535,7 @@ static inline int open_output_file(struct ffmpeg_output *stream,
} else {
ret = allocate_custom_aviocontext(stream, rist);
if (ret < 0) {
info("Couldn't allocate custom avio_context for rist or srt'%s', %s\n",
info("Couldn't allocate custom avio_context for url: '%s', %s",
data->config.url, av_err2str(ret));
return OBS_OUTPUT_INVALID_STREAM;
}
@@ -591,7 +591,7 @@ static void close_mpegts_url(struct ffmpeg_output *stream, bool is_rist)
avio_context_free(&stream->s);
if (err)
info("[ffmpeg mpegts muxer:] Error closing URL %s",
info("[ffmpeg mpegts muxer]: Error closing URL %s",
stream->ff_data.config.url);
}
@@ -665,7 +665,7 @@ bool ffmpeg_mpegts_data_init(struct ffmpeg_output *stream,
"Couldn't set output format to mpegts");
goto fail;
} else {
info("info: Output format name and long_name: %s, %s\n",
info("Output format name and long_name: %s, %s",
output_format->name ? output_format->name : "unknown",
output_format->long_name ? output_format->long_name
: "unknown");
@@ -897,7 +897,8 @@ static bool set_config(struct ffmpeg_output *stream)
obs_to_ffmpeg_video_format(video_output_get_format(video));
if (config.format == AV_PIX_FMT_NONE) {
blog(LOG_DEBUG, "invalid pixel format used for mpegts output");
blog(LOG_WARNING,
"Invalid pixel format used for mpegts output");
return false;
}
@@ -1012,7 +1013,7 @@ static bool set_config(struct ffmpeg_output *stream)
}
code = open_output_file(stream, ff_data);
if (code != 0) {
error("failed to open the url");
error("Failed to open the url");
goto fail;
}
av_dump_format(ff_data->output, 0, NULL, 1);
@@ -1026,7 +1027,7 @@ static bool set_config(struct ffmpeg_output *stream)
if (ret != 0) {
ffmpeg_mpegts_log_error(
LOG_WARNING, &stream->ff_data,
"ffmpeg_output_start: failed to create write "
"ffmpeg_output_start: Failed to create write "
"thread.");
code = OBS_OUTPUT_ERROR;
goto fail;
@@ -1156,7 +1157,7 @@ void mpegts_write_packet(struct ffmpeg_output *stream,
packet->data = av_memdup(encpacket->data, (int)encpacket->size);
if (packet->data == NULL) {
error("couldn't allocate packet data");
error("Couldn't allocate packet data");
goto fail;
}
packet->size = (int)encpacket->size;
@@ -1184,8 +1185,8 @@ static bool write_header(struct ffmpeg_output *stream, struct ffmpeg_data *data)
" ", 0))) {
ffmpeg_mpegts_log_error(
LOG_WARNING, data,
"Failed to parse muxer settings: %s\n%s",
av_err2str(ret), data->config.muxer_settings);
"Failed to parse muxer settings: %s, %s",
data->config.muxer_settings, av_err2str(ret));
av_dict_free(&dict);
return false;
@@ -1222,7 +1223,7 @@ static bool write_header(struct ffmpeg_output *stream, struct ffmpeg_data *data)
AV_DICT_IGNORE_SUFFIX)))
dstr_catf(&str, "\n\t%s=%s", entry->key, entry->value);
info("[ffmpeg mpegts muxer:] Invalid mpegts muxer settings: %s",
info("[ffmpeg mpegts muxer]: Invalid mpegts muxer settings: %s",
str.array);
dstr_free(&str);
}
@@ -1240,12 +1241,12 @@ static void ffmpeg_mpegts_data(void *data, struct encoder_packet *packet)
if (get_extradata(stream)) {
stream->got_headers = true;
} else {
warn("failed to retrieve headers");
warn("Failed to retrieve headers");
code = OBS_OUTPUT_INVALID_STREAM;
goto fail;
}
if (!write_header(stream, ff_data)) {
error("failed to write headers");
error("Failed to write headers");
code = OBS_OUTPUT_INVALID_STREAM;
goto fail;
}
+20 -18
View File
@@ -113,7 +113,7 @@ static int librist_close(URLContext *h)
ret = rist_destroy(s->ctx);
if (ret < 0) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / librist] : failed to close properly %s\n",
"[obs-ffmpeg mpegts muxer / librist]: Failed to close properly %s",
h->url);
return -1;
}
@@ -128,11 +128,15 @@ static int cb_stats(void *arg, const struct rist_stats *stats_container)
rist_log(&s->logging_settings, RIST_LOG_INFO, "%s\n",
stats_container->stats_json);
if (stats_container->stats_type == RIST_STATS_SENDER_PEER) {
blog(LOG_INFO, "---------------------------------");
blog(LOG_DEBUG,
"[obs-ffmpeg mpegts muxer / librist] RIST STATS\n\n"
"bandwidth [%.3f Mbps]\npackets sent [%llu]\npkts received [%llu]\n"
"pkts retransmitted [%llu]\nquality (pkt sent over sent+retransmitted+skipped) [%.2f] \n"
"rtt [%" PRIu32 " ms]\n\n",
"[obs-ffmpeg mpegts muxer / librist]: Session Summary\n"
"\tbandwidth [%.3f Mbps]\n"
"\tpackets sent [%lu]\n"
"\tpkts received [%lu]\n"
"\tpkts retransmitted [%lu]\n"
"\tquality (pkt sent over sent+retransmitted+skipped) [%.2f]\n"
"\trtt [%" PRIu32 " ms]\n",
(double)(stats_container->stats.sender_peer.bandwidth) /
1000000.0,
stats_container->stats.sender_peer.sent,
@@ -166,12 +170,12 @@ static int librist_open(URLContext *h, const char *uri)
NULL);
if (ret < 0) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / librist] : Failed to initialize logging settings.");
"[obs-ffmpeg mpegts muxer / librist]: Failed to initialize logging settings");
return OBS_OUTPUT_CONNECT_FAILED;
}
blog(LOG_INFO,
"[obs-ffmpeg mpegts muxer / librist] : \n librist version %s & API = %s .",
"[obs-ffmpeg mpegts muxer / librist]: libRIST version: %s, API: %s",
librist_version(), librist_api_version());
h->max_packet_size = s->packet_size;
@@ -179,14 +183,14 @@ static int librist_open(URLContext *h, const char *uri)
if (ret < 0) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / librist] : failed to create a sender \n");
"[obs-ffmpeg mpegts muxer / librist]: Failed to create a sender");
goto err;
}
ret = rist_peer_config_defaults_set(peer_config);
if (ret < 0) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / librist] : failed to set peer config defaults.\n");
"[obs-ffmpeg mpegts muxer / librist]: Failed to set peer config defaults");
goto err;
}
@@ -198,7 +202,7 @@ static int librist_open(URLContext *h, const char *uri)
#endif
if (ret < 0) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / librist] : failed to parse the url %s\n",
"[obs-ffmpeg mpegts muxer / librist]: Failed to parse url: %s",
uri);
librist_close(h);
return OBS_OUTPUT_INVALID_STREAM;
@@ -208,7 +212,7 @@ static int librist_open(URLContext *h, const char *uri)
((peer_config->key_size == 128 || peer_config->key_size == 256) &&
!peer_config->secret[0])) {
blog(LOG_ERROR,
"secret is mandatory if encryption is enabled\n");
"[obs-ffmpeg mpegts muxer / librist]: Secret is mandatory if encryption is enabled");
librist_close(h);
return OBS_OUTPUT_INVALID_STREAM;
}
@@ -234,22 +238,20 @@ static int librist_open(URLContext *h, const char *uri)
ret = rist_peer_create(s->ctx, &s->peer, &s->peer_config);
if (ret < 0) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / librist] : failed to create a peer. \n");
"[obs-ffmpeg mpegts muxer / librist]: Failed to create a peer.");
goto err;
}
ret = rist_start(s->ctx);
if (ret < 0) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / librist] : rist failed to start \n");
"[obs-ffmpeg mpegts muxer / librist]: RIST failed to start");
goto err;
}
if (rist_stats_callback_set(s->ctx, s->statsinterval, cb_stats,
(void *)s) == -1) {
(void *)s) == -1)
rist_log(&s->logging_settings, RIST_LOG_ERROR,
"Could not enable stats callback\n");
;
}
"Could not enable stats callback");
return 0;
err:
@@ -271,7 +273,7 @@ static int librist_write(URLContext *h, const uint8_t *buf, int size)
ret = rist_sender_data_write(s->ctx, &data_block);
if (ret < 0) {
blog(LOG_WARNING,
"[obs-ffmpeg mpegts muxer / librist] : failed to send data of size %i bytes",
"[obs-ffmpeg mpegts muxer / librist]: Failed to send %i bytes",
size);
return risterr2ret(ret);
}
+29 -25
View File
@@ -83,7 +83,7 @@ static int libsrt_neterrno(URLContext *h)
SRTContext *s = (SRTContext *)h->priv_data;
int os_errno;
int err = srt_getlasterror(&os_errno);
blog(LOG_ERROR, "[obs-ffmpeg mpegts muxer / libsrt] : %s\n",
blog(LOG_ERROR, "[obs-ffmpeg mpegts muxer / libsrt]: %s",
srt_getlasterror_str());
if (err == SRT_EASYNCRCV || err == SRT_EASYNCSND)
return AVERROR(EAGAIN);
@@ -91,10 +91,10 @@ static int libsrt_neterrno(URLContext *h)
int errj = srt_getrejectreason(s->fd);
if (errj == SRT_REJ_BADSECRET)
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / libsrt] : Wrong password");
"[obs-ffmpeg mpegts muxer / libsrt]: Wrong password");
else
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / libsrt] : Connection rejected, %s",
"[obs-ffmpeg mpegts muxer / libsrt]: Connection rejected, %s",
srt_rejectreason_str(errj));
}
@@ -106,7 +106,7 @@ static int libsrt_getsockopt(URLContext *h, SRTSOCKET fd, SRT_SOCKOPT optname,
{
if (srt_getsockopt(fd, 0, optname, optval, optlen) < 0) {
blog(LOG_INFO,
"[obs-ffmpeg mpegts muxer / libsrt] : failed to get option %s on socket: %s\n",
"[obs-ffmpeg mpegts muxer / libsrt]: Failed to get option %s on socket: %s",
optnamestr, srt_getlasterror_str());
return AVERROR(EIO);
}
@@ -157,11 +157,11 @@ static int libsrt_network_wait_fd(URLContext *h, int eid, int write)
if (reason == SRT_REJ_BADSECRET || reason == SRT_REJ_UNSECURE) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / libsrt] : Connection rejected, wrong password");
"[obs-ffmpeg mpegts muxer / libsrt]: Connection rejected, wrong password");
return OBS_OUTPUT_INVALID_STREAM;
} else {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / libsrt] : Connection rejected, %s",
"[obs-ffmpeg mpegts muxer / libsrt]: Connection rejected, %s",
srt_rejectreason_str(reason));
}
}
@@ -216,7 +216,7 @@ static int libsrt_listen(int eid, SRTSOCKET fd, const struct sockaddr *addr,
if (srt_setsockopt(fd, SOL_SOCKET, SRTO_REUSEADDR, &reuse,
sizeof(reuse))) {
blog(LOG_WARNING,
"[obs-ffmpeg mpegts muxer / libsrt] : setsockopt(SRTO_REUSEADDR) failed\n");
"[obs-ffmpeg mpegts muxer / libsrt]: setsockopt(SRTO_REUSEADDR) failed");
}
if (srt_bind(fd, addr, addrlen))
return libsrt_neterrno(h);
@@ -234,12 +234,12 @@ static int libsrt_listen(int eid, SRTSOCKET fd, const struct sockaddr *addr,
return libsrt_neterrno(h);
if (libsrt_socket_nonblock(ret, 1) < 0)
blog(LOG_DEBUG,
"[obs-ffmpeg mpegts muxer / libsrt] : libsrt_socket_nonblock failed\n");
"[obs-ffmpeg mpegts muxer / libsrt]: libsrt_socket_nonblock failed");
if (!libsrt_getsockopt(h, ret, SRTO_STREAMID, "SRTO_STREAMID", streamid,
&streamid_len))
/* Note: returned streamid_len doesn't count the terminating null character */
blog(LOG_INFO,
"[obs-ffmpeg mpegts muxer / libsrt] : accept streamid [%s], length %d\n",
"[obs-ffmpeg mpegts muxer / libsrt]: Accept streamid [%s], length %d",
streamid, streamid_len);
return ret;
@@ -259,11 +259,11 @@ static int libsrt_listen_connect(int eid, SRTSOCKET fd,
if (ret < 0) {
if (will_try_next) {
blog(LOG_WARNING,
"[obs-ffmpeg mpegts muxer / libsrt] : Connection to %s failed (%s), trying next address\n",
"[obs-ffmpeg mpegts muxer / libsrt]: Connection to %s failed (%s), trying next address",
h->url, av_err2str(ret));
} else {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / libsrt] : Connection to %s failed: %s\n",
"[obs-ffmpeg mpegts muxer / libsrt]: Connection to %s failed: %s",
h->url, av_err2str(ret));
}
}
@@ -276,7 +276,7 @@ static int libsrt_setsockopt(URLContext *h, SRTSOCKET fd, SRT_SOCKOPT optname,
{
if (srt_setsockopt(fd, 0, optname, optval, optlen) < 0) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / libsrt] : failed to set option %s on socket: %s\n",
"[obs-ffmpeg mpegts muxer / libsrt]: Failed to set option %s on socket: %s",
optnamestr, srt_getlasterror_str());
return AVERROR(EIO);
}
@@ -460,7 +460,7 @@ static int libsrt_setup(URLContext *h, const char *uri)
return AVERROR(EINVAL);
if (port <= 0 || port >= 65536) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / libsrt] : Port missing in uri\n");
"[obs-ffmpeg mpegts muxer / libsrt]: Port missing in uri");
return OBS_OUTPUT_CONNECT_FAILED;
}
p = strchr(uri, '?');
@@ -483,7 +483,7 @@ static int libsrt_setup(URLContext *h, const char *uri)
ret = getaddrinfo(hostname[0] ? hostname : NULL, portstr, &hints, &ai);
if (ret) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / libsrt] : Failed to resolve hostname %s: %s\n",
"[obs-ffmpeg mpegts muxer / libsrt]: Failed to resolve hostname %s: %s",
hostname, gai_strerror(ret));
return OBS_OUTPUT_CONNECT_FAILED;
}
@@ -516,7 +516,7 @@ restart:
}
if (libsrt_socket_nonblock(fd, 1) < 0)
blog(LOG_DEBUG,
"[obs-ffmpeg mpegts muxer / libsrt] : libsrt_socket_nonblock failed\n");
"[obs-ffmpeg mpegts muxer / libsrt]: libsrt_socket_nonblock failed");
ret = write_eid = libsrt_epoll_create(h, fd, 1);
if (ret < 0)
@@ -633,11 +633,11 @@ static int libsrt_open(URLContext *h, const char *uri)
if (srt_startup() < 0) {
blog(LOG_ERROR,
"[obs-ffmpeg mpegts muxer / libsrt] : libsrt failed to load.\n");
"[obs-ffmpeg mpegts muxer / libsrt]: libsrt failed to load");
return OBS_OUTPUT_CONNECT_FAILED;
} else {
blog(LOG_INFO,
"[obs-ffmpeg mpegts muxer / libsrt] : libsrt v.%s loaded.\n",
"[obs-ffmpeg mpegts muxer / libsrt]: libsrt version %s loaded",
SRT_VERSION_STRING);
}
libsrt_set_defaults(s);
@@ -825,8 +825,8 @@ static int libsrt_write(URLContext *h, const uint8_t *buf, int size)
#endif
if (time > (s->time + 60.0)) {
srt_bistats(s->fd, &perf, 0, 1);
blog(LOG_INFO,
"[obs-ffmpeg mpegts muxer / libsrt] : rtt [%.2f ms], link bandwidth [%.1f Mbps]\n",
blog(LOG_DEBUG,
"[obs-ffmpeg mpegts muxer / libsrt]: RTT [%.2f ms], Link Bandwidth [%.1f Mbps]",
perf.msRTT, perf.mbpsBandwidth);
s->time = time;
}
@@ -845,11 +845,14 @@ static int libsrt_close(URLContext *h)
/* Log stream stats. */
SRT_TRACEBSTATS perf;
srt_bstats(s->fd, &perf, 1);
blog(LOG_INFO, "---------------------------------");
blog(LOG_INFO,
"[obs-ffmpeg mpegts muxer / libsrt] : Stream stats\n\n"
"time elapsed [%.1f sec]\nmean speed [%.1f Mbp]\n"
"total bytes sent [%.1f MB]\nbytes retransmitted [%.1f %%]\n"
"bytes dropped [%.1f %%]\n\n",
"[obs-ffmpeg mpegts muxer / libsrt]: Session Summary\n"
"\ttime elapsed [%.1f sec]\n"
"\tmean speed [%.1f Mbp]\n"
"\ttotal bytes sent [%.1f MB]\n"
"\tbytes retransmitted [%.1f %%]\n"
"\tbytes dropped [%.1f %%]\n",
(double)perf.msTimeStamp / 1000.0, perf.mbpsSendRate,
(double)perf.byteSentTotal / 1000000.0,
perf.byteSentTotal
@@ -862,13 +865,14 @@ static int libsrt_close(URLContext *h)
srt_epoll_release(s->eid);
int err = srt_close(s->fd);
if (err < 0) {
blog(LOG_ERROR, "[obs-ffmpeg mpegts muxer / libsrt] : %s\n",
blog(LOG_ERROR, "[obs-ffmpeg mpegts muxer / libsrt]: %s",
srt_getlasterror_str());
return -1;
}
srt_cleanup();
blog(LOG_INFO, "[obs-ffmpeg mpegts muxer / libsrt] : closing srt");
blog(LOG_INFO,
"[obs-ffmpeg mpegts muxer / libsrt]: SRT connection closed");
return 0;
}