MythTV master
mythaverror.h
Go to the documentation of this file.
1/*
2 * Copyright (c) David Hampton 2020
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19#ifndef MYTHAVERROR_H
20#define MYTHAVERROR_H
21
22#include <string>
23#include "mythexp.h"
24
25extern "C" {
26#include "libavutil/error.h"
27}
28
29MPUBLIC int av_strerror_stdstring (int errnum, std::string &errbuf);
30MPUBLIC char *av_make_error_stdstring(std::string &errbuf, int errnum);
35MPUBLIC inline std::string av_make_error_stdstring(int errnum)
36{
37 auto errbuf = std::string(AV_ERROR_MAX_STRING_SIZE, '\0'); // must use () to select correct constructor
38 av_strerror(errnum, errbuf.data(), errbuf.size());
39 errbuf.resize(errbuf.find('\0'));
40 return errbuf;
41}
47MPUBLIC inline std::string av_make_error_stdstring_unknown(int errnum)
48{
49 using namespace std::string_literals;
50 auto errbuf = std::string(AV_ERROR_MAX_STRING_SIZE, '\0'); // must use () to select correct constructor
51 int rc = av_strerror(errnum, errbuf.data(), errbuf.size());
52 if (rc == 0)
53 {
54 errbuf.resize(errbuf.find('\0'));
55 return errbuf;
56 }
57 return "UNKNOWN"s;
58}
59
60#endif // MYTHAVERROR_H
MPUBLIC char * av_make_error_stdstring(std::string &errbuf, int errnum)
A C++ equivalent to av_make_error_string.
Definition: mythaverror.cpp:42
MPUBLIC int av_strerror_stdstring(int errnum, std::string &errbuf)
A quick and dirty C++ equivalent to av_strerror.
Definition: mythaverror.cpp:27
MPUBLIC std::string av_make_error_stdstring_unknown(int errnum)
Definition: mythaverror.h:47
#define MPUBLIC
Definition: mythexp.h:10