utils.h

来自「目前的流媒体服务器代码有Darwin(苹果公司)」· C头文件 代码 · 共 165 行

H
165
字号
/* *  *  $Id$ *   *  This file is part of Fenice * *  Fenice -- Open Media Server * *  Copyright (C) 2007 by *       *    - Giampaolo Mancini    <giampaolo.mancini@polito.it> *    - Francesco Varano    <francesco.varano@polito.it> *    - Marco Penno        <marco.penno@polito.it> *    - Federico Ridolfo    <federico.ridolfo@polito.it> *    - Eugenio Menegatti     <m.eu@libero.it> *    - Stefano Cau *    - Giuliano Emma *    - Stefano Oldrini *  *  Fenice is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  Fenice is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with Fenice; if not, write to the Free Software *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *   * */#ifndef _UTILSH#define _UTILSH#include <time.h>#include <ctype.h>#include <sys/types.h>#include <math.h>#include <fenice/types.h>#include <string.h>//XXX should me moved somewhere else#ifdef WIN32#define strncasecmp(s1,s2,len)  _strnicmp(s1,s2,len)#define strcasecmp(s1,s2)       _stricmp(s1,s2)#define open(a, b)   _open(a, b)#define read(a,b,c)  _read(a,b,c)#define lseek(a,b,c) _lseek(a,b,c)#define close(a)     _close(a)#endif/*! autodescriptive error values */#define ERR_NOERROR              0#define ERR_GENERIC             -1#define ERR_NOT_FOUND           -2#define ERR_PARSE               -3#define ERR_ALLOC               -4#define ERR_INPUT_PARAM         -5#define ERR_NOT_SD              -6  // XXX check it#define ERR_UNSUPPORTED_PT      -7  /// Unsupported Payload Type#define ERR_EOF                 -8#define ERR_FATAL               -9#define ERR_CONNECTION_CLOSE    -10/*! message header keywords see rfc2326 and rfc2068 */#define HDR_CONTENTLENGTH       "Content-Length"#define HDR_ACCEPT              "Accept"#define HDR_ALLOW               "Allow"#define HDR_BLOCKSIZE           "Blocksize"#define HDR_CONTENTTYPE         "Content-Type"#define HDR_DATE                "Date"#define HDR_REQUIRE             "Require"#define HDR_TRANSPORTREQUIRE    "Transport-Require"#define HDR_SEQUENCENO          "SequenceNo"#define HDR_CSEQ                "CSeq"#define HDR_STREAM              "Stream"#define HDR_SESSION             "Session"#define HDR_TRANSPORT           "Transport"#define HDR_RANGE               "Range"#define HDR_USER_AGENT          "User-Agent"/*! rtsp methods */#define RTSP_METHOD_MAXLEN 15#define RTSP_METHOD_DESCRIBE        "DESCRIBE"#define RTSP_METHOD_ANNOUNCE        "ANNOUNCE"#define RTSP_METHOD_GET_PARAMETERS  "GET_PARAMETERS"#define RTSP_METHOD_OPTIONS         "OPTIONS"#define RTSP_METHOD_PAUSE           "PAUSE"#define RTSP_METHOD_PLAY            "PLAY"#define RTSP_METHOD_RECORD          "RECORD"#define RTSP_METHOD_REDIRECT        "REDIRECT"#define RTSP_METHOD_SETUP           "SETUP"#define RTSP_METHOD_SET_PARAMETER   "SET_PARAMETER"#define RTSP_METHOD_TEARDOWN        "TEARDOWN"/*! rtsp method tokens */#define RTSP_ID_DESCRIBE 0#define RTSP_ID_ANNOUNCE 1#define RTSP_ID_GET_PARAMETERS 2#define RTSP_ID_OPTIONS 3#define RTSP_ID_PAUSE 4#define RTSP_ID_PLAY 5#define RTSP_ID_RECORD 6#define RTSP_ID_REDIRECT 7#define RTSP_ID_SETUP 8#define RTSP_ID_SET_PARAMETER 9#define RTSP_ID_TEARDOWN 10//XXX move them in a separate header?/*! SD common tags */#define SD_STREAM           "STREAM"#define SD_STREAM_END       "STREAM_END"#define SD_FILENAME         "FILE_NAME"#define SD_CLOCK_RATE       "CLOCK_RATE"#define SD_PAYLOAD_TYPE     "PAYLOAD_TYPE"#define SD_AUDIO_CHANNELS   "AUDIO_CHANNELS"#define SD_ENCODING_NAME    "ENCODING_NAME"#define SD_MEDIA_TYPE       "MEDIA_TYPE"#define SD_BIT_PER_SAMPLE   "BIT_PER_SAMPLE"#define SD_SAMPLE_RATE      "SAMPLE_RATE"#define SD_CODING_TYPE      "CODING_TYPE"#define SD_FRAME_LEN        "FRAME_LEN"#define SD_PKT_LEN          "PKT_LEN"#define SD_PRIORITY         "PRIORITY"#define SD_BITRATE          "BITRATE"#define SD_FRAME_RATE       "FRAME_RATE"#define SD_FORCE_FRAME_RATE "FORCE_FRAME_RATE"#define SD_BYTE_PER_PCKT    "BYTE_PER_PCKT"#define SD_MEDIA_SOURCE     "MEDIA_SOURCE"#define SD_TWIN             "TWIN"#define SD_MULTICAST        "MULTICAST"/*! Creative commons specific tags */#define SD_LICENSE "LICENSE"#define SD_RDF "VERIFY"#define SD_TITLE "TITLE"#define SD_CREATOR "CREATOR"/*! random seed generator, as documented in rfc1889 Appendix A.6 */uint32_t random32(int);/*! simple hasher */uint32_t md_32(uint8_t *string, int length);/*! parses the urls splitting it in fields [SLATED FOR RESHAPE] */int parse_url(const char *url, char *server, size_t, unsigned short *port,              char *file_name, size_t);float NTP_time(time_t t);int get_utc(struct tm *t, char *b);int get_field(uint8_t * d, uint32_t bits, uint32_t * offset);void fncheader(void);//XXX check and maybe use something saner...#ifndef min#define min(x,y) ((x) < (y) ? (x) : (y))#endif#ifndef max#define max(x,y) ((x) > (y) ? (x) : (y))#endif//XXX we should use the mathlib one if available! (C99)#define lround(x) (x - floor(x) < 0.5) ? floor(x): ceil(x)#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?