KR20190086004A - 메시징 시스템에서 미디어 콘텐츠를 처리하기 - Google Patents

메시징 시스템에서 미디어 콘텐츠를 처리하기 Download PDF

Info

Publication number
KR20190086004A
KR20190086004A KR1020197018277A KR20197018277A KR20190086004A KR 20190086004 A KR20190086004 A KR 20190086004A KR 1020197018277 A KR1020197018277 A KR 1020197018277A KR 20197018277 A KR20197018277 A KR 20197018277A KR 20190086004 A KR20190086004 A KR 20190086004A
Authority
KR
South Korea
Prior art keywords
media content
content items
processed
processing
subset
Prior art date
Application number
KR1020197018277A
Other languages
English (en)
Other versions
KR102206344B1 (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
Application filed by 스냅 인코포레이티드 filed Critical 스냅 인코포레이티드
Priority to KR1020217001547A priority Critical patent/KR102328073B1/ko
Publication of KR20190086004A publication Critical patent/KR20190086004A/ko
Application granted granted Critical
Publication of KR102206344B1 publication Critical patent/KR102206344B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/06Message adaptation to terminal or network requirements
    • H04L51/066Format adaptation, e.g. format conversion or compression
    • H04L67/2823
    • 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/08Annexed information, e.g. attachments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/435Filtering based on additional data, e.g. user or group profiles
    • 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
    • H04L67/42
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

시스템들 및 방법들은 서버 컴퓨터가 미디어 콘텐츠 아이템들을 처리하기 위한 명령들을 위한, 제1 디바이스로부터의 요청을 수신하는 것을 제공하고, 요청은 미디어 콘텐츠 아이템들 각각에 대한 고유 식별자를 포함한다. 서버 컴퓨터는 제1 디바이스에 의해 처리될 미디어 콘텐츠 아이템들의 서브세트를 결정한다. 서버 컴퓨터는 미디어 콘텐츠 아이템들의 서브세트를 처리하기 위한 명령들을 생성하고 이 명령들을 제1 디바이스에 송신한다. 서버 컴퓨터는 제2 디바이스와 미디어 콘텐츠 아이템들을 공유하라는 제1 디바이스로부터의 요청을 수신하는데, 요청은 공유될 미디어 콘텐츠 아이템들 각각에 대한 고유 식별자, 및 미디어 콘텐츠 아이템들의 서브세트에 대한 처리된 미디어 콘텐츠 아이템들을 포함한다. 서버 컴퓨터는 제2 디바이스에 송신할 미디어 콘텐츠 아이템들에 대한 처리된 미디어 콘텐츠 아이템들을 포함하는 메시지를 생성한다.

Description

메시징 시스템에서 미디어 콘텐츠를 처리하기
본 출원은 2016년 11월 28일에 출원된 미국 특허 출원 일련번호 제15/362,287호에 대한 우선권의 이익을 주장하며, 그 우선권의 이익은 이에 의해 주장되고, 그 출원의 내용은 그 전체가 본 명세서에 참조로 통합된다.
사용자 디바이스들(예를 들어, 모바일 디바이스들, 개인용 컴퓨터들 등) 사이에서 오디오, 이미지들, 및 비디오와 같은 미디어 콘텐츠를 공유하는 것은 미디어 콘텐츠 아이템의 크기에 좌우되어, 미디어 콘텐츠를 수신 디바이스에 의해 소비될 수 있는 포맷으로 변환하는 것 및 네트워크를 통한 대량의 데이터 전송을 수반할 수 있다. 예를 들어, 비디오는 상이한 포맷 및/또는 더 작은 크기의 파일로 트랜스코딩될 필요가 있을 수 있다. 각각의 미디어 콘텐츠 아이템을 트랜스코딩하는 것은 상당한 시간 및 처리 능력을 취할 수 있다. 사용자가 한 번에 다수의 미디어 콘텐츠 아이템을 공유할 때, 시간 및 처리 능력은 사용자 디바이스의 능력 및 사용자의 기대를 초과할 수 있다. 더욱이, 사용자 디바이스의 처리 한계로 인해 한 번에 공유될 수 있는 아이템들의 양에 대한 한계가 있을 수 있다.
첨부된 도면의 다양한 것들은 본 개시내용의 예시적인 실시예들을 나타낼 뿐이고 그 범위를 제한하는 것으로서 간주해서는 안 된다.
도 1은 일부 예시적인 실시예들에 따른 네트워크화된 시스템을 도해한 블록도이다.
도 2는 일부 예시적인 실시예들에 따른 방법의 양태들을 도시한 흐름도이다.
도 3은 일부 예시적인 실시예들에 따른, 사용자 디바이스상의 예시적인 디스플레이이다.
도 4는 일부 예시적인 실시예들에 따른, 머신상에 설치될 수 있는 소프트웨어 아키텍처의 예를 도해하는 블록도이다.
도 5는 예시적인 실시예에 따라, 머신으로 하여금 본 명세서에서 설명된 방법론들 중 임의의 하나 이상을 수행하도록 야기하기 위해 명령어들의 세트가 그 내에서 실행될 수 있는, 컴퓨터 시스템 형태의 머신의 개략 표현을 도해한다.
본 명세서에 설명된 시스템들 및 방법들은 메시징 시스템을 통해 디바이스들 간에 공유되는 미디어 콘텐츠 아이템들을 처리하는 것에 관한 것이다. 예를 들어, 사용자는 하나 이상의 비디오, 오디오 콘텐츠, 이미지 등을 하나 이상의 다른 사용자와 공유하기를 원할 수 있다. 본 명세서에 설명된 실시예들은 사용자 디바이스(특히 송신 디바이스 및 수신 디바이스)상에서 처리 능력 및 시간을 최소화하는 효율적인 방식으로 사용자들에 의해 작동되는 디바이스들로의 그리고 디바이스들로부터의 메시지들로 미디어 콘텐츠 아이템들을 수신하고, 처리하고, 송신하는 것을 제공한다. 예를 들어, 사용자에 의해 생성된 원래의 비디오들, 이미지들 등은 통상적으로 사용자 디바이스상에서의 공유 또는 시청에 적합하지 않은 고품질 포맷으로 되어 있다. 사용자 디바이스상에서 고품질 미디어 콘텐츠 아이템을 변환하는 것은 디바이스의 처리 능력에 대해 무거운 부담을 주는 것으로 드러날 수 있고 사용자에 의해 예상되는 것보다 더 많은 시간을 취할 수 있다. 예를 들어, 송신 사용자는 오직 2분 길이인 비디오를 송신하기 위해 5분을 기다리는 것을 예상하지 않을 것이고, 수신 사용자는 오직 2분 길이인 비디오를 다운로드하고 보기 위해 5분을 기다릴 것을 예상하지 않을 것이다.
또한, 사용자는 복수의 미디어 콘텐츠 아이템을 하나 이상의 사용자에게 송신하기를 원할 수 있다. 예를 들어, 사용자는 그의 휴가 시에 다양한 비디오 및 사진을 취할 수 있다. 사용자는 그의 휴가로부터 얻은 최상의 비디오 및 사진을 그의 친구들 및 가족과 공유하기를 원할 수 있다. 사용자는 비디오 및 사진을 선택하여 그의 친구들 및 가족과 공유할 수 있다. 비디오 및 사진이 원래의 포맷으로 송신되었다면, 사용자 디바이스로부터 메시징 시스템의 백엔드 서버로 데이터 전송을 완료하는 데에 오랜 시간이 걸릴 수 있고, 이후 수신 사용자 디바이스는 수신 사용자가 그것들을 보기 위해 큰 파일들을 로딩하는 데에 오랜 시간 및 처리 능력을 취할 수 있다. 이것은 특히 더 제한된 처리 능력 및 메모리를 갖는 모바일 디바이스들에 무거운 부담을 줄 수 있다.
본 명세서에서 설명되는 예시적인 실시예들은 미디어 콘텐츠를 처리하고 전송하기 위한 하이브리드 접근법을 이용하여 사용자 디바이스들에 송신되고 사용자 디바이스들에 의해 수신되는 미디어 콘텐츠를 처리하기 위한 더 효율적인 시스템을 제공한다. 사용자 디바이스의 처리 능력에만 의존하는 것 대신에, 가능한 경우 서버의 처리 능력을 활용함으로써 사용자 디바이스의 시간 및 처리 능력이 최소화될 수 있다. 예를 들어, 서버 컴퓨터는 복수의 미디어 콘텐츠 아이템 중 임의의 것이 이전에 처리되었는지를 결정하고, 사용자 디바이스에게 아직 처리되지 않은 그런 미디어 콘텐츠 아이템들을 처리하도록 지시할 수 있다. 이러한 방식으로, 미디어 콘텐츠 아이템들의 처리를 최적화하도록 미디어 콘텐츠 아이템들의 처리 및 미디어 콘텐츠 아이템들의 데이터 전송에 대해 중복성이 감소될 수 있다. 더욱이, 미디어 콘텐츠 처리 및 데이터 전송의 속도가 증가 될 수 있다. 또한, 더 높은 품질의 미디어 콘텐츠 아이템들을 생성하기 위해 서버 컴퓨터상에서 더 진보된 처리가 활용될 수 있다. 더욱이, 더 적은 처리 시간 및 전력이 사용자 디바이스에 의해 요구될 수 있다.
한 예시적인 실시예에서, 서버 컴퓨터는 복수의 미디어 콘텐츠 아이템을 처리하기 위한 명령에 대한 요청을 제1 디바이스로부터 수신할 수 있고, 요청은 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 포함한다. 서버 컴퓨터는, 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 이용하여, 제1 디바이스에 의해 처리될 복수의 미디어 콘텐츠 아이템의 서브세트를 결정할 수 있다. 서버 컴퓨터는 제1 디바이스에 의해 복수의 미디어 콘텐츠 아이템의 서브세트를 처리하기 위한 명령들을 생성하고 이 명령들을 제1 디바이스에 송신할 수 있다. 서버 컴퓨터는 제1 디바이스로부터 복수의 미디어 콘텐츠 아이템을 제2 디바이스와 공유하기 위한 요청을 수신하고, - 이 요청은 공유될 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자, 및 복수의 미디어 콘텐츠 아이템의 서브세트에 대한 처리된 미디어 콘텐츠 아이템을 포함함 -, 생성된 메시지를 제2 디바이스에 송신할 수 있다.
도 1은 미디어 콘텐츠 아이템들을 처리하고 처리된 미디어 콘텐츠를 포함하는 메시지들을 송수신하도록 구성된, 일부 예시적인 실시예에 따른 네트워크화된 시스템(100)을 도해하는 블록도이다. 한 예시적인 실시예에서, 시스템은 복수의 사용자로부터 복수의 메시지를 수신하고, 메시지들에 포함된 미디어 콘텐츠를 처리하고, 및 처리된 미디어 콘텐츠를 갖는 메시지들을 하나 이상의 사용자에게 송신하도록 구성된 메시징 시스템이다. 시스템(100)은 클라이언트 디바이스(110)와 같은 하나 이상의 클라이언트 디바이스를 포함할 수 있다. 클라이언트 디바이스(110)는 또한 본 명세서에서 사용자 디바이스라고 지칭될 수 있다. 클라이언트 디바이스(110)는 이동 전화, 데스크톱 컴퓨터, 랩톱, 개인용 디지털 정보기기(PDA), 스마트폰, 태블릿, 울트라 북, 넷북, 랩톱, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래밍가능 소비자 가전, 게임 콘솔, 셋톱 박스, 차량 내의 컴퓨터, 또는 사용자가 네트워크화된 시스템(100)에 액세스하기 위해 활용할 수 있는 임의의 다른 통신 디바이스를 포함할 수 있지만, 이것에만 제한되지는 않는다. 일부 실시예들에서, 클라이언트 디바이스(110)는 (예를 들어, 사용자 인터페이스들의 형태로) 정보를 디스플레이하는 디스플레이 컴포넌트(도시되지 않음)를 포함할 수 있다. 추가 실시예들에서, 클라이언트 디바이스(110)는 터치 스크린들, 가속도계들, 자이로스코프들, 카메라들, 마이크로폰들, 글로벌 포지셔닝 시스템(GPS) 디바이스들 등 중 하나 이상을 포함할 수 있다. 클라이언트 디바이스(110)는 비디오, 이미지들(예를 들어, 사진), 오디오와 같은 콘텐츠 미디어 아이템들을 생성하고 또한 그러한 미디어 콘텐츠 아이템들을 포함하는 메시지를 다른 사용자들에게 및 그들로부터 송수신하는 데 사용되는 사용자의 디바이스일 수 있다.
하나 이상의 사용자(106)는 사람, 머신, 또는 클라이언트 디바이스(110)와 상호작용하는 다른 수단일 수 있다. 예시적인 실시예들에서, 사용자(106)는 시스템(100)의 일부가 아니지만, 클라이언트 디바이스(100) 또는 다른 수단을 통해 시스템(110)과 상호작용할 수 있다. 예를 들어, 사용자(106)는 클라이언트 디바이스(110)에 입력(예를 들어, 터치 화면 입력 또는 알파뉴메릭 입력)을 제공할 수 있고, 입력은 네트워크(104)를 통해 시스템(100)에서의 다른 엔티티들[예를 들어, 제3자 서버들(130), 서버 시스템(102) 등]에 통신될 수 있다. 이러한 경우에, 시스템(100)에서의 다른 엔티티들은, 사용자(106)로부터 입력을 수신한 것에 응답하여, 사용자(106)에게 제시될 정보를 네트워크(104)를 통해 클라이언트 디바이스(110)에 통신할 수 있다. 이러한 방식으로, 사용자(106)는 클라이언트 디바이스(110)를 이용하여 시스템(100)에서의 다양한 엔티티들과 상호작용할 수 있다.
시스템(100)은 네트워크(104)를 더 포함할 수 있다. 네트워크(104) 중 하나 이상의 부분은 애드혹 네트워크, 인트라넷, 엑스트라넷, VPN(virtual private network), LAN(local area network), WLAN(wireless LAN), WAN(wide area network), WWAN(wireless WAN), MAN(metropolitan area network), 인터넷의 일부분, PSTN(Public Switched Telephone Network)의 일부분, 셀룰러 전화 네트워크, 무선 네트워크, WiFi 네트워크, WiMax 네트워크, 또 다른 유형의 네트워크, 또는 둘 이상의 그러한 네트워크의 조합일 수 있다.
클라이언트 디바이스(110)는 웹 클라이언트(112)(예를 들어, 워싱턴주 레드몬드의 Microsoft® Corporation에 의해 개발된 Internet Explorer® 브라우저와 같은 브라우저)를 통해 시스템(100)에서의 다른 엔티티들에 의해 제공되는 다양한 데이터 및 애플리케이션들, 또는 하나 이상의 클라이언트 애플리케이션(114)에 액세스할 수 있다. 클라이언트 디바이스(110)는 웹 브라우저, 메시징 애플리케이션, 전자 메일(이메일) 애플리케이션, 전자 상거래 사이트 애플리케이션, 매핑 또는 위치 애플리케이션, 미디어 콘텐츠 편집 애플리케이션 등과 같은, 그러나 이것에만 제한되지는 않는 하나 이상의 애플리케이션(114)(또는 "앱들"로 지칭됨)을 포함할 수 있다.
일 예에서, 클라이언트 애플리케이션(114)은 사용자(106)가 사진 또는 비디오를 찍고, 캡션을 추가하거나, 또는 사진 또는 비디오를 다른 방식으로 편집한 다음 사진 또는 비디오를 또 다른 사용자에게 송신하도록 허용하는 메시징 애플리케이션일 수 있다. 메시지는 일시적일 수 있고 시청 후에 또는 미리 결정된 시간량(예를 들어, 10초, 24시간 등) 후에 수신 사용자 디바이스로부터 제거될 수 있다. 메시징 애플리케이션은 사용자(106)가 갤러리를 생성하는 것을 더 허용할 수 있다. 갤러리는 다른 사용자들이 사용자의 갤러리를 "팔로우(follow)"(예를 들어, 사용자의 갤러리에서 업데이트들을 보고 수신하기 위해 가입됨)하는 것에 의해 보여질 수 있는 사진들 및 비디오들의 컬렉션일 수 있다. 갤러리는 또한 일시적일 수 있다(예를 들어, 24시간 지속됨, 이벤트(예를 들어, 음악 콘서트, 스포츠 이벤트 동안, 기타 등등)의 지속기간 동안 지속됨, 또는 다른 미리 결정된 시간).
일시적 메시지는 메시지 지속기간 파라미터와 연관될 수 있고, 그 값은 일시적 메시지가 클라이언트 애플리케이션(110)에 의해 일시적 메시지의 수신 사용자에게 디스플레이될 시간량을 결정한다. 일시적 메시지는 메시지 수신기 식별자 및 메시지 타이머와 추가로 연관될 수 있다. 메시지 타이머는 메시지 수신기 식별자에 의해 식별된 특정 수신 사용자에게 일시적 메시지가 보여지는 시간량을 결정하는 일을 맡고 있을 수 있다. 예를 들어, 일시적 메시지는 메시지 지속기간 파라미터의 값에 의해 결정되는 시간 기간 동안에만 관련 수신 사용자에게 보여질 수 있다.
또 다른 예에서, 메시징 애플리케이션은 사용자(106)가 사진들 및 비디오들을 저장하고, 일시적이 아니고 또한 다른 사용자들에게 송신될 수 있는 갤러리를 생성하도록 허용할 수 있다. 예를 들어, 최근 휴가로부터의 사진 및 비디오를 모아서 친구 및 가족과 공유한다.
일부 실시예들에서, 하나 이상의 애플리케이션(114)은 클라이언트 디바이스(110) 중 주어진 것에 포함될 수 있고, 국소적으로 이용가능하지 않은 데이터 및/또는 처리 능력들(예를 들어, 위치 정보에 액세스, 사용자(106)를 인증하기 위해, 지불 방법을 검증하기 위해, 서버상에 저장된 미디어 콘텐츠에 액세스, 클라이언트 디바이스(110)와 서버 컴퓨터 사이의 미디어 콘텐츠를 동기화, 기타 등등)을 위해 필요를 기준으로 하여 시스템(100)[예를 들어, 서버 시스템(102)]에서의 다른 엔티티들과 통신하도록 구성된 애플리케이션(114)에 의해 사용자 인터페이스 및 기능성들의 적어도 일부를 국소적으로 제공하도록 구성될 수 있다. 반대로, 하나 이상의 애플리케이션(114)은 클라이언트 디바이스(110)에 포함되지 않을 수 있고, 그러면 클라이언트 디바이스(110)는 그 웹 브라우저를 이용하여 시스템(100)[예를 들어, 서버 시스템(102)]에서의 다른 엔티티들상에 호스팅되는 하나 이상의 애플리케이션에 액세스할 수 있다.
서버 시스템(102)은 네트워크(104)[예를 들어, 인터넷 또는 WAN(wide area network)]를 통해 서버측 기능성을 하나 이상의 클라이언트 디바이스(110)에 제공할 수 있다. 서버 시스템(102)은 API(application programming interface) 서버(120), 메시징 애플리케이션 서버(122), 및 미디어 콘텐츠 처리 서버(124)를 포함할 수 있으며, 이들 각각은 서로 그리고 하나 이상의 데이터 저장소(들)(126)와 통신가능하게 결합될 수 있다.
서버 시스템(102)은 일부 예시적인 실시예들에 따른 클라우드 컴퓨팅 환경일 수 있다. 서버 시스템(102), 및 서버 시스템(102)과 연관된 임의의 서버들은 하나의 예시적인 실시예에서 클라우드 기반 애플리케이션과 연관될 수 있다. 하나 이상의 데이터 저장소(126)는, 취급되지 않은 미디어 콘텐츠, 사용자들(106)로부터의 원래 미디어 콘텐츠(예를 들어, 고품질 미디어 콘텐츠), 처리된 미디어 콘텐츠(예를 들어, 클라이언트 디바이스들(110)과의 공유 및 클라이언트 디바이스들(110)상의 시청을 위해 포맷된 미디어 콘텐츠), 사용자 정보, 사용자 디바이스 정보 등과 같은 정보를 저장하는 저장 디바이스들일 수 있다. 하나 이상의 데이터 저장소(126)는 서버 시스템(102) 외부에 있는 클라우드 기반 저장소(예를 들어, 서버 시스템(102) 외부의 하나 이상의 제3자 엔티티에 의해 호스팅됨)를 포함할 수 있다. 데이터 저장소(126)는 데이터베이스, 블롭(blob) 저장소 등을 포함할 수 있다.
미디어 콘텐츠 처리 서버(124)는 미디어 콘텐츠 아이템들의 다양한 처리를 수행하는 기능성을 제공할 수 있다. 미디어 콘텐츠 처리 서버(124)는 미디어 콘텐츠를 처리하는 데 사용할 저장된 데이터를 검색하고 처리된 미디어 콘텐츠의 결과들을 저장하기 위해 하나 이상의 데이터 저장소(126)에 액세스할 수 있다.
메시징 애플리케이션 서버(122)는 클라이언트 디바이스들(110)의 사용자들(106) 사이의 메시지들의 생성 및 전달을 담당할 수 있다. 메시징 애플리케이션 서버(122)는 다수의 메시지 전달 네트워크들 및 플랫폼들 중 임의의 것을 활용하여 메시지들을 사용자들(106)에 전달할 수 있다. 예를 들어, 메시징 애플리케이션 서버(122)는 전자 메일(이메일), IM(instant message), SMS(Short Message Service), 텍스트, 팩시밀리, 또는 음성(예를 들어, VoIP(Voice over IP)) 메시지들을 사용하여 유선(예를 들어, 인터넷), POTS(plain old telephone service), 또는 무선 네트워크들(예컨대, 모바일, 셀룰러, WiFi, LTE(Long Term Evolution), 블루투스)을 통해 메시지들을 전달할 수 있다.
전술한 바와 같이, 사용자(106)는 다양한 미디어 콘텐츠 아이템들(예를 들어, 비디오, 오디오 콘텐츠, 이미지 등)을 하나 이상의 다른 사용자와 공유하기를 원할 수 있다. 예를 들어, 사용자(106)는 그의 휴가 중에 다양한 비디오들 및 사진들을 찍기 위해 클라이언트 디바이스(110) 또는 다른 디바이스를 사용할 수 있다. 사용자(106)는 그의 휴가로부터의 최상의 비디오들 및 사진들을 그의 친구들 및 가족과 공유하기를 원할 수 있다. 사용자(106)는 그가 공유하고자 하는 미디어 콘텐츠 아이템들을 선택하기 위해, 메시징 애플리케이션과 같은 클라이언트 디바이스(110)상의 클라이언트 애플리케이션(114)을 활용할 수 있다. 사용자(106)는 또한 클라이언트 애플리케이션(114)을 사용하여 다양한 미디어 콘텐츠 아이템들을 편집할 수 있다. 예를 들어, 사용자(106)는 미디어 콘텐츠 아이템에 텍스트를 추가할 수 있고, 미디어 콘텐츠 아이템에 대한 오버레이(라벨, 도면, 다른 아트워크 등)를 선택할 수 있고, 미디어 콘텐츠 아이템상에 드로잉하고, 미디어 콘텐츠 아이템을 크롭(crop) 또는 변경(예를 들어, 적목 현상 축소, 포커싱, 컬러 조정 등)할 수 있고, 기타 등등을 할 수 있다. "취급되지 않은" 미디어 콘텐츠 아이템은 클라이언트 애플리케이션(114)을 사용하여 편집되지 않은 미디어 콘텐츠 아이템을 지칭한다.
사용자(106)는 그의 친구 및 가족과 공유하고자 하는 미디어 콘텐츠 아이템을 클라이언트 애플리케이션(114)을 통해 선택할 수 있다. 일단 미디어 콘텐츠 아이템들을 선택했다면, 그는 그가 미디어 콘텐츠 아이템들을 공유하고자 한다는 것을 나타낼 수 있다. 예를 들어, 그가 미디어 콘텐츠 아이템들을 공유하기를 원한다는 것을 나타내기 위해 그는 클라이언트 애플리케이션(114)의 사용자 인터페이스(예를 들어, 메뉴 아이템, 버튼 등)상에서의 옵션을 선택할 수 있다. 도 3은 사용자 디바이스(302)상의 예시적인 디스플레이(306)를 도시하고, 여기서 사용자(106)는 공유하기 위한 미디어 콘텐츠 아이템들(예를 들어 308-311)을 선택하고, 그 후 선택된 미디어 콘텐츠 아이템들을 공유하기 위해 버튼(304)을 선택할 수 있다. 전술한 바와 같이, 미디어 콘텐츠 아이템들은 비디오, 사진 등일 수 있다. 또한, 사용자(106)는 다중의 비디오, 사진 등을 포함하는 공유할 갤러리를 선택할 수 있다. 예를 들어 아이템들(308-311)은 각각 미디어 콘텐츠 아이템들의 갤러리를 나타낼 수 있다.
클라이언트 디바이스(110)는 사용자(106)로부터 미디어 콘텐츠 아이템들을 공유하기 위한 표시를 수신하고, 미디어 콘텐츠 아이템들을 처리하기 위한 명령에 대한 요청을 생성한다. 예를 들어, 클라이언트 디바이스(110)는, 클라이언트 디바이스(110)가 미디어 콘텐츠 아이템들 중 임의의 것을 처리해야 하는지 여부에 대해, 서버 시스템(102)으로부터 명령들을 요청하기 위해 사용자(106)가 공유하기를 원하는 미디어 콘텐츠 아이템들 각각과 연관된 고유 식별자를 포함하는 요청을 생성할 수 있다. 예를 들어, 사용자(106)는 6개의 비디오 및 4개의 이미지를 포함하는 10개의 미디어 콘텐츠 아이템을 선택할 수 있다. 사용자(106)는 비디오들 중 2개와 모든 이미지들을 이전에 공유했을 수 있다. 따라서, 클라이언트 디바이스(110)는 비디오들 및 이미지들의 모든 것 대신에, 비디오들 중 4개를 처리할 필요만 있을 것이다.
미디어 콘텐츠 아이템을 처리하는 것은 미디어 콘텐츠 아이템을 수신 디바이스에 의해 소비될 수 있는 포맷으로 변환하는 것을 포함할 수 있다. 예를 들어, 비디오 콘텐츠는 하나의 포맷으로부터 수신 디바이스와 호환되는 또 다른 포맷으로 트랜스코딩될 수 있다. 또 다른 예에서, 비디오 콘텐츠는 데이터 전송 및 수신 디바이스상의 시청을 위해 감소된 크기가 되도록 트랜스코딩될 수 있다. 또 다른 예에서, 이미지는 수신 디바이스와 호환되는 포맷으로 변환될 수 있고 및/또는 데이터 전송 및 수신 디바이스상에서의 시청을 위해 크기가 감소될 수 있다.
도 2는 일부 예시적인 실시예에 따른, 미디어 콘텐츠 아이템들을 처리하기 위한 방법(200)의 양태들을 예시하는 흐름도이다. 예시의 목적을 위해, 방법(200)은 도 1의 네트워크화된 시스템(100)과 관련하여 설명된다. 방법(200)은 다른 실시예들에서 다른 시스템 구성들로 실시될 수 있음을 이해해야 한다.
동작(202)에서, 서버 시스템(102)은 (예를 들어, API 서버(120)를 통해) 클라이언트 디바이스(110)로부터 복수의 미디어 콘텐츠 아이템을 처리하기 위한 명령들을 위한 클라이언트 디바이스(110)로부터의 요청을 수신한다. 전술한 바와 같이, 요청은 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 포함할 수 있다.
한 예에서, 요청은 취급되지 않은 미디어 콘텐츠 아이템들을 더 포함할 수 있다. 예를 들어, 사용자(106)는 그가 클라이언트 애플리케이션(114)을 사용하여 편집하거나 변경하지 않았던 원래 미디어 콘텐츠 아이템들을 송신하기를 원할 수 있다. 이 경우, 서버 시스템(102)은 취급되지 않은 미디어 콘텐츠 아이템들을 처리할 수 있다.
예를 들어, 클라이언트 애플리케이션(114)은, 위에서 설명된 바와 같이, 사용자(106)가 미디어 콘텐츠 아이템을 편집하기 위해 사용하기 위한 다수의 창작 도구를 제공할 수 있다. 사용자(106)가 미디어 콘텐츠 아이템을 편집하기 위해 클라이언트 애플리케이션(114)상의 창작 도구들을 사용한 경우, 서버 시스템(102)이 그러한 창작 도구들을 지원하지 않는 경우에 미디어 콘텐츠 아이템은 클라이언트 디바이스(110)상에서 처리될 필요가 있을 수 있다. 사용자(106)가 클라이언트 애플리케이션(114)의 창작 도구들을 사용하지 않았다면, 서버 시스템(102)이 미디어 콘텐츠 아이템을 처리할 수 있다. 또 다른 예에서, 서버 시스템(102)은 미디어 콘텐츠 아이템을 변경하거나 편집하기 위해 사용자(106)에 의해 사용되는 창작 도구들을 지원할 수 있다. 이 예에서, 서버 시스템(102)은 미디어 콘텐츠 아이템이 변경되거나 편집되었더라도 미디어 콘텐츠 아이템을 처리할 수 있다.
동작(204)에서, 서버 시스템(102)은 (예를 들어, 미디어 콘텐츠 처리 서버(124)를 통해) 어느 미디어 콘텐츠 아이템들이 클라이언트 디바이스(110)에 의해 처리될지를 결정한다. 클라이언트 디바이스(110)에 의해 처리될 미디어 콘텐츠 아이템들은 복수의 미디어 콘텐츠 아이템 전부, 또는 복수의 미디어 콘텐츠 아이템의 서브세트일 수 있다. 예를 들어, 서버 시스템(102)은 하나 이상의 데이터 저장소(126)에서 미디어 콘텐츠 아이템이 이미 존재하는지(예를 들어, 저장되어 있는지) 여부를 결정하도록 각각의 미디어 콘텐츠 아이템과 연관된 고유 식별자를 룩업하기 위해 하나 이상의 데이터 저장소(126)에 액세스한다. 한 예에서, 사용자(106)는 이전에 미디어 콘텐츠 아이템들 중 하나 이상을 또 다른 사용자에게 (예를 들어, 개별적으로 또는 미디어 콘텐츠 아이템들의 그룹의 일부로서) 송신했을 수 있고, 따라서 미디어 콘텐츠 아이템들은 이미 처리되었을 수 있고 및/또는 서버 시스템(102)은 하나 이상의 데이터 저장소(126)에 미디어 콘텐츠 아이템들을 이전에 저장했을 수 있다. 또 다른 예에서, 사용자(106)는 하나 이상의 데이터 저장소(126)에 하나 이상의 미디어 콘텐츠 아이템을 저장 또는 백업할 수 있다. 앞에서의 예를 사용하여, 복수의 미디어 콘텐츠 아이템은 6개의 비디오 및 4개의 이미지를 포함할 수 있다. 서버 시스템(102)은 6개의 비디오 및 4개의 이미지의 리스트 중 오직 4개의 비디오가 클라이언트 디바이스(110)에 의해 처리될 것을 결정할 수 있는데, 그 이유는 다른 2개의 비디오 및 4개의 이미지가 하나 이상의 데이터 저장소(126)에 이미 저장되어 있기 때문이다.
한 예시적인 실시예에서, 서버 시스템(102)은, 하나 이상의 데이터 저장소(126)에, 사용자(106)로부터의 원래 미디어 콘텐츠 아이템만을 저장할 수 있다. 서버 시스템(102)은 이후 필요할 때(예를 들어, 또 다른 사용자에게 송신할 준비를 하기 위해) 원래 미디어 콘텐츠 아이템을 처리할 수 있다. 또 다른 예에서, 서버 시스템(102)은 처리된 미디어 콘텐츠 아이템만을 하나 이상의 데이터 저장소(126)에 저장할 수 있다. 또 다른 예에서, 서버 시스템(102)은 하나 이상의 데이터 저장소(126)에, 사용자(106)로부터의 원래 미디어 콘텐츠 아이템 및 처리된 미디어 콘텐츠 아이템 둘 다를 저장할 수 있다. 예를 들어, 서버 시스템(102)은 사용자(106)로부터 수신된 각각의 원래 미디어 콘텐츠 아이템을 처리하고, 원래 미디어 콘텐츠 아이템 및 처리된 미디어 콘텐츠 아이템 둘 다를 하나 이상의 데이터 저장소(126)에 저장할 수 있다. 대안적으로, 서버 시스템(102)은 사용자(106)로부터의 원래 미디어 콘텐츠 아이템을 저장할 수 있고, 사용자(106)가 미디어 콘텐츠 아이템을 공유하도록 요청할 때에만 처리된 미디어 콘텐츠 아이템을 처리 및 저장할 수 있다.
명령들에 대한 요청이 취급되지 않은 미디어 콘텐츠 아이템들, 또는 서버 시스템(102)에 의해 처리될 수 있는 미디어 콘텐츠 아이템들(예를 들어, 서버 시스템(102)에 의해 지원되는 창작 도구에 의해 변경되거나 편집된 미디어 콘텐츠 아이템들)을 포함하는 경우, 서버 시스템(102)은 취급되지 않은 미디어 콘텐츠 아이템들을 하나 이상의 데이터 저장소(126)에 저장할 수 있다. 서버 시스템(102)은 이들 미디어 콘텐츠 아이템을 처리하고 그리고 또한 미디어 콘텐츠 아이템들의 처리된 버전을 저장할 수 있거나, 또는 이하에서 설명되는 바와 같이 일단 이것이 미디어 콘텐츠 아이템들을 공유하라는 요청을 수신하면 미디어 콘텐츠 아이템들을 처리할 수 있다.
동작(206)에서, 서버 시스템(102)은 클라이언트 디바이스(110)에 의해 처리될 미디어 콘텐츠 아이템들(예를 들어, 하나 이상의 데이터 저장소(126)에 저장되지 않은 미디어 콘텐츠 아이템들)을 처리하기 위한 명령들을 생성한다. 예를 들어, 서버 시스템(102)은 사용자(106)가 공유하기를 원하는 복수의 미디어 콘텐츠 아이템의 서브세트(예를 들어, 6개의 비디오 및 4개의 이미지의 리스트 중에서 4개의 비디오만)를 처리하라는 명령들을 포함하는 메시지를 생성할 수 있다. 이 메시지는 복수의 미디어 콘텐츠 아이템의 서브세트의 각각의 미디어 콘텐츠 아이템에 대한 고유 식별자들을 포함할 수 있다. 동작(208)에서, 서버 시스템(102)은 클라이언트 디바이스(110)에 명령들(예를 들어, 메시지)을 송신한다.
클라이언트 디바이스(110)는 복수의 미디어 콘텐츠 아이템의 서브세트를 처리하라는 명령을 수신한다. 클라이언트 디바이스(110)는 미디어 콘텐츠 아이템들을 처리하고, 사용자(106)가 그가 공유하기를 원했다는 것을 표시한 미디어 콘텐츠 아이템들을 공유하라는 요청을 생성한다. 이 요청은 공유될 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자, 및 클라이언트 디바이스(110)에 의해 처리된 복수의 미디어 콘텐츠 아이템의 서브세트에 대한 처리된 미디어 콘텐츠 아이템들을 포함할 수 있다.
미디어 콘텐츠 아이템들을 공유하라는 요청은 취급되지 않은 미디어 콘텐츠 아이템들을 더 포함할 수 있다. 예를 들어, 클라이언트 디바이스(110)가 미디어 콘텐츠 아이템들을 처리하기 위한 명령들에 대한 요청에서 취급되지 않은 미디어 콘텐츠 아이템들(및/또는 서버 시스템(102)에 의해 지원되는 창작 도구에 의해 변경되거나 편집된 미디어 콘텐츠 아이템들 때문에 서버 컴퓨터에 의해 처리될 수 있는 미디어 콘텐츠 아이템들)을 송신하는 대신에, 클라이언트 디바이스(110)는 미디어 콘텐츠 아이템들을 공유하라는 요청에서 미디어 콘텐츠 아이템들을 서버 시스템(102)에 송신할 수 있다. 이 요청은 이들 미디어 콘텐츠 아이템이 서버 시스템(102)에 의해 처리되어야 한다는 표시를 포함할 수 있다.
동작(210)에서, 서버 시스템(102)은 (예를 들어, API 서버(120)를 통해) 미디어 콘텐츠 아이템들을 제2 디바이스와 공유하라는 요청을 수신한다. 서버 시스템(102)은 처리된 미디어 콘텐츠 아이템들을 하나 이상의 데이터 저장소(126)에 저장할 수 있다. 서버 시스템(102)은 취급되지 않은 미디어 콘텐츠 아이템들을 하나 이상의 데이터 저장소(126)에 저장할 수 있다. 서버 시스템(102)은 이들 취급되지 않은 미디어 콘텐츠 아이템들을 처리하고 또한 취급되지 않은 미디어 콘텐츠 아이템들의 처리된 버전을 저장할 수 있다.
서버 시스템(102)은 공유를 위해 미디어 콘텐츠 아이템들을 준비하기 전에 인증 및 검증 프로세스들을 수행할 수 있다. 예를 들어, 서버 시스템(102)은 요청이 인가되고 인증된 사용자(106)로부터 수신되는 것을 확실히 할 수 있다. 서버 시스템(102)은 고유 식별자들이 유효 식별자들(예를 들어, 이들은 시스템에 존재함)인 것을 확실히 하고, 각각의 고유 식별자에 대해 미디어 콘텐츠 아이템들이 존재한다는 것을 확인하고, 각각의 미디어 콘텐츠 아이템이 공유를 위해 적절한 포맷인 것을 확실히 하고, 기타 등등에 의해 미디어 콘텐츠 아이템들을 검증할 수 있다.
동작(212)에서, 서버 시스템(102)은 제2 디바이스와 공유할 요청된 미디어 콘텐츠 아이템들을 갖는 메시지를 생성한다. 예를 들어, 서버 시스템(102)은 공유될 각각의 처리된 미디어 콘텐츠 아이템을 검색하기 위해 하나 이상의 데이터 저장소(126)에 액세스할 수 있다. 서버 시스템(102)은 처리될 필요가 여전히 있을 수 있는 임의의 미디어 콘텐츠 아이템들(예를 들어, 원래 포맷으로 하나 이상의 데이터 저장소(126)에 저장되고 또한 아직 처리되지 않은 미디어 콘텐츠 아이템들)을 처리할 수 있다. 서버 시스템(102)은 공유될 처리된 미디어 콘텐츠 아이템들을 포함하는 메시지를 준비한다.
동작(214)에서, 서버 시스템(102)은 생성된 메시지를 제2 디바이스(110)에 송신한다. 예를 들어, 서버 시스템(102)은 생성된 메시지(임의의 미디어 첨부물들을 포함함)를 직접적으로 송신하거나 또는 생성된 메시지를 제2 디바이스(110)와의 통신을 핸들링하는 것을 담당하는 API(예를 들어, API 서버(120) 또는 다른 서버)에 중계할 수 있다. 한 예에서, 생성된 메시지는 실제 미디어 첨부물들에 대한 메시지들 및/또는 URL들을 포함하는, JSON/XML 페이로드와 같은 미리 정의된 메시징 프로토콜의 형태로 된 명령들을 포함할 수 있다.
제2 디바이스(110)는 생성된 메시지를 수신하고, 메시지를 디바이스상에 국지적으로 저장할 수 있다. 제2 디바이스(110)는 제2 디바이스(110)의 사용자(106)가 메시지를 액세스하고 보기 위해 사용할 수 있는 하나 이상의 클라이언트 애플리케이션(114)(예를 들어, 메시징 애플리케이션)을 가질 수 있다. 사용자(106)는 보게 될 메시지를 선택할 수 있고, 제2 디바이스(114)는 메시지 및 미디어 콘텐츠 아이템들이 사용자(106)에게 디스플레이되게 야기할 수 있다.
예시적인 실시예들은, 어느 미디어 콘텐츠 아이템들이 국지적으로 저장되는 것 대 오프라인 저장소(예를 들어, 클라우드 기반 저장소)에 저장되는 것에, 어느 미디어 콘텐츠 아이템들이 저장된 미디어 콘텐츠 아이템들로부터 공유되는 지에, 동일한 미디어 콘텐츠 아이템들이 얼마나 빈번하게 공유되는지 등에 관련된 사용자 거동을 모니터링하는 메커니즘들을 더 포함할 수 있다. 이 데이터는 사용자 거동을 예측하고 처리의 흐름을 최적화하기 위해 저장되고 사용될 수 있다. 예를 들어, 서버 시스템(102)이 특정한 사용자(106)가 특정한 주제(예를 들어, 스포츠 이벤트, 어린이들)에 관련된 미디어 콘텐츠 아이템들을 전형적으로 공유하는 것으로 결정하는 경우, 서버 시스템(102)은 사용자(106)가 미디어 콘텐츠 아이템들을 공유하기로 결정할 때 이들이 이미 처리되어 있도록 (예를 들어, 사용자(106)가 미디어 콘텐츠 아이템들을 공유하기로 결정하기 전에) 사전에 이들 미디어 콘텐츠 아이템들의 일부를 처리할 수 있다.
도 4는 전술한 디바이스들 중 임의의 하나 이상에 설치될 수 있는 소프트웨어 아키텍처(402)를 예시하는 블록도(400)이다. 예를 들어, 다양한 실시예들에서, 클라이언트 디바이스들(110) 및 서버 시스템들(102, 120, 122, 및 124)은 소프트웨어 아키텍처(402)의 요소들의 일부 또는 전부를 사용하여 구현될 수 있다. 도 4는 단지 소프트웨어 아키텍처의 비제한적인 예일 뿐이며, 본 명세서에 설명된 기능성을 용이하게 하기 위해 많은 다른 아키텍처들이 구현될 수 있다는 것을 알 것이다. 다양한 실시예들에서, 소프트웨어 아키텍처(402)는 프로세서들(510), 메모리(530), 및 I/O 컴포넌트들(550)을 포함하는 도 5의 머신(500)과 같은 하드웨어에 의해 구현된다. 이 예에서, 소프트웨어 아키텍처(402)는 각각의 계층이 특정 기능성을 제공할 수 있는 계층들의 스택으로서 개념화될 수 있다. 예를 들어, 소프트웨어 아키텍처(402)는 운영 체제(404), 라이브러리들(406), 프레임워크들(408), 및 애플리케이션들(410)과 같은 계층들을 포함한다. 동작상, 애플리케이션들(410)은, 일부 실시예들에 따라, 소프트웨어 스택을 통해 API(application programming interface) 호출들(412)을 호출하고, API 호출들(412)에 응답하여 메시지들(414)을 수신한다.
다양한 구현에서, 운영 체제(404)는 하드웨어 리소스들을 관리하고 공통 서비스들을 제공한다. 운영 체제(404)는, 예를 들어, 커널(420), 서비스들(422), 및 드라이버들(424)을 포함한다. 커널(420)은, 일부 실시예에 따라, 하드웨어와 기타 소프트웨어 계층들 사이의 추상화 계층(abstraction layer)으로서 작용한다. 예를 들어, 커널(420)은, 다른 기능성 중에서도, 메모리 관리, 프로세서 관리(예를 들어, 스케줄링), 컴포넌트 관리, 네트워크화, 및 보안 설정을 제공한다. 서비스들(422)은 다른 소프트웨어 계층들에 대한 다른 공통 서비스들을 제공할 수 있다. 일부 실시예들에 따르면, 드라이버들(424)은 기저 하드웨어를 제어하거나 기저 하드웨어와 인터페이싱하는 것을 담당한다. 예를 들어, 드라이버들(424)은 디스플레이 드라이버들, 카메라 드라이버들, BLUETOOTH® 또는 BLUETOOTH® Low Energy 드라이버들, 플래시 메모리 드라이버들, 직렬 통신 드라이버들(예를 들어, USB(Universal Serial Bus) 드라이버들), WI-FI® 드라이버들, 오디오 드라이버들, 전력 관리 드라이버들 등을 포함할 수 있다.
일부 실시예들에서, 라이브러리들(406)은 애플리케이션들(410)에 의해 활용되는 저레벨 공통 인프라스트럭처를 제공한다. 라이브러리들(406)은, 메모리 할당 기능, 스트링 조작 기능, 수학 기능 등의 기능을 제공할 수 있는 시스템 라이브러리들(430)(예를 들어, C 표준 라이브러리)을 포함할 수 있다. 또한, 라이브러리들(406)은, 미디어 라이브러리들(예를 들어, MPEG4(Moving Picture Experts Group-4), H.264 또는 AVC(Advanced Video Coding), MP3(Moving Picture Experts Group Layer-3), AAC(Advanced Audio Coding), AMR(Adaptive Multi-Rate) 오디오 코덱, JPEG 또는 JPG(Joint Photographic Experts Group), PNG(Portable Network Graphics)와 같은 다양한 미디어 포맷의 프리젠테이션과 조작을 지원하는 라이브러리들), 그래픽 라이브러리들(예를 들어, 그래픽 콘텐츠를 디스플레이상에서 2차원(2D) 및 3차원(3D)으로 렌더링하는데 이용되는 OpenGL 프레임워크), 데이터베이스 라이브러리들(예를 들어, 다양한 관계형 데이터 베이스 기능을 제공하는 SQLite), 웹 라이브러리들(예를 들어, 웹 브라우징 기능성을 제공하는 WebKit) 등의 API 라이브러리들(432)을 포함할 수 있다. 라이브러리들(406)은 또한 애플리케이션들(410)에게 많은 다른 API들을 제공하기 위한 매우 다양한 다른 라이브러리들(434)을 포함할 수 있다.
프레임워크들(408)은, 일부 실시예들에 따라, 애플리케이션들(410)에 의해 활용될 수 있는 고레벨 공통 인프라스트럭처를 제공한다. 예를 들어, 프레임워크들(408)은, 다양한 GUI(graphic user interface) 기능들, 고 레벨 리소스 관리, 고 레벨 로케이션 서비스들 등을 제공한다. 프레임워크들(408)은 애플리케이션들(410)에 의해 활용될 수 있는 광범위한 스펙트럼의 다른 API들을 제공할 수 있으며, 그 중 일부는 특정한 운영 체제(404) 또는 플랫폼 특정적일 수 있다.
예시적 실시예에서, 애플리케이션들(410)은 홈 애플리케이션(450), 연락처 애플리케이션(452), 브라우저 애플리케이션(454), 북 리더 애플리케이션(456), 로케이션 애플리케이션(458), 미디어 애플리케이션(460), 메시징 애플리케이션(462), 게임 애플리케이션(464), 및 제3자 애플리케이션들(466 및 467)과 같은 광범위한 다른 애플리케이션들을 포함한다. 일부 실시예에 따르면, 애플리케이션들(410)은 프로그램에서 정의된 기능들을 실행하는 프로그램들이다. 객체 지향 프로그래밍 언어들(예를 들어, Objective-C, Java, 또는 C++) 또는 절차적 프로그래밍 언어들(예를 들어, C 또는 어셈블리어)과 같은 다양한 방식으로 구조화된 애플리케이션들(410) 중 하나 이상을 생성하기 위해 다양한 프로그래밍 언어들이 채택될 수 있다. 특정 예에서, 제3자 애플리케이션(466)(예를 들어, 특정한 플랫폼의 판매자(vendor) 이외의 엔티티에 의해 ANDROIDTM 또는 IOSTM 소프트웨어 개발 키트(software development kit)(SDK)를 이용하여 개발된 애플리케이션)은 IOSTM, ANDROIDTM, WINDOWS®Phone, 또는 또 다른 모바일 운영 체제와 같은 모바일 운영 체제상에서 실행되는 모바일 소프트웨어일 수 있다. 이 예에서, 제3자 애플리케이션(466)은 본 명세서에 설명된 기능성을 용이하게 하기 위해 운영 체제(404)에 의해 제공된 API 호출들(412)을 호출할 수 있다.
전술한 바와 같이, 일부 실시예들은 특히 메시징 애플리케이션(462)을 포함할 수 있다. 특정 실시예들에서, 이것은 서버 시스템(102)과 같은 서버 시스템과의 통신을 관리하도록 동작하는 독립형 애플리케이션일 수 있다. 다른 실시예들에서, 이 기능성은 미디어 콘텐츠 편집 애플리케이션(467)과 같은 또 다른 애플리케이션과 통합될 수 있다. 메시징 애플리케이션(462)은 다양한 미디어 콘텐츠 아이템들을 요청하고 디스플레이할 수 있으며, 사용자가 터치 인터페이스, 키보드, 또는 머신(500)의 카메라 디바이스를 이용하여 미디어 콘텐츠 아이템들에 관련된 데이터를 입력하는 능력, I/O 컴포넌트들(550)을 통한 서버 시스템과의 통신, 및 메모리(530)에서의 미디어 콘텐츠 아이템들의 수신 및 저장을 제공할 수 있다. 미디어 콘텐츠 아이템들과 연관된 미디어 콘텐츠 아이템들 및 사용자 입력들의 프리젠테이션은 상이한 프레임워크들(408), 라이브러리(406) 요소들, 또는 머신(500)상에서 동작하는 운영 체제(404) 요소들을 이용하여 메시징 애플리케이션(462)에 의해 관리될 수 있다.
도 5는, 머신 판독가능 매체(예를 들면, 머신 판독 가능 저장 매체)로부터의 명령어들을 판독하고 본 명세서에서 설명된 방법론들 중 어느 하나 이상을 실행할 수 있는, 일부 실시예에 따른, 머신(500)의 컴포넌트들을 예시하는 블록도이다. 구체적으로, 도 5는 머신(500)으로 하여금 본 명세서에서 설명된 방법론들 중 어느 하나 이상의 것을 수행하도록 야기하기 위한 명령어들(516)[예를 들어, 소프트웨어, 프로그램, 애플리케이션(410), 애플릿, 앱, 또는 다른 실행 가능한 코드]이 그 내에서 실행될 수 있는, 컴퓨터 시스템의 예시적인 형태로 된 머신(500)의 개략 표현을 도시한다. 대안적인 실시예에서, 머신(500)은 독립형 디바이스로서 동작하거나 다른 머신들에 결합(예를 들어, 네트워크화)될 수 있다. 네트워크화된 배치에서, 머신(500)은 서버 머신(102, 120, 122, 124) 등의 용량에서, 또는 서버-클라이언트 네트워크 환경에서의 클라이언트 디바이스(110)에서, 또는 피어-투-피어(또는 분산형) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신(500)은 서버 컴퓨터, 클라이언트 컴퓨터, 퍼스널 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 개인용 디지털 정보기기(PDA), 엔터테인먼트 미디어 시스템, 셀룰러 전화, 스마트폰, 모바일 디바이스, 웨어러블 디바이스(예를 들어, 스마트 시계), 스마트 홈 디바이스(예를 들어, 스마트 어플라이언스), 다른 스마트 디바이스들, 웹 어플라이언스, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 머신(500)에 의해 취해질 작용들을 지정하는 명령어들(516)을 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 머신일 수 있는데, 이것들에만 제한되지는 않는다. 또한, 하나의 머신(500)만이 예시되어 있지만, 용어 "머신"은 본 명세서에서 설명된 방법론들 중 어느 하나 이상을 실행하기 위해 개별적으로 또는 공동으로 명령어들(516)을 실행하는 머신들(500)의 컬렉션을 포함하도록 취해질 수 있다.
다양한 실시예들에서, 머신(500)은 버스(502)를 통해 서로 통신하도록 구성될 수 있는, 프로세서들(510), 메모리(530), 및 I/O 컴포넌트들(550)을 포함한다. 예시적인 실시예에서, 프로세서(510)(예를 들어, CPU(central processing unit), RISC(Reduced Instruction Set Computing) 프로세서, CISC(Complex Instruction Set Computing) 프로세서, GPU(Graphics Processing Unit), DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), RFIC(radio-frequency integrated circuit), 또 다른 프로세서, 또는 이들의 임의의 적절한 조합)는, 예를 들어, 명령어들(516)을 실행할 수 있는 프로세서(512) 및 프로세서(514)를 포함한다. "프로세서"라는 용어는 명령어들(516)을 동시 발생적으로 실행할 수 있는 두 개 이상의 독립적인 프로세서(512, 514)("코어"라고도 지칭됨)를 포함할 수 있는 멀티코어 프로세서들(510)을 포함하도록 의도된다. 도 5는 다중 프로세서(510)를 도시하지만, 머신(500)은 단일 코어를 갖는 단일 프로세서(510), 다중 코어를 갖는 단일 프로세서(510)(멀티코어 프로세서(510)), 단일 코어를 갖는 다중 프로세서(512, 514), 다중 코어를 갖는 다중 프로세서(510, 512), 또는 이들의 임의의 조합을 포함할 수 있다.
메모리(530)는, 일부 실시예들에 따르면, 버스(502)를 통해 프로세서들(510)에 액세스 가능한, 메인 메모리(532), 정적 메모리(534), 및 저장 유닛(536)을 포함한다. 저장 유닛(536)은, 본 명세서에 설명된 방법론들 또는 기능들 중 어느 하나 이상을 구체화하는 명령어들(516)이 저장되어 있는 머신 판독가능 저장 매체(538)를 포함할 수 있다. 명령어들(516)은 또한, 머신(500)에 의한 그 실행 동안에, 완전히 또는 적어도 부분적으로, 메인 메모리(532) 내에, 정적 메모리(534) 내에, 프로세서들(510) 중 적어도 하나 내에(예를 들어, 프로세서의 캐시 메모리 내에), 또는 이들의 임의의 적절한 조합 내에 상주할 수 있다. 따라서, 다양한 실시예들에서, 메인 메모리(532), 정적 메모리(534), 및 프로세서들(510)은 머신 판독가능 매체(538)로 간주된다.
본 명세서에 사용될 때, "메모리"라는 용어는 데이터를 일시적으로 또는 영구적으로 저장할 수 있는 머신 판독가능 저장 매체(538)를 지칭하며, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 버퍼 메모리, 플래시 메모리, 및 캐시 메모리를 포함하는 것으로 취해질 수 있는데, 이것에만 한정되지는 않는다. 예시적인 실시예에서는 머신 판독가능 저장 매체(538)가 단일 매체인 것으로 도시되지만, "머신 판독가능 저장 매체"라는 용어는 명령어들(516)을 저장할 수 있는 단일 매체 또는 다중 매체(예를 들어, 중앙 집중식 또는 분산형 데이터베이스, 또는 연관된 캐시들 및 서버들)를 포함하는 것으로 취해져야 한다. "머신 판독가능 저장 매체(machine-readable storage medium)"라는 용어는, 명령어들(516)이, 머신(500)의 하나 이상의 프로세서(예를 들어, 프로세서들(510))에 의해 실행될 때, 머신(500)으로 하여금 본 명세서에 설명되는 방법론들 중 어느 하나 이상을 수행하도록, 머신(예를 들어, 머신(500))에 의한 실행을 위한 명령어들(예를 들어, 명령어들(516))을 저장할 수 있는 임의의 매체, 또는 다중 매체의 조합을 포함하는 것으로 또한 취해질 것이다. 따라서, "머신 판독가능 저장 매체"는 단일 저장 장치 또는 디바이스뿐만 아니라, 다중의 저장 장치 또는 디바이스를 포함하는 "클라우드 기반" 저장 시스템 또는 저장 네트워크를 지칭한다. 따라서 "머신 판독가능 저장 매체"라는 용어는, 이것에만 제한되는 것은 아니지만, 솔리드 스테이트 메모리(예를 들어, 플래시 메모리), 광학 매체, 자기 매체, 다른 비휘발성 메모리(예를 들어, EPROM(Erasable Programmable Read-Only Memory)), 또는 이들의 임의의 적합한 조합의 형태인 하나 이상의 데이터 레포지토리를 포함하는 것으로 취해질 것이다. "머신 판독가능 매체"라는 용어는 머신 판독가능 저장 매체 및 신호들과 같은 전송 매체를 포함한다.
I/O 컴포넌트들(550)은 입력을 수신하고, 출력을 제공하고, 출력을 생성하고, 정보를 전송하고, 정보를 교환하고, 측정들을 캡처하는 등을 하는 광범위하게 다양한 컴포넌트들을 포함한다. 일반적으로, I/O 컴포넌트들(550)은 도 5에 도시되지 않은 많은 다른 컴포넌트들을 포함할 수 있다는 것을 알 것이다. I/O 컴포넌트들(550)은 단지 다음의 논의를 단순화하기 위한 기능성에 따라 그룹화되며, 그룹화는 결코 제한적인 것이 아니다. 다양한 예시적인 실시예에서, I/O 컴포넌트들(550)은 출력 컴포넌트들(552) 및 입력 컴포넌트들(554)을 포함한다. 출력 컴포넌트들(552)은 시각 컴포넌트들(예를 들어, PDP(plasma display panel), LED(light emitting diode) 디스플레이, LCD(liquid crystal display), 프로젝터, 또는 CRT(cathode ray tube)와 같은 디스플레이), 청각 컴포넌트들(예를 들어, 스피커들), 햅틱 컴포넌트들(예를 들어, 진동 모터), 다른 신호 생성기들 등을 포함한다. 입력 컴포넌트(554)들은, 알파뉴메릭 입력 컴포넌트들(예를 들어, 키보드, 알파뉴메릭 입력을 수신하도록 구성된 터치 스크린, 사진 광학 키보드, 또는 기타의 영숫자 입력 컴포넌트들), 포인트 기반 입력 컴포넌트들(예를 들어, 마우스, 터치패드, 트랙볼, 조이스틱, 움직임 센서, 또는 다른 포인팅 도구), 촉각 입력 컴포넌트들(예를 들어, 물리적 버튼, 터치 또는 터치 제스처의 위치 및 힘을 제공하는 터치 스크린, 또는 기타의 촉각 입력 컴포넌트들), 오디오 입력 컴포넌트들(예를 들어, 마이크로폰) 등을 포함한다.
일부 추가의 예시적인 실시예들에서, I/O 컴포넌트들(550)은, 넓은 범위의 다른 컴포넌트들 중에서도, 바이오메트릭 컴포넌트들(556), 움직임 컴포넌트들(558), 환경 컴포넌트들(560), 또는 위치 컴포넌트들(562)을 포함한다. 예를 들어, 바이오메트릭 컴포넌트들(556)은 표현들(예를 들어, 손 표현들, 얼굴 표정들, 발성 표현들, 신체 제스처들, 또는 시선 추적)을 검출하고, 생체신호들(예를 들어, 혈압, 심박수, 체온, 땀, 또는 뇌파들)을 측정하고, 사람을 식별(예를 들어, 음성 식별, 망막 식별, 얼굴 식별, 지문 식별, 또는 뇌전도(electroencephalogram) 기반 식별)하는 등을 위한 컴포넌트들을 포함한다. 움직임 컴포넌트(558)는 가속도 센서 컴포넌트(예를 들어, 가속도계), 중력 센서 컴포넌트, 회전 센서 컴포넌트(예를 들어, 자이로스코프) 등을 포함한다. 환경 컴포넌트들(560)은, 예를 들어 조명 센서 컴포넌트들(예를 들어, 광도계), 온도 센서 컴포넌트들(예를 들어, 주위 온도를 검출하는 하나 이상의 온도계), 습도 센서 컴포넌트들, 압력 센서 컴포넌트들(예를 들어, 기압계), 음향 센서 컴포넌트들(예를 들어, 배경 잡음을 검출하는 하나 이상의 마이크로폰), 근접 센서 컴포넌트들(예를 들어, 근처의 물체를 검출하는 적외선 센서), 가스 센서 컴포넌트들(예를 들어, 머신 후각 검출 센서, 안전을 위해 유해 가스의 농도를 검출하거나 대기 중의 오염 물질을 측정하기 위한 가스 검출 센서들), 또는 주변의 물리적 환경에 대응하는 표시들, 측정치들, 또는 신호들을 제공할 수 있는 다른 컴포넌트들을 포함한다. 위치 컴포넌트들(562)은 위치 센서 컴포넌트들(예를 들어, 글로벌 포지셔닝 시스템(GPS) 수신기 컴포넌트), 고도 센서 컴포넌트들(고도계들 또는 고도가 그로부터 도출될 수 있는 기압을 검출하는 기압계들), 배향 센서 컴포넌트들(예를 들어, 자력계들) 등을 포함한다.
통신은 다양한 기술을 이용하여 구현될 수 있다. I/O 컴포넌트들(550)은, 제각기, 커플링(582) 및 커플링(572)을 통해 머신(500)을 네트워크(580) 또는 디바이스들(570)에 결합하도록 동작가능한 통신 컴포넌트들(564)을 포함할 수 있다. 예를 들어, 통신 컴포넌트들(564)은 네트워크(580)와 인터페이스하기 위한 네트워크 인터페이스 컴포넌트 또는 또 다른 적절한 디바이스를 포함한다. 추가의 예들에서, 통신 컴포넌트들(564)은 유선 통신 컴포넌트들, 무선 통신 컴포넌트들, 셀룰러 통신 컴포넌트들, NFC(Near Field Communication) 컴포넌트들, BLUETOOTH® 컴포넌트들(예를 들어, BLUETOOTH® Low Energy), WI-FI® 컴포넌트들, 및 다른 양태들을 통해 통신을 제공하는 다른 통신 컴포넌트들을 포함한다. 디바이스(570)는, 또 다른 머신(500) 또는 임의의 다양한 주변 디바이스(예를 들어, USB(Universal Serial Bus)를 통해 결합된 주변 디바이스)일 수 있다.
또한, 일부 실시예들에서, 통신 컴포넌트들(564)은 식별자들을 검출하거나, 식별자들을 검출하도록 동작가능한 컴포넌트들을 포함한다. 예를 들어, 통신 컴포넌트들(564)은 RFID(Radio Frequency Identification) 태그 판독기 컴포넌트들, NFC 스마트 태그 검출 컴포넌트들, 광학 판독기 컴포넌트들[예를 들어, UPC(Universal Product Code) 바코드와 같은 1차원 바코드들, QR(Quick Response) 코드와 같은 다차원 바코드들, Aztec Code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, UCC RSS(Uniform Commercial Code Reduced Space Symbology)-2D 바코드들, 및 다른 광학 코드들을 검출하는 광학 센서], 청각 검출 컴포넌트들(예를 들어, 태그된 오디오 신호들을 식별하는 마이크로폰들), 또는 이들의 임의의 적합한 조합을 포함한다. 게다가, 인터넷 프로토콜(IP) 지오-로케이션(geo-location)을 통한 로케이션, WI-FI® 신호 삼각측량을 통한 로케이션, 특정한 로케이션을 표시할 수 있는 BLUETOOTH® 또는 NFC 비컨 신호를 검출하는 것을 통한 로케이션 등과 같은 다양한 정보는 통신 컴포넌트들(564)을 통해 도출될 수 있다.
다양한 예시적 실시예들에서, 네트워크(580)의 하나 이상의 부분은 애드 혹(ad hoc) 네트워크, 인트라넷(intranet), 익스트라넷(extranet), 가상 사설 네트워크(virtual private network)(VPN), 지역 네트워크(local area network)(LAN), 무선 LAN(wireless LAN)(WLAN), 광역 네트워크(wide area network)(WAN), 무선 WAN(wireless WAN)(WWAN), 대도시 영역 네트워크(metropolitan area network)(MAN), 인터넷, 인터넷의 부분, 공공 교환 전화 네트워크(public switched telephone network)(PSTN)의 부분, POTS(plain old telephone service) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, WI-FI® 네트워크, 또 다른 유형의 네트워크, 또는 2개 이상의 이러한 네트워크의 조합일 수 있다. 예를 들어, 네트워크(580) 또는 네트워크(580)의 일부는 무선 또는 셀룰러 네트워크를 포함할 수 있고, 커플링(582)은 CDMA(Code Division Multiple Access) 접속, GSM(Global System for Mobile communications) 접속, 또는 또 다른 타입의 셀룰러 또는 무선 커플링을 포함할 수 있다. 이 예에서, 결합(582)은 1xRTT(Single Carrier Radio Transmission Technology), EVDO(Evolution-Data Optimized) 기술, GPRS(General Packet Radio Service) 기술, EDGE(Enhanced Data rates for GSM Evolution) 기술, 3G를 포함하는 3GPP(third Generation Partnership Project), 4G(fourth generation wireless) 네트워크들, UMTS(Universal Mobile Telecommunications System), HSPA(High Speed Packet Access), WiMAX(Worldwide Interoperability for Microwave Access), LTE(Long Term Evolution) 표준, 다양한 표준 설정 기구들에 의해 정의된 다른 것들, 다른 장거리 프로토콜들, 또는 다른 데이터 전송 기술과 같은 다양한 타입의 데이터 전송 기술 중 임의의 것을 구현할 수 있다.
예시적인 실시예들에서, 명령어들(516)은 네트워크 인터페이스 디바이스[예를 들어, 통신 컴포넌트들(564)에 포함된 네트워크 인터페이스 컴포넌트]를 통한 전송 매체를 사용하여, 그리고 다수의 잘 알려진 전송 프로토콜[예를 들어, HTTP(Hypertext Transfer Protocol)] 중 임의의 것을 사용하여 네트워크(580)를 통해 송신되거나 수신된다. 유사하게, 다른 예시적인 실시예들에서, 명령어들(516)은 디바이스들(570)에 대한 커플링(572)(예를 들어, 피어-투-피어 커플링)을 통해 전송 매체를 사용하여 송신되거나 수신된다. "전송 매체(transmission medium)"라는 용어는, 머신(500)에 의한 실행을 위해 명령어들(516)을 저장, 인코딩, 또는 운반할 수 있는 임의의 무형의 매체를 포함하는 것으로 취해져야 하고, 디지털 또는 아날로그 통신 신호들 또는 이러한 소프트웨어의 통신을 용이하게 하는 다른 무형의 매체를 포함한다.
또한, 머신 판독가능 매체(538)는, 이것이 전파 신호(propagating signal)를 구체화하지 않는다는 점에서 비일시적이다(다시 말해서, 임의의 일시적 신호를 갖지 않는다). 그러나, 머신 판독가능 매체(538)를 "비일시적"으로 라벨링하는 것은 매체가 이동할 수 없다는 것을 의미하는 것으로 해석해서는 안 된다; 매체(538)는 하나의 물리적 위치로부터 또 다른 위치로 전송가능한 것으로 간주되어야 한다. 추가적으로, 머신 판독가능 매체(538)는 유형(tangible)이므로, 매체(538)는 머신 판독가능 디바이스인 것으로 고려될 수 있다. 전송 매체는 머신 판독가능 매체의 한 실시예이다.
본 명세서 전체에 걸쳐, 복수형 인스턴스(plural instance)는 단일 인스턴스로서 설명된 컴포넌트들, 동작들 또는 구조들을 구현할 수 있다. 하나 이상의 방법의 개별적인 동작들이 별개의 동작들로서 예시 및 설명되어 있지만, 개별적인 동작들 중 하나 이상은 동시에 수행될 수 있으며, 동작들이 예시된 순서로 수행되는 것이 요구되지도 않는다. 예시적인 구성들에서 별개의 컴포넌트들로서 제시된 구조들 및 기능성은 조합된 구조 또는 컴포넌트로서 구현될 수 있다. 유사하게, 단일 컴포넌트로 제시된 구조 및 기능성은 별개의 컴포넌트들로서 구현될 수 있다. 이들 및 다른 변형, 수정, 부가, 및 개선은 본원 청구 대상의 범위 내에 든다.
발명 청구 대상의 개요가 특정 예시적인 실시예들을 참조하여 설명되었지만, 본 개시내용의 실시예들의 더 넓은 범위로부터 이탈하지 않으면서, 다양한 수정들 및 변경들이 이 실시예들에 대해 이뤄질 수 있다.
본 명세서에서 예시된 실시예들은 본 기술분야의 통상의 기술자들이 개시된 교시사항들을 실시하는 것을 가능하게할 정도로 충분히 상세하게 설명되었다. 다른 실시예들이 이용될 수도 있고 그로부터 유도될 수 있어서, 구조적 및 논리적 치환들 및 변경들은 이 개시내용의 범위로부터 이탈하지 않으면서 이뤄질 수 있다. 그러므로, 상세한 설명은 제한적인 의미로 취해진 것이 아니고, 다양한 실시예들의 범위는 이러한 청구항들에 부여되는 등가물들의 전체 범위와 함께, 오직 첨부된 청구항들에 의해 정의된다.
본 명세서에서 이용된 바와 같이, 용어 "또는"은 포괄적 또는 배타적 의미 중 어느 하나로 해석될 수 있다. 더욱이, 복수의 인스턴스는 본 명세서에서 설명된 리소스들, 동작들, 또는 구조들에 대하여 단일 인스턴스로서 제공될 수 있다. 추가적으로, 다양한 리소스, 동작, 모듈, 엔진, 및 데이터 스토어 사이의 경계는 다소 임의적이고, 특정한 동작들은 구체적이고 예시적인 구성들의 맥락에서 예시된다. 기능성의 다른 할당들이 구상되고, 본 개시내용의 다양한 실시예들의 범위 내에 속할 수 있다. 일반적으로, 예시적인 구성들에서 별도의 리소스들로서 제시된 구조들 및 기능성은 조합된 구조 또는 리소스로서 구현될 수 있다. 유사하게, 단일 리소스로서 제시된 구조들 및 기능성은 별도의 리소스들로서 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 첨부된 청구항들에 의해 표현되는 본 개시내용의 실시예들의 범위 내에 있다. 그에 따라, 본 명세서 및 첨부 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 한다.

Claims (21)

  1. 서버 컴퓨터에서의 방법으로서:
    복수의 미디어 콘텐츠 아이템을 처리하기 위한 명령들을 위한, 제1 디바이스로부터의 요청을 수신하는 단계 - 상기 요청은 상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 포함함 -;
    상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 사용하여, 상기 제1 디바이스에 의해 처리될 상기 복수의 미디어 콘텐츠 아이템의 서브세트를 결정하는 단계;
    상기 제1 디바이스에 의해 상기 복수의 미디어 콘텐츠 아이템의 서브세트를 처리하기 위한 명령들을 생성하는 단계;
    상기 명령들을 상기 제1 디바이스에 송신하는 단계;
    상기 복수의 미디어 콘텐츠 아이템을 제2 디바이스와 공유하라는, 상기 제1 디바이스로부터의 요청을 수신하는 단계 - 상기 요청은 공유될 상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자, 및 상기 복수의 미디어 콘텐츠 아이템의 서브세트에 대한 처리된 미디어 콘텐츠 아이템들을 포함함 -;
    상기 복수의 미디어 콘텐츠 아이템에 대한 처리된 미디어 콘텐츠 아이템들을 포함하는 메시지를 생성하는 단계; 및
    상기 생성된 메시지를 상기 제2 디바이스에 송신하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 복수의 미디어 콘텐츠 아이템을 처리하기 위한 명령들을 위한, 제1 디바이스로부터의 요청은 취급되지 않은 미디어 콘텐츠 아이템들을 추가로 포함하고, 상기 방법은:
    상기 취급되지 않은 미디어 콘텐츠 아이템들을 하나 이상의 데이터 저장소에 저장하는 단계를 추가로 포함하고; 및
    상기 메시지를 생성하는 단계는 상기 취급되지 않은 미디어 콘텐츠 아이템들에 대한 처리된 미디어 콘텐츠 아이템들을 포함하는 메시지를 생성하는 단계를 추가로 포함하는 방법.
  3. 제2항에 있어서,
    상기 취급되지 않은 미디어 콘텐츠 아이템들을 처리하는 단계를 추가로 포함하는 방법.
  4. 제3항에 있어서, 상기 취급되지 않은 미디어 콘텐츠 아이템들은 비디오 콘텐츠를 포함하고, 상기 취급되지 않은 미디어 콘텐츠 아이템들을 처리하는 단계는 상기 비디오 콘텐츠를 트랜스코딩하는 단계를 포함하는, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 사용하여, 상기 제1 디바이스에 의해 처리될 상기 복수의 미디어 콘텐츠 아이템의 서브세트를 결정하는 단계는 하나 이상의 데이터 저장소에 액세스하여 상기 복수의 미디어 콘텐츠 아이템의 서브세트의 각각의 미디어 콘텐츠 아이템이 상기 하나 이상의 데이터 저장소에 저장되지 않은 것을 결정하는 단계를 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    하나 이상의 데이터 저장소에 액세스하여, 상기 복수의 미디어 콘텐츠 아이템의 제2 서브세트의 각각의 미디어 콘텐츠 아이템이 상기 하나 이상의 데이터 저장소에 저장되어 있는 것을 결정함으로써, 상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 사용하여, 상기 제1 디바이스에 의해 처리되지 않을 상기 복수의 미디어 콘텐츠 아이템의 제2 서브세트를 결정하는 단계를 추가로 포함하는 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 복수의 미디어 콘텐츠 아이템을 제2 디바이스와 공유하라는, 상기 제1 디바이스로부터의 요청은 취급되지 않은 미디어 콘텐츠 아이템들을 포함하고, 상기 방법은:
    상기 취급되지 않은 미디어 콘텐츠 아이템들을 처리하는 단계; 및
    상기 취급되지 않은 미디어 콘텐츠 아이템들 및 상기 처리되고 취급되지 않은 미디어 콘텐츠 아이템들을 하나 이상의 데이터 저장소에 저장하는 단계를 추가로 포함하는 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 복수의 미디어 콘텐츠 아이템은 오디오, 비디오, 및 이미지들을 포함하는 그룹으로부터의 적어도 하나를 포함하는, 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 복수의 미디어 콘텐츠 아이템의 서브세트에 대해 상기 제1 디바이스로부터 수신되는 상기 처리된 미디어 콘텐츠 아이템들을 하나 이상의 데이터 저장소에 저장하는 단계를 추가로 포함하는 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 메시지를 생성하는 단계는:
    하나 이상의 데이터 저장소에 액세스하여 상기 복수의 미디어 콘텐츠 아이템의 각각의 미디어 콘텐츠 아이템을 검색하는 단계;
    아직 처리되지 않은 미디어 콘텐츠 아이템들을 처리하는 단계; 및
    상기 복수의 미디어 콘텐츠 아이템에 대해 상기 처리된 미디어 콘텐츠 아이템들을 포함하는 메시지를 준비하는 단계를 포함하는, 방법.
  11. 서버 컴퓨터로서:
    프로세서; 및
    상기 프로세서와 결합된 컴퓨터 판독가능 매체를 포함하고, 상기 컴퓨터 판독가능 매체는 그 상에 저장된 명령어들을 포함하고, 상기 명령어들은, 상기 프로세서에 의해 실행가능하여, 컴퓨팅 디바이스로 하여금:
    복수의 미디어 콘텐츠 아이템을 처리하기 위한 명령들을 위한, 제1 디바이스로부터의 요청을 수신하는 것 - 상기 요청은 상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 포함함 -;
    상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 사용하여, 상기 제1 디바이스에 의해 처리될 상기 복수의 미디어 콘텐츠 아이템의 서브세트를 결정하는 것;
    상기 제1 디바이스에 의해 상기 복수의 미디어 콘텐츠 아이템의 서브세트를 처리하기 위한 명령들을 생성하는 것;
    상기 명령들을 상기 제1 디바이스에 송신하는 것;
    상기 복수의 미디어 콘텐츠 아이템을 제2 디바이스와 공유하라는, 상기 제1 디바이스로부터의 요청을 수신하는 것 - 상기 요청은 공유될 상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자, 및 상기 복수의 미디어 콘텐츠 아이템의 서브세트에 대한 처리된 미디어 콘텐츠 아이템들을 포함함 -;
    상기 복수의 미디어 콘텐츠 아이템에 대한 처리된 미디어 콘텐츠 아이템들을 포함하는 메시지를 생성하는 것; 및
    상기 생성된 메시지를 상기 제2 디바이스에 송신하는 것을 포함하는 동작들을 수행하도록 야기하는, 서버 컴퓨터.
  12. 제11항에 있어서, 상기 복수의 미디어 콘텐츠 아이템을 처리하기 위한 명령들을 위한, 상기 제1 디바이스로부터의 요청은 취급되지 않은 미디어 콘텐츠 아이템들을 추가로 포함하고, 상기 동작들은:
    상기 취급되지 않은 미디어 콘텐츠 아이템들을 하나 이상의 데이터 저장소에 저장하는 것을 추가로 포함하고;
    상기 메시지를 생성하는 것은 상기 취급되지 않은 미디어 콘텐츠 아이템들에 대한 처리된 미디어 콘텐츠 아이템들을 포함하는 메시지를 생성하는 것을 추가로 포함하는, 서버 컴퓨터.
  13. 제12항에 있어서, 상기 동작들은 상기 취급되지 않은 미디어 콘텐츠 아이템들을 처리하는 것을 추가로 포함하고, 상기 취급되지 않은 미디어 콘텐츠 아이템들은 비디오 콘텐츠를 포함하고, 상기 취급되지 않은 미디어 콘텐츠 아이템들을 처리하는 것은 상기 비디오 콘텐츠를 트랜스코딩하는 것을 포함하는, 서버 컴퓨터.
  14. 제11항 내지 제13항 중 어느 한 항에 있어서, 상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 사용하여, 상기 제1 디바이스에 의해 처리될 상기 복수의 미디어 콘텐츠 아이템의 서브세트를 결정하는 것은 하나 이상의 데이터 저장소에 액세스하여 상기 복수의 미디어 콘텐츠 아이템의 서브세트의 각각의 미디어 콘텐츠 아이템이 상기 하나 이상의 데이터 저장소에 저장되지 않은 것을 결정하는 것을 포함하는, 서버 컴퓨터.
  15. 제11항 내지 제14항 중 어느 한 항에 있어서, 상기 복수의 미디어 콘텐츠 아이템을 제2 디바이스와 공유하라는 상기 제1 디바이스로부터의 요청은 취급되지 않은 미디어 콘텐츠 아이템들을 포함하고, 상기 동작들은:
    상기 취급되지 않은 미디어 콘텐츠 아이템들을 처리하는 것; 및
    상기 취급되지 않은 미디어 콘텐츠 아이템들 및 상기 처리되고 취급되지 않은 미디어 콘텐츠 아이템들을 하나 이상의 데이터 저장소에 저장하는 것을 추가로 포함하는, 서버 컴퓨터.
  16. 제11항 내지 제15항 중 어느 한 항에 있어서, 상기 복수의 미디어 콘텐츠 아이템은 오디오, 비디오, 및 이미지들을 포함하는 그룹으로부터의 적어도 하나를 포함하는, 서버 컴퓨터.
  17. 제11항 내지 제16항 중 어느 한 항에 있어서, 상기 동작들은:
    상기 복수의 미디어 콘텐츠 아이템의 서브세트에 대해 상기 제1 디바이스로부터 수신되는 상기 처리된 미디어 콘텐츠 아이템들을 하나 이상의 데이터 저장소에 저장하는 것을 추가로 포함하는, 서버 컴퓨터.
  18. 제11항 내지 제17항 중 어느 한 항에 있어서, 상기 메시지를 생성하는 것은:
    하나 이상의 데이터 저장소에 액세스하여 상기 복수의 미디어 콘텐츠 아이템의 각각의 미디어 콘텐츠 아이템을 검색하는 것;
    아직 처리되지 않은 미디어 콘텐츠 아이템들을 처리하는 것; 및
    상기 복수의 미디어 콘텐츠 아이템에 대해 상기 처리된 미디어 콘텐츠 아이템들을 포함하는 메시지를 준비하는 것을 포함하는, 서버 컴퓨터.
  19. 명령어들을 저장한 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은 적어도 하나의 프로세서에 의해 실행 가능하여 컴퓨팅 디바이스로 하여금:
    복수의 미디어 콘텐츠 아이템을 처리하기 위한 명령들을 위한, 제1 디바이스로부터의 요청을 수신하는 것 - 상기 요청은 상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 포함함 -;
    상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자를 사용하여, 상기 제1 디바이스에 의해 처리될 상기 복수의 미디어 콘텐츠 아이템의 서브세트를 결정하는 것;
    상기 제1 디바이스에 의해 상기 복수의 미디어 콘텐츠 아이템의 서브세트를 처리하기 위한 명령들을 생성하는 것;
    상기 명령들을 상기 제1 디바이스에 송신하는 것;
    상기 복수의 미디어 콘텐츠 아이템을 제2 디바이스와 공유하라는, 상기 제1 디바이스로부터 요청을 수신하는 것 - 상기 요청은 공유될 상기 복수의 미디어 콘텐츠 아이템 각각에 대한 고유 식별자, 및 상기 복수의 미디어 콘텐츠 아이템의 서브세트에 대한 처리된 미디어 콘텐츠 아이템들을 포함함 -;
    상기 복수의 미디어 콘텐츠 아이템에 대한 처리된 미디어 콘텐츠 아이템들을 포함하는 메시지를 생성하는 것; 및
    상기 생성된 메시지를 상기 제2 디바이스에 송신하는 것을 포함하는 동작들을 수행하도록 야기하는, 컴퓨터 판독가능 매체.
  20. 제19항에 있어서, 상기 복수의 미디어 콘텐츠 아이템을 제2 디바이스와 공유하라는, 상기 제1 디바이스로부터의 요청은 취급되지 않은 미디어 콘텐츠 아이템들을 포함하고, 상기 동작들은:
    상기 취급되지 않은 미디어 콘텐츠 아이템들을 처리하는 것; 및
    상기 취급되지 않은 미디어 콘텐츠 아이템들 및 상기 처리되고 취급되지 않은 미디어 콘텐츠 아이템들을 하나 이상의 데이터 저장소에 저장하는 것을 추가로 포함하는, 컴퓨터 판독가능 매체.
  21. 컴퓨팅 디바이스로 하여금 제1항 내지 제10항 중 어느 한 항의 방법을 수행하도록 야기하기 위해 적어도 하나의 프로세서에 의해 실행가능한 명령어들을 운반하는 컴퓨터 판독가능 매체.
KR1020197018277A 2016-11-28 2017-11-13 메시징 시스템에서 미디어 콘텐츠를 처리하기 KR102206344B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217001547A KR102328073B1 (ko) 2016-11-28 2017-11-13 메시징 시스템에서 미디어 콘텐츠를 처리하기

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/362,287 2016-11-28
US15/362,287 US10333875B2 (en) 2016-11-28 2016-11-28 Processing media content in a messaging system
PCT/US2017/061338 WO2018097985A1 (en) 2016-11-28 2017-11-13 Processing media content in a messaging system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217001547A Division KR102328073B1 (ko) 2016-11-28 2017-11-13 메시징 시스템에서 미디어 콘텐츠를 처리하기

Publications (2)

Publication Number Publication Date
KR20190086004A true KR20190086004A (ko) 2019-07-19
KR102206344B1 KR102206344B1 (ko) 2021-01-22

Family

ID=60480458

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020217037119A KR102384579B1 (ko) 2016-11-28 2017-11-13 메시징 시스템에서 미디어 콘텐츠를 처리하기
KR1020197018277A KR102206344B1 (ko) 2016-11-28 2017-11-13 메시징 시스템에서 미디어 콘텐츠를 처리하기
KR1020217001547A KR102328073B1 (ko) 2016-11-28 2017-11-13 메시징 시스템에서 미디어 콘텐츠를 처리하기

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020217037119A KR102384579B1 (ko) 2016-11-28 2017-11-13 메시징 시스템에서 미디어 콘텐츠를 처리하기

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217001547A KR102328073B1 (ko) 2016-11-28 2017-11-13 메시징 시스템에서 미디어 콘텐츠를 처리하기

Country Status (5)

Country Link
US (4) US10333875B2 (ko)
EP (3) EP4137967B1 (ko)
KR (3) KR102384579B1 (ko)
CN (1) CN109997129B (ko)
WO (1) WO2018097985A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10333875B2 (en) 2016-11-28 2019-06-25 Snap Inc. Processing media content in a messaging system
US10242503B2 (en) 2017-01-09 2019-03-26 Snap Inc. Surface aware lens
US11176737B2 (en) 2018-11-27 2021-11-16 Snap Inc. Textured mesh building
US11189098B2 (en) 2019-06-28 2021-11-30 Snap Inc. 3D object camera customization system
US11232646B2 (en) 2019-09-06 2022-01-25 Snap Inc. Context-based virtual object rendering
US20210092199A1 (en) * 2019-09-24 2021-03-25 International Business Machines Corporation Cachability of single page applications
CN111104556B (zh) * 2019-11-19 2023-09-15 泰康保险集团股份有限公司 一种业务处理方法和装置
US11263817B1 (en) 2019-12-19 2022-03-01 Snap Inc. 3D captions with face tracking
US11227442B1 (en) * 2019-12-19 2022-01-18 Snap Inc. 3D captions with semantic graphical elements
US11265281B1 (en) * 2020-01-28 2022-03-01 Snap Inc. Message deletion policy selection
US20220100351A1 (en) * 2020-09-30 2022-03-31 Snap Inc. Media content transmission and management
US11112945B1 (en) 2020-09-30 2021-09-07 Snap Inc. Content detection and transmission in response to receiving user interactions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110131272A1 (en) * 2001-05-11 2011-06-02 Clear Channel Management Services, Inc. Technique of Providing Targeted Media Items
US20110276637A1 (en) * 2010-05-06 2011-11-10 Microsoft Corporation Techniques to share media files through messaging
US20130325952A1 (en) * 2012-06-05 2013-12-05 Cellco Partnership D/B/A Verizon Wireless Sharing information

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978773A (en) 1995-06-20 1999-11-02 Neomedia Technologies, Inc. System and method for using an ordinary article of commerce to access a remote computer
DE59708043D1 (de) 1996-06-17 2002-10-02 Siemens Ag Kommunikationssystem und Verfahren zur Aufnahme und Verwaltung digitaler Bilder
US7173651B1 (en) 1998-06-02 2007-02-06 Knowles Andrew T Apparatus and system for prompt digital photo delivery and archival
US7159233B2 (en) * 2000-01-28 2007-01-02 Sedna Patent Services, Llc Method and apparatus for preprocessing and postprocessing content in an interactive information distribution system
US6505123B1 (en) 2000-07-24 2003-01-07 Weatherbank, Inc. Interactive weather advisory system
US20100098702A1 (en) 2008-09-16 2010-04-22 Longgui Wang Method of treating androgen independent prostate cancer
US7411493B2 (en) 2003-03-01 2008-08-12 User-Centric Ip, L.P. User-centric event reporting
US7535890B2 (en) 2003-12-18 2009-05-19 Ayalogic, Inc. System and method for instant VoIP messaging
WO2007023494A2 (en) 2005-08-22 2007-03-01 Triplay Communications Ltd. Messaging system and method
USRE47534E1 (en) 2007-04-23 2019-07-23 Ramot At Tel Aviv University Ltd. System, method and a computer readable medium for providing an output image
CN101184261B (zh) * 2007-11-05 2011-04-20 中国电信股份有限公司 一种面向多网络的多媒体信息提供和接收方法及系统
CN101552945A (zh) * 2009-05-08 2009-10-07 中兴通讯股份有限公司 一种实现媒体内容共享的方法及系统
KR101601976B1 (ko) * 2009-08-18 2016-03-17 삼성전자주식회사 Drm 콘텐츠 관리 시스템 및 방법
WO2011101784A1 (en) 2010-02-16 2011-08-25 Tigertext Inc. A messaging system apparatuses circuits and methods of operation thereof
CN102651734A (zh) * 2011-02-28 2012-08-29 中兴通讯股份有限公司 媒体消息处理方法及装置
KR101226560B1 (ko) * 2011-03-29 2013-01-25 (주)티아이스퀘어 커뮤니케이션 서비스 수행 도중 멀티미디어 콘텐츠 공유 서비스 제공 방법 및 시스템
KR101844021B1 (ko) * 2011-04-06 2018-03-30 삼성전자주식회사 메시지 전송 방법 및 장치와 컴퓨터로 읽을 수 있는 저장 매체
FR2974475B1 (fr) * 2011-04-19 2015-06-05 Viaccess Sa Procede de protection d'un contenu multimedia enregistre
WO2014036689A1 (en) * 2012-09-04 2014-03-13 Nokia Corporation Methods and apparatuses for location-based access management
US8984575B2 (en) * 2012-09-19 2015-03-17 Viacom International Inc. Media packaging
CN105009543A (zh) * 2013-01-31 2015-10-28 诺基亚技术有限公司 媒体项目的递送
US9882945B2 (en) * 2013-03-14 2018-01-30 Synacor, Inc. Media sharing communications system
US20150026078A1 (en) * 2013-07-18 2015-01-22 Google Inc. Generating and providing an authorization indication in relation to a media content item
CN103457998A (zh) * 2013-07-31 2013-12-18 北京小米科技有限责任公司 一种图片分享的方法和装置
CA2863124A1 (en) 2014-01-03 2015-07-03 Investel Capital Corporation User content sharing system and method with automated external content integration
US20150365454A1 (en) * 2014-06-17 2015-12-17 Qualcomm Incorporated Media processing services on an access node
CN104410676A (zh) * 2014-11-19 2015-03-11 惠州华阳通用电子有限公司 一种基于大屏幕车载系统的多媒体文件分享方法及装置
CN105812943B (zh) * 2016-03-31 2019-02-22 北京奇艺世纪科技有限公司 一种视频编辑方法及系统
US10333875B2 (en) 2016-11-28 2019-06-25 Snap Inc. Processing media content in a messaging system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110131272A1 (en) * 2001-05-11 2011-06-02 Clear Channel Management Services, Inc. Technique of Providing Targeted Media Items
US20110276637A1 (en) * 2010-05-06 2011-11-10 Microsoft Corporation Techniques to share media files through messaging
US20130325952A1 (en) * 2012-06-05 2013-12-05 Cellco Partnership D/B/A Verizon Wireless Sharing information

Also Published As

Publication number Publication date
US20190260700A1 (en) 2019-08-22
WO2018097985A1 (en) 2018-05-31
CN109997129B (zh) 2023-10-27
EP4137967A1 (en) 2023-02-22
EP3545429A1 (en) 2019-10-02
EP3545429B1 (en) 2022-08-31
US20210194839A1 (en) 2021-06-24
KR20210008946A (ko) 2021-01-25
KR102384579B1 (ko) 2022-04-11
US11228546B2 (en) 2022-01-18
CN109997129A (zh) 2019-07-09
US10630623B2 (en) 2020-04-21
EP4375852A2 (en) 2024-05-29
KR102206344B1 (ko) 2021-01-22
EP4137967B1 (en) 2024-04-17
US20200169517A1 (en) 2020-05-28
US20180152400A1 (en) 2018-05-31
US10992616B2 (en) 2021-04-27
KR102328073B1 (ko) 2021-11-17
KR20210142759A (ko) 2021-11-25
US10333875B2 (en) 2019-06-25

Similar Documents

Publication Publication Date Title
US11228546B2 (en) Processing media content in a messaging system
CN107402779B (zh) 用于云和预置应用集成的兼容框架
US11671664B2 (en) Media collection generation and privacy mechanisms
KR20210013298A (ko) 콘텐츠 공유 플랫폼 프로파일 생성
US10133705B1 (en) Multichannel system
US11106037B2 (en) Processing a media content based on device movement
KR20240013273A (ko) 상호작용형 정보 인터페이스
US20190268288A1 (en) Generating conversational nodes for a system function
US11888799B2 (en) Adding images via MMS to a draft document

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant