diff --git a/libswresample/swresample.c b/libswresample/swresample.c
index 519cadf97c3084b7abe6dd7e7cfe6bd892cc4b80..7276c7abb5e20bb628736356c9ba81008fd36f18 100644
--- a/libswresample/swresample.c
+++ b/libswresample/swresample.c
@@ -144,7 +144,15 @@ int swr_init(SwrContext *s){
     s-> in_sample_fmt &= 0xFF;
     s->out_sample_fmt &= 0xFF;
 
-    //We assume AVOptions checked the various values and the defaults where allowed
+    if(s-> in_sample_fmt >= AV_SAMPLE_FMT_NB){
+        av_log(s, AV_LOG_ERROR, "Requested sample format %s is invalid\n", av_get_sample_fmt_name(s->in_sample_fmt));
+        return AVERROR(EINVAL);
+    }
+    if(s->out_sample_fmt >= AV_SAMPLE_FMT_NB){
+        av_log(s, AV_LOG_ERROR, "Requested sample format %s is invalid\n", av_get_sample_fmt_name(s->out_sample_fmt));
+        return AVERROR(EINVAL);
+    }
+
     if(   s->int_sample_fmt != AV_SAMPLE_FMT_S16
         &&s->int_sample_fmt != AV_SAMPLE_FMT_FLT){
         av_log(s, AV_LOG_ERROR, "Requested sample format %s is not supported internally, only float & S16 is supported\n", av_get_sample_fmt_name(s->int_sample_fmt));