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

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

?? audio_encoder.h

?? MPEG4音頻視頻壓縮編碼(含G.711/ACC/H.261等)
?? H
字號:
/* * 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-2002.  All Rights Reserved. *  * Contributor(s):  *		Dave Mackie		dmackie@cisco.com */#ifndef __AUDIO_ENCODER_H__#define __AUDIO_ENCODER_H__#include "media_codec.h"#include "media_frame.h"#include <sdp.h>#include <mp4.h>#include "profile_audio.h"#include "resampl.h"#include "encoder_gui_options.h"class CAudioEncoder : public CMediaCodec { public:  CAudioEncoder(CAudioProfile *profile,		CAudioEncoder *next, 		u_int8_t srcChannels,		u_int32_t srcSampleRate,		uint16_t mtu,		bool realTime = true);  virtual u_int32_t GetSamplesPerFrame() = 0;	  virtual bool Init(void) = 0;  void AddRtpDestination (CMediaStream *stream,			  bool disable_ts_offset,			  uint16_t max_ttl,			  in_port_t srcPort = 0) {    AddRtpDestInt(disable_ts_offset, max_ttl,		  stream->GetStringValue(STREAM_AUDIO_DEST_ADDR),		  stream->GetIntegerValue(STREAM_AUDIO_DEST_PORT),		  srcPort);  }; public:  // utility routines  static bool InterleaveStereoSamples(				      int16_t* pLeftBuffer, 				      int16_t* pRightBuffer, 				      u_int32_t numSamplesPerChannel,				      int16_t** ppDstBuffer);  static bool DeinterleaveStereoSamples(					int16_t* pSrcBuffer, 					u_int32_t numSamplesPerChannel,					int16_t** ppLeftBuffer, 					int16_t** ppRightBuffer);   CAudioEncoder *GetNext(void) {    return (CAudioEncoder *)CMediaCodec::GetNext();  }; protected:  int ThreadMain(void);  CAudioProfile *Profile(void) { return (CAudioProfile *)m_pConfig; } ;  void Initialize(void);  virtual bool EncodeSamples(			     int16_t* pSamples, 			     u_int32_t numSamplesPerChannel,			     u_int8_t numChannels) = 0;  virtual bool GetEncodedFrame(			       u_int8_t** ppBuffer, 			       u_int32_t* pBufferLength,			       u_int32_t* pNumSamplesPerChannel) = 0;  CRtpTransmitter *CreateRtpTransmitter(bool disable_ts) {    return new CAudioRtpTransmitter(Profile(), m_mtu, disable_ts);  };  void ProcessAudioFrame(CMediaFrame *frame);  void ResampleAudio(		     const u_int8_t* frameData,		     u_int32_t frameDataLength);  void ForwardEncodedAudioFrames(void);  void DoStopAudio();  // audio utility routines  inline Duration SrcSamplesToTicks(u_int64_t numSamples) {    return (numSamples * TimestampTicks) / m_audioSrcSampleRate;  }  inline Duration DstSamplesToTicks(u_int64_t numSamples) {    return (numSamples * TimestampTicks) / m_audioDstSampleRate;  }  inline u_int32_t SrcTicksToSamples(Duration duration) {    return (duration * m_audioSrcSampleRate) / TimestampTicks;  }  inline u_int32_t DstTicksToSamples(Duration duration) {    return (duration * m_audioDstSampleRate) / TimestampTicks;  }  inline u_int32_t SrcSamplesToBytes(u_int64_t numSamples) {    return (numSamples * m_audioSrcChannels * sizeof(u_int16_t));  }  inline u_int32_t DstSamplesToBytes(u_int64_t numSamples) {    return (numSamples * m_audioDstChannels * sizeof(u_int16_t));  }  inline u_int64_t SrcBytesToSamples(u_int32_t numBytes) {    return (numBytes / (m_audioSrcChannels * sizeof(u_int16_t)));  }  inline u_int64_t DstBytesToSamples(u_int32_t numBytes) {    return (numBytes / (m_audioDstChannels * sizeof(u_int16_t)));  }  void AddSilenceFrame(void);  // Audio encoding variables (timing, etc)	u_int8_t		m_audioSrcChannels;	u_int32_t		m_audioSrcSampleRate;	u_int32_t		m_audioSrcFrameNumber;	// audio resampling info	resample_t              *m_audioResample;	// audio destination info	MediaType		m_audioDstType;	u_int8_t		m_audioDstChannels;	u_int32_t		m_audioDstSampleRate;	u_int16_t		m_audioDstSamplesPerFrame;	u_int64_t		m_audioDstSampleNumber;	u_int32_t		m_audioDstFrameNumber;	// audio encoding info	u_int8_t*		m_audioPreEncodingBuffer;	u_int32_t		m_audioPreEncodingBufferLength;	u_int32_t		m_audioPreEncodingBufferMaxLength;	// audio timing info	Timestamp		m_audioStartTimestamp;	Timestamp               m_audioEncodingStartTimestamp;	Duration		m_audioSrcElapsedDuration;	Duration		m_audioDstElapsedDuration;};void AudioProfileCheck(CAudioProfile *ap);CAudioEncoder* AudioEncoderCreate(CAudioProfile *ap, 				  CAudioEncoder *next,				  u_int8_t srcChannels,				  u_int32_t srcSampleRate,				  uint16_t mtu,				  bool realTime = true);media_desc_t *create_audio_sdp(CAudioProfile *pConfig,			       bool *mpeg4,			       bool *isma_compliant,			       bool *audio_is_3gp,			       uint8_t *audioProfile,			       uint8_t **audioConfig,			       uint32_t *audioConfigLen);MediaType get_audio_mp4_fileinfo(CAudioProfile *pConfig,				 bool *mpeg4,				 bool *isma_compliant,				 uint8_t *audioProfile,				 uint8_t **audioConfig,				 uint32_t *audioConfigLen,				 uint8_t *mp4_audio_type);void create_mp4_audio_hint_track(CAudioProfile *pConfig, 				 MP4FileHandle mp4file,				 MP4TrackId trackId,				 uint16_t mtu);bool get_audio_rtp_info (CAudioProfile *pConfig,			 MediaType *audioFrameType,			 uint32_t *audioTimeScale,			 uint8_t *audioPayloadNumber,			 uint8_t *audioPayloadBytesPerPacket,			 uint8_t *audioPayloadBytesPerFrame,			 uint8_t *audioQueueMaxCount,			 uint8_t *audioiovMaxCount,			 audio_queue_frame_f *audio_queue_frame,			 audio_set_rtp_payload_f *audio_set_rtp_payload,			 audio_set_rtp_header_f *audio_set_header,			 audio_set_rtp_jumbo_frame_f *audio_set_jumbo_frame,			 void **ud);void AudioProfileCheckBase(CAudioProfile *ap);CAudioEncoder* AudioEncoderBaseCreate(CAudioProfile *ap, 				      CAudioEncoder *next, 				      u_int8_t srcChannels,				      u_int32_t srcSampleRate,				      uint16_t mtu,				      bool realTime = true);media_desc_t *create_base_audio_sdp(CAudioProfile *pConfig,				    bool *mpeg4,				    bool *isma_compliant,				    bool *audio_is_3gp,				    uint8_t *audioProfile,				    uint8_t **audioConfig,				    uint32_t *audioConfigLen);MediaType get_base_audio_mp4_fileinfo(CAudioProfile *pConfig,				      bool *mpeg4,				      bool *isma_compliant,				      uint8_t *audioProfile,				      uint8_t **audioConfig,				      uint32_t *audioConfigLen,				      uint8_t *mp4_audio_type);void create_base_mp4_audio_hint_track(CAudioProfile *pConfig, 				      MP4FileHandle mp4file,				      MP4TrackId trackId,				      uint16_t mtu);bool get_base_audio_rtp_info (CAudioProfile *pConfig,			      MediaType *audioFrameType,			      uint32_t *audioTimeScale,			      uint8_t *audioPayloadNumber,			      uint8_t *audioPayloadBytesPerPacket,			      uint8_t *audioPayloadBytesPerFrame,			      uint8_t *audioQueueMaxCount,			      uint8_t *audioiovMaxCount,			      audio_queue_frame_f * audio_queue_frame,			      audio_set_rtp_payload_f *audio_set_rtp_payload,			      audio_set_rtp_header_f *audio_set_header,			      audio_set_rtp_jumbo_frame_f *audio_set_jumbo_frame,			      void **ud);typedef uint32_t *(*bitrates_for_samplerate_f)(uint32_t samplerate, uint8_t chans, uint32_t *ret_size);typedef struct audio_encoder_table_t {  char *dialog_selection_name;  char *audio_encoder;  char *audio_encoding;  const uint32_t *sample_rates;  uint32_t num_sample_rates;  bitrates_for_samplerate_f bitrates_for_samplerate;  uint32_t max_channels;  get_gui_options_list_f get_gui_options;} audio_encoder_table_t;void InitAudioEncoders(void);void AddAudioEncoderTable(audio_encoder_table_t *new_table);extern audio_encoder_table_t **audio_encoder_table;extern uint32_t audio_encoder_table_size;extern const uint32_t allSampleRateTable[];extern const uint32_t allSampleRateTableSize;#endif /* __AUDIO_ENCODER_H__ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费人成精品欧美精品| 青青草伊人久久| 亚洲电影激情视频网站| 免费欧美在线视频| 91美女精品福利| 精品嫩草影院久久| 亚洲一区二区在线免费看| 国产一区二区三区四区五区入口| 91丨九色丨尤物| 精品成人私密视频| 日日摸夜夜添夜夜添亚洲女人| 国产成人8x视频一区二区| 91精品国产综合久久婷婷香蕉 | 国产午夜精品美女毛片视频| 亚洲激情欧美激情| 成人一区在线观看| 国产女主播一区| 久久精品国产第一区二区三区 | 国产精品123| 日韩美女视频一区二区在线观看| 亚洲激情成人在线| 色综合天天综合| 亚洲天堂网中文字| 成人久久久精品乱码一区二区三区| 久久综合九色综合97_久久久| 天堂va蜜桃一区二区三区| 91久久一区二区| 一区二区三区在线免费观看| 99久久99久久精品免费观看| 日本一区二区视频在线| 国产黑丝在线一区二区三区| 热久久久久久久| 欧美精品在线观看播放| 亚洲午夜精品在线| 色婷婷狠狠综合| ...av二区三区久久精品| 成人妖精视频yjsp地址| 日本一区二区三级电影在线观看| 国产一区视频导航| 久久精品亚洲国产奇米99| 国产麻豆精品久久一二三| 久久久精品免费免费| 东方欧美亚洲色图在线| 中文字幕精品一区二区精品绿巨人 | 欧美刺激午夜性久久久久久久| 久久精品国产成人一区二区三区 | 色国产综合视频| 亚洲一区二区五区| 在线不卡中文字幕播放| 韩国精品久久久| 中文字幕国产一区二区| 91丨porny丨户外露出| 一二三四区精品视频| 91精品国产aⅴ一区二区| 蜜臀久久99精品久久久画质超高清| 日韩一区二区视频| 国产成人av电影免费在线观看| 亚洲欧洲精品一区二区三区不卡| 在线观看区一区二| 奇米888四色在线精品| 国产午夜亚洲精品不卡| 91福利视频久久久久| 久久精品国产久精国产| 亚洲日本一区二区| 91精品国产乱码久久蜜臀| 五月天一区二区| 日韩中文字幕不卡| 欧美一级淫片007| 国产精品伊人色| 中文字幕字幕中文在线中不卡视频| 日本精品一区二区三区高清| 日韩精品五月天| 欧美激情一二三区| 欧美日韩亚洲综合一区二区三区| 丝袜a∨在线一区二区三区不卡| 2019国产精品| 欧美午夜精品久久久久久孕妇| 精品综合免费视频观看| 亚洲女性喷水在线观看一区| 欧美变态tickle挠乳网站| 99国产一区二区三精品乱码| 日本成人在线视频网站| 亚洲视频 欧洲视频| 亚洲精品在线一区二区| 欧美性生交片4| 国产成人免费视频一区| 日韩精品亚洲专区| 欧美电影精品一区二区| 在线观看视频欧美| 国产凹凸在线观看一区二区| 五月综合激情日本mⅴ| 中文字幕高清一区| 精品国产乱码久久久久久影片| 日本久久精品电影| 99亚偷拍自图区亚洲| 国产乱人伦偷精品视频免下载| 午夜精品一区二区三区三上悠亚| 国产精品久久精品日日| 久久婷婷色综合| 欧美一区二区日韩| 欧美人与禽zozo性伦| 色婷婷久久久久swag精品| 成人三级在线视频| 国产成人h网站| 国产毛片精品国产一区二区三区| 天使萌一区二区三区免费观看| 亚洲人成亚洲人成在线观看图片| 久久久久成人黄色影片| 精品国产免费久久| 精品欧美一区二区三区精品久久| 日韩一区二区三免费高清| 欧美日韩精品一区二区三区 | 日本一区二区不卡视频| 久久免费的精品国产v∧| 日韩一区二区三区电影在线观看 | 久久久久久久久久久电影| 欧美v日韩v国产v| 精品国产一区二区在线观看| 日韩欧美国产一区二区在线播放| 日韩三级.com| 欧美精品一区二区在线播放| 欧美va日韩va| 国产亚洲精品7777| 国产精品美日韩| 尤物av一区二区| 亚洲图片一区二区| 日日夜夜精品视频天天综合网| 丝袜美腿亚洲色图| 国产一区二区久久| 99国产精品久久久久久久久久久 | 国产黄色精品视频| 99热在这里有精品免费| 色综合色综合色综合| 欧美日韩在线播| 日韩免费看的电影| 久久九九99视频| 一区二区日韩电影| 蜜臀av一区二区在线免费观看 | 成人黄色小视频在线观看| 成人激情小说网站| 欧美伊人久久久久久午夜久久久久| 欧美视频精品在线观看| 欧美一级日韩免费不卡| 久久久久国产精品人| 亚洲欧美日韩国产手机在线| 亚洲成人动漫在线免费观看| 激情小说亚洲一区| 91农村精品一区二区在线| 欧美日韩精品系列| 欧美激情在线免费观看| 一个色在线综合| 国产河南妇女毛片精品久久久| 色天使久久综合网天天| 欧美一级久久久| 亚洲欧美日韩在线| 美女久久久精品| 91国偷自产一区二区使用方法| 日韩欧美一区中文| 亚洲色图欧美在线| 激情综合色综合久久综合| 一本一道综合狠狠老| 久久亚洲一区二区三区明星换脸 | 久久国内精品自在自线400部| 国产999精品久久| 777a∨成人精品桃花网| 中文字幕中文字幕一区| 捆绑调教一区二区三区| 欧美性猛片xxxx免费看久爱| 久久精品亚洲精品国产欧美| 日韩综合小视频| 色婷婷综合在线| 久久久久久久久久久久电影 | 亚洲精品中文字幕乱码三区| 极品尤物av久久免费看| 欧美人妖巨大在线| 国产精品久久久爽爽爽麻豆色哟哟| 日本美女一区二区| 欧美日韩在线播放三区| 亚洲精品免费在线观看| 成人av电影在线观看| 精品对白一区国产伦| 日韩高清不卡在线| 欧美日韩高清一区二区| 亚洲精品高清在线| 99精品视频在线观看| 亚洲国产成人在线| 国产成人在线视频网站| 久久在线观看免费| 久久av资源站| 日韩女优毛片在线| 视频一区二区不卡| 欧美精品一二三区| 三级不卡在线观看| 欧美日韩国产综合草草| 亚洲一二三四区| 欧美亚洲一区二区在线观看| 夜夜精品视频一区二区 | 国产高清精品网站| 久久精品亚洲一区二区三区浴池| 国内成人免费视频|