3 #include <common/exception/exceptions.h>
\r
7 #pragma warning(push, 1)
\r
11 #include <libavutil/error.h>
\r
14 #pragma warning(pop)
\r
18 struct ffmpeg_error : virtual caspar_exception{};
\r
20 static std::string av_error_str(int errn)
\r
23 memset(buf, 0, 256);
\r
24 if(av_strerror(errn, buf, 256) < 0)
\r
26 return std::string(buf);
\r
29 #define THROW_ON_ERROR(ret, source, func) \
\r
32 BOOST_THROW_EXCEPTION( \
\r
34 msg_info(av_error_str(ret)) << \
\r
35 source_info(narrow(source)) << \
\r
36 boost::errinfo_api_function(func) << \
\r
37 boost::errinfo_errno(AVUNERROR(ret))); \
\r
40 #define THROW_ON_ERROR_STR_(call) #call
\r
41 #define THROW_ON_ERROR_STR(call) THROW_ON_ERROR_STR_(call)
\r
43 #define THROW_ON_ERROR2(call, source) \
\r
49 BOOST_THROW_EXCEPTION( \
\r
51 msg_info(av_error_str(ret)) << \
\r
52 source_info(narrow(source)) << \
\r
53 boost::errinfo_api_function(THROW_ON_ERROR_STR(call)) << \
\r
54 boost::errinfo_errno(AVUNERROR(ret))); \
\r