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 
25 extern "C" {
26 #include "libavutil/error.h"
27 }
28 
29 MPUBLIC int av_strerror_stdstring (int errnum, std::string &errbuf);
30 MPUBLIC char *av_make_error_stdstring(std::string &errbuf, int errnum);
35 MPUBLIC 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 }
47 MPUBLIC 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
#define MPUBLIC
Definition: mythexp.h:10
mythexp.h
av_make_error_stdstring_unknown
MPUBLIC std::string av_make_error_stdstring_unknown(int errnum)
Definition: mythaverror.h:47
av_make_error_stdstring
MPUBLIC char * av_make_error_stdstring(std::string &errbuf, int errnum)
A C++ equivalent to av_make_error_string.
Definition: mythaverror.cpp:42
av_strerror_stdstring
MPUBLIC int av_strerror_stdstring(int errnum, std::string &errbuf)
A quick and dirty C++ equivalent to av_strerror.
Definition: mythaverror.cpp:27