[FFmpeg-cvslog] avformat/http: Introduce ff_http_averror()

Andrey Utkin git at videolan.org
Mon Oct 20 04:32:14 CEST 2014


ffmpeg | branch: master | Andrey Utkin <andrey.utkin at corp.bluecherry.net> | Sat Oct 18 00:24:00 2014 +0400| [9d86ce783bf468e83c7d84240739baffd800d114] | committer: Michael Niedermayer

avformat/http: Introduce ff_http_averror()

int ff_http_averror(int status_code, int default_averror)

This helper function returns AVERROR_ value from 3-digit HTTP status
code.

Second argument, default_averror, is used if no specific AVERROR_ is
available. It is introduced because in different places of code
different return codes are used - -1, AVERROR(EIO), AVERROR_INVALIDDATA.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9d86ce783bf468e83c7d84240739baffd800d114
---

 libavformat/http.c |   17 +++++++++++++++++
 libavformat/http.h |    2 ++
 2 files changed, 19 insertions(+)

diff --git a/libavformat/http.c b/libavformat/http.c
index 018d25c..1958a1b 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -272,6 +272,23 @@ int ff_http_do_new_request(URLContext *h, const char *uri)
     return ret;
 }
 
+int ff_http_averror(int status_code, int default_averror)
+{
+    switch (status_code) {
+        case 400: return AVERROR_HTTP_BAD_REQUEST;
+        case 401: return AVERROR_HTTP_UNAUTHORIZED;
+        case 403: return AVERROR_HTTP_FORBIDDEN;
+        case 404: return AVERROR_HTTP_NOT_FOUND;
+        default: break;
+    }
+    if (status_code >= 400 && status_code <= 499)
+        return AVERROR_HTTP_OTHER_4XX;
+    else if (status_code >= 500)
+        return AVERROR_HTTP_SERVER_ERROR;
+    else
+        return default_averror;
+}
+
 static int http_open(URLContext *h, const char *uri, int flags,
                      AVDictionary **options)
 {
diff --git a/libavformat/http.h b/libavformat/http.h
index be8ae7f..7d02713 100644
--- a/libavformat/http.h
+++ b/libavformat/http.h
@@ -47,4 +47,6 @@ void ff_http_init_auth_state(URLContext *dest, const URLContext *src);
  */
 int ff_http_do_new_request(URLContext *h, const char *uri);
 
+int ff_http_averror(int status_code, int default_averror);
+
 #endif /* AVFORMAT_HTTP_H */



More information about the ffmpeg-cvslog mailing list