]> git.sesse.net Git - casparcg/blobdiff - modules/ffmpeg/ffmpeg_error.h
[ffmpeg] Classify most ffmpeg errors as user errors, so we don't get a stacktrace...
[casparcg] / modules / ffmpeg / ffmpeg_error.h
index b615631cbfe6ded6809961451bb88c1198c788f1..0c70667b1f7cb75ca53bb1ec0f0000dd9d7cd2de 100644 (file)
 namespace caspar { namespace ffmpeg {
 
 struct ffmpeg_error : virtual caspar_exception{};
+struct ffmpeg_user_error : virtual user_error {};
 struct averror_bsf_not_found : virtual ffmpeg_error{};
-struct averror_decoder_not_found : virtual ffmpeg_error{};
-struct averror_demuxer_not_found : virtual ffmpeg_error{};
-struct averror_encoder_not_found : virtual ffmpeg_error{};
+struct averror_decoder_not_found : virtual ffmpeg_user_error {};
+struct averror_demuxer_not_found : virtual ffmpeg_user_error {};
+struct averror_encoder_not_found : virtual ffmpeg_user_error {};
 struct averror_eof : virtual ffmpeg_error{};
 struct averror_exit : virtual ffmpeg_error{};
-struct averror_filter_not_found : virtual ffmpeg_error{};
-struct averror_muxer_not_found : virtual ffmpeg_error{};
-struct averror_option_not_found : virtual ffmpeg_error{};
+struct averror_filter_not_found : virtual ffmpeg_user_error {};
+struct averror_muxer_not_found : virtual ffmpeg_user_error {};
+struct averror_option_not_found : virtual ffmpeg_user_error {};
 struct averror_patchwelcome : virtual ffmpeg_error{};
-struct averror_protocol_not_found : virtual ffmpeg_error{};
+struct averror_protocol_not_found : virtual ffmpeg_user_error {};
 struct averror_stream_not_found : virtual ffmpeg_error{};
+struct averror_invalid_argument : virtual ffmpeg_user_error {};
 
 std::string av_error_str(int errn);
 
@@ -53,7 +55,7 @@ void throw_on_ffmpeg_error(int ret, const std::wstring& source, const char* func
 #define THROW_ON_ERROR_STR(call) THROW_ON_ERROR_STR_(call)
 
 #define THROW_ON_ERROR(ret, func, source) \
-               throw_on_ffmpeg_error(ret, source, func, __FUNCTION__, __FILE__, __LINE__);             
+               throw_on_ffmpeg_error(ret, source, func, __FUNCTION__, __FILE__, __LINE__);
 
 #define THROW_ON_ERROR2(call, source)                                                                          \
        [&]() -> int                                                                                                                    \
@@ -76,7 +78,7 @@ void throw_on_ffmpeg_error(int ret, const std::wstring& source, const char* func
        }()
 
 #define FF_RET(ret, func) \
-               caspar::ffmpeg::throw_on_ffmpeg_error(ret, L"", func, __FUNCTION__, __FILE__, __LINE__);                
+               caspar::ffmpeg::throw_on_ffmpeg_error(ret, L"", func, __FUNCTION__, __FILE__, __LINE__);
 
 #define FF(call)                                                                               \
        [&]() -> int                                                                                                            \