亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sdp_file.cpp

?? MPEG4音頻視頻壓縮編碼(含G.711/ACC/H.261等)
?? CPP
字號:
/* * 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. 2000, 2001.  All Rights Reserved. *  * Contributor(s):  *		Dave Mackie		dmackie@cisco.com *		Bill May 		wmay@cisco.com */#include "mp4live.h"#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include "sdp.h"#include "mp4.h"#include "mp4av.h"#include "audio_encoder.h"#include "video_encoder.h"#include "text_encoder.h"#include "media_stream.h"//#define DEBUG_IODstatic void create_conn_for_media (media_desc_t *sdpMedia,				   const char *sDestAddr,				   uint32_t ttl,				   session_desc_t *sdp){  bool destIsMcast  = false;  bool destIsSSMcast = false;  struct in_addr in;  struct in6_addr in6;  if (inet_aton(sDestAddr, &in)) {    sdpMedia->media_connect.conn_type = strdup("IP4");    destIsMcast = IN_MULTICAST(ntohl(in.s_addr));    if ((ntohl(in.s_addr) >> 24) == 232) {      destIsSSMcast = true;    }  } else if (inet_pton(AF_INET6, sDestAddr, &in6)) {    sdpMedia->media_connect.conn_type = strdup("IP6");    destIsMcast = IN6_IS_ADDR_MULTICAST(&in6);  } else {    // this is bad - but will work for now    // we have a domain name, or something like it.    sdpMedia->media_connect.conn_type = strdup("IP4");    destIsMcast = false;  }  // c=  sdpMedia->media_connect.conn_addr = strdup(sDestAddr);  if (destIsMcast) {    sdpMedia->media_connect.ttl = ttl;  }  sdpMedia->media_connect.used = 1;  if (destIsSSMcast) {    char sIncl[64];	      sprintf(sIncl, "a=incl:IN IP4 %s %s",	    sDestAddr,	    sdp->create_addr);	      sdp_add_string_to_list(&sdpMedia->unparsed_a_lines, sIncl);  }}void createStreamSdp (CLiveConfig *pGlobal,		      CMediaStream *pStream){  session_desc_t *sdp;  bool allow_rtcp = pGlobal->GetBoolValue(CONFIG_RTP_NO_B_RR_0);  sdp = MALLOC_STRUCTURE(session_desc_t);  memset(sdp, 0, sizeof(*sdp));  // o=  sdp->session_id = GetTimestamp();  sdp->session_version = GetTimestamp();  sdp->create_addr_type = strdup("IP4");  sdp->create_addr = get_host_ip_address();	// s=  sdp->session_name = strdup(pStream->GetStringValue(STREAM_CAPTION));  const char *desc = pStream->GetStringValue(STREAM_DESCRIPTION);  if (desc != NULL) {    sdp->session_desc = strdup(desc);  }  bool destIsMcast = false;		// Multicast  bool destIsSSMcast = false;		// Single Source Multicast  struct in_addr in;  struct in6_addr in6;  bool do_seperate_conn;  const char *sAudioDestAddr = pStream->GetStringValue(STREAM_AUDIO_DEST_ADDR);  const char *sVideoDestAddr = pStream->GetStringValue(STREAM_VIDEO_DEST_ADDR);  const char *sTextDestAddr = pStream->GetStringValue(STREAM_TEXT_DEST_ADDR);  in_port_t audio_port = pStream->GetIntegerValue(STREAM_AUDIO_DEST_PORT);  in_port_t video_port = pStream->GetIntegerValue(STREAM_VIDEO_DEST_PORT);  in_port_t text_port = pStream->GetIntegerValue(STREAM_TEXT_DEST_PORT);  uint32_t ttl = pGlobal->GetIntegerValue(CONFIG_RTP_MCAST_TTL);  if (strcmp(sAudioDestAddr, sVideoDestAddr) == 0 &&      strcmp(sAudioDestAddr, sTextDestAddr) == 0) {    do_seperate_conn = false;    if (inet_aton(sAudioDestAddr, &in)) {      sdp->session_connect.conn_type = strdup("IP4");      destIsMcast = IN_MULTICAST(ntohl(in.s_addr));      if ((ntohl(in.s_addr) >> 24) == 232) {	destIsSSMcast = true;      }    } else if (inet_pton(AF_INET6, sAudioDestAddr, &in6)) {      sdp->session_connect.conn_type = strdup("IP6");      destIsMcast = IN6_IS_ADDR_MULTICAST(&in6);    } else {      // this is bad - but will work for now      // we have a domain name, or something like it.      sdp->session_connect.conn_type = strdup("IP4");      destIsMcast = false;      destIsSSMcast = false;    }        // c=    sdp->session_connect.conn_addr = strdup(sAudioDestAddr);    if (destIsMcast) {      sdp->session_connect.ttl = ttl;    }    sdp->session_connect.used = 1;    if (destIsSSMcast) {      char sIncl[64];            sprintf(sIncl, "a=incl:IN IP4 %s %s",	      sAudioDestAddr,	      sdp->create_addr);            sdp_add_string_to_list(&sdp->unparsed_a_lines, sIncl);    }  } else    do_seperate_conn = true;  // Since we currently don't do anything with RTCP RR's  // and they create unnecessary state in the routers  // tell clients not to generate them  if (allow_rtcp == false) {    bandwidth_t *bandwidth = MALLOC_STRUCTURE(bandwidth_t);    memset(bandwidth, 0, sizeof(*bandwidth));    sdp->session_bandwidth = bandwidth;    bandwidth->modifier = BANDWIDTH_MODIFIER_USER;     bandwidth->bandwidth = 0;    bandwidth->user_band = strdup("RR");  }  // if SSM, add source filter attribute    bool audioIsIsma, videoIsIsma;  bool audioIs3gp = false, videoIs3gp = false;  bool createIod = true;  u_int8_t audioProfile = 0xFF;  u_int8_t videoProfile = 0xFF;  u_int8_t* pAudioConfig = NULL;  u_int32_t audioConfigLength = 0;  u_int8_t *pVideoConfig = NULL;  u_int32_t videoConfigLength = 0;    if (pStream->GetBoolValue(STREAM_AUDIO_ENABLED)) {    audioIsIsma = false;    audioIs3gp = false;    media_desc_t *sdpMediaAudio;    bool audioCreateIod = false;    bandwidth_t *audioBandwidth;        sdpMediaAudio = create_audio_sdp(pStream->GetAudioProfile(),				     &audioCreateIod,				     &audioIsIsma,				     &audioIs3gp,				     &audioProfile,				     &pAudioConfig,				     &audioConfigLength);    if (sdpMediaAudio != NULL) {      if (audioCreateIod == false) createIod = false;      if (sdp->media) {	sdp->media->next = sdpMediaAudio;      } else {	sdp->media = sdpMediaAudio;      }      if (do_seperate_conn) {	create_conn_for_media(sdpMediaAudio, sAudioDestAddr,			      ttl, sdp);      }      sdpMediaAudio->parent = sdp;            sdpMediaAudio->media = strdup("audio");      sdpMediaAudio->port = audio_port;      sdpMediaAudio->proto = strdup("RTP/AVP");            audioBandwidth = MALLOC_STRUCTURE(bandwidth_t);      memset(audioBandwidth, 0, sizeof(*audioBandwidth));      sdpMediaAudio->media_bandwidth = audioBandwidth;      audioBandwidth->modifier = BANDWIDTH_MODIFIER_AS;       audioBandwidth->bandwidth =	(pStream->GetAudioProfile()->GetIntegerValue(CFG_AUDIO_BIT_RATE) + 999)/ 1000;          }  } else {    audioIsIsma = true;  }    if (pStream->GetBoolValue(STREAM_VIDEO_ENABLED)) {    media_desc_t *sdpMediaVideo;    bandwidth_t *videoBandwidth;    bool videoCreateIod = false;        sdpMediaVideo = create_video_sdp(pStream->GetVideoProfile(),				     &videoCreateIod,				     &videoIsIsma,				     &videoIs3gp,				     &videoProfile,				     &pVideoConfig,				     &videoConfigLength);    if (sdpMediaVideo != NULL) {      if (videoCreateIod == false) createIod = false;            if (do_seperate_conn) {	create_conn_for_media(sdpMediaVideo, sVideoDestAddr,			      ttl, sdp);      }      sdpMediaVideo->next = sdp->media;      sdp->media = sdpMediaVideo;      sdpMediaVideo->parent = sdp;            sdpMediaVideo->media = strdup("video");      sdpMediaVideo->port = video_port;      sdpMediaVideo->proto = strdup("RTP/AVP");            videoBandwidth = MALLOC_STRUCTURE(bandwidth_t);      memset(videoBandwidth, 0, sizeof(*videoBandwidth));      sdpMediaVideo->media_bandwidth = videoBandwidth;      videoBandwidth->modifier = BANDWIDTH_MODIFIER_AS;       videoBandwidth->bandwidth =	pStream->GetVideoProfile()->GetIntegerValue(CFG_VIDEO_BIT_RATE);    }  } else {    videoIsIsma = true;  }  if (videoIs3gp && audioIs3gp) {    sdp_add_string_to_list(&sdp->unparsed_a_lines, 			   "a=range:npt=0-");  }  if (pStream->GetBoolValue(STREAM_TEXT_ENABLED)) {    media_desc_t *sdpMediaText;       sdpMediaText = create_text_sdp(pStream->GetTextProfile());    if (sdp->media == NULL) {      sdp->media = sdpMediaText;    } else {      media_desc_t *next = sdp->media;      while (next->next != NULL) next = next->next;      next->next = sdpMediaText;    }          if (sdpMediaText != NULL) {      if (do_seperate_conn) {	create_conn_for_media(sdpMediaText, sTextDestAddr,			      ttl, sdp);      }      sdpMediaText->parent = sdp;      sdpMediaText->port = text_port;      sdpMediaText->proto = strdup("RTP/AVP");    }  }  session_time_desc_t *sdpTime;  sdpTime = MALLOC_STRUCTURE(session_time_desc_t);  sdpTime->start_time = 0;  sdpTime->end_time = 0;  sdpTime->next = NULL;  sdpTime->repeat = NULL;  sdp->time_desc = sdpTime;    bool added_iod = false;  if (createIod) {    char* iod =      MP4MakeIsmaSdpIod(			videoProfile,			pStream->GetVideoProfile() == NULL ? 0 : 			pStream->GetVideoProfile()->GetIntegerValue(CFG_VIDEO_BIT_RATE) * 1000,			pVideoConfig,			videoConfigLength,			audioProfile,			pStream->GetAudioProfile() == NULL ? 0 :			pStream->GetAudioProfile()->GetIntegerValue(CFG_AUDIO_BIT_RATE),			pAudioConfig,			audioConfigLength,#ifdef DEBUG_IOD			pGlobal->GetBoolValue(CONFIG_APP_DEBUG) ?			MP4_DETAILS_ISMA : #endif			0			);    if (iod) {      added_iod = true;      sdp_add_string_to_list(&sdp->unparsed_a_lines, iod);      free(iod);    }  }    if (pAudioConfig) {    free(pAudioConfig);  }    if (audioIsIsma && videoIsIsma && added_iod) {    sdp_add_string_to_list(&sdp->unparsed_a_lines,			   "a=isma-compliance:1,1.0,1");  }    sdp_encode_one_to_file(sdp, 			 pStream->GetStringValue(STREAM_SDP_FILE_NAME), 			 0);  sdp_free_session_desc(sdp);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍偷拍国产亚洲| 91精品国产高清一区二区三区 | 亚洲一区二区在线观看视频 | 欧美日韩国产在线观看| 亚洲成人免费在线| 3d动漫精品啪啪1区2区免费| 久久精品久久综合| 久久精品夜色噜噜亚洲a∨| 大美女一区二区三区| 亚洲一区二区三区在线播放| 欧美美女网站色| 精品一区二区三区在线观看| 久久久精品黄色| 99精品黄色片免费大全| 亚洲一区二区欧美| 日韩一区国产二区欧美三区| 国产福利91精品| 国产精品毛片无遮挡高清| 精品视频123区在线观看| 蜜臀av一区二区| 成人免费在线视频| 欧美日韩一卡二卡| 国产美女在线精品| 亚洲一区免费视频| 久久久久亚洲综合| 色88888久久久久久影院按摩| 天天综合色天天综合色h| 国产丝袜欧美中文另类| 欧美少妇一区二区| 国产一区中文字幕| 亚洲午夜精品网| 精品va天堂亚洲国产| 色综合天天综合| 美女视频一区在线观看| 中文字幕一区二区在线播放 | 欧美性猛片aaaaaaa做受| 国产综合久久久久影院| 一二三四区精品视频| 依依成人精品视频| 久久新电视剧免费观看| 欧美日韩一区二区三区在线看| 国产精品1区2区| 三级欧美在线一区| 亚洲精品国产精华液| 欧美激情一区三区| 日韩你懂的在线播放| 色婷婷久久综合| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 777a∨成人精品桃花网| av电影在线观看完整版一区二区| 麻豆精品一区二区综合av| 亚洲影视在线观看| 国产精品久久久久影院| 亚洲精品一区二区三区影院| 欧美日韩一级片网站| 色天使色偷偷av一区二区| 国产精品一色哟哟哟| 秋霞国产午夜精品免费视频| 亚洲国产日韩在线一区模特| 亚洲人xxxx| 国产精品女上位| 久久久久久免费网| 久久蜜桃av一区二区天堂| 欧美大片一区二区三区| 51精品视频一区二区三区| 欧美在线观看视频一区二区| 91久久奴性调教| 91最新地址在线播放| 99久久99久久综合| 成人国产免费视频| 成人动漫在线一区| 国产高清不卡一区| 风间由美一区二区三区在线观看 | 亚洲在线视频一区| 亚洲特黄一级片| 综合激情成人伊人| 亚洲精品视频在线看| 国产精品久久影院| 一区二区三区资源| 亚洲一区欧美一区| 日日骚欧美日韩| 久久国产乱子精品免费女| 蜜臀av性久久久久蜜臀aⅴ流畅| 美女在线一区二区| 国内精品视频666| 成人精品电影在线观看| 成人av网站在线观看免费| a级高清视频欧美日韩| 一本到一区二区三区| 欧美日韩中文另类| 在线不卡免费欧美| 欧美精品一区二区久久久| 久久久久久久综合| 亚洲老妇xxxxxx| 亚洲成a人在线观看| 久久精品国产澳门| 国产成a人亚洲精| 在线免费观看日本欧美| 7777精品伊人久久久大香线蕉 | 色综合久久天天综合网| 欧美日韩免费电影| 日韩美女一区二区三区四区| 国产欧美精品一区aⅴ影院| 中文字幕一区二区三区在线播放| 亚洲国产中文字幕在线视频综合| 久久99久久精品欧美| 成人自拍视频在线| 欧美少妇bbb| 国产亚洲精品aa| 亚洲国产日韩一区二区| 国产一区二区三区在线观看免费| www.av亚洲| 欧美一区二区啪啪| 欧美韩国日本综合| 亚洲图片欧美视频| 大桥未久av一区二区三区中文| 欧美亚洲日本国产| 国产亚洲精品aa午夜观看| 亚洲国产精品久久久男人的天堂| 国产美女在线观看一区| 欧美性生活影院| 国产精品私房写真福利视频| 日韩综合在线视频| 国v精品久久久网| 91麻豆精品国产91久久久| 欧美激情中文不卡| 久久国内精品视频| 欧美视频中文字幕| 国产欧美日韩精品一区| 亚洲www啪成人一区二区麻豆| 国产成人三级在线观看| 欧美福利视频一区| 亚洲欧洲av在线| 国内精品久久久久影院薰衣草 | 另类调教123区| 色琪琪一区二区三区亚洲区| 久久只精品国产| 天天色综合成人网| 91香蕉国产在线观看软件| 久久午夜电影网| 五月天国产精品| 欧美中文字幕亚洲一区二区va在线 | 亚洲精品水蜜桃| 成人午夜在线视频| 日韩精品一区二区三区视频播放 | 中文在线一区二区| 狠狠色丁香婷婷综合| 欧美另类一区二区三区| 亚洲欧美区自拍先锋| 国产高清不卡二三区| 精品国产区一区| 日本不卡一区二区三区| 欧美日韩国产免费| 亚洲综合色在线| 91国偷自产一区二区使用方法| 国产精品久久毛片| 国产成人av自拍| 国产日韩精品一区| 国产一区福利在线| 精品三级在线看| 精品亚洲成av人在线观看| 欧美一区2区视频在线观看| 婷婷成人综合网| 欧美男人的天堂一二区| 亚洲二区在线观看| 欧美日韩国产综合久久| 日韩av一区二区在线影视| 欧美日韩亚洲综合一区二区三区| 亚洲国产精品久久久男人的天堂 | 一区二区成人在线| 在线精品亚洲一区二区不卡| 亚洲一二三四区不卡| 欧美性感一区二区三区| 亚洲成a人片在线观看中文| 欧美三级午夜理伦三级中视频| 亚洲成a人在线观看| 欧美一卡2卡3卡4卡| 久久精品国产久精国产| 2023国产精华国产精品| 高清久久久久久| 亚洲色图欧洲色图婷婷| 欧美影视一区在线| 秋霞影院一区二区| 久久这里只有精品6| 成人精品一区二区三区四区| 成人欧美一区二区三区白人| 欧美在线制服丝袜| 青青国产91久久久久久| 久久精品视频免费| 91丨porny丨中文| 亚洲成av人片www| 日韩精品一区二| 成人黄色电影在线| 五月天视频一区| 久久久久久99久久久精品网站| 91视频com| 亚洲一区二区三区四区在线观看 | 国产精品私人影院| 欧美性猛交一区二区三区精品 | 成人性色生活片免费看爆迷你毛片|