KR20160126030A - Voip 데이터의 효율적인 믹싱 - Google Patents

Voip 데이터의 효율적인 믹싱 Download PDF

Info

Publication number
KR20160126030A
KR20160126030A KR1020167026251A KR20167026251A KR20160126030A KR 20160126030 A KR20160126030 A KR 20160126030A KR 1020167026251 A KR1020167026251 A KR 1020167026251A KR 20167026251 A KR20167026251 A KR 20167026251A KR 20160126030 A KR20160126030 A KR 20160126030A
Authority
KR
South Korea
Prior art keywords
media
users
user
transmitting
delivering
Prior art date
Application number
KR1020167026251A
Other languages
English (en)
Inventor
레이몬드 에드워드 오지
리차드 잭 스페이어
랜섬 로이드 리차슨
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20160126030A publication Critical patent/KR20160126030A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • H04L12/1827Network arrangements for conference optimisation or adaptation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/06Message adaptation to terminal or network requirements
    • H04L51/066Format adaptation, e.g. format conversion or compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/10Multimedia information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/56Arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities
    • H04M3/568Arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities audio processing specific to telephonic conferencing, e.g. spatial distribution, mixing of participants
    • H04M3/569Arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities audio processing specific to telephonic conferencing, e.g. spatial distribution, mixing of participants using the instant speaker's algorithm
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)

Abstract

복수의 사용자들 사이의 통신 세션을 모니터링하기 위한 방법, 컴퓨터 프로그램 제품, 및 컴퓨터 시스템이 제공된다. 복수의 사용자들 중 적어도 2명의 사용자들이 통신 세션 내에서 미디어를 전송하고 있는지 여부가 결정된다. 복수의 사용자들 중 제 1 사용자만이 미디어를 전송하고 있는 경우, 미디어는 제 1 기술을 통해 복수의 사용자들에게 전달된다. 복수의 사용자들 중 제 1 사용자 및 제 2 사용자가 미디어를 전송하고 있는 경우, 미디어는 제 2 기술을 통해 복수의 사용자들에게 전달된다.

Description

VOIP 데이터의 효율적인 믹싱{EFFICIENTLY MIXING VOIP DATA}
관련 케이스들
본 출원은 2014년 2월 24일자로 출원된 미국 가특허 출원 번호 61/943,666호에 대한 이익을 주장하며, 이러한 출원의 내용이 본원에 참조로서 포함된다.
배경기술
일반적으로, 전통적인 인터넷 음성 통신(Voice-Over-IP; VoIP) 시스템들은 주로, 안정적인 광대역 인터넷 연결들을 통해 실행될 것으로 예상될 수 있었던 피어 투 피어(Peer to Peer; P2P) 통신에 맞추어 구축될 수 있었다. VoIP 회의들은 또한 N개의 종점(endpoint)들(예를 들어, 통신 세션 내의 3개 이상의 컴퓨팅 디바이스들)을 포함할 수 있다. 일부 VoIP 시스템들은, 예를 들어, 메시 접근방식, 허브-앤-스포크(hub-and-spoke) 모델 접근방식뿐만 아니라 다른 접근방식들을 이용할 수 있다. 이러한 예시적인 접근방식들의 각각이 여전히 사용자에 대하여 이상적인 것보다 부족한 경험을 야기할 수 있다.
예시적인 일 구현예에 있어서, 하나 이상의 컴퓨팅 디바이스들에 의해 수행되는 방법은, 비제한적으로, 컴퓨팅 디바이스에 의해 복수의 사용자들 사이의 통신 세션을 모니터링하는 단계를 포함할 수 있다. 복수의 사용자들 중 적어도 2명의 사용자들이 통신 세션 내에서 미디어(media)를 전송하고 있는지 여부가 결정될 수 있다. 복수의 사용자들 중 제 1 사용자만이 미디어를 전송하고 있는 경우, 미디어는 제 1 기술을 통해 복수의 사용자들에게 전달될 수 있다. 복수의 사용자들 중 제 1 사용자 및 제 2 사용자가 미디어를 전송하고 있는 경우, 미디어는 제 2 기술을 통해 복수의 사용자들에게 전달될 수 있다.
다음의 예시적인 특징들 중 하나 이상이 포함될 수 있다. 통신 세션 내에서 복수의 사용자들 중 적어도 2명의 사용자들이 미디어를 전송하고 있는지 여부를 결정하는 단계는, 미리 결정된 시간의 간격(interval) 동안 통신 세션 내에서 복수의 사용자들 중 적어도 2명의 사용자들이 미디어를 동시에 전송하고 있는지 여부를 결정하는 단계를 포함할 수 있다. 제 1 기술을 통해 미디어를 복수의 사용자들에게 전달하는 단계는, 패킷을 디코딩 및 인코딩하지 않으면서 미디어의 적어도 일 부분을 포함하는 패킷을 복수의 사용자들에게 전달하는 단계를 포함할 수 있다. 제 2 기술을 통해 미디어를 복수의 사용자들에게 전달하는 단계는, 미리 결정된 수의 시간 간격들 동안 대기하는 단계를 포함할 수 있으며, 미리 결정된 수의 시간 간격들 동안 제 1 사용자 및 제 2 사용자로부터 수신된 미디어를 믹싱하는 단계를 포함할 수 있다. 믹싱된 미디어를 복수의 사용자들에게 전달하는 단계는, 미리 결정된 수의 시간 간격들 후까지 지연될 수 있다. 믹싱된 미디어는 미리 결정된 수의 시간 간격들 이후의 다음 시간 간격 동안 복수의 사용자들에게 전송될 수 있다. 다음 시간 간격에서 복수의 사용자들에게 전송되는 믹싱된 미디어는 단일 시간 간격 동안 전송되는 복수의 패킷들 내에 포함된 미디어의 복수의 시간 간격들을 포함할 수 있다. 제 1 사용자 및 제 2 사용자로부터 수신된 미디어를 믹싱하는 단계는, 제 1 사용자에게 믹싱된 미디어를 전달할 때 믹싱된 미디어 내에서 제 1 사용자로부터 전송된 미디어를 배제하는 단계를 포함할 수 있다. 미디어는, 제 1 사용자 및 제 2 사용자가 통신 세션에 연결되어 있을 때에만 제 1 기술을 통해 제 1 사용자 및 제 2 사용자에게 전달될 수 있다. 제 2 기술을 통해 복수의 사용자들에게 미디어를 전달하는 단계는 복수의 사용자들의 각각보다 더 적은 사용자들에 대한 인코딩 동작을 실행하는 단계를 포함할 수 있다. 제 2 기술을 통해 복수의 사용자들에게 미디어를 전달하는 단계는, 각각의 채널이 개별적인 사용자의 인코딩되고 암호화된 미디어 스트림인 멀티-채널 미디어 패킷을 전송하는 단계를 포함할 수 있다.
다른 예시적인 구현예에 있어서, 컴퓨팅 시스템은, 비제한적으로 복수의 사용자들 사이의 통신 세션을 모니터링하는 것을 포함할 수 있는 동작들을 수행하도록 구성된 프로세서 및 메모리를 포함한다. 복수의 사용자들 중 적어도 2명의 사용자들이 통신 세션 내에서 미디어를 전송하고 있는지 여부가 결정될 수 있다. 복수의 사용자들 중 제 1 사용자만이 미디어를 전송하고 있는 경우, 미디어는 제 1 기술을 통해 복수의 사용자들에게 전달될 수 있다. 복수의 사용자들 중 제 1 사용자 및 제 2 사용자가 미디어를 전송하고 있는 경우, 미디어는 제 2 기술을 통해 복수의 사용자들에게 전달될 수 있다.
다음의 예시적인 특징들 중 하나 이상이 포함될 수 있다. 통신 세션 내에서 복수의 사용자들 중 적어도 2명의 사용자들이 미디어를 전송하고 있는지 여부를 결정하는 것은, 미리 결정된 시간의 간격 동안 통신 세션 내에서 복수의 사용자들 중 적어도 2명의 사용자들이 미디어를 동시에 전송하고 있는지 여부를 결정하는 것을 포함할 수 있다. 제 1 기술을 통해 미디어를 복수의 사용자들에게 전달하는 것은, 패킷을 디코딩 및 인코딩하지 않으면서 미디어의 적어도 일 부분을 포함하는 패킷을 복수의 사용자들에게 전달하는 것을 포함할 수 있다. 제 2 기술을 통해 미디어를 복수의 사용자들에게 전달하는 것은, 미리 결정된 수의 시간 간격들 동안 대기하는 것을 포함할 수 있으며, 미리 결정된 수의 시간 간격들 동안 제 1 사용자 및 제 2 사용자로부터 수신된 미디어를 믹싱하는 것을 포함할 수 있다. 믹싱된 미디어를 복수의 사용자들에게 전달하는 것은, 미리 결정된 수의 시간 간격들 후까지 지연될 수 있다. 믹싱된 미디어는 미리 결정된 수의 시간 간격들 이후의 다음 시간 간격 동안 복수의 사용자들에게 전송될 수 있다. 다음 시간 간격에서 복수의 사용자들에게 전송되는 믹싱된 미디어는 단일 시간 간격 동안 전송되는 복수의 패킷들 내에 포함된 미디어의 복수의 시간 간격들을 포함할 수 있다. 제 1 사용자 및 제 2 사용자로부터 수신된 미디어를 믹싱하는 것은, 제 1 사용자에게 믹싱된 미디어를 전달할 때 믹싱된 미디어 내에서 제 1 사용자로부터 전송된 미디어를 배제하는 것을 포함할 수 있다. 미디어는, 제 1 사용자 및 제 2 사용자가 통신 세션에 연결되어 있을 때에만 제 1 기술을 통해 제 1 사용자 및 제 2 사용자에게 전달될 수 있다. 제 2 기술을 통해 복수의 사용자들에게 미디어를 전달하는 것은 복수의 사용자들의 각각보다 더 적은 사용자들에 대한 인코딩 동작을 실행하는 것을 포함할 수 있다. 제 2 기술을 통해 복수의 사용자들에게 미디어를 전달하는 것은, 각각의 채널이 개별적인 사용자의 인코딩되고 암호화된 미디어 스트림인 멀티-채널 미디어 패킷을 전송하는 것을 포함할 수 있다.
다른 예시적인 구현예에 있어서, 컴퓨터 프로그램 제품은 그 상에 저장된 복수의 명령어들을 갖는 컴퓨터 판독가능 저장 매체 상에 존재한다. 프로세서에 의해 실행될 때, 명령어들은 프로세서로 하여금, 비제한적으로 복수의 사용자들 사이의 통신 세션을 모니터링하는 것을 포함할 수 있는 동작들을 수행하게 한다. 복수의 사용자들 중 적어도 2명의 사용자들이 통신 세션 내에서 미디어를 전송하고 있는지 여부가 결정될 수 있다. 복수의 사용자들 중 제 1 사용자만이 미디어를 전송하고 있는 경우, 미디어는 제 1 기술을 통해 복수의 사용자들에게 전달될 수 있다. 복수의 사용자들 중 제 1 사용자 및 제 2 사용자가 미디어를 전송하고 있는 경우, 미디어는 제 2 기술을 통해 복수의 사용자들에게 전달될 수 있다.
다음의 예시적인 특징들 중 하나 이상이 포함될 수 있다. 통신 세션 내에서 복수의 사용자들 중 적어도 2명의 사용자들이 미디어를 전송하고 있는지 여부를 결정하는 것은, 미리 결정된 시간의 간격 동안 통신 세션 내에서 복수의 사용자들 중 적어도 2명의 사용자들이 미디어를 동시에 전송하고 있는지 여부를 결정하는 것을 포함할 수 있다. 제 1 기술을 통해 미디어를 복수의 사용자들에게 전달하는 것은, 패킷을 디코딩 및 인코딩하지 않으면서 미디어의 적어도 일 부분을 포함하는 패킷을 복수의 사용자들에게 전달하는 것을 포함할 수 있다. 제 2 기술을 통해 미디어를 복수의 사용자들에게 전달하는 것은, 미리 결정된 수의 시간 간격들 동안 대기하는 것을 포함할 수 있으며, 미리 결정된 수의 시간 간격들 동안 제 1 사용자 및 제 2 사용자로부터 수신된 미디어를 믹싱하는 것을 포함할 수 있다. 믹싱된 미디어를 복수의 사용자들에게 전달하는 것은, 미리 결정된 수의 시간 간격들 후까지 지연될 수 있다. 믹싱된 미디어는 미리 결정된 수의 시간 간격들 이후의 다음 시간 간격 동안 복수의 사용자들에게 전송될 수 있다. 다음 시간 간격에서 복수의 사용자들에게 전송되는 믹싱된 미디어는 단일 시간 간격 동안 전송되는 복수의 패킷들 내에 포함된 미디어의 복수의 시간 간격들을 포함할 수 있다. 제 1 사용자 및 제 2 사용자로부터 수신된 미디어를 믹싱하는 것은, 제 1 사용자에게 믹싱된 미디어를 전달할 때 믹싱된 미디어 내에서 제 1 사용자로부터 전송된 미디어를 배제하는 것을 포함할 수 있다. 미디어는, 제 1 사용자 및 제 2 사용자가 통신 세션에 연결되어 있을 때에만 제 1 기술을 통해 제 1 사용자 및 제 2 사용자에게 전달될 수 있다. 제 2 기술을 통해 복수의 사용자들에게 미디어를 전달하는 것은 복수의 사용자들의 각각보다 더 적은 사용자들에 대한 인코딩 동작을 실행하는 것을 포함할 수 있다. 제 2 기술을 통해 복수의 사용자들에게 미디어를 전달하는 것은, 각각의 채널이 개별적인 사용자의 인코딩되고 암호화된 미디어 스트림인 멀티-채널 미디어 패킷을 전송하는 것을 포함할 수 있다.
하나 이상의 예시적인 구현예들의 세부사항들이 첨부된 도면들 및 이하의 설명에서 기술된다. 다른 특징들 및 이점들이 설명, 도면들, 및 청구항들로부터 명백해질 것이다.
도 1은 본 개시의 하나 이상의 예시적인 구현예들에 따른 분산형 컴퓨팅 네트워크에 결합된 송신 프로세스의 예시적인 개략도이다.
도 2는 본 개시의 하나 이상의 예시적인 구현예들에 따른 도 1의 클라이언트 전자 디바이스의 예시적인 개략도이다.
도 3은 본 개시의 하나 이상의 예시적인 구현예들에 따른 도 1의 송신 프로세스의 예시적인 순서도이다.
도 4는 본 개시의 하나 이상의 예시적인 구현예들에 따른 도 1의 송신 프로세스의 2개의 예시적인 송신 시나리오들의 예시적인 개략도이다.
다양한 도면들 내에서 유사한 참조 심볼들이 유사한 엘리먼트들을 나타낸다.
시스템 개괄:
당업자에 의해 이해될 바와 같이, 본 개시는 방법, 시스템 또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 본 개시는 전적으로 하드웨어 구현예, 전적으로 (펌웨어, 레지던트(resident) 소프트웨어, 마이크로-코드 등을 포함하는) 소프트웨어 구현예 또는, 그 모두가 본원에서 전반적으로 "회로", "모듈" 또는 "시스템"으로 지칭될 수 있는 하드웨어 및 소프트웨어 측면들을 조합하는 구현예의 형태를 취할 수 있다. 또한, 본 개시는 매체 내에 구현된 컴퓨터-사용가능 프로그램 코드를 갖는 컴퓨터-사용가능 저장 매체 상의 컴퓨터 프로그램 제품의 형태를 취할 수 있다.
임의의 적절한 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체(또는 매체들)이 사용될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 판독가능 신호 매체 또는 컴퓨터 판독가능 저장 매체일 수 있다. (컴퓨팅 디바이스 또는 클라이언트 전자 디바이스와 연관된 저장 디바이스를 포함하는) 컴퓨터-사용가능, 또는 컴퓨터-판독가능, 저장 매체는, 예를 들어, 비제한적으로, 전자, 자기, 광, 전자기, 적외선, 또는 반도체 시스템, 장치, 또는 디바이스, 또는 전술한 것들의 임의의 적절한 조합일 수 있다. 컴퓨터-판독가능 매체의 더 구체적인 예들(대략적인 리스트)은 하기의 것을 포함할 수 있다: 하나 이상의 와이어들을 갖는 전기적 연결, 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(random access memory; RAM), 판독-전용 메모리(read-only memory; ROM), 소거가능 프로그램가능 판독-전용 메모리(erasable programmable read-only memory; EPROM 또는 플래시 메모리), 광 섬유, 휴대용 콤팩트 디스크 판독-전용 메모리(compact disc read-only memory; CD-ROM), 광 저장 디바이스, 디지털 다기능 디스크(digital versatile disk; DVD), 정적 랜덤 액세스 메모리(static random access memory; SRAM), 메모리 스틱, 플로피 디스크, 기계적으로 인코딩된 디바이스 예컨대 펀치-카드 또는 그 상에 기록된 명령어들을 갖는 홈 내의 돌출된 구조체들, 인터넷 또는 인트라넷을 지원하는 것들과 같은 매체, 또는 자기 저장 디바이스. 컴퓨터-사용가능 또는 컴퓨터-판독가능 매체는 심지어, 필요한 경우, 거기에 프로그램이 저장되거나, 스캐닝되거나, 컴파일되거나, 번역되거나 또는 달리 적절한 방식으로 프로세싱되고, 그런 다음 컴퓨터 메모리 내에 저장되는 적절한 매체일 수 있다. 본 개시의 맥락에서, 컴퓨터-사용가능 또는 컴퓨터-판독가능 저장 매체는, 명령어 실행 시스템, 장치, 또는 디바이스에 의한 또는 이와 관련된 사용을 위한 프로그램을 포함하거나 또는 저장하는 임의의 유형적인 매체일 수 있다.
컴퓨터 판독가능 신호 매체는, 예를 들어, 반송파의 부분으로서 또는 기저대역 내에, 그 안에 구현된 컴퓨터 판독가능 프로그램 코드를 갖는 전파되는 데이터 신호를 포함할 수 있다. 이러한 전파되는 신호는, 비제한적으로 전기-자기, 광, 또는 이들의 임의의 적절한 조합을 포함하는 다양한 형태들 중 임의의 형태를 취할 수 있다. 컴퓨터 판독가능 프로그램 코드는, 비제한적으로 인터넷, 와이어라인, 광 섬유 케이블, RF, 등을 포함하는 임의의 적절한 매체를 사용하여 송신될 수 있다. 컴퓨터 판독가능 신호 매체는, 명령어 실행 시스템, 장치, 또는 디바이스에 의한 또는 이와 관련된 사용을 위한 프로그램을 통신, 전파, 또는 전달할 수 있는, 컴퓨터 판독가능 저장 매체가 아닌 임의의 컴퓨터 판독가능 매체일 수 있다.
본 개시의 동작들을 수행하기 위한 컴퓨터 프로그램 코드는, 어셈블러 명령어들, 명령어-세트-아키텍처(instruction-set-architecture; ISA) 명령어들, 머신 명령어들, 머신 의존 명령어들, 마이크로코드, 펌웨어 명령어들, 상태-세팅 데이터일 수 있거나, 또는, 객체 지향 프로그래밍 언어 예컨대 Java?, Smalltalk, C++ 또는 이와 유사한 것을 포함하는 하나 이상의 프로그래밍 언어들의 임의의 조합으로 작성된 소스코드 또는 객체 코드일 수 있다. Java 및 모든 Java-기반 상표들 및 로고들은 Oracle 및/또는 그것의 자회사들의 상표들 또는 등록 상표들이다. 그러나, 본 개시의 동작들을 수행하기 위한 컴퓨터 프로그램 코드는 또한, Javascript, PERL, 또는 Python과 같은 스크립팅 언어들뿐만 아니라, "C" 프로그래밍 언어, PASCAL, 또는 유사한 프로그래밍 언어들과 같은 통상적인 절차적 프로그래밍 언어들로 작성될 수 있다. 프로그램 코드는, 전적으로 사용자의 컴퓨터 상에서, 부분적으로 사용자의 컴퓨터 상에서, 독립형 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터 상에서 그리고 부분적으로 원격 컴퓨터 상에서, 또는 전적으로 원격 컴퓨터 또는 서버 상에서 실행될 수 있다. 후자의 시나리오에 있어, 원격 컴퓨터가 근거리 네트워크(local area network; LAN) 또는 광역 네트워크(wide area network; WAN)를 통해 사용자의 컴퓨터에 연결될 수 있거나, 또는 연결이 (예를 들어, 인터넷 서비스 제공자를 사용하여 인터넷을 통해) 외부 컴퓨터에 대해 이루어질 수 있다. 일부 구현예들에 있어서, 예를 들어, 프로그램가능 논리 회로, 필드-프로그램가능 게이트 어레이(field-programmable gate array; FPGA)들, 마이크로-제어기 유닛(micro-controller unit; MCU)들, 프로그램 가능 논리 어레이(programmable logic array; PLA)들을 포함하는 전자 회로는, 본 개시의 측면들을 수행하기 위하여, 전자 회로를 맞춤화(personalize)하기 위하여 컴퓨터 판독가능 프로그램 명령어들의 상태 정보를 사용함으로써 컴퓨터 판독가능 프로그램 명령어들/코드를 실행할 수 있다.
도면들 내의 순서도 및 블록도들이 본 개시의 다양한 구현예들에 따른 장치(시스템들), 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현예들의 아키텍처, 기능성, 및 동작을 예시한다. 순서도 및/또는 블록도들의 각각의 블록, 및 순서도 및/또는 블록도들의 블록들의 조합들이, 명시된 논리적 기능(들)/행위(들)을 구현하기 위한 하나 이상의 실행가능 컴퓨터 프로그램 명령어들을 포함하는 코드의 모듈, 세그먼트, 또는 부분을 나타낼 수 있다는 것이 이해될 것이다. 이러한 컴퓨터 프로그램 명령어들은 범용 컴퓨터, 전용 컴퓨터, 또는 머신을 생성하기 위한 다른 프로그램 가능 데이터 프로세싱 장치의 프로세서에 제공될 수 있으며, 그 결과 컴퓨터 또는 다른 프로그램가능 데이터 프로세싱 장치를 통해 실행될 수 있는 컴퓨터 프로그램 명령어들이 순서도 및/또는 블록도 블록 또는 블록들 또는 이들의 조합들 내에 명시된 기능들/행위들 중 하나 이상을 구현하기 위한 능력을 생성한다. 일부 대안적인 구현예들에 있어서, 블록(들) 내에 표시된 기능들이 도면들에 표시된 것과 상이한 순서로 일어날 수 있다는 것을 주의해야 한다. 수반되는 기능성에 따라, 예를 들어, 연속적으로 도시된 2개의 블록들이, 실제로는, 실질적으로 동시에 실행될 수 있거나, 또는, 블록들이 때때로 역순으로 실행될 수도 있다.
이러한 컴퓨터 프로그램 명령어들은 또한, 컴퓨터 또는 다른 프로그램가능 데이터 프로세싱 장치가 특정한 방식으로 기능하게 명령할 수 있는 컴퓨터-판독가능 메모리 내에 저장될 수 있으며, 그 결과 컴퓨터-판독가능 메모리 내에 저장된 명령어들이, 순서도 및/또는 블록도 블록 또는 블록들 또는 이들의 조합들에 명시된 기능/행위를 구현하는 명령어 수단을 포함하는 제조 물품을 생성한다.
컴퓨터 프로그램 명령어들은 또한, 컴퓨터 또는 다른 프로그램가능 장치 상에서 실행되는 명령어들이 순서도 및/또는 블록도 블록 또는 블록들 또는 이들의 조합들에 명시된 (반드시 특정 순서로는 아니게) 기능들/행위들을 구현하기 위한 단계들을 제공할 수 있도록, 컴퓨터 구현형 프로세스를 생성하기 위하여 일련의 단계들이 수행되게 하기 위하여 컴퓨터 또는 다른 프로그램가능 데이터 프로세싱 장치 상에 로딩될 수 있다.
이제 도 1을 참조하면, 네트워크(예를 들어, 네트워크(14))(예를 들어, 인터넷 또는 근거리 네트워크)에 연결될 수 있는 컴퓨터(예를 들어, 컴퓨터(12))에 의해 실행될 수 있으며 컴퓨터 상에 존재할 수 있는 송신 프로세스(10)가 도시된다. 컴퓨터(12)(및/또는 이하에서 언급되는 클라이언트 전자 디바이스들 중 하나 이상)의 예들은 비제한적으로, 개인용 컴퓨터(들), 랩탑 컴퓨터(들), 모바일 컴퓨팅 디바이스(들), 서버 컴퓨터, 일련의 서버 컴퓨터들, 메인프레임 컴퓨터(들), 또는 컴퓨팅 클라우드(들)를 포함할 수 있다. 컴퓨터(12)는 운영 시스템, 예를 들어, 비제한적으로, Microsoft? Windows?; Mac? OS X?; Red Hat? Linux?, 또는 맞춤형(custom) 운영 시스템을 실행할 수 있다. (Microsoft 및 Windows는 미국, 다른 나라들 또는 이들 모두에서의 Microsoft사의 등록상표들이며; Mac 및 OS X는 미국, 다른 나라들 또는 이들 모두에서의 Apple사의 등록상표들이고; Red Hat은 미국, 다른 나라들 또는 이들 모두에서의 Red Hat사의 등록상표이며; 및 Linux는 미국, 다른 나라들 또는 이들 모두에서의 Linus Torvalds의 등록상표이다).
이하에서 더 상세하게 논의될 바와 같이, 송신 프로세스(10)는 복수의 사용자들 사이의 통신 세션을 모니터링할 수 있다. 복수의 사용자들 중 적어도 2명의 사용자들이 통신 세션 내에서 미디어(예를 들어, 패킷(들)(P)(17))를 전송하고 있는지 여부가 결정될 수 있다. 복수의 사용자들 중 제 1 사용자만이 미디어를 전송하고 있는 경우, 미디어는 제 1 기술을 통해 복수의 사용자들에게 전달될 수 있다. 복수의 사용자들 중 제 1 사용자 및 제 2 사용자가 미디어를 전송하고 있는 경우, 미디어는 제 2 기술을 통해 복수의 사용자들에게 전달될 수 있다.
컴퓨터(12)에 결합된 저장 디바이스(16) 상에 저장될 수 있는 송신 프로세스(10)의 명령어 세트들 및 서브루틴들은 컴퓨터(12) 내에 포함된 하나 이상의 프로세서들(미도시) 및 하나 이상의 메모리 아키텍처들(미도시)에 의해 실행될 수 있다. 저장 디바이스(16)는 비제한적으로: 하드 디스크 드라이브; 플래시 드라이브, 테이프 드라이브; 광 드라이브; RAID 어레이; 랜덤 액세스 메모리(RAM); 및 판독-전용 메모리(ROM)를 포함할 수 있다.
네트워크(14)는 하나 이상의 2차 네트워크들(예를 들어, 네트워크(18))에 연결될 수 있으며, 이들의 예들은 비제한적으로: 예를 들어, 근거리 네트워크; 광역 네트워크; 또는 인트라넷을 포함할 수 있다.
컴퓨터(12)는 데이터 저장부, 예컨대 데이터베이스(예를 들어, 관계형 데이터베이스, 객체-지향 데이터베이스, 트리플스토어(triplestore) 데이터베이스, 등)를 포함할 수 있으며, 이는 컴퓨터(12)에 결합된 저장 디바이스(16)와 같은 임의의 적절한 메모리 위치 내에 위치될 수 있다. 본 개시의 전체에 걸쳐 설명되는 임의의 데이터가 데이터 저장부 내에 저장될 수 있다. 일부 구현예들에 있어서, 컴퓨터(12)는, 이상에서 언급된 관계형 데이터베이스와 같은 하나 이상의 데이터베이스들에 대한 다중사용자 액세스를 제공하기 위하여, 비제한적으로 "My Structured Query Language"(MySQL?)와 같은 데이터베이스 관리 시스템을 사용할 수 있다. 데이터 저장부는 또한, 예를 들어, 플랫(flat) 파일 데이터베이스 또는 XML 데이터베이스와 같은 맞춤형 데이터베이스일 수 있다. 임의의 다른 유형(들)의 데이터 저장부 구조 및/또는 조직화가 또한 사용될 수 있다. 송신 프로세스(10)는, 클라이언트 애플리케이션들(22, 24, 26, 28)을 통해 액세스되는 이상에서 언급된 데이터 저장부 및/또는 애플릿(applet)/애플리케이션과 인터페이스하는 독립형 애플리케이션, 데이터 저장부의 컴포넌트일 수 있다. 이상에서 언급된 데이터 저장부는, 전체적으로 또는 부분적으로, 클라우드 컴퓨팅 토폴로지(topology) 내에 분산될 수 있다. 이러한 방식으로, 컴퓨터(12) 및 저장 디바이스(16)가 복수의 디바이스들을 나타낼 수 있으며, 이들이 또한 네트워크 전체에 걸쳐 분산될 수 있다.
컴퓨터(12)는 협업(collaboration) 애플리케이션(예를 들어, 협업 애플리케이션(20))을 실행할 수 있으며, 이의 예들은, 비제한적으로, 예를 들어, 웹 회의 애플리케이션, 비디오 회의 애플리케이션, 인터넷 음성 통신(voice-over-IP) 애플리케이션, 인터넷 비디오 통신(video-over-IP) 애플리케이션, 인스턴트 메시징(Instant Messaging; IM)/'채팅" 애플리케이션, 단문 메시징 서비스(short messaging service; SMS)/멀티미디어 메시징 서비스(multimedia messaging service; MMS) 애플리케이션, 또는 가상 미팅 및/또는 원격 협업을 가능하게 하는 다른 애플리케이션을 포함할 수 있다. 송신 프로세스(10) 및/또는 협업 애플리케이션(20)은 클라이언트 애플리케이션들(22, 24, 26, 28)을 통해 액세스될 수 있다. 송신 프로세스(10)는 독립형 애플리케이션일 수 있거나, 또는 협업 애플리케이션(20), 협업 애플리케이션(20)의 컴포넌트, 및/또는 클라이언트 애플리케이션들(22, 24, 26, 28) 중 하나 이상과 상호작용할 수 있고 그리고/또는 그 내부에서 실행될 수 있는 애플릿/애플리케이션/스크립트/확장부일 수 있다. 협업 애플리케이션(20)은 독립형 애플리케이션일 수 있거나, 또는 송신 프로세스(10), 송신 프로세스(10)의 컴포넌트, 및/또는 클라이언트 애플리케이션들(22, 24, 26, 28) 중 하나 이상과 상호작용할 수 있고 그리고/또는 그 내부에서 실행될 수 있는 애플릿/애플리케이션/스크립트/확장부일 수 있다. 클라이언트 애플리케이션들(22, 24, 26, 28) 중 하나 이상은 독립형 애플리케이션일 수 있거나, 또는 송신 프로세스(10) 및/또는 협업 애플리케이션(20)과 상호작용할 수 있고 그리고/또는 그 내부에서 실행될 수 있고 그리고/또는 이의 컴포넌트일 수 있는 애플릿/애플리케이션/스크립트/확장부일 수 있다. 클라이언트 애플리케이션들(22, 24, 26, 28)의 예들은, 비제한적으로, 예를 들어, 웹 회의 애플리케이션, 비디오 회의 애플리케이션, 인터넷 음성 통신 애플리케이션, 인터넷 비디오 통신 애플리케이션, 인스턴트 메시징(IM)/'채팅" 애플리케이션, 단문 메시징 서비스(SMS)/멀티미디어 메시징 서비스(MMS) 애플리케이션, 또는 가상 미팅 및/또는 원격 협업을 가능하게 하는 다른 애플리케이션, 표준 및/또는 모바일 웹 브라우저, 이메일 클라언트 애플리케이션, 텍스트 및/또는 그래픽 사용자 인터페이스, 맞춤화된 웹 브라우저, 플러그인, 애플리케이션 프로그래밍 인터페이스(Application Programming Interface; API), 또는 맞춤형 애플리케이션을 포함할 수 있다. 클라이언트 전자 디바이스들(38, 40, 42, 44)에 결합된 저장 디바이스들(30, 32, 34, 36) 상에 저장될 수 있는 클라이언트 애플리케이션들(22, 24, 26, 28)의 명령어 세트들 및 서브루틴들은 클라이언트 전자 디바이스들(38, 40, 42, 44) 내에 통합된 하나 이상의 프로세서들(미도시) 및 하나 이상의 메모리 아키텍처들(미도시)에 의해 실행될 수 있다.
저장 디바이스들(30, 32, 34, 36)은 비제한적으로, 하드 디스크 드라이브들; 플래시 드라이브들, 테이프 드라이브들; 광 드라이브들; RAID 어레이들; 랜덤 액세스 메모리(RAM)들; 및 판독-전용 메모리(ROM)들을 포함할 수 있다. 클라이언트 전자 디바이스들(38, 40, 42, 44)(및/또는 컴퓨터(12))의 예들은, 비제한적으로, 개인용 컴퓨터(예를 들어, 클라이언트 전자 디바이스(38)), 랩탑 컴퓨터(예를 들어, 클라이언트 전자 디바이스(40)), 스마트/데이터-인에이블된(enabled) 셀룰러 폰(예를 들어, 클라이언트 전자 디바이스(42)), 노트북 컴퓨터(예를 들어, 클라이언트 전자 디바이스(44)), 태블릿(미도시), 서버(미도시), 텔레비전(미도시), 스마트 텔레비전(미도시), 미디어(예를 들어, 비디오, 사진, 등) 캡처 디바이스(미도시), 및 전용 네트워크 디바이스(미도시)를 포함할 수 있다. 클라이언트 전자 디바이스(38, 40, 42, 44)는 각기 운영 시스템들을 실행할 수 있으며, 이들의 예들은, 비제한적으로, Androidtm, Apple? iOS?, Mac? OS X?; Red Hat? Linux?, 또는 맞춤형 운영 시스템을 포함할 수 있다.
클라이언트 애플리케이션들(22, 24, 26, 28) 중 하나 이상은 송신 프로세스(10)의 기능성 중 일부 또는 그 전부를 달성하도록 구성될 수 있다(및 이의 역). 따라서, 송신 프로세스(10)는 순수한 서버-측 애플리케이션, 순수한 클라이언트-측 애플리케이션, 또는 클라이언트 애플리케이션들(22, 24, 26, 28) 중 하나 이상 및/또는 송신 프로세스(10)에 의해 협력적으로 실행되는 하이브리드 서버-측/클라이언트-측 애플리케이션일 수 있다.
클라이언트 애플리케이션들(22, 24, 26, 28) 중 하나 이상은 협업 애플리케이션(20)의 기능성 중 일부 또는 그 전부를 달성하도록 구성될 수 있다(및 이의 역). 따라서, 협업 애플리케이션(20)은 순수한 서버-측 애플리케이션, 순수한 클라이언트-측 애플리케이션, 또는 클라이언트 애플리케이션들(22, 24, 26, 28) 중 하나 이상 및/또는 협업 애플리케이션(20)에 의해 협력적으로 실행되는 하이브리드 서버-측/클라이언트-측 애플리케이션일 수 있다. 단일로 또는 임의의 조합으로 취해진, 클라이언트 애플리케이션들(22, 24, 26, 28) 중 하나 이상, 송신 프로세스(10), 및 협업 애플리케이션(20)이 동일한 기능성 중 일부 또는 전부를 달성할 수 있음에 따라, 클라이언트 애플리케이션들(22, 24, 26, 28) 중 하나 이상, 송신 프로세스(10), 협업 애플리케이션(20) 또는 이들의 조합을 통해 이러한 기능성을 달성하는 것의 임의의 설명, 및 이러한 기능성을 달성하기 위한 클라이언트 애플리케이션들(22, 24, 26, 28) 중 하나 이상, 송신 프로세스(10), 협업 애플리케이션(20) 또는 이들의 조합 사이의 임의의 설명되는 상호작용(들)이 본 개시의 범위를 제한하는 것이 아니라 오로지 예로서 취해져야만 한다.
사용자들(46, 48, 50, 52)은 (예를 들어, 클라이언트 전자 디바이스들(38, 40, 42, 44) 중 하나 이상을 사용하여) 네트워크(14)를 통해 또는 2차 네트워크(18)를 통해 직접적으로 컴퓨터(12) 및 송신 프로세스(10)에 액세스할 수 있다. 또한, 팬텀 링크(phantom link) 라인(54)으로 예시된 바와 같이, 컴퓨터(12)는 2차 네트워크(18)를 통해 네트워크(14)에 연결될 수 있다. 송신 프로세스(10)는, 이를 통해 사용자들(46, 48, 50, 52)이 송신 프로세스(10)에 액세스할 수 있는 하나 이상의 사용자 인터페이스들, 예컨대 브라우저들 및 텍스트 또는 그래픽 사용자 인터페이스들을 포함할 수 있다.
다양한 클라이언트 전자 디바이스들이 네트워크(14)(또는 네트워크(18))에 직접적으로 또는 간접적으로 결합될 수 있다. 예를 들어, 클라이언트 전자 디바이스(38)는 하드와이어형(hardwired) 네트워크 연결을 통해 네트워크(14)에 직접적으로 결합되는 것으로 도시된다. 또한, 클라이언트 전자 디바이스(44)는 하드와이어형 네트워크 연결을 통해 네트워크(18)에 직접적으로 결합되는 것으로 도시된다. 클라이언트 전자 디바이스(40)는, 네트워크(14)에 직접적으로 결합되는 것으로 도시된 무선 액세스 포인트(wireless access point; 즉, WAP)(58)와 클라이언트 전자 디바이스(40) 사이에 수립된 무선 통신 채널(56)을 통해 네트워크(14)에 무선으로 결합되는 것으로 도시된다. WAP(58)은, 예를 들어, 클라이언트 전자 디바이스(40)와 WAP(58) 사이에 무선 통신 채널(56)을 수립할 수 있는 IEEE 802.11a, 802.11b, 802.11g, Wi-Fi?, 및/또는 Bluetoothtm 디바이스일 수 있다. 클라이언트 전자 디바이스(42)는, 네트워크(14)에 직접적으로 결합되는 것으로 도시된 셀룰러 네트워크/브리지(62)와 클라이언트 전자 디바이스(42) 사이에 수립된 무선 통신 채널(60)을 통해 네트워크(14)에 무선으로 결합되는 것으로 도시된다.
IEEE 802.11x 명세들의 일부 또는 전부는, 경로 공유를 위해 충돌 회피를 갖는 반송파 감지 다중 액세스(carrier sense multiple access with collision avoidance; 즉, CSMA/CA) 및 이더넷 프로토콜을 사용할 수 있다. 다양한 802.11x 명세들은, 예를 들어, 위상-편이 키잉(phase-shift keying; 즉, PSK) 변조 또는 상보적 코드 키잉(complementary code keying; 즉, CCK) 변조를 사용할 수 있다. Bluetoothtm은, 예를 들어, 모바일 폰들, 컴퓨터들, 스마트 폰들, 및 다른 전자 디바이스들이 단거리 무선 연결을 사용하여 상호연결되는 것을 허용하는 전기통신 산업 명세이다. 다른 형태의 상호연결(예를 들어, 근거리 필드 통신(Near Field Communication; NFC))이 또한 사용될 수 있다.
또한 도 2를 참조하면, 클라이언트 전자 디바이스(38)의 개략도가 도시된다. 클라이언트 전자 디바이스(38)가 이러한 도면에 도시되지만, 다른 구성들이 가능하기 때문에, 이는 오로지 예시적인 목적들을 위한 것이며 본 개시를 제한하도록 의도되지 않는다. 예를 들어, 도 2 내에서, 전체적으로 또는 부분적으로, 송신 프로세스(10)를 실행할 수 있는 임의의 컴퓨팅 디바이스가 클라이언트 전자 디바이스(38)를 대체할 수 있으며, 이의 예들은 비제한적으로 컴퓨터(12) 및/또는 클라이언트 전자 디바이스들(40, 42, 44)을 포함할 수 있다.
클라이언트 전자 디바이스(38)는, 예를 들어, 데이터를 프로세싱하고, 이상에서 언급된 코드/명령어 세트들 및 서브루틴들을 실행하도록 구성된 프로세서 및/또는 마이크로프로세서(예를 들어, 마이크로프로세서(200))를 포함할 수 있다. 마이크로프로세서(200)는 저장부 어댑터(미도시)를 통해 이상에서 언급된 저장 디바이스(들)(예를 들어, 저장 디바이스(30))에 결합될 수 있다. I/O 제어기(예를 들어, I/O 제어기(202))는 마이크로프로세서(200)를 다양한 디바이스들, 예컨대 키보드(206), 포인팅/선택 디바이스(예를 들어, 마우스(208)), 맞춤형 디바이스(예를 들어, 디바이스(215)), USB 포트들(미도시), 및 프린터 포트들(미도시)과 결합시키도록 구성될 수 있다. 디스플레이 어댑터(예를 들어, 디스플레이 어댑터(210))는 디스플레이(212)(예를 들어, CRT 또는 LCD 모니터(들))를 마이크로프로세서(200)와 결합시키도록 구성될 수 있으며, 반면 네트워크 제어기/어댑터(214)(예를 들어, 이더넷 어댑터)는 마이크로프로세서(200)를 이상에서 언급된 네트워크(14)(예를 들어, 인터넷 또는 근거리 네트워크)에 결합시키도록 구성될 수 있다.
일반적으로, 전통적인 인터넷 음성 통신(VoIP) 시스템들은 주로, 안정적인 광대역 인터넷 연결들을 통해 실행될 것으로 예상될 수 있었던 피어 투 피어(P2P) 통신에 맞추어 구축될 수 있었다. P2P 통신의 예시적인 이점은, 이것이 오디오 패킷들의 믹싱 또는 서버 상호작용을 필요로 하지 않을 수 있다는 것일 수 있다(예를 들어, 2개의 종점들이 직접적으로 연결될 수 있는 일반적이고 예시적인 케이스에 있어서, 이것이 그 지점으로부터 전방으로 추가적인 요건들 없이 초기 통신을 가능하게 하는 것만을 보조해야만 할 수 있음에 따라 서비스를 잘 스케일링(scale)하는 것을 가능하게 한다).
VoIP 회의들은 또한 N개의 종점들(예를 들어, 통신 세션 내의 3개 이상의 컴퓨팅 디바이스들)을 포함할 수 있다. 일부 VoIP 시스템들은 (예를 들어, 클라이언트가 N개의 입력 스트림들을 처리하도록 구축되는) 메시 접근방식을 이용할 수 있다. 이러한 예시적인 접근방식은 대역폭과 관련하여 비효율적일 수 있으며, 이와 같이, 큰 회의들로 스케일링되지 못할 수 있다. 대안적이고 예시적인 접근방식은 (예를 들어, 모든 종점들이 중앙 서비스와 P2P 연결을 생성할 수 있는) 허브-앤-스포크 모델 접근방식을 이용할 수 있다. 이러한 서비스는 모든 종점들로부터의 입력을 믹싱하는 것 및 각각의 종점에 대하여 단일 출력 스트림을 생성하는 것을 담당할 수 있다. 이러한 아키텍처가 대역폭과 관련하여 더 선호될 수 있으며, 큰 회의들에 대하여 더 양호하게 스케일링될 수 있다.
그러나, 이러한 예시적인 접근방식은, 이것이 모든 N개의 스트림들로부터의 입력을 디코딩하는 것, 및 그 이후 모든 N개의 스트림들에 대한 출력을 재-인코딩하는 것을 요구할 수 있음에 따라, 입력을 믹싱하는 동안 CPU-집중 동작을 수반할 수 있다. 이와 같이, 이는 이러한 서비스를 동작시키기에 엄청나게 비싼 것으로 간주될 수 있다. 일반적인 믹싱 아키텍처들은, 모바일 환경에서 특히 일반적일 수 있는 지터-프론(jitter-prone) 네트워크 연결들을 적절하게 처리하지 못할 수 있다. 종점이 노이즈가 있는, 예를 들어, 지터가 있거나 또는 버스티(bursty) 방식으로 미디어를 전송하는 예시적인 케이스에 있어서, 그것의 데이터는 시간-동기화된 방식으로 다른 종점들과 적절하게 믹싱되지 않을 수 있으며, 이는 사용자에게 이상적인 경험보다 덜한 경험을 야기할 수 있다.
이하에서 더 상세하게 논의되는 바와 같이, 송신 프로세스(10)는, 모든 종점들로부터의 데이터를 적절한 시간 동기화된 방식으로 믹싱하면서 CPU 사용량을 최소화할 수 있는 방식으로, N개의 종점들(예를 들어, N개의 컴퓨팅 디바이스들)로부터의 VoIP 데이터를 믹싱하기 위한 개선된 접근방식을 구현할 수 있다. 일부 구현예들에 있어서, 그 결과는, 컴퓨팅 디바이스들(예를 들어, 모바일 컴퓨팅 디바이스 종점들)로부터 경험되는 고도로 가변적인 네트워크 상태들을 더 양호하게 처리할 수 있는 VoIP 회의 서비스(예를 들어, 협업 애플리케이션(20))일 수 있다. 따라서, 송신 프로세스(10)는, 전통적인 믹싱 아키텍처들에서 경험될 수 있었던 최소 팝(pop)들 또는 다른 지터들을 가지고, 말단 사용자에 의해 인지될 때 고 품질 음성 스트림을 산출할 수 있다. 일부 구현예들에 있어서, 송신 프로세스(10)는, 이들이 서비스 상에 도착하는 것과 동일한 시간 간격 내에서 대부분의 패킷들이 전송될 수 있도록 실행될 수 있다(예를 들어, 송신 프로세스(10)를 통한 서비스는, 필요할 때에만 버퍼링되고 임의의 추가적인 레이턴시(latency)를 유도하지 않을 수 있다).
이하에서 더 상세하게 논의될 바와 같이, 각각의 컴퓨팅 디바이스 종점에 대하여, 송신 프로세스(10)는, 예를 들어, 다음의 "예상된" 실-시간 전송 프로토콜(Real-time Transport Protocol; RTP) 시퀀스 및 타임스탬프(timestamp) 값들을 추적할 수 있다. (전통적인 VoIP 서비스들을 가지고 이루어질 수 있는 바와 같이) 주어진 종점으로부터 이용가능한 다음의 RTP 패킷들을 항상 전달하는 것이 아니라, 송신 프로세스(10)는 상이하게 구현될 수 있다.
송신 프로세스:
이상에서 논의된 바와 같이 그리고 적어도 도 3 내지 도 4를 참조하면, 송신 프로세스(10)는 복수의 사용자들 사이의 통신 세션을 모니터링할 수 있다(300). 송신 프로세스(10)는, 복수의 사용자들 중 적어도 2명의 사용자들이 통신 세션 내에서 미디어를 전송하고 있는지 여부를 결정할 수 있다(302). 복수의 사용자들 중 제 1 사용자만이 미디어를 전송하고 있는 경우, 송신 프로세스(10)는 제 1 기술을 통해 미디어를 복수의 사용자들에게 전달할 수 있다(304). 복수의 사용자들 중 제 1 사용자 및 제 2 사용자가 미디어를 전송하고 있는 경우, 송신 프로세스(10)는 제 2 기술을 통해 미디어를 복수의 사용자들에게 전달할 수 있다(306).
오로지 예시적인 목적들을 위하여, 통신 세션(예를 들어, VoIP 세션)이 복수의 사용자들(예를 들어, 개별적인 클라이언트 전자 디바이스들(38, 40, 42, 및 44)을 통해 사용자들(46, 48, 50, 및 52)) 사이에, 예를 들어, 송신 프로세스(10), 협업 애플리케이션(20), 클라이언트 애플리케이션(들), 또는 이들의 조합을 통해 구현되는 것을 가정한다. 이러한 예에 있어서, (예를 들어, 하나 이상의 클라이언트 전자 디바이스 종점들이 중앙 컴퓨팅 디바이스 서비스와 P2P 연결을 생성할 수 있는) 이상에서 언급된 허브-앤-스포크 모델 접근방식의 하나 이상의 측면들과 유사하게, 사용자들로부터의 미디어(예를 들어, 오디오 및/또는 비디오 데이터 및/또는 다른 데이터/정보)는 중앙 컴퓨팅 서비스(예를 들어, 컴퓨터(12))에서 수신될 수 있다. 이러한 예에 있어서, 컴퓨터(12)를 통해 송신 프로세스(10)는, 하나 이상의 종점들(예를 들어, 사용자의 개별적인 클라이언트 전자 디바이스)로부터 입력(예를 들어, 미디어 입력)을 수신, 믹싱/동기화하는 것, 및 각각의 개별적인 사용자의 클라이언트 전자 디바이스에 대한 단일 출력 스트림을 생성하는 것이 가능할 수 있다. 본 개시의 범위로부터 벗어나지 않고 다른 접근방식들이 사용될 수 있다는 것이 이해될 것이다. 이와 같이, 유사 허브-앤-스포크 모델 접근방식의 설명은 본 개시의 범위를 제한하지 않고 오로지 예로서만 취해져야 한다.
일부 구현예들에 있어서, 송신 프로세스(10)는 복수의 사용자들 사이의 통신 세션을 모니터링할 수 있다(300). 예를 들어, 송신 프로세스(10)는, 개별적인 클라이언트 전자 디바이스들(38, 40, 42, 및 44)을 통한 사용자들(46, 48, 50, 및 52) 사이의 이상에서 언급된 VoIP 세션을 모니터링할 수 있다(300). 일부 구현예들에 있어서, 송신 프로세스(10)는, 예를 들어, (동기화를 위한 타임스탬프들, 패킷 손실 및 재순서화(reordering) 검출을 위한 시퀀스 번호들, 페이로드(payload) 포맷, 등과 같은) 송신 통계자료, 서비스 정보의 품질, 등에 대해 VoIP 세션을 모니터링(300)하기 위해 송신 프로세스(10)에 의해 사용될 수 있는, 실-시간 전송 프로토콜(또는 적절한 다른 예시적인 프로토콜들)을 이용할 수 있다.
일부 구현예들에 있어서, 송신 프로세스(10)는, 복수의 사용자들 중 적어도 2명의 사용자들이 통신 세션 내에서 미디어를 전송하고 있는지 여부를 결정할 수 있다(302). 예를 들어, 송신 프로세스(10)는, VoIP 세션 내의 복수의 사용자들 중 어느 사용자들이 미디어를 전송하고 있을 수(예를 들어, 말하고 있을 수) 있는지, 및 VoIP 세션 내의 복수의 사용자들 중 어느 사용자들이 미디어를 전송하지 않고 있는지를(예를 들어, 말하고 있는 것이 아니라 전송된 미디어를 듣고 있는 수동적인 참가자들) 결정(302)하기 위하여, VoIP 세션을 모니터링(300)하는 동안 수집된 이상에서 언급된 정보 중 임의의 정보를 사용할 수 있다. 예를 들어, 일부 구현예들에 있어서, (예를 들어, 컴퓨터(12)를 통해) 송신 프로세스(10)가 현재, 예를 들어, 사용자(46)가 클라이언트 전자 디바이스(38)의 마이크로폰 내로 말하는 것의 결과로서, 특정 사용자(예를 들어, 사용자(46))로부터 미디어를 수신하고 있는 경우, 송신 프로세스(10)는 사용자(46)가 현재 미디어(예를 들어, 오디오 미디어)를 전송하고 있다는 것을 결정할 수 있다(302). 이와 대조적으로, (예를 들어, 컴퓨터(12)를 통해) 송신 프로세스(10)가 현재, 예를 들어, 사용자(46)가 클라이언트 전자 디바이스(38)의 마이크로폰 내로 말하지 않는 것의 결과로서, 사용자(46)로부터 미디어를 수신하고 있지 않는 경우, 송신 프로세스(10)는 사용자(46)가 현재 미디어(예를 들어, 오디오 미디어)를 전송하고 있지 않다는 것을 결정할 수 있다(302). 일부 구현예들에 있어서, 송신 프로세스(10)는, 2명 이상의 사용자들이 미디어(예를 들어, 오디오 및/또는 비디오 미디어)를 전송하고 있는지 여부를 결정(302)하기 위하여 VoIP 세션에 참여하고 있는 각각의 사용자에 대해 유사한 기술을 적용할 수 있다.
일부 구현예들에 있어서, 송신 프로세스(10)는, 사용자(46)가 말하고 있을 때와 사용자(46)가 말하고 있지 않을 때를 구별할 수 있는 신호 분석 애플리케이션들을 포함할 수 있다. 예를 들어, 송신 프로세스가, 사용자(46)가 현재 미디어를 전송하고 있는지 여부를 결정(302)하기 위하여 볼륨 문턱값 신호 분석을 사용한다고 가정한다. 예를 들어, 사용자(46)로부터 전송되는 오디오 미디어가 문턱 볼륨을 충족시키거나 또는 이를 초과하는 경우, 송신 프로세스(10)는 사용자(46)가 미디어를 전송하고 있다고 결정할 수 있다(302). 반대로, 사용자(46)로부터 전송되는 오디오 미디어가 문턱 볼륨을 충족시키지 못하거나 또는 이를 초과하지 않는 경우, 송신 프로세스(10)는 사용자(46)가 미디어를 전송하고 있지 않다고 결정할 수 있다(302). 이러한 예를 계속하면, 송신 프로세스(10)는, 사용자(46)가 말하고 있을 때의 실제 말(speech)과 (심지어 사용자(46)가 말하고 있지 않을 때에도 말과 혼동될 수 있는 재채기와 같은) 볼륨 문턱값에 도달하는 배경 잡음을 구별하기 위하여 추가적으로 신호 분석을 사용하는 것이 가능할 수 있다. 본 개시의 범위로부터 벗어나지 않고 어떤 사용자들이 미디어를 전송하고 있는지를 결정(302)하기 위해 다른 기술이 사용될 수 있다는 것이 이해될 것이다. 일부 구현예들에 있어서, 볼륨 레벨들에 관한 메타데이터가 인코딩된 미디어와 함께 패키징될 수 있기 때문에, 이상에서 언급된 신호 분석은 미디어(패킷)의 디코딩을 필요로 하지 않는다.
예를 들어, 일부 실시예들에 있어서, 통신 세션 내에서 복수의 사용자들 중 적어도 2명의 사용자들이 미디어를 전송하고 있는지 여부를 결정하는 것(302)은, 송신 프로세스(10)가 미리 결정된 시간의 간격 동안 통신 세션 내에서 복수의 사용자들 중 적어도 2명의 사용자들이 미디어를 동시에 전송하고 있는지 여부를 결정하는 것(308)을 포함할 수 있다. 예를 들어, 오로지 예시적인 목적들을 위하여, 미리 결정된 시간의 간격이, 예를 들어, 20ms인 것으로 가정한다. 이러한 예에 있어서, 송신 프로세스(10)가 다른 사용자(예를 들어, 클라이언트 전자 디바이스(42)를 통해 사용자(50))로부터 오디오 미디어를 수신하는 것의 20ms 내에 사용자(46)로부터 오디오 미디어를 수신하는 경우, 송신 프로세스(10)는 적어도 2명의 사용자들(예를 들어, 사용자들(46 및 50))이 VoIP 세션 내에서 동시에 미디어를 전송하고 있다는 것을 결정할 수 있다(308). 반대로, 송신 프로세스(10)가 사용자(50)로부터 이전의 오디오 미디어를 수신하는 것의 20ms 이후에 사용자(46)로부터 오디오 미디어를 수신하는 경우, 송신 프로세스(10)는 사용자들(46 및 50)이 VoIP 세션 내에서 동시에 미디어를 전송하고 있지 않다는 것을 결정할 수 있다(308). 일부 구현예들에 있어서, 송신 프로세스(10)는 이상에서 언급된 결정(308)을 하기 위하여 수신된 미디어의 개별적인 타임스탬프들을 분석할 수 있다. 본 개시의 범위로부터 벗어나지 않고 다른 기술들 및/또는 시간의 간격들이 사용될 수 있다는 것이 이해될 것이다. 이와 같이, 이상에서 언급된 결정(308)을 하기 위하여 타임스탬프들을 분석하는 것 및/또는 20ms 간격들의 사용은 본 개시의 범위를 제한하지 않고 오로지 예로서만 취해져야 한다. 예를 들어, 일부 구현예들에 있어서, 시간(+20ms)에서 송신 프로세스(10)가 사용자(46)로부터 미디어를 수신하고, 그런 다음 +40ms에서 송신 프로세스(10)가 송신자(50)로부터 미디어를 수신하는 경우, 송신 프로세스(10)는 사용자들(46 및 50)이 VoIP 세션 내에서 동시에 미디어를 전송하고 있다는 것을 결정할 수 있으며(308), 추가적인 미디어가 사용자(46)로부터 수신되는지 여부를 확인(see)하기 위하여 사용자(50)로부터의 미디어를 전송하기 전에 대기할 수 있다. 이러한 예에 있어서, 송신 프로세스(10)는, 사용자(46)로부터 다른 미디어 패킷이 수신될 때까지, 또는 100ms가 경과할 때(시간(+120ms)에서)까지 대기할 수 있다. 일부 구현예들에 있어서, +20ms에서 송신 프로세스(10)가 사용자(46)로부터 미디어 패킷을 수신하고, 그런 다음 +140ms에서 사용자(50)로부터 미디어 패킷을 수신하는 경우, 송신 프로세스(10)는 사용자(46)가 더 이상 말하고 있지 않다는 것을 결정하고, 사용자(50)로부터 전송된 패킷을 즉시 다른 사용자들에게 전송할 수 있다.
일부 구현예들에 있어서, 송신 프로세스(10)는, 이상에서 언급된 사용자들이 미디어를 전송하고 있는지 여부를 결정하기 위하여 전송되고 있는 미디어 패킷들의 유형을 조사할 수 있다. 예를 들어, 일부 구현예들에 있어서, 사용자(50)가 말하고 있지 않을 때 미디어를 전송하지 않는 것이 아니라, 클라이언트 전자 디바이스(42)는 소위 "편안한 잡음(comfort noise; CN)" 유형의 패킷을 전송할 수 있다. 사용자(50)가 미디어를 전송하고 있는지 여부를 결정할 때, CN 패킷을 수신하는 것은 실제 미디어 패킷을 수신하고 있지 않는 것과 유사하게 동일시될 수 있다.
일부 구현예들에 있어서, 복수의 사용자들 중 제 1 사용자만이 미디어를 전송하고 있는 경우, 송신 프로세스(10)는 제 1 기술을 통해 미디어를 복수의 사용자들에게 전달할 수 있다(304). 예를 들어, 일부 구현예들에 있어서, 제 1 기술을 통해 미디어를 복수의 사용자들에게 전달하는 것(304)은, 송신 프로세스(10)가 패킷을 디코딩 및 인코딩하지 않으면서 미디어의 적어도 일 부분을 포함하는 패킷을 복수의 사용자들에게 전달하는 것(310)을 포함할 수 있다. 예를 들어, 그리고 이상의 예를 계속하면, 오로지 사용자(46)만이 VoIP 세션 내에서 미디어를 전송하고 있는 것으로 결정된다고(302) 추가로 가정한다. 이러한 예에 있어서, 사용자(46)만이 미디어를 전송하고 있다는 결정(302)에 적어도 부분적으로 기초하여, 송신 프로세스(10)는 컴퓨터(12)에서 사용자(46)로부터 전송된 미디어의 적어도 일부를 포함하는 패킷을 수신할 수 있고, 패킷을 디코딩하는 것 및/또는 인코딩하는것 (및/또는 버퍼링하는 것)을 회피할 수 있다. 전통적으로, 미디어는 이미 인코딩된 채로 컴퓨터(12)에 도착할 수 있으며, 여기에서 미디어가 디코딩되고, 그런 다음 미디어를 다른 사용자들에게 전송하기 전에 재-인코딩될 수 있었다. 그러나, 일부 구현예들에 있어서, 예를 들어, 송신 프로세스(10)는 VoIP 세션 내의 사용자들에게 패킷을 직접적으로 전달할 수 있으며(310), (다른 사용자들로부터 미디어를 수신하는 것이 계속해서 가능할 수 있다고 하더라도) 이는 본질적으로 VoIP 세션을 덜 CPU 집중적인 1 방향 "방송(broadcast)"으로 변환하는 것과 유사할 수 있다. 이러한 예에 있어서, 단일 화자(speaker)가 대부분의 회의 호(conference call)들의 대다수를 커버할 수 있기 때문에, "변환"이 송신 프로세스(10)의 서비스 부분을 믹싱함으로써 요구되는 인코딩들 및 디코딩들의 수를 감소시킬 수 있고, 그에 따라 그것의 효율성을 증가시킬 수 있다.
일부 구현예들에 있어서, 미디어는, 제 1 사용자 및 제 2 사용자가 통신 세션에 연결되어 있을 때에만 제 1 기술을 통해 제 1 사용자 및 제 2 사용자에게 전달될 수 있다. 예를 들어, 송신 프로세스(10)는, 통신 세션 내에 정확히 2명의 사용자들(예를 들어, 사용자들(46 및 50))이 존재하고, 이들 둘 모두가 미디어를 전송하고 있는 최적화 시나리오를 포함할 수 있다. 이러한 케이스에 있어서, 데이터를 디코딩하고 믹싱하는 대신에, 이상에서 설명된 제 1 기술과 유사하게, 송신 프로세스(10)가 사용자(50)의 데이터를 사용자(46)에게 전송할 수 있으며, 및 이의 역이 성립할 수 있다. 이는, 송신 프로세스(10)가 디코딩 및 인코딩을 감소시키거나 또는 회피하는 것을 허용할 수 있다.
일부 구현예들에 있어서, 복수의 사용자들 중 제 1 사용자 및 제 2 사용자가 미디어를 전송하고 있는 경우, 송신 프로세스(10)는 제 2 기술을 통해 미디어를 복수의 사용자들에게 전달할 수 있다(306). 하나 이상의 사용자들이 미디어를 전송하고 있는지 여부를 결정하는 것(302) (및 그에 따라 적용되어야 할 전달 기술(304/306)을 결정하는 것)이 동적으로 그리고 그때 그때(on-the-fly) 결정될 수 있다. 예를 들어, 미디어 전달 기술은, 동일한 사용자들 사이의 동일한 VoIP 세션 (및/또는 연관된 미디어 패킷의 스트링) 동안 임의의 시점에 변화할 수 있다. 예를 들어, 그리고 적어도 도 4를 참조하면, 사용자(46)가 말하고 있으며, 연관된 미디어가, 예를 들어, 10개의 패킷들(P1A-P10A)의 형태로 송신 프로세스(10)에 의해 수신되는 것을 가정한다. 이러한 예에 있어서, 사용자(46)가 사용자(46)의 미디어의 가치 있는 10개의 패킷들 중 처음의 8개 동안 유일한 화자인 것으로 결정되며(302), 사용자(46)의 미디어의 가치 있는 마지막 2개의 패킷들(예를 들어, 패킷들(P9A 및 P10A)) 동안, 사용자(50)가 송신 프로세스(10)에 의해 수신되는 사용자(50)의 미디어의 가치 있는 2개의 패킷들(예를 들어, 패킷들(P1B 및 P2B))을 가지고 사용자(46)와 동시에 말하는 것으로 추가로 가정한다. 따라서, 이러한 예에 있어서, 패킷들(P9A 및 P10A와 P1B 및 P2B)에 대하여, 2명 이상의 화자가 미디어를 전송하고 있는 것으로 결정될 수 있다(302). 이러한 예에 있어서, 송신 프로세스(10)는, 패킷들(P1A-P8A)이 제 1 기술을 사용하여 VoIP 세션 내에서 컴퓨터(12)로부터 복수의 사용자들에게 전달될 수 있다는 것(304)을 결정할 수 있으며(302), 반면 패킷들(P9A 및 P10A와 P1B 및 P2B)은 (이하에서 상세하게 설명되는) 제 2 기술을 사용하여 VoIP 세션 내에서 컴퓨터(12)로부터 복수의 사용자들에게 전달될 수 있다는 것(306)을 결정할 수 있다(302). 이와 같이, VoIP 세션으로부터 미디어를 전달(304/306)하기 위해 사용되는 기술들은, 적어도 부분적으로 이상에서 언급된 결정(302)에 기초하여 몇 번이든지 전달 기술들 사이에서 동적으로 변화할 수 있다.
일부 구현예들에 있어서, 제 2 기술을 통해 복수의 사용자들에게 미디어를 전달하는 것(306)은 복수의 사용자들의 각각보다 더 적은 사용자들에 대한 인코딩 동작을 실행하는 것(322)을 포함할 수 있다. 예를 들어, 가능한 최소 수의 인코딩들을 실행하기 위하여 믹싱된 미디어가 전달되는 시나리오를 가정한다. 전통적으로, 복수의 사용자들에 대해 미디어를 믹싱할 때, 시스템들은, 사용자들 중 하나 이상으로 전송되는 믹싱된 미디어가 매칭되는지 여부와 무관하게, 사용자들의 각각에 대한 인코딩 동작을 실행할 수 있다. 이와 대조적으로, 송신 프로세스(10)는 이를 최소 수의 인코딩들로 감소시킬 수 있다. 예를 들어, 4명의 사용자들(예를 들어, 46, 50, 52, 및 48)이 존재하는 시나리오를 고려한다. 사용자들(46 및 50)은 미디어를 생성하고 있으며, 사용자들(52 및 48)은 미디어를 생성하고 있지 않다. 이러한 예에 있어서, 송신 프로세스(10)는 3개의 상이한 패킷들에 대한 인코딩 동작을 실행할 수 있다(322):
1. 사용자(46)는 사용자(50)로부터의 미디어를 전송받을 수 있다
2. 사용자(50)는 사용자(46)로부터의 미디어를 전송받을 수 있다
3. 사용자들(52 및 48)은 사용자들(46 및 50)로부터의 믹싱된 미디어를 전송받을 수 있으며, 이는 송신 프로세스(10)가 자원들을 절약할 수 있는 경우이다. 예를 들어, 이전의 시스템들은 이러한 패킷을 (예를 들어, 각각의 사용자에 대해 한번씩) 2번 인코딩했을 수 있지만, 그러나, 송신 프로세스(10)는 이를 오로지 한번만 수행할 수 있다. 이는, 송신 프로세스(10)가, 인코딩들의 수를, 통신 세션에 연결된 사용자 종점들의 수가 아니라, 미디어를 생성하는 사용자 종점들의 수 + 1로 제한하는 것을 허용한다.
일부 구현예들에 있어서, 제 2 기술을 통해 복수의 사용자들에게 미디어를 전달하는 것(306)은, 각각의 채널이 개별적인 사용자의 인코딩되고 암호화된 미디어 스트림인 멀티-채널 미디어 패킷을 전송하는 것(324)을 포함할 수 있다. 예를 들어, 송신 프로세스(10)는, 미디어를 생성하는 사용자 종점들의 수와 무관하게, (예를 들어, 컴퓨터(12)에서) 회의 서비스 상의 미디어를 결코 디코딩하지 않음으로써 말단-대-말단 통신의 완전한 암호화를 가능하게 할 수 있다. 예를 들어, 송신 프로세스(10)는 멀티-채널(예를 들어, 모노, 스테레오, 등) 미디어 패킷을 전송할 수 있으며, 여기에서 각각의 채널은 개별적인 사용자의 인코딩되고 암호화된 미디어 스트림일 수 있다. 이러한 예에 있어서, 각각의 사용자는 (개별적인 클라이언트 전자 디바이스를 통해) 미디어 채널들을 해독하고 믹싱하기 위한 정보를 가질 수 있지만, 컴퓨터(12)는 그렇지 않을 수 있다.
일부 구현예들에 있어서, 제 2 기술을 통해 미디어를 복수의 사용자들에게 전달하는 것(306)은, 송신 프로세스(10)가 미리 결정된 수의 시간 간격들 동안 대기하는 것(312), 및 미리 결정된 수의 시간 간격들 동안 제 1 사용자 및 제 2 사용자로부터 수신된 미디어를 믹싱하는 것(314)을 포함할 수 있다. 송신 프로세스(10)는 미리 결정된 수의 시간 간격들 이후까지 믹싱된 미디어를 복수의 사용자들에게 전달하는 것을 지연시킬 수 있으며(316), 미리 결정된 수의 시간 간격들 이후의 다음 시간 간격 동안 믹싱된 미디어를 복수의 사용자들에게 전송할 수 있고(318), 여기에서 다음 시간 간격에서 복수의 사용자들에게 전송되는(318) 믹싱된 미디어는 단일 시간 간격 동안 전송되는 복수의 패킷들 내에 포함된 미디어의 복수의 시간 간격들을 포함할 수 있다. 일부 구현예들에 있어서, 미리 결정된 수의 시간 간격들 동안 대기하는 것(312)은 0(zero) 시간 간격들 동안 대기하는 것을 포함할 수 있다.
예를 들어, 송신 프로세스(10)는, 미디어를 전송하고 있는 것으로 결정된(302) 모든 사용자들에 대하여 다음의 "예상된" 패킷들이 이용가능한지(예를 들어, 아직 수신되지 않았는지 또는 손실된 것으로 간주되는지) 여부를 결정할 수 있다. 이러한 결정이, 다음의 "예상된" RTP 시퀀스 및 타임스탬프 값들의 모니터링(300)/추적을 수반할 수 있다. 일부 구현예들에 있어서, 송신 프로세스(10)가 다음의 예상된 패킷이 예상된 바와 같이 이용가능하지 않다는 것을 결정하는 경우, 송신 프로세스(10)는 적어도 하나의 미리 결정된 시간 간격(예를 들어, 각기 20ms) 동안 대기할 수 있고(312), 그런 다음 다시 시도할 수 있다. 일부 구현예들에 있어서, 송신 프로세스(10)는, (예를 들어, 어느 하나의 사용자로부터의) "다음" 패킷이 더 이상 기대되지 않는다는 것을 결정하기 이전에, 최대 수의 시간 간격들, 예를 들어, 5회의 미리 결정된 수의 시간 간격들(예를 들어, 총 100ms) 동안 대기할 수 있다(312). 본 개시의 범위로부터 벗어나지 않고 다른 시간 간격 값들 및/또는 미리 결정된 시간 간격들의 수가 사용될 수 있다는 것이 이해될 것이다. 복수의 사용자들 중 적어도 2명의 사용자들이 통신 세션 내에서 동시에 미디어를 전송하고 있는지 여부를 결정하기 위해 사용되는 미리 결정된 시간의 간격이, 믹싱된 미디어를 복수의 사용자들에게 전달하는 것을 지연시킬 때 사용되는 미리 결정된 시간의 간격과 동일할 필요가 없다는 것이 또한 이해될 것이다. 일부 구현예들에 있어서, 간격들은 송신 프로세스(10)의 사용자 인터페이스(미도시)를 통해 수동으로 조정될 수 있다. 일부 구현예들에 있어서, 송신 프로세스(10)는 네트워크 연결의 관찰되는 특성들에 기초하여 지연을 동적으로 계산할 수 있다.
이상의 예를 계속하면, 오로지 예시적인 목적들을 위하여, 송신 프로세스(10)가, 사용자들(46 및 50)이 각기 클라이언트 전자 디바이스들(38 및 42)을 통해 현재 미디어를 전송하고 있다고 결정하는 것(302)으로 가정한다. 시간 0으로부터 4까지, 사용자(46)가, 송신 프로세스(10)가 (예를 들어, 컴퓨터(12)에서) 사용자(46)로부터의 미디어의 4개의 패킷들을 수신하도록 매 시간 간격(예를 들어, 각기 20ms)마다 하나의 패킷을 전송하는 것으로 추가로 가정한다. 이러한 예에 있어서, 송신 프로세스(10)가 (예를 들어, 100ms 시간 간격(들) 동안에 계속해서) 사용자(50)로부터의 다음의 예상된 패킷을 갖지 않기 때문에, 송신 프로세스(10)가 계속해서 대기하고(312) 및 사용자(46)로부터의 4개의 패킷들을 홀딩하며, 이들은 VoIP 세션 내의 다른 사용자들에게 전송하는 것을 지연시킬 수 있다(316). 이러한 예에 있어서, 시간 5에서, 송신 프로세스(10)가 (예를 들어, 컴퓨터(12)에서) 사용자(46)로부터의 1개의 추가적인 패킷 및 사용자(50)로부터의 5개의 패킷들을 (예를 들어, 가변 네트워크 연결 상에서) 수신하는 것으로 추가로 가정한다. 이러한 시간에(또는 100ms의 시간 간격 이후에), 송신 프로세스(10)는 패킷들 1-5를 순서대로 성공적으로 믹싱하고(314)/동기화하며, 이들을 전송할 수 있다(318). 그런 다음, VoIP 세션에 참가하고 있는 각각의 사용자는, 컴퓨터(12)를 통해 송신 프로세스(10)로부터 전송된(318) 데이터(예를 들어, 미디어 데이터)의 가치 있는 5개의 시간 간격들을 수신할 수 있으며, 적절하게 시간-믹싱된 사용자들(46 및 50)로부터의 미디어 데이터의 연속적인 스트림을 (그들의 개별적인 클라이언트 전자 디바이스들에서) 재생(play out)할 수 있다.
이러한 예에 있어서, 사용자(46)로부터의 패킷들을 전송하는 것을 지연시킴으로써(316), 송신 프로세스(10)는, 사용자(50)의 표준 이하의 네트워크 연결에도 불구하고, 미리 결정된 시간 간격(들) 동안 사용자들(46 및 50)로부터 개별적으로 수신되는 모든 패킷들이 적절한 패킷들을 사용하여 적절하게 믹싱될 수 있다는 것을 보장할 수 있다. 일부 구현예들에 있어서, 지연은 0만큼 낮을 수 있다. 일부 구현예들에 있어서, 이상의 접근방식은, 레이턴시를 두배로 만들 수 있는 시간 간격당 하나를 전송하는 대신에, 패킷들의 전부를 즉시 전송함으로써, 사용자(50)로부터 유도되는 레이턴시를 보상하는 것을 도울 수 있다. 따라서, 일부 구현예들에 있어서, 송신 프로세스(10)는 패킷들이 준비되자마자 패킷들을 전송할 수 있다(318)(예를 들어, 그러나, 전형적으로 그 전에는 전송하지 않는다). 이와 같이, 일부 구현예들에 있어서, 전통적인 아키텍처와 달리, 송신 프로세스(10)는 주어진 시간 간격 내에서 미디어 데이터의 가치 있는 2개 이상의 시간 간격들을 전송할 수 있다(318).
일부 구현예들에 있어서, 제 1 사용자 및 제 2 사용자로부터 수신된 미디어를 믹싱하는 것(314)은, 제 1 사용자에게 믹싱된 미디어를 전달할 때 믹싱된 미디어 내에서 제 1 사용자로부터 전송된 미디어를 배제하는 것(320)을 포함할 수 있다. 예를 들어, 송신 프로세스(10)가 미디어를 믹싱할 때(314), 송신 프로세스(10)는 그들의 아웃고잉(outgoing) 패킷으로부터 송신자의 미디어를 배제할 수 있다(320). 예를 들어, 사용자들(46, 50, 및 52)이 통신 세션 내에 있는 경우, 사용자들(46 및 50)이 미디어를 생성하고 있다:
1. 사용자(46)는 사용자(50)로부터의 미디어를 전송받을 수 있다
2. 사용자(50)는 사용자(46)로부터의 미디어를 전송받을 수 있다
3. 사용자(52)는 사용자들(46 및 50)로부터의 믹싱된 미디어를 전송받을 수 있다.
이는, 각각의 사용자가 다시 되돌아오는 그들 자신들의 에코(echo)를 듣지 않는다는 것을 보장할 수 있다.
본 개시가 오디오 미디어를 사용하는 구현예들을 설명하지만, 임의의 다른 유형들의 데이터뿐만 아니라 임의의 유형의 미디어(예를 들어, 오디오 미디어, 비디오 미디어, 또는 이들의 조합)이 본 개시의 범위로부터 벗어나지 않고 사용될 수 있다는 것이 이해될 것이다. 이와 같이, 미디어(예를 들어, 오디오 미디어)의 사용은 본 개시의 범위를 제한하지 않고 오로지 예로서만 취해져야 한다.
본원에서 사용되는 용어는 특정 실시예들을 설명하기 위한 목적만을 위한 것이며, 본 개시를 제한하도록 의도되지 않는다. 본원에서 사용되는 바와 같은, 단수 형태들("일", 및 "상기")은 문맥이 명백하게 달리 표시하지 않는 한 복수 형태들을 포함하도록 의도된다. 용어들 "포함하다" 및/또는 "포함하는"이 본 명세서에서 사용될 때, 언급된 특징들, 정수들, (반드시 특정 순서는 아닌) 단계들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 이상의 다른 특징들, 정수들, (반드시 특정 순서는 아닌) 단계들, 동작들, 엘리먼트들, 컴포넌트들 및/또는 이들의 그룹들의 존재 또는 추가를 배제하지는 않는다는 것이 추가로 이해될 것이다.
이하의 청구항들 내에 존재할 수 있는 기능 엘리먼트들에 더하여 모든 수단 또는 단계의 대응하는 구조들, 재료들, 행위들 및 등가물들은, 명확하게 청구되는 바와 같은 다른 청구된 엘리먼트와 조합되어 기능을 수행하기 위한 임의의 구조, 재료, 또는 행위를 포함하도록 의도된다. 본 개시의 설명은 예시 및 설명의 목적들을 위해 제공되었으며, 개시된 형태로 본 개시를 제한되거나 또는 철저해지도록 의도되지 않는다. 다수의 수정들, 변형들, 및 이들의 임의의 조합들이 본 개시의 범위 및 사상으로부터 벗어나지 않고 당업자들에게 자명해질 것이다. 구현예(들)는, 본 개시의 원리들 및 특정 애플리케이션을 최상으로 설명하기 위하여, 그리고 당업자들이 고려된 특정한 사용에 적합한 바와 같은 다양한 수정들을 갖는 다양한 구현예(들) 및/또는 구현예(들)의 임의의 조합에 대하여 본 개시를 이해하는 것을 가능하게 하기 위하여 선택되고 설명되었다.
따라서, 본 출원의 개시내용이 상세하게 그리고 그 구현예(들)을 참조하여 설명되었으며, (임의의 수정들, 변형들, 및 이들의 조합들을 포함하는) 구현예(들)의 수정들, 변형들, 및 임의의 조합들이 첨부된 청구항들에서 정의되는 본 개시의 범위로부터 벗어나지 않고 가능하다는 것이 자명할 것이다.

Claims (33)

  1. 컴퓨터-구현형 방법에 있어서,
    컴퓨팅 디바이스에 의해, 복수의 사용자들 사이의 통신 세션을 모니터링하는 단계;
    상기 복수의 사용자들 중 적어도 2명의 사용자들이 상기 통신 세션 내에서 미디어(media)를 전송하고 있는지 여부를 결정하는 단계;
    상기 복수의 사용자들 중 제 1 사용자만이 미디어를 전송하고 있는 경우, 제 1 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 단계; 및
    상기 복수의 사용자들 중 상기 제 1 사용자 및 제 2 사용자가 미디어를 전송하고 있는 경우, 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 단계
    를 포함하는, 컴퓨터-구현형 방법.
  2. 제 1 항에 있어서,
    상기 통신 세션 내에서 상기 복수의 사용자들 중 상기 적어도 2명의 사용자들이 미디어를 전송하고 있는지 여부를 결정하는 단계는, 미리 결정된 시간의 간격 동안 상기 통신 세션 내에서 상기 복수의 사용자들 중 상기 적어도 2명의 사용자들이 미디어를 동시에 전송하고 있는지 여부를 결정하는 단계를 포함하는 것인, 컴퓨터-구현형 방법.
  3. 제 1 항에 있어서,
    상기 제 1 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 단계는, 패킷을 디코딩 및 인코딩하지 않으면서 상기 미디어의 적어도 일 부분을 포함하는 상기 패킷을 상기 복수의 사용자들에게 전달하는 단계를 포함하는 것인, 컴퓨터-구현형 방법.
  4. 제 1 항에 있어서,
    상기 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 단계는,
    미리 결정된 수의 시간 간격들 동안 대기하는 단계; 및
    상기 미리 결정된 수의 시간 간격들 동안 상기 제 1 사용자 및 상기 제 2 사용자로부터 수신된 상기 미디어를 믹싱하는 단계
    를 포함하는 것인, 컴퓨터-구현형 방법.
  5. 제 4 항에 있어서,
    상기 컴퓨터-구현형 방법은, 상기 미리 결정된 수의 시간 간격들 이후까지 상기 믹싱된 미디어를 상기 복수의 사용자들에게 전송하는 것을 지연시키는 단계를 더 포함하는 것인, 컴퓨터-구현형 방법.
  6. 제 5 항에 있어서,
    상기 컴퓨터-구현형 방법은, 상기 미리 결정된 수의 시간 간격들 이후의 다음 시간 간격 동안 상기 믹싱된 미디어를 상기 복수의 사용자들에게 전송하는 단계를 더 포함하는 것인, 컴퓨터-구현형 방법.
  7. 제 6 항에 있어서,
    상기 다음 시간 간격에서 상기 복수의 사용자들에게 전송되는 상기 믹싱된 미디어는, 단일 시간 간격 동안 전송되는 복수의 패킷들 내에 포함된 미디어의 복수의 시간 간격들을 포함하는 것인, 컴퓨터-구현형 방법.
  8. 제 4 항에 있어서,
    상기 제 1 사용자 및 상기 제 2 사용자로부터 수신된 상기 미디어를 믹싱하는 단계는, 상기 제 1 사용자에게 상기 믹싱된 미디어를 전달할 때 상기 믹싱된 미디어 내에서 상기 제 1 사용자로부터 전송된 상기 미디어를 배제하는 단계를 포함하는 것인, 컴퓨터-구현형 방법.
  9. 제 1 항에 있어서,
    상기 미디어는, 상기 제 1 사용자 및 상기 제 2 사용자가 상기 통신 세션에 연결되어 있을 때에만 상기 제 1 기술을 통해 상기 제 1 사용자 및 상기 제 2 사용자에게 전달되는 것인, 컴퓨터-구현형 방법.
  10. 제 1 항에 있어서,
    상기 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 단계는, 상기 복수의 사용자들의 각각보다 더 적은 사용자들에 대한 인코딩 동작을 실행하는 단계를 포함하는 것인, 컴퓨터-구현형 방법.
  11. 제 1 항에 있어서,
    상기 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 단계는, 각각의 채널이 개별적인 사용자의 인코딩되고 암호화된 미디어 스트림인 멀티-채널 미디어 패킷을 전송하는 단계를 포함하는 것인, 컴퓨터-구현형 방법.
  12. 프로세서들에 의해 실행될 때, 상기 프로세서들이 하기의 동작들을 수행하게 하는 복수의 명령어들을 저장한 컴퓨터 판독가능 저장 매체 상에 존재하는 컴퓨터 프로그램 제품에 있어서, 상기 동작들은,
    복수의 사용자들 사이의 통신 세션을 모니터링하는 동작;
    상기 복수의 사용자들 중 적어도 2명의 사용자들이 상기 통신 세션 내에서 미디어를 전송하고 있는지 여부를 결정하는 동작;
    상기 복수의 사용자들 중 제 1 사용자만이 미디어를 전송하고 있는 경우, 제 1 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작; 및
    상기 복수의 사용자들 중 상기 제 1 사용자 및 제 2 사용자가 미디어를 전송하고 있는 경우, 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작
    을 포함하는 것인, 컴퓨터 프로그램 제품.
  13. 제 12 항에 있어서,
    상기 통신 세션 내에서 상기 복수의 사용자들 중 상기 적어도 2명의 사용자들이 미디어를 전송하고 있는지 여부를 결정하는 동작은, 미리 결정된 시간의 간격 동안 상기 통신 세션 내에서 상기 복수의 사용자들 중 상기 적어도 2명의 사용자들이 미디어를 동시에 전송하고 있는지 여부를 결정하는 동작을 포함하는 것인, 컴퓨터 프로그램 제품.
  14. 제 12 항에 있어서,
    상기 제 1 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작은, 패킷을 디코딩 및 인코딩하지 않으면서 상기 미디어의 적어도 일 부분을 포함하는 상기 패킷을 상기 복수의 사용자들에게 전달하는 동작을 포함하는 것인, 컴퓨터 프로그램 제품.
  15. 제 12 항에 있어서,
    상기 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작은,
    미리 결정된 수의 시간 간격들 동안 대기하는 동작; 및
    상기 미리 결정된 수의 시간 간격들 동안 상기 제 1 사용자 및 상기 제 2 사용자로부터 수신된 상기 미디어를 믹싱하는 동작
    을 포함하는 것인, 컴퓨터 프로그램 제품.
  16. 제 15 항에 있어서,
    상기 동작들은, 상기 미리 결정된 수의 시간 간격들 이후까지 상기 믹싱된 미디어를 상기 복수의 사용자들에게 전송하는 것을 지연시키는 동작을 더 포함하는 것인, 컴퓨터 프로그램 제품.
  17. 제 16 항에 있어서,
    상기 동작들은, 상기 미리 결정된 수의 시간 간격들 이후의 다음 시간 간격 동안 상기 믹싱된 미디어를 상기 복수의 사용자들에게 전송하는 동작을 더 포함하는 것인, 컴퓨터 프로그램 제품.
  18. 제 17 항에 있어서,
    상기 다음 시간 간격에서 상기 복수의 사용자들에게 전송되는 상기 믹싱된 미디어는, 단일 시간 간격 동안 전송되는 복수의 패킷들 내에 포함된 미디어의 복수의 시간 간격들을 포함하는 것인, 컴퓨터 프로그램 제품.
  19. 제 15 항에 있어서,
    상기 제 1 사용자 및 상기 제 2 사용자로부터 수신된 상기 미디어를 믹싱하는 동작은, 상기 제 1 사용자에게 상기 믹싱된 미디어를 전달할 때 상기 믹싱된 미디어 내에서 상기 제 1 사용자로부터 전송된 상기 미디어를 배제하는 동작을 포함하는 것인, 컴퓨터 프로그램 제품.
  20. 제 12 항에 있어서,
    상기 미디어는, 상기 제 1 사용자 및 상기 제 2 사용자가 상기 통신 세션에 연결되어 있을 때에만 상기 제 1 기술을 통해 상기 제 1 사용자 및 상기 제 2 사용자에게 전달되는 것인, 컴퓨터 프로그램 제품.
  21. 제 12 항에 있어서,
    상기 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작은, 상기 복수의 사용자들의 각각보다 더 적은 사용자들에 대한 인코딩 동작을 실행하는 동작을 포함하는 것인, 컴퓨터 프로그램 제품.
  22. 제 12 항에 있어서,
    상기 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작은, 각각의 채널이 개별적인 사용자의 인코딩되고 암호화된 미디어 스트림인 멀티-채널 미디어 패킷을 전송하는 동작을 포함하는 것인, 컴퓨터 프로그램 제품.
  23. 하기의 동작들을 수행하도록 구성된 메모리 및 프로세서를 포함하는 컴퓨팅 시스템에 있어서, 상기 동작들은,
    복수의 사용자들 사이의 통신 세션을 모니터링하는 동작;
    상기 복수의 사용자들 중 적어도 2명의 사용자들이 상기 통신 세션 내에서 미디어를 전송하고 있는지 여부를 결정하는 동작;
    상기 복수의 사용자들 중 제 1 사용자만이 미디어를 전송하고 있는 경우, 제 1 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작; 및
    상기 복수의 사용자들 중 상기 제 1 사용자 및 제 2 사용자가 미디어를 전송하고 있는 경우, 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작
    을 포함하는 것인, 컴퓨팅 시스템.
  24. 제 23 항에 있어서,
    상기 통신 세션 내에서 상기 복수의 사용자들 중 상기 적어도 2명의 사용자들이 미디어를 전송하고 있는지 여부를 결정하는 동작은, 미리 결정된 시간의 간격 동안 상기 통신 세션 내에서 상기 복수의 사용자들 중 상기 적어도 2명의 사용자들이 미디어를 동시에 전송하고 있는지 여부를 결정하는 동작을 포함하는 것인, 컴퓨팅 시스템.
  25. 제 23 항에 있어서,
    상기 제 1 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작은, 패킷을 디코딩 및 인코딩하지 않으면서 상기 미디어의 적어도 일 부분을 포함하는 상기 패킷을 상기 복수의 사용자들에게 전달하는 동작을 포함하는 것인, 컴퓨팅 시스템.
  26. 제 23 항에 있어서,
    상기 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작은,
    미리 결정된 수의 시간 간격들 동안 대기하는 동작; 및
    상기 미리 결정된 수의 시간 간격들 동안 상기 제 1 사용자 및 상기 제 2 사용자로부터 수신된 상기 미디어를 믹싱하는 동작
    을 포함하는 것인, 컴퓨팅 시스템.
  27. 제 26 항에 있어서,
    상기 동작들은, 상기 미리 결정된 수의 시간 간격들 이후까지 상기 믹싱된 미디어를 상기 복수의 사용자들에게 전송하는 것을 지연시키는 동작을 더 포함하는 것인, 컴퓨팅 시스템.
  28. 제 27 항에 있어서,
    상기 동작들은, 상기 미리 결정된 수의 시간 간격들 이후의 다음 시간 간격 동안 상기 믹싱된 미디어를 상기 복수의 사용자들에게 전송하는 동작을 더 포함하는 것인, 컴퓨팅 시스템.
  29. 제 28 항에 있어서,
    상기 다음 시간 간격에서 상기 복수의 사용자들에게 전송되는 상기 믹싱된 미디어는, 단일 시간 간격 동안 전송되는 복수의 패킷들 내에 포함된 미디어의 복수의 시간 간격들을 포함하는 것인, 컴퓨팅 시스템.
  30. 제 26 항에 있어서,
    상기 제 1 사용자 및 상기 제 2 사용자로부터 수신된 상기 미디어를 믹싱하는 동작은, 상기 제 1 사용자에게 상기 믹싱된 미디어를 전달할 때 상기 믹싱된 미디어 내에서 상기 제 1 사용자로부터 전송된 상기 미디어를 배제하는 동작을 포함하는 것인, 컴퓨팅 시스템.
  31. 제 23 항에 있어서,
    상기 미디어는, 상기 제 1 사용자 및 상기 제 2 사용자가 상기 통신 세션에 연결되어 있을 때에만 상기 제 1 기술을 통해 상기 제 1 사용자 및 상기 제 2 사용자에게 전달되는 것인, 컴퓨팅 시스템.
  32. 제 23 항에 있어서,
    상기 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작은, 상기 복수의 사용자들의 각각보다 더 적은 사용자들에 대한 인코딩 동작을 실행하는 동작을 포함하는 것인, 컴퓨팅 시스템.
  33. 제 23 항에 있어서,
    상기 제 2 기술을 통해 상기 미디어를 상기 복수의 사용자들에게 전달하는 동작은, 각각의 채널이 개별적인 사용자의 인코딩되고 암호화된 미디어 스트림인 멀티-채널 미디어 패킷을 전송하는 동작을 포함하는 것인, 컴퓨팅 시스템.
KR1020167026251A 2014-02-24 2015-02-13 Voip 데이터의 효율적인 믹싱 KR20160126030A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461943666P 2014-02-24 2014-02-24
US61/943,666 2014-02-24
PCT/US2015/015752 WO2015126741A1 (en) 2014-02-24 2015-02-13 Efficiently mixing voip data

Publications (1)

Publication Number Publication Date
KR20160126030A true KR20160126030A (ko) 2016-11-01

Family

ID=53878842

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167026251A KR20160126030A (ko) 2014-02-24 2015-02-13 Voip 데이터의 효율적인 믹싱

Country Status (6)

Country Link
US (1) US20150244658A1 (ko)
EP (1) EP3097657A4 (ko)
KR (1) KR20160126030A (ko)
CN (1) CN106464510A (ko)
TW (1) TWI593270B (ko)
WO (1) WO2015126741A1 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8707454B1 (en) 2012-07-16 2014-04-22 Wickr Inc. Multi party messaging
US10567349B2 (en) 2013-06-25 2020-02-18 Wickr Inc. Secure time-to-live
US10129260B1 (en) 2013-06-25 2018-11-13 Wickr Inc. Mutual privacy management
US9830089B1 (en) 2013-06-25 2017-11-28 Wickr Inc. Digital data sanitization
US9866591B1 (en) 2013-06-25 2018-01-09 Wickr Inc. Enterprise messaging platform
US9698976B1 (en) 2014-02-24 2017-07-04 Wickr Inc. Key management and dynamic perfect forward secrecy
US9584530B1 (en) 2014-06-27 2017-02-28 Wickr Inc. In-band identity verification and man-in-the-middle defense
US9654288B1 (en) 2014-12-11 2017-05-16 Wickr Inc. Securing group communications
US11089160B1 (en) * 2015-07-14 2021-08-10 Ujet, Inc. Peer-to-peer VoIP
US9584493B1 (en) 2015-12-18 2017-02-28 Wickr Inc. Decentralized authoritative messaging
US10291607B1 (en) 2016-02-02 2019-05-14 Wickr Inc. Providing real-time events to applications
US9591479B1 (en) 2016-04-14 2017-03-07 Wickr Inc. Secure telecommunications
US9602477B1 (en) 2016-04-14 2017-03-21 Wickr Inc. Secure file transfer
EP3293923B1 (en) * 2016-09-12 2020-07-22 Alcatel-Lucent España Method and device for media packet distribution over multiple access wireless communication network
KR20210020376A (ko) * 2019-08-14 2021-02-24 라인플러스 주식회사 음성 컨퍼런스의 비대칭 채널을 이용한 오디오 제어 방법 및 시스템

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5390177A (en) * 1993-03-24 1995-02-14 At&T Corp. Conferencing arrangement for compressed information signals
FR2810484B1 (fr) * 2000-06-19 2002-09-06 Cit Alcatel Procede de gestion et agencement de conference pour systeme de communication comportant des terminaux d'usager communiquant sous protocole ip
US7415005B1 (en) * 2001-10-29 2008-08-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Ad hoc selection of voice over internet streams
US9312953B2 (en) * 2003-03-03 2016-04-12 Alexander Ivan Soto System and method for performing in-service optical network certification
KR100552519B1 (ko) * 2004-01-19 2006-02-14 삼성전자주식회사 브이오아이피를 이용한 유엠에스 서비스 제공 시스템 및그 방법
US8347341B2 (en) * 2006-03-16 2013-01-01 Time Warner Cable Inc. Methods and apparatus for centralized content and data delivery
US20080107045A1 (en) * 2006-11-02 2008-05-08 Viktors Berstis Queuing voip messages
US8446846B1 (en) * 2007-02-02 2013-05-21 Radisys Canada Ulc Method of passing signal events through a voice over IP audio mixer device
US8447303B2 (en) * 2008-02-07 2013-05-21 Research In Motion Limited Method and system for automatic seamless mobility
CN101594623B (zh) * 2009-07-08 2012-05-23 杭州华三通信技术有限公司 一种互联网协议语音呼叫的监听方法及设备
US8520821B2 (en) * 2009-07-24 2013-08-27 Citrix Systems, Inc. Systems and methods for switching between computer and presenter audio transmission during conference call
US9049637B2 (en) * 2011-09-09 2015-06-02 Genband Us Llc Automatic transfer of mobile calls between voice over internet protocol (VoIP) and guaranteed service (GS) networks based on quality of service (QoS) measurements
US9019336B2 (en) * 2011-12-30 2015-04-28 Skype Making calls using an additional terminal
US9014028B2 (en) * 2012-03-08 2015-04-21 International Business Machines Corporation Identifying and transitioning to an improved VOIP session
US8934887B2 (en) * 2012-05-31 2015-01-13 Emblaze Ltd. System and method for running mobile devices in the cloud
US8948058B2 (en) * 2012-07-23 2015-02-03 Cisco Technology, Inc. System and method for improving audio quality during web conferences over low-speed network connections
US9094889B2 (en) * 2013-11-19 2015-07-28 Avaya Inc. Method and system to manage mobile data network usage for VoIP calls

Also Published As

Publication number Publication date
CN106464510A (zh) 2017-02-22
EP3097657A4 (en) 2017-09-20
TW201534096A (zh) 2015-09-01
WO2015126741A1 (en) 2015-08-27
TWI593270B (zh) 2017-07-21
EP3097657A1 (en) 2016-11-30
US20150244658A1 (en) 2015-08-27

Similar Documents

Publication Publication Date Title
KR20160126030A (ko) Voip 데이터의 효율적인 믹싱
US11282537B2 (en) Active speaker detection in electronic meetings for providing video from one device to plurality of other devices
EP3281396B1 (en) Conference audio management
US8958326B2 (en) Voice over internet protocol (VOIP) session quality
EP1942646A2 (en) Multimedia conferencing method and signal
US9230546B2 (en) Voice content transcription during collaboration sessions
US9397948B2 (en) Quality of experience for communication sessions
CN103780403B (zh) 电话会议的处理方法、装置和系统
US9711151B2 (en) Quality of experience for communication sessions
US8571189B2 (en) Efficient transmission of audio and non-audio portions of a communication session for phones
US10015103B2 (en) Interactivity driven error correction for audio communication in lossy packet-switched networks
US11417340B2 (en) Fault detection and management in a real-time communication
US8412171B2 (en) Voice group sessions over telecommunication networks
US20120287827A1 (en) Private channels in unified telephony applications
US20180084015A1 (en) System and method for maintaining a collaborative environment
US11381410B1 (en) Dynamic media switching between different devices of same user based on quality of service and performance
EP3652738B1 (en) Early transmission in packetized speech
US20150120830A1 (en) Distributed Audio Mixing and Forwarding