| Index: talk/session/media/bundlefilter.cc
|
| diff --git a/talk/session/media/bundlefilter.cc b/talk/session/media/bundlefilter.cc
|
| index b47d47fb27587b758338f41cf0b08d813b60f9c8..670befeb7d864ae9e94aa57ebb4ed56836817458 100755
|
| --- a/talk/session/media/bundlefilter.cc
|
| +++ b/talk/session/media/bundlefilter.cc
|
| @@ -32,78 +32,29 @@
|
|
|
| namespace cricket {
|
|
|
| -static const uint32_t kSsrc01 = 0x01;
|
| -
|
| BundleFilter::BundleFilter() {
|
| }
|
|
|
| BundleFilter::~BundleFilter() {
|
| }
|
|
|
| -bool BundleFilter::DemuxPacket(const char* data, size_t len, bool rtcp) {
|
| - // For rtp packets, we check whether the payload type can be found.
|
| - // For rtcp packets, we check whether the ssrc can be found or is the special
|
| - // value 1 except for SDES packets which always pass through. Plus, if
|
| - // |streams_| is empty, we will allow all rtcp packets pass through provided
|
| - // that they are valid rtcp packets in case that they are for early media.
|
| - if (!rtcp) {
|
| - // It may not be a RTP packet (e.g. SCTP).
|
| - if (!IsRtpPacket(data, len))
|
| - return false;
|
| -
|
| - int payload_type = 0;
|
| - if (!GetRtpPayloadType(data, len, &payload_type)) {
|
| - return false;
|
| - }
|
| - return FindPayloadType(payload_type);
|
| +bool BundleFilter::DemuxPacket(const uint8_t* data, size_t len) {
|
| + // For RTP packets, we check whether the payload type can be found.
|
| + if (!IsRtpPacket(data, len)) {
|
| + return false;
|
| }
|
|
|
| - // Rtcp packets using ssrc filter.
|
| - int pl_type = 0;
|
| - uint32_t ssrc = 0;
|
| - if (!GetRtcpType(data, len, &pl_type)) return false;
|
| - if (pl_type == kRtcpTypeSDES) {
|
| - // SDES packet parsing not supported.
|
| - LOG(LS_INFO) << "SDES packet received for demux.";
|
| - return true;
|
| - } else {
|
| - if (!GetRtcpSsrc(data, len, &ssrc)) return false;
|
| - if (ssrc == kSsrc01) {
|
| - // SSRC 1 has a special meaning and indicates generic feedback on
|
| - // some systems and should never be dropped. If it is forwarded
|
| - // incorrectly it will be ignored by lower layers anyway.
|
| - return true;
|
| - }
|
| + int payload_type = 0;
|
| + if (!GetRtpPayloadType(data, len, &payload_type)) {
|
| + return false;
|
| }
|
| - // Pass through if |streams_| is empty to allow early rtcp packets in.
|
| - return !HasStreams() || FindStream(ssrc);
|
| + return FindPayloadType(payload_type);
|
| }
|
|
|
| void BundleFilter::AddPayloadType(int payload_type) {
|
| payload_types_.insert(payload_type);
|
| }
|
|
|
| -bool BundleFilter::AddStream(const StreamParams& stream) {
|
| - if (GetStreamBySsrc(streams_, stream.first_ssrc())) {
|
| - LOG(LS_WARNING) << "Stream already added to filter";
|
| - return false;
|
| - }
|
| - streams_.push_back(stream);
|
| - return true;
|
| -}
|
| -
|
| -bool BundleFilter::RemoveStream(uint32_t ssrc) {
|
| - return RemoveStreamBySsrc(&streams_, ssrc);
|
| -}
|
| -
|
| -bool BundleFilter::HasStreams() const {
|
| - return !streams_.empty();
|
| -}
|
| -
|
| -bool BundleFilter::FindStream(uint32_t ssrc) const {
|
| - return ssrc == 0 ? false : GetStreamBySsrc(streams_, ssrc) != nullptr;
|
| -}
|
| -
|
| bool BundleFilter::FindPayloadType(int pl_type) const {
|
| return payload_types_.find(pl_type) != payload_types_.end();
|
| }
|
|
|