| Line | Branch | Exec | Source | 
|---|---|---|---|
| 1 | /* | ||
| 2 | * RTSP definitions | ||
| 3 | * copyright (c) 2002 Fabrice Bellard | ||
| 4 | * copyright (c) 2014 Samsung Electronics. All rights reserved. | ||
| 5 | * @Author: Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com> | ||
| 6 | * | ||
| 7 | * This file is part of FFmpeg. | ||
| 8 | * | ||
| 9 | * FFmpeg is free software; you can redistribute it and/or | ||
| 10 | * modify it under the terms of the GNU Lesser General Public | ||
| 11 | * License as published by the Free Software Foundation; either | ||
| 12 | * version 2.1 of the License, or (at your option) any later version. | ||
| 13 | * | ||
| 14 | * FFmpeg is distributed in the hope that it will be useful, | ||
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 17 | * Lesser General Public License for more details. | ||
| 18 | * | ||
| 19 | * You should have received a copy of the GNU Lesser General Public | ||
| 20 | * License along with FFmpeg; if not, write to the Free Software | ||
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 22 | */ | ||
| 23 | |||
| 24 | #ifndef AVFORMAT_RTSPCODES_H | ||
| 25 | #define AVFORMAT_RTSPCODES_H | ||
| 26 | |||
| 27 | #include "libavutil/common.h" | ||
| 28 | #include "libavformat/http.h" | ||
| 29 | |||
| 30 | /** RTSP handling */ | ||
| 31 | enum RTSPStatusCode { | ||
| 32 | RTSP_STATUS_CONTINUE =100, | ||
| 33 | RTSP_STATUS_OK =200, | ||
| 34 | RTSP_STATUS_CREATED =201, | ||
| 35 | RTSP_STATUS_LOW_ON_STORAGE_SPACE =250, | ||
| 36 | RTSP_STATUS_MULTIPLE_CHOICES =300, | ||
| 37 | RTSP_STATUS_MOVED_PERMANENTLY =301, | ||
| 38 | RTSP_STATUS_MOVED_TEMPORARILY =302, | ||
| 39 | RTSP_STATUS_SEE_OTHER =303, | ||
| 40 | RTSP_STATUS_NOT_MODIFIED =304, | ||
| 41 | RTSP_STATUS_USE_PROXY =305, | ||
| 42 | RTSP_STATUS_BAD_REQUEST =400, | ||
| 43 | RTSP_STATUS_UNAUTHORIZED =401, | ||
| 44 | RTSP_STATUS_PAYMENT_REQUIRED =402, | ||
| 45 | RTSP_STATUS_FORBIDDEN =403, | ||
| 46 | RTSP_STATUS_NOT_FOUND =404, | ||
| 47 | RTSP_STATUS_METHOD =405, | ||
| 48 | RTSP_STATUS_NOT_ACCEPTABLE =406, | ||
| 49 | RTSP_STATUS_PROXY_AUTH_REQUIRED =407, | ||
| 50 | RTSP_STATUS_REQ_TIME_OUT =408, | ||
| 51 | RTSP_STATUS_GONE =410, | ||
| 52 | RTSP_STATUS_LENGTH_REQUIRED =411, | ||
| 53 | RTSP_STATUS_PRECONDITION_FAILED =412, | ||
| 54 | RTSP_STATUS_REQ_ENTITY_2LARGE =413, | ||
| 55 | RTSP_STATUS_REQ_URI_2LARGE =414, | ||
| 56 | RTSP_STATUS_UNSUPPORTED_MTYPE =415, | ||
| 57 | RTSP_STATUS_PARAM_NOT_UNDERSTOOD =451, | ||
| 58 | RTSP_STATUS_CONFERENCE_NOT_FOUND =452, | ||
| 59 | RTSP_STATUS_BANDWIDTH =453, | ||
| 60 | RTSP_STATUS_SESSION =454, | ||
| 61 | RTSP_STATUS_STATE =455, | ||
| 62 | RTSP_STATUS_INVALID_HEADER_FIELD =456, | ||
| 63 | RTSP_STATUS_INVALID_RANGE =457, | ||
| 64 | RTSP_STATUS_RONLY_PARAMETER =458, | ||
| 65 | RTSP_STATUS_AGGREGATE =459, | ||
| 66 | RTSP_STATUS_ONLY_AGGREGATE =460, | ||
| 67 | RTSP_STATUS_TRANSPORT =461, | ||
| 68 | RTSP_STATUS_UNREACHABLE =462, | ||
| 69 | RTSP_STATUS_INTERNAL =500, | ||
| 70 | RTSP_STATUS_NOT_IMPLEMENTED =501, | ||
| 71 | RTSP_STATUS_BAD_GATEWAY =502, | ||
| 72 | RTSP_STATUS_SERVICE =503, | ||
| 73 | RTSP_STATUS_GATEWAY_TIME_OUT =504, | ||
| 74 | RTSP_STATUS_VERSION =505, | ||
| 75 | RTSP_STATUS_UNSUPPORTED_OPTION =551, | ||
| 76 | }; | ||
| 77 | |||
| 78 | av_unused static const char * const rtsp_status_strings[] = { | ||
| 79 | [RTSP_STATUS_CONTINUE] ="Continue", | ||
| 80 | [RTSP_STATUS_OK] ="OK", | ||
| 81 | [RTSP_STATUS_CREATED] ="Created", | ||
| 82 | [RTSP_STATUS_LOW_ON_STORAGE_SPACE] ="Low on Storage Space", | ||
| 83 | [RTSP_STATUS_MULTIPLE_CHOICES] ="Multiple Choices", | ||
| 84 | [RTSP_STATUS_MOVED_PERMANENTLY] ="Moved Permanently", | ||
| 85 | [RTSP_STATUS_MOVED_TEMPORARILY] ="Moved Temporarily", | ||
| 86 | [RTSP_STATUS_SEE_OTHER] ="See Other", | ||
| 87 | [RTSP_STATUS_NOT_MODIFIED] ="Not Modified", | ||
| 88 | [RTSP_STATUS_USE_PROXY] ="Use Proxy", | ||
| 89 | [RTSP_STATUS_BAD_REQUEST] ="Bad Request", | ||
| 90 | [RTSP_STATUS_UNAUTHORIZED] ="Unauthorized", | ||
| 91 | [RTSP_STATUS_PAYMENT_REQUIRED] ="Payment Required", | ||
| 92 | [RTSP_STATUS_FORBIDDEN] ="Forbidden", | ||
| 93 | [RTSP_STATUS_NOT_FOUND] ="Not Found", | ||
| 94 | [RTSP_STATUS_METHOD] ="Method Not Allowed", | ||
| 95 | [RTSP_STATUS_NOT_ACCEPTABLE] ="Not Acceptable", | ||
| 96 | [RTSP_STATUS_PROXY_AUTH_REQUIRED] ="Proxy Authentication Required", | ||
| 97 | [RTSP_STATUS_REQ_TIME_OUT] ="Request Time-out", | ||
| 98 | [RTSP_STATUS_GONE] ="Gone", | ||
| 99 | [RTSP_STATUS_LENGTH_REQUIRED] ="Length Required", | ||
| 100 | [RTSP_STATUS_PRECONDITION_FAILED] ="Precondition Failed", | ||
| 101 | [RTSP_STATUS_REQ_ENTITY_2LARGE] ="Request Entity Too Large", | ||
| 102 | [RTSP_STATUS_REQ_URI_2LARGE] ="Request URI Too Large", | ||
| 103 | [RTSP_STATUS_UNSUPPORTED_MTYPE] ="Unsupported Media Type", | ||
| 104 | [RTSP_STATUS_PARAM_NOT_UNDERSTOOD] ="Parameter Not Understood", | ||
| 105 | [RTSP_STATUS_CONFERENCE_NOT_FOUND] ="Conference Not Found", | ||
| 106 | [RTSP_STATUS_BANDWIDTH] ="Not Enough Bandwidth", | ||
| 107 | [RTSP_STATUS_SESSION] ="Session Not Found", | ||
| 108 | [RTSP_STATUS_STATE] ="Method Not Valid in This State", | ||
| 109 | [RTSP_STATUS_INVALID_HEADER_FIELD] ="Header Field Not Valid for Resource", | ||
| 110 | [RTSP_STATUS_INVALID_RANGE] ="Invalid Range", | ||
| 111 | [RTSP_STATUS_RONLY_PARAMETER] ="Parameter Is Read-Only", | ||
| 112 | [RTSP_STATUS_AGGREGATE] ="Aggregate Operation no Allowed", | ||
| 113 | [RTSP_STATUS_ONLY_AGGREGATE] ="Only Aggregate Operation Allowed", | ||
| 114 | [RTSP_STATUS_TRANSPORT] ="Unsupported Transport", | ||
| 115 | [RTSP_STATUS_UNREACHABLE] ="Destination Unreachable", | ||
| 116 | [RTSP_STATUS_INTERNAL] ="Internal Server Error", | ||
| 117 | [RTSP_STATUS_NOT_IMPLEMENTED] ="Not Implemented", | ||
| 118 | [RTSP_STATUS_BAD_GATEWAY] ="Bad Gateway", | ||
| 119 | [RTSP_STATUS_SERVICE] ="Service Unavailable", | ||
| 120 | [RTSP_STATUS_GATEWAY_TIME_OUT] ="Gateway Time-out", | ||
| 121 | [RTSP_STATUS_VERSION] ="RTSP Version not Supported", | ||
| 122 | [RTSP_STATUS_UNSUPPORTED_OPTION] ="Option not supported", | ||
| 123 | }; | ||
| 124 | |||
| 125 | #define RTSP_STATUS_CODE2STRING(x) (\ | ||
| 126 | x >= 100 && x < FF_ARRAY_ELEMS(rtsp_status_strings) && rtsp_status_strings[x] \ | ||
| 127 | )? rtsp_status_strings[x] : NULL | ||
| 128 | |||
| 129 | enum RTSPMethod { | ||
| 130 | DESCRIBE, | ||
| 131 | ANNOUNCE, | ||
| 132 | OPTIONS, | ||
| 133 | SETUP, | ||
| 134 | PLAY, | ||
| 135 | PAUSE, | ||
| 136 | TEARDOWN, | ||
| 137 | GET_PARAMETER, | ||
| 138 | SET_PARAMETER, | ||
| 139 | REDIRECT, | ||
| 140 | RECORD, | ||
| 141 | UNKNOWN = -1, | ||
| 142 | }; | ||
| 143 | |||
| 144 | ✗ | static inline int ff_rtsp_averror(enum RTSPStatusCode status_code, int default_averror) | |
| 145 | { | ||
| 146 | ✗ | return ff_http_averror(status_code, default_averror); | |
| 147 | } | ||
| 148 | |||
| 149 | #endif /* AVFORMAT_RTSPCODES_H */ | ||
| 150 |