1 /*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg 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 GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19 #undef _GNU_SOURCE
20 #define _XOPEN_SOURCE 600 /* XSI-compliant version of strerror_r */
21 #include <stdio.h>
22 #include <string.h>
23 #include "config.h"
27
32 };
33
34 #define ERROR_TAG(tag) AVERROR_##tag, #tag
35 #define EERROR_TAG(tag) AVERROR(tag), #tag
36 #define AVERROR_INPUT_AND_OUTPUT_CHANGED (AVERROR_INPUT_CHANGED | AVERROR_OUTPUT_CHANGED)
38 {
ERROR_TAG(BSF_NOT_FOUND),
"Bitstream filter not found" },
39 {
ERROR_TAG(BUG),
"Internal bug, should not have happened" },
40 {
ERROR_TAG(BUG2),
"Internal bug, should not have happened" },
41 {
ERROR_TAG(BUFFER_TOO_SMALL),
"Buffer too small" },
42 {
ERROR_TAG(DECODER_NOT_FOUND),
"Decoder not found" },
43 {
ERROR_TAG(DEMUXER_NOT_FOUND),
"Demuxer not found" },
44 {
ERROR_TAG(ENCODER_NOT_FOUND),
"Encoder not found" },
46 {
ERROR_TAG(EXIT),
"Immediate exit requested" },
47 {
ERROR_TAG(EXTERNAL),
"Generic error in an external library" },
48 {
ERROR_TAG(FILTER_NOT_FOUND),
"Filter not found" },
49 {
ERROR_TAG(INPUT_CHANGED),
"Input changed" },
50 {
ERROR_TAG(INVALIDDATA),
"Invalid data found when processing input" },
51 {
ERROR_TAG(MUXER_NOT_FOUND),
"Muxer not found" },
52 {
ERROR_TAG(OPTION_NOT_FOUND),
"Option not found" },
53 {
ERROR_TAG(OUTPUT_CHANGED),
"Output changed" },
54 {
ERROR_TAG(PATCHWELCOME),
"Not yet implemented in FFmpeg, patches welcome" },
55 {
ERROR_TAG(PROTOCOL_NOT_FOUND),
"Protocol not found" },
56 {
ERROR_TAG(STREAM_NOT_FOUND),
"Stream not found" },
58 {
ERROR_TAG(EXPERIMENTAL),
"Experimental feature" },
59 {
ERROR_TAG(INPUT_AND_OUTPUT_CHANGED),
"Input and output changed" },
60 {
ERROR_TAG(HTTP_BAD_REQUEST),
"Server returned 400 Bad Request" },
61 {
ERROR_TAG(HTTP_UNAUTHORIZED),
"Server returned 401 Unauthorized (authorization failed)" },
62 {
ERROR_TAG(HTTP_FORBIDDEN),
"Server returned 403 Forbidden (access denied)" },
63 {
ERROR_TAG(HTTP_NOT_FOUND),
"Server returned 404 Not Found" },
64 {
ERROR_TAG(HTTP_TOO_MANY_REQUESTS),
"Server returned 429 Too Many Requests" },
65 {
ERROR_TAG(HTTP_OTHER_4XX),
"Server returned 4XX Client Error, but not one of 40{0,1,3,4}" },
66 {
ERROR_TAG(HTTP_SERVER_ERROR),
"Server returned 5XX Server Error reply" },
67 #if !HAVE_STRERROR_R
68 {
EERROR_TAG(E2BIG),
"Argument list too long" },
70 {
EERROR_TAG(EAGAIN),
"Resource temporarily unavailable" },
72 {
EERROR_TAG(EBUSY),
"Device or resource busy" },
74 {
EERROR_TAG(EDEADLK),
"Resource deadlock avoided" },
75 {
EERROR_TAG(EDOM),
"Numerical argument out of domain" },
79 {
EERROR_TAG(EILSEQ),
"Illegal byte sequence" },
80 {
EERROR_TAG(EINTR),
"Interrupted system call" },
86 {
EERROR_TAG(ENAMETOOLONG),
"File name too long" },
87 {
EERROR_TAG(ENFILE),
"Too many open files in system" },
89 {
EERROR_TAG(ENOENT),
"No such file or directory" },
92 {
EERROR_TAG(ENOMEM),
"Cannot allocate memory" },
93 {
EERROR_TAG(ENOSPC),
"No space left on device" },
94 {
EERROR_TAG(ENOSYS),
"Function not implemented" },
96 {
EERROR_TAG(ENOTEMPTY),
"Directory not empty" },
97 {
EERROR_TAG(ENOTTY),
"Inappropriate I/O control operation" },
98 {
EERROR_TAG(ENXIO),
"No such device or address" },
99 {
EERROR_TAG(EPERM),
"Operation not permitted" },
102 {
EERROR_TAG(EROFS),
"Read-only file system" },
106 #endif
107 };
108
110 {
113
117 break;
118 }
119 }
122 } else {
123 #if HAVE_STRERROR_R
125 #else
127 #endif
129 snprintf(errbuf, errbuf_size,
"Error number %d occurred", errnum);
130 }
131
133 }