⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h264_sdp.c

📁 完整的RTP RTSP代码库
💻 C
字号:
/* * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is MPEG4IP. *  * The Initial Developer of the Original Code is Cisco Systems Inc. * Portions created by Cisco Systems Inc. are * Copyright (C) Cisco Systems Inc. 2004.  All Rights Reserved. *  * Contributor(s):  *              Bill May        wmay@cisco.com */#include "h264_sdp.h"/* * h264_sdp_parse_sprop_param_sets - look for the sprop_param sets in the * a=fmtp message passed, create nal units from base64 code. * Inputs - fmt_param - a=fmtp: string *   nal_len - pointer to return length *   message - pointer to output routine * Outputs - binary nal string (must be freed by caller) */uint8_t *h264_sdp_parse_sprop_param_sets (const char *fmt_param, 					  uint32_t *nal_len,					  lib_message_func_t message){  const char *sprop;  const char *end;  uint8_t *bin, *ret;  uint32_t binsize;  sprop = strcasestr(fmt_param, "sprop-parameter-sets");  if (sprop == NULL) {    if (message != NULL)       message(LOG_ERR, "h264sdp", "no sprop-parameter-sets in sdp");    return NULL;  }  sprop += strlen("sprop-parameter-sets");  ADV_SPACE(sprop);  if (*sprop != '=') {    if (message != NULL)      message(LOG_DEBUG, "h264sdp", "no equals in sprop-parameter-sets");    return NULL;  }  sprop++;  ADV_SPACE(sprop);  ret = NULL;  *nal_len = 0;  do {    end = sprop;    while (*end != ',' && *end != ';' && *end != '\0') end++;    if (sprop != end) {      bin = Base64ToBinary(sprop, end - sprop, &binsize);      if (bin != NULL) {	ret = (uint8_t *)realloc(ret, *nal_len + binsize + 4);	if (nal_len == 0) {	  ret[*nal_len] = 0;	  *nal_len += 1;	}	ret[*nal_len] = 0;	ret[*nal_len + 1] = 0;	ret[*nal_len + 2] = 1;	memcpy(ret + *nal_len + 3, 	       bin,	       binsize);	*nal_len += binsize + 3;      } else {	if (message != NULL)	  message(LOG_ERR, "h264sdp", 		  "failed to convert %u \"%s\"", 		  end - sprop, sprop);      }    }	      sprop = end;    if (*sprop == ',') sprop++;  } while (*sprop != ';' && *sprop != '\0');  return ret;}

⌨️ 快捷键说明

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