KR102529841B1 - 비디오들에서의 조정 효과들 - Google Patents

비디오들에서의 조정 효과들 Download PDF

Info

Publication number
KR102529841B1
KR102529841B1 KR1020207020482A KR20207020482A KR102529841B1 KR 102529841 B1 KR102529841 B1 KR 102529841B1 KR 1020207020482 A KR1020207020482 A KR 1020207020482A KR 20207020482 A KR20207020482 A KR 20207020482A KR 102529841 B1 KR102529841 B1 KR 102529841B1
Authority
KR
South Korea
Prior art keywords
video
user
data
panel
api call
Prior art date
Application number
KR1020207020482A
Other languages
English (en)
Other versions
KR20200099183A (ko
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
Priority claimed from US15/869,926 external-priority patent/US11102264B2/en
Application filed by 메타 플랫폼스, 인크. filed Critical 메타 플랫폼스, 인크.
Publication of KR20200099183A publication Critical patent/KR20200099183A/ko
Application granted granted Critical
Publication of KR102529841B1 publication Critical patent/KR102529841B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/15Conference systems
    • 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/1066Session management
    • H04L65/1083In-session procedures
    • H04L65/1089In-session procedures by adding media; by removing media
    • 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
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/52User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail for supporting social networking services
    • 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/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • 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
    • H04L65/765Media network packet handling intermediate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/422Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
    • H04N21/42204User interfaces specially adapted for controlling a client device through a remote control device; Remote control devices therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43076Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of the same content streams on multiple devices, e.g. when family members are watching the same movie on different devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • H04N21/4316Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations for displaying supplemental content in a region of the screen, e.g. an advertisement in a separate window
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4431OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4781Games
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4788Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/632Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing using a connection between clients on a wide area network, e.g. setting up a peer-to-peer communication via Internet for retrieving video segments from the hard-disk of other client devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/6437Real-time Transport Protocol [RTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/654Transmission by server directed to the client
    • H04N21/6543Transmission by server directed to the client for forcing some client operations, e.g. recording
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/65Transmission of management data between client and server
    • H04N21/658Transmission by the client directed to the server
    • H04N21/6587Control parameters, e.g. trick play commands, viewpoint selection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/15Conference systems
    • H04N7/152Multipoint control units therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/141Systems for two-way working between two video terminals, e.g. videophone
    • H04N7/142Constructional details of the terminal equipment, e.g. arrangements of the camera and the display
    • H04N2007/145Handheld terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • General Business, Economics & Management (AREA)
  • Library & Information Science (AREA)
  • Software Systems (AREA)
  • Marketing (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)

Abstract

대표적인 실시예들은 조정된 또는 협력 효과들의 조정 활동으로의 적용에 관한 것이다. 조정 활동 프로토콜은 다수의 디바이스들에 걸쳐 상호 작용적 효과들 및 경험들을 동기화하기 위해 제공된다. 프로토콜은 효과들이 실시간 통신(RTC) 채널을 통해 다수의 디바이스들 상에서 개시되고 조정되도록 허용한다. 메시지들은 효과를 협력하여 개시하기 위해 교환될 수 있으며, (일단 개시되면) 일반 데이터는 애플리케이션 프로그래밍 인터페이스(API) 호출들을 통해 교환될 수 있다. 몇몇 실시예들에 따르면, 조정 활동은, 비디오 회의 또는 공유된 비디오-시청 경험과 같은, 공유된 비디오 경험이다. 다른 실시예들에 따르면, 조정 활동은 단일- 또는 다중-플레이어 게임들, 공유된 독서, 사진 앨범과의 공동 상호작용들 등과 같은, 다른 유형들의 경험들과 관련된다.

Description

비디오들에서의 조정 효과들
관련 출원들에 대한 상호-참조
본 출원은, 35 U.S.C. 119(e) 하에서, 2018년 1월 12일에 출원된, "조정 효과(coordinated effects)를 개시하기 위한 방법들 및 시스템들"이라는 제목의, 미국 특허 출원 일련 번호 제15/869,926호(대리인 문서 번호 제1360F0201호)의 일부 계속 출원이며, 이에 대한 우선권을 주장하는, 2018년 1월 12일에 출원된, "비디오들에서의 조정 효과들"이라는 제목의, 미국 특허 출원 일련 번호 제15/870,008호(대리인 문서 번호 제1360F0205.1호)에 대한 이익을 주장한다. 앞서 언급한 출원들의 내용은 여기에서 참조로서 통합된다.
얼굴 마스크 오버레이들, 추가 그래픽들, 변경된 배경들 등과 같은, 미디어 효과들이 비디오 스트림에 적용될 수 있다. 일반적으로, 미디어 효과들은 사용자에 의해 사용자 자신의 비디오 피드를 수정하기 위해 적용되어 왔다(예컨대, 사용자 자신의 얼굴에 마스크를 적용하는). 최근에, 그러나, 조정 활동 프로토콜이 적어도 부분적으로, 효과를 개시하지 않은 클라이언트 디바이스에 의해, 구현예가 협력하여 핸들링되는 조정 미디어 효과들을 허용하기 위해 개발되어 왔다. 이러한 프로토콜의 대표적인 구현예들은 미국 특허 출원 일련 번호 제15/869,926호에서 설명된다.
효과를 개시하지 않은 클라이언트 디바이스를 수반한 비교적 복잡한, 조정 효과들을 구현하기 위한 기술들이 여기에서 개시된다.
본 발명에 따른 실시예들은 특히 방법, 저장 매체 및 시스템에 관한 첨부된 청구항들에서 개시되며, 여기에서 하나의 청구항 카테고리, 예컨대, 방법에서 언급된 임의의 특징은 또 다른 청구항 카테고리, 예컨대, 시스템, 컴퓨터 프로그램 제품에서 또한 주장될 수 있다. 첨부된 청구항들에서의 종속성들 또는 역 참조들은 단지 형식적인 이유들로 선택된다. 그러나, 임의의 이전 청구항들(특히 다수의 종속성들)에 대한 의도적인 역 참조에서 기인한 임의의 주제가 또한 주장될 수 있으며, 따라서 청구항들 및 그것의 특징들의 임의의 조합이 개시되며 첨부된 청구항들에서 택한 종속성들에 관계없이 주장될 수 있다. 청구될 수 있는 주제는 첨부된 청구항들에서 제시된 바와 같은 특징들의 조합들뿐만 아니라 또한 청구항들에서의 특징들의 임의의 다른 조합을 포함하며, 여기에서 청구항들에서 언급된 각각의 특징은 청구항들에서 임의의 다른 특징 또는 다른 특징들의 조합과 조합될 수 있다. 더욱이, 여기에서 설명되거나 또는 묘사된 실시예들 및 특징들 중 임의의 것은 별개의 청구항에서 및/또는 여기에서 설명되거나 또는 묘사된 임의의 실시예 또는 특징과 또는 첨부된 청구항들의 특징들 중 임의의 것과 임의로 조합하여 주장될 수 있다.
본 발명에 따른 실시예에서, 특히 컴퓨터-구현 방법은:
제 1 디바이스 및 제 2 디바이스로의 비디오 데이터의 송신(transmission)을 용이하게 하는(facilitating) 단계;
디바이스-애그노스틱(device-agnostic) 조정 활동 프로토콜에 따라 미디어 효과를 개시하는 단계로서, 상기 미디어 효과는 상기 제 1 디바이스에서 및 상기 제 2 디바이스에서 보여지는 바와 같이 상기 비디오 데이터를 수정하는, 상기 미디어 효과를 개시하는 단계; 및
상기 미디어 효과에 관한 애플리케이션 프로그래밍 인터페이스(API) 호출을 수신하는 단계로서, 상기 API 호출은 상기 조정 활동에 따라 상기 제 1 디바이스로부터 이루어지고, 상기 API 호출은 상기 비디오 데이터에 대해 이루어질 수정을 특정하는 정보와 연관되는, 상기 API 호출을 수신하는 단계를 포함할 수 있다.
상기 API 호출과 연관된 정보는 포맷이 상기 조정 활동 프로토콜에 의해 미리 정의되지 않은 일반 데이터를 포함할 수 있다.
상기 API 호출과 연관된 정보는 상기 조정 활동 프로토콜에 의해 미리 정의된 서비스와 연관된 포맷팅 데이터를 포함할 수 있다.
상기 포맷팅 데이터(formatted data)는 상기 제 1 디바이스 및 상기 제 2 디바이스 상에서 비디오 재생을 변경하기 위한 명령을 포함할 수 있다.
상기 포맷팅 데이터는 정지 명령, 시작 명령, 일시정지 명령, 또는 동기화 명령 중 적어도 하나를 포함한 비디오 제어 명령을 포함할 수 있다.
상기 포맷팅 데이터는 상기 비디오 데이터가 액세스된 엔트리 포인트에 기초하여 비디오 섬네일 모드를 트리거하기 위한 명령을 포함할 수 있다.
본 발명에 따른 실시예에서, 상기 비디오 데이터는 비디오 회의 데이터를 포함할 수 있고; 상기 제 1 디바이스 및 상기 제 2 디바이스 각각은 제 1 사용자의 비디오를 디스플레이하기 위한 제 1 패널 및 제 2 사용자의 비디오를 디스플레이하기 위한 제 2 패널을 포함할 수 있는 인터페이스를 디스플레이할 수 있고; 상기 미디어 효과는 상기 제 1 사용자가 상기 제 1 패널의 측면을 향해 기울거나 또는 밀 때 개시될 수 있으며; 상기 수정은 상기 제 1 사용자가 기울거나 또는 민 측면의 방향으로 상기 제 1 패널의 크기를 확대하는 것, 및 상기 제 1 사용자의 측면과 연관된 방향으로 제 2 패널의 크기를 감소시키는 것을 포함할 수 있다.
본 발명에 따른 실시예에서, 비-일시적 컴퓨터-판독 가능한 매체는 지시들을 저장할 수 있으며, 상기 지시들은 하나 이상의 프로세서들에 의해 실행될 ‹š, 상기 프로세서들로 하여금:
제 1 디바이스 및 제 2 디바이스로의 비디오 데이터의 송신을 용이하게 하고;
디바이스-애그노스틱 조정 활동 프로토콜에 따라 미디어 효과를 개시하게 하는 것으로서, 상기 미디어 효과는 상기 제 1 디바이스에서 및 상기 제 2 디바이스에서 보여지는 바와 같이 상기 비디오 데이터를 수정하는, 상기 미디어 효과를 개시하게 하며;
상기 미디어 효과에 관한 애플리케이션 프로그래밍 인터페이스(API) 호출을 수신하게 하는 것으로서, 상기 API 호출은 상기 조정 활동에 따라 상기 제 1 디바이스로부터 이루어지며, 상기 API 호출은 상기 비디오 데이터에 대해 이루어질 수정을 특정하는 정보와 연관되는, 상기 API 호출을 수신하게 한다.
상기 API 호출과 연관된 정보는 포맷이 상기 조정 활동 프로토콜에 의해 미리 정의되지 않은 일반 데이터를 포함할 수 있다.
상기 API 호출과 연관된 정보는 상기 조정 활동 프로토콜에 의해 미리 정의된 서비스와 연관된 포맷팅 데이터를 포함할 수 있다.
상기 포맷팅 데이터는 상기 제 1 디바이스 및 상기 제 2 디바이스 상에서 비디오 재생을 변경하기 위한 명령을 포함할 수 있다.
상기 포맷팅 데이터는 정지 명령, 시작 명령, 일시정지 명령, 또는 동기화 명령 중 적어도 하나를 포함한 비디오 제어 명령을 포함할 수 있다.
상기 포맷팅 데이터는 상기 비디오 데이터가 액세스된 엔트리 포인트에 기초하여 비디오 섬네일 모드를 트리거하기 위한 명령을 포함할 수 있다.
상기 비디오 데이터는 비디오 회의 데이터를 포함할 수 있고; 상기 제 1 디바이스 및 상기 제 2 디바이스 각각은 제 1 사용자의 비디오를 디스플레이하기 위한 제 1 패널 및 제 2 사용자의 비디오를 디스플레이하기 위한 제 2 패널을 포함할 수 있는 인터페이스를 디스플레이할 수 있고; 상기 미디어 효과는 상기 제 1 사용자가 상기 제 1 패널의 측면을 향해 기울거나 또는 밀 때 개시될 수 있으며; 상기 수정은 상기 제 1 사용자가 기울거나 또는 민 측면의 방향으로 상기 제 1 패널의 크기를 확대하는 것, 및 상기 제 1 사용자의 측면과 연관된 방향으로 제 2 패널의 크기를 감소시키는 것을 포함할 수 있다.
본 발명에 따른 실시예에서, 장치는:
제 1 디바이스 및 제 2 디바이스로 송신될 비디오 데이터를 유지하는 비-일시적 컴퓨터-판독 가능한 매체;
하드웨어 프로세서 회로;
디바이스-애그노스틱 조정 활동 프로토콜에 따라 미디어 효과를 개시하도록 구성된 미디어 효과 개시 로직으로서, 상기 미디어 효과는 상기 제 1 디바이스에서 및 상기 제 2 디바이스에서 보여지는 바와 같이 상기 비디오 데이터를 수정하는, 상기 미디어 효과 개시 로직; 및
상기 미디어 효과에 관한 애플리케이션 프로그래밍 인터페이스(API) 호출을 수신하도록 구성된 미디어 효과 정보 교환 로직으로서, 상기 API 호출은 상기 조정 활동에 따라 상기 제 1 디바이스로부터 이루어지고, 상기 API 호출은 상기 비디오 데이터에 대해 이루어질 수정을 특정하는 정보와 연관되는, 상기 미디어 효과 정보 교환 로직을 포함할 수 있다.
상기 API 호출과 연관된 정보는 상기 조정 활동 프로토콜에 의해 미리 정의된 서비스와 연관된 포맷팅 데이터를 포함할 수 있다.
상기 포맷팅 데이터는 상기 제 1 디바이스 및 상기 제 2 디바이스 상에서 비디오 재생을 변경하기 위한 명령을 포함할 수 있다.
상기 포맷팅 데이터는 정지 명령, 시작 명령, 일시정지 명령, 또는 동기화 명령 중 적어도 하나를 포함한 비디오 제어 명령을 포함할 수 있다.
상기 포맷팅 데이터는 상기 비디오 데이터가 액세스된 엔트리 포인트에 기초하여 비디오 섬네일 모드를 트리거하기 위한 명령을 포함할 수 있다.
상기 비디오 데이터는 비디오 회의 데이터를 포함할 수 있고; 상기 제 1 디바이스 및 상기 제 2 디바이스 각각은 제 1 사용자의 비디오를 디스플레이하기 위한 제 1 패널 및 제 2 사용자의 비디오를 디스플레이하기 위한 제 2 패널을 포함할 수 있는 인터페이스를 디스플레이할 수 있고; 상기 미디어 효과는 상기 제 1 사용자가 상기 제 1 패널의 측면을 향해 기울거나 또는 밀 때 개시될 수 있으며; 상기 수정은 상기 제 1 사용자가 기울거나 또는 민 측면의 방향으로 상기 제 1 패널의 크기를 확대시키는 것, 및 상기 제 1 사용자의 측면과 연관된 방향으로 상기 제 2 패널의 크기를 감소시키는 것을 포함할 수 있다.
본 발명에 따른 실시예에서, 하나 이상의 컴퓨터-판독 가능한 비-일시적 저장 미디어는 실행될 때 본 발명에 따른 방법 또는 상기 언급된 실시예들 중 임의의 것을 수행하도록 동작 가능한 소프트웨어를 구체화할 수 있다.
본 발명에 따른 실시예에서, 시스템은: 하나 이상의 프로세서들; 및 상기 프로세서들에 결합되며 상기 프로세서에 의해 실행 가능한 지시들을 포함한 적어도 하나의 메모리를 포함할 수 있으며, 상기 프로세서들은 상기 지시들을 실행할 때, 본 발명에 따른 방법 또는 상기 언급된 실시예들 중 임의의 것을 수행하도록 동작 가능하다.
본 발명에 따른 실시예에서, 바람직하게는, 컴퓨터-판독 가능한 비-일시적 저장 미디어를 포함한, 컴퓨터 프로그램 제품은, 데이터 프로세싱 시스템상에서 실행될 때, 본 발명에 따른 방법, 또는 상기 언급된 실시예들 중 임의의 것을 수행하도록 동작 가능할 수 있다.
본 발명에 따르면, 효과들은 상호작용 효과들을 동기화하기 위한 프로토콜에 따라 적용될 수 있으며 다수의 디바이스들에 걸쳐 경험한다. 이러한 조정 활동 프로토콜은 효과들이 실시간 통신(RTC) 채널을 통해 다수의 디바이스들 상에서 개시되고 조정되도록 허용한다. 프로토콜은 효과를 협력하여 개시하기 위해 교환 메시지들을 수반하며, (일단 개시되면) 애플리케이션 프로그래밍 인터페이스(API) 호출들을 통해 일반 데이터를 교환한다. 따라서, 시스템은 데이터-형 및 플랫폼 애그노스틱 양쪽 모두여서, 효과 개발자들이 데이터를 어떻게 해석할지를 정의하도록 허용한다.
도 1a는 미디어 효과가 조정 방식으로 개시 사용자 및 비-개시 사용자의 비디오 피드에 적용되는 비디오 회의 인터페이스의 예를 묘사한다;
도 1b, 도 1c, 및 도 1d는 조정 효과가 하나의 사용자와 연관된 패널을 줄어들게 하고 또 다른 사용자와 연관된 패널을 커지게 하는 비디오 회의 인터페이스를 묘사한다;
도 1e 및 도 1f는 공유된 비디오 경험의 예를 묘사한다;
도 1g는 공유된 독서 경험의 예를 묘사한다;
도 1h는 공유된 사진 앨범 경험의 예를 묘사한다;
도 1i 및 도 1j는 조정된 게이밍 경험의 예를 묘사한다;
도 2a는 대표적인 실시예들과 함께 사용하기에 적합한 대표적인 클라이언트/서버 환경을 묘사한 블록도이다;
도 2b는 조정 효과 개시 메시지에 대한 대표적인 데이터 구조를 묘사한다;
도 2c는 일반 데이터 또는 미리 정의된 유형의 데이터를 교환하기 위한 조정 효과 데이터 교환 메시지에 대한 대표적인 데이터 구조를 묘사한다;
도 3a 내지 도 3c는 클라이언트/서버 환경에서 대표적인 정보 교환을 묘사한 데이터 흐름도들이다;
도 4a 및 도 4b는 조정 활동 프로토콜에 따라 조정 효과를 적용하기 위한 대표적인 방법을 도시한 흐름도를 묘사한다;
도 5a는 대표적인 집중형 통신 서비스를 포함한 시스템의 개요를 제공하는 블록도이다;
도 5b는 대표적인 분산형 통신 서비스를 포함한 시스템의 개요를 제공하는 블록도이다;
도 5c는 도 5a 및 도 5b의 소셜 네트워킹 그래프를 보다 상세하게 묘사한다;
도 6은 메시징 서비스를 위한 시스템의 예를 묘사한 블록도이다;
도 7은 대표적인 실시예들과 함께 사용하기에 적합한 대표적인 컴퓨팅 디바이스를 예시한 블록도이다;
도 8은 대표적인 통신 아키텍처를 묘사한다; 및
도 9는 대표적인 다중캐리어 통신 디바이스를 묘사한 블록도이다.
효과를 개시하지 않은 클라이언트 디바이스를 수반한 비교적 복잡한, 조정 효과들을 구현하기 위한 기술들이 여기에서 개시된다. 이들 효과들은 비디오-중심 경험(예컨대, 비디오 호출들, 비디오의 공유 시청) 또는 비-비디오-중심 경험(예컨대, 단일- 또는 다-층 게임들, 공유된 독서 경험들, 공유된 사진 앨범들 등)의 맥락에서 적용될 수 있다.
효과들은 상호작용 효과들을 동기화하기 위한 프로토콜에 따라 적용될 수 있으며 다수의 디바이스들에 걸쳐 경험한다. 이러한 조정 활동 프로토콜은 효과들이 실시간 통신(RTC) 채널을 통해 다수의 디바이스들 상에서 개시되고 조정되도록 허용한다. 프로토콜은 효과를 협력하여 개시하기 위해 교환 메시지들을 수반하며, (일단 개시되면) 애플리케이션 프로그래밍 인터페이스(API) 호출들을 통해 일반 데이터를 교환한다. 따라서, 시스템은 데이터-형 및 플랫폼 애그노스틱 양쪽 모두여서, 효과 개발자들이 데이터를 어떻게 해석할지를 정의하도록 허용한다.
몇몇 경우들에서, 상위-레벨 서비스들은 미리 정의된 유형들의 데이터(예컨대, 차례 협상들, 차례 양보, 스코어 기록, 리더십 선출 등과 같은 중요한 공통 활동들에 대해)를 교환하기 위해 제공될 수 있다.
프로토콜은 비디오 스트림에서의 효과들을 동기화하고, 비-비디오-중심 경험들(예컨대, 공동 비디오-시청, 독서, 다중플레이어 게임들, 보기 경험을 가진 단일-플레이어 게임들, 라운드-로빈 기반으로 단기 단일-플레이어 게임들, 사진 앨범 보기/조직)을 조정하기 위해 사용될 수 있다.
예를 들어, 공유된 경험은 다수의 참여자들과의 비디오 회의일 수 있다. 일 예에서, 조정 효과는 하나의 사용자(개시 사용자)에 의해 또 다른 사용자(비-개시 사용자)에게 적용될 수 있다. 이것은, 예컨대, 개시 사용자의 비디오가 처리되는(예컨대, 비-개시 사용자에 콧수염을 그리며, 이것은 그 후 모든 참여자들에게 가시적이게 된다) 방식에 영향을 주지 않고 비-개시 사용자(들)에게 효과를 적용하는 것을 수반할 수 있거나, 또는 개시 사용자가 개시 사용자뿐만 아니라 하나 이상의 비-개시 사용자들을 수반하는 효과를 개시할 수 있다(예컨대, 개시 사용자는 그 다음에 비-개시 사용자들의 비디오에 나타나고 그들이 부딪칠 때 "화재" 애니메이션이 이들 사용자들에게 적용되게 하기 위해, 불덩이를 던지는 것을 흉내낼 수 있으며, 이것은 개시 사용자의 손에 나타나고 그 후 화면 밖에서 던져지는 것처럼 보인다).
조정 효과들은 또한 공동 경험에서 비디오를 보는 다수의 사용자들에게 적용될 수 있다. 이 경우에, 조정 효과는 비디오를 시작하고, 비디오를 멈추고, 비디오를 일시정지하고, 참여자 디바이스들 간에 비디오 위치를 동기화하고, 비디오를 섬네일 모드로 밀어넣거나 또는 비디오를 전체-스크린 구성으로 증가시키는 등을 위해 적용 가능할 수 있다.
사용자들 간에 조정되는 경험은 또한 사진 앨범을 보거나 또는 조직하는 것, 책을 협력하여 읽는 것, 또는 다중플레이어 게임에 참여하는 것(또는 다수의 디바이스들 간에 몇몇 유형의 요구된 조정을 가진 단일-플레이어 게임)과 같은, 비-비디오 중심일 수 있다. 다양한 조정 효과들이 조정된 경험의 상태를 변경하기 위해 적용될 수 있다.
상기 설명된 활동들은 그것들이 비디오 회의와 같은, 비디오 구성요소의 존재를 요구하지 않으며, 조정 효과들이 비-비디오 정보에 적용된다는 점에서 비-비디오-중심이다. 그럼에도 불구하고, 활동들은 비디오 구성요소와 관련되어 이용될 수 있다(예컨대, 다른 사용자들이 비디오 회의를 보고 통신하는 동안 사용자는 게임을 플레이한다). 이 경우에, 조정 효과들은 비디오 구성요소에, 비-비디오 구성요소에, 또는 비디오 구성요소 및 비-비디오 구성요소 양쪽 모두에 적용될 수 있다.
이러한 간단한 요약은 이하에서 보다 상세하게 논의되는 개념들에 대한 비-제한적인 소개로서 작용하도록 의도된다. 그러나, 추가의 대표적인 실시예들을 논의하기 전에, 데이터 프라이버시에 대한 간단한 주의가 먼저 제공된다. 프라이버시 설정들 및 인증에 대한 더 상세한 설명은 다음의 도면들과 관련되어 다루어질 것이다.
데이터 프라이버시에 대한 주의
여기에서 설명된 몇몇 실시예들은 하나 이상의 사용자들에 의해 자발적으로 제공된 정보를 포함할 수 있는 트레이닝 데이터 또는 메트릭들을 이용한다. 이러한 실시예들에서, 데이터 프라이버시는 다수의 방식들로 보호될 수 있다.
예를 들어, 사용자는 사용자 데이터가 수집되거나 또는 사용되기 전에 임의의 데이터 수집에 참여하도록 요구될 수 있다. 사용자는 또한 임의의 데이터 수집에서 탈퇴하기 위한 기회를 제공받을 수 있다. 데이터 수집에 참여하기 전에, 사용자는 데이터가 사용될 방식들, 데이터가 얼마나 오래 유지될지, 및 개시로부터 데이터를 보호하기 위해 가동 중인 안전장치들(safeguards)에 대한 설명을 제공받을 수 있다.
데이터가 수집된 사용자를 식별하는 임의의 정보는 데이터로부터 제거되거나 또는 분리될 수 있다. 임의의 식별 정보가 유지될 필요가 있는 경우에(예컨대, 규제 요건들을 충족시키기 위해), 사용자는 식별 정보의 수집, 식별 정보로 만들어질 용도들, 및 식별 정보가 유지될 시간의 양을 통지받을 수 있다. 구체적으로 사용자를 식별하는 정보는 제거될 수 있으며, 예를 들어, 일반 식별 번호 또는 다른 비-특정 형태의 식별로 대체될 수 있다.
일단 수집되면, 데이터는 데이터로의 허가되지 않은 액세스를 방지하기 위해 안전장치들을 포함하는 보안 데이터 저장 위치에 저장될 수 있다. 데이터는 암호화된 포맷으로 저장될 수 있다. 식별 정보 및/또는 비-식별 정보는 미리 결정된 시간 기간 후 데이터 저장 장치로부터 제거될 수 있다.
특정한 프라이버시 보호 기술들이 예시의 목적들을 위해 여기에서 설명되지만, 이 기술분야에서의 통상의 기술자는 프라이버시가 다른 방식들로 또한 보호된다는 것을 인식할 것이다. 데이터 프라이버시에 대한 추가 세부사항들은 여기에서 네트워크 실시예들을 설명하는 섹션에서 논의된다.
사용자의 프라이버시 조건들이 충족된다고 가정하면, 대표적인 실시예들은 다른 가능성들 중에서, 소셜 네트워크에서 또는 이동 디바이스 상에서의 메시징을 포함하여(예컨대, 메시징 클라이언트 애플리케이션을 통해 또는 단문 메시지 서비스를 통해), 매우 다양한 메시징 시스템들에서 전개될 수 있다. 메시징 시스템에서 동기식 비디오 대화에 참여하기 위한 대표적인 로직 및 프로세스들의 개요가 다음에 제공된다.
이해를 돕기 위해, 일련의 예들이 먼저 기본 구현예들에 대한 상세한 설명들이 설명되기 전에 제공될 것이다. 이들 예들은 단지 예시적이도록 의도되며 본 발명은 도시된 실시예들에 제한되지 않는다는 것이 주의된다.
조정 효과들
참조가 이제 도면들에 대해 이루어지며, 유사한 참조 숫자들은 전체에 걸쳐 유사한 요소들을 나타내기 위해 사용된다. 다음의 설명에서, 설명의 목적들을 위해, 다수의 특정 세부사항들이 그것의 철저한 이해를 제공하기 위해 제시된다. 그러나, 신규 실시예들은 이들 특정 세부사항들 없이 실시될 수 있다. 다른 인스턴스들에서, 잘 알려진 구조들 및 디바이스들은 그것의 설명을 용이하게 하기 위해 블록도 형태로 도시된다. 의도는 청구된 주제와 일치하는 모든 수정들, 등가물들, 및 대안들 모두를 커버하는 것이다.
도면들 및 수반된 설명에서, 지정들("a" 및 "b" 및 "c"(및 유사한 지정자들))은 임의의 양의 정수를 나타내는 변수들이도록 의도된다. 따라서, 예를 들어, 구현예가 a=5에 대해 값을 설정하면, 구성요소들(122-1 내지 122-a)로서 예시된 구성요소들(122)의 완전한 세트는 구성요소들(122-1, 122-2, 122-3, 122-4, 및 122-5)을 포함할 수 있다. 실시예들은 이러한 맥락으로 제한되지 않는다.
도 1a 내지 도 1j는 다수의 사용자들이 공유된 경험에 참여할 수 있는 대표적인 인터페이스들을 묘사한다. 다양한 유형들의 조정 효과들이 각각의 인터페이스와 관련되어 설명될 것이다.
일반적으로, 조정 효과는 조정 활동 및/또는 조정 활동의 상태와 연관된 데이터를 수정하는 효과일 수 있으며, 여기에서 수정은 효과를 개시하지 않은 디바이스에 의한 협력을 요구한다.
조정 효과는 마스크들 또는 애니메이션들과 같은, 시각적 데이터를 포함하며, 이것은 비디오 또는 인터페이스를 수정하기 위해 비디오 또는 인터페이스에 적용될 수 있다. 그러나, 조정 효과들은 애니메이션들 또는 그래픽 데이터에 제한되지 않는다. 예를 들어, 오디오 효과는 비디오 스트림에 적용될 수 있다. 오디오 효과는, 예를 들어, 오디오를 스트림에 부가하는 것(예컨대, 웃음 트랙 또는 박수 트랙과 같은, 오디오 트랙을 플레이하는 것), 스트림에서 오디오를 수정하는 것(예컨대, 음성의 피치, 볼륨 등과 같은, 사용자의 음성의 속성을 변경하는 것), 오디오 스트림에서 노래에 맞는 비트를 플레이하는 것 등을 포함할 수 있다.
더욱이, 여기에서 설명된 기술들은 비디오를 수정하는 시청각 데이터의 형태에서 조정 효과들에 제한되지 않는다. 몇몇 실시예들에서, 메시지들은 임의의 조정 활동(예컨대, 단일- 또는 다중-플레이어 게임들, 조정된 보기 경험들 등)의 상태를 수정하기 위해 조정 활동 프로토콜에 따라 교환될 수 있다. 수정은 시각적 또는 가청 데이터에 적용된 그래픽 또는 가청 오버레이를 포함할 수 있거나, 또는 조정 활동의 상태를 변경할 수 있다(예컨대, 다중플레이어 게임에서 갈등 해소의 목적들로 리더 디바이스를 선출하는 것, 게임에서 차례를 넘기는 것, 상호작용 책, 비디오, 또는 사진 앨범에 명령들을 발행하는 것 등).
조정 효과는 조정 효과를 개시한 사용자의 비디오 또는 경험에 적용될 수 있다. 조정 효과는 사용자에 의해 직접(예컨대, 온-스크린 버튼을 누르거나 또는 그 외 조정 효과를 적용하기 위해 명령을 발행함으로써), 또는 간접적으로(예컨대, 조정 효과가 적용되어야 하는 조건을 검출함으로써, 미리 결정된 시간들 또는 간격들로 조정 효과를 적용함으로써 등) 적용될 수 있다.
몇몇 실시예들에서, 조정 효과는 미디어 효과를 적용한 참여자와 상이한 참여자에 적용할 수 있거나, 또는 조정 방식으로 다수의 사용자들에 적용할 수 있다. 도 1a는 미디어 효과가 비디어 회의에서의 다수의 사용자들에게 적용되는 인터페이스의 예를 묘사한다.
이 경우에, 시스템은 제 2 참여자(Jack)로 향한 제 1 사용자(Jill)와 연관된 감정 상태(예컨대, 로맨틱 감정 상태)를 검출하였다. 그러므로, 시스템은, 조정 활동 프로토콜을 통해, Jill과 Jack의 비디오 스트림들 양쪽 모두에 "로맨틱" 조정 효과를 개시한다. 이 경우에, 동영상으로 된 키스하는 미디어 효과(122-1)가, 처음에 Jill의 입에 중심을 두고, Jill의 디스플레이에 나타난다. 효과(122-1)는 Jill의 스크린의 에지까지 날아가는 것처럼 보이며 사라진다. 그것은 Jack의 디스플레이상에서 미디어 효과(122-2)처럼 다시 나타나며 Jack의 뺨으로 날아간다. 통신에서의 각각의 참여자는 이러한 조정 미디어 효과를 볼 수 있다. 다른 예들은 화난 사용자의 얼굴을 공룡처럼 만화 영화로 만들고 또 다른 사용자에게 불을 내뱉는 사용자를 보여주고, 눈덩이들을 던지는 것 등을 포함할 수 있다.
다중-사용자 조정 효과는 감정 상태가 검출된 원래 (선택한) 사용자 및 적어도 하나의 다른 사용자에게 적용될 수 있다. 다른 사용자는, 예를 들어, 현재-활성인 사용자(예컨대, 현재 말하고 있거나 또는 그 외 가장 관련 있는 것으로 고려되는 사용자), 동일한 또는 대응하는 감정 상태를 가진 또 다른 사용자, 원래 사용자가 현재 보고 있는 디스플레이의 일 부분과 연관된 사용자(예컨대, 사용자가 또 다른 사용자의 비디오 스트림에서 시작하고 다중-사용자 미디어 효과를 트리거하는 감정을 느낀다면, 미디어 효과는 다른 사용자의 비디오 스트림에서 타겟팅될 수 있다), 또는 선택된 다른 사용자일 수 있다.
몇몇 실시예들에서, 조정 효과는 자동으로 직접 적용될 수 있다. 다른 경우들에서, 다수의 후보 조정 효과들이 식별될 수 있으며, 추천된 조정 효과들의 세트는 개시 사용자에 의한 선택을 위해 자동으로 제공될 수 있다.
비디오 호출에서(또는 다른 비디오 데이터에) 가청 또는 그래픽 조정 효과를 적용하는 예에서, 조정 활동 프로토콜은 효과를 개시하고, 효과를 적용할 각각의 사용자가 필요한 데이터(예컨대, 효과를 적용하기 위한 로직, 애니메이션 데이터 등)를 갖는다는 것을 보장하며, 효과가 적용되도록 허용하는 데이터를 교환하기 위해 사용될 수 있다. 예를 들어, 효과의 위치 또는 경로는 사용자의 특정한 특징(예컨대, 코, 입, 손들)의 위치에 의존할 수 있다. 효과를 조정하기 위해(예컨대, 도 1a에서 키스를 하는 것은 Jill의 패널의 에지에서의 위치로부터 사라지며 Jack의 패널 상에서의 대응하는 위치에 다시 나타난다), 위치 정보가 조정 활동 프로토콜을 통해 교환될 수 있다.
도 1b 내지 도 1d에 도시된 또 다른 예에서, 조정 효과는 비디오 회의를 위한 그래픽 사용자 인터페이스(GUI)의 상태를 수정할 수 있다. 도 1b에 묘사된 바와 같이 GUI에서, 사용자(Jill)는 제 1 패널(106)과 연관되며, 사용자(Jack)는 제 2 패널(104)과 연관된다. 각각의 패널들 각각은 폭 및 높이에 의해 정의된 각각의 크기를 갖는다. 이 경우에, 각각의 패널의 폭 및 높이는 처음에 동일하다. 예를 들어, 제 1 패널(106) 및 제 2 패널(104)의 폭은 각각 처음에 특정한 값(d1)으로 설정된다.
비디오 회의 애플리케이션은, 조정 활동 프로토콜을 통해, GUI를 수정하는 조정 효과들을 지원할 수 있다. 이 경우에, 도 1c에 도시된 바와 같이, 하나 이상의 조정 효과들은 개시 사용자(이 경우에, Jill)가 그녀의 패널(106)의 에지들(108) 중 하나로 기울어질 때 트리거될 수 있다. 사용자가 충분한 속도를 갖고 패널로 기울어진다면(또는 그녀의 손으로 패널(106)의 에지에 대고 미는 것에 의해서와 같은, 또 다른 방식으로 효과를 트리거한다면), 비디오 회의 애플리케이션은 하나 이상의 조정 효과들의 애플리케이션과 이러한 조건을 연관시킬 수 있다. 개시한 클라이언트 디바이스로서 동작하는, Jill의 클라이언트 디바이스는 이러한 조건이 충족되었음을 검출할 수 있으며 조정 활동 프로토콜을 통해 연관된 효과들을 개시할 수 있다. 제 1 효과로서, 애플리케이션은 사용자의 손이 비디오 호출에서 각각의 참여자의 디바이스 상에 플레이될 패널(110)의 에지(108)와 접촉할 때 사운드(두드리는 사운드와 같은)가 플레이되게 할 수 있다. 선택적으로, 애플리케이션은 또한 인터페이스를 흔드는 것과 같은, 즉각적인 시각적 효과를 야기할 수 있다.
동시에 또는 그 다음에, 애플리케이션은 각각의 패널들(106, 104)의 크기가 변하게 할 수 있다. 이 경우에, 제 1 패널(106)은 Jill이 민 방향으로(즉, 에지(108)의 방향으로) 폭이 확대되는 반면, 제 2 패널(104)은 동일한 방향으로 대응하는 양만큼 줄어든다. 그 결과, 제 2 패널(104)은 d2의 폭으로 줄어들며, 이것은 제 1 패널(106)의 폭(d3)보다 작다. 원래 d1 크기로부터 뒤이은 d2/d3 크기들로 변경하기 위한 조정의 양은 개시 사용자가 얼마나 힘차게 에지(108)에 대고 미는 것처럼 보이는지(예컨대, 얼마나 빨리 사용자가 에지(108)로 기울어지는지) 및/또는 얼마나 오래 사용자가 에지(108)에 대고 유지하는지에 의존할 수 있다. 미디어 효과가 적용되도록 허용한 정보(예컨대, 개시 사용자의 머리 또는 손들의 위치, 사용자가 움직이는 속도, 사용자가 에지(108)를 터치한 이래 경과한 시간의 양 등)는 조정 활동 프로토콜을 통해 비-개시 사용자들과 교환될 수 있다.
이러한 실시예는, 예를 들어, 사용자가 그들의 비디오 피드의 배경 및/또는 스크린 밖에 있는 무언가를 보여주고 싶을 때 유용할 수 있다.
도 1b 내지 도 1d로부터의 예는 또한 다수의 조정 효과들이 동시에 존재하며 및/또는 서로의 최상부에서 계층화될 수 있음을 보여주도록 작용한다. 예를 들어, 도 1c로부터의 오디오 조정 효과(110)는 패널(106)이 확대되기 시작하는 것과 동시에 적용될 수 있다. 추가 실시예들에서, 조정 효과들은 또한 비-조정 효과들과 계층화될 수 있다.
이 경우에, Jill의 디바이스는 개시 디바이스로 작용한다는 것이 또한 주목할 만하다. 패널 확대 조정 효과는 Jack의 패널 크기를 수정하여, Jack을 비-개시 사용자로 만든다. 그러나, 변화들이 각각의 사용자의 GUI를 수정하기 위해 그들의 디바이스들에서 또한 조정되어야 하기 때문에, 회의에서의 다른 참여자들이 또한 비-개시 사용자들로서 플래그될 수 있다. 키스 효과가 적용되는, 도 1a로부터의 예에서, 미디어 효과가 Jack 및 Jill의 비디오 스트림들에 적용될 수 있으며 그 후 반드시 다른 사용자들에 의한 협력을 요구하지 않고 다른 사용자들로 브로드캐스트할 수 있기 때문에, 이들 다른 사용자들을 비-개시 사용자들로서 태그하는 것은 필요하지 않을 수 있다. 유사하게, 오디오 효과(110)는, 오디오 효과(110)가 효과의 적용 시 다른 사용자들이 협력하는 것을 반드시 요구하지 않고 개시 사용자의 오디오 데이터에 부가될 수 있기 때문에, 조정 효과일 필요는 없다.
도 1e는 다수의 사용자들이 공동 비디오-시청 경험에서 공유하는(예컨대, 온라인 비디오 공유 서비스를 통해) 또 다른 예를 묘사한다. 이 예에서, 비디오(118)는 각각의 참여자의 클라이언트 애플리케이션의 인터페이스상에서 디스플레이되며, 비디오의 재생은 각각의 사용자가 동일한 재생 상태에서, 동시에, 동일한 비디오를 보도록 동기화된다.
공동 경험을 생성하기 위해, 도 1e에서 묘사된 실시예는 2차 특징으로서 비디오 회의를 포함한다. 비디오-시청 경험을 보는 참여자는 프리뷰 패널(114)에서 그 자신의 비디오 회의 데이터의 프리뷰를 볼 수 있다. 다른 참여자들은 참여자 패널들(116-1, 116-2, 116-3 등)에 나타난다. 대안적으로, 참여자들은 오디오 회의를 통해 통신할 수 있고(도 1g 내지 도 1h와 관련되어 설명되는 바와 같이), 메시징 인터페이스에서 메시지들을 교환할 수 있거나(예컨대, 도 1f와 관련되어 설명되는 바와 같이), 또는 애플리케이션은 참여자 통신 능력들을 제공하는 것을 억제할 수 있으며 대신에 간단히 참여자 경험을 동기화하거나 또는 조정할 수 있다(도 1i의 예에서처럼). 이들 상이한 통신 능력들은 여기에서 설명된 실시예 중 임의의 것과 조합될 수 있다.
비디오의 재생을 제어하기 위해, 각각의 참여자는 재생 제어(120)를 제공받는다. 제어들(120)은 정지, 플레이, 일시정지, 빨리 감기, 되감기 등과 같은, 비디오의 상태를 변경하는데 적합한 임의의 제어들을 포함할 수 있다. 이들 제어들(120)을 활성화하는 것은 각각의 참여자의 재생 상태에서의 변화를 가져오는 조정 효과가 활성화되게 할 수 있다.
조정 효과들은 다수의 방식들로 조정 활동 프로토콜을 통해 구현될 수 있다. 예를 들어, 애플리케이션은 개시 메시지를 사용하여 일반적인 "비디오 재생" 조정 효과를 개시하며, 그 후 데이터 메시지들에서 일반 데이터로서 개개의 지시들을 송신할 수 있다. 대안적으로, 애플리케이션은 각각의 제어에 대한 새로운 효과를 개시할 수 있다(예컨대, 플레이 효과는 개시 메시지를 통해 개시한다, 정지 효과는 개시 메시지를 통해 개시한다 등). 더 나아가, 애플리케이션은 일반적인 비디오 재생 조정 효과를 개시할 수 있으며, 그 후 조정 활동 프로토콜의 사전 구성된 고-레벨 서비스(예컨대, 플레이 서비스, 정지 서비스 등)를 유발하는 미리 결정된 포맷으로 데이터를 나르는 데이터 메시지들을 사용하여 개개의 지시들을 송신할 수 있다.
일시정지, 플레이, 정지, 빨리 감기, 및 되감기와 같은, 몇몇 제어들은 하나의 참여자가 제어를 활성화한다면, 비디오 재생의 상태가 각각의 참여자의 애플리케이션에서 변경된다는 점에서 조정적일 수 있다. 볼륨과 같은, 다른 것들은 애플리케이션 단위 기반으로 적용될 수 있으며, 따라서 이들 제어들을 활성화하는 것은 또 다른 참여자의 애플리케이션에서 대응하는 제어에 영향을 주지 않는다.
이 경우에, 조정 효과들은 비디오 회의 정보보다는, 디스플레이되는 비디오(118)에 적용할 수 있다(다른 실시예들에서, 조정 효과들은 또한 또는 대안적으로 비디오 회의 정보에 적용될 수 있다). 조정 효과들은 비디오 회의-중심 및 비-비디오 회의-중심 실시예들에 대해 유사한 방식으로 적용된다(예컨대, 개시 메시지를 통해 조정 활동 프로토콜로 조정 효과를 개시하며, 그 후 프로토콜의 데이터 메시지들을 통해 일반 또는 포맷팅 데이터를 교환함으로써). 클라이언트/서버 환경(도 2a 참조)은 조정 효과들이 비-비디오 회의 데이터에 적용될 때 약간 상이할 수 있다는 것이 주의되어야 한다. 예를 들어, 도 2a에 묘사된 통신 서버는 각각의 사용자로부터 오디오 및 비디오 데이터를 수신하고 그 후 데이터를 재분배하는 것보다는, 중심 사이트로부터 보여지는 비디오(118)의 분배를 조정할 수 있다. 조정 효과들에 관련된 메시지들은 계속해서 RTC 채널 상에서 제공될 수 있지만, 다른 유형들의 데이터(이 경우에 비디오 데이터, 또는 이하에서 설명된 예들에서, 사진 데이터, 게임 데이터, 책 데이터 등)는 그 자신의 전용 채널들 상에서 분배될 수 있다. 각각의 경우에, 공유된 경험은 선택적으로 비디오 회의 또는 오디오 회의를 수반할 수 있으며, 그러므로 비디오 및/또는 오디오 데이터가 공유된 경험에 직접 관련되는 다른 유형들의 데이터 외에 분배될 수 있다. 비디오 회의 및/또는 오디오 회의 데이터는 다른 유형들의 데이터 및 제어 데이터를 분배하는 동일한 통신 서버에 의해 분배될 수 있으며, 및/또는 별개의 서버에 의해 핸들링될 수 있다.
비디오 재생에 관한 조정 효과들은, 플레이 또는 일시정지 버튼을 누름으로써와 같이, 명확히 활성화되는 효과들에 제한되지 않는다. 조정 효과들은 또한, 예컨대, 비디오의 재생을 조정하는 애플리케이션에 의해, 자동으로 활성화될 수 있다. 조정 효과들은 미리 결정된 조건들의 발생 시 또는 미리 결정된 타이밍들에서 활성화될 수 있으며, 배경에서 실행될 수 있다(잠재적으로 사용자들에 대한 지식 없이). 하나의 이러한 예는 동기화 효과이며, 이것은 미리 결정된 간격들로 자동으로 활성화될 수 있다. 각각의 참여자들의 애플리케이션들은 동기화 효과에 관련된 데이터 메시지들을 교환할 수 있으며, 이것은 현재 비디오의 재생을 위한 타이밍 정보(예컨대, 주어진 시간에 비디오를 통한 사용자의 진행)를 나타낸다. 타이밍 정보를 사용하여, 각각의 애플리케이션은 각각의 참여자가 비디오의 동일한 부분을 동시에 보도록 비디오 재생을 국소적으로 동기화할 수 있다.
자동 또는 배경 효과의 또 다른 예는 도 1f에서 묘사된다. 이 예에서, 참여자들은 메시징 인터페이스(122)를 통해 상호 작용한다. 메시징 인터페이스에서, 사용자들은 대화 패널(126)에서 텍스트-기반 메시지들을 교환할 권한을 부여받을 수 있다. 이 예에서, 대화 패널(126)에서 메시지들 중 하나는 비디오(124)로의 링크를 포함한다. 하나의 사용자가 링크를 선택할 때, 비디오(124)는 인터페이스(122)에서 디스플레이될 수 있다.
애플리케이션은 비디오가 액세스된 엔트리 포인트에 의존하여 상이한 방식으로 비디오(124)를 디스플레이하도록 구성될 수 있다. 예를 들어, 메시징 대화에서의 참여자들이 사용자들에게 영화를 제한하는 봇과 상호 작용하며 사용자들 중 하나가 영화를 플레이하기 시작하도록 봇에게 지시하면, 이것은 전체-스크린 모드로 비디오(124) 재생을 트리거할 수 있다(도 1e로부터의 예와 유사하게 나타날 수 있다). 다른 한편, 비디오가 대화 패널(126)에서 링크를 통해 액세스될 때, 비디오(124)는 도 1f에 도시된 바와 같이, 섬네일 모드로 디스플레이될 수 있다. 비디오의 엔트리 포인트에 민감한 섬네일 및 전체-스크린 모드들을 허용하기 위해, 데이터 메시지들은 엔트리 포인트를 설명하는(또는 비디오(124)가 섬네일 또는 전체-스크린 모드로 플레이되어야 함을 명확하게 특정하는) 조정 활동 프로토콜을 통해 교환될 수 있다.
도 1g에 묘사된, 또 다른 실시예는 공유된 독서 경험과 관련된다. e-책 인터페이스(128)는 애플리케이션에 의해 제공될 수 있으며, 이것은 다수의 참여자 클라이언트 디바이스들의 디스플레이들 상에 책의 동일한 페이지를 디스플레이할 수 있다. 이 예에서, 호출 패널(130)은 참여자들이 인터페이스(128)를 보는 동안 오디오 호출 시 전달한다는 것을 나타낸다. 이러한 실시예는, 예를 들어, 부모가 집에서 떨어져 있는 동안 그들의 아이에게 책을 읽도록 허용하기 위해, 공유된 매거진-읽기 경험을 위해, 텍스트북을 참조하는 스터디 그룹을 지원하는 등을 위해, 유용할 수 있다. 조정 활동 프로토콜은 e-책의 디스플레이를 동기화된 채로 유지하기 위해 사용될 수 있다.
다양한 상호 작용 가능한 요소들은 참여자들이 책을 다 내비게이션하도록 허용할 수 있다. 예를 들어, 링크(132)는 참여자로 하여금 디스플레이가 책의 콘텐트들의 표(또는 인덱스, 예시들의 리스트 등)를 보게 하도록 허용할 수 있다. 디스플레이가 터치-스크린이면, 현재 페이지의 좌측 영역(134)과 상호 작용하는 것은 책의 이전 페이지로 돌아가게 하며, 잠재적으로 페이지-전환 애니메이션을 보여줄 수 있다. 유사하게, 우측 영역(136)과 상호 작용하는 것은 페이지를 나아가게 할 수 있다. 몇몇 실시예들에서, 페이지를 뒤로 또는 앞으로 가게 하기 위한 표현 아이콘들이 제공될 수 있다.
이들 상호작용들의 각각은 조정 활동 프로토콜을 통해 전송되는 대응하는 조정 효과와 연관될 수 있다. 조정 활동 프로토콜에 의해 실시될 수 있는 조정 동작들의 다른 예들은 기한을 탐색하는 것, 특정 페이지로 점프하는 것, 액세스되었던 이전 페이지로 되돌아가는 것(예컨대, 콘텐트의 표로부터 막 읽었던 페이지로, 또는 페이지로부터 다시 인덱스로 점프하기 위해), 예시를 확대하는 것, 특정한 페이지를 즐겨 찾기하는 것 등을 포함한다.
또 다른 실시예에서, 조정 경험은 도 1h에 도시된 바와 같이, 사진 앨범 인터페이스(140)에서 사진 앨범을 보거나 또는 편집하는 것을 수반할 수 있다. 사진 앨범 인터페이스에서, 앨범으로부터 현재-본 사진은 선택적으로 메인 윈도우(142)에서 디스플레이될 수 있다. 현재 본 사진은 앞 인터페이스 요소(148)를 사용하여 앨범에서 다음 사진, 또는 뒤 인터페이스 요소(146)를 사용하여 앨범에서 이전 사진으로 내비게이션함으로써 변경될 수 있다. 앨범에서 사진들의 각각(또는 이용 가능한 디스플레이 공간의 양에 의존하여, 앨범에서 사진들의 제한된 서브세트)은, 섬네일 버전(144-1, 144-2, 144-3 등)으로 디스플레이될 수 있다. 섬네일 버전(144-i)을 선택하는 것은 연관된 사진이 메인 윈도우(142)에 디스플레이되게 할 수 있다. 일범 라이브러리 링크(150)는 사용자가 현재 앨범을 빠져나가고 모든 이용 가능한 앨범들의 리스트를 보도록 허용할 수 있다. 편집 명령들(152)은 메인 윈도우(142)에서의 사진이 편집되도록 허용할 수 있다. 더욱이, 사용자들은 섬네일 뷰(144-i)에서 사진들을 선택하고 그것들을 앨범에서의 새로운 위치로 끌고 갈 수 있다. 추가 옵션들은 새로운 사진들을 앨범에 추가하거나, 또는 앨범에서 사진들을 삭제하기 위해 제공될 수 있다. 이들 상호작용들 중 임의의 것은 다수의 참여자들이 조정형 방식으로 앨범을 보고 그것과 상호작용할 수 있도록 조정 효과들과 연관될 수 있다.
조정 경험의 추가 예는 단일- 또는 다중-플레이어 게임을 플레이하는 것을 수반한다. 도 1i는 게임의 현재 상태를 디스플레이하기 위한 게임 패널(156)을 포함한 다중플레이어 게임 인터페이스(154)의 예를 묘사한다. 게임의 현재 플레이어들은 아바타들(158, 160)에 의해 식별될 수 있으며, 코어(162)가 디스플레이될 수 있다. 현재 플레이어들은, 임의의 다른 사용자들이 게임을 관찰하고 싶어할 수 있으므로, 게임 인터페이스(154)를 볼 수 있다.
이 예에서, 조정 효과들은 스코어를 기록하고(예컨대, 스코어가 로컬 디바이스에서 변할 때, 및 얼마나 많은지를 나타내는 데이터 메시지들을 송신하는), 게임 패널(156)에서 게임의 상태를 동기화하거나, 또는 하나의 사용자로부터 다음 사용자로 차례를 넘기기 위해 제공될 수 있다. 차례 넘기기는 도 1i에 묘사된 당구 게임에서 샷을 치는 것과 같은, 하나의 플레이어가 "차례 끝내기" 요소를 선택하거나 또는 차례가 끝나게 하는 동작을 할 때, 수동으로 핸들링될 수 있다. 대안적으로 또는 그 외에, 차례 넘기기는 미리 정의된 조건들 하에서(현재 플레이어의 차례와 연관된 타이머가 만료될 때와 같은) 자동으로 발생하는 수동 활동일 수 있다.
조정 효과의 또 다른 예는 현재 플레이들 중에서 "리더" 디바이스를 선택하기 위한 조정 효과이다. 몇몇 게임들에서, 데이터는 각각의 사용자의 애플리케이션으로 제공되며, 이것은 그 후 게임 세계를 구성하고 사용자로 하여금 게임 세계와 상호 작용하도록 허용한다. 로컬 디바이스는 게임 세계의 상태를 결정하기 위해 계산들을 수행할 수 있다(예컨대, 농구공이 적절한 궤적 상에서 보내지고 그에 따라 결국 링에 들어갔는지, 로켓 발사대로부터의 로켓이 특정한 위치에서 접속되었는지 등). 몇몇 경우들에서, 상이한 플레이어 디바이스들은 게임 세계의 상태에 대한 상이한 결론들에 이를 수 있으며, 디바이스들 중 하나는 현재 게임 상태의 결정권자인 것으로 선택되어야 한다. 리더십 선출들을 허용하는 조정 효과를 제공함으로써, 이러한 프로세스는 간소화될 수 있다.
도 1i의 예에서, 게임은 제한된 수의 플레이어들(예컨대, 이 경우에 2)을 허용할 수 있다. 다수의 사람들은 함께 플레이하길 원하고 애플리케이션 인터페이스(154)와 상호 작용할 수 있다. 따라서, 조정 효과들은 플레이할 다음 그룹의 플레이어들을 선택하기 위해 제공될 수 있다. 이것은, 예컨대, 모든 참여자들 중에서 라운드-로빈 방식으로, 단일- 또는 이중-제거 플레이오프 방식으로 수행될 수 있거나, 또는 다음 플레이어가 현재 게임의 승리자와 플레이하기 위해 무작위로 또는 알고리즘으로 선택될 수 있다(예컨대, "내가 다음 차례야!" 스타일의 플레이).
유사한 다음-플레이어 선택은, 도 1j에서 묘사된 단일-플레이어 게임 인터페이스와 같은, 단일-플레이어 게임들을 위해 또한 수행될 수 있다. 인터페이스(166)는 플레이어들이 서로 비디오 회의하도록 허용하지만 플레이어들 중 하나는 게임을 플레이하고 다른 참여자들은 게임 뷰 패널(170)에서 본다. 인터페이스(166)는 현재 플레이어가 보여질 수 있는 프리뷰 윈도우(168), 및 플레이하지 않은 참여자들을 보여주는 섬네일 뷰들(172-1, 172-2, 172-3 등)을 포함한다.
단일-플레이어 게임에서, 유사한 효과들이 다중-플레이어 게임에서처럼 제공될 수 있다(예컨대, 게임을 플레이할 다음 플레이어를 선택하고, 공유된 시청 경험을 조정하고, 게임을 시작하고, 게임을 정지시키고, 게임을 일시정지시키고, 게임 뷰 패널(170)의 각각의 뷰들을 동기화하는 등).
상기 설명된 조정 효과들 중 임의의 것은 애플리케이션 개발자에 의해 구현될 수 있으며, 조정 활동 프로토콜은 프로토콜에 의해 인식된 미리 결정된 포맷에 있지 않은 데이터를 가진 데이터 메시지들을 교환할 수 있다. 이 경우에, 메시지들은 각각의 애플리케이션들에 의해 해석될 수 있는 일반 데이터를 교환할 수 있다. 추가 예들에서, 상기 설명된 효과들은 고-레벨 서비스로서 조정 활동 프로토콜에 의해 지원될 수 있으며, 데이터는 프로토콜에 의해 인식 가능하며 서비스와 연관된 미리 결정된 포맷에 있을 수 있다.
조정 효과를 적용하기 위한 클라이언트/서버 환경에 대한 대표적인 구성은 도 2a를 참조하여 다음에 설명된다.
대표적인 시스템 구성 및 데이터 구조들
도 2a는 조정 효과들을 적용하기 위한 대표적인 시스템을 묘사한다. 조정 효과들은 자동으로, 수동으로, 또는 양쪽 모두의 조합으로 적용될 수 있다.
시스템은 (예컨대) 1-대-1, 1-대-다, 또는 그룹 통신일 수 있는, 비디오 통신을 용이하게 할 수 있다. 대안적으로, 또는 또한, 시스템은 또 다른 유형의 조정 활동(예컨대, 게임들, 상호작용적 시청 경험들 등)을 용이하게 할 수 있다. 예가 비디오 대화에 조정 미디어 효과를 적용하는 것을 참조하여 이하에서 설명될 것이지만; 본 출원은 이 예에 제한되지 않는다는 것이 이해된다.
개시 클라이언트(202-1)는 통신에서 제 1 참여자와 연관된 디바이스일 수 있다. 개시 클라이언트(202-1)는, 예를 들어, 하나 이상의 다른 참여자들과의, 비디오-기반 회의 호출을 위한 비디오 통신과 같은, 조정 활동에 참여하기 위한 통신 애플리케이션(404-1)을 실행하는 이동 디바이스일 수 있다(본 발명은 이동 디바이스들에 의한 애플리케이션에 제한되지 않지만). 개시 클라이언트(202-1)는 하나 이상의 비-개시 클라이언트들(202-2, 202-3, 204-4 등)에서 또는 그것에 의해 적용될 조정 효과를 개시하는 디바이스일 수 있다.
통신 애플리케이션(204-1)은 비디오 통신과 연관된 정보가 통신을 용이하게 하는 하나 이상의 서버들로 송신되게 할 수 있다. 예를 들어, 정보는 통신과 연관된 비디오 프레임들을 포함한 비디오 데이터(208), 그래픽 프레임들과 동기화될 사운드 정보를 포함한 오디오 데이터(212), 및 제어 데이터(216)를 포함할 수 있다. 제어 데이터(216)는 비디오 데이터(208) 및 오디오 데이터(212)와 연관되는(예컨대, 그것에 동기화될) 조정 효과를 적용하기 위해 사용된 다양한 지시들, 식별자들, 메타데이터 등을 포함할 수 있다.
몇몇 예들에서, 조정 효과들은 애플리케이션(204-1)에 의해 적용될 수 있다. 다른 것들에서, 애플리케이션(204-1)은 제 3 자들이 적절한 명령들(예컨대, 애플리케이션 프로그래밍 인터페이스 명령들) 또는 참조들을 통해 조정 효과들을 삽입할 수 있는 프레임을 정의할 수 있다.
각각의 유형의 데이터는 연관된 채널에서 송신될 수 있다. 예를 들어, 통신 애플리케이션(204-1), 또는 클라이언트(202-1)의 또 다른 구성요소는 통신 서버(218)를 갖고 채널(206), 오디오 채널(210), 및 제어 채널(214)을 개방할 수 있다. 비디오 채널(206)은 단지 비디오 포맷에서의 비디오 데이터(208)만을 운반할 수 있다. 따라서, 통신 서버(218)는 비디오 포맷에서의 데이터로서 비디오 채널(206) 상에서 수신된 임의의 데이터를 처리할 수 있으며 데이터를 적절하게 프로세싱할 수 있다. 유사하게, 오디오 채널(210)은 단지 오디오 포맷에서의 오디오 데이터(212)만을 운반할 수 있다.
본 발명은 각각 비디오 채널들(206) 및 오디오 채널들(210) 상에서 비디오 데이터(208) 및 오디오 데이터(212)를 송신하는 것에 제한되지 않는다는 것이 이해된다. 예를 들어, 그래픽 데이터는 조정 활동이 사진 앨범의 시청인 경우에 데이터 채널에서 공유될 수 있다. 또 다른 예에서, 게임 데이터는 게임의 상태에 대한 정보를 나르는 데 전용된 데이터 채널에서 공유될 수 있다. 공유된 청취 경험(예컨대, 다수의 사용자들이 음악 앨범 또는 콘서트를 동시에 청취하는)을 위해, 채널들은 비디오 채널(206)이 아닌 오디오 채널(210)을 포함할 수 있다. 각각의 경우에, 제어 채널(414)은 데이터 채널들로부터 분리되고 개별적인 실시간 채널일 수 있다.
제어 채널(214)은 반드시 미리 결정된 포맷에 있는 것은 아닌 일반 데이터를 송신할 수 있거나, 또는 특정된 제어 포맷으로 제어 지시들을 송신할 수 있다. 예를 들어, 제어 채널(214)은 비디오 데이터(208) 및/또는 오디오 데이터(212)를 분석하기 위한 지시를 운반할 수 있거나, 또는 조정 효과를 적용하기 위한 지시를 운반할 수 있다. 제어 채널(214)은, 예를 들면, 웹 실시간 통신들(WebRTC) 채널일 수 있다.
비디오 채널(206), 오디오 채널(210), 및 제어 채널은 양쪽 방향들 모두로 정보를 운반할 수 있다. 따라서, 예를 들어, 비디오 채널(206) 및 오디오 채널(210)은 개시 클라이언트(202-1) 상에서 디스플레이/재생을 위한 데이터(예컨대, 하나 이상의 비-개시 클라이언트들(202-2, 202-3, 202-4)의 비디오 스트림들에 관한 정보)를 운반할 수 있다. 제어 채널(214)은 통신 서버들(218)로부터의 추천들, 하나 이상의 식별된 감정 상태들, 다른 지시들 등을 운반할 수 있다.
통신 서버(218)는 효과 조정 로직(220)을 적용함으로써 하나 이상의 개시 클라이언트들(202-1)과 하나 이상의 비-개시 클라이언트들(202-2, 202-3, 202-4 등) 사이에서 조정 효과들의 적용을 조정하도록 구성될 수 있다. 통신 서버(218)는 또한 다수의 이용 가능한 조정 효과들에 관한 데이터를 포함하는, 조정 효과 라이브러리(도시되지 않음)를 저장할 수 있다. 조정 효과들은 식별자에 의해 식별될 수 있으며, 조정 효과 라이브러리는 클라이언트 디바이스들(202)에서 국소적으로 저장된 조정 효과 라이브러리를 선택적으로 미러링할 수 있다. 대안적으로 또는 또한, 통신 서버(218)에 저장된(또는 다수의 통신 서버들(218) 사이에서 분리된) 라이브러리가 로컬 클라이언트 디바이스들(202)에서 부분적으로 캐싱될 수 있다. 몇몇 경우들에서, 로컬 클라이언트 디바이스들은 조정 효과들의 섬네일 버전들을 포함할 수 있어서, 효과들이 통신 애플리케이션(204)에서 선택되도록 허용하지만, 조정 효과들의 구현 세부사항들을 포함하지 않음으로써 클라이언트 디바이스들(202) 상에서의 저장을 보존한다. 조정 효과의 적용 시, 각각의 클라이언트 디바이스(202)는 통신 서버(218)로부터 구현 세부사항들을 요청할 수 있다.
통신 서버(218)는 비디오 데이터(208), 오디오 데이터(212), 및 임의의 적용된 조정 효과들을 조합하기 위해 시청각 편찬 로직(224)을 추가로 포함할 수 있다. 시청각 편찬 로직(224)은 비디오 데이터(208)와 오디오 데이터(212)를 동기화하며, 또한 조합된 오디오/비디오 데이터와(또는 개별적으로 오디오 데이터(212) 또는 비디오 데이터(208)와) 조정 효과들을 동기화하기 위한 로직을 포함할 수 있다.
일단 조합되면, 결과적인 시청각 데이터(230)가 선택적으로 통신 서버(218)로부터 브로드캐스트 서버(226)로 송신될 수 있다. 브로드캐스트 서버(226)는 비디오 통신과 연관된 하나 이상의 수신인 클라이언트들(202-2, 202-3, 202-4)을 식별하는 브로드캐스트 로직(228)을 포함할 수 있다. 브로드캐스트 서버(226)는 오디오 데이터(212), 비디오 데이터(208), 및 적용된 조정 효과들을 포함하는 시청각 데이터(230)를, 수신인 클라이언트들(202-2, 202-3, 202-4)의 각각으로 송신할 수 있다.
몇몇 경우들에서, 시청각 데이터(230)는 모든 수신인들(202-2, 202-3, 202-4)로 브로드캐스트할 수 있지만, 조정된 효과들에 관련된 메시지들은 각각의 제어 채널들(206) 상에서 조정이 결과 작업을 만들도록 요구되는 비-개시 클라이언트들(202-i)로 송신될 수 있다. 예를 들어, 도 1a에 도시된 예에서, 조정 효과는 Jill의 디바이스에 의해 개시될 수 있으며 Jack의 디바이스와의 조정을 요구할 수 있다(Jill의 비디오와 적절하게 협력하여 Jack의 비디오 상에서 대응하는 키스 애니메이션을 적용하기 위해). 조정 효과가 적용될 때 비디오 데이터는 계속해서 브로드캐스트 서버(226)에 의해 브로드캐스트될 수 있지만, 디바이스들의 각각으로 및 그로부터 제공된 제어 데이터는 달라질 수 있다. 예를 들어, Jill의 디바이스는 제어 채널(214) 상에서 개시 지시를 송신할 수 있으며, 이것은 Jack의 디바이스로(시청각 데이터(230)를 수신하는 다른 디바이스들로가 아닌) 전달될 수 있다. Jack의 디바이스는 그 자신의 각각의 제어 채널(214)(도시되지 않음) 상에서 통신 서버(218)로 확인응답들, 데이터 등을 송신할 수 있다.
조정 효과가 Jack 및 Jill의 디바이스 사이에서 조정됨에 따라, 각각의 디바이스는 효과가 그들 각각의 오디오 데이터(212) 및/또는 비디오 데이터(208)에 적용되도록 허용하기 위해(또는 이들 효과들이 선택적으로, 각각의 클라이언트 디바이스들에 의해, 조정된 방식으로 국소적으로 적용될 수 있다) 통신 서버(218)로/로부터 제어 데이터(216)를 송신/수신할 수 있다. 결과적인 수정된 시청각 데이터(230)는 브로드캐스트 서버(226)에 의해 대화에서의 각각의 참여자로 브로드캐스트될 수 있다.
도 2b 내지 도 2c는 조정 효과들의 적용을 조정하기 위해 교환될 수 있는 메시지들의 예들을 묘사한다.
도 2b는 비-개시 클라이언트 디바이스에서 조정 효과를 시작하거나 또는 개시하기 위해 개시 클라이언트 디바이스에 의해 송신될 수 있는 개시 메시지(250)를 묘사한다. 개시 메시지(250)는 RTC 채널을 통해 통신 서버에 의해 수신될 수 있다.
개시 메시지(250)는 조정 효과 개시 메시지로서 메시지(250)를 식별하는 플래그(252) 또는 다른 식별자를 메시지(250)의 헤더에 포함할 수 있다. 따라서, 통신 서버(218)는, 메시지(250)의 수신 시, 메시지(250)를 프로세싱하기 위해 적절한 단계들을 취하고 하나 이상의 비-개시 클라이언트들이 조정 효과를 시작하도록 요청할 수 있다. 플래그(252)는, 예를 들어, 개시 메시지(250)의 헤더 데이터에 포함될 수 있다.
개시 메시지(250)는 조정 효과 유형 식별자(254)를 추가로 포함할 수 있다. 식별자(254)는 조정 효과의 유형(예컨대, 키스 효과, 동기화 효과, 애플리케이션 명령 효과 등을 식별하는)을 특정할 수 있다. 식별자(254)는 통신 서버에 저장된 조정 효과 라이브러리에서 조정 효과와 연관된 식별자에 대응할 수 있다(도 2a와 관련한 설명을 참조하자).
메시지(250)는 하나 이상의 비-개시 사용자 식별자들(256)을 추가로 특정할 수 있다. 이들 식별자들(256)은 유형 식별자(254)에 의해 식별된 조정 효과의 조정 활동에서의 어떤 참여자들이 조정 효과를 적용해야 하는지를 나타낼 수 있다. 통신 서버는 비-개시 사용자 식별자들(256)을 판독하며 개시 메시지(250)를 RTC 채널 상에서 적절한 디바이스들로 포워딩할 수 있다.
일단 조정 효과가 개시되면, 개시 사용자 디바이스 및 비-개시 사용자 디바이스들은 데이터를 교환함으로써 조정 효과의 적용을 조정할 수 있다. 이러한 목적들을 위해, 데이터 메시지(260)는, 예를 들어, 도 2c에 도시된 바와 같이, 사용될 수 있다.
데이터는 애플리케이션 프로그래밍 인터페이스(API) 호출들을 토해 조정 효과를 위해 교환될 수 있다. 예를 들어, 사용자 디바이스들 상에서의 애플리케이션은 조정 효과들을 생성하거나 또는 수정하기 위해 API 호출들을 지원하는 애플리케이션-레벨 플랫폼과 연관될 수 있다. 이러한 플랫폼의 일 예는 캘리포니아주, 멘로 파크, Facebook, Inc.에 의한 AR Studio이다.
그러나, 조정 효과를 조정하는 조정 활동 프로토콜은 조정 효과의 구현 세부사항들을 이해할 필요가 없다. 일반 데이터(즉, 개시 메시지(250) 및 데이터 메시지(260)의 포맷을 정의하는 조정 활동 프로토콜에 의해 미리 정의되고 및/또는 인식되는 포맷에 있지 않은 데이터)를 교환하는 API 호출들을 통해 효과가 조정되도록 허용함으로써, 프로토콜은 효과들이 동작하는 디바이스들에, 뿐만 아니라 효과들 자체 및 이들 효과들을 지원하는 플랫폼들에 애그노스틱한 방식으로 적용될 수 있다.
따라서, 조정 활동 프로토콜은 효과들 및/또는 효과들을 구동하는 디바이스들이 서로 데이터를 교환하도록 허용하는 반면, 효과들을 지원하는 애플리케이션 및/또는 플랫폼으로 하여금 상기 데이터가 어떻게 해석될 것인지를 결정하도록 허용함으로써 다양한 효과들의 조정을 지원한다. 따라서, 프로토콜은 새로운 효과들, 플랫폼들, 및 디바이스들로 쉽게 확장 가능하다.
조정 활동 프로토콜은 통신의 상이한 방법들을 원할 수 있다(및 이를 접하게 할 수 있다). 일 예에서, 프로토콜은 통신의 신뢰가능 모드 및 통신의 비-신뢰가능 모드를 지원할 수 있다. 데이터 메시지(260)에서의 신뢰성 플래그(262)는 애플리케이션으로 하여금 메시지(260)가 신뢰가능 모드 또는 비 신뢰가능 모드로 송신되어야 하는지를 특정하도록 허용한다.
신뢰가능 모드로 송신될 때, 조정 활동 프로토콜은 데이터 메시지(260)가 타겟 디바이스에 의해 수신됨을 보장할 수 있다. 예를 들어, 통신 서버는, 데이터 메시지(260)를 포워딩할 때, 수신인 디바이스가 확인응답을 전송하길 기다릴 수 있다. 이러한 확인응답이 미리 결정된 시간의 양에 수신되지 않는다면, 서버는 수신이 확인 응답될 때까지(또는 미리 결정된 수의 시도들 또는 미리 결정된 양의 시간이 경과할 때까지, 그 후 전송자는 송신이 실패하였다고 통지받을 수 있다) 데이터 메시지(260)를 재송신할 수 있다. 신뢰가능 모드는 조정 활동(예컨대, 비디오 시작/정지/일시정지/플레이/동기 명령들, 게임들에서의 차례 협상들, 차례 양보, 스코어 기록 등)의 상태에 영향을 주는 주요 데이터 및 명령들에 유용할 수 있다. 메시지는 메시지의 중복된 사본이 수신된다면, 메시지 데이터가 한 번 이상 프로세싱되지 않음을 보장하기 위해 식별자와 함께 송신될 수 있다. 통신의 신뢰가능 모드의 예는 사용자 데이터그램 프로토콜(UDP)에 의해 구현되지만, 다른 적절한 예들이 존재한다.
비 신뢰가능 모드로 송신될 때, 조정 활동 프로토콜은 데이터 메시지(260)에 대한 전달 보장들을 제공하지 않을 수 있다. 통신 서버는 그것의 의도된 수신인들로 한 번 메시지(260)를 전송할 수 있으며 메시지의 수신의 확인 응답을 요구하지 않을 것이다. 비 신뢰가능 모드는, 예컨대, 하나 또는 몇몇 데이터 포인트들이 반드시 조정 효과의 성능을 저하시키는 것은 아닐 수 있는 데이터의 스트림들에 유용할 수 있다. 예를 들어, 도 1a에 대해 이하에서 설명된 예에서, Jill의 입의 위치는 키스 효과의 조정을 허용하기 위해 규칙적인 간격들로 송신될 수 있다. 그러나, 이들 데이터 포인트들 중 하나 또는 몇몇의 손실은 큰 재앙이 아닐 수 있고; 시스템은 수신되는 데이터 포인트들 사이에서 보간될 수 있다. 이들 데이터 포인트들이 비 신뢰가능 모드로 송신되도록 허용함으로써, 효과는 개시 및 비-개시 측면들에서 프로세싱 리소스를 보존할 수 있으며, 또한 네트워크 리소스들을 보존할 수 있다(메시지들이 재송신될 필요가 없으며 확인 응답들이 전송될 필요가 없으므로).
몇몇 실시예들에서, 개시 메시지들(250)은 항상 신뢰가능 모드로 송신되며, 따라서 효과가 보장된 방식으로 개시되도록 허용한다. 다른 실시예들에서, 프로토콜은 개시 메시지들(250)이 신뢰성 플래그(262)를 제공하도록 허용하며, 그에 따라 잠재적으로 개시 메시지들(250)이 비 신뢰가능 모드로 송신되도록 허용할 수 있다. 이것은, 예를 들어, 효과 자체를 적용한 애플리케이션이 전달을 보장할 때(예컨대, 개시 및 비-개시 측면에서의 애플리케이션 사이에서 직접 전달함으로써) 사용될 수 있다.
데이터 메시지(260)는 조정 효과를 지원하는 플랫폼 및/또는 애플리케이션에 의해 인식 가능한 API 호출(264)을 포함할 수 있다. API 호출(264)은 메시지(260)가 적용한 조정 효과를 식별하는 오브젝트 또는 방법 명칭(266)을 포함할 수 있다. 조정 효과가 개시 메시지(250)에 응답하여 개시될 때, 플랫폼은 효과에 오브젝트 명칭 또는 식별자를 할당할 수 있다. 명칭 또는 식별자는 다른 가능성들 중에서, 개시 메시지(250)의 일부로서 특정될 수 있고, 개시 메시지(250)로부터 개별적으로 개시 디바이스에 의해 특정될 수 있거나, 또는 개시 메시지에 응답하여 비-개시 디바이스에 의해 할당되며 개시 메시지(250)의 확인응답의 부분으로서 리턴될 수 있다. 이러한 명칭 또는 식별자는 메시지(260)가 적절한 효과에 적용된다는 것을 보장하기 위해 API 호출(264)에서 사용될 수 있다.
몇몇 경우들에서, API 호출(264)은 방법 명칭을 특정할 수 있다. 방법 명칭은 조정 효과가 어떻게 적용될지 또는 수정될지를 나타낼 수 있다. 예를 들어, API 호출(264)은 공유된 비디오 시청 경험의 "정지" 방법에 대한 호출일 수 있다. 정지 방법을 적용하는 것은 비디오의 재생이 개시 및 비-개시 디바이스들 상에서 정지되게 할 수 있다.
몇몇 실시예들에서, 조정 효과의 적용은 방법 명칭으로부터, 또는 그 외에 개별적으로 데이터를 요구할 수 있다. 따라서, API 호출(264)은 조정 효과에 의해 사용 가능한 데이터(268)(예컨대, 좌표들, 동기화 데이터 등)를 선택적으로 특정할 수 있다.
예를 들어, 도 1a로부터의 예에서, 키스 효과는, 스크린의 어떤 측면이 Jill의 입에 가장 가까운지 및/또는 비디오 회의 사용자 인터페이스의 현재 레이아웃(예컨대, Jack의 비디오 프레임의 Jill의 좌측, 우측, 최상부, 또는 최하부에 나타나는지)에 의존하여, 좌측, 우측, 최상부, 또는 최하부로 Jill의 스크린에서 날아가는 것처럼 보일 수 있다. 조정 효과는 Jill의 비디오 상에서의 주어진 위치로부터 사라지며 Jack의 비디오 상에서 대응하는 가까운 위치에 다시 나타날 수 있다. 따라서, 데이터(268)는 얼굴 인식 로직에 의해 식별된 바와 같이 Jill의 입의 위치를 포함할 수 있으며, 따라서 키스 애니메이션이 Jack의 비디오 상에 나타날 때, 그것은 그것이 Jill의 비디오에서 사라진 곳에서 가능한 가까운 포인트로부터 비롯되는 것처럼 보인다.
또 다른 예에서, 키스 애니메이션의 경로는 Jill의 입 및 Jack의 뺨의 위치 양쪽 모두에 의존하여, 비디오 회의 사용자 인터페이스에서 보여지는 바와 같이 이들 위치들 사이에서의 최단 거리를 취하는 것처럼 보인다. 따라서, Jill의 디바이스는 Jill의 입의 위치를 식별하는 데이터(268)를 송신할 수 있으며, Jack의 디바이스는 Jack의 뺨의 위치를 식별하는 데이터(268)를 송신할 수 있다. 키스 애니메이션의 경로는 Jack 및 Jill 각각의 비디오 회의 애플리케이션들에 의해 독립적으로 결정될 수 있거나, 또는 중간 통신 서버에 의해 결정될 수 있다.
데이터(268)는 타이밍 정보를 추가로 포함하여, 효과가 Jill의 비디오로부터 동시에 사라지며 Jack의 비디오 상에서 다시 나타나도록 허용할 수 있다.
다른 예들에서, 데이터(268)는 동기화 목적들을 위한 타이밍 데이터, 단일- 또는 다중-플레이어 게임의 게임 상태에 관한 정보, 애플리케이션-특정 명령들, 또는 조정 효과를 적용하기 위해 사용 가능한 임의의 다른 유형의 데이터를 포함할 수 있다.
데이터(268)는 조정 활동 프로토콜에 의해 미리 결정되지 않은 일반 포맷에 있을 수 있다. 대안적으로, 조정 활동 프로토콜은 상이한 제공자들로부터 조정 효과들에 의해 흔히 사용되는 다수의 고-레벨 서비스들(예컨대, 게임에서의 차례 협상들, 리더십 선출들 등)을 직접 지원할 수 있다. 이 경우에, 데이터(268)는 적용될 특정한 서비스와 연관된 미리 결정된 포맷으로 포맷팅될 수 있다. 서버 또는 수신 클라이언트가, 데이터(268)가 특정한 서비스와 연관된 미리 결정된 포맷에 있음을 식별할 때, 시스템은 서비스의 기능을 효과에 제공하기 위해 서비스에 대한 데이터(268)를 특정하면서 서비스를 호출할 수 있다.
몇몇 경우들에서, 데이터(268)는 메시지(260)에서 명확하게 제공될 수 있으며, 데이터는 수신 클라이언트 디바이스로 푸시될 수 있다. 대안으로서, 필드(268)는 데이터가 저장되는 위치를 특정할 수 있으며, 수신 클라이언트 디바이스는 메시지(260)의 수신 시(또는 필요에 따라서와 같은, 나중에) 위치로부터 데이터를 뽑을 수 있다.
데이터 흐름 및 대표적인 방법들
도 3a 내지 도 3c는 다양한 효과 애플리케이션 시나리오들에서, 도 2a에 묘사된 것들과 같은, 다양한 디바이스들 간의 정보 교환을 묘사한 대표적인 데이터 흐름도를 묘사한다.
도 3a에 도시된 바와 같이, 개시 클라이언트 디바이스(202-1)는 비-개시 클라이언트 디바이스(202-2)에 의해 조정 활동을 개시하거나 또는 시작하기 위해 지시(302)를 송신할 수 있다. 지시(302)는 도 2b에 묘사된 것과 같은, 개시 메시지(250)의 형태에 있을 수 있다. 지시(302)는 조정 효과가 적용되어야 한다고 결정하는 것에 응답하여 개시 클라이언트 디바이스(202-1)의 애플리케이션에 의해 생성될 수 있다. 결정은 애플리케이션이 특정한 조건들이 적용된다는 것을 검출할 때 조정 효과의 자동 적용에 기초하여, 인터페이스에서 사용자에 의한 조정 효과의 수동 적용에 기인할 수 있다(예컨대, 조정 효과를 선택하고 그것을 적용하도록 애플리케이션에 지시하는).
지시(302)를 수신하면, 통신 서버는 지시(302)가 지시되는 하나 이상의 비-개시 사용자 디바이스들을 식별할 수 있으며(예컨대, 개시 메시지(250)에서 UID 필드(256)에 기초하여) 식별된 디바이스들로 지시를 포워딩할 수 있다.
수신 시, 비-개시 클라이언트 디바이스(202-2)는 조정 효과를 적용하는 것이 가능한지를 결정하기 위해 검사할 수 있다(예컨대, 로컬 디바이스가 조정 효과에 대해 최신인 캐싱된 로직을 갖는지를 결정함으로써). 선택적으로, 비-개시 클라이언트 디바이스는 디바이스의 사용자가 조정 효과의 적용을 허가하거나 또는 취소하도록 허용하는 프롬프트를 디스플레이할 수 있다.
비-개시 클라이언트 디바이스(202-2)가 효과가 적용될 수 있음을 결정한다고 가정하면, 비-개시 클라이언트 디바이스(202-2)는 확인(304)을 다시 통신 서버(218)로 송신할 수 있다. 통신 서버(218)는 처음에 지시(302)를 전송한 개시 클라이언트 디바이스(202-1)로 확인을 전달할 수 있다.
하나 이상의 비-개시 클라이언트 디바이스가 식별되면, 통신 서버는 비-개시 클라이언트 디바이스들 모두가 조정 효과를 시작하기 위해 그것들의 준비를 확인 응답할 때까지 확인(304)을 개시 클라이언트 디바이스(202-1)로 송신하는 것을 억제할 수 있다. 통신 서버(218)는 조정 효과에 대한 당사자들 모두가 준비된 것으로 확인될 때 비-개시 클라이언트 디바이스들에 선택적으로 시그널링할 수 있다.
비-개시 클라이언트 디바이스(202-2)는 지시(302)의 수신 즉시 조정 효과를 인스턴스화하고, 초기화하거나, 또는 시작할 수 있다. 대안적으로, 각각의 비-개시 클라이언트 디바이스(202-2)는 조정 효과를 인스턴스화하고, 초기화하거나, 또는 시작하기 위한 그것의 의도를 시그널링할 수 있지만, 모든 영향을 받은 비-개시 클라이언트 디바이스들이 준비된 것으로 확인될 때까지 그렇게 하길 기다릴 수 있다. 몇몇 실시예들에서, 조정 효과는 다른 가능성들 중에서, 몇몇 미리 결정된 또는 사용자-특정 가능한 양의 시간만큼 지연될 수 있고, 트리거 조건의 발생 시 적용될 수 있거나, 또는 뒤이은 메시지(제 1 API 호출(306)과 같은)가 수신될 때 적용될 수 있다.
일단 개시 클라이언트 디바이스(202-1)가 확인(304)을 수신하면, 조정 효과는 적용될 준비가 된다. 개시 클라이언트 디바이스(202-1) 및 비-개시 클라이언트 디바이스(202-2)는 API 호출들(306, 310)을 통해(예컨대, 통신 서버(218)를 통해 교환된 데이터 메시지들(260)을 통해) 데이터를 교환할 수 있다. API 호출(306, 310)이 신뢰가능 모드로 송신되면, API 호출(306, 310)을 수신한 디바이스는 확인응답(308)으로 호출에 응답할 수 있다. 서버(218)는 API 호출(306, 308)을 재송신할지를 결정하기 위해 확인응답들(308)을 사용할 수 있다. 선택적으로, 확인응답이 수신될 때, 서버(218)는 API 호출(306, 310)이 발생한 디바이스로 다시 확인응답을 전달할 수 있다.
도 3b는 비-개시 디바이스가 조정 효과를 적용하길 원하지만, 효과를 적용하기 위한 모든 요구된 정보를 갖지 않는(예컨대, 비-개시 디바이스는 국소적으로 캐싱된 조정 효과를 구현하기 위한 로직의 사본을 갖지 않는다) 예를 묘사한다. 이 경우에, 비-개시 클라이언트 디바이스(202-2)는 지시(302)를 수신하는 것에 응답하여 지연 요청(320)을 송신한다. 서버(218)는 선택적으로 지연이 요청됨을 개시 클라이언트(202-1)에 알릴 수 있고; 대안적으로, 서버(218)는 조정 효과의 상태에 관해 다시 개시 클라이언트(202-1)로 보고하기 전에 지연이 해결될 때까지 단순히 기다릴 수 있다.
지연 요청(320)을 송신한 후, 비-개시 클라이언트(202-2)는 임의의 손실된 조정 효과 데이터에 대한 요청(322)을 송신할 수 있다. 대안적으로, 요청은 지연 요청(320)의 부분일 수 있거나, 또는 지연 요청(320)의 존재에 의해 서버(218)로부터 추론될 수 있다. 이에 응답하여, 서버(218)는 그것의 국소적 조정 효과 라이브러리로부터 또는 원격 위치로부터 요청(322)에서 특정된 손실 데이터(또는 조정 효과와 연관된 모든 데이터)를 검색할 수 있다. 서버(218)는 그 후 조정 효과 데이터(324)를 비-개시 클라이언트(202-2)로 송신할 수 있다. 대안적으로, 서버(218)는 데이터가 검색될 수 있는 위치를 송신할 수 있으며, 비-개시 클라이언트(202-2)는 특정된 위치로부터 데이터를 검색할 수 있다.
조정 효과가 적용된 후, 비-개시 클라이언트(202-2)는 비-개시 클라이언트(202-2)가 조정 효과를 개시할 준비가 되었다는(또는 이미 된) 표시(326)를 송신할 수 있다. 서버(218)는 표시(326)를 개시 클라이언트(202-1)로 송신할 수 있으며, 그 후 개시 클라이언트(202-1) 및 비-개시 클라이언트(202-2)는 상기 설명된 바와 같이 데이터를 교환할 수 있다.
도 3c는 비-개시 디바이스가 조정 효과를 적용하는 것을 거부하는 예를 묘사한다. 거부는: 비-개시 클라이언트(202-2)가 조정 효과를 적용하는데 필요한 데이터를 갖지 않으며 데이터를 획득할 수 있는 경우; 비-개시 디바이스(202-2)의 사용자가 조정 효과의 적용을 명확하게 취소하거나 또는 조정 효과가 적용되지 않아야 함을 나타내는 선호를 특정하였다면; 비-개시 클라이언트(202-2) 상에서의 애플리케이션(204-2)이 조정 효과의 적용을 지원하지 않는 경우; 비-개시 클라이언트가 조정 효과를 적용하기 위해 이용 가능한 충분한 리소스들을 갖지 않은 경우 등과 같은, 다수의 이유들에 대한 것일 수 있다. 조정 효과의 적용이 비-개시 클라이언트(202-2)에서 거부되면, 거부 메시지(330)가 서버(218)로 송신되며 개시 클라이언트(202-1)로 전달될 수 있다. 이에 응답하여, 개시 클라이언트(202-1)는 조정 효과의 적용을 취소할 수 있다.
조정 효과가 다수의 비-개시 클라이언트들에서 적용되었다면, 클라이언트들 주 하나 이상에서 효과의 거부는 효과가 모든 클라이언트들에서 거부되게 하거나 또는 거부되게 하지 않을 수 있다. 몇몇 실시예들에서, 특정 클라이언트들은 필수적인 것으로 및 다른 것들은 선택적인 것으로 플래그될 수 있고; 선택적 클라이언트들에서의 취소는 효과가 나머지 클라이언트들에서 취소되게 하지 않을 것이지만, 필수 클라이언트들에서의 취소는 그렇게 될 것이다. 다른 실시예들에서, 효과는 효과의 적용을 거부하지 않은 임의의 사용자에게 적용될 수 있다. 계속해서 다른 것들에서, 효과는 미리 결정된 임계 수 또는 비율의 클라이언트들이 효과의 적용을 거부하지 않는다면 적용될 수 있다.
다음으로, 이미지 탐색에 기초하여 조정 효과를 적용하기 위한 대표적인 로직(400)이 도 4a 및 도 4b와 관련되어 설명된다. 도 4a 및 도 4b는 다양한 그룹들의 로직들(예컨대, 지시 수신 로직(404), 지시 포워딩 로직(408) 등)로 묘사된 로직 블록을 조직한다. 몇몇 실시예들에서, 이들 로직 모듈들은 도 2a에 도시된 바와 같이, 통신 서버(218) 상에서 제공될 수 있지만, 이러한 구성은 필수적이지 않다는 것이 이해될 것이다. 모듈들 모두는 동일한 디바이스에서 구현될 수 있거나, 또는 임의의 수의 디바이스들에 걸쳐 분포될 수 있다. 모듈들의 다양한 조합들은 주어진 디바이스 상에서 이용될 수 있거나, 또는 개개의 모듈의 로직은 상이한 디바이스들에 의해 수행될 수 있다.
프로세싱은 블록(402)에서 시작될 수 있으며, 여기에서 시스템은 조정 활동 또는 상호작용에 관한 데이터를 수신한다. 예를 들어, 데이터는 비디오 회의를 위한 비디오 데이터, 다중플레이어 게임을 위한 게임 데이터, 사진 앨범을 디스플레이하기 위한 그래픽 데이터, 공유된 읽기 경험에서의 사용을 위한 책의 내용에 관한 데이터 등을 포함할 수 있다. 시스템은 조정 활동과 연관된 하나 이상의 클라이언트 디바이스들을 식별할 수 있다.
프로세싱은 그 후 지시 수신 로직(404)으로 넘겨질 수 있다. 지시 수신 로직(404)은, 블록(406)에서, 지시를 수신하기 위해 네트워크 인터페이스에 참여할 수 있다. 네트워크 인터페이스는 실시간 통신(RTC) 채널 상에서 지시를 청취할 수 있다. 지시는 도 2b와 관련하여 설명된 바와 같이, 개시 메시지의 형태로 있을 수 있다. 지시는 개시 클라이언트로 비롯될 수 있으며 비-개시 클라이언트 상에서 블록(402)에서 참조된 활동에 관련된 조정 효과를 개시하도록 시스템에 지시할 수 있다.
프로세싱은 그 후 지시 포워딩 로직(408)으로 넘겨질 수 있다. 지시 포워딩 로직(408)은, 블록(410)에서, RTC 채널을 통해 지시에서 식별된 비-개시 클라이언트 디바이스들로 지시를 포워딩하기 위해 네트워크 인터페이스에 참여한다.
프로세싱은 그 후 합의 수신 로직(412)으로 넘겨진다. 선택적으로, 합의 수신 로직(412)은 예를 들어, 클라이언트들이 지시의 수신을 인정하거나 또는 응답 메시지를 송신할 때까지 지시를 각각의 클라이언트들로 재송신함으로써 비-개시 클라이언트(들)로의 지시의 전달을 보장할 수 있다(블록(412) 내지 블록(414)).
지시에 응답하여, 비-개시 클라이언트는 RTC 채널 상에서 여러 개의 상이한 유형들의 메시지들 중 하나로 응답할 수 있다. 블록(418)에서, 시스템은 응답이, 조정 효과가 비-개시 클라이언트에서 시작되었거나 또는 시작될 것이라는 확인인지를 결정할 수 있다. 블록(418)에서의 결정이 "예"이면, 프로세싱은 합의 포워딩 로직(436)으로 넘겨질 수 있다(도 4b).
다른 한편, 블록(418)에서의 결정이 "아니오"이면, 프로세싱은 블록(420)으로 진행할 수 있으며 시스템은 메시지가 조정 효과의 거부인지를 결정할 수 있다. 그렇다면, 프로세싱은, 시스템이 다시 개시 클라이언트로 거부를 포워딩할 수 있는, 블록(422)으로 진행하며, 이것은, 상기 개괄된 바와 같이, 조정 효과의 적용을 취소할 수 있거나 또는 조정 효과를 비-개시 클라이언트들의 서브세트로 적용할 수 있다. 프로세싱은 그 후 종료될 수 있다.
블록(420)에서의 결정이 "아니오"이면, 시스템은 블록(426)으로 진행되며 메시지가 지연 요청인지를 결정할 수 있다. 그렇다면, 시스템은 (선택적으로) 블록(428)에서 지연 요청의 통지를 개시 클라이언트 디바이스로 포워딩할 수 있다. 지연 요청 또는 뒤이은 메시지가 조정 효과에 관한 데이터를 요청하면(블록 430), 블록(432)에서, 시스템은 로컬 리포지터리로부터 관련 데이터를 검색할 수 있거나, 또는 데이터가 유지되는 원격 위치를 식별할 수 있다. 시스템은 RTC 채널 상에서 데이터 및/또는 위치 정보를 요청 디바이스로 포워딩할 수 있다.
블록(434)에서, 시스템은 지연된 요청의 확인 또는 거부를 수신할 수 있다. 메시지가 거부이면(예컨대, 비-개시 클라이언트가 블록(432)에서 데이터를 수신하고 조정 효과를 구동하기 위해 필요한 리소스들 또는 애플리케이션의 충분히 최신의 버전을 갖지 않는다고 결정한다), 프로세싱은 블록(422)으로 돌아갈 수 있으며 시스템은 상기 설명된 바와 같이 거부를 프로세싱할 수 있다. 메시지가, 효과가 시작되었거나 또는 시작될 것이라는 확인이라면, 프로세싱은 합의 포워딩 로직(436)으로 넘겨질 수 있다(도 4b).
블록들(426 내지 434)은 지연 로직(424)을 함께 구성할 수 있다.
도 4b로 돌아가면, 합의 포워딩 로직(436)은, 블록(438)에서, 비-개시 클라이언트(들)가 조정 효과를 시작하였거나, 또는 시작할 것이라는 확인을 송신하도록 동작 가능할 수 있다. 확인은 RTC 채널 상에서 네트워크 인터페이스에 의해 송신될 수 있다.
조정 효과가 개시 및 비-개시 클라이언트 디바이스들 양쪽 모두에서 시작된 후, 디바이스들은 조정 효과에 관련된 정보를 교환할 수 있다. 따라서, 데이터 수신 로직(430)은, 블록(432)에서, 데이터와 연관되는 API 호출을 포함한 메시지를 수신할 수 있다. 메시지는, 예를 들어, 도 2c에서 묘사된 것과 같은 데이터 메시지일 수 있다. 메시지는 전송 디바이스와 연관된 RTC 채널 상에서 네트워크 인터페이스에 의해 수신될 수 있다. 전송 디바이스는 개시 클라이언트일 수 있거나, 또는 비-개시 클라이언트일 수 있다. 프로세싱은 그 후 데이터 포워딩 로직(434)으로 넘겨질 수 있다.
블록(436)에서, 데이터 포워딩 로직(434)은 블록(432)에서 수신된 메시지가 조정 프로토콜(즉, 효과 조정 로직(220) 및/또는 시스템에서 교환되는 메시지들의 포맷을 정의한 프로토콜)과 연관된 고-레벨 미리 정의된 서비스를 호출하는지를 결정할 수 있다. 고-레벨 서비스들은 다수의 상이한 효과들에 의해 요구될 수 있으며, 그러므로 조정 활동 프로토콜에 의해 표준화된 방식으로 구현되는(통상적으로 통신 서버(218) 상에서) 공통 기능을 포함한다. 포워딩 로직(434)은, 예컨대, API 호출이 서비스와 연관되는지, 또는 메시지가 서비스와 연관된 미리 정의된 포맷으로 데이터를 포함하는지를 결정하기 위해, API 호출을 포함하여, 메시지를 분석할 수 있다.
데이터 포워딩 로직(434)이, 메시지가 고-레벨 서비스를 호출한다고 결정하면, 블록(438)에서, 시스템은 서비스와 연관된 국소 동작들을 선택적으로 수행할 수 있다. 예를 들어, 고-레벨 서비스가, 어떤 클라이언트 디바이스가 다중플레이어 게임에서 다음 차례를 취할 것인지 또는 어떤 디바이스가 단일-플레이어 게임에서 다음 라운드를 플레이할지를 협상하는 것을 수반한다면, 시스템은 플레이어를 국소적으로 선택할 수 있다. 서비스가 스코어 기록을 수반한다면, 시스템은 국소적으로 저장되는 게임의 상태를 찾아보고(예컨대, 블록(402)에서 수신된 활동 데이터에 기초하여) 스코어를 업데이트할 수 있다. 고-레벨 서비스들의 다른 예들은 차례를 양보하는 것(능동적으로, 사용자에 의한 표현 동작을 통해, 또는 수동적으로, 조건의 발생에 의해), 리더십 선출을 수행하는 것(상이한 디바이스들 상에서 게임 상태들 간의 모순들의 경우에 어떤 클라이언트 게임 상태를 제어할 것인지를 결정하는) 등을 포함한다.
몇몇 경우들에서, 시스템은 고-레벨 서비스에 관련된 모든 동작들을 수행할 수 없을 것이다(예컨대, 시스템이 조정 활동의 상태에 대한 모든 필요한 정보를 갖지 않을 때). 이 경우에, 시스템은 수신 클라이언트 디바이스 상에서 구현될 고-레벨 서비스로서 메시지를 플래그할 수 있고, 연루된 클라이언트 디바이스들로부터 부가적인 정보를 요청할 수 있으며, 및/또는 서비스를 수행하기 위해 수신인 클라이언트 디바이스 상에서 실행될 지시들을 생성할 수 있다.
블록(440)에서, 시스템은 블록(432)에서 수신된 메시지의 수신인에게 서비스에 관련된 API 호출 및/또는 임의의 지시들을 포워딩할 수 있다.
블록(442)에서, 시스템은 메시지가 신뢰가능 모드 또는 비 신뢰가능 모드로 전송될지를 결정할 수 있다(예컨대, 블록(432)에서 수신된 데이터 메시지에서 플래그에 의해 특정된 바와 같이). 모드가 비 신뢰가능 모드이면, 시스템은 블록(432)으로 돌아가며 새로운 데이터 메시지를 기다릴 수 있다.
모드가 신뢰가능 모드이면, 시스템은, 블록들(444 내지 450)에서, 미리 결정된 양의 시간을 기다리며 그 후 메시지의 확인 응답이 수신되었는지를 결정할 수 있다. 그렇다면, 시스템은 선택적으로 확인 응답을 전송 클라이언트 선택적으로 포워딩할 수 있다(블록 448). 그렇지 않다면, 시스템은 블록(440)에서 송신된 원래 정보를 재송신하며(블록 450), 그 후 또 다른 미리 결정된 양의 시간을 기다리기 위해 블록(444)으로 돌아갈 수 있다. 블록들(444 내지 450)에서의 루프가 미리 결정된 양의 시간 또는 미리 결정된 반복들의 수보다 많이 반복된다면, 시스템은 송신이 실패하였다고 결정할 수 있으며 메시지 송신의 실패를 전송 클라이언트 디바이스에 알릴 수 있다.
선택적으로, 데이터 송신이 실패한 구동 조정 효과는 정지될 수 있다. 유사하게, 시스템은 조정 효과가 완료되었음(또는 그 외 실행 동안 조정 효과가 실패하는 경우와 마찬가지로, 디바이스 상에서 종료되었음)을 나타내는 메시지를 개시 클라이언트 디바이스 또는 비-개시 클라이언트 디바이스로부터 수신할 수 있다. 이들 경우들에서, 시스템은 효과가 종료되었음을 조정 효과를 구동한 다른 클라이언트들에 알리는 것과 같은, 셧-다운 및 클린-업 절차들을 수행할 수 있다.
통신 시스템 개요
이들 예들은 국소적으로, 클라이언트 디바이스에서, 또는 원격으로(예컨대, 원격 서버에서) 제공되는 통신 시스템에 의해 구현될 수 있다. 도 5a 내지 도 5c는 통신 시스템들의 다양한 예들을 묘사하며 이하에서 보다 상세하게 논의된다.
도 5a는 대표적인 집중형 통신 시스템(500)을 묘사하며, 여기에서 상기 설명된 것과 같은 기능은 통신 서버로 통합된다. 집중형 시스템(500)은 전체적으로 단일 집중형 서버 디바이스(526) 내에서와 같은, 단일 컴퓨팅 엔티티에서 통신 서비스의 구조 및/또는 동작들 중 일부 또는 모두를 구현할 수 있다.
통신 시스템(500)은 하나 이상의 구성요소들을 포함하는 소프트웨어 애플리케이션들을 가진 컴퓨터-구현 시스템을 포함할 수 있다. 도 5a에 도시된 통신 시스템(500)은 특정한 토폴로지에서 제한된 수의 요소들을 갖지만, 통신 시스템(500)은 대안적인 토폴로지들에서 보다 많거나 또는 보다 적은 요소들을 포함할 수 있다.
통신 서비스(500)는 일반적으로 메시지들을 수신하고, 저장하며, 전달하도록 배열될 수 있다. 통신 서비스(500)는 메시지들 또는 비디오 통신들을 저장할 수 있지만 클라이언트 디바이스들(510) 상에서 실행할 수 있는 바와 같은, 클라이언트들(520)은 오프라인이며 클라이언트들이 이용 가능하다면 메시지들/통신들을 전달한다. 대안적으로 또는 또한, 클라이언트들(520)은 소셜 네트워킹 기능을 포함할 수 있다.
클라이언트 디바이스(510)는 수신인 사용자, 사용자 계정, 또는 분해한 다른 식별자로 어드레싱된 메시지들을 수신 클라이언트 디바이스(510)로 송신할 수 있다. 대표적인 실시예들에서, 클라이언트 디바이스들(510) 및 그것들 각각의 통신 클라이언트들(520)의 각각은 통신 서비스(500)의 특정한 사용자 또는 사용자들과 연관된다. 몇몇 실시예들에서, 클라이언트 디바이스들(510)은 스마트폰들과 같은 셀룰러 디바이스들일 수 있으며 클라이언트 디바이스들(510)의 각각과 연관된 전화번호에 기초하여 통신 서비스(500)에 대해 식별될 수 있다. 몇몇 실시예들에서, 각각의 통신 클라이언트는 통신 서비스(500)에 등록된 사용자 계정과 연관될 수 있다. 일반적으로, 각각의 통신 클라이언트는 메시지들의 수신을 위해 다양한 기술들을 통해 어드레싱될 수 있다. 몇몇 실시예들에서, 클라이언트 디바이스들(510)은 셀룰러 디바이스들일 수 있지만, 다른 실시예들에서, 클라이언트 디바이스들(510) 중 하나 이상은 개인용 컴퓨터들, 태블릿 디바이스들, 임의의 다른 형태의 컴퓨팅 디바이스일 수 있다.
클라이언트(510)는 하나 이상의 입력 디바이스들(512) 및 하나 이상의 출력 디바이스들(518)을 포함할 수 있다. 입력 디바이스들(512)은, 예를 들면, 마이크로폰들, 키보드들, 카메라들, 전자 펜들, 터치 스크린들, 및 메시지 데이터, 요청들, 명령들, 사용자 인터페이스 상호작용들, 선택들, 및 다른 유형들의 입력을 포함한 입력들을 수신하기 위한 다른 디바이스들을 포함할 수 있다. 출력 디바이스들(518)은 스피커, 모니터 또는 터치 스크린과 같은 디스플레이 디바이스, 및 인터페이스를 통신 시스템(500)에 제공하기 위한 다른 디바이스들을 포함할 수 있다.
클라이언트(510)는 하드 드라이브, 고체 상태 드라이브, 플래시 저장 장치, 판독 전용 메모리, 또는 랜덤 액세스 메모리 중 하나 또는 그것의 조합과 같은, 비-일시적 컴퓨터 판독 가능한 저장 매체일 수 있는, 메모리(519)를 포함할 수 있다. 메모리(519)는 입력(514)의 표현 및/또는 출력(516)의 표현, 뿐만 아니라 하나 이상의 애플리케이션들일 수 있다. 예를 들어, 메모리(519)는 사용자가 소셜 네트워킹 서비스와 상호 작용하도록 허용하는 통신 클라이언트(520) 및/또는 소셜 네트워킹 클라이언트를 저장할 수 있다.
입력(514)은 입력 디바이스(212)가 키보드인 경우에서와 같은, 텍스트일 수 있다. 대안적으로, 입력(514)은 입력 디바이스(512)가 마이크로폰인 경우에서와 같은, 오디오 레코딩일 수 있다. 따라서, 입력(514)은 오디오 레코딩을 통신 시스템(500)에 의해 프로세싱 가능한 텍스트로 변환하기 위해 자동 스피치 인식(ASR) 로직을 겪을 수 있다. ASR 로직은 클라이언트 디바이스(510)에 위치될 수 있거나(오디오 레코딩이 클라이언트(510)에 의해 국소적으로 프로세싱되며 대응하는 텍스트가 통신 서버(526)로 송신되도록), 또는 통신 서버(526)에서 원격으로 위치될 수 있다(이 경우에, 오디오 레코딩은 통신 서버(526)로 송신될 수 있으며 통신 서버(526)는 오디오를 텍스트로 프로세싱할 수 있다). 다른 조합들이 또한 가능하다 - 예를 들어, 입력 디바이스(512)가 터치 패드 또는 전자 펜이면, 입력(514)은 수기의 형태에 있을 수 있으며, 이것은 입력(512)을 프로세싱 가능한 텍스트로 변환하기 위해 수기 또는 광학적 문자 인식 분석 로직을 겪을 수 있다.
클라이언트(510)는 인터넷과 같은, 네트워크(524)와 통신하기 위한 네트워크 인터페이스(522)를 제공받을 수 있다. 네트워크 인터페이스(522)는 네트워크(524)와 호환 가능한 포맷으로 및/또는 프로토콜을 사용하여 입력(512)을 송신할 수 있으며 네트워크(524)로부터 대응하는 출력(516)을 수신할 수 있다.
네트워크 인터페이스(522)는 네트워크(524)를 통해 통신 서버(526)로 전달할 수 있다. 통신 서버(526)는 클라이언트들 사이에서 통신들을 수신하고, 저장하며, 포워딩하도록 동작적일 수 있다.
통신 서버(526)는 네트워크 인터페이스(522), 통신 선호들(528), 및 통신 로직(530)을 포함할 수 있다. 통신 선호들(528)은 하나 이상의 사용자들 및/또는 메시지 스레드들에 대한 하나 이상의 프라이버시 설정들 또는 다른 선호들을 포함할 수 있다. 더욱이, 통신 선호들(528)은 여기에서 설명된 로직에 대한, 디폴트 설정들을 포함한, 하나 이상의 설정들을 포함할 수 있다.
통신 로직(530)은 본 발명의 상기 설명된 특징들 중 임의의 것 또는 모두를 구현하기 위한 로직을 포함할 수 있다. 대안적으로 또는 또한, 특징들 중 일부 또는 모두는, 통신 클라이언트(520)와 같은 애플리케이션으로 통합됨으로써와 같은, 클라이언트(510-i)에서 구현될 수 있다.
클라이언트(510) 및/또는 통신 서버(526)의 네트워크 인터페이스(522)는 또한 네트워크(524)를 통해 앱 서버(540)와 통신하기 위해 사용될 수 있다. 앱 서버는 (다른 엔티티들 중에서) 클라이언트(510-i) 및/또는 통신 서버(526)에 의한 다운로드를 위해 이용 가능한 소프트웨어를 나타내는, 소프트웨어 또는 애플리케이션들을 앱 라이브러리(544)에 저장할 수 있다. 앱 라이브러리(544)에서의 앱은 여기에서 설명된 실시예들을 전체적으로 또는 부분적으로 구현할 수 있다. 대표적인 실시예들을 통합한 소프트웨어를 다운로드하기 위한 요청을 수신하면, 앱 로직(542)은 앱 라이브러리(544)에서 대응하는 앱을 식별할 수 있으며 (네트워크 인터페이스를 통해) 소프트웨어를 요청한 엔티티로 앱을 제공할 수 있다.
클라이언트(510) 및/또는 통신 서버(526)의 네트워크 인터페이스(522)는 또한 네트워크(524)를 통해 소셜 네트워킹 서버(536)와 통신하기 위해 사용될 수 있다. 소셜 네트워킹 서버(536)는 소셜 네트워크에서 연결들을 정의하는 소셜 네트워킹 그래프(538)를 포함하거나 또는 그것과 상호 작용할 수 있다. 더욱이, 통신 서버(526)는 소셜 네트워크로부터, 연결 정보, 통신 이력, 이벤트 세부사항들 등을 검색하는 것과 같은, 다양한 목적들을 위해 소셜 네트워킹 서버(536)에 연결할 수 있다.
클라이언트(510)의 사용자는 소셜 네트워킹 서버(536)와 또는 그것을 통해 상호 작용하거나 또는 통신하는 개인(인간 사용자), 엔티티(예컨대, 기업, 비즈니스, 또는 제 3 자 애플리케이션), 또는 그룹(예컨대, 개인들 또는 엔티티들의)일 수 있다. 소셜-네트워킹 서버(536)는 온라인 소셜 네트워크를 호스팅하는 네트워크-어드레스 가능한 컴퓨팅 시스템일 수 있다. 소셜 네트워킹 서버(536)는, 예를 들어, 사용자-프로필 데이터, 개념-프로필 데이터, 소셜-그래프 정보, 또는 온라인 소셜 네트워크에 관련된 다른 적절한 데이터와 같은, 소셜-네트워킹 데이터를 생성하고, 저장하고, 수신하며, 전송할 수 있다. 소셜-네트워킹 서버(536)는 직접 또는 네트워크(524)를 통해 네트워크 환경의 다른 구성요소들에 의해 액세스될 수 있다.
소셜 네트워킹 서버(536)는 예를 들어, 적절한 프라이버시 설정들을 설정함으로써, 사용자들이 소셜 네트워킹 서버(536)에 의해 로그되거나 또는 다른 시스템들(예컨대, 통신 서버(526)와 같은, 제 3 자 시스템들)과 공유된 그들의 동작들을 갖는데 참여하거나 또는 탈퇴하도록 허용하는 인가 서버(또는 다른 적절한 구성요소(들))를 포함할 수 있다. 사용자의 프라이버시 설정은 사용자와 연관된 어떤 정보가 로그될 수 있는지, 사용자와 연관된 정보가 어떻게 로그될 수 있는지, 사용자와 연관된 정보가 로그될 수 있는 때, 사용자와 연관된 정보를 누가 로그할 수 있는지, 사용자와 연관된 정보가 누구와 공유될 수 있는지, 및 사용자와 연관된 정보가 어떤 목적들을 위해 로그되거나 또는 공유될 수 있는지를 결정할 수 있다. 인가 서버들은 블로킹, 데이터 해싱, 익명화, 또는 다른 적절한 기술들을 통해 적절하게, 소셜-네트워킹 서버(536)의 사용자들의 하나 이상의 프라이버시 설정들을 시행하기 위해 사용될 수 있다.
보다 구체적으로, 온라인 소셜 네트워크의 콘텐트 오브젝트들 중 하나 이상은 프라이버시 설정과 연관될 수 있다. 오브젝트에 대한 프라이버시 설정들(또는 "액세스 설정들")은 예를 들어, 오브젝트와 연관되어, 인가 서버에서의 인덱스에서, 또 다른 적절한 방식으로, 또는 그것의 임의의 조합과 같은, 임의의 적절한 방식으로 저장될 수 있다. 오브젝트의 프라이버시 설정은 오브젝트(또는 오브젝트와 연관된 특정한 정보)가 온라인 소셜 네트워크를 사용하여 어떻게 액세스될 수 있는지(예컨대, 보여지거나 또는 공유되는)를 특정할 수 있다. 오브젝트에 대한 프라이버시 설정들이 특정한 사용자로 하여금 상기 오브젝트를 액세스하도록 허용하는 경우, 오브젝트는 상기 사용자에 대하여 "가시적"인 것으로 설명될 수 있다. 제한에 의해서가 아닌 예로서, 온라인 소셜 네트워크의 사용자는 사용자-프로필 페이지에 대한 경력 정보를 액세스할 수 있는 사용자들의 세트를 식별하는 사용자-프로필 페이지에 대한 프라이버시 설정들을 특정할 수 있으며, 그에 따라 다른 사용자들이 정보를 액세스하는 것을 배제한다. 특정한 실시예들에서, 프라이버시 설정들은 오브젝트와 연관된 특정한 정보를 액세스하도록 허용되지 않아야 하는 사용자들의 "차단 리스트"를 특정할 수 있다. 다시 말해서, 차단 리스트는 오브젝트가 가시적이지 않은 하나 이상의 사용자들 또는 엔티티들을 특정할 수 있다. 제한으로서가 아닌 예로서, 사용자는 사용자와 연관된 사진 앨범들을 액세스할 수 없는 사용자들의 세트를 특정할 수 있으며, 그에 따라 이들 사용자들이 사진 앨범들을 액세스하는 것을 배제한다(또한 가능하게는 사용자들의 세트 내에 있지 않은 특정한 사용자들이 사진 앨범들을 액세스하도록 허용하면서).
특정한 실시예들에서, 프라이버시 설정들은 소셜 네트워킹 그래프(538)의 특정한 요소들과 연관될 수 있다. 노드 또는 에지와 같은, 소셜-그래프 요소의 프라이버시 설정들은 소셜-그래프 요소, 소셜-그래프 요소와 연관된 정보, 또는 소셜-그래프 요소와 연관된 콘텐트 오브젝트들이 온라인 소셜 네트워크를 사용하여 어떻게 액세스될 수 있는지를 특정할 수 있다. 제한으로서가 아닌 예로서, 특정한 사진에 대응하는 특정한 개념 노드는 사진이 단지 사진에 태그된 사용자들 및 그들의 친구들에 의해서만 액세스될 수 있음을 특정하는 프라이버시 설정을 가질 수 있다. 특정한 실시예들에서, 프라이버시 설정들은 사용자들로 하여금 소셜 네트워킹 서버(536)에 의해 로그되거나 또는 다른 시스템들과 공유된 그들의 동작들을 갖는데 참여하거나 또는 탈퇴하도록 허용할 수 있다. 특정한 실시예들에서, 오브젝트와 연관된 프라이버시 설정들은 임의의 적절한 입도의 허용된 액세스 또는 액세스의 거부를 특정할 수 있다. 제한으로서가 아닌 예로서, 액세스 또는 액세스의 거부는 특정한 사용자들(예컨대, 단지 나, 나의 룸메이트들, 및 나의 상관), 특정한 정도의 분리 내에서의 사용자들(예컨대, 친구들, 또는 친구들의 친구들), 사용자 그룹들(예컨대, 게임 클럽, 가족), 사용자 네트워크들(예컨대, 특정한 고용주들의 고용인들, 특정한 대학의 학생들 또는 졸업생들), 모든 사용자들("공개"), 사용자들 없음("사설"), 제 3 자 시스템의 사용자들, 특정한 애플리케이션들(예컨대, 제 3 자 애플리케이션들, 외부 웹사이트들), 다른 적절한 사용자들 또는 엔티티들, 또는 그것의 임의의 조합에 대해 특정될 수 있다. 본 개시는 특정한 방식으로 특정한 프라이버시 설정들을 사용하여 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 프라이버시 설정들을 사용하여 고려한다.
데이터 저장소에 저장된 특정한 오브젝트에 대한 사용자(또는 다른 엔티티)로부터의 요청에 응답하여, 소셜 네트워킹 서버(536)는 오브젝트에 대한 요청을 데이터 저장소로 전송할 수 있다. 요청은 요청과 연관된 사용자를 식별할 수 있다. 요청된 데이터 오브젝트는 인가 서버가, 오브젝트와 연관된 프라이버시 설정들에 기초하여 사용자가 오브젝트를 액세스하도록 허가됨을 결정한다면 단지 사용자(또는 사용자의 클라이언트 시스템(510))로만 전송될 수 있다. 요청한 사용자가 오브젝트를 액세스하도록 허가되지 않는다면, 인가 서버는 요청된 오브젝트가 데이터 저장소로부터 검색되는 것을 방지할 수 있거나, 요청된 오브젝트가 사용자로 전송되는 것을 방지할 수 있다. 탐색 질의 콘텍스트에서, 오브젝트는 질의한 사용자가 오브젝트를 액세스하도록 허가된다면 단지 탐색 결과로서 생성될 수 있다. 다시 말해서, 오브젝트는 질의한 사용자에게 가시적인 가시성을 가져야 한다. 오브젝트들이 사용자에게 가시적이지 않은 가시성을 갖는다면, 오브젝트는 탐색 결과들로부터 배제될 수 있다.
몇몇 실시예들에서, 타겟팅 기준들은 다양한 목적들을 위해 소셜 네트워크의 사용자들을 식별하기 위해 사용될 수 있다. 사용자들을 식별하고 타겟팅하기 위해 사용된 타겟팅 기준들은 소셜-네트워킹 서버(536)에 대한, 명시적인, 서술된 사용자 관심들, 또는 소셜 네트워킹 서버(536) 상에서 노드, 오브젝트, 엔티티, 브랜드, 또는 페이지로의 사용자의 명시적인 연결들을 포함할 수 있다. 또한, 또는 대안으로서, 이러한 타겟팅 기준들은 암시적인 또는 추론된 사용자 관심들 또는 연결들을 포함할 수 있다((예컨대, 공유된 관심들, 연결들, 또는 이벤트들에 기초하여) 사용자의 이력, 인구통계학적, 사회적 또는 다른 활동들, 친구들의 사회적 또는 다른 활동들, 구독들, 또는 사용자와 유사한 다른 사용자들의 이전의 것들 중 임의의 것을 분석하는 것을 포함할 수 있는). 특정한 실시예들은 플랫폼 및 "좋아요" 느낌 데이터를 수반할 수 있는, 플랫폼 타겟팅; 맥락과 관련된 신호들(예컨대, 누가 지금 코카콜라에 대한 페이지를 보고 있는가 또는 최근에 보았는가?); 가벼운 연결들(예컨대, "체크-인들"); 유사한 연결; 팬들; 추출된 키워드들; EMU 광고; 추정에 의한 광고; 계수들, 친밀도들, 또는 다른 소셜-그래프 정보; 친구의 친구 연결들; 피닝 또는 부스팅; 거래들; 여론조사들; 가계 소득, 사회적 클러스터들 또는 그룹들; 이미지들 또는 다른 미디어에서 검출된 제품들; 사회적- 또는 개방-그래프 에지 유형들; 지리-예측; 프로필의 뷰들 또는 페이지들; 상태 업데이트들 또는 다른 사용자 포스트들(그 분석은 자연어 프로세싱 또는 키워드 추출을 수반할 수 있다); 이벤트 정보; 또는 공동 필터링을 이용할 수 있다. 사용자들을 식별하고 타겟팅하는 것은 또한 적절하다면, 프라이버시 설정들(사용자 옵트-아웃들과 같은), 데이터 해싱, 또는 데이터 익명화를 시사할 수 있다.
도 5a에 묘사된 집중형 실시예는, 대표적인 실시예들을 구현하기 위한 로직이 통신 서버(526)로 통합되기 때문에, 새로운 시스템으로서 또는 기존의 시스템에 대한 업그레이드로서 전개에 매우 적합할 수 있다. 반대로, 도 5b는 대표적인 분산형 통신 시스템(550)을 묘사하며, 여기에서 대표적인 실시예들을 구현하기 위한 기능은 분산되며 통신 서버로부터 원격으로 액세스 가능하다. 분산형 통신 시스템(550)의 예들은 클라이언트-서버 아키텍처, 3-티어 아키텍처, N-티어 아키텍처, 강결합 또는 클러스터형 아키텍처, 피어-투-피어 아키텍처, 마스터-슬레이크 아키텍처, 공유형 데이터베이스 아키텍처, 및 다른 유형들의 분산형 시스템들을 포함할 수 있다.
도 5b에 묘사된 많은 구성요소들은 도 5a에서의 것들과 동일하며, 이들 요소들의 설명은 간결성을 위해 여기에서 반복되지 않는다(앱 서버(540)는 논의의 용이함을 위해 도면으로부터 생략되지만, 이 실시예는 또한 앱 서버(540)에서 이용할 수 있다는 것이 이해된다). 집중형 실시예 및 분산형 실시예 간의 주요 차이는 대표적인 실시예들을 구현하기 위해 로직(530)을 호스팅하는, 별개의 프로세싱 서버(552)의 부가이다. 프로세싱 서버(552)는 통신 서버(526)와는 완전히 다를 수 있지만 로직(530) 및 로직(534)의 기능을 통신 서버(526)로 제공하기 위해, 직접 또는 네트워크(524)를 통해, 통신 서버(526)와 통신할 수 있다.
도 5b에 묘사된 실시예는, 예를 들어, 기존의 통신 서버를 교체하는 것이 어렵거나 또는 바람직하지 않을 때, 대표적인 실시예들이 기존의 통신 시스템들과 함께 전개되도록 허용하는데 특히 잘 맞을 수 있다. 부가적으로, 몇몇 경우들에서, 통신 서버(526)는 부가적인 피봇 기능의 부가를 제한하거나 또는 배제하는 제한된 리소스들(예컨대, 프로세싱 또는 메모리 리소스들)을 가질 수 있다. 이러한 상황들에서, 여기에서 설명된 능력들은 여전히 별개의 프로세싱 서버(552)를 통해 제공될 수 있다.
추가 실시예들에서, 로직(532)은 예를 들어, 통신 클라이언트(520)의 부분으로서, 클라이언트(510-i)에서 국소적으로 제공될 수 있다. 이들 실시예들에서, 각각의 클라이언트(510-i)는 어떤 메시지들이 어떤 스레드에 속하는지, 및 디스플레이를 업데이트하고 통지들을 발행하는 방법에 대해 그 자신의 결정을 한다. 그 결과, 상이한 클라이언트들(510-i)은 국소적 설정들에 의존하여, 동일한 대화를 상이하게 디스플레이할 수 있다(예컨대, 동일한 메시지들은 상이한 스레드들에 할당될 수 있거나, 또는 유사한 스레드들은 상이한 부모들 또는 하이라이트들을 가질 수 있다).
도 5c는 소셜 네트워킹 그래프(538)의 예를 예시한다. 대표적인 실시예들에서, 소셜 네트워킹 서비스는 소셜 네트워킹 서비스를 통해 소셜 그래프 데이터 구조로서 하나 이상의 데이터 저장소들에 하나 이상의 소셜 그래프들(538)을 저장할 수 있다.
소셜 그래프(538)는 사용자 노드들(554) 및 개념 노드들(556)과 같은, 다수의 노드들을 포함할 수 있다. 소셜 그래프(228)는 노드들을 연결하는 노드들(558)을 추가로 포함할 수 있다. 소셜 그래프(228)의 노드들 및 에지들은 데이터 오브젝트들로서, 예를 들어, 데이터 저장소(소셜-그래프 데이터베이스와 같은)에 저장될 수 있다. 이러한 데이터 저장소는 소셜 그래프(228)의 노드들 또는 에지들의 하나 이상의 탐색 가능한 또는 질의 가능한 인덱스들을 포함할 수 있다.
소셜 그래프(538)는 소셜-네트워킹 서버(226), 클라이언트 시스템(210), 제 3 자 시스템(예컨대, 번역 서버(224)), 또는 적절한 애플리케이션들에 대한 임의의 다른 승인된 시스템 또는 디바이스에 의해 액세스될 수 있다.
사용자 노드(554)는 소셜-네트워킹 시스템의 사용자에 대응할 수 있다. 사용자는 소셜 네트워킹 시스템과 또는 그것을 통해 상호작용하거나 또는 통신하는 개인(인간 사용자), 엔티티(예컨대, 기업, 비즈니스, 또는 제 3 자 애플리케이션), 또는 그룹(예컨대, 개인들 또는 엔티티들의)일 수 있다. 대표적인 실시예들에서, 사용자가 소셜-네트워킹 시스템으로 계정에 대해 등록할 때, 소셜-네트워킹 시스템은 사용자에 대응하는 사용자 노드(554)를 생성하며, 사용자 노드(30)를 하나 이상의 데이터 저장소들에 저장할 수 있다. 여기에서 설명된 사용자들 및 사용자 노드들(554)은, 적절한 경우, 소셜-네트워킹 시스템에 등록하지 않은 사용자들을 나타낼 수 있다. 특정한 실시예들에서, 사용자 노드(554)는 소셜-네트워킹 시스템을 포함한, 다양한 시스템들에 의해 수집된 정보 또는 사용자에 의해 제공된 정보와 연관될 수 있다. 제한으로서가 아닌 예로서, 사용자는 그들의 이름, 프로필 사진, 연락처 정보, 생일, 성별, 혼인 여부, 가족 상황, 직장, 교육 배경, 선호들, 관심사들, 또는 다른 인구 통계학적 정보를 제공할 수 있다. 특정한 실시예들에서, 사용자 노드(554)는 사용자와 연관된 정보에 대응하는 하나 이상의 데이터 오브젝트들과 연관될 수 있다. 특정한 실시예들에서, 사용자 노드(554)는 하나 이상의 웹페이지들에 대응할 수 있다. 사용자 노드(554)는 소셜-네트워킹 시스템에서 사용자에 대한 고유 사용자 식별자와 연관될 수 있다.
특정한 실시예들에서, 개념 노드(556)는 개념에 대응할 수 있다. 제한으로서가 아닌 예로서, 개념은 장소(예를 들어, 영화관, 레스토랑, 랜드마크, 또는 도시와 같은); 웹사이트(예를 들어, 소셜-네트워크 서비스와 연관된 웹사이트 또는 웹-애플리케이션 서버와 연관된 제 3 자 웹사이트); 엔티티(예를 들어, 개인, 비즈니스, 그룹, 스포츠팀, 또는 유명인사와 같은); 소셜-네트워킹 시스템 내에 또는 웹-애플리케이션 서버와 같은 외부 서버상에 위치될 수 있는 리소스(예를 들어, 오디오 파일, 비디오 파일, 디지털 사진, 텍스트 파일, 구조화된 문서, 또는 애플리케이션); 실제 또는 지적 재산권(예를 들어, 조각, 그림, 영화, 게임, 노래, 아이디어, 사진, 또는 논문과 같은); 게임; 활동; 아이디어 또는 이론; 또 다른 적절한 개념; 또는 둘 이상의 이러한 개념들에 대응할 수 있다. 개념 노드(556)는 사용자에 의해 제공된 개념의 정보 또는 소셜-네트워킹 시스템을 포함하여, 다양한 시스템들에 의해 수집된 정보와 연관될 수 있다. 제한으로서가 아닌 예로서, 개념의 정보는 명칭 또는 타이틀; 하나 이상의 이미지들(예컨대, 책의 커버 페이지의 이미지); 위치(어드레스 또는 지리적 위치); 웹사이트(URL과 연관될 수 있는); 연락처 정보(예컨대, 전화번호 또는 이메일 어드레스); 다른 적절한 개념 정보; 또는 이러한 정보의 임의의 적절한 조합을 포함할 수 있다. 특정한 실시예들에서, 개념 노드(556)는 개념 노드(556)와 연관된 정보에 대응하는 하나 이상의 데이터 오브젝트들과 연관될 수 있다. 특정한 실시예들에서, 개념 노드(556)는 하나 이상의 웹페이지들에 대응할 수 있다.
특정한 실시예들에서, 소셜 그래프(538)에서의 노드는 웹페이지를 나타내거나 또는 그것에 의해 표현될 수 있다("프로필 페이지"로서 불리울 수 있는). 프로필 페이지들은 소셜-네트워킹 시스템에 의해 호스팅되거나 또는 그것에 액세스 가능할 수 있다. 프로필 페이지들은 또한 제 3 자 서버와 연관된 제 3 자 웹사이트들 상에서 호스팅될 수 있다. 제한으로서가 아닌 예로서, 특정한 외부 웹페이지에 대응하는 프로필 페이지는 특정한 외부 웹페이지일 수 있으며 프로필 페이지는 특정한 개념 노드(556)에 대응할 수 있다. 프로필 페이지들은 다른 사용자들의 모든 또는 선택된 서브세트에 의해 볼 수 있을 것이다. 제한으로서가 아닌 예로서, 사용자 노드(554)는 대응하는 사용자가 콘텐트를 부가하고, 선언들을 하거나, 또는 그 외 그 또는 그녀 자신을 표현하는 대응하는 사용자-프로필 페이지를 가질 수 있다. 비즈니스 페이지(205)와 같은 비즈니스 페이지는 상업 엔티티를 위한 사용자-프로필 페이지를 포함할 수 있다. 제한으로서가 아닌 또 다른 예로서, 개념 노드(556)는, 특히 개념 노드(556)에 대응하는 개념에 관하여, 하나 이상의 사용자들이 콘텐트를 부가하고, 선언들을 하거나 또는 그들 자신을 표현하는 대응하는 개념-프로필 페이지를 가질 수 있다.
특정한 실시예들에서, 개념 노드(556)는 제 3 자 시스템에 의해 호스팅된 제 3 자 웹페이지 또는 리소스를 나타낼 수 있다. 제 3 자 웹페이지 또는 리소스는 다른 요소들 중에서, 동작 또는 활동을 나타내는 콘텐트, 선택 가능한 또는 다른 아이콘, 또는 다른 상호-동작 가능한 오브젝트(예를 들어, JavaScript, AJAX, 또는 PHP 코드들로 구현될 수 있는)를 포함할 수 있다. 제한으로서가 아닌 예로서, 제 3 자 웹페이지는 "좋아요", "체크인", "먹기", "추천하기", 또는 또 다른 적절한 동작 또는 활동과 같은 선택 가능한 아이콘을 포함할 수 있다. 제 3 자 웹페이지를 보는 사용자는 아이콘들 중 하나(예컨대, "먹기")를 선택함으로써 동작을 수행하여, 클라이언트 시스템이 사용자의 동작을 나타내는 메시지를 소셜-네트워킹 시스템으로 전송하게 한다. 메시지에 응답하여, 소셜-네트워킹 시스템은 사용자에 대응하는 사용자 노드(554)와 제 3 자 웹페이지에 대응하는 개념 노드 간에 에지(예컨대, "먹기" 에지)를 생성하며 에지(558)를 하나 이상의 데이터 저장소들에 저장할 수 있다.
특정한 실시예들에서, 소셜 그래프(538)에서 노드들의 쌍은 하나 이상의 에지들(558)에 의해 서로 연결될 수 있다. 노드들의 쌍을 연결한 에지(558)는 노드들의 쌍 사이에서의 관계를 나타낼 수 있다. 특정한 실시예들에서, 에지(558)는 노드들의 쌍 사이에서의 관계에 대응하는 하나 이상의 데이터 오브젝트들 또는 속성들을 포함하거나 또는 이를 나타낼 수 있다. 제한으로서가 아닌 예로서, 제 1 사용자는 제 2 사용자가 제 1 사용자의 "친구"임을 나타낼 수 있다. 이러한 표시에 응답하여, 소셜-네트워킹 시스템은 "친구 요청"을 제 2 사용자로 전송할 수 있다. 제 2 사용자가 "친구 요청"을 확인하면, 소셜-네트워킹 시스템은 제 1 사용자의 사용자 노드(554)를 소셜 그래프(538)에서 제 2 사용자의 사용자 노드(554)에 연결하는 에지(558)를 생성하며 에지(558)를 소셜-그래프 정보로서 하나 이상의 데이터 저장소들에 저장할 수 있다. 도 5c의 예에서, 소셜 그래프(538)는 사용자 "Amanda" 및 사용자 " Dorothy"의 사용자 노드들(554) 간에 친구 관계를 나타내는 에지(558)를 포함한다. 본 개시는 특정한 사용자 노드들(554)을 연결한 특정한 속성들을 가진 특정한 에지들(558)을 설명하거나 또는 예시하지만, 본 개시는 사용자 노드들(554)을 연결하는 임의의 적절한 속성들을 가진 임의의 적절한 에지들(558)을 고려한다. 제한으로서가 아닌 예로서, 에지(558)는 우정, 가족 관계, 비즈니스 또는 고용 관계, 팬 관계, 팔로워 관계, 방문자 관계, 구독자 관계, 상사/부하 관계, 상호 관계, 비-상호 관계, 또 다른 적절한 유형의 관계, 또는 둘 이상의 이러한 관계들을 나타낼 수 있다. 게다가, 본 개시는 일반적으로 노드들을 연결되는 것으로 설명하지만, 본 개시는 또한 사용자들 또는 개념들을 연결된 것으로 설명한다. 여기에서, 연결되는 사용자들 또는 개념들에 대한 참조들은, 적절한 경우, 하나 이상의 에지들(558)에 의해 소셜 그래프(538)에서 연결되는 이들 사용자들 또는 개념들에 대응하는 노드들을 나타낼 수 있다.
특정한 실시예들에서, 사용자 노드(554)와 개념 노드(556) 간의 에지(558)는 개념 노드(556)와 연관된 개념을 향해 사용자 노드(554)와 연관된 사용자에 의해 수행된 특정한 동작 또는 활동을 나타낼 수 있다. 제한으로서가 아닌 예로서, 도 5c에 예시된 바와 같이, 사용자는 개념을 "좋아요", "출석", "플레이", "청취", "요리", "근무", 또는 "시청"할 수 있고, 그 각각은 에지 유형 또는 서브유형에 대응할 수 있다. 개념 노드(556)에 대응하는 개념-프로필 페이지는, 예를 들어, 선택 가능한 "체크인" 아이콘(예를 들어, 클릭 가능한 "체크인" 아이콘과 같은) 또는 선택 가능한 "즐겨찾기 추가" 아이콘을 포함할 수 있다. 유사하게, 사용자가 이들 아이콘들을 클릭한 후, 소셜-네트워킹 시스템은 각각의 동작에 대응하는 사용자의 동작에 응답하여 "즐겨찾기" 에지 또는 "체크인" 에지를 생성할 수 있다. 제한으로서가 아닌 또 다른 예로서, 사용자(사용자 "Carla")는 특정한 애플리케이션(온라인 음악 애플리케이션인, SPOTIFY)을 사용하여 특정한 노래("Across the Sea")를 청취할 수 있다. 이 경우에, 소셜-네트워킹 시스템은 사용자가 노래를 청취하고 애플리케이션을 사용하였음을 나타내기 위해 사용자에 대응하는 사용자 노드들(554)과 노래 및 애플리케이션에 대응하는 개념 노드들(556) 간에 "청취함" 에지(558) 및 "사용함" 에지를 생성할 수 있다(도 5c에 예시된 바와 같이). 게다가, 소셜-네트워킹 시스템은 특정한 노래가 특정한 애플리케이션에 의해 플레이되었음을 나타내기 위해 노래와 애플리케이션에 대응하는 개념 노드들(556) 간에 "플레이함" 에지(558)를 생성할 수 있다(도 5c에 예시된 바와 같이). 이 경우에, "플레이함" 에지(558)는 외부 오디오 파일(노래 "Across the Sea")에 대해 외부 애플리케이션(SPOTIFY)에 의해 수행된 동작에 대응한다. 본 개시는 사용자 노드들(554) 및 개념 노드들(556)을 연결하는 특정한 속성들을 가진 특정한 에지들(558)을 설명하지만, 본 개시는 사용자 노드들(554) 및 개념 노드들(556)을 연결하는 임의의 적절한 속성들을 가진 임의의 적절한 에지들(558)을 고려한다. 게다가, 본 개시는 사용자 노드(554) 및 개념 노드(556) 사이에서 단일 관계를 나타내는 에지들을 설명하지만, 본 개시는 사용자 노드(554) 및 개념 노드(556) 사이에서 하나 이상의 관계들을 나타내는 에지들을 고려한다. 제한으로서가 아닌 예로서, 에지(558)는 사용자가 좋아하며 특정한 개념에서 사용하였음을 나타낼 수 있다. 대안적으로, 또 다른 에지(558)는 사용자 노드(554) 및 개념 노드(556) 사이에서(도 5c에 예시된 바와 같이, 사용자 "Edwin"에 대한 사용자 노드(554)와 "SPOTIFY"에 대한 개념 노드(556) 사이에서) 각각의 유형의 관계(또는 다수의 단일 관계)를 나타낼 수 있다.
특정한 실시예들에서, 소셜-네트워킹 시스템은 소셜 그래프(538)에서 사용자 노드(554)와 개념 노드(556) 사이에 에지(558)를 생성할 수 있다. 제한으로서가 아닌 예로서, 개념-프로필 페이지를 보는 사용자(예를 들어, 사용자의 클라이언트 시스템에 의해 호스팅된 웹 브라우저 또는 특수-목적 애플리케이션을 사용함으로써와 같은)는 그 또는 그녀가 "좋아요" 아이콘을 클릭하거나 또는 선택함으로써 개념 노드(556)에 의해 표현된 개념을 좋아한다는 것을 나타낼 수 있으며, 이것은 사용자의 클라이언트 시스템으로 하여금 개념-프로필 페이지와 연관된 개념의 사용자의 애호를 나타내는 메시지를 소셜-네트워킹 시스템으로 전송하게 할 수 있다. 메시지에 응답하여, 소셜-네트워킹 시스템은, 사용자와 개념 노드(556) 사이에서의 "좋아요" 에지(558)에 의해 예시된 바와 같이, 사용자와 연관된 사용자 노드(554) 및 개념 노드(556) 사이에 에지(558)를 생성할 수 있다. 특정한 실시예들에서, 소셜-네트워킹 시스템은 에지(558)를 하나 이상의 데이터 저장소들에 저장할 수 있다. 특정한 실시예들에서, 에지(558)는 특정한 사용자 동작에 응답하여 소셜-네트워킹 시스템에 의해 자동으로 형성될 수 있다. 제한으로서가 아닌 예로서, 제 1 사용자 노드가 사진을 업로드하고, 영화를 보거나, 또는 노래를 듣는다면, 에지(558)가 제 1 사용자에 대응하는 사용자 노드(554)와 이들 개념들에 대응하는 개념 노드들(556) 사이에 형성될 수 있다. 본 개시는 특저한 방식들로 특정한 에지들(558)을 형성하는 것을 설명하지만, 본 개시는 임의의 적절한 방식으로 임의의 적절한 에지들(558)을 형성하는 것을 고려한다.
소셜 그래프(538)는 복수의 제품 노드들을 추가로 포함할 수 있다. 제품 노드들은 특정한 비즈니스와 연관될 수 있는 특정한 제품들을 나타낼 수 있다. 비즈니스는 제품 카탈로그를 소비자-대-비즈니스 서비스를 제공할 수 있으며 소비자-대-비즈니스 서비스는 그러므로 소셜 그래프(538)에서 제품 내에서의 제품들의 각각을 나타낼 수 있으며 각각의 제품은 별개의 제품 노드에 있다. 제품 노드는 가격 정보, 기술적 정보, 제조사 정보, 가용성 정보, 및 다른 관련 정보와 같은, 제품에 관한 정보를 포함할 수 있다. 예를 들어, 레스토랑에 대해 메뉴에 대한 아이템들의 각각은 아이템들의 각각을 기술한 제품 노드를 갖고 소셜 그래프(538) 내에 표현될 수 있다. 제품 노드는 에지에 의해 제품을 제공하는 비즈니스에 연결될 수 있다. 다수의 비즈니스들이 제품을 제공하는 경우에, 각각의 비즈니스는 제품의 제공과 연관된 별개의 제품 노드를 가질 수 있거나 또는 각각은 동일한 제품 노드에 연결할 수 있다. 제품 노드는 에지에 의해 제품을 구매하고, 평가하고, 소유하고, 추천하거나, 또는 보는 각각의 사용자에게 연결될 수 있으며, 에지는 관계(예컨대, 구매, 평가, 소유, 추천, 보기, 또는 다른 관계)의 특징을 기술한다. 제품 노드들의 각각은 연결된 상인 비즈니스에 의해 그래프 id 및 연관된 상인 id와 연관될 수 있다. 비즈니스로부터 이용 가능한 제품들은 그러므로 소셜 그래프(538) 내에서 비즈니스를 위해 사용자 노드에 연결된 이용 가능한 제품 노드들을 검색함으로써 사용자에게 전달될 수 있다. 제품 노드에 대한 정보는 참조된 제품에 관한 정보를 캡슐화하는 제품 오브젝트로서 소셜-네트워킹 시스템에 의해 조작될 수 있다.
이와 같이, 소셜 그래프(538)는 소셜-네트워킹 시스템의 둘 이상의 사용자들의 공유된 관심사들, 공유된 경험들, 또는 다른 공유된 또는 공통 속성들을 추론하기 위해 사용될 수 있다. 예를 들어, 각각 소셜 그래프(538)에서 표현된 공통 비즈니스, 제품, 미디어 아이템, 기관, 또는 다른 엔티티로의 에지를 가진 둘 이상의 사용자들은 상기 엔티티와 공유된 관계를 나타낼 수 있으며, 이것은 하나 이상의 사용자들에 대해, 메시징 시스템을 포함하여, 소셜-네트워킹 시스템의 사용의 맞춤화를 제안하기 위해 사용될 수 있다.
상기 설명된 실시예들은 메시징 아키텍처에 의해 수행될 수 있으며, 그 예는 도 6을 참조하여 다음에 설명된다.
메시징 아키텍처
도 6은 메시징 서비스(600)의 다양한 기능들을 구현한 복수의 서버들의 실시예를 예시한다. 작업 및 기능들의 상이한 분배들은 메시징 서비스(600)의 다양한 실시예들에서 사용될 수 있다는 것이 이해될 것이다.
메시징 서비스(600)는 도메인 이름 프론트 엔드(602)를 포함할 수 있다. 도메인 이름 프론트 엔드(602)는 도메인 이름 시스템(DNS)에서 메시징 서비스(600)와 연관된 하나 이상의 도메인 이름들을 할당받을 수 있다. 도메인 이름 프론트 엔드(602)는 인입 연결들을 수신하며 다양한 메시징 서비스들을 제공하는 서버들로의 연결들을 분배할 수 있다.
메시징 서비스(602)는 하나 이상의 챗 서버들(604)을 포함할 수 있다. 챗 서버들(604)은 챗 메시지들과 같은 사용자-대-사용자 메시징 업데이트들을 수신하고 송신하기 위한 프론트-엔드 서버들을 포함할 수 있다. 인입 연결들은 작업부하 균형화에 기초하여 도메인 이름 프론트 엔드(602)에 의해 챗 서버들(604)에 할당될 수 있다.
메시징 서비스(600)는 백엔드 서버들(608)을 포함할 수 있다. 백엔드 서버들(608)은 프론트-엔드 챗 서버들(604)의 챗 동작들의 지원으로 특수화된 태스크들을 수행할 수 있다. 복수의 상이한 유형들의 백엔드 서버들(608)이 사용될 수 있다. 상이한 백엔드 서버들(608)로의 태스크들의 유형들의 할당은 상이한 실시예들에서 달라질 수 있다는 것이 이해될 것이다. 몇몇 실시예들에서, 전용 서버들에 의해 제공된 백-엔드 서비스들 중 일부는 단일 서버 또는 각각이 여기에서 설명된 실시예에서 상이한 서버들 사이에 분배되는 다수의 태스크들을 수행하는 서버들의 세트로 조합될 수 있다. 유사하게, 몇몇 실시예들에서, 여기에서 설명된 전용 백-엔드 서버들 중 일부의 태스크들은 상이한 서버 그룹들의 상이한 서버들 사이에서 분배될 수 있다.
메시징 서비스(600)는 하나 이상의 오프라인 저장 서버들(610)을 포함할 수 있다. 하나 이상의 오프라인 저장 서버들(610)은 메시징 클라이언트들이 재연결할 때 유지 중인 현재-오프라인 메시징 클라이언트들에 대한 메시징 콘텐트를 저장할 수 있다.
메시징 서비스(600)는 하나 이상의 세션 서버들(612)을 포함할 수 있다. 하나 이상의 세션 서버들(612)은 연결된 메시징 클라이언트들의 세션 상태를 유지할 수 있다.
메시징 서비스(600)는 하나 이상의 존재 서버들(614)을 포함할 수 있다. 하나 이상의 존재 서버들(614)은 메시징 서비스(600)에 대한 존재 정보를 유지할 수 있다. 존재 정보는 주어진 사용자가 온라인 메시징 클라이언트를 가지며 채팅을 위해 이용 가능하고, 온라인 메시징 클라이언트를 갖지만 그로부터 현재 멀리 떨어져 있고, 온라인 메시징 클라이언트를 갖지 않으며, 임의의 다른 존재 상태를 나타내는 사용자-특정 정보에 대응할 수 있다.
메시징 서비스(600)는 하나 이상의 푸시 저장 서버들(616)을 포함할 수 있다. 하나 이상의 푸시 저장 서버들(616)은 푸시 요청들을 캐싱하며 푸시 요청들을 메시징 클라이언트들로 송신할 수 있다. 푸시 요청들은 메시징 클라이언트들을 각성시키기 위해, 메시징 업데이트가 이용 가능함을 메시징 클라이언트들에 통지하기 위해, 및 그 외 메시징 클라이언트들과의 서버-측-구동 상호작용들을 수행하기 위해 사용될 수 있다.
메시징 서비스(600)는 하나 이상의 그룹 서버들(618)을 포함할 수 있다. 하나 이상의 그룹 서버들(618)은 그룹들의 리스트들을 유지하고, 그룹들에 사용자들을 추가하고, 그룹들로부터 사용자들을 제거하며, 그룹 챗 메시지들의 수신, 캐싱, 및 포워딩을 수행할 수 있다.
메시징 서비스(600)는 하나 이상의 차단 리스트 서버들(620)을 포함할 수 있다. 하나 이상의 차단 리스트 서버들(620)은 사용자-특정 차단 리스트들을 유지할 수 있으며, 상기 사용자-특정 인입-차단 리스트들은 각각의 사용자에 대해 상기 사용자로 메시지들을 송신하는 것이 금지된 하나 이상의 다른 사용자들을 나타낸다. 대안적으로 또는 부가적으로, 하나 이상의 차단 리스트 서버들(620)은 각각의 사용자에 대해 사용자가 메시지들을 송신하는 것이 금지된 하나 이상의 다른 사용자들을 나타내는 사용자-특정 송출-차단 리스트들을 유지할 수 있다. 인입-차단 리스트들 및 송출-차단 리스트들은 조합하여, 예를 들어, 데이터베이스에 저장될 수 있으며, 상기 인입-차단 리스트들 및 송출-차단 리스트들은 차단 정보의 동일한 리포지터리의 상이한 뷰들을 나타낸다.
메시징 서비스(600)는 하나 이상의 마지막 본 정보 서버들(622)을 포함할 수 있다. 하나 이상의 마지막 본 정보 서버들(622)은 메시징 서비스(600)로의 사용자의 마지막 본 연결의 마지막 본 위치, 상태, 메시징 클라이언트, 및 다른 요소들을 나타내는 정보를 수신하고, 저장하며, 유지할 수 있다.
메시징 서비스(600)는 하나 이상의 키 서버들(624)을 포함할 수 있다. 하나 이상의 키 서버들은 공개/사설 키 암호화 통신을 위해 공개 키들을 호스팅할 수 있다.
메시징 서비스(600)는 하나 이상의 프로필 사진 서버들(626)을 포함할 수 있다. 하나 이상의 프로필 사진 서버들(626)은 메시징 서비스(600)의 복수의 사용자들에 대해 검색 프로필 사진들을 저장하고 그것에 대해 이용 가능해질 수 있다.
메시징 서비스(600)는 하나 이상의 스팸 로깅 서버들(628)을 포함할 수 있다. 하나 이상의 스팸 로깅 서버들(628)은 알려지고 의심스러운 스팸(예컨대, 원치 않는 메시지들, 특히 홍보 특징의 것들)을 로그할 수 있다. 하나 이상의 스팸 로깅 서버들(628)은 그것들이 스팸인지를 결정하고, 몇몇 실시예들에서, 의심스러운 스패머들(스팸 메시지들을 보내는 사용자들)에 대해 응징을 수행하기 위해 메시지들을 분석하도록 동작적일 수 있다.
메시징 서비스(600)는 하나 이상의 통계 서버들(630)을 포함할 수 있다. 하나 이상의 통계 서버들은 메시징 서비스(600)의 동작 및 메시징 서비스(600)의 사용자들의 거동에 관련된 통계 정보를 컴파일링하고 저장할 수 있다.
메시징 서비스(600)는 하나 이상의 웹 서버들(632)을 포함할 수 있다. 하나 이상의 웹 서버들(632)은 웹 브라우저들과의 하이퍼텍스트 전송 프로토콜(HTTP) 및 하이퍼텍스트 전송 프로토콜 보안(HTTPS) 연결들에 참여할 수 있다.
메시징 서비스(600)는 하나 이상의 챗 활동 모니터링 서버들(634)을 포함할 수 있다. 하나 이상의 챗 활동 모니터링 서버들(634)은 메시징 서비스(600)의 사용자들에 의한 허가되지 않은 또는 좌절된 거동을 결정하기 위해 사용자들의 챗들을 모니터링할 수 있다. 하나 이상의 챗 활동 모니터링 서버들(634)은 스팸 로깅 서버들(628) 및 차단 리스트 서버들(620)과 협력하여 작동할 수 있으며, 하나 이상의 챗 활동 모니터링 서버들(634)은 스팸 또는 다른 좌절된 거동을 식별하며 스팸 정보를 스팸 로깅 서버들(628)로 및 차단 정보를 적절한 경우, 차단 리스트 서버들(620)로 제공한다.
메시징 서비스(600)는 하나 이상의 동기 서버들(636)을 포함할 수 있다. 하나 이상의 동기 서버들(636)은 메시징 서비스(600)에서 사용자에 대한 접촉들을 결정하기 위해, 이동 전화상에서의 어드레스 북과 같은, 메시징 클라이언트로부터의 연락처 정보와 메시징 시스템(600)을 동기시킬 수 있다.
메시징 서비스(600)는 하나 이상의 멀티미디어 서버들(638)을 포함할 수 있다. 하나 이상의 멀티미디어 서버들은 메시징 클라이언트들 사이에서 수송 중인 멀티미디어(예컨대, 이미지들, 비디오, 오디오), 오프라인 엔드포인트들을 위해 캐싱된 멀티미디어를 저장할 수 있으며, 멀티미디어의 트랜스코딩을 수행할 수 있다.
메시징 서비스(600)는 하나 이상의 지불 서버들(640)을 포함할 수 있다. 하나 이상의 지불 서버들(640)은 사용자들로부터 지불들을 프로세싱할 수 있다. 하나 이상의 지불 서버들(640)은 지불들의 수행을 위해 외부 제 3 자 서버들에 연결할 수 있다.
메시징 서비스(600)는 하나 이상의 등록 서버들(642)을 포함할 수 있다. 하나 이상의 등록 서버들(642)은 메시징 서비스(600)의 새로운 사용자들을 등록할 수 있다.
메시징 서비스(600)는 하나 이상의 음성 전달 서버들(644)을 포함할 수 있다. 하나 이상의 음성 전달 서버들(644)은 VoIP(voice-over-internet-protocol) 호출들의 수행을 위해 메시징 클라이언트들 간에 VoIP 음성 통신을 전달할 수 있다.
상기 설명된 방법들은 컴퓨터 판독 가능한 매체상에서 지시들로서 또는 컴퓨팅 아키텍처의 부분으로서 구체화될 수 있다. 도 7은 이전에 설명된 바와 같이 다양한 실시예들을 구현하기에 적합한 대표적인 컴퓨팅 아키텍처(700)의 실시예를 예시한다. 일 실시예에서, 컴퓨팅 아키텍처(700)는 컴퓨터(701)와 같은, 전자 디바이스의 부분을 포함하거나 또는 그것으로서 구현될 수 있다. 실시예들은 이러한 맥락에서 제한되지 않는다.
본 출원에서 사용된 바와 같이, 용어들("시스템" 및 "구성요소")은 컴퓨터-관련된 엔티티, 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어 또는 실행 중인 소프트웨어를 나타내도록 의도되며, 그 예들은 대표적인 컴퓨팅 아키텍처(700)에 의해 제공된다. 예를 들어, 구성요소는, 이에 제한되지 않지만, 프로세서상에서 구동 중인 프로세스, 프로세서, 하드 디스크 드라이브, 다수의 저장 드라이브들(광학적 및/또는 자기 저장 매체의), 오브젝트, 실행파일, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있다. 예시로서, 서버상에서 구동 중인 애플리케이션 및 서버 양쪽 모두는 구성요소일 수 있다. 하나 이상의 구성요소들은 프로세스 및/또는 실행 스레드 내에 존재할 수 있으며 구성요소는 하나의 컴퓨터상에서 국소화되고 및/또는 둘 이상의 컴퓨터들 사이에서 분포될 수 있다. 또한, 구성요소들은 동작들을 조정하기 위해 다양한 유형들의 통신 미디어에 의해 서로 통신적으로 결합될 수 있다. 조정은 정보의 단-방향 또는 양-방향 교환을 수반할 수 있다. 예를 들어, 구성요소들은 통신 미디어를 통해 전달된 신호들의 형태로 정보를 전달할 수 있다. 정보는 다양한 신호 라인들에 할당된 신호들로서 구현될 수 있다. 이러한 할당들에서, 각각의 메시지는 신호이다. 그러나, 추가 실시예들은 대안적으로 데이터 메시지들을 이용할 수 있다. 이러한 데이터 메시지들은 다양한 연결들에 걸쳐 전송될 수 있다. 대표적인 연결들은 병렬 인터페이스들, 직렬 인터페이스들, 및 버스 인터페이스들을 포함한다.
컴퓨팅 아키텍처(700)는 하나 이상의 프로세서들, 다중-코어 프로세서들, 코-프로세서들, 메모리 유닛들, 칩셋들, 제어기들, 주변장치들, 인터페이스들, 오실레이터들, 타이밍 디바이스들, 비디오 카드들, 오디오 카드들, 멀티미디어 입력/출력(I/O) 구성요소들, 전원 공급 장치들 등과 같은, 다양한 일반적인 컴퓨팅 요소들을 포함한다. 그러나, 실시예들은 컴퓨팅 아키텍처(700)에 의한 구현에 제한되지 않는다.
도 7에 도시된 바와 같이, 컴퓨팅 아키텍처(700)는 프로세싱 유닛(702), 시스템 메모리(704) 및 시스템 버스(706)를 포함한다. 프로세싱 유닛(702)은 제한 없이, AMD® Athlon®, Duron® 및 Opteron® 프로세서들; ARM® 애플리케이션, 내장형 및 보안 프로세서들; IBM® 및 Motorola® DragonBall® 및 PowerPC® 프로세서들; IBM 및 Sony® 셀 프로세서들; Intel® Celeron®, Core(2) Duo®, Itanium®, Pentium®, Xeon®, 및 XScale® 프로세서들; 및 유사한 프로세서들을 포함한, 다양한 상업적으로 이용 가능한 프로세서들 중 임의의 것일 수 있다. 이중 마이크로프로세서들, 다중-코어 프로세서들, 및 다른 다중-프로세서 아키텍처들이 또한 프로세싱 유닛(702)으로서 이용될 수 있다.
시스템 버스(706)는, 이에 제한되지 않지만, 시스템 메모리(704)를 포함한 시스템 구성요소들을 위한 인터페이스를 프로세싱 유닛(702)에 제공한다. 시스템 버스(706)는 다양한 상업적으로 이용 가능한 버스 아키텍처들 중 임의의 것을 사용하여 메모리 버스(메모리 제어기를 갖거나 또는 그것이 없는), 주변 버스, 및 로컬 버스에 추가로 상호 연결할 수 있는 여러 유형들의 버스 구조 중 임의의 것일 수 있다. 인터페이스 어댑터들이 슬롯 아키텍처를 통해 시스템 버스(706)에 연결할 수 있다. 예시적인 슬롯 아키텍처들은 제한 없이 가속화 그래픽 포트(AGP), 카드 버스, (확장형) 산업 표준 아키텍처((E)ISA), 마이크로 채널 아키텍처(MCA), NuBus, 주변 구성요소 상호 접속(확장형)(PCI(X)), PCI 고속, 개인용 컴퓨터 메모리 카드 국제 협회(PCMCIA) 등을 포함할 수 있다.
컴퓨팅 아키텍처(700)는 다양한 제조 물품들을 포함하거나 또는 구현할 수 있다. 제조 물품은 로직을 저장하기 위해 컴퓨터-판독 가능한 저장 매체를 포함할 수 있다. 컴퓨터-판독 가능한 저장 매체의 예들은 휘발성 메모리 또는 비-휘발성 메모리, 착탈 가능한 또는 착탈 가능하지 않은 메모리, 삭제 가능한 또는 삭제 가능하지 않은 메모리, 기록 가능한 또는 재-기록 가능한 메모리 등을 포함한, 전자 데이터를 저장할 수 있는 임의의 유형의 미디어를 포함할 수 있다. 로직의 예들은 소스 코드, 컴파일 코드, 해석 코드, 실행 가능 코드, 정적 코드, 동적 코드, 오브젝트-지향 코드, 시각적 코드 등과 같은, 임의의 적절한 유형의 코드를 사용하여 구현된 실행 가능한 컴퓨터 프로그램 지시들을 포함할 수 있다. 실시예들은 또한, 여기에서 설명된 동작들의 수행을 가능하게 하기 위해 하나 이상의 프로세서들에 의해 판독되고 실행될 수 있는, 비-일시적 컴퓨터-판독 가능한 매체에 또는 그것 상에 포함된 지시들로서 적어도 부분적으로 구현될 수 있다.
시스템 메모리(704)는 판독-전용 메모리(ROM), 랜덤-액세스 메모리(RAM), 동적 RAM(DRAM), 이중-데이터-레이트 DRAM(DDRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM), 프로그램 가능한 ROM(PROM), 삭제 가능한 프로그램 가능 ROM(EPROM), 전기적으로 삭제 가능한 프로그램 가능 ROM(EEPROM), 플래시 메모리, 강유전성 폴리머 메모리와 같은 폴리머 메모리, 상 변화 또는 강유전성 메모리, 실리콘-산화물-질화물-산화물-실리콘(SONOS) 메모리, 자기 또는 광학 카드들, 독립 디스크들의 중복 어레이(RAID) 드라이브들과 같은 디바이스들의 어레이, 고체 상태 메모리 디바이스들(예컨대, USB 메모리, 고체 상태 드라이브들(SSD)) 및 정보를 저장하는데 적합한 임의의 다른 유형의 저장 미디어와 같은, 하나 이상의 고속 메모리 유닛들의 형태에서의 다양한 유형들의 컴퓨터-판독 가능한 저장 미디어를 포함할 수 있다. 도 7에 도시된 예시된 실시예에서, 시스템 메모리(704)는 비-휘발성 메모리(708) 및/또는 휘발성 메모리(710)를 포함할 수 있다. 기본 입력/출력 시스템(BIOS)은 비-휘발성 메모리(708)에 저장될 수 있다.
컴퓨팅 아키텍처(700)는 내부(또는 외부) 하드 디스크 드라이브(HDD)(712), 착탈 가능한 자기 디스크(716)로부터 판독하거나 또는 그것으로 기록하기 위한 자기 플로피 디스크 드라이브(FDD)(714), 및 착탈 가능한 광학 디스크(720)(예컨대, CD-ROM 또는 DVD)로부터 판독하거나 또는 그것으로 기록하기 위한 광학 디스크 드라이브(718)를 포함하여, 하나 이상의 저속 메모리 유닛들의 형태에서의 다양한 유형들의 컴퓨터-판독 가능한 저장 미디어를 포함할 수 있다. HDD(712), FDD(714) 및 광학 디스크 드라이브(720)는 각각 HDD 인터페이스(722), FDD 인터페이스(724) 및 광학 드라이브 인터페이스(726)에 의해 시스템 버스(706)에 연결될 수 있다. 외부 드라이브 구현들을 위한 HDD 인터페이스(722)는 범용 직렬 버스(USB) 및 IEEE 694 인터페이스 기술들 중 적어도 하나 또는 양쪽 모두를 포함할 수 있다.
드라이브들 및 연관된 컴퓨터-판독 가능한 미디어는 데이터, 데이터 구조들, 컴퓨터-실행 가능한 지시들 등의 휘발성 및/또는 비-휘발성 저장을 제공한다. 예를 들어, 운영 시스템(728), 하나 이상의 애플리케이션 프로그램들(730), 다른 프로그램 모듈들(732), 및 프로그램 데이터(734)를 포함한, 다수의 프로그램 모듈들이 드라이브들 및 메모리 유닛들(708, 712)에 저장될 수 있다. 일 실시예에서, 하나 이상의 애플리케이션 프로그램들(730), 다른 프로그램 모듈들(732), 및 프로그램 데이터(734)는, 예를 들어, 메시징 시스템(500)의 다양한 애플리케이션들 및/또는 구성요소들을 포함할 수 있다.
사용자는 하나 이상의 유선/무선 입력 디바이스들, 예를 들어, 키보드(736) 및 마우스(738)와 같은 포인팅 디바이스를 통해 컴퓨터(701)로 명령들 및 정보를 입력할 수 있다. 다른 입력 디바이스들은 마이크로폰들, 적외선(IR) 원격 제어들, 라디오-주파수(RF) 원격 제어들, 게임 패드들, 스타일러스 펜들, 카드 판독기들, 동글들, 지문 판독기들, 장갑들, 그래픽 태블릿들, 조이스틱들, 키보드들, 망막 판독기들, 터치 스크린들(예컨대, 정전식, 저항성 등), 트랙볼들, 트랙패드들, 센서들, 스타일러스들 등을 포함할 수 있다. 이들 및 다른 입력 디바이스들은 종종 시스템 버스(706)에 결합되는 입력 디바이스 인터페이스(740)를 통해 프로세싱 유닛(702)에 연결되지만, 병렬 포트, IEEE 694 직렬 포트, 게임 포트, USB 포트, IR 인터페이스 등과 같은 다른 인터페이스들에 의해 연결될 수 있다.
모니터(742) 또는 다른 유형의 디스플레이 디바이스가 또한 비디오 어댑터(744)와 같은, 인터페이스를 통해 시스템 버스(706)에 연결된다. 모니터(742)는 컴퓨터(701)의 내부에 있거나 또는 외부에 있을 수 있다. 모니터(742) 외에, 컴퓨터는 통상적으로, 스피커들, 프린터들 등과 같은, 다른 주변 출력 디바이스들을 포함한다.
컴퓨터(701)는 원격 컴퓨터(744)와 같은, 하나 이상의 원격 컴퓨터들로의 유선 및/또는 무선 통신들을 통해 논리적 연결들을 사용하여 네트워킹 환경에서 동작할 수 있다. 원격 컴퓨터(744)는 워크스테이션, 서버 컴퓨터, 라우터, 개인용 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서-기반 엔터테인먼트 기기, 피어 디바이스 또는 다른 공통 네트워크 노드일 수 있으며, 통상적으로 컴퓨터(701)에 대하여 설명된 요소들 중 많은 것 또는 모두를 포함하지만, 간결성을 위해, 단지 메모리/저장 디바이스(746)만이 예시된다. 묘사된 논리적 연결들은 근거리 네트워크(LAN)(748) 및/또는 보다 큰 네트워크들, 예를 들어, 광역 네트워크(WAN)(750)로의 유선/무선 연결성을 포함한다. 이러한 LAN 및 WAN 네트워킹 환경들은 사무실들 및 회사들에서 아주 흔하고, 인트라넷들과 같은, 기업-와이드 컴퓨터 네트워크들을 용이하게 하며, 그 모두는 전역적 통신 네트워크, 예를 들어, 인터넷에 연결할 수 있다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(701)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(752)를 통해 LAN(748)에 연결된다. 어댑터(752)는 LAN(748)으로의 유선 및/또는 무선 통신들을 용이하게 할 수 있으며, 이것은 또한 어댑터(752)의 무선 기능과 통신하기 위해 그것 상에 배치된 무선 액세스 포인트를 포함할 수 있다.
WAN 네트워킹 환경에서 사용될 때, 컴퓨터(701)는 모뎀(754)을 포함할 수 있거나, 또는 WAN(750) 상에서 통신 서버에 연결되거나, 또는 인터넷에 의해서와 같은, WAN(750)을 통한 통신들을 수립하기 위한 다른 수단들을 갖는다. 내부 또는 외부 및 유선 및/또는 무선 디바이스일 수 있는 모뎀(754)은 입력 디바이스 인터페이스(740)를 통해 시스템 버스(706)에 연결한다. 네트워킹 환경에서, 컴퓨터(701)에 관하여 묘사된 프로그램 모듈들, 또는 그것의 부분들은 원격 메모리/저장 디바이스(746)에 저장될 수 있다. 도시된 네트워크 연결들은 대표적이며 컴퓨터들 사이에 통신들을 수립하는 다른 수단들이 사용될 수 있다.
컴퓨터(701)는 무선 통신에서 동작적으로 배치된 무선 디바이스들(예컨대, IEEE 802.13 오버-디-에어 변조 기술들)과 같은, IEEE 802 군의 표준들을 사용하여 유선 및 무선 디바이스들 또는 엔티티들과 통신하도록 동작 가능하다. 이것은 다른 것들 중에서, 적어도 Wi-Fi(또는 무선 충실도), WiMax, 및 블루투스™ 무선 기술들을 포함한다. 따라서, 통신은 적어도 두 개의 디바이스들 사이에서 종래의 네트워크 또는 간단히 애드 혹 통신과 마찬가지로 미리 정의된 구조일 수 있다. Wi-Fi 네트워크들은 안정하고, 신뢰 가능한, 고속 무선 연결성을 제공하기 위해 IEEE 802.13x(a, b, g, n 등)로 불리우는 라디오 기술들을 사용한다. Wi-Fi 네트워크는 서로, 인터넷에, 및 유선 네트워크들(IEEE 802.3-관련 미디어 및 기능들을 사용하는)에 컴퓨터들을 연결하기 위해 사용될 수 있다.
도 8은 이전에 설명된 바와 같이 다양한 실시예들을 구현하기에 적합한 대표적인 통신 아키텍처(800)를 묘사한 블록도이다. 통신 아키텍처(800)는 송신기, 수신기, 트랜시버, 라디오, 네트워크 인터페이스, 기저대역 프로세서, 안테나, 증폭기들, 필터들, 전원 공급 장치들 등과 같은, 다양한 일반적인 통신 요소들을 포함한다. 그러나, 실시예들은 통신 아키텍처(800)에 의한 구현에 제한되지 않는다.
도 8에 도시된 바와 같이, 통신 아키텍처(800)는 하나 이상의 클라이언트들(802) 및 서버들(804)을 포함한다. 클라이언트들(802)은 클라이언트 디바이스(510)를 구현할 수 있다. 서버들(804)은 서버 디바이스(526)를 구현할 수 있다. 클라이언트들(802) 및 서버들(804)은 쿠키들 및/또는 연관된 맥락과 관련된 정보와 같은, 각각의 클라이언트들(802) 및 서버들(804)에 국소적인 정보를 저장하기 위해 이용될 수 있는 하나 이상의 각각의 클라이언트 데이터 저장소들(806) 및 서버 데이터 저장소들(808)에 동작적으로 연결된다.
클라이언트(802) 및 서버들(804)은 통신 프레임워크(810)를 사용하여 서로 간에 정보를 통신할 수 있다. 통신 프레임워크(810)는 임의의 잘 알려진 통신 기술들 및 프로토콜들을 구현할 수 있다. 통신 프레임워크(810)는 패킷-스위칭 네트워크(예컨대, 인터넷과 같은 공중 네트워크들, 기업 인트라넷과 같은 사설 네트워크 등), 회로-스위칭 네트워크(예컨대, 공중 스위칭 전화 네트워크), 또는 패킷-스위칭 네트워크와 회로-스위칭 네트워크의 조합(적절한 게이트웨이들 및 번역기들을 갖고)으로서 구현될 수 있다.
통신 프레임워크(810)는 통신 네트워크를 수용하고, 전달하며, 그것에 연결하도록 배열된 다양한 네트워크 인터페이스들을 구현할 수 있다. 네트워크 인터페이스는 특수화된 형태의 입력 출력 인터페이스로서 간주될 수 있다. 네트워크 인터페이스들은 제한 없이, 직접 연결, 이더넷(예컨대, 두꺼운, 얇은, 꼬임 쌍 10/100/1000 Base T 등), 토큰 링, 무선 네트워크 인터페이스들, 셀룰러 네트워크 인터페이스들, IEEE 802.8a-x 네트워크 인터페이스들, IEEE 802.16 네트워크 인터페이스들, IEEE 802.20 네트워크 인터페이스들 등을 포함한 연결 프로토콜들을 이용할 수 있다. 뿐만 아니라, 다수의 네트워크 인터페이스들이 다양한 통신 네트워크 유형들과 맞물리기 위해 사용될 수 있다. 예를 들어, 다수의 네트워크 인터페이스들은 브로드캐스트, 멀티캐스트, 및 유니캐스트를 통한 통신을 허용하기 위해 이용될 수 있다. 프로세싱 요건들은 보다 큰 양의 속도 및 용량을 서술하지만, 분산형 네트워크 제어기 아키텍처들은 유사하게 클라이언트들(802) 및 서버들(804)에 의해 요구된 통신 대역폭을 풀링하고, 로드 밸런싱하며, 그 외 증가시키기 위해 이용될 수 있다. 통신 네트워크는 제한 없이, 직접 상호 연결, 보안 맞춤 연결, 사설 네트워크(예컨대, 기업 인트라넷), 공중 네트워크(예컨대, 인터넷), 개인 영역 네트워크(PAN), 근거리 네트워크(LAN), 대도시 영역 네트워크(MAN), 인터넷 상에서 노드들로서의 동작 미션들(OMNI), 광역 네트워크(WAN), 무선 네트워크, 셀룰러 네트워크, 및 다른 통신 네트워크를 포함한 유선 및/또는 무선 네트워크들 중 임의의 하나 및 그것의 조합일 수 있다.
도 9는 메시징 시스템(500)과 같은, 다중캐리어 OFDM 시스템에서의 사용을 위한 디바이스(900)의 실시예를 예시한다. 디바이스(900)는, 예를 들어, 메시징 구성요소 로직(600), 의도 결정 로직(700), 및 그룹 선택 로직(800)을 참조하여 설명된 바와 같이, 소프트웨어 구성요소들(902)을 구현할 수 있다. 디바이스(900)는 또한 논리 회로(904)를 구현할 수 있다. 논리 회로(904)는 메시징 시스템(600)에 대해 설명된 동작들을 수행하기 위해 물리 회로들을 포함할 수 있다. 도 9에 도시된 바와 같이, 디바이스(900)는 라디오 인터페이스(906), 기저대역 회로(908), 및 컴퓨팅 플랫폼(910)을 포함할 수 있지만, 실시예들은 이러한 구성에 제한되지 않는다.
디바이스(900)는 전체적으로 단일 디바이스 내에서와 같은, 단일 컴퓨팅 엔티티에서 메시징 시스템(500) 및/또는 논리 회로(904)를 위한 구조 및/또는 동작들 중 일부 또는 모두를 구현할 수 있다. 대안적으로, 디바이스(900)는 클라이언트-서버 아키텍처, 3-티어 아키텍처, N-티어 아키텍처, 강결합 또는 클러스터형 아키텍처, 피어-투-피어 아키텍처, 마스터-슬레이브 아키텍처, 공유형 데이터베이스 아키텍처, 및 다른 유형들의 분산형 시스템들과 같은, 분산형 시스템 아키텍처를 사용하여 다수의 컴퓨팅 엔티티들에 걸쳐 메시징 시스템(600) 및/또는 논리 회로(904)에 대한 구조 및/또는 동작들의 부분들을 분배할 수 있다. 실시예들은 이러한 맥락으로 제한되지 않는다.
일 실시예에서, 라디오 인터페이스(906)는 단일 캐리어 또는 다중-캐리어 변조 신호들(예컨대, 상호보완 코드 키잉(CCK) 및/또는 직교 주파수 분할 다중화(OFDM) 심볼들을 포함한)을 송신하고 및/또는 수신하기 위해 적응된 구성요소 또는 구성요소들의 조합을 포함할 수 있지만 실시예들은 임의의 특정 오버-디-에어 인터페이스 또는 변조 기법에 제한되지 않는다. 라디오 인터페이스(906)는, 예를 들어, 수신기(912), 송신기(914) 및/또는 주파수 합성기(916)를 포함할 수 있다. 라디오 인터페이스(906)는 바이어스 제어들, 수정 발진기 및/또는 하나 이상의 안테나들(918)을 포함할 수 있다. 또 다른 실시예에서, 라디오 인터페이스(906)는 외부 전압-제어 발진기들(VCO들), 표면 음향파 필터들, 중간 주파수(IF) 필터들 및/또는 RF 필터들을, 원하는 대로 사용할 수 있다. 다양한 잠재적인 RF 인터페이스 설계들로 인해, 그에 대한 광범위한 설명은 생략된다.
기저대역 회로(908)는 신호들을 수신하고 및/또는 송신하도록 프로세싱하기 위해 라디오 인터페이스(906)와 통신할 수 있으며, 예를 들면, 수신된 신호들을 하향 변환하기 위한 아날로그-디지털 변환기(920), 및 송신을 위해 신호들을 상향 변환하기 위한 디지털-아날로그 변환기(922)를 포함할 수 있다. 뿐만 아니라, 기저대역 회로(908)는 각각의 수신/송신 신호들의 PHY 링크 계층 프로세싱을 위해 기저대역 또는 물리 계층(PHY) 프로세싱 회로(924)를 포함할 수 있다. 기저대역 회로(908)는, 예를 들어, 매체 액세스 제어(MAC)/데이터 링크 계층 프로세싱을 위한 프로세싱 회로(926)를 포함할 수 있다. 기저대역 회로(908)는 예를 들어, 하나 이상의 인터페이스들(930)을 통해, 프로세싱 회로(926) 및/또는 컴퓨팅 플랫폼(910)과 통신하기 위한 메모리 제어기(928)를 포함할 수 있다.
몇몇 실시예들에서, PHY 프로세싱 회로(924)는 라디오 프레임들과 같은, 통신 프레임들을 구성하고 및/또는 파괴하기 위해, 버퍼 메모리와 같은 부가적인 회로와 조합하여, 프레임 구성 및/또는 검출 모듈을 포함할 수 있다. 대안적으로 또는 또한, MAC 프로세싱 회로(926)는 이들 기능들 중 특정한 것에 대한 프로세싱을 공유하거나 또는 PHY 프로세싱 회로(924)에 독립적으로 이들 프로세스를 수행할 수 있다. 몇몇 실시예들에서, MAC 및 PHY 프로세싱은 단일 회로로 통합될 수 있다.
컴퓨팅 플랫폼(910)은 디바이스(900)에 대한 컴퓨팅 기능을 제공할 수 있다. 도시된 바와 같이, 컴퓨팅 플랫폼(910)은 프로세싱 구성요소(932)를 포함할 수 있다. 기저대역 회로(908) 외에 또는 대안적으로, 디바이스(900)는 프로세싱 구성요소(932)를 사용하여 논리 회로(904) 및 메시징 시스템(500)에 대한 프로세싱 동작들 또는 로직을 실행할 수 있다. 프로세싱 구성요소(932)(및/또는 PHY(924) 및/또는 MAC(926))는 다양한 하드웨어 요소들, 소프트웨어 요소들, 또는 양쪽 모두의 조합을 포함할 수 있다. 하드웨어 요소들의 예들은 디바이스들, 논리 디바이스들, 구성요소들, 프로세서들, 마이크로프로세서들, 회로들, 프로세서회로들, 회로 요소들(예컨대, 트랜지스터들, 저항기들, 커패시터들, 인덕터들 등), 집적 회로들, 애플리케이션 특정 집적 회로들(ASIC), 프로그램 가능한 논리 디바이스들(PLD), 디지털 신호 프로세서들(DSP), 필드 프로그램 가능한 게이트 어레이(FPGA), 메모리 유닛들, 논리 게이트들, 레지스터들, 반도체 디바이스, 칩들, 마이크로칩들, 칩 셋들 등을 포함할 수 있다. 소프트웨어 요소들의 예들은 소프트웨어 구성요소들, 프로그램들, 애플리케이션들, 컴퓨터 프로그램들, 애플리케이션 프로그램들, 시스템 프로그램들, 소프트웨어 개발 프로그램들, 기계 프로그램들, 운영 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈들, 루틴들, 서브루틴들, 함수들, 방법들, 프로시저들, 소프트웨어 인터페이스들, 애플리케이션 프로그램 인터페이스들(API), 지시 세트들, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트들, 컴퓨터 코드 세그먼트들, 워드들, 값들, 심볼들, 또는 그것의 임의의 조합을 포함할 수 있다. 실시예가 하드웨어 요소들 및/또는 소프트웨어 요소들을 사용하여 구현되는지를 결정하는 것은, 주어진 구현에 대해 원하는 대로 원하는 계산 레이트, 전력 레벨들, 열 허용오차들, 프로세싱 사이클 버짓, 입력 데이터 레이트들, 출력 데이터 레이트들, 메모리 리소스들, 데이터 버스 속도들 및 다른 설계 또는 성능 제약들과 같은, 임의의 수의 인자들에 따라 달라질 수 있다.
컴퓨팅 플랫폼(910)은 다른 플랫폼 구성요소들(934)을 추가로 포함할 수 있다. 다른 플랫폼 구성요소들(934)은 하나 이상의 프로세서들, 다중-코어 프로세서들, 코-프로세서들, 메모리 유닛들, 칩셋들, 제어기들, 주변장치들, 인터페이스들, 발진기들, 타이밍 디바이스들, 비디오 카드들, 오디오 카드들, 멀티미디어 입력/출력(I/O) 구성요소들(예컨대, 디지털 디스플레이들), 전원 공급 장치들 등과 같은, 일반적인 컴퓨팅 요소들을 포함한다. 메모리 유닛들의 예들은 제한 없이, 판독-전용 메모리(ROM), 랜덤-액세스 메모리(RAM), 동적 RAM(DRAM), 이중-데이터-레이트 DRAM(DDRAM), 동기식 DRAM(SDRAM), 정적 RAM(SRAM), 프로그램 가능한 ROM(PROM), 삭제 가능한 프로그램 가능 ROM(EPROM), 전기적으로 삭제 가능한 프로그램 가능 ROM(EEPROM), 플래시 메모리, 강유전성 폴리머 메모리와 같은 폴리머 메모리, 오보닉 메모리, 상 변화 또는 강유전성 메모리, 실리콘-산화물-질화물-산화물-실리콘(SONOS) 메모리, 자기 또는 광학 카드들, 독립 디스크들의 중복 어레이(RAID) 드라이브들과 같은 디바이스들의 어레이, 고체 상태 메모리 디바이스들(예컨대, USB 메모리, 고체 상태 드라이브들(SSD)) 및 정보를 저장하는데 적합한 임의의 다른 유형의 저장 미디어와 같은, 하나 이상의 고속 메모리 유닛들의 형태에서의 다양한 형들의 컴퓨터 판독 가능한 및 기계 판독 가능한 저장 미디어를 포함할 수 있다.
디바이스(900)는, 예를 들어, 초-이동 디바이스, 이동 디바이스, 고정 디바이스, 기계-대-기계(M2M) 디바이스, 개인용 디지털 보조기(PDA), 이동 컴퓨팅 디바이스, 스마트폰, 전화, 디지털 전화, 휴대 전화, 사용자 장비, eBOOK 판독기들, 핸드셋, 단방향 페이저, 2-방향 페이저, 메시징 디바이스, 컴퓨터, 개인용 컴퓨터(PC), 데스크탑 컴퓨터, 랩탑 컴퓨터, 노트북 컴퓨터, 넷북 컴퓨터, 핸드헬드 컴퓨터, 태블릿 컴퓨터, 서버, 서버 어레이 또는 서버 팜, 웹 서버, 네트워크 서버, 인터넷 서버, 워크 스테이션, 미니-컴퓨터, 메인 프레임 컴퓨터, 슈퍼컴퓨터, 네트워크 기기, 웹 기기, 분산형 컴퓨팅 시스템, 다중프로세서 시스템들, 프로세서-기반 시스템들, 소비자 전자장치, 프로그램 가능한 소비자 전자장치, 게임 디바이스들, 텔레비전, 디지털 텔레비전, 셋 탑 박스, 무선 액세스 포인트, 기지국, 노드 B, 진화된 노드 B(eNB), 가입자 스테이션, 모바일 가입자 센터, 라디오 네트워크 제어기, 라우터, 허브, 게이트웨이, 브리지, 스위치, 기계, 또는 그것의 조합일 수 있다. 따라서, 여기에서 설명된 디바이스(900)의 기능들 및/또는 특정 구성들은 적절하게 요구된 대로, 디바이스(900)의 다양한 실시예들에 포함되거나 또는 생략될 수 있다. 몇몇 실시예들에서, 디바이스(900)는 3GPP LTE 규격들 및/또는 WMAN들에 대한 IEEE 1402.16 표준들, 및/또는 여기에서 인용된, 다른 광대역 무선 네트워크들 중 하나 이상과 연관된 프로토콜들 및 주파수들과 호환 가능하도록 구성될 수 있지만, 실시예들은 이 점에 있어서 제한되지 않는다.
디바이스(900)의 실시예들은 단일 입력 단일 출력(SISO) 아키텍처들을 사용하여 구현될 수 있다. 그러나, 특정한 구현예들은 빔성형 또는 공간 분할 다중 액세스(SDMA)에 대한 적응형 안테나 기술들을 사용하여 및/또는 MIMO 통신 기술들을 사용하여 송신 및/또는 수신을 위한 다수의 안테나들(예컨대, 안테나들(918))을 포함할 수 있다.
디바이스(900)의 구성요소들 및 특징들은 이산 회로, 애플리케이션 특정 집적 회로들(ASIC들), 논리 게이트들 및/또는 단일 칩 아키텍처들의 임의의 조합을 사용하여 구현될 수 있다. 뿐만 아니라, 디바이스(900)의 특징들은 마이크로제어기들, 프로그램 가능한 논리 어레이들 및/또는 마이크로프로세서들 또는 적당히 적절한 경우 앞서 말한 것의 임의의 조합을 사용하여 구현될 수 있다. 하드웨어, 펌웨어 및/또는 소프트웨어 요소들은 총괄하여 또는 개별적으로 여기에서 "로직" 또는 "회로"로서 불리울 수 있다.
도 9의 블록도에서 도시된 대표적인 디바이스(900)는 많은 잠재적인 구현예들에 대한 하나의 기능적으로 기술적인 예를 나타낼 수 있다는 것이 이해될 것이다. 따라서, 수반된 도면들에서 묘사된 블록 함수들의 분할, 생략 또는 포함은 이들 기능들을 구현하기 위한 하드웨어 구성요소들, 회로들, 소프트웨어 및/또는 요소들이 반드시 실시예들에서 분할되고, 생략되거나, 또는 포함되는 것을 암시하는 것은 아니다.
적어도 하나의 컴퓨터-판독 가능한 저장 매체(936)는, 실행될 때, 시스템으로 하여금 여기에서 설명된 컴퓨터-구현 방법들 중 임의의 것을 수행하게 하는 지시들을 포함할 수 있다.
용어들에 대한 일반적인 주석들
몇몇 실시예들은 그것들의 파생어들과 함께 표현("일 실시예" 또는 "실시예")을 사용하여 설명될 수 있다. 이들 용어들은 실시예와 관련되어 설명된 특정한 특징, 구조, 또는 특성이 적어도 하나의 실시예에 포함된다는 것을 의미한다. 명세서에서의 다양한 곳들에서 구절("일 실시예에서")의 출현들은 반드시 모두가 동일한 실시예를 나타내는 것은 아니다. 게다가, 달리 주지되지 않는다면, 상기 설명된 특징들은 임의로 조합하여 함께 사용 가능한 것으로 인식된다. 따라서, 별개로 논의된 임의의 특징들은 특징들이 서로 호환 가능하지 않다고 주지되지 않는다면 서로 조합하여 이용될 수 있다. .
여기에서 사용된 표기법들 및 명명법에 대한 일반적인 참조로서, 여기에서의 상세한 설명들은 컴퓨터 또는 컴퓨터들의 네트워크상에서 실행된 프로그램 절차들에 대하여 제공될 수 있다. 이들 절차적인 서술들 및 표현들은 이 기술분야의 숙련자들에 의해 그들의 작업의 본질을 이 기술분야의 다른 숙련자들에게 가장 효율적으로 전달하기 위해 사용된다.
여기에서의 절차는, 일반적으로 원하는 결과로 이어지는 동작들의 일관성 있는 시퀀스의 동작들인 것으로 인지된다. 이들 동작들은 물리적인 양들의 물리적 조작들을 요구하는 것들이다. 보통, 반드시는 아니지만, 이들 양들은 저장되고, 전달되고, 조합되고, 비교되며, 그 외 조작될 수 있는 전기, 자기, 또는 광학 신호들의 형태를 취한다. 그것은 가끔은, 원칙적으로 일반적인 사용의 이유들로, 이들 신호들을 비트들, 값들, 요소들, 심볼들, 문자들, 용어들, 숫자들 등으로 나타내는 것이 편리하다는 것을 입증한다. 그러나, 이들 및 유사한 용어들의 모두는 적절한 물리적 양들과 연관될 것이며 단지 이들 양들에 적용된 편리한 라벨들이라는 것이 주의되어야 한다.
뿐만 아니라, 수행된 조작들은 종종, 부가하는 것 또는 비교하는 것과 같은, 용어들로 참조되며, 이것은 일반적으로 인간 조작자에 의해 수행된 정신적 동작들과 연관된다. 인간 조작자의 어떤 이러한 능력도, 대부분의 경우들에서, 하나 이상의 실시예들의 부분을 형성하는 여기에서 설명된 동작들 중 임의의 것에서 필요하거나, 또는 바람직하지 않다. 오히려, 동작들은 기계 동작들이다. 다양한 실시예들의 동작들을 수행하기 위한 유용한 기계들은 범용 디지털 컴퓨터들 또는 유사한 디바이스들을 포함한다.
몇몇 실시예들은 표현("결합된" 및 "연결된")을 그것들의 파생어들과 함께 사용하여 설명될 수 있다. 이들 용어들은 반드시 서로에 대해 동의어들로서 의도되는 것은 아니다. 예를 들면, 몇몇 실시예들은 둘 이상의 요소들이 서로 직접적인 물리 또는 전기적 접촉을 하는 것을 나타내기 위해 용어들("연결된" 및/또는 "결합된")을 사용하여 설명될 수 있다. 그러나, 용어("결합된")는 또한 둘 이상의 요소들이 서로 직접 접촉하는 것은 아니며, 서로 여전히 협력하거나 또는 상호작용한다는 것을 의미할 수 있다.
다양한 실시예들은 또한 이들 동작들을 수행하기 위한 장치들 또는 시스템들과 관련된다. 이러한 장치는 요구된 목적을 위해 특수하게 구성될 수 있거나 또는 그것은 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 또는 재구성된 것으로 범용 컴퓨터를 포함할 수 있다. 여기에서 제공된 절차들은 특정한 컴퓨터 또는 다른 장치에 고유하게 관련되지는 않는다. 다양한 범용 기계들은 여기에서의 교시들에 따라 기록된 프로그램들과 함께 사용될 수 있거나, 또는 그것은 요구된 방법 단계들을 수행하도록 보다 전문화된 장치를 구성하는 것이 편리하는 것을 입증해 보일 수 있다. 다양한 이들 기계들에 대한 요구된 구조는 주어진 설명으로부터 명백해질 것이다.
개시의 요약은 판독자가 기술적 개시의 특징을 빨리 알아내는 것을 허용하기 위해 제공된다는 것이 강조된다. 그것은 청구항들의 범위 또는 의미를 해석하거나 또는 제한하기 위해 사용되지 않을 것이라는 조건하에 제출된다. 또한, 앞서 말한 상세한 설명에서, 다양한 특징들은 개시를 간소화할 목적으로 단일 실시예에 함께 그룹핑된다는 것이 이해될 수 있다. 개시의 이러한 방법은 청구된 실시예들이 각각의 청구항에서 명확히 열거된 것보다 많은 특징들을 요구한다는 의도를 반영하는 것으로 해석되지 않을 것이다. 오히려, 다음의 청구항들이 반영하는 바와 같이, 본 발명의 주제는 단일의 개시된 실시예의 모두보다 적은 특징들에 있다. 따라서, 다음의 청구항들은 상세한 설명으로 통합되며, 각각의 청구항은 별개의 실시예로서 그 자체로 성립한다. 첨부된 청구항들에서, 용어들("포함하는" 및 "여기에서")은 각각 각각의 청구항들("포함한" 및 "여기서")의 평이한-영어 상당어구들로서 사용된다. 게다가, 용어들("제 1", "제 2", "제 3" 등)은 단지 라벨들로서 사용되며, 그것들의 오브젝트들에 수치적 요건들을 부여하도록 의도되지 않는다.
상기 설명된 것은 개시된 아키텍처의 예들을 포함한다. 물론, 구성요소들 및/또는 방법들의 모든 인지 가능한 조합을 설명하는 것은 가능하지 않으며, 이 기술분야의 통상의 기술자는 많은 추가 조합들 및 순열들이 가능하다는 것을 인식할 수 있다. 따라서, 신규 아키텍처는 첨부된 청구항들의 사상 및 범위에 있는 모든 이러한 변경들, 수정들 및 변화들을 포괄하도록 의도된다.
104, 106: 패널 108: 에지
110: 오디오 조정 효과 118: 비디오
120: 재생 제어 122: 메시징 인터페이스
124: 비디오 126: 대화 패널
154: 게임 인터페이스 156: 게임 패널
166: 인터페이스 168: 프리뷰 윈도우
170: 게임 뷰 패널 202-1: 개시 클라이언트
202-2, 3, 4: 비-개시 클라이언트 204-1: 통신 애플리케이션
206: 채널 210: 오디오 채널
208: 비디오 데이터 212: 오디오 데이터
214: 제어 채널 216: 제어 데이터
218: 통신 서버 220: 효과 조정 로직
224: 시청각 편찬 로직 226: 브로드캐스트 서버
228: 브로드캐스트 로직 230: 시청각 데이터
250: 개시 메시지 252: 플래그
254: 조정 효과 유형 식별자 264: API 호출
404: 지시 수신 로직 408: 지시 포워딩 로직
412: 합의 수신 로직 434: 데이터 포워딩 로직
436: 합의 포워딩 로직 500: 집중형 통신 시스템
510: 클라이언트 디바이스 512: 입력 디바이스
518: 출력 디바이스 519: 메모리
520: 통신 클라이언트 522: 네트워크 인터페이스
524: 네트워크 526: 통신 서버
530: 통신 로직 536: 소셜 네트워킹 서버
600: 메시징 서비스 602: 도메인 이름 프론트 엔드
604: 챗 서버 608: 백엔드 서버
610: 오프라인 저장 서버 612: 세션 서버
614: 존재 서버 616: 푸시 저장 서버
618: 그룹 서버 620: 차단 리스트 서버
622: 마지막 본 정보 서버 624: 키 서버
626: 프로필 사진 서버 628: 스팸 로깅 서버
630: 통계 서버 632: 웹 서버
634: 챗 활동 모니터링 서버 636: 동기 서버
638: 멀티미디어 서버 640: 지불 서버
642: 등록 서버 644: 음성 전달 서버
700: 컴퓨팅 아키텍처 701: 컴퓨터
702: 프로세싱 유닛 704: 시스템 메모리
706: 시스템 버스 800: 통신 아키텍처
802: 클라이언트 804: 서버
806: 클라이언트 데이터 저장소 808: 서버 데이터 저장소
810: 통신 프레임워크 900: 디바이스
902: 소프트웨어 구성요소 904: 논리 회로
906: 라디오 인터페이스 908: 기저대역 회로
910: 컴퓨팅 플랫폼 912: 수신기
914: 송신기 916: 주파수 합성기
918: 안테나

Claims (34)

  1. 방법에 있어서,
    하나 이상의 프로세서에 의해:
    제 1 디바이스 및 제 2 디바이스로의 비디오 데이터의 송신을 하게 하는 단계;
    디바이스-애그노스틱 조정 활동 프로토콜에 따라 미디어 효과를 개시하는 단계로서, 상기 미디어 효과는 상기 제 1 디바이스 및 상기 제 2 디바이스에서 보여지는 바와 같이 상기 비디오 데이터를 수정하는, 상기 미디어 효과를 개시하는 단계; 및
    상기 미디어 효과에 관한 애플리케이션 프로그래밍 인터페이스(API) 호출을 수신하는 단계로서, 상기 API 호출은 상기 조정 활동에 따라 상기 제 1 디바이스로부터 이루어지고, 상기 API 호출은 상기 비디오 데이터에 대해 이루어질 수정을 특정하는 정보와 연관되는, 상기 API 호출을 수신하는 단계를 포함하고,
    상기 API 호출과 연관된 정보는 포맷이 상기 조정 활동 프로토콜에 의해 미리 정의되지 않은 일반 데이터를 포함하는, 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 API 호출과 연관된 정보는 상기 조정 활동 프로토콜에 의해 미리 정의되는 서비스와 연관된 포맷팅 데이터를 포함하는, 방법.
  4. 제 3 항에 있어서,
    상기 포맷팅 데이터는 상기 제 1 디바이스 및 상기 제 2 디바이스 상에서 플레이하는 비디오를 변경하기 위한 명령을 포함하는, 방법.
  5. 제 3 항에 있어서,
    상기 포맷팅 데이터는 정지 명령, 시작 명령, 일시정지 명령, 또는 동기화 명령 중 적어도 하나를 포함한 비디오 제어 명령을 포함하는, 방법.
  6. 제 3 항에 있어서,
    상기 포맷팅 데이터는 상기 비디오 데이터가 액세스된 엔트리 포인트에 기초하여 비디오 섬네일 모드를 트리거하기 위한 명령을 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 비디오 데이터는 비디오 회의 데이터를 포함하고;
    상기 제 1 디바이스 및 상기 제 2 디바이스는 각각 제 1 사용자의 비디오를 디스플레이하기 위한 제 1 패널 및 제 2 사용자의 비디오를 디스플레이하기 위한 제 2 패널을 포함한 인터페이스를 디스플레이하고;
    상기 미디어 효과는 상기 제 1 사용자가 상기 제 1 패널의 측면을 향해 기울거나 또는 밀 때 개시되며;
    상기 수정은 상기 제 1 사용자가 기울거나 또는 민 측면의 방향으로 상기 제 1 패널의 크기를 확장시키며, 상기 제 1 사용자의 측면과 연관된 방향으로 상기 제 2 패널의 크기를 감소시키는 것을 포함하는, 방법.
  8. 지시들을 저장한 비-일시적 컴퓨터-판독 가능한 저장 매체에 있어서,
    상기 지시들은, 하나 이상의 프로세서들에 의해 실행될 때, 상기 프로세서들로 하여금:
    제 1 디바이스 및 제 2 디바이스로의 비디오 데이터의 송신을 하게 하고;
    디바이스-애그노스틱 조정 활동 프로토콜에 따라 미디어 효과를 개시하게 하는 것으로서, 상기 미디어 효과는 상기 제 1 디바이스에서 및 상기 제 2 디바이스에서 보여지는 바와 같이 상기 비디오 데이터를 수정하는, 상기 미디어 효과를 개시하게 하며;
    상기 미디어 효과에 관한 애플리케이션 프로그래밍 인터페이스(API) 호출을 수신하게 하는 것으로서, 상기 API 호출은 상기 조정 활동에 따라 상기 제 1 디바이스로부터 이루어지며, 상기 API 호출은 상기 비디오 데이터에 대해 이루어질 수정을 특정하는 정보와 연관되는, 상기 API 호출을 수신하게 하고,
    상기 API 호출과 연관된 정보는 포맷이 상기 조정 활동 프로토콜에 의해 미리 정의되지 않은 일반 데이터를 포함하는, 비-일시적 컴퓨터-판독 가능한 매체.
  9. 삭제
  10. 제 8 항에 있어서,
    상기 API 호출과 연관된 정보는 상기 조정 활동 프로토콜에 의해 미리 정의되는 서비스와 연관된 포맷팅 데이터를 포함하는, 비-일시적 컴퓨터-판독 가능한 매체.
  11. 제 10 항에 있어서,
    상기 포맷팅 데이터는 상기 제 1 디바이스 및 상기 제 2 디바이스 상에서 플레이하는 비디오를 변경하기 위한 명령을 포함하는, 비-일시적 컴퓨터-판독 가능한 매체.
  12. 제 10 항에 있어서,
    상기 포맷팅 데이터는 정지 명령, 시작 명령, 일시정지 명령, 또는 동기화 명령 중 적어도 하나를 포함한 비디오 제어 명령을 포함하는, 비-일시적 컴퓨터-판독 가능한 매체.
  13. 제 10 항에 있어서,
    상기 포맷팅 데이터는 상기 비디오 데이터가 액세스된 엔트리 포인트에 기초하여 비디오 섬네일 모드를 트리거하기 위한 명령을 포함하는, 비-일시적 컴퓨터-판독 가능한 매체.
  14. 제 8 항에 있어서,
    상기 비디오 데이터는 비디오 회의 데이터를 포함하고;
    상기 제 1 디바이스 및 상기 제 2 디바이스는 각각 제 1 사용자의 비디오를 디스플레이하기 위한 제 1 패널 및 제 2 사용자의 비디오를 디스플레이하기 위한 제 2 패널을 포함한 인터페이스를 디스플레이하고;
    상기 미디어 효과는 상기 제 1 사용자가 상기 제 1 패널의 측면을 향해 기울거나 또는 밀 때 개시되며;
    상기 수정은 상기 제 1 사용자가 기울거나 또는 민 측면의 방향으로 상기 제 1 패널의 크기를 확장하며, 상기 제 1 사용자의 측면과 연관된 방향으로 상기 제 2 패널의 크기를 감소시키는 것을 포함하는, 비-일시적 컴퓨터-판독 가능한 매체.
  15. 장치에 있어서,
    제 1 디바이스 및 제 2 디바이스로 송신될 비디오 데이터를 유지하는 비-일시적 컴퓨터-판독 가능한 매체;
    하드웨어 프로세서 회로;
    디바이스-애그노스틱 조정 활동 프로토콜에 따라 미디어 효과를 개시하도록 구성된 미디어 효과 개시 로직으로서, 상기 미디어 효과는 상기 제 1 디바이스에서 및 상기 제 2 디바이스에서 보여지는 바와 같이 상기 비디오 데이터를 수정하는, 상기 미디어 효과 개시 로직; 및
    상기 미디어 효과에 관한 애플리케이션 프로그래밍 인터페이스(API) 호출을 수신하도록 구성된 미디어 효과 정보 교환 로직으로서, 상기 API 호출은 상기 조정 활동에 따라 상기 제 1 디바이스로부터 이루어지고, 상기 API 호출은 상기 비디오 데이터에 대해 이루어질 수정을 특정하는 정보와 연관되는, 상기 미디어 효과 정보 교환 로직을 포함하고,
    상기 API 호출과 연관된 정보는 포맷이 상기 조정 활동 프로토콜에 의해 미리 정의되지 않은 일반 데이터를 포함하는, 장치.
  16. 제 15 항에 있어서,
    상기 API 호출과 연관된 정보는 상기 조정 활동 프로토콜에 의해 미리 정의되는 서비스와 연관된 포맷팅 데이터를 포함하는, 장치.
  17. 제 16 항에 있어서,
    상기 포맷팅 데이터는 상기 제 1 디바이스 및 상기 제 2 디바이스 상에서 플레이하는 비디오를 변경하기 위한 명령을 포함하는, 장치.
  18. 제 16 항에 있어서,
    상기 포맷팅 데이터는 정지 명령, 시작 명령, 일시정지 명령, 또는 동기화 명령 중 적어도 하나를 포함한 비디오 제어 명령을 포함하는, 장치.
  19. 제 16 항에 있어서,
    상기 포맷팅 데이터는 상기 비디오 데이터가 액세스된 엔트리 포인트에 기초하여 비디오 섬네일 모드를 트리거하기 위한 명령을 포함하는, 장치.
  20. 제 15 항에 있어서,
    상기 비디오 데이터는 비디오 회의 데이터를 포함하고;
    상기 제 1 디바이스 및 상기 제 2 디바이스는 각각 제 1 사용자의 비디오를 디스플레이하기 위한 제 1 패널 및 제 2 사용자의 비디오를 디스플레이하기 위한 제 2 패널을 포함한 인터페이스를 디스플레이하고;
    상기 미디어 효과는 상기 제 1 사용자가 상기 제 1 패널의 측면을 향해 기울거나 또는 밀 때 개시되며;
    상기 수정은 상기 제 1 사용자가 기울거나 또는 민 측면의 방향으로 상기 제 1 패널의 크기를 확장시키며, 상기 제 1 사용자의 측면과 연관된 방향으로 상기 제 2 패널의 크기를 감소시키는 것을 포함하는, 장치.
  21. 컴퓨터-구현 방법에 있어서,
    제 1 디바이스 및 제 2 디바이스로의 비디오 데이터의 송신을 하게 하는 단계;
    디바이스-애그노스틱 조정 활동 프로토콜에 따라 미디어 효과를 개시하는 단계로서, 상기 미디어 효과는 상기 제 1 디바이스 및 상기 제 2 디바이스에서 보여지는 바와 같이 상기 비디오 데이터를 수정하는, 상기 미디어 효과를 개시하는 단계; 및
    상기 미디어 효과에 관한 애플리케이션 프로그래밍 인터페이스(API) 호출을 수신하는 단계로서, 상기 API 호출은 상기 조정 활동에 따라 상기 제 1 디바이스로부터 이루어지고, 상기 API 호출은 상기 비디오 데이터에 대해 이루어질 수정을 특정하는 정보와 연관되는, 상기 API 호출을 수신하는 단계를 포함하고,
    상기 API 호출과 연관된 정보는 포맷이 상기 조정 활동 프로토콜에 의해 미리 정의되지 않은 일반 데이터를 포함하는, 컴퓨터-구현 방법.
  22. 삭제
  23. 제 21 항에 있어서,
    상기 API 호출과 연관된 정보는 상기 조정 활동 프로토콜에 의해 미리 정의되는 서비스와 연관된 포맷팅 데이터를 포함하는, 컴퓨터-구현 방법.
  24. 제 23 항에 있어서,
    상기 포맷팅 데이터는 상기 제 1 디바이스 및 상기 제 2 디바이스 상에서 플레이하는 비디오를 변경하기 위한 명령을 포함하거나; 또는
    상기 포맷팅 데이터는 정지 명령, 시작 명령, 일시정지 명령, 또는 동기화 명령 중 적어도 하나를 포함한 비디오 제어 명령을 포함하거나; 또는
    상기 포맷팅 데이터는 상기 비디오 데이터가 액세스된 엔트리 포인트에 기초하여 비디오 섬네일 모드를 트리거하기 위한 명령을 포함하는, 컴퓨터-구현 방법.
  25. 제 21 항, 제 23 항, 및 제 24 항 중 어느 한 항에 있어서,
    상기 비디오 데이터는 비디오 회의 데이터를 포함하고;
    상기 제 1 디바이스 및 상기 제 2 디바이스는 각각 제 1 사용자의 비디오를 디스플레이하기 위한 제 1 패널 및 제 2 사용자의 비디오를 디스플레이하기 위한 제 2 패널을 포함한 인터페이스를 디스플레이하고;
    상기 미디어 효과는 상기 제 1 사용자가 상기 제 1 패널의 측면을 향해 기울거나 또는 밀 때 개시되며;
    상기 수정은 상기 제 1 사용자가 기울거나 또는 민 측면의 방향으로 상기 제 1 패널의 크기를 확장시키며, 상기 제 1 사용자의 측면과 연관된 방향으로 상기 제 2 패널의 크기를 감소시키는 것을 포함하는, 컴퓨터-구현 방법.
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
KR1020207020482A 2018-01-12 2018-01-22 비디오들에서의 조정 효과들 KR102529841B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/870,008 2018-01-12
US15/869,926 US11102264B2 (en) 2018-01-12 2018-01-12 Methods and systems for initiating a coordinated effect
US15/870,008 US11019305B2 (en) 2018-01-12 2018-01-12 Coordinated effects in videos
US15/869,926 2018-01-12
PCT/US2018/014634 WO2019139631A1 (en) 2018-01-12 2018-01-22 Coordinated effects in videos

Publications (2)

Publication Number Publication Date
KR20200099183A KR20200099183A (ko) 2020-08-21
KR102529841B1 true KR102529841B1 (ko) 2023-05-09

Family

ID=67214496

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207020482A KR102529841B1 (ko) 2018-01-12 2018-01-22 비디오들에서의 조정 효과들

Country Status (6)

Country Link
US (1) US11019305B2 (ko)
EP (4) EP3512207B1 (ko)
JP (3) JP7003262B2 (ko)
KR (1) KR102529841B1 (ko)
CN (3) CN115604515A (ko)
WO (1) WO2019139631A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11128682B2 (en) * 2018-12-03 2021-09-21 At&T Intellectual Property I, L.P. Video streaming at mobile edge
US10958518B2 (en) * 2019-03-29 2021-03-23 Lenovo (Singapore) Pte. Ltd. Dynamic switching between hub mode and slave mode
US11335326B2 (en) * 2020-05-14 2022-05-17 Spotify Ab Systems and methods for generating audible versions of text sentences from audio snippets
KR102461169B1 (ko) * 2021-03-02 2022-10-31 주식회사 가디언즈스타 WebRTC통신을 지원하는 웹 브라우저가 탑재된 컴퓨팅 장치에서 실행되는 실시간 전자문서 공유 시스템
US11683553B2 (en) * 2021-10-29 2023-06-20 Rovi Guides, Inc. Methods and systems for group watching
CN116077946A (zh) * 2021-11-08 2023-05-09 脸萌有限公司 角色信息交互方法、设备、存储介质及程序产品
JP7465486B2 (ja) * 2021-12-30 2024-04-11 17Live株式会社 画像認識のためのシステム、方法、及びコンピュータ可読媒体
JP7212420B1 (ja) 2022-03-01 2023-01-25 株式会社ダイナミックエンタテインメント 電子漫画配信システム、電子漫画配信プログラム及びアプリケーションプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009148413A1 (en) * 2008-06-06 2009-12-10 Creative Technology Ltd A method and apparatus for a recipient to adjust a video stream

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594688B2 (en) 1993-10-01 2003-07-15 Collaboration Properties, Inc. Dedicated echo canceler for a workstation
JP2003299051A (ja) * 2002-03-29 2003-10-17 Matsushita Electric Ind Co Ltd 情報出力装置および情報出力方法
US7865834B1 (en) * 2004-06-25 2011-01-04 Apple Inc. Multi-way video conferencing user interface
EP1689155B1 (en) * 2005-02-02 2018-05-02 Creative Technology Ltd. Method and system to process video effects
US8036140B2 (en) 2005-04-22 2011-10-11 Microsoft Corporation Application programming interface for inviting participants in a serverless peer to peer network
US8373799B2 (en) * 2006-12-29 2013-02-12 Nokia Corporation Visual effects for video calls
JP2010157940A (ja) * 2008-12-27 2010-07-15 Canon Marketing Japan Inc 写真印刷装置、写真選択方法、及びそのプログラム。
WO2011100417A1 (en) 2010-02-10 2011-08-18 Oovoo, Llc System and method for video communication on mobile devices
US8451994B2 (en) * 2010-04-07 2013-05-28 Apple Inc. Switching cameras during a video conference of a multi-camera mobile device
US9559869B2 (en) 2010-05-04 2017-01-31 Qwest Communications International Inc. Video call handling
US8944911B2 (en) * 2010-07-27 2015-02-03 Disney Enterprises, Inc. Online parallel play
KR101226560B1 (ko) 2011-03-29 2013-01-25 (주)티아이스퀘어 커뮤니케이션 서비스 수행 도중 멀티미디어 콘텐츠 공유 서비스 제공 방법 및 시스템
JP2015507406A (ja) * 2011-12-22 2015-03-05 インテル・コーポレーション 共同的エンターテイメントプラットフォーム
WO2013172657A1 (ko) 2012-05-15 2013-11-21 Jo Hyun Geun 영상 통화 시스템에서의 영상 통합 제어 방법
US20130332526A1 (en) * 2012-06-10 2013-12-12 Apple Inc. Creating and sharing image streams
US9731206B2 (en) 2013-02-19 2017-08-15 Amazon Technologies, Inc. Delegating video game tasks via a sharing service
CN104521180B (zh) 2013-07-01 2017-11-24 华为技术有限公司 基于统一通信的视频会议呼叫方法、设备和系统
US20150135059A1 (en) 2013-11-12 2015-05-14 Lusha LIANG Method for learning using linked devices
US10413824B2 (en) 2014-02-11 2019-09-17 Apple Inc. Multi-device cooperative scorekeeping
JPWO2015136584A1 (ja) * 2014-03-11 2017-04-06 パナソニックIpマネジメント株式会社 推薦画像表示システム、推薦画像出力装置、および、推薦画像出力方法
US9628863B2 (en) 2014-06-05 2017-04-18 Palmwin Information Technology (Shanghai) Co. Ltd. Interactively combining end to end video and game data
KR102248745B1 (ko) * 2014-08-29 2021-05-07 삼성전자주식회사 디스플레이 장치, 서버, 및 콘텐츠 제공 방법
US9282287B1 (en) * 2014-09-09 2016-03-08 Google Inc. Real-time video transformations in video conferences
CN104538027B (zh) * 2014-12-12 2018-07-20 复旦大学 语音社交媒体的情绪传播量化方法及系统
US20160212265A1 (en) 2015-01-20 2016-07-21 Avaya Inc. Enhanced customer journey using multichannel contact center
US20160354696A1 (en) * 2015-06-05 2016-12-08 Apple Inc. Systems and methods for providing anonymous guest players in a multiplayer environment
US9800931B1 (en) * 2016-06-08 2017-10-24 Cisco Technology, Inc. Adaptive screen layout for video conferencing
US9993737B2 (en) 2016-06-30 2018-06-12 Amazon Technologies, Inc. Constructing social networks using monitored game play
CN109952610B (zh) 2016-11-07 2021-01-08 斯纳普公司 图像修改器的选择性识别和排序
US10554908B2 (en) * 2016-12-05 2020-02-04 Facebook, Inc. Media effect application
JP6202226B1 (ja) 2017-03-31 2017-09-27 株式会社セガゲームス ゲームサーバおよびゲームプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009148413A1 (en) * 2008-06-06 2009-12-10 Creative Technology Ltd A method and apparatus for a recipient to adjust a video stream

Also Published As

Publication number Publication date
CN111543062A (zh) 2020-08-14
US11019305B2 (en) 2021-05-25
US20190222803A1 (en) 2019-07-18
JP7003262B2 (ja) 2022-01-20
JP7242827B2 (ja) 2023-03-20
CN115633009A (zh) 2023-01-20
CN115604515A (zh) 2023-01-13
EP3512207A1 (en) 2019-07-17
EP3512207B1 (en) 2022-03-30
KR20200099183A (ko) 2020-08-21
EP4009653A1 (en) 2022-06-08
EP4009654A1 (en) 2022-06-08
JP2021510944A (ja) 2021-04-30
JP2022058447A (ja) 2022-04-12
EP4009652A1 (en) 2022-06-08
CN111543062B (zh) 2022-09-23
JP2022058448A (ja) 2022-04-12
WO2019139631A1 (en) 2019-07-18

Similar Documents

Publication Publication Date Title
KR102529841B1 (ko) 비디오들에서의 조정 효과들
US20200162413A1 (en) Low-friction, instant, private, personalized video sharing widget
US11081142B2 (en) Messenger MSQRD—mask indexing
US11372698B2 (en) Coordinated effects in experiences
US10139917B1 (en) Gesture-initiated actions in videoconferences
US11683444B2 (en) Cross-application facilitating of video rooms
WO2018125161A1 (en) Aggregation of media effects
US20220150295A1 (en) Methods and systems for initiating a coordinated effect
US10439974B2 (en) Sharing of activity metadata via messaging systems
CN113132344B (zh) 广播和管理呼叫参与
US10079994B2 (en) Methods and systems for displaying relevant participants in a video communication
US20150066922A1 (en) System and method for recommending multimedia content
US10116898B2 (en) Interface for a video call
US9531822B1 (en) System and method for ranking conversations

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant