vie_channel.h revision 4aee6b637d6830145396e7216ce15314c1feec92
1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/* 25e954814a8d73ae1d4095bf951cbbaf3e6b6f8eepwestin@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * 4470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * Use of this source code is governed by a BSD-style license 5470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * that can be found in the LICENSE file in the root of the source 6470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * tree. An additional intellectual property rights grant can be found 7470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * in the file PATENTS. All contributing project authors may 8470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * be found in the AUTHORS file in the root of the source tree. 9470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */ 10470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 11e06ca3cef68cec1fa97b3d476c99d98c68f04ff2mflodman@webrtc.org#ifndef WEBRTC_VIDEO_ENGINE_VIE_CHANNEL_H_ 12e06ca3cef68cec1fa97b3d476c99d98c68f04ff2mflodman@webrtc.org#define WEBRTC_VIDEO_ENGINE_VIE_CHANNEL_H_ 13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 141da1ce0da5fcc029dbc2a134a9760e1b398b02d7pwestin@webrtc.org#include <list> 151da1ce0da5fcc029dbc2a134a9760e1b398b02d7pwestin@webrtc.org 169354cc965c04a0c79ea36622043751596a6fd015stefan@webrtc.org#include "modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h" 1703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org#include "modules/rtp_rtcp/interface/rtp_rtcp_defines.h" 1803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org#include "modules/udp_transport/interface/udp_transport.h" 1903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org#include "modules/video_coding/main/interface/video_coding_defines.h" 20d32c44738a034977b659bb4a2e76a97f027555e4mflodman@webrtc.org#include "system_wrappers/interface/scoped_ptr.h" 2103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org#include "system_wrappers/interface/tick_util.h" 22f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org#include "typedefs.h" // NOLINT 23a4863dbdf05101c983dbd8c638c9fa9419b7c485mflodman@webrtc.org#include "video_engine/include/vie_network.h" 24a4863dbdf05101c983dbd8c638c9fa9419b7c485mflodman@webrtc.org#include "video_engine/include/vie_rtp_rtcp.h" 2503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org#include "video_engine/vie_defines.h" 2603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org#include "video_engine/vie_file_recorder.h" 2703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org#include "video_engine/vie_frame_provider_base.h" 282853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org#include "video_engine/vie_receiver.h" 292853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org#include "video_engine/vie_sender.h" 302853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org#include "video_engine/vie_sync_module.h" 31470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 3203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.orgnamespace webrtc { 33470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 347c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.orgclass ChannelStatsObserver; 35470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass CriticalSectionWrapper; 36470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass Encryption; 37571a1c035be6b0afd7f357001bef775c51ec9364pwestin@webrtc.orgclass PacedSender; 38470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass ProcessThread; 39470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass RtpRtcp; 407c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.orgclass RtcpRttObserver; 417c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.orgclass StatsObserver; 42470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass ThreadWrapper; 43470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass VideoCodingModule; 44470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass VideoDecoder; 4503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.orgclass VideoRenderCallback; 46470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass ViEDecoderObserver; 47470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass ViEEffectFilter; 48470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass ViENetworkObserver; 49470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass ViERTCPObserver; 50470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass ViERTPObserver; 51470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comclass VoEVideoSync; 52470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 5303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.orgclass ViEChannel 5403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org : public VCMFrameTypeCallback, 5503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org public VCMReceiveCallback, 5603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org public VCMReceiveStatisticsCallback, 5703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org public VCMPacketRequestCallback, 5803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org public VCMFrameStorageCallback, 5903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org public RtcpFeedback, 6003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org public RtpFeedback, 6103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org public ViEFrameProviderBase { 6203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org public: 637c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org friend class ChannelStatsObserver; 647c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org 6503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ViEChannel(WebRtc_Word32 channel_id, 6603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 engine_id, 6703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_UWord32 number_of_cores, 6849888ce42858e308c7b0575697f06e2483a34daepwestin@webrtc.org ProcessThread& module_process_thread, 6949888ce42858e308c7b0575697f06e2483a34daepwestin@webrtc.org RtcpIntraFrameObserver* intra_frame_observer, 702853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org RtcpBandwidthObserver* bandwidth_observer, 719354cc965c04a0c79ea36622043751596a6fd015stefan@webrtc.org RemoteBitrateEstimator* remote_bitrate_estimator, 727c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org RtcpRttObserver* rtt_observer, 73571a1c035be6b0afd7f357001bef775c51ec9364pwestin@webrtc.org PacedSender* paced_sender, 744e8eabaab13d039efc4cf25b3510526f79dc5406stefan@webrtc.org RtpRtcp* default_rtp_rtcp, 754e8eabaab13d039efc4cf25b3510526f79dc5406stefan@webrtc.org bool sender); 7603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ~ViEChannel(); 7703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 7803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 Init(); 7903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 8003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Sets the encoder to use for the channel. |new_stream| indicates the encoder 8103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // type has changed and we should start a new RTP stream. 8203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetSendCodec(const VideoCodec& video_codec, 8303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool new_stream = true); 8403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetReceiveCodec(const VideoCodec& video_codec); 85f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetReceiveCodec(VideoCodec* video_codec); 8603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 RegisterCodecObserver(ViEDecoderObserver* observer); 8703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Registers an external decoder. |decoder_render| is set to true if the 8803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // decoder will do the rendering. If |decoder_render| is set,|render_delay| 8903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // indicates the time needed to decode and render a frame. 9003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 RegisterExternalDecoder(const WebRtc_UWord8 pl_type, 9103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org VideoDecoder* decoder, 9203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool decoder_render, 9303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 render_delay); 9403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 DeRegisterExternalDecoder(const WebRtc_UWord8 pl_type); 95f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 ReceiveCodecStatistics(WebRtc_UWord32* num_key_frames, 96f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_UWord32* num_delta_frames); 9703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_UWord32 DiscardedPackets() const; 9803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 994aee6b637d6830145396e7216ce15314c1feec92mflodman@webrtc.org // Returns the estimated delay in milliseconds. 1004aee6b637d6830145396e7216ce15314c1feec92mflodman@webrtc.org int ReceiveDelay() const; 1014aee6b637d6830145396e7216ce15314c1feec92mflodman@webrtc.org 10203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Only affects calls to SetReceiveCodec done after this call. 10303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 WaitForKeyFrame(bool wait); 10403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 10503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // If enabled, a key frame request will be sent as soon as there are lost 10603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // packets. If |only_key_frames| are set, requests are only sent for loss in 10703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // key frames. 10803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetSignalPacketLossStatus(bool enable, bool only_key_frames); 10903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 11003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetRTCPMode(const RTCPMethod rtcp_mode); 111f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetRTCPMode(RTCPMethod* rtcp_mode); 11203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetNACKStatus(const bool enable); 11303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetFECStatus(const bool enable, 11403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const unsigned char payload_typeRED, 11503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const unsigned char payload_typeFEC); 11603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetHybridNACKFECStatus(const bool enable, 11703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const unsigned char payload_typeRED, 11803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const unsigned char payload_typeFEC); 11903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetKeyFrameRequestMethod(const KeyFrameRequestMethod method); 12084dc3d134dca17df970e6a4a3e83543c0729799amflodman@webrtc.org bool EnableRemb(bool enable); 12190071dd64744cbdef19bf4383b8287dba77b0f9emflodman@webrtc.org int SetSendTimestampOffsetStatus(bool enable, int id); 12290071dd64744cbdef19bf4383b8287dba77b0f9emflodman@webrtc.org int SetReceiveTimestampOffsetStatus(bool enable, int id); 1235a7507f26af65222bfee8eb0d386ba68d48534e3mflodman@webrtc.org void SetTransmissionSmoothingStatus(bool enable); 12403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 EnableTMMBR(const bool enable); 12503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 EnableKeyFrameRequestCallback(const bool enable); 12603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 12703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Sets SSRC for outgoing stream. 128f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 SetSSRC(const uint32_t SSRC, 12903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const StreamType usage, 13003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const unsigned char simulcast_idx); 13103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 132d6ec386ff56a47b685c0a0d1ce0ce17ac7745ff9mflodman@webrtc.org // Gets SSRC for outgoing stream number |idx|. 133d6ec386ff56a47b685c0a0d1ce0ce17ac7745ff9mflodman@webrtc.org WebRtc_Word32 GetLocalSSRC(uint8_t idx, unsigned int* ssrc); 13403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 13503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Gets SSRC for the incoming stream. 136f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetRemoteSSRC(uint32_t* ssrc); 13703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 13803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Gets the CSRC for the incoming stream. 139f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetRemoteCSRC(uint32_t CSRCs[kRtpCsrcSize]); 14003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 14103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Sets the starting sequence number, must be called before StartSend. 14203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetStartSequenceNumber(WebRtc_UWord16 sequence_number); 14303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 14403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Sets the CName for the outgoing stream on the channel. 14539e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org WebRtc_Word32 SetRTCPCName(const char rtcp_cname[]); 14603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 14703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Gets the CName for the outgoing stream on the channel. 14839e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org WebRtc_Word32 GetRTCPCName(char rtcp_cname[]); 14903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 15003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Gets the CName of the incoming stream. 15139e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org WebRtc_Word32 GetRemoteRTCPCName(char rtcp_cname[]); 15203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 RegisterRtpObserver(ViERTPObserver* observer); 15303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 RegisterRtcpObserver(ViERTCPObserver* observer); 15403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SendApplicationDefinedRTCPPacket( 15503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord8 sub_type, 15603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_UWord32 name, 15703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord8* data, 15803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_UWord16 data_length_in_bytes); 15903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 16060c9bbd976a1eb11375de597dcacd4a9d81455e7perkj@webrtc.org // Returns statistics reported by the remote client in an RTCP packet. 161f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetSendRtcpStatistics(uint16_t* fraction_lost, 162f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* cumulative_lost, 163f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* extended_max, 164f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* jitter_samples, 165f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org int32_t* rtt_ms); 16603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 16760c9bbd976a1eb11375de597dcacd4a9d81455e7perkj@webrtc.org // Returns our localy created statistics of the received RTP stream. 168f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetReceivedRtcpStatistics(uint16_t* fraction_lost, 169f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* cumulative_lost, 170f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* extended_max, 171f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* jitter_samples, 172f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org int32_t* rtt_ms); 17303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 17403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Gets sent/received packets statistics. 175f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetRtpStatistics(uint32_t* bytes_sent, 176f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* packets_sent, 177f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* bytes_received, 178f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* packets_received) const; 179f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org void GetBandwidthUsage(uint32_t* total_bitrate_sent, 180f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* video_bitrate_sent, 181f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* fec_bitrate_sent, 182f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org uint32_t* nackBitrateSent) const; 183f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org int GetEstimatedReceiveBandwidth(uint32_t* estimated_bandwidth) const; 1843e820e5109cf34b2bdb216a637a92a6ce8904816mflodman@webrtc.org 18503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 StartRTPDump(const char file_nameUTF8[1024], 18603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org RTPDirections direction); 18703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 StopRTPDump(RTPDirections direction); 18803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 18903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Implements RtcpFeedback. 1902853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org // TODO(pwestin) Depricate this functionality. 19103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual void OnApplicationDataReceived(const WebRtc_Word32 id, 19203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord8 sub_type, 19303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord32 name, 19403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord16 length, 19503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord8* data); 196976a7e61c17047fdc27401a015a1be55749cc914stefan@webrtc.org virtual void OnSendReportReceived(const WebRtc_Word32 id, 197976a7e61c17047fdc27401a015a1be55749cc914stefan@webrtc.org const WebRtc_UWord32 senderSSRC, 198976a7e61c17047fdc27401a015a1be55749cc914stefan@webrtc.org uint32_t ntp_secs, 199976a7e61c17047fdc27401a015a1be55749cc914stefan@webrtc.org uint32_t ntp_frac, 200976a7e61c17047fdc27401a015a1be55749cc914stefan@webrtc.org uint32_t timestamp); 20103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Implements RtpFeedback. 20203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual WebRtc_Word32 OnInitializeDecoder( 20303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_Word32 id, 20403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_Word8 payload_type, 20539e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org const char payload_name[RTP_PAYLOAD_NAME_SIZE], 20603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const int frequency, 20703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord8 channels, 20803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord32 rate); 20903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual void OnPacketTimeout(const WebRtc_Word32 id); 21003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual void OnReceivedPacket(const WebRtc_Word32 id, 21103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const RtpRtcpPacketType packet_type); 21203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual void OnPeriodicDeadOrAlive(const WebRtc_Word32 id, 21303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const RTPAliveType alive); 21403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual void OnIncomingSSRCChanged(const WebRtc_Word32 id, 21503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord32 SSRC); 21603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual void OnIncomingCSRCChanged(const WebRtc_Word32 id, 21703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord32 CSRC, 21803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const bool added); 21903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 22003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetLocalReceiver(const WebRtc_UWord16 rtp_port, 22103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord16 rtcp_port, 22239e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org const char* ip_address); 223f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetLocalReceiver(WebRtc_UWord16* rtp_port, 224f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_UWord16* rtcp_port, 22539e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org char* ip_address) const; 22639e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org WebRtc_Word32 SetSendDestination(const char* ip_address, 22703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord16 rtp_port, 22803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord16 rtcp_port, 22903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord16 source_rtp_port, 23003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord16 source_rtcp_port); 23139e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org WebRtc_Word32 GetSendDestination(char* ip_address, 232f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_UWord16* rtp_port, 233f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_UWord16* rtcp_port, 234f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_UWord16* source_rtp_port, 235f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_UWord16* source_rtcp_port) const; 236f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetSourceInfo(WebRtc_UWord16* rtp_port, 237f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_UWord16* rtcp_port, 23839e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org char* ip_address, 23903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_UWord32 ip_address_length); 24003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 2418281e7dd4a8ac4b00aededd8ebf52e93f1d980e8pwestin@webrtc.org WebRtc_Word32 SetRemoteSSRCType(const StreamType usage, 2428281e7dd4a8ac4b00aededd8ebf52e93f1d980e8pwestin@webrtc.org const uint32_t SSRC) const; 24303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 24403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 StartSend(); 24503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 StopSend(); 24603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool Sending(); 24703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 StartReceive(); 24803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 StopReceive(); 24903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool Receiving(); 25003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 251f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 RegisterSendTransport(Transport* transport); 25203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 DeregisterSendTransport(); 25303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 25403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Incoming packet from external transport. 25503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 ReceivedRTPPacket(const void* rtp_packet, 25603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_Word32 rtp_packet_length); 25703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 25803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Incoming packet from external transport. 25903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 ReceivedRTCPPacket(const void* rtcp_packet, 26003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_Word32 rtcp_packet_length); 26103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 26203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 EnableIPv6(); 26303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool IsIPv6Enabled(); 26403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetSourceFilter(const WebRtc_UWord16 rtp_port, 26503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord16 rtcp_port, 26639e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org const char* ip_address); 267f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetSourceFilter(WebRtc_UWord16* rtp_port, 268f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_UWord16* rtcp_port, 26939e9659fc6a70f9416205c942d21deea060a8997leozwang@webrtc.org char* ip_address) const; 27003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 27103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetToS(const WebRtc_Word32 DSCP, const bool use_set_sockOpt); 272f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetToS(WebRtc_Word32* DSCP, bool* use_set_sockOpt) const; 27303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetSendGQoS(const bool enable, 27403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_Word32 service_type, 27503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord32 max_bitrate, 27603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_Word32 overrideDSCP); 277f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32 GetSendGQoS(bool* enabled, 278f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32* service_type, 279f5e99db10bcbf6e7997ac67089bf11f6aad4956cmflodman@webrtc.org WebRtc_Word32* overrideDSCP) const; 28003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 28103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Sets the maximum transfer unit size for the network link, i.e. including 28203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // IP, UDP and RTP headers. 28303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetMTU(WebRtc_UWord16 mtu); 28403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 28503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Returns maximum allowed payload size, i.e. the maximum allowed size of 28603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // encoded data in each packet. 28703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_UWord16 MaxDataPayloadLength() const; 28803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetMaxPacketBurstSize(WebRtc_UWord16 max_number_of_packets); 28903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetPacketBurstSpreadState(bool enable, 29003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord16 frame_periodMS); 29103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 29203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetPacketTimeoutNotification(bool enable, 29303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_UWord32 timeout_seconds); 29403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 RegisterNetworkObserver(ViENetworkObserver* observer); 29503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool NetworkObserverRegistered(); 29603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetPeriodicDeadOrAliveStatus( 29703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const bool enable, const WebRtc_UWord32 sample_time_seconds); 29803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 29903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SendUDPPacket(const WebRtc_Word8* data, 30003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord32 length, 30103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32& transmitted_bytes, 30203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool use_rtcp_socket); 30303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 30403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 EnableColorEnhancement(bool enable); 30503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 30684dc3d134dca17df970e6a4a3e83543c0729799amflodman@webrtc.org // Gets the modules used by the channel. 30784dc3d134dca17df970e6a4a3e83543c0729799amflodman@webrtc.org RtpRtcp* rtp_rtcp(); 30884dc3d134dca17df970e6a4a3e83543c0729799amflodman@webrtc.org 3097c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org StatsObserver* GetStatsObserver(); 3107c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org 31103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Implements VCMReceiveCallback. 3129fedff7c17a8d3dc46ed5b3207220f59a22391d6mikhal@webrtc.org virtual WebRtc_Word32 FrameToRender(I420VideoFrame& video_frame); // NOLINT 31303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 31403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Implements VCMReceiveCallback. 31503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual WebRtc_Word32 ReceivedDecodedReferenceFrame( 31603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord64 picture_id); 31703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 31803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Implements VCM. 31903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual WebRtc_Word32 StoreReceivedFrame( 32003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const EncodedVideoData& frame_to_store); 32103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 32203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Implements VideoReceiveStatisticsCallback. 32303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual WebRtc_Word32 ReceiveStatistics(const WebRtc_UWord32 bit_rate, 32403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord32 frame_rate); 32503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 32603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Implements VideoFrameTypeCallback. 3275e954814a8d73ae1d4095bf951cbbaf3e6b6f8eepwestin@webrtc.org virtual WebRtc_Word32 RequestKeyFrame(); 32803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 32903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Implements VideoFrameTypeCallback. 33003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual WebRtc_Word32 SliceLossIndicationRequest( 33103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const WebRtc_UWord64 picture_id); 33203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 33303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Implements VideoPacketRequestCallback. 33403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual WebRtc_Word32 ResendPackets(const WebRtc_UWord16* sequence_numbers, 33503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_UWord16 length); 33603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 33703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 RegisterExternalEncryption(Encryption* encryption); 33803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 DeRegisterExternalEncryption(); 33903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 34003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 SetVoiceChannel(WebRtc_Word32 ve_channel_id, 34103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org VoEVideoSync* ve_sync_interface); 34203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 VoiceChannel(); 34303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 34403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Implements ViEFrameProviderBase. 34503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org virtual int FrameCallbackChanged() {return -1;} 34603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 34703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 RegisterEffectFilter(ViEEffectFilter* effect_filter); 34803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 34903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ViEFileRecorder& GetIncomingFileRecorder(); 35003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org void ReleaseIncomingFileRecorder(); 35103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 35203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org protected: 35303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org static bool ChannelDecodeThreadFunction(void* obj); 35403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool ChannelDecodeProcess(); 35503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 3567c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org void OnRttUpdate(uint32_t rtt); 3577c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org 35803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org private: 35903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Assumed to be protected. 36003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 StartDecodeThread(); 36103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 StopDecodeThread(); 36203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 36303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 ProcessNACKRequest(const bool enable); 36403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 ProcessFECRequest(const bool enable, 36503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const unsigned char payload_typeRED, 36603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org const unsigned char payload_typeFEC); 36703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 36803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 channel_id_; 36903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_Word32 engine_id_; 37003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_UWord32 number_of_cores_; 37103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org WebRtc_UWord8 num_socket_threads_; 37203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org 37303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Used for all registered callbacks except rendering. 374d32c44738a034977b659bb4a2e76a97f027555e4mflodman@webrtc.org scoped_ptr<CriticalSectionWrapper> callback_cs_; 3752d1fc9bf17da046fedb88d27900f4d443142dbe6pwestin@webrtc.org scoped_ptr<CriticalSectionWrapper> rtp_rtcp_cs_; 376470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 3773c383abd2725c511071904a1914ca4a5933d1b22turaj@webrtc.org RtpRtcp* default_rtp_rtcp_; 3782853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org 3792853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org // Owned modules/classes. 3802853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org scoped_ptr<RtpRtcp> rtp_rtcp_; 38103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org std::list<RtpRtcp*> simulcast_rtp_rtcp_; 38203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org#ifndef WEBRTC_EXTERNAL_TRANSPORT 38303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org UdpTransport& socket_transport_; 384470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif 38503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org VideoCodingModule& vcm_; 3862853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org ViEReceiver vie_receiver_; 3872853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org ViESender vie_sender_; 3882853dde5201d9ddc284ce5efb9688f6340487acepwestin@webrtc.org ViESyncModule vie_sync_; 389470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 3907c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org // Helper to report call statistics. 3917c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org scoped_ptr<ChannelStatsObserver> stats_observer_; 3927c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org 39303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org // Not owned. 39403c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ProcessThread& module_process_thread_; 39503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ViEDecoderObserver* codec_observer_; 39603c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool do_key_frame_callbackRequest_; 39703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ViERTPObserver* rtp_observer_; 39803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ViERTCPObserver* rtcp_observer_; 39903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ViENetworkObserver* networkObserver_; 40049888ce42858e308c7b0575697f06e2483a34daepwestin@webrtc.org RtcpIntraFrameObserver* intra_frame_observer_; 4017c894b7cc718773f32d21985ff33a64f9e13946emflodman@webrtc.org RtcpRttObserver* rtt_observer_; 402571a1c035be6b0afd7f357001bef775c51ec9364pwestin@webrtc.org PacedSender* paced_sender_; 403571a1c035be6b0afd7f357001bef775c51ec9364pwestin@webrtc.org 404209442a56099e47e4a87fa6a556e34c782165df4pwestin@webrtc.org scoped_ptr<RtcpBandwidthObserver> bandwidth_observer_; 40503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool rtp_packet_timeout_; 40690071dd64744cbdef19bf4383b8287dba77b0f9emflodman@webrtc.org int send_timestamp_extension_id_; 40703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool using_packet_spread_; 408470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 40903c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org Transport* external_transport_; 410470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 41103c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool decoder_reset_; 41203c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool wait_for_key_frame_; 41303c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ThreadWrapper* decode_thread_; 414470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 41503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org Encryption* external_encryption_; 416470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 41703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ViEEffectFilter* effect_filter_; 41803c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org bool color_enhancement_; 419470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 42003c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org ViEFileRecorder file_recorder_; 421a6a9964346655963f7efb0e0c49a009fda020ef2mflodman@webrtc.org 422a6a9964346655963f7efb0e0c49a009fda020ef2mflodman@webrtc.org // User set MTU, -1 if not set. 423a6a9964346655963f7efb0e0c49a009fda020ef2mflodman@webrtc.org uint16_t mtu_; 4244e8eabaab13d039efc4cf25b3510526f79dc5406stefan@webrtc.org const bool sender_; 42503c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org}; 426470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 42703c06505fb7f928501a787580a4a7416d7af31eemflodman@webrtc.org} // namespace webrtc 428470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com 429e06ca3cef68cec1fa97b3d476c99d98c68f04ff2mflodman@webrtc.org#endif // WEBRTC_VIDEO_ENGINE_VIE_CHANNEL_H_ 430