KR102622318B1 - 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들 - Google Patents

컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들 Download PDF

Info

Publication number
KR102622318B1
KR102622318B1 KR1020237025804A KR20237025804A KR102622318B1 KR 102622318 B1 KR102622318 B1 KR 102622318B1 KR 1020237025804 A KR1020237025804 A KR 1020237025804A KR 20237025804 A KR20237025804 A KR 20237025804A KR 102622318 B1 KR102622318 B1 KR 102622318B1
Authority
KR
South Korea
Prior art keywords
user
control circuitry
subscription
content
media
Prior art date
Application number
KR1020237025804A
Other languages
English (en)
Other versions
KR20230117637A (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=57389505&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR102622318(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Priority claimed from US14/928,934 external-priority patent/US10178421B2/en
Priority claimed from US14/928,930 external-priority patent/US9813396B2/en
Application filed by 로비 가이드스, 인크. filed Critical 로비 가이드스, 인크.
Publication of KR20230117637A publication Critical patent/KR20230117637A/ko
Application granted granted Critical
Publication of KR102622318B1 publication Critical patent/KR102622318B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25816Management of client data involving client authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25866Management of end-user data
    • H04N21/25875Management of end-user data involving end-user authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/101Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measures for digital rights management

Abstract

일부 양태들에서, 제어 회로부는 사용자가 제 1 구독 서비스에 가입하기 이전에, 제 1 구독 서비스와 연관되는 컨텐츠 제공자 서버에서, 제 2 구독 서비스와 연관되는 컨텐츠 어그리게이터 서버로부터 제 1 인증 키를 수신한다. 제어 회로부는 제 1 인증 키를 수용가능한 인증과 비교한 후에, 컨텐츠 제공자 서버에서, 제 1 사용자 계정을 생성하고 저장한다. 제 1 사용자 계정을 저장하는 것에 응답하여, 제어 회로부는 컨텐츠 어그리게이터 서버로부터, 사용자를 제 1 구독 서비스에 가입시키기 위한 요청을 수신하고, 여기서, 요청은 제 2 인증 키를 포함한다. 제어 회로부는 제 1 인증 키를 제 2 인증 키와 비교하고, 제 1 인증 키가 제 2 인증 키와 일치하는 것으로 결정하는 것에 응답하여, 제 1 사용자 계정을 유효성검사하고, 제 1 사용자 계정을 통한 제 1 구독 서비스에 대한 액세스를 승인한다.

Description

컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들{METHODS AND SYSTEMS FOR MANAGING CONTENT SUBSCRIPTION DATA}
본 발명은 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들에 관한 것이다.
따라서, 방법들 및 시스템들은 사용자가 다수의 구독 서비스들에 대한 다수의 계정들을 관리해야 하는 것을 완화시키는 미디어 안내 애플리케이션(media guidance application)에 대하여 본원에서 설명된다. 예를 들어, 사용자 활동을 모니터링하고 사용자 대신에 사용자 계정들을 관리함으로써, 미디어 안내 애플리케이션은 사용자의 개별적인 필요성들에 맞추어진 구독 서비스들 및/또는 구독 서비스의 기간들을 추천할 수도 있다.
또한, 미디어 안내 애플리케이션은 구독 서비스들, 및/또는 사용자의 필요성들을 최상으로 충족시키는 특정한 구독 서비스로부터의 특정한 계획을 결정하기 위하여, 수 많은 컨텐츠 제공자들로부터 다량의 데이터를 취출(retrieve)하고 프로세싱하도록 사용자를 대신하여 작용할 수도 있다. 이하에서 심도 있게 논의된 바와 같이, 미디어 안내 애플리케이션은 사용자의 이익을 위한 추세들 및 통계적 최적화들을 식별하기 위하여 별도의 그리고 이질적인 데이터세트들을 비교함으로써, (오직 컴퓨터-판독가능 코드로 종종 액세스가능한) 다량의 데이터를 프로세싱할 수도 있다.
예를 들어, 제어 회로부 상에서 구현된 미디어 안내 애플리케이션은 주어진 시간 주기에 대한 데이터 스트림 입력 및 출력 메트릭(metric)들을 분석함으로써, 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 이용가능한 스트림들의 수를 초과하는 다수의 인스턴스(instance)들을 검출할 수도 있다. 예를 들어, 제어 회로부는 사용자의 구독 주기 동안에, 미디어를 동시에 스트리밍하기 위한 요청들의 수가 이용가능한 스트림들의 수를 초과한 12 개의 인스턴스들을 검출하기 위하여, 데이터 스트림 입력 및 출력 메트릭들을 분석할 수도 있다. 이에 응답하여, 제어 회로부는 다른 변수들(예컨대, 가격)을 제어하면서, 대안적인 구독 서비스/계획이 데이터 스트림 입력 및 출력 메트릭들과 비교할 때, 사용자에 의해 이용가능한 스트림들의 수를 개선시킬 수도 있는지 아닌지 여부를 결정할 수도 있다. 그러할 경우, 제어 회로부는 (예컨대, 추가적인 스트림이 구입을 위하여 이용가능하다는 것을 표시하는) 대안적인 구독 서비스/계획을 추천하는 메시지를 송신할 수도 있다.
일부 실시형태들에서, 제어 회로부는 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 복수의 인스턴스들을 검출할 수도 있다. 예를 들어, 제어 회로부는 12 개의 인스턴스들에서, 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과한다는 것을 검출할 수도 있다. 다시 말해서, 12 개의 경우들에는, 적어도 하나의 사용자가 컨텐츠 구독 서비스로부터 컨텐츠를 스트리밍할 수 없었다. 그 결과, 구독을 이용하여 컨텐츠를 스트리밍하는 사용자들은 그 또는 그녀의 선택 시에 컨텐츠를 뷰잉할 수 없음으로써 실망감을 느낄 수도 있다. 또한, 사용자들은 추가적인 스트림들을 구입하기 위한 능력을 인지하지 않을 수도 있고, 구독을 이용하는 다른 사용자들의 뷰잉 습관들을 인지하지 않을 수도 있다. 이에 따라, 실망한 사용자는 그 또는 그녀의 뷰잉 경험을 개선시키기 위하여 몇몇 옵션(option)들을 볼 수도 있고, 경쟁하는 구독 서비스들을 이용하여 미디어를 스트링하기 시작할 수도 있거나, 그 또는 그녀의 구독을 완전히 취소할 수도 있다.
제어 회로부는 복수의 타임스탬프(timestamp)들의 각각이 복수의 인스턴스들 중의 하나에 대응하는 복수의 타임스탬프들을 생성할 수도 있다. 예를 들어, 제어 회로부가 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 12 개의 인스턴스들을 검출할 경우, 제어 회로부는 복수의 타임스탬프들을 생성할 수도 있고, 여기서, 각각의 타임스탬프는 12 개의 인스턴스들 중의 하나에 대응한다. 그 결과, 제어 회로부는 타임스탬프를 각각의 인스턴스에 상관시킴으로써, 사용자들이 불충분한 수의 이용가능한 스트림들로 인해 컨텐츠를 스트리밍할 수 없었던 그 인스턴스들을 효과적으로 추적하기 위하여 타임스탬프들을 사용할 수도 있다.
그 다음으로, 제어 회로부는 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수를 결정하기 위하여, 복수의 타임스탬프들의 각각을, 구독 서비스에 대한 구독 주기에 대응하는 타임스탬프들의 범위와 비교할 수도 있다. 예를 들어, 제어 회로부가 12 개의 타임스탬프들을 생성할 경우, 제어 회로부는 그 다음으로, 구독 주기들 내로 속하는 (그 대응하는 타임스탬프들에 기초하여) 인스턴스들의 수를 결정하기 위하여, 12 개의 타임스탬프들의 각각을 구독 서비스에 대한 구독 주기와 비교할 수도 있다. 예를 들어, 구독 주기는 시작 타임스탬프 및 종료 타임스탬프에 의해 정의될 수도 있다. 그 다음으로, 제어 회로부는 각각의 타임스탬프가 구독 주기의 시작 및 종료 타임스탬프들 내에 속하는지 여부를 결정하기 위하여 12 개의 타임스탬프들의 각각을 비교할 수도 있다. 구독 주기의 시작 및 종료 타임스탬프들의 범위 내에 속하는 타임스탬프들의 수에 기초하여, 제어 회로부는 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수를 결정할 수도 있다.
일부 실시형태들에서, 제어 회로부는 서버에서, 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수를 구독 주기에 대한 임계 수(threshold number)와 비교할 수도 있다. 예를 들어, 제어 회로부는 주어진 구독 주기에 대하여, 임계 수가 8로 설정되는 것으로 결정할 수도 있고, 2 개의 수들을 비교할 수도 있다. 예를 들어, 임계 수는 사용자가 이용가능한 스트림들의 결여로 실망하게 될 수도 있게 된 후의 인스턴스들의 수를 표시할 수도 있다. 임계 수가 초월하게 되는지 아닌지 여부를 결정함으로써, 제어 회로부는 사용자가 추가적인 스트림들을 획득하는 것을 원할 가능성이 있는지 아닌지의 여부를 결정할 수도 있다.
일부 실시형태들에서, 제어 회로부는 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수가 구독 주기에 대한 임계 수를 초과하는 것으로 결정하는 것에 응답하여, 메시지를 서버로부터 상이한 디바이스들 중의 하나로 송신할 수도 있다. 예를 들어, 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수(예컨대, 12)가 임계 수(예컨대, 8)를 초과하는 것으로 결정하는 것에 응답하여, 제어 회로부는 디바이스와 연관된 사용자가 추가적인 스트림들을 구입할 수 있다는 것을 표시하는 메시지를 서버로부터 디바이스로 송신한다. 메시지를 송신함으로써, 제어 회로부는 컨텐츠를 스트리밍할 수 없는 것에 의한 사용자의 실망감을 해결할 수도 있고, 사용자가 불충분한 양의 이용가능한 스트림들의 문제를 해결하기 위한 기회를 제공할 수도 있다.
일부 실시형태들에서, 제어 회로부는 구독 주기의 시간의 길이에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기에 대한 임계 수를 선택할 수도 있다. 예를 들어, 제어 회로부는 구독 서비스로부터의 미디어를 동시에 스트리밍하기 위한 요청들의 수가 1-개월 주기와 같은 더 짧은 시간 주기 동안에 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 인스턴스들의 더 낮은 수가 있다는 사실을 참작하기 위하여, 1 개월의 구독 주기에 대한 낮은 임계 수(예컨대, 10)를 선택할 수도 있다. 이에 따라, 단일의 정적 임계치에 의존하는 대신에, 제어 회로부는 개별적인 사용자들이 이용불가능한 스트림들을 용인하기 위한 변동되는 능력들을 가지므로, 사용자의 뷰잉 습관들에 관련된 임계치를 적용할 수도 있다.
추가적으로 또는 대안적으로, 제어 회로부는 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기에 대한 임계 수를 선택할 수도 있다. 예를 들어, 제어 회로부는 구독들과 연관된 스트림들의 수를 분석할 수도 있고, 하나의 포인트에서 더 높은 수의 이용가능한 스트림들을 갖는 구독들과 연관된 사용자들이 더 낮은 수의 스트림들을 가졌고, 불충분한 수의 스트림들에 의해 야기된 스트리밍 문제들을 최소화하기 위하여 추가된 스트림들을 가졌다는 것으로 결정할 수도 있다. 이에 따라, 제어 회로부는 더 낮은 수의 이용가능한 스트림들에 의해 특징화된 컨텐츠 구독의 사용자가 미디어를 동시에 스트리밍하기 위한 요청들의 수가 얼마나 빈번하게 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는지를 이해하는 것을 추구할 가능성이 더 클 수도 있는 것으로 결정할 수도 있다. 한편, 사용자는 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 상황들을 회피하기 위하여 이용가능한 스트림들의 수를 이미 증가시켰을 수도 있으므로, 구독 서비스로부터 사용자에 의해 이용가능한 더 높은 수의 스트림들에 의해 특징화된 컨텐츠 구독의 사용자는 미디어를 동시에 스트리밍하기 위한 요청들의 수가 얼마나 빈번하게 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는지를 이해하는 것을 추구할 가능성이 더 작을 수도 있다.
추가적으로 또는 대안적으로, 제어 회로부는 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수를 결정하기 위하여, 복수의 타임스탬프들의 각각을, 구독 서비스에 대한 구독 주기의 부분에 대응하는 타임스탬프들의 범위와 비교할 수도 있다. 예를 들어, 제어 회로부는 타임스탬프들의 각각을, 인기 있는 쇼들이 방송되는 구독 주기의 부분(예컨대, 쇼 "The Simpsons"의 새로운 에피소드들의 방송에 대응하는, 수요일 오후 7:00 내지 오후 9:00 타임슬롯(timeslot)들에 대응하는 구독 주기의 모든 부분들)에 대응하고 구독 주기의 부분에 대응하는 타임스탬프들의 범위 내의 10 개의 타임스탬프들의 발생을 결정하는 타임스탬프들의 범위와 비교할 수도 있다. 또한, 제어 회로부는 서버에서, 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수를 구독 주기의 부분에 대한 임계 수(threshold number)와 비교할 수도 있다. 예를 들어, 제어 회로부는 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수(예컨대, 10)를 임계 수(예컨대, 6)와 비교한다. 마지막으로, 제어 회로부는 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수가 구독 주기의 부분에 대한 임계 수를 초과하는 것으로 결정하는 것에 응답하여, 서버로부터 상이한 디바이스들 중의 하나로 송신된 메시지를 수정할 수도 있다. 예를 들어, 제어 회로부는 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수(예컨대, 10)가 임계 수(예컨대, 6)를 초과하는 것으로 결정한다. 이에 응답하여, 제어 회로부는 예를 들어, 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 주기의 대응하는 부분 동안에(예컨대, 쇼 "The Simpsons"의 새로운 에피소드들의 방송에 대응하는 수요일 오후 7:00 내지 오후 9:00 사이의 타임슬롯들 동안에) 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 종종 초과한다는 것을 표시함으로써, 구독으로부터 미디어를 스트리밍하는, 서버로부터 사용자들에 의해 이용된 디바이스들 중의 하나로 송신된 메시지를 수정한다.
일부 실시형태들에서, 제어 회로부는 구독 주기의 시간의 길이에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기의 부분에 대한 임계 수를 선택할 수도 있다. 예를 들어, 제어 회로부는 구독 주기의 길이가 제어 회로부가 이 경우에 더 낮은 수(예컨대, 3)를 선택하는 더 짧은 구독 주기 길이(예컨대, 1 개월)에 비해, 더 긴(예컨대, 1 년) 경우, 구독 주기의 부분에 대한 임계 수에 대한 더 높은 수(예컨대, 20)를 선택한다. 이에 따라, 제어 회로부는 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 인스턴스들의 확률이 시간 경과에 따라 일정하지만, 더 많은 인스턴스들이 더 짧은 시간 주기보다 더 긴 시간 주기에서 발생할 것이라는 사실을 참작할 수도 있다.
일부 실시형태들에서, 제어 회로부는 구독 주기의 부분에 대응하는 날짜에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기의 부분에 대한 임계 수를 선택할 수도 있다. 예를 들어, 인기 있는 텔레비전 쇼(예컨대, "The Simpsons")의 시즌 프리미어(season premier)의 날짜가 구독 주기의 부분 내에 속하는 것으로 결정하는 것에 응답하여, 제어 회로부는 구독의 사용자들의 대부분이 인기 있는 텔레비전 쇼(예컨대, "The Simpsons")의 시즌의 에피소드들을 뷰잉하는 것에 관심 있다는 사실을 참작하기 위하여, 구독 주기의 부분에 대한 낮은 임계 수를 선택한다.
일부 실시형태들에서, 제어 회로부는 구독 주기의 부분에 대응하는 일자의 시간에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기의 부분에 대한 임계 수를 선택할 수도 있다. 예를 들어, 구독 주기의 부분(예컨대, 주어진 일자 동안의 오후 8:00 내지 오후 10:100 사이의 타임슬롯들)이 구독의 사용자들이 미디어를 스트리밍할 가능성이 가장 클 때의 시간에 대응하는 것으로 결정하는 것에 응답하여, 제어 회로부는 낮은 임계 수를 선택한다. 이에 따라, 제어 회로부는 임계 수를 선택할 때, 피크 수요의 시간 범위들이 사용자들의 뷰잉 습관들(예컨대, 구독 서비스의 사용자들의 대부분은 스트리밍 미디어를 뷰잉함으로써 일과 후에 휴식하는 것을 희망할 수도 있음)에 기초하여 존재할 수도 있다는 사실을 참작할 수도 있다.
추가적으로 또는 대안적으로, 제어 회로부는 구독 주기의 부분 동안에 구독 서비스로부터 이용가능하게 되었던 미디어 자산들의 수에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기의 부분에 대한 임계 수를 선택할 수도 있다. 예를 들어, 일부 구독 서비스들은 새로운 미디어 자산들(예컨대, "The Simpsons"의 3 개의 완전한 시즌들)을 그 미디어 라인업에 규칙적으로 추가한다. 제어 회로부는 구독 서비스 미디어 제공들에 추가되었던 미디어 자산들의 수에 기초하여 구독 주기의 부분 동안에 구독 서비스로부터 이용가능하게 되었던 미디어 자산들의 수를 결정할 수도 있다. 예를 들어, 구독 주기의 부분 동안에 구독 서비스로부터 이용가능하게 되었던 미디어 자산들의 수로부터 이용가능하게 되었던 미디어 자산들의 수가 구독 주기의 다른 부분들 동안에 구독 서비스로부터 이용가능하게 되었던 미디어 자산들의 수보다 더 클 경우, 제어 회로부는 구독의 사용자들이 미디어 자산들을 스트리밍할 가능성이 더 크고 이에 따라, 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 얼마나 빈번하게 초과하는지를 이해하는 것을 추구할 가능성이 더 클 수도 있다는 사실을 참작하기 위하여, 낮은 임계 수를 선택한다.
일부 실시형태들에서, 제어 회로부는 복수의 인스턴스들의 빈도를 감소시키기 위한 추천들을 포함하는 메시지를 송신할 수도 있다. 예를 들어, 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수가 구독 주기에 대한 임계 수를 초과하는 것으로 결정할 시에, 제어 회로부는 메시지를 서버로부터 구독의 사용자들에 의해 이용된 상이한 디바이스들 중의 하나로 송신한다. 메시지는 복수의 인스턴스들의 빈도를 감소시키기 위한 추천을 포함할 수도 있다. 예를 들어, 제어 회로부는 사용자가 어떤 시간의 외부에서(예컨대, 다른 사용자들이 시청(watch)하는 것에 관심이 있는 쇼 "The Simpsons"의 새로운 에피소드들의 방송에 대응하는, 오후 7:00 및 오후 9:00 수요일 타임슬롯의 외부에서) 미디어를 성공적으로 스트리밍할 가능성이 더 클 것이라는 것을 사용자에게 통지한다.
또한, 컨텐츠 어그리게이터 서비스(content aggregator service)에 가입함으로써, 사용자들은 다수의 구독 서비스들에 의해 제공된 미디어 컨텐츠를 액세스하도록 인가될 수도 있다. 각각의 구독 서비스에 의해 제공된 미디어 컨텐츠는 항상 컨텐츠 어그리게이터 서비스에서 직접적으로 이용가능하게 되지는 않고, 이에 따라, 사용자가 각각의 컨텐츠 제공자의 웹사이트를 통해 컨텐츠를 액세스하는 것을 강제한다. 컨텐츠를 액세스할 수 있기 전에, 사용자는 각각의 컨텐츠 제공자에 있어서의 계정을 생성해야 하고, 사용자는 이러한 태스크가 자꾸 반복적이고 지루하다는 것을 발견할 수도 있다. 추가적으로, 다수의 구독 서비스 계정들과 연관된 크리덴셜 정보를 기억하고 유지하는 프로세스는 사용자를 추가로 압도할 수도 있다.
일부 실시형태들에서, 제어 회로부는 컨텐츠 어그리게이터 서비스로부터 인증 정보(authentication information)를 자동으로 수신할 수도 있다. 예를 들어, 제어 회로부 상에서 구현된 미디어 안내 애플리케이션은 제어 회로부가 사용자를 구독 서비스에 가입시키기 위한 요청을 수신하기 이전에, 인증 정보를 수신할 수도 있고 인증 정보를 사용자 계정과 연관시킬 수도 있다. 그 다음으로, 제어 회로부는 사용자를 구독 서비스에 가입시키기 위한 요청을 수신할 수도 있고, 이에 따라, 계정을 유효성검사(validate)할 수도 있고, 사용자로의 구독 서비스의 제공들에 대한 액세스를 승인할 수도 있다.
제어 회로부는 구독 서비스와 연관되는 컨텐츠 제공자 서버(예컨대, 훌루(Hulu))에서, 제 2 구독 서비스와 연관되는 컨텐츠 어그리게이터 서버(예컨대, 로비 수퍼 어그리게이터(Rovi Super Aggregator))로부터 제 1 인증 키를 수신할 수도 있고, 여기서, 제 1 인증 키는 사용자가 제 1 구독 서비스에 가입하기 이전에 수신된다. 예를 들어, 사용자는 컨텐츠 어그리게이터 서비스(즉, 제 2 구독 서비스)에 가입할 수도 있다. 사용자가 제 2 구독 서비스에 있어서의 그 또는 그녀의 등록을 완료하자마자, 제 2 구독 서비스와 연관된 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 사용자를 컨텐츠 어그리게이터 구독의 일부로서 이용가능한 구독 서비스들의 일부 또는 전부와 연관시키기 위하여 인증 키들을 생성할 수도 있고, 생성된 인증 키들을 각각의 구독 서비스(예컨대, 제 1 구독 서비스)와 연관된 서버들로 전송할 수도 있다. 각각의 인증 키는 키에서 저장된 정보가 각각의 구독 서비스와 연관된 서버들로 보안성 있게 송신되는 것을 보장하기 위하여 암호화될 수도 있다. 추가적으로, 각각의 인증 키는 사용자 및 제 2 구독 서비스를 식별하는 정보를 포함할 수도 있다. 그 다음으로, 제 1 구독 서비스와 연관된 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 컨텐츠 어그리게이터 서버로부터 생성된 인증 키를 수신할 수도 있다. 일부 사례들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 인증 키를 복호화할 수도 있고, 키에서 저장된 정보를 추출할 수도 있다. 제어 회로부는 인증 키를 컨텐츠 제공자 서버 상에서 추가적으로 저장할 수도 있다. 이러한 방법으로, 제 1 사용자와 연관된 인증 키는 계정을 수동으로 생성하는 것을 사용자에게 부담시키지 않으면서, 제 1 구독 서비스로 송신될 수도 있다.
컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 1 인증 키에 기초하여 제 1 구독 서비스에 대한 제 1 계정을 생성할 것인지 아닌지 여부를 결정하기 위하여, 제 1 인증 키를 제 1 복수의 수용가능한 인증 키들과 비교할 수도 있다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 1 인증 키에서 저장된 정보를 추출할 수도 있고, 제 2 구독 서비스의 식별자에 관련된 키의 일부에서 열거된 구독 서비스(예컨대, 로비 수퍼 어그리게이터)의 명칭을 결정할 수도 있다. 그 다음으로, 제어 회로부는 제 1 구독 서비스 상에서의 사용자 계정들을 생성하기 위하여 허용되도록, 제어 회로부가 이전에 식별하였던 구독 서비스들의 리스트를 취출할 수도 있고, 구독 서비스의 명칭을 취출된 리스트에서의 각각의 구독 서비스와 비교할 수도 있다. 실제로, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 생성되는 계정들에 대한 제어를 유지하면서, 컨텐츠 어그리게이터들(즉, 제 2 구독 서비스)로부터 새로운 사용자들에 대한 정보를 보안성 있게 수신할 수 있다. 예를 들어, 제 1 구독 서비스는 할인된 가격에서 제 1 구독 서비스 상에서의 구독들을 제공하기 위하여 제 2 구독 서비스와 계약할 수도 있다. 이에 따라, 인증 키에서의 제 2 제공자에 대한 정보를 캡슐화(encapsulate)함으로써, 제 1 구독 서비스는 신뢰된 컨텐츠 어그리게이터들과 연관된 사용자들의 계정들이 오직 생성된다는 것을 보장한다.
컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 1 인증 키가 제 1 복수의 수용가능한 인증 키들 중의 하나와 일치하는 것으로 결정하는 것에 응답하여, 컨텐츠 제공자 서버에서, 제 1 사용자 계정을 생성할 수도 있다. 예를 들어, 제어 회로부는 컨텐츠 제공자 서버 상에서의 계정을 생성하기 위하여 필요한 정보를 생성하기 위하여, 사용자명(username), 패스워드(password), 및 구독 서비스 명칭과 같은, 인증 키 내에 포함된 정보를 이용할 수도 있다. 일부 사례들에서, 제어 회로부는 계정이 유효성검사되지 않은 것을 특정하는, 제 1 계정과 연관된 표시를 저장할 수도 있다. 다시 말해서, 계정은 생성되었지만, 사용자에 의해 액세스가능하지 않다. 사용자 또는 제 2 구독 서비스가 미래에 계정을 유효성검사할 것을 판단하면, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 이하에서 더욱 상세하게 설명되는 바와 같이, 사용자로부터 요구된 입력이 거의 없거나 전혀 없이 계정을 효율적으로 유효성검사할 수도 있다.
컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 1 사용자 계정이 제 1 인증 키에 대응한다는 것을 표시하는 데이터베이스 엔트리에 제 1 사용자 계정을 저장할 수도 있다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 데이터베이스에서 저장된 데이터베이스 엔트리에서, 생성된 사용자 계정에 관련된 정보를 저장할 수도 있다. 제어 회로부는 예를 들어, 사용자 계정과 연관된 데이터베이스 엔트리에 인증 키의 로케이션에 대한 포인터(pointer)를 저장함으로써, 사용자 계정을 인증 키와 추가로 연관시킬 수도 있다. 저장된 사용자 계정을 제 1 인증 키와 연관시킴으로써, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 제 2 구독 또는 사용자가 제 1 구독 서비스 상에서의 계정을 유효성검사할 것을 판단할 경우에, 계정이 신속하게 유효성검사될 수도 있다는 것을 보장할 수도 있다.
컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 1 사용자 계정을 저장하는 것에 후속하여, 컨텐츠 제공자 서버에서, 사용자를 제 1 구독 서비스에 가입시키기 위하여 컨텐츠 어그리게이터 서버로부터 요청을 수신할 수도 있고, 여기서, 요청은 제 2 인증 키를 포함한다. 제어 회로부는 제 1 구독 서비스에 가입하기 위한 사용자 요청에 응답하여, 제 2 인증 키를 수신할 수도 있다. 예를 들어, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 제 2 구독 서비스(예컨대, 로비 수퍼 어그리게이터)의 사용자가 제 1 구독 서비스(예컨대, 훌루)에 가입하는 것을 희망한다는 것을 검출할 수도 있다. 상이한 예에서, 제 2 서비스 상에서 구현된 제어 회로부는 제 1 서비스에 가입하는 비용이 비용 기준을 충족시킬 때, 요청을 제 1 서비스로 자동으로 전송할 수도 있다. 제 1 구독 서비스 상에서의 제어 회로부는 제 2 키에서 저장된 정보를 복호화할 수도 있고, 제 2 키에서 저장된 정보를 취출할 수도 있고, 컨텐츠 제공자 서버 상에서 인증 키를 저장할 수도 있다. 제 2 인증 키를 수신하기 위한 프레임워크(framework)를 제공함으로써, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 사용자를 위한 계정을 보안성 있게 유효성검사할 수도 있다.
컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 1 인증 키를 제 2 인증 키와 비교할 수도 있다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 키와 연관된 사용자의 명칭에 관련된 제 2 키로부터 정보를 취출할 수도 있고, 그 다음으로, 식별된 사용자와 연관된 계정이 이전에 생성되었는지 여부를 결정하기 위하여 데이터베이스에 질의(query)할 수도 있다. 상이한 예에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 2 인증 키를 포함하는 비암호화된 데이터를, 컨텐츠 제공자 서버 상에서 저장된 이전에 수신된 인증 키들의 비암호화된 데이터와 비교할 수도 있다.
컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 1 인증 키가 제 2 인증 키와 일치하는 것으로 결정하는 것에 응답하여, 제 1 사용자 계정을 유효성검사할 수도 있다. 예를 들어, 제 2 인증 키와의 제 1 인증 키의 비교에 기초하여, 그 다음으로, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 어느 하나의 키와 연관된 사용자 계정을 식별할 수도 있다. 그 다음으로, 제어 회로부는 계정을 식별하기 위하여 데이터베이스에 질의할 수도 있고, 계정이 유효성검사되었다는 것을 특정하는 표시를 저장할 수도 있다. 계정을 유효성검사함으로써, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 컨텐츠 제공자 서버에 의해 인증된 사용자가 제 1 구독 서비스에 의해 제공된 미디어 컨텐츠를 액세스하는 것을 허용한다.
일부 실시형태들에서, 제 1 사용자 계정을 유효성검사하는 것에 응답하여, 제 1 서버 상에서 구현된 제어 회로부는 제 1 사용자 계정을 통한 제 1 구독 서비스에 대한 액세스를 승인할 수도 있다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 계정이 이용을 위하여 이용가능하다는 것을 표시하는 메시지를 생성할 수도 있고, 메시지를 컨텐츠 어그리게이터 서버로 송신할 수도 있다. 이러한 방식으로, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 2 구독 서비스의 제공들이 사용자에 의해 액세스될 수도 있다는 것을 사용자에게 통지할 수 있다.
일부 실시형태들에서, 제 1 인증 키는 제 2 구독 서비스에 의해 배정된 사용자를 위한 사용자명 및 패스워드에 기초한 암호화 키이다. 예를 들어, 인증 키는 제 1 구독 서비스의 패스워드 요건들과 양립가능한 자동으로 생성된 패스워드, 및 컨텐츠 제공자 서버와 연관된 사용자명에 대응하는 사용자명을 포함할 수도 있다.
일부 실시형태들에서, 제 1 복수의 수용가능한 인증 키들은 컨텐츠 어그리게이터 서버로부터 컨텐츠 제공자 서버에서 수신된다. 예를 들어, 컨텐츠 제공자 서버에서 구현된 제어 회로부는 규칙적인 간격들로 제 2 구독 서비스로부터 인증 키들의 리스트를 수신할 수도 있다. 예를 들어, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 제 2 구독 서비스에 있어서의 계정을 생성하였던 모든 새로운 사용자들과 연관된 인증 키들을 매일 송신할 수도 있다.
일부 실시형태들에서, 컨텐츠 제공자 서버에서 저장된 데이터베이스 엔트리는 제 1 사용자 계정에 대한 포인터를 포함하는 제 1 데이터베이스 필드, 및 제 1 인증 키를 포함하는 제 2 데이터베이스 필드를 포함한다. 예를 들어, 컨텐츠 제공자 서버 상에서의 데이터베이스 엔트리는 사용자의 사용자명, 패스워드, 및 구독 레벨과 같은, 사용자의 계정에 대한 정보를 포함하는 제 2 데이터베이스 엔트리를 참조하는 제 1 데이터베이스 필드에서 저장된 포인터를 포함할 수도 있다.
일부 실시형태들에서, 컨텐츠 제공자 서버에서 저장된 데이터베이스 엔트리는 제 1 구독 서비스에 대한 구독 기간들을 포함하는 제 3 데이터베이스 필드를 포함한다. 구독의 기간들은 구독의 가격을 결정할 수도 있고; 사용자가 구독하기 위하여 초래하는 가격은 또한, 제 3 데이터베이스 필드에서 저장될 수도 있다.
일부 실시형태들에서, 사용자를 제 1 구독 서비스에 가입시키기 위한 컨텐츠 어그리게이터 서버로부터의 요청은, 사용자가 컨텐츠 어그리게이터 서버에서 제 2 구독 서비스에 대한 구독 레벨을 선택하는 것에 응답하여, 추가의 사용자 입력 없이 컨텐츠 어그리게이터 서버로부터 송신된다. 예를 들어, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 2 개의 구독 레벨들을 생성할 수도 있다: 제 1 구독 서비스에 대한 구독을 포함할 수도 있는 "프리미엄" 레벨, 및 제 1 구독 서비스에 대한 구독을 포함하지 않는 "기본" 레벨. 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 사용자가 "프리미엄" 레벨 구독을 선택한 것으로 결정하는 것에 오직 응답하여, 제 2 구독 서비스에 대한 요청을 송신할 수도 있다.
일부 실시형태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 1 사용자 계정을 유효성검사하는 것에 응답하여, 컨텐츠 제공자 서버로부터, 확인을 컨텐츠 어그리게이터 서버로 송신할 수도 있다. 예를 들어, 일단 제어 회로부가 사용자 계정을 유효성검사하면, 제어 회로부는 확인을 포함하는 메시지를 컨텐츠 어그리게이터 서버로 송신할 수도 있다. 확인을 송신함으로써, 제 2 서비스의 사용자는 그 또는 그녀가 제 1 구독 서비스와 연관된 미디어를 액세스할 수 있다는 것을 통지받을 수도 있다.
일부 실시형태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 제 1 사용자 계정을 통해 제 1 구독 서비스의 미디어 컨텐츠를 액세스하기 위하여 컨텐츠 어그리게이터 서버로부터 요청을 수신할 수도 있다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 미디어 컨텐츠(예컨대, 텔레비전 쇼 "The Simpsons"의 에피소드)를 액세스하기 위한 사용자 요청을 수신할 수도 있다. 제 1 사용자 계정을 통해 제 1 구독 서비스의 미디어 컨텐츠를 액세스하기 위하여 컨텐츠 어그리게이터 서버로부터 요청을 수신하는 것에 응답하여, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 컨텐츠 제공자 서버와 사용자 텔레비전 장비(402) 사이의 직접적인 접속을 생성할 수도 있다. 직접적인 접속을 생성함으로써, 미디어 컨텐츠가 사용자 텔레비전 장비(402)로 전송하기 전에 컨텐츠 제공자 서버로부터 컨텐츠 어그리게이터 서버로 전송되어야 할 경우보다, 미디어 컨텐츠는 컨텐츠 제공자 서버와 사용자 텔레비전 장비(402) 사이에서 더 신속하게 그리고 효율적으로 전송될 수도 있다.
일부 실시형태들에서, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 컨텐츠 제공자 서버와 사용자 텔레비전 장비(402) 사이의 직접적인 접속에 응답하여, 제 1 구독 서비스와 연관된 사용자 인터페이스 스킨(user interface skin)을 취출할 수도 있다. 예를 들어, 제 1 구독 서비스와 연관된 사용자 인터페이스 스킨은 제 1 구독 서비스와 연관된 사용자 인터페이스의 배경 컬러들, 폰트(font), 및 메뉴 로케이션과 같은 사용자 인터페이스 엘리먼트(element)들의 시각적인 외관을 정의할 수도 있다. 추가적으로, 인터페이스 스킨은 스크린 상의 정의된 로케이션에서 디스플레이될 수도 있는 제 1 구독 서비스와 연관된 로고(logo), 및 스크린 엘리먼트들의 배경 컬러를 정의할 수도 있는 제 1 구독 서비스와 연관된 컬러 팔레트와 같은, 구독 서비스에 의해 정의된 브랜드화 특성들을 포함할 수도 있다. 제어 회로부는 사용자 인터페이스 스킨과 연관된 파라미터들을 추출할 수도 있고, 파라미터들을 제 2 구독 서비스와 연관된 사용자 인터페이스 스킨에 적용할 수도 있다.
일부 실시형태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 컨텐츠 어그리게이터 서버로부터, 미디어 컨텐츠 리스팅(media content listing)의 제 1 사용자 계정을 통한 사용자 선택을 수신할 수도 있다. 예를 들어, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 컨텐츠 제공자 서버 상에서 이용가능한 컨텐츠의 미디어 컨텐츠 리스팅들을 취출하기 위하여 컨텐츠 제공자 서버와 컨텐츠 어그리게이터 서버 사이에서 생성된 접속을 사용할 수도 있다. 그 다음으로, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 사용자에 의해 행해진 미디어 컨텐츠 리스팅의 선택을 검출할 수도 있고, 여기서, 사용자는 컨텐츠 어그리게이터 서버 상에서의 계정과 연관된다. 일단 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부가 선택을 수신하면, 제어 회로부는 디스플레이를 위하여, 사용자에 의해 선택된 미디어 컨텐츠 리스팅에 대응하는 미디어 자산을 생성할 수도 있다. 예를 들어, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부는 컨텐츠 제공자와 컨텐츠 어그리게이터 서버 사이에서 생성된 접속을 이용하여 미디어 자산을 취출할 수도 있다. 미디어 자산은 다운로드를 통해, 또는 스트리밍을 통해 취출될 수도 있다.
위에서 설명된 시스템들 및/또는 방법들은 다른 시스템들, 방법들, 및/또는 장치들에 적용될 수도 있거나, 다른 시스템들, 방법들, 및/또는 장치들에 따라 이용될 수도 있다는 것이 주목되어야 한다.
개시물의 상기한 그리고 다른 목적들 및 장점들은 유사한 참조 부호들이 그 전반에 걸쳐 유사한 부분들을 지칭하는 동반된 도면들과 함께 취해진 다음의 상세한 설명의 고려 시에 분명해질 것이고:
도 1은 개시물의 일부 실시형태들에 따른, 미디어 안내 애플리케이션에 의해 생성된 디스플레이 스크린의 예시적인 예를 도시하고;
도 2는 개시물의 일부 실시형태들에 따른, 미디어 안내 애플리케이션에 의해 생성된 컨텐츠 어그리게이터 디스플레이 스크린의 또 다른 예시적인 예를 도시하고;
도 3은 개시물의 일부 실시형태들에 따른, 예시적인 디바이스의 블록도이고;
도 4는 개시물의 일부 실시형태들에 따른, 예시적인 미디어 시스템의 블록도이고;
도 5는 개시물의 일부 실시형태들에 따른, 구독 주기에서의 인스턴스들의 수를 결정하기 위한 예시적인 단계들의 플로우차트이고;
도 6은 개시물의 일부 실시형태들에 따른, 구독 주기에서의 인스턴스들의 수를 결정하기 위한 예시적인 단계들의 의사 코드이고;
도 7은 개시물의 일부 실시형태들에 따른, 구독 주기의 부분에서의 인스턴스들의 수를 결정하기 위한 예시적인 단계들의 플로우차트이고;
도 8은 개시물의 일부 실시형태들에 따른, 구독 주기의 부분에서의 인스턴스들의 수를 결정하기 위한 예시적인 단계들의 의사 코드이고;
도 9는 개시물의 일부 실시형태들에 따른, 인스턴스들의 수가 어떤 수를 초과할 때에 메시지를 디바이스로 송신할 시에 수반된 예시적인 단계들의 플로우차트이고;
도 10은 개시물의 일부 실시형태들에 따른, 컨텐츠 어그리게이터 서버로부터 제 1 인증 키를 수신하는 것에 기초하여 컨텐츠 제공자 서버 상에서의 계정을 생성하기 위한 예시적인 단계들의 플로우차트이고;
도 11은 개시물의 일부 실시형태들에 따른, 컨텐츠 어그리게이터 서버로부터 제 1 인증 키를 수신하는 것에 기초하여 컨텐츠 제공자 서버 상에서의 계정을 생성하기 위한 예시적인 단계들의 의사 코드이고;
도 12는 개시물의 일부 실시형태들에 따른, 컨텐츠 어그리게이터 서버로부터의 요청에 기초하여 제 1 사용자 계정을 유효성검사하기 위한 예시적인 단계들의 플로우차트이고;
도 13은 개시물의 일부 실시형태들에 따른, 컨텐츠 어그리게이터 서버로부터의 요청에 기초하여 제 1 사용자 계정을 유효성검사하기 위한 예시적인 단계들의 의사 코드이고; 그리고
도 14는 개시물의 일부 실시형태들에 따른, 제 1 구독 서비스 상에서의 제 1 사용자 계정을 생성하고 유효성검사할 시에 수반된 예시적인 단계들의 플로우차트이다.
방법들 및 시스템들은 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 이용가능한 스트림들의 수를 초과하는 인스턴스들의 수를 결정하기 위하여, 그리고 인스턴스들의 수가 어떤 수를 초과할 때에 메시지를 디바이스들 중의 하나로 송신하기 위하여 본원에서 개시되어 있다. 예를 들어, 제어 회로부는 구독 주기 동안에, 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 이용가능한 스트림들의 수를 초과하는 12 개의 인스턴스들이 있는 것으로 결정한다. 또한, 제어 회로부는 미디어를 동시에 스트리밍하기 위한 요청들의 수가 8 개의 경우들의 임계 수를 초월한 구독 서비스로부터 사용자에 의해 이용가능한 이용가능한 스트림들의 수를 초과하는 인스턴스들의 수를 결정할 수도 있고, 이에 응답하여, 제어 회로부는 추가적인 스트림이 구입을 위하여 이용가능하다는 것을 표시하는 메시지를 디바이스들 중의 하나로 송신한다.
본원에서 이용된 바와 같이, 용어 "인스턴스(instance)"는 시간에 있어서의 특정한 순간에 대응하는 것으로 이해되어야 한다. 예를 들어, 인스턴스는 날짜 및 시간에 의해 정의된 타임스탬프와 같은 특정한 타임스탬프에 대응한다.
본원에서 이용된 바와 같이, 용어 "구독 서비스"는 미디어 컨텐츠를 액세스하기 위하여 사용자가 가입하는 임의의 제품 또는 서비스를 지칭하는 것으로 이해되어야 한다. 예를 들어, 사용자는 텔레비전 시리즈(예컨대, "The Simpsons")를 액세스하기 위하여 온라인 구독 서비스(예컨대, 훌루)에 가입한다. 사용자는 컨텐츠 구독을 구입함으로써 구독 서비스에 의해 제공된 미디어 컨텐츠를 액세스할 수 있을 수도 있다. "구독 서비스"를 통한 컨텐츠에 대한 액세스를 제공하는 엔티티(entity)는 "컨텐츠 제공자"로서 본원에서 지칭된다. 용어 "컨텐츠 제공자 서버"는 사용자 장비로의 미디어 컨텐츠에 대한 액세스를 제공하기 위하여 컨텐츠 제공자에 의해 이용된 임의의 네트워크화된 디바이스를 지칭한다.
다른 구독 서비스들로부터 이용가능한 미디어 컨텐츠에 대한 액세스를 제공하는 제품 또는 서비스는 "컨텐츠 어그리게이터 구독"으로서 본원에서 지칭된다. 컨텐츠 어그리게이터 구독을 제공하는 엔티티는 "컨텐츠 어그리게이터"로서 본원에서 지칭된다. 용어 "컨텐츠 어그리게이터 서버"는 컨텐츠 제공자들로부터 이용가능한 컨텐츠에 관한 데이터를 수집하고 제공하기 위하여, 그리고 사용자 장비로의 이러한 컨텐츠에 대한 액세스를 가능하게 하기 위하여, 컨텐츠 어그리게이터에 의해 이용된 임의의 네트워크화된 디바이스를 지칭한다.
본원에서 이용된 바와 같이, 용어 "계정"은 사용자와 연관되고 구독 서비스의 데이터베이스에서 저장된 데이터를 지칭하는 것으로 이해되어야 한다. 구독 서비스는 사용자들이 계정에서 저장된 데이터를 통해 사용자를 인증함으로써 미디어 컨텐츠를 액세스하는 것을 허용한다. 추가적으로, 계정은 사용자의 이름, 패스워드, 신용 카드 정보, 뷰잉 선호도들, 및 구독 설정들을 열거하는 정보를 포함할 수도 있다. 유효성검사된 사용자 계정은 미디어 컨텐츠를 액세스하기 위하여 사용자에 의해 이용될 수도 있는 반면, 아직 유효성검사되지 않았던 계정은 미디어 컨텐츠를 액세스하기 위하여 사용자에 의해 이용되지 않을 수도 있다.
본원에서 이용된 바와 같이, "인증 키"는 알고리즘에 의해 복호화될 수도 있는 데이터를 지칭하는 것으로 이해되어야 한다. 예를 들어, 사용자의 사용자명 및 패스워드는 컨텐츠 어그리게이터 서버 상에서 암호화될 수도 있다. 결과적인 데이터는 인증 키를 구성할 수도 있고, 이것은 그 후에 컨텐츠 제공자 서버로 전송될 수도 있다. 컨텐츠 제공자 서버는 제 1 키를 복호화하기 위하여 필요한 정보를 포함할 수도 있다.
본원에서 이용된 바와 같이, 용어 "구독 주기"는 구독 서비스의 사용자들이 구독 서비스에 의해 제공된 미디어 컨텐츠를 그 동안에 액세스할 수 있는 연속 시간의 주기를 지칭하는 것으로 이해되어야 한다. 예를 들어, 구독 주기는 구독 서비스의 청구 사이클에 대응할 수도 있다(예컨대, 구독 주기는 3 월의 월에 대응함). 또한, 구독 주기는 시작 스탬프(즉, 구독을 통해 제공된 미디어가 사용자에 의해 이용가능하게 된 날짜 및 시간), 및 종료 스탬프(즉, 구독을 통해 제공된 미디어가 사용자에 의해 이용가능한 것이 중단되는 날짜 및 시간)와 연관될 수도 있다. 구독 주기의 "부분"은 구독 주기의 임의의 연속 또는 비-연속 시간 범위 또는 범위들을 지칭할 수도 있다. 예를 들어, 구독 주기의 부분은 구독 주기 동안에 수요일들의 오후 7:00 내지 오후 9:00 사이에서 발생하는 타임슬롯들에 대응한다. 상이한 예에서, 구독 주기의 부분은 텔레비전 쇼(예컨대, "The Simpsons")가 예를 들어, 8 월 내지 11 월에 그 동안에 방송되는 구독 주기의 날짜들의 범위에 대응한다.
용어 "스트림"은 시간의 주기 동안에 전송기로부터 수신기로 송신되는 미디어 컨텐츠 데이터를 지칭한다. 예를 들어, 미디어 컨텐츠(예컨대, "The Simpsons"의 에피소드)에 대응하는 디지털 데이터는 미디어 컨텐츠의 재생을 위하여 요구된 시간에 대응하는 시간 동안에, 네트워크 상에서 서버(즉, 전송기)로부터 사용자 디바이스(즉, 수신기)로 전달된다. 구독 서비스는 동시 이용을 위한 유한한 수의 스트림들을 구독의 사용자들에게 제공할 수도 있다(예컨대, 구독 서비스는 미디어 컨텐츠의 4 개의 동시 스트림들을 허용함). 스트리밍 프로세스(즉, 스트림을 전달하는 프로세스)를 구현하는 실시형태들은 디지털 매체 전달 방법들 뿐만 아니라, 다른 컨텐츠 전달 방법들(예컨대, 케이블)에도 적용될 수도 있다. 스트리밍 충돌은 미디어를 스트리밍하기 위한 요청들의 수가 이용가능한 스트림들의 수를 초과하는 상황을 지칭한다. 스트리밍 충돌이 발생할 때, 수신된 요청들 중의 적어도 하나(예컨대, 전형적으로 가장 최근의 요청)이 충족되지 않는다.
용어 "직접적인 접속"은 일단 컨텐츠 제공자 서버와 컨텐츠 어그리게이터 서버 사이에서 확립되면, 컨텐츠 어그리게이터 서버가 인증 없이 컨텐츠 제공자 서버 상에서 저장된 데이터를 액세스하는 것을 허용하는 네트워크 접속을 지칭한다.
용어 "인터페이스 스킨"은 사용자 인터페이스의 시각적인 외관을 정의하기 위하여 이용된 데이터의 집합을 지칭한다. 예를 들어, 사용자 인터페이스에서의 윈도우의 배경 컬러, 사용자 인터페이스에서 이용된 폰트, 및 사용자 인터페이스에서의 메뉴의 위치는 인터페이스 스킨과 연관된 데이터에서 정의될 수도 있다. 제어 회로부가 디스플레이를 위한 사용자 인터페이스의 시각적인 컴포넌트들을 생성할 때, 제어 회로부는 사용자 인터페이스에서의 각각의 엘리먼트 또는 엘리먼트들의 그룹이 어떻게 렌더링(render)되어야 하는지를 결정하기 위하여 인터페이스 스킨 파일의 데이터를 취출할 수도 있다. 추가적으로, 사용자 인터페이스의 시각적인 외관을 정의하기 위하여 이용된 데이터의 집합은 컨텐츠 제공자 서버와 연관된 서비스에 의해 정의된 그래픽 및 텍스트를 포함할 수도 있다. 예를 들어, 구독 서비스(예컨대, 훌루)와 연관된 인터페이스 스킨은 스크린 상의 정의된 로케이션에서 디스플레이될 수도 있는 Hulu 로고, 및 스크린 엘리먼트들의 배경 컬러를 정의할 수도 있는 Hulu 컬러 팔레트를 포함하는 데이터의 집합을 포함할 수도 있다.
본원에서 지칭된 바와 같이, 용어 "~에 응답하여"는 결과로서 개시된다는 것을 지칭한다. 예를 들어, 또 다른 액션에 응답하여 수행되는 제 1 액션은 제 1 액션과 제 2 액션 사이의 침입형 단계들을 포함할 수도 있다. 본원에서 지칭된 바와 같이, 용어 "~에 직접적으로 응답하여"는 기인하는 것을 지칭한다. 예를 들어, 또 다른 액션에 직접적으로 응답하여 수행되는 제 1 액션은 제 1 액션과 제 2 액션 사이의 침입형 단계들을 포함하지 않을 수도 있다.
임의의 주어진 컨텐츠 전달 시스템에서 사용자들에 의해 이용가능한 컨텐츠의 양은 상당할 수 있다. 결과적으로, 많은 사용자들은 사용자들이 컨텐츠 선택들을 효율적으로 내비게이팅하고 그들이 희망할 수도 있는 컨텐츠를 용이하게 식별하는 것을 허용하는 인터페이스를 통한 미디어 안내의 형태를 희망한다. 이러한 안내를 제공하는 애플리케이션은 대화형(interactive) 미디어 안내 애플리케이션, 또는 때때로, 미디어 안내 애플리케이션 또는 안내 애플리케이션으로서 본원에서 지칭된다.
대화형 미디어 안내 애플리케이션들은 그것들이 안내를 제공하는 컨텐츠에 따라 다양한 형태들을 취할 수도 있다. 하나의 전형적인 타입의 미디어 안내 애플리케이션은 대화형 텔레비전 프로그램 가이드(interactive television program guide)이다. 대화형 텔레비전 프로그램 가이드들(때때로, 전자 프로그램 가이드들로서 지칭됨)은 다른 것들 중에서도, 사용자들이 많은 타입들의 컨텐츠 또는 미디어 자산들 사이에서 내비게이팅하고 많은 타입들의 컨텐츠 또는 미디어 자산들을 위치시키는 것을 허용하는 널리-공지된 안내 애플리케이션들이다. 대화형 미디어 안내 애플리케이션들은 사용자가 컨텐츠 사이에서 내비게이팅하고 컨텐츠를 위치시키고 선택하는 것을 가능하게 하는 그래픽 사용자 인터페이스 스크린들을 생성할 수도 있다.
본원에서 지칭된 바와 같이, 용어들 "미디어 자산" 및 "컨텐츠"는 텔레비전 프로그래밍뿐만 아니라, 뷰-당-지불(pay-per-view) 프로그램들, (비디오-온-디맨드(video-on-demand; VOD) 시스템들에서와 같은) 온-디맨드(on-demand) 프로그램들, 인터넷 컨텐츠(예컨대, 스트리밍 컨텐츠, 다운로딩가능한 컨텐츠, 웹캐스트들 등), 비디오 클립들, 오디오, 컨텐츠 정보, 사진들, 회전하는 이미지들, 문서들, 플레이리스트들, 웹사이트들, 물품들, 서적들, 전자 서적들, 블로그들, 광고들, 채팅 세션들, 소셜 미디어, 애플리케이션들, 게임들, 및/또는 임의의 다른 미디어 또는 멀티미디어 및/또는 이것의 조합과 같은 전자적으로 소비가능한 사용자 자산을 의미하는 것으로 이해되어야 한다. 안내 애플리케이션들은 또한, 사용자들이 컨텐츠 사이에서 내비게이팅하고 컨텐츠를 위치시키는 것을 허용한다. 본원에서 지칭된 바와 같이, 용어 "멀티미디어"는 위에서 설명된 적어도 2 개의 상이한 컨텐츠 형태들, 예를 들어, 텍스트, 오디오, 이미지들, 비디오, 또는 상호작용성 컨텐츠 형태들을 사용하는 컨텐츠를 의미하는 것으로 이해되어야 한다. 컨텐츠는 사용자 장비 디바이스들에 의해 레코딩될 수도 있거나, 플레이될 수도 있거나, 디스플레이될 수도 있거나, 또는 액세스될 수도 있지만, 또한, 라이브 공연(live performance)의 일부일 수 있다.
본원에서 논의된 실시형태들 중의 임의의 것을 수행하기 위한 미디어 안내 애플리케이션 및/또는 임의의 명령어들은 컴퓨터 판독가능 매체들 상에서 인코딩될 수도 있다. 컴퓨터 판독가능 매체들은 데이터를 저장할 수 있는 임의의 매체들을 포함한다. 컴퓨터 판독가능 매체들은 전기적 또는 전자기적 신호들을 전파하는 것을 포함하지만, 이것으로 제한되지는 않는 일시적(transitory)인 것일 수도 있거나, 하드 디스크, 플로피 디스크, USB 드라이브, DVD, CD, 미디어 카드들, 레지스터 메모리, 프로세서 캐시들, 랜덤 액세스 메모리(Random Access Memory)("RAM") 등과 같은 휘발성 및 비-휘발성 컴퓨터 메모리 또는 저장 디바이스들을 포함하지만, 이것으로 제한되지는 않는 비-일시적인 것일 수도 있다.
인터넷, 이동 컴퓨팅, 및 고속 무선 네트워크들의 출현으로, 사용자들은 그들이 전통적으로 행하지 않은 사용자 장비 디바이스들 상에서 미디어를 액세스하고 있다. 본원에서 지칭된 바와 같이, 어구 "사용자 장비 디바이스", "사용자 장비", "사용자 디바이스", "전자 디바이스", "전자 장비", "미디어 장비 디바이스", 또는 "미디어 디바이스"는 텔레비전, 스마트 TV(Smart TV), 셋톱 박스(set-top box), 위성 텔레비전을 핸들링하기 위한 통합된 수신기 디코더(integrated receiver decoder; IRD), 디지털 저장 디바이스, 디지털 미디어 수신기(digital media receiver; DMR), 디지털 미디어 어댑터(digital media adapter; DMA), 스트리밍 미디어 디바이스, DVD 플레이어, DVD 레코더, 접속된 DVD, 로컬 미디어 서버, BLU-RAY 플레이어, BLU-RAY 플레이어, BLU-RAY 레코더, 개인용 컴퓨터(personal computer; PC), 랩톱 컴퓨터, 태블릿 컴퓨터, WebTV 박스, 개인용 컴퓨터 텔레비전(PC/TV), PC 미디어 서버, PC 미디어 센터, 핸드-헬드 컴퓨터, 정지식 전화, 개인 정보 단말(personal digital assistant; PDA), 이동 전화, 휴대용 비디오 플레이어, 휴대용 음악 플레이어, 휴대용 게이밍 머신, 스마트폰, 또는 임의의 다른 텔레비전 장비, 컴퓨팅 장비, 또는 무선 디바이스, 및/또는 그것의 조합과 같은, 위에서 설명된 컨텐츠를 액세스하기 위한 임의의 디바이스를 의미하는 것으로 이해되어야 한다. 일부 실시형태들에서, 사용자 장비 디바이스는 전방 대면 스크린 및 후방 대면 스크린, 다수의 전방 스크린들, 또는 다수의 각도형성된 스크린들을 가질 수도 있다. 일부 실시형태들에서, 사용자 장비 디바이스는 전방 대면 카메라 및/또는 후방 대면 카메라를 가질 수도 있다. 이 사용자 장비 디바이스들 상에서, 사용자들은 텔레비전을 통해 이용가능한 동일한 컨텐츠 사이에서 내비게이팅하고 이 동일한 컨텐츠를 위치시킬 수 있을 수도 있다. 결과적으로, 미디어 안내는 이 디바이스들 상에서 마찬가지로 이용가능할 수도 있다. 제공된 안내는 텔레비전을 통해 오직 이용가능한 컨텐츠를 위한 것, 다른 타입들의 사용자 장비 디바이스들 중의 하나 이상을 통해 오직 이용가능한 컨텐츠를 위한 것, 또는 텔레비전 및 다른 타입들의 사용자 장비 디바이스들 중의 하나 이상의 양자를 통해 이용가능한 컨텐츠를 위한 것일 수도 있다. 미디어 안내 애플리케이션들은 (즉, 웹-사이트 상에서 제공된) 온-라인 애플리케이션들로서, 또는 사용자 장비 디바이스들 상의 단독형(stand-alone) 애플리케이션들 또는 클라이언트들로서 제공될 수도 있다. 미디어 안내 애플리케이션들을 구현할 수도 있는 다양한 디바이스들 및 플랫폼들은 이하에서 더 상세하게 설명된다.
미디어 안내 애플리케이션의 기능들 중의 하나는 미디어 안내 데이터를 사용자들에게 제공하기 위한 것이다. 본원에서 지칭된 바와 같이, 어구 "미디어 안내 데이터" 또는 "안내 데이터"는 컨텐츠에 관련된 임의의 데이터, 또는 안내 애플리케이션을 동작시킬 시에 이용된 데이터를 의미하는 것으로 이해되어야 한다. 예를 들어, 안내 데이터는 프로그램 정보, 안내 애플리케이션 설정들, 사용자 선호도들, 사용자 프로파일 정보, 미디어 리스팅들, 미디어-관련된 정보(예컨대, 브로드캐스트 시간들, 브로드캐스트 채널들, 제목들, 설명들, 등급들 정보(예컨대, 부모 통제 등급들, 비평가의 등급들 등), 장르 또는 카테고리 정보, 배우 정보, 방송사들 또는 제공자들의 로고들을 위한 로고 데이터 등), 미디어 포맷(예컨대, 표준 해상도, 고해상도, 3D 등), 광고 정보(예컨대, 텍스트, 이미지들, 미디어 클립들 등), 온-디맨드 정보, 블로그들, 웹사이트들, 및 사용자가 희망하는 컨텐츠 선택들 사이에 내비게이팅하고 희망하는 컨텐츠 선택들을 위치시키기 위하여 유용한 임의의 다른 타입의 안내 데이터를 포함할 수도 있다.
도 1 내지 도 2는 미디어 안내 데이터를 제공하기 위하여 이용될 수도 있는 예시적인 디스플레이 스크린들을 도시한다. 도 1 내지 도 2에서 도시된 디스플레이 스크린들은 임의의 적당한 사용자 장비 디바이스 또는 플랫폼 상에서 구현될 수도 있다. 도 1 내지 도 2의 디스플레이들이 전체 스크린 디스플레이들로서 예시되어 있지만, 그것들은 또한, 디스플레이되고 있는 컨텐츠 상에서 전체적으로 또는 부분적으로 오버레이(overlay)될 수도 있다. 사용자는 디스플레이-스크린에서 제공된 선택가능한 옵션(예컨대, 메뉴 옵션, 리스팅들 옵션, 아이콘, 하이퍼링크 등)을 선택함으로써, 또는 원격 제어 또는 다른 사용자 입력 인터페이스 또는 디바이스 상의 전용 버튼(예컨대, GUIDE 버튼)을 누름으로써 컨텐츠 정보를 액세스하기 위한 희망을 표시할 수도 있다. 사용자의 표시에 응답하여, 미디어 안내 애플리케이션은 그리드(grid)에서의 시간 및 채널에 의해, 시간에 의해, 채널에 의해, 소스(source)에 의해, 컨텐츠 타입에 의해, 카테고리(예컨대, 영화들, 스포츠들, 뉴스, 아동, 또는 프로그래밍의 다른 카테고리들)에 의해, 또는 다른 미리 정의된, 사용자-정의된, 또는 다른 편성 기준들과 같은 몇몇 방법들 중의 하나로 편성된 미디어 안내 데이터를 갖는 디스플레이 스크린을 제공할 수도 있다.
도 1은 단일 디스플레이에서의 상이한 타입들의 컨텐츠에 대한 액세스를 또한 가능하게 하는 시간 및 채널에 의해 배열된 프로그램 리스팅 디스플레이(100)의 예시적인 그리드를 도시한다. 디스플레이(100)는 (1) 채널/컨텐츠 타입 식별자들의 열(104) - (열에서 셀(cell)인) 각각의 채널/컨텐츠 타입 식별자는 이용가능한 상이한 채널 또는 컨텐츠 타입을 식별함 -; 및 (2) 시간 식별자들의 행(106) - (행에서 셀인) 각각의 시간 식별자는 프로그래밍의 시간 블록을 식별함 - 을 갖는 그리드(102)를 포함할 수도 있다. 그리드(102)는 또한, 프로그램 리스팅(108)과 같은 프로그램 리스팅들의 셀들을 포함하고, 여기서, 각각의 리스팅은 리스팅의 연관된 채널 및 시간 상에서 제공된 프로그램의 제목을 제공한다. 사용자 입력 디바이스로, 사용자는 강조표시 영역(highlight region)(110)을 이동시킴으로써 프로그램 리스팅들을 선택할 수 있다. 강조표시 영역(110)에 의해 선택된 프로그램 리스팅에 관련되는 정보는 프로그램 정보 영역(112)에서 제공될 수도 있다. 영역(112)은 예를 들어, 프로그램 제목, 프로그램 설명, (적용가능할 경우) 프로그램이 제공되는 시간, (적용가능할 경우) 프로그램이 온(on)인 채널, 프로그램의 등급, 및 다른 희망하는 정보를 포함할 수도 있다.
선형 프로그래밍(예컨대, 미리 결정된 시간에서 복수의 사용자 장비 디바이스들로 송신되도록 스케줄링되고 스케줄에 따라 제공되는 컨텐츠)에 대한 액세스를 제공하는 것에 추가하여, 미디어 안내 애플리케이션은 또한, 비-선형 프로그래밍(예컨대, 임의의 시간에 사용자 장비 디바이스에 의해 액세스가능하고 스케줄에 따라 제공되지 않는 컨텐츠)에 대한 액세스를 제공한다. 비-선형 프로그래밍은 온-디맨드 컨텐츠(예컨대, VOD), 인터넷 컨텐츠(예컨대, 스트리밍 미디어, 다운로딩가능한 미디어 등), 로컬방식으로 저장된 컨텐츠(예컨대, 위에서 설명된 임의의 사용자 장비 디바이스 또는 다른 저장 디바이스 상에서 저장된 컨텐츠), 또는 다른 시간-독립적인 컨텐츠를 포함하는 상이한 컨텐츠 소스들로부터의 컨텐츠를 포함할 수도 있다. 온-디맨드 컨텐츠는 특정한 컨텐츠 제공자(예컨대, HBO GO 서비스를 통해 "The Sopranos" 및 "Curb Your Enthusiasm"을 제공하는 HBO)에 의해 제공된 영화들 또는 임의의 다른 컨텐츠를 포함할 수도 있다. SOPRANOS 및 CURB YOUR ENTHUSIASM은 Home Box Office, Inc.에 의해 소유된 상표들이다. 인터넷 컨텐츠는 채팅 세션 또는 웹캐스트(Webcast)와 같은 웹 이벤트들, 또는 인터넷 웹 사이트 또는 다른 인터넷 액세스(예컨대, FTP)를 통해 스트리밍 컨텐츠 또는 다운로딩가능한 컨텐츠로서 온-디맨드로 이용가능한 컨텐츠를 포함할 수도 있다.
그리드(102)는 온-디맨드 리스팅(114), 레코딩된 컨텐츠 리스팅(116), 및 인터넷 컨텐츠 리스팅(118)을 포함하는 비-선형 프로그래밍을 위한 미디어 안내 데이터를 제공할 수도 있다. 상이한 타입들의 컨텐츠 소스들로부터의 컨텐츠에 대한 미디어 안내 데이터를 조합하는 디스플레이는 "혼합된-미디어(mixed-medai)" 디스플레이로서 때때로 지칭된다. 디스플레이(100)와는 상이한, 디스플레이될 수도 있는 미디어 안내 데이터의 타입들의 다양한 치환들은 사용자 선택 또는 안내 애플리케이션 정의(예컨대, 오직 레코딩되고 방송된 리스팅들, 오직 온-디맨드, 및 방송된 리스팅들 등의 디스플레이)에 기초할 수도 있다. 예시된 바와 같이, 리스팅들(114, 116, 및 118)은 이 리스팅들의 선택이 온-디맨드 리스팅들, 레코딩된 리스팅들, 또는 인터넷 리스팅들에 각각 전용인 디스플레이에 대한 액세스를 제공할 수도 있다는 것을 표시하기 위하여 그리드(102)에서 디스플레이된 전체 시간 블록에 걸쳐 이어지는 것으로서 도시되어 있다. 일부 실시형태들에서, 이 컨텐츠 타입들에 대한 리스팅들은 그리드(102)에서 직접적으로 포함될 수도 있다. 추가적인 미디어 안내 데이터는 사용자 내비게이션 아이콘들(120) 중의 하나를 선택하는 것에 응답하여 디스플레이될 수도 있다. (사용자 입력 디바이스 상에서 화살표 키를 누르는 것은 내비게이션 아이콘들(120)을 선택하는 것과 유사한 방식으로 디스플레이에 영향을 줄 수도 있음.)
디스플레이(100)는 또한, 비디오 영역(122), 광고(124), 및 옵션들 영역(126)을 포함할 수도 있다. 비디오 영역(122)은 사용자가 사용자에 의해 현재 이용가능하거나, 이용가능할 것이거나, 또는 이용가능하였던 프로그램들을 뷰잉 및/또는 프리뷰잉(preview)하는 것을 허용할 수도 있다. 비디오 영역(122)의 컨텐츠는 그리드(102)에서 디스플레이된 리스팅들 중의 하나에 대응할 수도 있거나, 그것으로부터 독립적일 수도 있다. 비디오 영역을 포함하는 그리드 디스플레이들은 픽처-인-가이드(picture-in-guide; PIG) 디스플레이들로서 때때로 지칭된다. PGI 디스플레이들 및 그 기능성들은 그 전체적으로 본원에서의 참조로 본원에 편입되는, 2003년 5월 13일자로 발행된 Satterfield 등 미국 특허 제6,564,378호, 및 2001년 5월 29일자로 발행된 미국 특허 제6,239,794호에서 더욱 상세하게 설명되어 있다. PIG 디스플레이들은 본원에서 설명된 실시형태들의 다른 미디어 안내 애플리케이션 디스플레이 스크린들 내에 포함될 수도 있다.
광고(124)는 (예컨대, 구독 프로그래밍에 대한) 뷰어의 액세스 권리들에 따라, 뷰잉을 위하여 현재 이용가능하거나, 미래에 뷰잉을 위하여 이용가능할 것이거나, 또는 뷰잉을 위하여 절대로 이용가능해지지 않을 수도 있는 컨텐츠에 대한 광고를 포함할 수도 있고, 그리드(102)에서 컨텐츠 리스팅들 중의 하나 이상에 대응할 수도 있거나 그것에 관련되지 않을 수도 있다. 광고(124)는 또한, 그리드(102)에서 디스플레이된 컨텐츠에 관련되거나 관련되지 않는 제품들 또는 서비스들을 위한 것일 수도 있다. 광고(124)는 선택가능할 수도 있고 컨텐츠에 대한 추가의 정보를 제공할 수도 있고, 제품 또는 서비스에 대한 정보를 제공할 수도 있고, 컨텐츠, 제품, 또는 서비스의 구입을 가능하게 할 수도 있고, 광고에 관련되는 컨텐츠를 제공할 수도 있는 등과 같다. 광고(124)는 사용자의 프로파일/선호도들, 모니터링된 사용자 활동, 제공된 디스플레이의 타입에 기초하여, 또는 다른 적당한 타겟화된 광고에 기초하여 타겟화될 수도 있다.
광고(124)는 직사각형 또는 배너(banner) 형상으로서 도시되어 있지만, 광고들은 안내 애플리케이션 디스플레이에서 임의의 적당한 크기, 형상, 및 로케이션으로 제공될 수도 있다. 예를 들어, 광고(124)는 그리드(102)에 수평으로 인접한 직사각형 형상으로서 제공될 수도 있다. 이것은 때때로 패널 광고로서 지칭된다. 게다가, 광고들은 컨텐츠 또는 안내 애플리케이션 디스플레이 상에서 오버레이될 수도 있거나, 디스플레이 내에서 내장될 수도 있다. 광고들은 또한, 텍스트, 이미지들, 회전하는 이미지들, 비디오 클립들, 또는 위에서 설명된 다른 타입들의 컨텐츠를 포함할 수도 있다. 광고들은 안내 애플리케이션을 가지는 사용자 장비 디바이스에서, 사용자 장비에 접속된 데이터베이스에서, (스트리밍 미디어 서버들을 포함하는) 원격 로케이션에서, 또는 다른 저장 수단 상에서, 또는 이 로케이션들의 조합에서 저장될 수도 있다. 미디어 안내 애플리케이션에서 광고들을 제공하는 것은 예를 들어, 그 전체적으로 본원에서의 참조로 본원에 편입되는, 2003년 1월 17일자로 출원된 Knudson 등, 미국 특허 출원 공개 제2003/0110499호; 2004년 1월 29일자로 발행된 Ward, III 등, 미국 특허 제6,756,997호; 및 2002년 5월 14일자로 발행된 Schein 등, 미국 특허 제6,388,714호에서 더욱 상세하게 논의된다. 광고들은 본원에서 설명된 실시형태들의 다른 미디어 안내 애플리케이션 디스플레이 스크린들 내에 포함될 수도 있다는 것이 인식될 것이다.
옵션들 영역(126)은 사용자가 상이한 타입들의 컨텐츠, 미디어 안내 애플리케이션 디스플레이들, 및/또는 미디어 안내 애플리케이션 특징들을 액세스하는 것을 허용할 수도 있다. 옵션들 영역(126)은 디스플레이(100)의 일부(및 본원에서 설명된 다른 디스플레이 스크린들)일 수도 있거나, 온-스크린 옵션을 선택하거나 사용자 입력 디바이스 상의 전용 또는 배정가능한 버튼을 누름으로써 사용자에 의해 호출될 수도 있다. 옵션들 영역(126) 내에서의 선택가능한 옵션들은 그리드(102)에서의 프로그램 리스팅들에 관련된 특징들에 관한 것일 수도 있다. 프로그램 리스팅들에 관련된 특징들은 프로그램을 수신하는 다른 방송 시간들 또는 방법들을 검색하는 것, 프로그램을 레코딩하는 것, 프로그램의 시리즈 레코딩을 가능하게 하는 것, 프로그램 및/또는 채널을 최선호하는 것으로서 설정하는 것, 프로그램을 구입하는 것, 또는 다른 특징들을 포함할 수도 있다. 주 메뉴 디스플레이로부터 이용가능한 옵션들은 검색 옵션들, VOD 옵션들, 부모 통제 옵션들, 인터넷 옵션들, 클라우드-기반 옵션들, 디바이스 동기화 옵션들, 제 2 스크린 디바이스 옵션들, 다양한 타입들의 미디어 안내 데이터 디스플레이들을 액세스하기 위한 옵션들, 프리미엄 서비스에 가입하기 위한 옵션들, 사용자의 프로파일을 편집하기 위한 옵션들, 브라우저 오버레이를 액세스하기 위한 옵션들, 또는 다른 옵션들을 포함할 수도 있다.
미디어 안내 애플리케이션은 사용자의 선호도들에 기초하여 개인화될 수도 있다. 개인화된 미디어 안내 애플리케이션은 사용자가 미디어 안내 애플리케이션으로 개인화된 "경험"을 생성하기 위하여 디스플레이들 및 특징들을 맞춤화하는 것을 허용한다. 이 개인화된 경험은 사용자가 이 맞춤화들을 입력하는 것을 허용함으로써, 및/또는 미디어 안내 애플리케이션이 다양한 사용자 선호도들을 결정하기 위하여 사용자 활동을 모니터링함으로써 생성될 수도 있다. 사용자들은 안내 애플리케이션에 로그인함으로써, 또는 그렇지 않을 경우에 안내 애플리케이션에 대하여 자신들을 식별함으로써, 개인화된 안내 애플리케이션을 액세스할 수도 있다. 미디어 안내 애플리케이션의 맞춤화는 사용자 프로파일에 따라 행해질 수도 있다. 맞춤화들은 변동되는 제시 방식들(예컨대, 디스플레이들의 컬러 방식, 텍스트의 폰트 크기 등), 디스플레이된 컨텐츠 리스팅들의 양태들(예컨대, 오직 HDTV 또는 오직 3D 프로그래밍, 최선호 채널 선택들에 기초한 사용자-특정된 방송 채널들, 채널들의 디스플레이의 재순서화, 추천된 컨텐츠 등), 희망하는 레코딩 특징들(예컨대, 특정한 사용자들을 위한 레코딩 또는 시리즈 레코딩들, 레코딩 품질 등), 부모 통제 설정들, 인터넷 컨텐츠의 맞춤화된 제시(예컨대, 소셜 미디어 컨텐츠, 이-메일, 전자적으로 전달된 물품들 등의 제시), 및 다른 희망하는 맞춤화들을 포함할 수도 있다.
미디어 안내 애플리케이션은 사용자가 사용자 프로파일 정보를 제공하는 것을 허용할 수도 있거나, 사용자 프로파일 정보를 자동으로 컴파일링할 수도 있다. 미디어 안내 애플리케이션은 예를 들어, 사용자가 액세스하는 컨텐츠, 및/또는 사용자가 안내 애플리케이션과 가질 수도 있는 다른 상호작용들을 모니터링할 수도 있다. 추가적으로, 미디어 안내 애플리케이션은 (예컨대, www.allrovi.com과 같은, 사용자가 액세스하는 인터넷 상의 다른 웹 사이트들로부터, 사용자가 액세스하는 다른 미디어 안내 애플리케이션들로부터, 사용자가 액세스하는 다른 대화형 애플리케이션들로부터, 사용자의 또 다른 사용자 장비 디바이스 등으로부터) 특정한 사용자에 관련되는 다른 사용자 프로파일들의 전부 또는 일부를 획득할 수도 있고, 및/또는 미디어 안내 애플리케이션이 액세스할 수도 있는 다른 소스들로부터 사용자에 대한 정보를 획득할 수도 있다. 그 결과, 사용자는 사용자의 상이한 사용자 장비 디바이스들에 걸쳐 통합된 안내 애플리케이션 경험을 제공받을 수 있다. 이 타입의 사용자 경험은 도 4와 관련하여 이하에서 더욱 상세하게 설명된다. 추가적인 개인화된 미디어 안내 애플리케이션 특징들은 그 전체적으로 본원에서의 참조로 본원에 편입되는, 2005년 7월 11일자로 출원된 Ellis 등, 미국 특허 출원 공개 제2005/0251827호, 2007년 1월 16일자로 발행된 Boyer 등, 미국 특허 제7,165,098호, 및 2002년 2월 21일자로 출원된 Ellis 등, 미국 특허 출원 공개 제2002/0174430호에서 더욱 상세하게 설명된다.
미디어 안내를 제공하기 위한 또 다른 디스플레이 배열은 도 2에서 도시되어 있다. 비디오 모자이크 디스플레이(video mosaic display)(200)는 추천들, 시청 리스트에서의 포함, 및 컨텐츠의 타입과 같은 다양한 편성 기준들에 기초하여 편성된 컨텐츠 정보에 대한 선택가능한 옵션들(202)을 포함한다. 디스플레이(200)에서는, 영화 리스팅 옵션(204)이 선택되고, 이에 따라, 리스팅들(206, 208, 210, 및 212)을 영화들로서 제공한다. 디스플레이(200)에서, 리스팅들은 표지를 포함하는 그래픽 이미지들, 컨텐츠로부터의 스틸 이미지(still image)들, 비디오 클립 프리뷰들, 컨텐츠로부터의 라이브 비디오, 또는 컨텐츠가 리스팅에서 미디어 안내 데이터에 의해 설명된다는 것을 사용자에게 표시하는 다른 타입들의 컨텐츠를 제공할 수도 있다. 그래픽 리스팅들의 각각은 또한, 리스팅과 연관된 컨텐츠에 대한 추가의 정보를 제공하기 위하여 텍스트에 의해 동반될 수도 있다. 예를 들어, 리스팅(208)은 미디어 부분(214) 및 텍스트 부분(216)을 포함하는 하나를 초과하는 부분을 포함할 수도 있다. 미디어 부분(214) 및/또는 텍스트 부분(216)은 전체-스크린에서 컨텐츠를 뷰잉하기 위하여, 또는 미디어 부분(214)에서 디스플레이된 컨텐츠에 관련된 정보를 뷰잉하기 위하여(예컨대, 특정된 컨텐츠 제공자에 대한 리스팅들을 뷰잉하기 위하여) 선택가능할 수도 있다.
디스플레이(200)에서의 리스팅들은 상이한 크기들이지만(즉, 리스팅(206)은 리스팅들(208, 210, 및 212)보다 더 큼), 희망할 경우, 모든 리스팅들은 동일한 크기일 수도 있다. 리스팅들은 상이한 크기들일 수도 있거나, 관심의 정도들을 사용자에게 표시하기 위하여, 또는 컨텐츠 제공자에 의해 희망된 바와 같이, 또는 사용자 선호도들에 기초하여, 어떤 컨텐츠를 강조하기 위하여 그래픽적으로 두드러지게 될 수도 있다. 컨텐츠 리스팅들을 그래픽적으로 두드러지게 하기 위한 다양한 시스템들 및 방법들은 예를 들어, 그 전체적으로 본원에서의 참조로 본원에 편입되는, 2009년 11월 12일자로 출원된 Yates, 미국 특허 출원 공개 제2010/0153885호에서 논의된다.
사용자들은 그 사용자 장비 디바이스들 중의 하나 이상으로부터 컨텐츠 및 미디어 안내 애플리케이션(및 위에서 그리고 이하에서 설명된 그 디스플레이 스크린들)을 액세스할 수도 있다. 도 3은 예시적인 장비 디바이스(300)의 일반화된 실시형태를 도시한다. 디바이스들의 더 특정 구현예들은 도 4와 관련하여 이하에서 논의된다. 장비 디바이스(300)는 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 및 무선 사용자 통신 디바이스(406) 상에서 구현될 수도 있다. 추가적으로, 디바이스(300)는 컨텐츠 제공자들(416 및 418)과 연관된 서버들의 일부로서, 그리고 컨텐츠 어그리게이터(430)와 연관된 서버의 일부로서 구현될 수도 있다. 디바이스(300)는 입력/출력(이하, "I/O") 경로(302)를 통해 컨텐츠 및 데이터를 수신할 수도 있다. I/O 경로(302)는 컨텐츠(예컨대, 방송 프로그래밍, 온-디맨드 프로그래밍, 인터넷 컨텐츠, 로컬 영역 네트워크(local area network; LAN) 또는 광역 네트워크(wide area network; WAN) 상에서 이용가능한 컨텐츠, 및/또는 다른 컨텐츠) 및 데이터를, 프로세싱 회로부(306) 및 스토리지(308)를 포함하는 제어 회로부(304)에 제공할 수도 있다. 제어 회로부(304)는 I/O 경로(302)를 이용하여 커맨드(command)들, 요청들, 및 다른 적당한 데이터를 전송하고 수신하기 위하여 이용될 수도 있다. I/O 경로(302)는 제어 회로부(304)(및 구체적으로 프로세싱 회로부(306))를 (이하에서 설명된) 하나 이상의 통신 경로들에 접속할 수도 있다. I/O 기능들은 이 통신 경로들 중의 하나 이상에 의해 제공될 수도 있지만, 도면을 과도하게 복잡하게 하는 것을 회피하기 위하여 도 3에서 단일 경로로서 도시되어 있다.
제어 회로부(304)는 프로세싱 회로부(306)와 같은 임의의 적당한 프로세싱 회로부에 기초할 수도 있다. 본원에서 지칭된 바와 같이, 프로세싱 회로부는 하나 이상의 마이크로프로세서들, 마이크로제어기들, 디지털 신호 프로세서들, 프로그래밍가능 로직 디바이스들, 필드-프로그래밍가능 게이트 어레이(field-programmable gate array; FPGA)들, 애플리케이션-특정 집적 회로(application-specific integrated circuit; ASIC)들 등에 기초한 회로부를 의미하는 것으로 이해되어야 하고, 멀티-코어 프로세서(예컨대, 듀얼-코어(dual-core), 쿼드-코어(quad-core), 헥사-코어(hexa-core), 또는 임의의 적당한 수의 코어들) 또는 수퍼컴퓨터를 포함할 수도 있다. 일부 실시형태들에서, 프로세싱 회로부는 다수의 별도의 프로세서들 또는 프로세싱 유닛들, 예를 들어, 동일한 타입의 프로세싱 유닛들의 다수(예컨대, 2 개의 인텔 코어 i7 프로세서들) 또는 다수의 상이한 프로세서들(예컨대, 인텔 코어 i5 프로세서 및 인텔 코어 i7 프로세서)에 걸쳐 분산될 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 메모리(즉, 스토리지(308)) 내에 저장된 미디어 안내 애플리케이션을 위한 명령어들을 실행한다. 구체적으로, 제어 회로부(304)는 위에서 그리고 이하에서 논의된 기능들을 수행하기 위하여 미디어 안내 애플리케이션에 의해 명령될 수도 있다. 예를 들어, 미디어 안내 애플리케이션은 미디어 안내 디스플레이들을 생성하기 위하여 명령어들을 제어 회로부(304)에 제공할 수도 있다. 일부 구현예들에서, 제어 회로부(304)에 의해 수행된 임의의 액션은 미디어 안내 애플리케이션으로부터 수신된 명령어들에 기초할 수도 있다.
클라이언트-서버 기반 실시형태들에서, 제어 회로부(304)는 안내 애플리케이션 서버 또는 다른 네트워크들 또는 서버들과 통신하기 위하여 적당한 통신 회로부를 포함할 수도 있다. 위에서 언급된 기능성을 수행하기 위한 명령어들은 안내 애플리케이션 서버 상에서 저장될 수도 있다. 통신 회로부는 케이블 모뎀, 통합된 서비스들 디지털 네트워크(integrated services digital network; ISDN) 모뎀, 디지털 가입자 회선(digital subscriber line; DSL) 모뎀, 전화 모뎀, 이더넷 카드, 또는 다른 장비와의 통신들을 위한 무선 모뎀, 또는 임의의 다른 적당한 통신 회로부를 포함할 수도 있다. 이러한 통신들은 (도 4와 관련하여 더 상세하게 설명되는) 인터넷 또는 임의의 다른 적당한 통신 네트워크들 또는 경로들을 수반할 수도 있다. 게다가, 통신 회로부는 장비 디바이스들의 피어-투-피어(peer-to-peer) 통신, 또는 (이하에서 더 상세하게 설명된) 서로로부터의 원격인 로케이션들에서의 장비 디바이스들의 통신을 가능하게 하는 회로부를 포함할 수도 있다.
메모리는 제어 회로부(304)의 일부인 스토리지(308)로서 제공된 전자 저장 디바이스일 수도 있다. 본원에서 지칭된 바와 같이, 어구 "전자 저장 디바이스" 또는 "저장 디바이스"는 랜덤-액세스 메모리, 판독-전용 메모리, 하드 드라이브들, 광학 드라이브들, 디지털 비디오 디스크(digital video disc; DVD) 레코더들, 컴팩트 디스크(compact disc; CD) 레코더들, BLU-RAY 디스크(BLU-RAY disc; BD) 레코더들, BLU-RAY 3D 디스크 레코더들, 디지털 비디오 레코더들(DVR, 때때로 개인용 비디오 레코더(personal video recorder), 또는 PVR로서 칭해짐), 솔리드 스테이트 디바이스(solid state device)들, 퀀텀 저장 디바이스(quantum storage device)들, 게이밍 콘솔들, 게이밍 미디어, 또는 임의의 다른 적당한 고정된 또는 분리가능한 저장 디바이스들, 및/또는 이것의 임의의 조합과 같은, 전자 데이터, 컴퓨터 소프트웨어, 또는 펌웨어를 저장하기 위한 임의의 디바이스를 의미하는 것으로 이해되어야 한다. 스토리지(308)는 본원에서 설명된 다양한 타입들의 컨텐츠뿐만 아니라, 위에서 설명된 미디어 안내 데이터를 저장하기 위하여 이용될 수도 있다. (예컨대, 부트-업(boot-up) 루틴 및 다른 명령들을 착수시키기 위하여) 비휘발성 메모리가 또한 이용될 수도 있다. 도 4와 관련하여 설명된 클라우드-기반 스토리지는 스토리지(308)를 보충하기 위하여, 또는 스토리지(308) 대신에 이용될 수도 있다.
제어 회로부(304)는 비디오 생성 회로부와, 하나 이상의 아날로그 튜너들, 하나 이상의 MPEG-2 디코더들 또는 다른 디지털 디코딩 회로부, 고해상도 튜너들, 또는 임의의 다른 적당한 튜닝 또는 비디오 회로들, 또는 이러한 회로들의 조합들과 같은 튜닝 회로부를 포함할 수도 있다. (예컨대, 오버-디-에어(over-the-air), 아날로그, 또는 디지털 신호들을 저장을 위하여 MPEG 신호들로 변환하기 위한) 인코딩 회로부가 또한 제공될 수도 있다. 제어 회로부(304)는 또한, 컨텐츠를 장비 디바이스(300)의 선호된 출력 포맷으로 업컨버팅(upconverting) 및 다운컨버팅(downconverting)하기 위한 스케일러 회로부를 포함할 수도 있다. 회로부(304)는 또한, 디지털 및 아날로그 신호들 사이에서 변환하기 위한 디지털-투-아날로그 변환기 회로부 및 아날로그-투-디지털 변환기 회로부를 포함할 수도 있다. 타이밍 및 인코딩 회로부는 컨텐츠를 수신하고 디스플레이하거나, 플레이하거나, 또는 레코딩하기 위하여 장비 디바이스에 의해 이용될 수도 있다. 튜닝 및 인코딩 회로부는 또한, 안내 데이터를 수신하기 위하여 이용될 수도 있다. 예를 들어, 튜닝, 비디오 생성, 인코딩, 디코딩, 암호화, 복호화, 스케일러, 및 아날로그/디지털 회로부를 포함하는 본원에서 설명된 회로부는 하나 이상의 범용 또는 특화된 프로세서들 상에서 작동하는 소프트웨어를 이용하여 구현될 수도 있다. 다수의 튜너들은 동시 튜닝 기능들(예컨대, 시청 및 레코딩 기능들, 픽처-인-픽처(picture-in-picture; PIP) 기능들, 다수-튜너 레코딩 등)을 핸들링하기 위하여 제공될 수도 있다. 스토리지(308)가 장비 디바이스(300)와는 별도의 디바이스로서 제공될 경우, (다수의 튜너들을 포함하는) 튜닝 및 인코딩 회로부는 스토리지(308)와 연관될 수도 있다.
장비 디바이스(300)가 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 또는 무선 사용자 통신 디바이스(406) 상에서 구현될 때, 사용자는 사용자 입력 인터페이스(310)를 이용하여 명령어들을 제어 회로부(304)로 전송할 수도 있다. 사용자 입력 인터페이스(310)는 원격 제어, 마우스, 트랙볼, 키패드, 키보드, 터치 스크린, 터치패드, 스타일러스 입력, 조이스틱, 음성 인식 인터페이스, 또는 다른 사용자 입력 인터페이스들과 같은 임의의 적당한 사용자 인터페이스일 수도 있다. 디스플레이(312)는 단독형 디바이스로서 제공될 수도 있거나, 장비 디바이스(300)의 다른 엘리먼트들과 통합될 수도 있다. 예를 들어, 디스플레이(312)는 터치스크린 또는 터치-감지 디스플레이일 수도 있다. 이러한 상황들에서, 사용자 입력 인터페이스(310)는 디스플레이(312)와 통합될 수도 있거나, 디스플레이(312)와 조합될 수도 있다. 디스플레이(312)는 모니터, 텔레비전, 이동 디바이스를 위한 액정 디스플레이(liquid crystal display; LCD), 비정질 실리콘 디스플레이(amorphous silicon display), 저온 폴리 실리콘 디스플레이(low temperature poly silicon display), 전자 잉크 디스플레이(electronic ink display), 전기영동 디스플레이(electrophoretic display), 능동 매트릭스 디스플레이(active matrix display), 전기-습윤 디스플레이(electro-wetting display), 전기유체 디스플레이(electrofluidic display), 음극선관 디스플레이(cathode ray tube display), 발광 다이오드 디스플레이(light-emitting diode display), 전계발광 디스플레이(electroluminescent display), 플라즈마 디스플레이 패널(plasma display panel), 고성능 어드레싱 디스플레이(high-performance addressing display), 박막 트랜지스터 디스플레이(thin-film transistor display), 유기 발광 다이오드 디스플레이(organic light-emitting diode display), 표면-전도 전자-에미터 디스플레이(surface-conduction electron-emitter display; SED), 레이저 텔레비전, 탄소 나노튜브(carbon nanotube)들, 퀀텀 도트 디스플레이(quantum dot display), 간섭계측 변조기 디스플레이(interferometric modulator display), 또는 시각적인 이미지들을 디스플레이하기 위한 임의의 다른 적당한 장비 중의 하나 이상일 수도 있다. 일부 실시형태들에서, 디스플레이(312)는 HDTV-가능형일 수도 있다. 일부 실시형태들에서, 디스플레이(312)는 3D 디스플레이일 수도 있고, 대화형 미디어 안내 애플리케이션 및 임의의 적당한 컨텐츠는 3D로 디스플레이될 수도 있다. 비디오 카드 또는 그래픽 카드는 디스플레이(312)로의 출력을 생성할 수도 있다. 비디오 카드는 3D 장면들 및 2D 그래픽들의 가속화된 렌더링, MPEG-2/MPEG-4 디코딩, TV 출력, 또는 다수의 모니터들을 접속하기 위한 능력과 같은 다양한 기능들을 제공할 수도 있다. 비디오 카드는 제어 회로부(304)와 관련하여 위에서 설명된 임의의 프로세싱 회로부일 수도 있다. 비디오 카드는 제어 회로부(304)와 통합될 수도 있다. 스피커들(314)은 장비 디바이스(300)의 다른 엘리먼트들과 통합된 것으로서 제공될 수도 있거나, 단독형 유닛들일 수도 있다. 디스플레이(312) 상에서 디스플레이된 비디오들 및 다른 컨텐츠의 오디오 컴포넌트는 스피커들(314)을 통해 플레이될 수도 있다. 일부 실시형태들에서, 오디오는 스피커들(314)을 통해 오디오를 프로세싱하고 출력하는 수신기(도시되지 않음)로 분배될 수도 있다.
안내 애플리케이션은 임의의 적당한 아키텍처를 이용하여 구현될 수도 있다. 예를 들어, 그것은 장비 디바이스(300) 상에서 전적으로 구현된 단독형 애플리케이션일 수도 있다. 이러한 접근법에서, 애플리케이션의 명령어들은 로컬방식으로 (예컨대, 스토리지(308) 내에) 저장되고, 애플리케이션에 의한 이용을 위한 데이터는 주기적으로 (예컨대, 대역외(out-of-band) 피드로부터, 인터넷 자원으로부터, 또는 또 다른 적당한 접근법을 이용하여) 다운로딩된다. 제어 회로부(304)는 스토리지(308)로부터 애플리케이션의 명령어들을 취출할 수도 있고, 본원에서 논의된 디스플레이들 중의 임의의 것을 생성하기 위하여 명령어들을 프로세싱할 수도 있다. 프로세싱된 명령어들에 기초하여, 제어 회로부(304)는 입력이 입력 인터페이스(310)로부터 수신될 때에 어떤 액션을 수행할 것인지를 결정할 수도 있다. 예를 들어, 디스플레이 상의 커서의 상/하의 이동은 입력 인터페이스(310)가 상/하 버튼이 선택되었다는 것을 표시할 때에 프로세싱된 명령어들에 의해 표시될 수도 있다.
일부 실시형태들에서, 미디어 안내 애플리케이션은 클라이언트-서버 기반 애플리케이션이다. 장비 디바이스(300) 상에서 구현된 씨크(thick) 및 씬(thin) 클라이언트에 의한 이용을 위한 데이터는 장비 디바이스(300)에 대해 원격인 서버에 요청들을 발행함으로써 온-디맨드로 취출된다. 클라이언트-서버 기반 안내 애플리케이션의 하나의 예에서, 제어 회로부(304)는 원격 서버에 의해 제공된 웹 페이지들을 해독(interpret)하는 웹 브라우저를 작동시킨다. 예를 들어, 원격 서버는 저장 디바이스에서 애플리케이션을 위한 명령어들을 저장할 수도 있다. 원격 서버는 회로부(예컨대, 제어 회로부(304))를 이용하여 저장된 명령어들을 프로세싱할 수도 있고, 위에서 그리고 이하에서 논의된 디스플레이들을 생성할 수도 있다. 클라이언트 디바이스는 원격 서버에 의해 생성된 디스플레이들을 수신할 수도 있고, 장비 디바이스(300) 상에서 로컬방식으로 디스플레이들의 컨텐츠를 디스플레이할 수도 있다. 이러한 방법으로, 명령어들의 프로세싱은 서버에 의해 원격으로 수행되는 반면, 결과적인 디스플레이들은 장비 디바이스(300) 상에서 로컬방식으로 제공된다. 장비 디바이스(300)는 입력 인터페이스(310)를 통해 사용자로부터 입력들을 수신할 수도 있고, 그 입력들을, 대응하는 디스플레이들을 프로세싱하고 생성하기 위한 원격 서버로 송신할 수도 있다. 예를 들어, 장비 디바이스(300)는 상/하 버튼이 입력 인터페이스(310)를 통해 선택되었다는 것을 표시하는 통신을 원격 서버로 송신할 수도 있다. 원격 서버는 그 입력에 따라 명령어들을 프로세싱할 수도 있고, 입력에 대응하는 애플리케이션의 디스플레이(예컨대, 커서를 상/하로 이동시키는 디스플레이)를 생성할 수도 있다. 그 다음으로, 생성된 디스플레이는 사용자로의 제시를 위하여 장비 디바이스(300)로 송신된다.
일부 실시형태들에서, 미디어 안내 애플리케이션은 다운로딩되고 해독되거나, 또는 그렇지 않을 경우에 (제어 회로부(304)에 의해 작동된) 해독기 또는 가상 머신(virtual machine)에 의해 작동된다. 일부 실시형태들에서, 안내 애플리케이션은 ETV 2진 교환 포맷(ETV Binary Interchange Format; EBTF)에서 인코딩될 수도 있고, 적당한 피드의 일부로서 제어 회로부(304)에 의해 수신될 수도 있고, 제어 회로부(304) 상에서 작동하는 사용자 에이전트(user agent)에 의해 해독될 수도 있다. 예를 들어, 안내 애플리케이션은 EBIF 애플리케이션일 수도 있다. 일부 실시형태들에서, 안내 애플리케이션은 제어 회로부(304)에 의해 실행된 로컬 가상 머신 또는 다른 적당한 미들웨어에 의해 수신되고 작동되는 일련의 JAVA-기반 파일들에 의해 정의될 수도 있다. 이러한 실시형태들(예컨대, MPEG-2 또는 다른 디지털 미디어 인코딩 방식들을 채용하는 것들)의 일부에서, 안내 애플리케이션은 예를 들어, 프로그램의 MPEG 오디오 및 비디오 패킷들로 계속된 MPEG-2 객체에서 인코딩되고 송신될 수도 있다.
도 3의 장비 디바이스(300)는 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 무선 사용자 통신 디바이스(406), 또는 비-휴대용 게이밍 머신과 같은, 컨텐츠를 액세스하기 위하여 적당한 임의의 다른 타입의 사용자 장비로서 도 4의 시스템(400)에서 구현될 수 있다. 간략함을 위하여, 이 디바이스들은 사용자 장비 또는 사용자 장비 디바이스들로서 본원에서 집합적으로 지칭될 수도 있고, 위에서 설명된 사용자 장비 디바이스들과 실질적으로 유사할 수도 있다. 미디어 안내 애플리케이션이 그 상에서 구현될 수도 있는 사용자 장비 디바이스들은 단독형 디바이스로서 기능할 수도 있거나, 디바이스들의 네트워크의 일부일 수도 있다. 디바이스들의 다양한 네트워크 구성들이 구현될 수도 있고, 이하에서 더 상세하게 논의된다. 추가적으로, 장비 디바이스(300)는 컨텐츠 제공자들(416 및 418)과 연관된 서버들의 일부로서, 그리고 컨텐츠 어그리게이터(430)와 연관된 서버의 일부로서 구현될 수도 있다.
도 3과 관련하여 위에서 설명된 시스템 특징들의 적어도 일부를 사용하는 사용자 장비 디바이스는 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 또는 무선 사용자 통신 디바이스(406)로서 전적으로 분류되지 않을 수도 있다. 예를 들어, 사용자 텔레비전 장비(402)는 일부 사용자 컴퓨터 장비(404)와 같이, 인터넷 컨텐츠에 대한 액세스를 허용하는 인터넷-가능형일 수도 있는 반면, 사용자 컴퓨터 장비(404)는 일부 텔레비전 장비(402)와 같이, 텔레비전 프로그래밍에 대한 액세스를 허용하는 튜너를 포함할 수도 있다. 미디어 안내 애플리케이션은 다양한 상이한 타입들의 사용자 장비 상에서 동일한 레이아웃을 가질 수도 있거나, 사용자 장비의 디스플레이 능력들에 맞추어질 수도 있다. 예를 들어, 사용자 컴퓨터 장비(404) 상에서, 안내 애플리케이션은 웹 브라우저(web browser)에 의해 액세스된 웹 사이트로서 제공될 수도 있다. 또 다른 예에서, 안내 애플리케이션은 무선 사용자 통신 디바이스들(406)을 위하여 스케일링 다운(scale down)될 수도 있다.
시스템(400)에서는, 전형적으로 하나를 초과하는 각각의 타입의 사용자 장비 디바이스가 있지만, 도면을 과도하게 복잡하게 하는 것을 회피하기 위하여, 각각의 오직 하나가 도 4에서 도시되어 있다. 게다가, 각각의 사용자는 하나를 초과하는 타입의 사용자 장비 디바이스와, 또한, 하나를 초과하는 각각의 타입의 사용자 장비 디바이스를 사용할 수도 있다.
일부 실시형태들에서, 사용자 장비 디바이스(예컨대, 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 및 무선 사용자 통신 디바이스(406))는 "제 2 스크린 디바이스"로서 지칭될 수도 있다. 예를 들어, 제 2 스크린 디바이스는 제 1 사용자 장비 디바이스 상에서 제시된 컨텐츠를 보충할 수도 있다. 제 2 스크린 디바이스 상에서 제시된 컨텐츠는 제 1 디바이스 상에서 제시된 컨텐츠를 보충하는 임의의 적당한 컨텐츠일 수도 있다. 일부 실시형태들에서, 제 2 스크린 디바이스는 제 1 디바이스의 설정들 및 디스플레이 선호도들을 조절하기 위한 인터페이스를 제공한다. 일부 실시형태들에서, 제 2 스크린 디바이스는 다른 제 2 스크린 디바이스들과 상호작용하거나 소셜 네트워크와 상호작용하기 위하여 구성된다. 제 2 스크린 디바이스는 제 1 디바이스와 동일한 룸(room)에서, 제 1 디바이스와는 상이한 룸이지만 동일한 주택 또는 건물에서, 또는 제 1 디바이스와는 상이한 건물에서 위치될 수 있다.
사용자는 또한, 댁내(in-home) 디바이스들 및 원격 디바이스들에 걸쳐 부합하는 미디어 안내 애플리케이션 설정들을 유지하기 위하여 다양한 설정들을 설정할 수도 있다. 설정들은 본원에서 설명된 것들뿐만 아니라, 채널 및 프로그램의 최선호하는 것들, 안내 애플리케이션이 프로그래밍 추천들을 행하기 위하여 사용하는 프로그래밍 선호도들, 디스플레이 선호도들, 및 다른 바람직한 안내 설정들도 포함한다. 예를 들어, 사용자가 예를 들어, 그 사무실에서의 그 개인용 컴퓨터 상에서의 웹 사이트 www.allrovi.com 상에서 채널을 최선호하는 것으로서 설정할 경우, 동일한 채널은 사용자의 댁내 디바이스들(예컨대, 사용자 텔레비전 장비 및 사용자 컴퓨터 장비)뿐만 아니라, 희망할 경우, 사용자의 이동 디바이스들 상에서 최선호하는 것으로서 나타날 것이다. 그러므로, 사용자 장비 디바이스 상에서 행해진 변경들은 그것들이 동일하거나 상이한 타입의 사용자 장비 디바이스인지 여부에 관계 없이, 또 다른 사용자 장비 디바이스 상에서 안내 경험을 변경할 수 있다. 게다가, 행해진 변경들은 사용자에 의해 입력된 설정들뿐만 아니라, 안내 애플리케이션에 의해 모니터링된 사용자 활동에 기초할 수도 있다.
사용자 장비 디바이스들은 통신 네트워크(414)에 결합될 수도 있다. 즉, 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 및 무선 사용자 통신 디바이스(406)는 각각 통신 경로들(408, 410, 및 412)을 통해 통신 네트워크(414)에 결합된다. 통신 네트워크(414)는 인터넷, 이동 전화 네트워크, 이동 음성 또는 데이터 네트워크(예컨대, 4G 또는 LTE 네트워크), 케이블 네트워크, 공중 교환 전화 네트워크(public switched telephone network), 또는 다른 타입들의 통신 네트워크, 또는 통신 네트워크들의 조합들을 포함하는 하나 이상의 네트워크들일 수도 있다. 경로들(408, 410, 및 412)은 위성 경로, 광섬유 경로, 케이블 경로, 인터넷 통신들(예컨대, IPTV)을 지원하는 경로, (예컨대, 방송 또는 다른 무선 신호들을 위한) 자유-공간 접속들, 또는 임의의 다른 적당한 유선 또는 무선 통신 경로, 또는 이러한 경로들의 조합과 같은 하나 이상의 통신 경로들을 별도로 또는 함께 포함할 수도 있다. 경로(412)는 도 4에서 도시된 예시적인 실시형태에서, 그것이 무선 경로인 것을 표시하기 위하여 점선들로 그려져 있고, 경로들(408 및 410)은 (희망할 경우, 이 경로들이 무선 경로들일 수도 있지만) 그것들이 유선 경로들인 것을 표시하기 위하여 실선들로서 그려져 있다. 사용자 장비 디바이스들과의 통신들은 이 통신 경로들 중의 하나 이상에 의해 제공될 수도 있지만, 도면을 과도하게 복잡하게 하는 것을 회피하기 위하여, 도 4에서 단일 경로로서 도시되어 있다.
통신 경로들은 사용자 장비 디바이스들 사이에서 그려져 있지 않지만, 이 디바이스들은 경로들(408, 410, 및 412)과 관련하여 위에서 설명된 것들뿐만 아니라, USB 케이블들, IEEE 1394 케이블들, 무선 경로들(예컨대, 블루투스(Bluetooth), 적외선, IEEE 802-11x 등), 또는 유선 또는 무선 경로들을 통한 다른 단거리 통신과 같은 다른 단거리 포인트-투-포인트(point-to-point) 통신 경로들과 같은 통신 경로들을 통해 서로 직접적으로 통신할 수도 있다. BLUETOOTH는 Bluetooth SIG, INC.에 의해 소유된 인증 마크이다. 사용자 장비 디바이스들은 또한, 통신 네트워크(414)를 거쳐 간접적인 경로를 통해 직접적으로 서로 통신할 수도 있다.
시스템(400)은 컨텐츠 제공자들(416 및 418)뿐만 아니라, 각각 통신 경로들(420, 422, 424, 426, 및 428)을 통해 통신 네트워크(414)에 결합된 컨텐츠 어그리게이터(430)를 포함한다. 경로들(420, 422, 424, 426, 및 428)은 경로들(408, 410, 및 412)과 관련하여 위에서 설명된 통신 경로들 중의 임의의 것을 포함할 수도 있다. 컨텐츠 제공자(416) 및 컨텐츠 어그리게이터(430)와의 통신들은 하나 이상의 통신 경로들 상에서 교환될 수도 있지만, 도면을 과도하게 복잡하게 하는 것을 회피하기 위하여, 도 4에서 단일 경로로서 도시되어 있다. 게다가, 컨텐츠 제공자(416) 및 컨텐츠 어그리게이터(430)의 각각 중의 하나를 초과하는 것이 있을 수도 있지만, 도면을 과도하게 복잡하게 하는 것을 회피하기 위하여, 오직 2 개의 컨텐츠 제공자들 및 하나의 컨텐츠 어그리게이터가 도 4에서 도시되어 있다. (이 소스들의 각각의 상이한 타입들이 이하에서 논의된다.) 사용자 디바이스들(402, 404, 및 406)과의 컨텐츠 제공자들(416 및 418) 사이의 통신들은 통신 네트워크(414)를 통한 것으로서 도시되어 있지만, 일부 실시형태들에서, 컨텐츠 제공자들(416 및 418)은 경로들(408, 410, 및 412)과 관련하여 위에서 설명된 것들과 같은 통신 경로들(도시되지 않음)을 통해 사용자 장비 디바이스들(402, 404, 및 406)과 직접적으로 통신할 수도 있다. 일부 경우들에는, 사용자 장비 디바이스들(402, 404, 및 406)과의 컨텐츠 제공자들(416 및 418) 사이의 통신들이 컨텐츠 어그리게이터(430)를 통해 발생한다. 예를 들어, 사용자 텔레비전 장비(402)와 컨텐츠 제공자(416) 사이의 통신들은 경로들(426, 428, 및 408) 상에서 발생할 수도 있다.
컨텐츠 제공자들(416 및 418)은 텔레비전 분배 설비, 케이블 시스템 헤드엔드(headend), 위성 분배 설비, 프로그래밍 소스들(예컨대, NBC, ABC, HBO 등과 같은 텔레비전 방송사들), 중간 분배 설비들 및/또는 서버들, 인터넷 제공자들, 온-디맨드 미디어 서버들(예컨대, 넷플릭스(Netflix), 훌루(Hulu), 아마존(Amazon) 등), 및 다른 컨텐츠 제공자들을 포함하는 하나 이상의 타입들의 컨텐츠 분배 장비를 포함할 수도 있다. NBC는 National Broadcasting Company, Inc.에 의해 소유된 상표이고, ABC는 American Broadcasting Company, Inc.에 의해 소유된 상표이고, HBO는 Home Box Office, Inc.에 의해 소유된 상표이다. 컨텐츠 제공자(416)는 컨텐츠의 발신자일 수도 있거나(예컨대, 텔레비전 방송사, 웹캐스트 제공자 등), 컨텐츠의 발신자가 아닐 수도 있다(예컨대, 온-디맨드 컨텐츠 제공자, 다운로딩하기 위한 방송 프로그램들의 컨텐츠의 인터넷 제공자 등). 컨텐츠 제공자(416)는 케이블 소스들, 위성 제공자들, 온-디맨드 제공자들, 인터넷 제공자들, 오버-더-톱(over-the-top) 컨텐츠 제공자들, 또는 컨텐츠의 다른 제공자들을 포함할 수도 있다. 컨텐츠 제공자(416)는 또한, 사용자 장비 디바이스들 중의 임의의 것으로부터 원격인 로케이션에서, (사용자에 의해 선택된 비디오 컨텐츠를 포함하는) 상이한 타입들의 컨텐츠를 저장하기 위하여 이용된 원격 미디어 서버를 포함할 수도 있다. 컨텐츠의 원격 저장을 위한, 그리고 원격으로 저장된 컨텐츠를 사용자 장비에 제공하기 위한 시스템들 및 방법들은 그 전체적으로 본원에서의 참조를 위하여 본원에 편입되는, 2010년 7월 20일자로 발행된 Ellis 등, 미국 특허 제7,761,892호와 관련하여 더욱 상세하게 논의된다.
컨텐츠 어그리게이터(430)는 위에서 설명된 바와 같이, 컨텐츠 제공자들(416 및 418)로부터 미디어 안내 데이터를 수집할 수도 있고 이러한 데이터를 제공할 수도 있다. 미디어 안내 데이터는 임의의 적당한 접근법을 이용하여 사용자 장비 디바이스들에 제공될 수도 있다. 일부 실시형태들에서, 안내 애플리케이션은 데이터 피드(예컨대, 연속적인 피드 또는 트리클 피드(trickle feed))를 통해 프로그램 안내 데이터를 수신하는 단독형 대화형 텔레비전 프로그램 가이드일 수도 있다. 프로그램 스케줄 데이터 및 다른 안내 데이터는 대역내(in-band) 디지털 신호를 이용하여, 대역외(out-of-band) 디지털 신호를 이용하여, 또는 임의의 다른 적당한 데이터 송신 기법에 의해 텔레비전 채널 측파대(sideband) 상에서 사용자 장비에 제공될 수도 있다. 프로그램 스케줄 데이터 및 다른 미디어 안내 데이터는 다수의 아날로그 또는 디지털 텔레비전 채널들 상에서 사용자 장비에 제공될 수도 있다. 일부 실시형태들에서, 컨텐츠 어그리게이터(430) 상에서 구현된 제어 회로부(304)는 컨텐츠 제공자들(416 및 418)로부터의 미디어 안내 데이터에 대한 경로들(426 및 424) 상에서의 요청을 송신할 수도 있다.
컨텐츠 어그리게이터(430)는 장비 디바이스들의 각각 상에서 설치된 클라이언트들을 통해 장비 디바이스들(402, 404, 및 406)과 통신할 수도 있다. 예를 들어, 사용자가 컨텐츠 어그리게이터 구독에 초기에 가입할 때, 컨텐츠 어그리게이터(430) 상에서 구현된 제어 회로부(304)는 장비 디바이스로의 클라이언트 애플리케이션의 전송을 가능하게 할 수도 있다. 그 다음으로, 장비 디바이스들(402, 404, 및 406)의 각각 상에서 구현된 제어 회로부(304)는 컨텐츠 어그리게이터(430)로부터의 클라이언트 애플리케이션을 다운로딩할 수도 있고, 설치할 수도 있고, 구성할 수도 있다. 그 다음으로, 클라이언트 애플리케이션은 컨텐츠 어그리게이터(430)로부터 장비 디바이스들로의 미디어 및 미디어 안내 데이터의 전달을 가능하게 할 수도 있다. 클라이언트 애플리케이션은 사용자가 사용자 입력 인터페이스(310)를 이용하여 미디어 리스팅들과 상호작용하는 것을 허용하기 위한, 장비 디바이스(300) 상에서 구현된 제어 회로부(304)가 디스플레이(312) 상에서의 디스플레이를 위하여 생성하는 사용자 인터페이스, 디지털 권리들 관리(Digital Rights Management; DRM) 데이터를 핸들링하기 위한 코드뿐만 아니라, 디스플레이(312) 상에서의 디스플레이를 위하여 미디어를 생성하기 위하여 필요한 코덱들 및 플레이어들을 더 포함할 수도 있다. 일부 실시형태들에서, 클라이언트는 컨텐츠 제공자들(416 및 418)과 직접적으로 통신하도록 구성될 수도 있다. 컨텐츠 어그리게이터(430)는 대응하는 통신 인터페이스를 포함할 수도 있어서, 컨텐츠 어그리게이터 상에서 구현된 제어 회로부(304)는 각각의 장비 디바이스 상에서 구현된 클라이언트로부터 입력을 수신할 수도 있다. 그 다음으로, 컨텐츠 어그리게이터(430) 상에서 구현된 제어 회로부(304)는 통신 인터페이스를 이용하여, 각각의 클라이언트로부터 뿐만 아니라, 각각의 컨텐츠 제공자(416 및 418)로부터 데이터를 전송할 수도 있고 수신할 수도 있다. 컨텐츠 어그리게이터(430)는 컨텐츠 제공자들(416 및 418)로부터의 가입자 정보 및 미디어 컨텐츠 리스팅들을 저장하기 위한 하나 이상의 데이터베이스들을 추가적으로 포함할 수도 있다.
일부 실시형태들에서, 컨텐츠 어그리게이터(430)는 장비 디바이스들(402, 404, 및 406) 상에서 이용가능한 인터넷 브라우저를 통해 장비 디바이스들과 통신할 수도 있다. 예를 들어, 사용자 컴퓨터 장비(404)는 인터넷 익스플로러(Internet Explorer)의 구현예를 포함할 수도 있다. 사용자가 컨텐츠 어그리게이터 구독의 미디어 제공들을 액세스하는 것을 희망할 때(예컨대, 사용자는 사용자가 가입하는 컨텐츠 어그리게이터 구독의 일부로서 이용가능한 넷플릭스 리스팅들을 액세스하는 것을 희망할 수도 있음), 장비 디바이스(404) 상에서 구현된 제어 회로부(304)는 디스플레이(312) 상에서 비디오 모자이크 디스플레이(200)를 포함하는 브라우저 윈도우를 출력할 수도 있다. 그 다음으로, 장비 디바이스(404) 상에서 구현된 제어 회로부(304)는 사용자 입력 인터페이스(310)로부터, 사용자가 컨텐츠 어그리게이터 구독의 일부인 구독 서비스로부터의 컨텐츠를 액세스하는 것을 희망한다는 것을 표시하는 선택을 수신할 수도 있다. 예를 들어, 사용자는 텍스트 부분(216)(예컨대, 넷플릭스)을 강조표시하고 선택하기 위하여 마우스 포인터를 지시할 수도 있다. 그 다음으로, 장비 디바이스(404) 상에서 구현된 제어 회로부(304)는 텍스트 부분(216)에 대응하는 입력을, 인터넷 브라우저를 작동시키는 프로세스로 송신할 수도 있어서, 브라우저가 선택된 구독 서비스와 연관된 인터넷 웹 사이트(예컨대, www.netflix.com)를 취출하고 디스플레이하는 것을 가능하게 할 수도 있다.
일부 실시형태들에서, 컨텐츠 어그리게이터(430)로부터의 안내 데이터는 클라이언트-서버 접근법을 이용하여 사용자들의 장비에 제공될 수도 있다. 예를 들어, 사용자 장비 디바이스는 서버로부터 미디어 안내 데이터를 풀(pull)할 수도 있거나, 서버는 미디어 안내 데이터를 사용자 장비 디바이스로 푸시(push)할 수도 있다. 일부 실시형태들에서, 사용자의 장비 상에서 상주하는 안내 애플리케이션 클라이언트는 필요할 때, 예컨대, 안내 데이터가 오래될 때, 또는 사용자 장비 디바이스가 데이터를 수신하기 위하여 사용자로부터 요청을 수신할 때, 안내 데이터를 획득하기 위하여 컨텐츠 어그리게이터(430)와의 세션들을 개시할 수도 있다. 미디어 안내는 임의의 적당한 빈도로(예컨대, 연속적으로, 매일, 사용자-특정된 시간의 주기, 시스템-특정된 시간의 주기, 사용자 장비로부터의 요청에 응답하여 등) 사용자 장비에 제공될 수도 있다. 컨텐츠 어그리게이터(430)는 미디어 안내 애플리케이션 자체, 또는 미디어 안내 애플리케이션을 위한 소프트웨어 업데이트들을 사용자 장비 디바이스들(402, 404, 및 406)에 제공할 수도 있다.
일부 실시형태들에서, 미디어 안내 데이터는 뷰어 데이터를 포함할 수도 있다. 예를 들어, 뷰어 데이터(viewer data)는 현재 및/또는 이력적인 사용자 활동 정보(예컨대, 사용자가 전형적으로 어떤 컨텐츠를 시청하는지, 사용자가 소셜 네트워크와 상호작용하든지 간에 사용자가 하우의 어떤 시간들에 컨텐츠를 시청하는지, 사용자가 정보를 포스팅하기 위하여 어떤 시간들에 소셜 네트워크와 상호작용하는지, 사용자가 전형적으로 어떤 타입들의 컨텐츠를 시청하는지(예컨대, 유료 TV 또는 무료 TV), 분위기, 두뇌 활동 정보 등)를 포함할 수도 있다. 미디어 안내 데이터는 또한, 구독 데이터를 포함할 수도 있다. 예를 들어, 구독 데이터는 주어진 사용자가 어느 소스들 또는 서비스들에 가입하는지, 및/또는 주어진 사용자가 어느 소스들 또는 서비스들에 이전에 가입하였지만 더 이후에 액세스를 종결하였는지(예컨대, 사용자가 프리미엄 채널들에 가입하는지 여부, 사용자가 서비스들의 프리미엄 레벨을 추가하였는지 여부, 사용자가 인터넷 속력을 증가시켰는지 여부)를 식별할 수도 있다. 일부 실시형태들에서, 뷰어 데이터 및/또는 구독 데이터는 1 년을 초과하는 주기에 대한 주어진 사용자의 패턴들을 식별할 수도 있다. 미디어 안내 데이터는 주어진 사용자가 서비스/소스에 대한 액세스를 종결할 가능성을 표시하는 점수를 생성하기 위하여 이용된 모델(예컨대, 생존자 모델)을 포함할 수도 있다. 예를 들어, 미디어 안내 애플리케이션은 주어진 사용자가 특정한 서비스 또는 소스에 대한 액세스를 종결할 것인지 여부의 가능성을 표시하는 값 또는 점수를 생성하기 위하여, 모델을 이용하여 구독 데이터로 뷰어 데이터를 프로세싱할 수도 있다. 특히, 더 높은 점수는 사용자가 특정한 서비스 또는 소스에 대한 액세스를 종결할 확실성의 더 높은 레벨을 표시할 수도 있다. 점수에 기초하여, 미디어 안내 애플리케이션은 사용자가 점수에 의해 표시된 특정한 서비스 또는 소스를, 사용자가 액세스를 종결할 가능성이 있을 것으로서 유지할 것을 유도하는 홍보들 및 광고들을 생성할 수도 있다.
미디어 안내 애플리케이션들은 예를 들어, 사용자 장비 디바이스들 상에서 구현된 단독형 애플리케이션들일 수도 있다. 예를 들어, 미디어 안내 애플리케이션은, 스토리지(308) 내에 저장될 수도 있고 장비 디바이스(300)의 제어 회로부(304)에 의해 실행될 수도 있는 소프트웨어 또는 실행가능한 명령어들의 세트로서 구현될 수도 있다. 일부 실시형태들에서, 미디어 안내 애플리케이션들은 클라이언트-서버 애플리케이션들일 수도 있고, 여기서, 오직 클라이언트 애플리케이션이 사용자 장비 디바이스 상에서 상주하고, 서버 애플리케이션은 원격 서버 상에서 상주한다. 예를 들어, 미디어 안내 애플리케이션들은 부분적으로 장비 디바이스(300)의 제어 회로부(304) 상에서 클라이언트 애플리케이션으로서, 그리고 부분적으로 원격 서버 상에서, 원격 서버의 제어 회로부 상에서 작동하는 서버 애플리케이션(예컨대, 컨텐츠 어그리게이터(430))으로서 구현될 수도 있다. (컨텐츠 어그리게이터(430)와 같은) 원격 서버의 제어 회로부에 의해 실행될 때, 미디어 안내 애플리케이션은 안내 애플리케이션 디스플레이들을 생성하고 생성된 디스플레이들을 사용자 장비 디바이스들로 송신할 것을 제어 회로부에 명령할 수도 있다. 서버 애플리케이션은 사용자 장비 상에서의 저장을 위한 데이터를 송신할 것을 컨텐츠 어그리게이터(430)의 제어 회로부에 명령할 수도 있다. 클라이언트 애플리케이션은 안내 애플리케이션 디스플레이들을 생성할 것을 수신하는 사용자 장비의 제어 회로부에 명령할 수도 있다.
사용자 장비 디바이스들(402, 404, 및 406)로 전달된 컨텐츠 및/또는 미디어 안내 데이터는 오버-더-톱(over-the-top; OTT) 컨텐츠일 수도 있다. OTT 컨텐츠 전달은 위에서 설명된 임의의 사용자 장비 디바이스를 포함하는 인터넷-가능형 사용자 디바이스들이 케이블 또는 위성 접속들 상에서 수신된 컨텐츠에 추가하여, 위에서 설명된 임의의 컨텐츠를 포함하는, 인터넷 상에서 전송되는 컨텐츠를 수신하는 것을 허용한다. OTT 컨텐츠는 인터넷 서비스 제공자(Internet service provider; ISP)에 의해 제공된 인터넷 접속을 통해 전달되지만, 제 3 당사자는 컨텐츠를 분배한다. ISP는 컨텐츠의 뷰잉 능력들, 저작권들, 또는 재분배를 담당하지 않을 수도 있고, OTT 컨텐츠 제공자에 의해 제공된 IP 패킷들을 오직 전송할 수도 있다. OTT 컨텐츠 제공자들의 예들은 IP 패킷들을 통해 오디오 및 비디오를 제공하는 YOUTUBE, NETFLIX, 및 HULU를 포함한다. 유튜브(Youtube)는 Google Inc.에 의해 소유된 상표이고, 넷플릭스(Netflix)는 Netflix Inc.에 의해 소유된 상표이고, 훌루(Hulu)는 Hulu, LLC.에 의해 소유된 상표이다. OTT 컨텐츠 제공자들은 위에서 설명된 미디어 안내 데이터를 추가적으로 또는 대안적으로 제공할 수도 있다. 컨텐츠 및/또는 미디어 안내 데이터에 추가하여, OTT 컨텐츠의 제공자들은 미디어 안내 애플리케이션들(예컨대, 웹-기반 애플리케이션들 또는 클라우드-기반 애플리케이션들)을 분배할 수 있거나, 컨텐츠는 사용자 장비 디바이스 상에서 저장된 미디어 안내 애플리케이션들에 의해 디스플레이될 수 있다.
미디어 안내 시스템(400)은 다수의 접근법들 또는 네트워크 구성들을 예시하도록 의도된 것이고, 이 다수의 접근법들 또는 네트워크 구성들에 의해, 사용자 장비 디바이스들 및 컨텐츠 및 안내 데이터의 소스들은 컨텐츠를 액세스하고 미디어 안내를 제공하는 목적을 위하여 서로 통신할 수도 있다. 본원에서 설명된 실시형태들은 이 접근법들 중의 임의의 하나 또는 서브세트에서, 또는 컨텐츠를 전달하고 미디어 안내를 제공하기 위한 다른 접근법들을 채용하는 시스템에서 적용될 수도 있다. 다음의 4 개의 접근법들은 도 4의 일반화된 예의 특정 예시들을 제공한다.
하나의 접근법에서, 사용자 장비 디바이스들은 홈 네트워크 내에서 서로 통신할 수도 있다. 사용자 장비 디바이스들은 위에서 설명된 단거리 포인트-투-포인트 통신 방식들을 통해, 홈 네트워크 상에서 제공된 허브(hub) 또는 다른 유사한 디바이스를 통한 간접적인 경로들을 통해, 또는 통신 네트워크(414)를 통해 직접적으로 서로 통신할 수 있다. 단일 홈에서의 다수의 개인들의 각각은 홈 네트워크 상에서 상이한 사용자 장비 디바이스들을 동작시킬 수도 있다. 그 결과, 다양한 미디어 안내 정보 또는 설정들이 상이한 사용자 장비 디바이스들 사이에서 통신되는 것이 바람직할 수도 있다. 예를 들어, 2005년 7월 11일자로 출원된 Ellis 등, 미국 특허 공개 제2005/0251827호에서 더욱 상세하게 설명된 바와 같이, 사용자들이 홈 네트워크 내의 상이한 사용자 장비 디바이스들 상에서 부합하는 미디어 안내 애플리케이션 설정들을 유지하는 것이 바람직할 수도 있다. 홈 네트워크에서의 상이한 타입들의 사용자 장비 디바이스들은 또한, 컨텐츠를 송신하기 위하여 서로 통신할 수도 있다. 예를 들어, 사용자는 컨텐츠를 사용자 컴퓨터 장비로부터 휴대용 비디오 플레이어 또는 휴대용 음악 플레이어로 송신할 수도 있다.
제 2 접근법에서, 사용자들은 다수의 타입들의 사용자 장비를 가질 수도 있고, 이 다수의 타입들의 사용자 장비에 의해, 그들은 컨텐츠를 액세스하고 미디어 안내를 획득한다. 예를 들어, 일부 사용자들은 댁내 및 이동 디바이스들에 의해 액세스되는 홈 네트워크들을 가질 수도 있다. 사용자들은 원격 디바이스 상에서 구현된 미디어 안내 애플리케이션을 통해 댁내 디바이스들을 제어할 수도 있다. 예를 들어, 사용자들은 그 사무실에서의 개인용 컴퓨터, 또는 PDA 또는 웹-가능형 이동 전화와 같은 이동 디바이스를 통해 웹사이트 상의 온라인 미디어 안내 애플리케이션을 액세스할 수도 있다. 사용자는 사용자의 댁내 장비를 제어하기 위하여 온라인 안내 애플리케이션 상의 다양한 설정들(예컨대, 레코딩들, 리마인더(reminder)들, 또는 다른 설정들)을 설정할 수도 있다. 온라인 가이드는 직접적으로, 또는 사용자의 댁내 장비 상의 미디어 안내 애플리케이션과 통신함으로써, 사용자의 장비를 제어할 수도 있다. 사용자 장비 디바이스들이 서로로부터 원격인 로케이션들에 있는, 통신하는 사용자 장비 디바이스들을 위한 다양한 시스템들 및 방법들은 예를 들어, 그 전체적으로 본원에서의 참조로 본원에 편입되는, 2011년 10월 25일자로 발행된 Ellis 등, 미국 특허 제8,046,801호에서 논의되어 있다.
제 3 접근법에서, 홈의 내부 및 외부의 사용자 장비 디바이스들의 사용자들은 컨텐츠 제공자(416)와 직접적으로 통신하여 컨텐츠를 액세스하기 위하여 그 미디어 안내 애플리케이션을 이용할 수 있다. 구체적으로, 홈 내에서, 사용자 텔레비전 장비(402) 및 사용자 컴퓨터 장비(404)의 사용자들은 바람직한 컨텐츠 사이에서 내비게이팅하고 바람직한 컨텐츠를 위치시키기 위하여 미디어 안내 애플리케이션을 액세스할 수도 있다. 사용자들은 또한, 바람직한 컨텐츠 사이에서 내비게이팅하고 바람직한 컨텐츠를 위치시키기 위하여 무선 사용자 통신 디바이스들(406)을 이용하여 홈의 외부에서 미디어 안내 애플리케이션을 액세스할 수도 있다.
제 4 접근법에서, 사용자 장비 디바이스들은 클라우드 서비스들을 액세스하기 위하여 클라우드 컴퓨팅 환경에서 동작할 수도 있다. 클라우드 컴퓨팅 환경에서, 컨텐츠 공유, 저장, 또는 분배를 위한 다양한 타입들의 컴퓨팅 서비스들(예컨대, 비디오 공유 사이트들 또는 소셜 네트워킹 사이트들)은 "클라우드(cloud)"로서 지칭된, 네트워크-액세스가능한 컴퓨팅 및 저장 자원들의 집합에 의해 제공된다. 예를 들어, 클라우드는 클라우드-기반 서비스들을 통신 네트워크(414)를 통한 인터넷과 같은 네트워크를 통해 접속된 다양한 타입들의 사용자들 및 디바이스들에 제공하는, 중앙집중식으로 또는 분산된 로케이션들에서 위치될 수도 있는 서버 컴퓨팅 디바이스들의 집합을 포함할 수 있다. 이 클라우드 자원들은 하나 이상의 컨텐츠 제공자(416) 및 하나 이상의 컨텐츠 어그리게이터들(430)을 포함할 수도 있다. 추가적으로 또는 대안적으로, 원격 컴퓨팅 사이트들은 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 및 무선 사용자 통신 디바이스(406)와 같은 다른 사용자 장비 디바이스들을 포함할 수도 있다. 예를 들어, 다른 사용자 장비 디바이스들은 비디오 또는 스트리밍된 비디오의 저장된 복사본에 대한 액세스를 제공할 수도 있다. 이러한 실시형태들에서, 사용자 장비 디바이스들은 중앙 서버와 통신하지 않으면서, 피어-투-피어 방식으로 동작할 수도 있다.
클라우드는 사용자 장비 디바이스들을 위하여, 다른 예들 중에서도, 컨텐츠 저장, 컨텐츠 공유, 또는 소셜 네트워킹 서비스들과 같은 서비스들에 대한 액세스뿐만 아니라, 위에서 설명된 임의의 컨텐츠에 대한 액세스를 제공한다. 서비스들은 클라우드 컴퓨팅 서비스 제공자들을 통해, 또는 온라인 서비스들의 다른 제공자들을 통해 클라우드에서 제공될 수 있다. 예를 들어, 클라우드-기반 서비스들은 컨텐츠 저장 서비스, 컨텐츠 공유 사이트, 소셜 네트워킹 사이트, 또는 사용자-소싱된(user-sourced) 컨텐츠가 접속된 디바이스들 상에서의 다른 사람들에 의한 뷰잉을 위하여 이를 통해 분배되는 다른 서비스들을 포함할 수 있다. 이 클라우드-기반 서비스들은 사용자 장비 디바이스가 컨텐츠를 로컬 방식으로 저장하고 로컬방식으로 저장된 컨텐츠를 액세스하는 것이 아니라, 컨텐츠를 클라우드에 저장하고 클라우드로부터 컨텐츠를 수신하는 것을 허용할 수도 있다.
사용자는 컨텐츠를 레코딩하기 위하여, 캠코더들, 비디오 모드를 갖는 디지털 카메라들, 오디오 레코더들, 이동 전화들, 및 핸드헬드 컴퓨팅 디바이스들과 같은 다양한 컨텐츠 캡처 디바이스들을 이용할 수도 있다. 사용자는 예를 들어, 컨텐츠 캡처 특징을 가지는 사용자 컴퓨터 장비(404) 또는 무선 사용자 통신 디바이스(406)의 어느 하나로부터 직접적으로, 클라우드 상의 컨텐츠 저장 서비스로 컨텐츠를 업로딩할 수 있다. 대안적으로, 사용자는 먼저, 컨텐츠를 사용자 컴퓨터 장비(404)와 같은 사용자 장비 디바이스로 전송할 수 있다. 컨텐츠를 저장하는 사용자 장비 디바이스는 통신 네트워크(414) 상에서의 데이터 송신 서비스를 이용하여 컨텐츠를 클라우드로 업로딩한다. 일부 실시형태들에서, 사용자 장비 디바이스 자체는 클라우드 자원이고, 다른 사용자 장비 디바이스들은 사용자가 컨텐츠를 그 상에 저장하였던 사용자 장비 디바이스로부터 직접적으로 컨텐츠를 액세스할 수 있다.
클라우드 자원들은 예를 들어, 웹 브라우저, 미디어 안내 애플리케이션, 데스크톱 애플리케이션, 이동 애플리케이션, 및/또는 이것의 액세스 애플리케이션들의 임의의 조합을 이용하여 사용자 장비 디바이스에 의해 액세스될 수도 있다. 사용자 장비 디바이스는 애플리케이션 전달을 위하여 클라우드 컴퓨팅에 의존하는 클라우드 클라이언트일 수도 있거나, 사용자 장비 디바이스는 클라우드 자원들에 대한 액세스를 갖지 않는 일부 기능성을 가질 수도 있다. 예를 들어, 사용자 장비 디바이스 상에서 작동하는 일부 애플리케이션들은 클라우드 애플리케이션들, 즉, 인터넷 상에서 서비스로서 전달된 애플리케이션들일 수도 있는 반면, 다른 애플리케이션들은 사용자 장비 디바이스 상에서 저장될 수도 있고 작동될 수도 있다. 일부 실시형태들에서, 사용자 디바이스는 동시에 다수의 클라우드 자원들로부터 컨텐츠를 수신할 수도 있다. 예를 들어, 사용자 디바이스는 제 2 클라우드 자원으로부터 컨텐츠를 다운로딩하면서, 하나의 클라우드 자원으로부터 오디오를 스트리밍할 수 있다. 또는, 사용자 디바이스는 더 효율적인 다운로딩을 위하여 다수의 클라우드 자원들로부터 컨텐츠를 다운로딩할 수 있다. 일부 실시형태들에서, 사용자 장비 디바이스들은 도 3과 관련하여 설명된 프로세싱 회로부에 의해 수행된 프로세싱 동작들과 같은 동작들을 프로세싱하기 위한 클라우드 자원들을 이용할 수 있다.
컨텐츠 구독들을 제공하는 서비스들은 사용자들이 미디어를 동시에 스트리밍하는 것을 허용하기 위하여, 유한한 수의 스트림들을 각각의 구독에 종종 할당한다. 그러나, 각각의 구독에 할당된 스트림들의 수는 구독의 타입에 기초하여 제한된다. 실제로, 구독의 모든 이용가능한 스트림들이 이용 중일 때, 미디어를 스트리밍하는 것을 희망하는 컨텐츠 구독의 사용자는 스트림이 이용가능해질 때가지 대기하거나, 또 다른 사용자에 의해 이용된 스트림을 제어할 것을 선택하는 것의 어느 하나가 강제될 수도 있다. 이것은 예를 들어, 컨텐츠 구독의 모든 사용자들이 에피소드가 이용가능하게 되자마자 텔레비전 쇼의 새로운 에피소드를 뷰잉하는 것에 관심 있고, 사용자들의 수가 이용가능한 스트림들의 수를 초과할 때, 사용자들을 특히 실망스럽게 하는 것으로 된다. 또한, 사용자들은 추가적인 스트림들을 구입하기 위한 옵션들을 인지하지 못할 수도 있고, 또한, 컨텐츠 구독의 다른 사용자들이 스트림들이 이용불가능한 것으로 인해 컨텐츠를 스스로 뷰잉할 수 없는 것을 발견하는 빈도를 인지하지 않을 수도 있다.
따라서, 방법들 및 시스템들은 사용자가 다수의 구독 서비스들에 대한 다수의 계정들을 관리해야 하는 것을 완화시키는 미디어 안내 애플리케이션으로부터 본원에서 설명된다. 예를 들어, 사용자 활동을 모니터링하고 사용자 대신에 사용자 계정들을 관리함으로써, 제어 회로부(304)는 사용자의 개별적인 필요성들에 맞추어진 구독 서비스들 및/또는 구독 서비스의 기간들을 추천할 수도 있다.
또한, 제어 회로부(304)는 구독 서비스들, 및/또는 사용자의 필요성들을 최상으로 충족시키는 특정한 구독 서비스로부터의 특정한 계획을 결정하기 위하여, 수 많은 컨텐츠 제공자들로부터 다량의 데이터를 취출하고 프로세싱하도록 사용자를 대신하여 작용할 수도 있다. 이하에서 심도 있게 논의된 바와 같이, 미디어 안내 애플리케이션은 사용자의 이익을 위한 추세들 및 통계적 최적화들을 식별하기 위하여 별도의 그리고 이질적인 데이터세트들을 비교함으로써, (오직 컴퓨터-판독가능 코드로 종종 액세스가능한) 다량의 데이터를 프로세싱할 수도 있다.
일부 실시형태들에서, 제어 회로부(304)는 구독 서비스로부터 사용자에 의해 이용가능한 이용가능한 스트림들의 수를 사용자와 연관된 구독과 연관시키도록 구성될 수도 있다. 제어 회로부(304)는 컨텐츠 제공자(416) 내에서, 또는 컨텐츠 어그리게이터(430) 내에서와 같이, 서버에서 구현될 수도 있다. 컨텐츠 어그리게이터(430) 상에서 구현된 제어 회로부(304)는 통신 네트워크(414)를 이용하여, 구독을 액세스하는 사용자들에 의해 이용된 다양한 디바이스들과 통신할 수도 있다. 이 디바이스들은 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 및 무선 사용자 통신 디바이스들(406)을 포함할 수도 있다. 예를 들어, 제어 회로부(304)는 미디어 컨텐츠(예컨대, 텔레비전 쇼 "The Simpsons"의 에피소드)를 미디어 컨텐츠 제공자(416)로부터 컴퓨터 장비(404)로 스트리밍하기 위한 요청을 수신한다. 컨텐츠 어그리게이터(430) 상에서 구현된 제어 회로부(304)가 요청들의 수가 이용가능한 스트림들의 수를 초과하지 않는 것으로 결정하면, 컨텐츠 어그리게이터(430) 상에서 구현된 제어 회로부(304)는 그 다음으로, 통신 네트워크(414)를 이용하여, 미디어 컨텐츠를 사용자 컴퓨터 장비(404)로 스트리밍한다.
일부 실시형태들에서, 제어 회로부(304)는 스토리지(308) 내에 저장된 로그에서의 각각의 요청과 연관된 데이터를 레코딩할 수도 있다. 예를 들어, 미디어 컨텐츠를 스트리밍하기 위한 요청에 응답하여, 제어 회로부(304)는 요청과 연관된 타임스탬프, 요청된 미디어 컨텐츠에 대한 참조(예컨대, 텔레비전 쇼 "The Simpsons"의 에피소드에 대한 참조), 컨텐츠를 요청하는 사용자의 식별자, 사용자가 컨텐츠를 요청하기 위하여 이용하고 있는 디바이스의 식별자, 및 요청 시에 이용가능한 스트림들의 수를 레코딩한다. 추가적으로, 제어 회로부(304)는 요청이 이행되었는지 여부의 표시를 저장할 수도 있다. 이 표시를 제공하기 위하여, 제어 회로부(304)는 이용가능한 스트림들의 수를, 요청 시에 미디어를 스트리밍하기 위한 요청들의 총 수와 비교할 수도 있다. 그 다음으로, 제어 회로부(304)는 요청이 이행되었는지 여부의 표시를 저장할 수도 있다.
일부 실시형태들에서, 제어 회로부(304)는 스토리지(308) 내에 저장된 로그에서, 미디어 데이터를 스트리밍하기 위한 각각의 요청과 연관된 시작 타임스탬프들 및 종료 타임스탬프들을 레코딩할 수도 있다. 제어 회로부(304)는 타임스탬프를 각각의 인스턴스에 상관시킴으로써, 사용자들이 불충분한 수의 이용가능한 스트림들로 인해 컨텐츠를 스트리밍할 수 없었던 그 인스턴스들을 효과적으로 추적하기 위하여 타임스탬프들을 사용할 수도 있다. 예를 들어, 시작 타임스탬프는 제어 회로부(304)가 미디어를 사용자 디바이스로 스트리밍하기 위한 요청을 수신하였던 시간에서의 또는 그 근처에서의 시간에 대응한다. 종료 타임스탬프는 (예컨대, 미디어의 재생이 완결되었을 때, 또는 사용자가 미디어의 재생을 종결할 것을 요청하였을 때) 제어 회로부(304)가 스트림을 사용자 디바이스로 전송하는 것을 중단하였던 시간에서의 또는 그 근처에서의 시간을 표시할 수도 있다. 제어 회로부(304)가 미디어를 디바이스로 스트리밍하기 위한 요청을 수신하고, 요청이 수신되는 시간에서의 총 요청들의 수가 사용자에 의해 이용가능한 스트림들의 수를 초과할 때, 제어 회로부(304)는 미디어를 스트리밍하기 위한 요청이 이행되지 않았다는 것을 표시하기 위하여, 종료 타임스탬프를 레코딩하지 않으면서, 오직 시작 타임스탬프를 레코딩할 수도 있다.
일부 실시형태들에서, 제어 회로부(304)는 유한한 수의 스트림들을 구독과 연관시킬 수도 있다. 예를 들어, 제어 회로부(304)는 9 개의 스트림들을 사용자, 로버트(Rober)의 구독과 연관시킨다. 다시 말해서, 9 개의 스트림들은 로버트가 컨텐츠를 스트리밍하기 위해 이용하기 위하여 이용가능하다. 따라서, 임의의 다른 사용자가 로버트의 구독을 이용하여 미디어를 스트리밍할 것을 요청하면, 요청이 행해지는 시간에서, 요청들의 수가 이용가능한 스트림들의 수를 초과하지 않는 한, 그 요청이 이행될 것이다.
일부 실시형태들에서, 제어 회로부(304)는 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 복수의 인스턴스들을 검출할 수도 있다. 예를 들어, 제어 회로부(304)는 레코드와 연관된 주어진 요청이 이행되지 않았다는 것을 표시하는 식별자를 포함하는 레코드들을 식별하기 위하여, 스토리지(308) 내의 로그에서 저장된 레코드들을 취출한다. 또 다른 예에서, 제어 회로부(304)는 스토리지(308) 내에 저장된 로그로부터 요청들과 연관된 시작 타임스탬프들을 취출한다. 각각의 취출된 시작 타임스탬프에 대하여, 제어 회로부(304)는 쌍을 이룬 시작 타임스탬프들 및 종료 타임스탬프들에 의해 정의된 타임스탬프 범위들과의 중첩들의 수를 결정할 수도 있다. 예를 들어, 타임스탬프 범위는 (즉, 제어 회로부(304)가 미디어를 사용자 디바이스로 스트리밍하기 위한 요청을 수신하였던 시간 또는 시간 근처와 연관된 시간에 대응하는) 시작 타임스탬프와, (즉, 제어 회로부(304)가 스트림을 사용자 디바이스로 전송할 것을 중단하였던 시간에서의 또는 그 근처에서의 시간에 대응하는) 종료 타임스탬프 사이의 시간의 기간에 대응한다. 그 다음으로, 제어 회로부(304)는 중첩들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수보다 더 큰지 여부를 결정할 수도 있다. 중첩들의 수가 이용가능한 스트림들의 수보다 더 클 경우, 제어 회로부(304)는 중첩을 인스턴스와 연관시킬 수도 있다. 제어 회로부(304)는 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 인스턴스들의 수를 결정하기 위하여, 로그에서 저장된 모든 타임스탬프들 또는 타임스탬프들의 서브세트를 추가로 분석할 수도 있다. 예를 들어, 제어 회로부(304)는 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 12 개의 인스턴스들을 검출한다. 다시 말해서, 12 개의 경우들에는, 적어도 하나의 사용자가 구독 서비스로부터 스트림을 액세스할 수 없었다.
일부 실시형태들에서, 제어 회로부(304)는 복수의 타임스탬프들의 각각이 복수의 인스턴스들 중의 하나에 대응하는 복수의 타임스탬프들을 생성할 수도 있다. 예를 들어, 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 다수의 인스턴스들을 검출하는 것에 기초하여, 제어 회로부(304)는 스토리지(308) 내의 리스트에서 각각의 인스턴스와 연관된 타임스탬프를 저장한다. 시작 타임스탬프들 및 종료 타임스탬프들을 분석하는 상기 예를 계속하면, 제어 회로부(304)는 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 복수의 인스턴스들을 검출한 후에, 각각의 인스턴스를 대응하는 시작 타임스탬프와 연관시킨다. 예를 들어, 제어 회로부(304)가 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 12 개의 인스턴스들을 검출할 경우, 제어 회로부(304)는 타임스탬프들의 리스트를 생성하고 이를 스토리지(308) 내에 저장하고, 여기서, 각각의 타임스탬프는 12 개의 인스턴스들 중의 하나에 대응한다.
일부 실시형태들에서, 제어 회로부(304)는 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수를 결정하기 위하여, 복수의 타임스탬프들의 각각을, 구독 서비스에 대한 구독 주기에 대응하는 타임스탬프들의 범위와 비교할 수도 있다. 예를 들어, 제어 회로부(304)가 12 개의 타임스탬프들을 생성할 경우, 제어 회로부(304)는 그 다음으로, 구독 주기 내로 속하는 (그 대응하는 타임스탬프들에 기초하여) 인스턴스들의 수를 결정하기 위하여, 12 개의 타임스탬프들의 각각을 구독 서비스에 대한 구독 주기와 비교한다. 이전에 논의된 바와 같이, 구독 주기는 시작 타임스탬프 및 종료 타임스탬프에 의해 정의될 수도 있다. 그 다음으로, 제어 회로부(304)는 각각의 타임스탬프가 구독 주기의 시작 및 종료 타임스탬프들에 의해 정의된 시간의 범위 내에 속하는지 여부를 결정하기 위하여 12 개의 타임스탬프들의 각각을 비교한다. 범위 내에 속하는 타임스탬프들의 수에 기초하여, 제어 회로부(304)는 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수를 결정할 수도 있다. 예를 들어, 제어 회로부(304)는 12 개의 생성된 타임스탬프들 중에서, 9 개가 구독 주기의 시작 및 종료 타임스탬프들에 의해 정의된 시간의 범위 내에 속하는 것으로 결정한다.
일부 실시형태들에서, 제어 회로부(304)는 서버에서, 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수를 구독 주기에 대한 임계 수와 비교할 수도 있다. 예를 들어, 임계 수는 사용자가 이용가능한 스트림들의 결여로 실망하게 될 수도 있게 된 후의 인스턴스들의 수를 표시할 수도 있다. 임계 수가 초월하게 되는지 아닌지 여부를 결정함으로써, 제어 회로부는 사용자가 추가적인 스트림들을 획득하는 것을 원할 가능성이 있는지 아닌지의 여부를 결정할 수도 있다. 이하에서 더 분명해지는 바와 같이, 제어 회로부(304)는 구독 주기에 대한 임계 수를 결정하기 위하여 상이한 접근법들을 사용할 수도 있다. 이에 따라, 단일의 정적 임계치에 의존하는 대신에, 제어 회로부는 개별적인 사용자들이 이용불가능한 스트림들을 용인하기 위한 변동되는 능력들을 가지므로, 사용자의 뷰잉 습관들로부터 유도된 임계치를 적용할 수도 있다. 예를 들어, 제어 회로부(304)는 임계 수를, 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수에 기초하게 한다. 예를 들어, 제어 회로부(304)는 이용불가능한 스트림들과 부합하게 대면하게 되는 사용자들을 타겟화한다. 그 목적을 위하여, 제어 회로부(304)가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수(예컨대, 9 개의 스트림들)가 구독 서비스의 평균 사용자(예컨대, 평균 사용자는 오직 2 개의 스트림들과 연관될 수도 있음)에 의해 이용가능한 스트림들의 평균 수보다 더 높은 것으로 결정할 경우, 제어 회로부(304)는 임계 수를 더 낮은 수(예컨대, 4)로 설정한다. 다수의 스트림들과 연관된 구독에서의 사용자들이 스트리밍 충돌들을 최소화하기 위하여 여분의 스트림들을 이전에 추가하였으므로, 이러한 사용자들은 추가의 스트리밍 충돌들을 경험하는 것에 이미 민감할 수도 있다. 그러므로, 제어 회로부(304)는 스트리밍 충돌들의 수가 더 낮은 임계치를 초과할 때에 이러한 시스템들에서의 사용자들을 타겟화할 수도 있다.
일부 실시형태들에서, 제어 회로부(304)는 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수가 구독 주기에 대한 임계 수를 초과하는 것으로 결정하는 것에 응답하여, 메시지를 통신 네트워크(414)를 통해 서버로부터 상이한 디바이스들 중의 하나로 송신할 수도 있다. 메시지를 송신함으로써, 제어 회로부(304)는 컨텐츠를 스트리밍할 수 없는 것에 의한 사용자의 실망감을 해결할 수도 있고, 사용자가 불충분한 양의 이용가능한 스트림들의 문제를 해결하기 위한 기회를 제공할 수도 있다. 제어 회로부(304)는 다른 변수들(예컨대, 가격)을 제어하면서, 대안적인 구독 서비스/계획이 데이터 스트림 입력 및 출력 메트릭들과 비교할 때, 사용자에 의해 이용가능한 스트림들의 수를 개선시킬 수도 있는지 아닌지 여부를 결정할 수도 있다. 그러할 경우, 제어 회로부는 (예컨대, 추가적인 스트림이 구입을 위하여 이용가능하다는 것을 표시하는) 대안적인 구독 서비스/계획을 추천하는 메시지를 송신할 수도 있다. 예를 들어, 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수(예컨대, 12)가 임계 수(예컨대, 8)를 초과하는 것으로 결정하는 것에 응답하여, 제어 회로부(304)는 디바이스와 연관된 사용자가 추가적인 스트림들을 구입할 수 있다는 것을 표시하는 메시지를 서버로부터 디바이스로 송신한다. 제어 회로부(304)는 사용자가 빈번한 스트리밍 충돌들로 인해 추가적인 스트림들을 구매할 수 있다는 것을 표시하기 위한 메시지를 생성할 수도 있다. 제어 회로부(304)는 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 또는 무선 통신 디바이스(406)의 디스플레이(312) 상에서의 디스플레이를 위한 메시지를 송신할 수도 있다. 예를 들어, 제어 회로부(304)는 사용자 텔레비전 장비(402)의 디스플레이(312) 상에서 디스플레이되는 프로그램 리스팅들 디스플레이(100)에서의 디스플레이를 위한 메시지를 생성한다.
일부 실시형태들에서, 제어 회로부(304)는 구독 주기의 시간의 길이에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기에 대한 임계 수를 선택할 수도 있다. 제어 회로부(304)는 스토리지(308) 내에 저장된 구독과 연관된 데이터를 액세스함으로써 구독 주기와 연관된 시간의 길이를 결정할 수도 있다. 예를 들어, 제어 회로부(304)는 구독 주기의 시작 타임스탬프 및 종료 타임스탬프에 기초하여 구독 주기의 길이를 결정한다. 예를 들어, 제어 회로부(304)는 1 개월의 구독 주기를 결정한다. 이 예에서는, 구독 서비스로부터 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 인스턴스들의 수가 높을 가능성이 없기 때문에, 사용자들이 스트림들의 수를 증가시키거나 그 뷰잉 습관들을 변경할 필요성을 지각하지 않을 경우에 사용자들이 메시지에 대해 작용하는 것에 관심이 없을 수도 있으므로, 낮은 임계치를 설정하는 것이 바람직하지 않을 수도 있다. 그 목적을 위하여, 제어 회로부(304)는 예를 들어, 6 개월의 주기에 비해, 구독 서비스로부터 미디어를 동시에 스트리밍하기 위한 요청들의 수가 1 개월 주기 동안에 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 더 낮은 수의 인스턴스들이 있을 수도 있다는 사실을 참작하기 위하여 낮은 임계 수(예컨대, 10)를 선택한다. 따라서, 제어 회로부(304)는 시간의 길이가 더 긴(예컨대, 1 년) 것으로 결정될 경우에 더 큰 임계치를 설정한다.
일부 실시형태들에서, 제어 회로부(304)는 스토리지(308) 내에 구독 주기들과 연관시켜서 복수의 임계치들을 저장할 수도 있다. 예를 들어, 제어 회로부(304)는 스트리밍 충돌들(예컨대, 구독 서비스로부터 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 인스턴스들의 수)이 주어진 길이의 구독 주기 동안에 얼마나 빈번하게 발생하는지를 분석한다. 제어 회로부(304)는 구독 주기 동안에 충돌이 발생하였던 인스턴스들을, 사용자가 그 또는 그녀의 구독에 관련된 액션을 수행하였던 인스턴스들과 추가로 상관시킨다. 예를 들어, 제어 회로부(304)는 사용자가 다수의 충돌들(예컨대, 사용자들이 스트리밍 충돌들로 실망하였고 이용가능한 스트림들의 수를 증가시킴으로써 미래의 스트리밍 충돌들을 회피하도록 행동하였던 상황들)이 발생하였던 시간 근처에서 새로운 스트림들을 그 또는 그녀의 구독에 추가한 것으로 결정한다. 또 다른 예에서, 제어 회로부(304)는 사용자가 어떤 수의 충돌들이 발생하였던(예컨대, 사용자가 스트리밍 충돌들로 실망하였고, 따라서, 그 또는 그녀의 구독을 취소하도록 행동하였던 상황들) 시간 근처에서 그 또는 그녀의 구독을 취소한 것으로 결정한다. 제어 회로부(304)는 구독 주기 길이와 연관시키기 위한 효과적인 임계 수를 결정하기 위하여, 구독에 대해 수행된 액션이 어떤 수의 스트리밍 충돌들과 상관되는 그 인스턴스들에 대한 통계적인 분석을 수행할 수도 있다. 이러한 방법으로, 제어 회로부(304)는 스트리밍 충돌들에 의한 실망감을 경험할 가능성이 높지 않을 수도 있는 다른 사용자들에게 지장을 주는 것을 동시에 회피하면서, 도움이 되는 메시지들을 송신함으로써 스트리밍 충돌들에 의해 실망한 사용자들을 효과적으로 타겟화하는 것을 허용할 임계 수들을 결정한다. 제어 회로부(304)는 스토리지(308) 내의 주어진 구독 주기와 연관된 레코드에서 임계 수를 저장할 수도 있다.
일부 실시형태들에서, 제어 회로부(304)는 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기에 대한 임계 수를 선택할 수도 있다. 예를 들어, 스트리밍 충돌들이 오직 1 개 또는 2 개의 스트림들이 이용가능할 때에 발생할 가능성이 더 크므로, 구독 서비스로부터 사용자에 의해 이용가능한 더 낮은 수의 스트림들에 의해 특징지어진 구독의 사용자는 미디어를 동시에 스트리밍하기 위한 요청들의 수가 얼마나 빈번하게 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는지를 이해하는 것을 추구할 가능성이 더 크다. 한편, 가장 큰 스트리밍 충돌들을 회피하기 위하여 사용자의 구독에서 이미 충분한 스트림들이 있을 가능성이 더 크므로, 구독 서비스로부터 사용자에 의해 이용가능한 더 높은 수의 스트림들에 의해 특징지어진 구독의 사용자는 미디어를 동시에 스트리밍하기 위한 요청들의 수가 얼마나 빈번하게 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는지를 이해하는 것에 관심이 더 없을 가능성이 있다.
일부 실시형태들에서, 제어 회로부(304)는 스토리지(308) 내에 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수와 연관시켜서 복수의 임계치들을 저장할 수도 있다. 예를 들어, 제어 회로부(304)는 충돌들(예컨대, 구독 서비스로부터 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 인스턴스들의 수)이 사용자에 의해 잠재적으로 이용가능하게 될 수 있는 스트림들의 각각의 수에 대하여 얼마나 빈번하게 발생하는지를 분석한다. 예를 들어, 제어 회로부(304)는 오직 1 개의 스트림이 사용자에 의해 이용가능할 때, 2 개의 스트림들이 이용가능할 때 등에 발생하는 충돌들의 평균 수를 결정한다. 제어 회로부(304)는 이용가능한 스트림들의 각각의 수에 대하여 발생하는 충돌들의 평균 수를, 사용자들이 그 또는 그녀의 구독에 관련된 액션을 수행하였던 인스턴스들과 추가로 상관시킬 수도 있다. 예를 들어, 제어 회로부(304)는 사용자들이 이용가능한 오직 하나의 스트림이 있을 때(예컨대, 사용자들이 오직 하나의 디바이스로 미디어를 스트리밍할 수 있고, 이에 따라, 사용자들은 이용가능한 스트림들의 수를 증가시킴으로써 미래의 스트리밍 충돌들을 회피하도록 행동하였던 상황들)에 새로운 스트림들을 그 또는 그녀의 구독들에 빈번하게 추가하는 것으로 결정한다. 또 다른 예에서, 제어 회로부(304)는 사용자가 어떤 수의 충돌들이 발생하였던(예컨대, 사용자들이 스트리밍 충돌들로 실망하였고, 이에 따라, 그 또는 그녀의 구독들을 취소하도록 행동하였던 상황들) 시간 근처에서 그 또는 그녀의 구독을 취소한 것으로 결정한다. 제어 회로부(304)는 구독 주기 길이와 연관시키기 위한 임계 수들을 결정하기 위하여, 구독에 대해 수행된 액션이 이용가능한 스트림들의 수와 상관되는 그 인스턴스들에 대한 통계적인 분석을 수행할 수도 있다. 그 다음으로, 제어 회로부(304)는 스토리지(308) 내의 구독과 연관된 레코드에서 임계 수를 저장할 수도 있다.
일부 실시형태들에서, 제어 회로부(304)는 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수를 결정하기 위하여, 복수의 타임스탬프들의 각각을, 구독 서비스에 대한 구독 주기의 부분에 대응하는 타임스탬프들의 범위와 비교할 수도 있다. 예를 들어, 제어 회로부(304)는 타임스탬프들의 각각을, 인기 있는 쇼들이 방송되는 구독 주기의 부분(예컨대, 쇼 "The Simpsons"의 새로운 에피소드들의 방송에 대응하는, 수요일 오후 7:00 내지 오후 9:00 타임슬롯들에 대응하는 구독 주기의 모든 부분들)에 대응하고 구독 주기의 부분에 대응하는 타임스탬프들의 범위 내의 10 개의 타임스탬프들의 발생을 결정하는 타임스탬프들의 범위와 비교한다.
일부 실시형태들에서, 제어 회로부(304)는 사용자들이 미디어를 빈번하게 스트리밍하는 일(day), 주(week), 또는 월(month) 동안의 시간들을 식별함으로써 구독의 부분을 결정할 수도 있다. 예를 들어, 제어 회로부(304)는 스토리지(308) 내의 로그에서 저장된 데이터를 분석함으로써 총 스트림 소비의 어떤 백분율(예컨대, 75 %)에 대응하는 주의 시간들을 식별하는 것에 기초하여 구독 주기의 부분들을 식별한다. 예를 들어, 제어 회로부(304)는 구독 주기 동안에 스트리밍하는 모든 미디어의 75 %의 모든 미디어가 오후 6:00 내지 오후 12:00 사이에(예컨대, 사용자들이 업무 또는 학교로부터 복귀한 후에) 발생한 것으로 결정한다. 그 다음으로, 제어 회로부(304)는 각각의 일자의 오후 6:00 및 오후 12:00에 의해 정의된 시간 범위들을 오직 포함하도록 구독 주기의 부분을 정의한다.
또한, 제어 회로부(304)는 서버에서, 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수를 구독 주기의 부분에 대한 임계 수와 비교할 수도 있다. 예를 들어, 제어 회로부(304)는 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수(예컨대, 8)를 임계 수(예컨대, 6)와 비교한다.
일부 실시형태들에서, 제어 회로부(304)는 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수가 구독 주기의 부분에 대한 임계 수를 초과하는 것으로 결정하는 것에 응답하여, 서버로부터 상이한 디바이스들 중의 하나로 송신된 메시지를 수정할 수도 있다. 예를 들어, 제어 회로부(304)는 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수(예컨대, 8)가 임계 수(예컨대, 6)를 초과하는 것으로 결정한다. 이에 응답하여, 제어 회로부(304)는 예를 들어, 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 주기의 대응하는 부분 동안에(예컨대, 쇼 "The Simpsons"의 새로운 에피소드들의 방송에 대응하는 수요일 오후 7:00 내지 오후 9:00 사이의 타임슬롯들 동안에) 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 종종 초과한다는 것을 표시함으로써, 서버로부터 디바이스들 중의 하나로 송신된 메시질르 수정한다. 예를 들어, 제어 회로부(304)는 "당신의 구독과 연관된 다른 사용자들이 새로운 The Simpsons 에피소드를 아마도 시청할 것이므로, 오늘 오후 7시 전에 프로그램을 뷰잉할 것을 고려하십시오."와 같은 메시지를 생성한다. 대안적으로, 제어 회로부(304)는 구독 주기의 부분 동안에 발생하였던 복수의 인스턴스들의 수(예컨대, 8)가 임계 수(예컨대, 6)를 초과하는 것으로 결정하는 것에 응답하여, 추가적인 스트림이 구입될 수도 있다는 것을 표시하는 메시지를 생성할 수도 있다. 예를 들어, 제어 회로부(304)는 "당신의 구독이 당신의 뷰잉 습관들을 지원하지 않는 것 같다. 당신의 구독에서 스트림들의 수를 어떻게 증가시키는지를 알아내고 싶은가요"와 같은 메시지를 생성한다.
일부 실시형태들에서, 제어 회로부(304)는 구독 주기의 시간의 길이에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기의 부분에 대한 임계 수를 선택할 수도 있다. 예를 들어, 구독 주기의 시간의 길이에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기에 대한 임계 수를 선택하는 것과 관련하여 위에서 설명된 바와 같이, 제어 회로부(304)는 구독 주기의 부분에 대한 임계 수를 선택하기 위하여 유사한 원리들을 적용할 수도 있다.
일부 실시형태들에서, 제어 회로부(304)는 구독 주기의 부분에 대응하는 날짜에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기의 부분에 대한 임계 수를 선택할 수도 있다. 예를 들어, 제어 회로부(304)는 질의를 통신 네트워크(414)를 통해 컨텐츠 어그리게이터(430)로 전송함으로써, 인기 있는 텔레비전 쇼(예컨대, "The Simpsons")의 시즌 프리미어가 구독 주기의 부분 내에 속하는 것으로 결정한다. 제어 회로부(304)는 이에 응답하여, 구독의 사용자들의 대부분이 인기 있는 텔레비전 쇼(예컨대, "The Simpsons")의 시즌의 에피소드들을 뷰잉하는 것에 관심이 있을 수도 있다는 사실을 참작하기 위하여, 구독 주기의 부분에 대한 낮은 임계 수를 선택할 수도 있다. 이러한 방식으로, 사용자들은 사용자들이 스트리밍 충돌들에 대하여 염려할 가능성이 더 클 때에, 스트리밍 충돌들에 대하여 통지받을 가능성이 더 클 수도 있다. 또 다른 예에서, 제어 회로부(304)는 여름 개월들(예컨대, 6월, 7월, 및 8월)에 대응하는 날짜들은 구독 주기의 부분 내에서 발생하는 것으로 결정한다. 여름 개월들은 더 적은 새로운 텔레비전 쇼들이 방송되는 것과 보통 연관된다. 추가적으로, 아이들을 갖는 사용자들은 더 적은 시간을 스트리밍 미디어에 소비할 가능성이 더 크고, 이것은 이러한 사용자들이 그 대신에, 휴가에 더 많은 시간을 소비할 수도 있고, 다른 시즌들의 개월들에 비해 외부에 있을 수도 있기 때문이다. 이에 따라, 여름 개월들 동안에, 사용자들은 스트리밍 충돌들에 의해 덜 실망하게 될 수도 있고, 스트리밍 충돌들은 또한 발생할 가능성이 더 작을 수도 있다. 따라서, 제어 회로부(304)는 6월, 7월, 또는 8월의 개월들 내에 속하는 구독 주기의 부분에 대응하는 날짜에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기의 부분에 대한 높은 임계치를 설정할 수도 있다. 이러한 방법으로, 사용자들은 사용자들이 덜 빈번하게 미디어를 스트리밍하고 있을 수도 있는 개월들 동안에, 만약 존재할 경우, 더 적은 메시지들을 수신할 수도 있다.
일부 실시형태들에서, 제어 회로부(304)는 구독 주기의 부분에 대응하는 일자의 시간에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기의 부분에 대한 임계 수를 선택할 수도 있다. 예를 들어, 제어 회로부(304)는 구독과 연관된 프로파일을 액세스함으로써 사용자들의 뷰잉 이력을 모니터링한다. 하나의 예에서, 제어 회로부(304)는 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 또는 무선 사용자 통신 디바이스(406) 상의 구독 데이터에서 저장된 사용자 이력을 질의한다. 상이한 예에서, 제어 회로부(304)는 미디어 안내 데이터 소스의 스토리지(308) 상에서 사용자 이력을 질의한다. 제어 회로부(304)는 사용자들이 사용자 이력을 분석함으로써 그 동안에 미디어를 스트리밍할 가능성이 가장 큰 시간을 결정한다. 하나의 예에서, 제어 회로부(304)는 가장 많으느 사용자들이 오후 동안에(예컨대, 그들이 업무 또는 학교로부터 복귀한 후에) 미디어를 스트리밍하는 것으로 결정한다. 제어 회로부(304)는 사용자들이 그 또는 그녀의 뷰잉 습관들을 스트리밍 필요성들을 이해하는 것을 돕기 위하여, 사용자들이 그 동안에 미디어를 스트리밍할 가능성이 가장 큰 시간들에 대한 낮은 임계 수를 선택할 수도 있다. 예를 들어, 구독 주기의 부분(예컨대, 주어진 일자 동안의 오후 8:00 내지 오후 10:100 사이의 타임슬롯들)이 구독의 사용자들이 미디어를 스트리밍할 가능성이 가장 클 때의 시간에 대응하는 것으로 결정하는 것에 응답하여, 제어 회로부(304)는 (예컨대, 스트리밍 충돌들이 사용자들이 업무 및 학교로부터 복귀한 후에 발생할 가능성이 더 크다는 사실을 참작하기 위하여) 낮은 임계 수를 선택한다.
일부 실시형태들에서, 제어 회로부(304)는 구독 주기의 부분 동안에 구독 서비스로부터 이용가능하게 되었던 미디어 자산들의 수에 기초하여 복수의 잠재적인 임계 수들로부터 구독 주기의 부분에 대한 임계 수를 선택할 수도 있다. 예를 들어, 일부 구독 서비스들은 새로운 미디어 자산들을 규칙적으로 추가함으로써 그 컨텐츠 제공들을 개선시킨다. 이것이 발생하면, 사용자들은 그들이 새로운 미디어 자산들이 이용가능하게 되기 전에 하였던 것보다 더 많은 미디어를 스트리밍하는 것에 관심이 있게 될 수도 있다. 이에 따라, 더 많은 스트리밍 충돌들이 발생할 가능성이 있다. 제어 회로부(304)는 구독 주기의 부분 동안에 구독 서비스 미디어 제공들에 추가되었던 미디어 자산들의 수에 기초하여 구독 주기의 부분 동안에 구독 서비스로부터 이용가능하게 되었던 미디어 자산들의 수를 결정할 수도 있다. 제어 회로부(304)는 질의를 통신 네트워크(404) 상에서 컨텐츠 어그리게이터(430)로 전송함으로써, 구독 주기의 부분 동안에 구독 서비스로부터 이용가능하게 되었던 미디어 자산들의 수를 결정할 수도 있다. 이러한 질의는 구독 주기의 부분에 대응하는 시간 주기 동안에 구독 서비스의 제공에 추가되었던 미디어 자산들의 수를 요청할 수도 있다. 예를 들어, 구독 주기의 부분 동안에 구독 서비스로부터 이용가능하게 되었던 미디어 자산들의 수가 구독 주기의 다른 부분들 동안에 구독 서비스로부터 이용가능하게 되었던 미디어 자산들의 수에 비해 높을 경우, 제어 회로부(304)는 구독의 사용자들이 (예컨대, 그것들이 최근에 추가되었으므로) 이전에 스트리밍되지 않았던 미디어 자산들을 스트리밍할 가능성이 더 크고, 이에 따라, 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 얼마나 빈번하게 초과하는지를 이해하는 것을 원할 가능성이 더 클 수도 있다는 사실을 참작하기 위하여, 낮은 임계 수를 설정한다.
일부 실시형태들에서, 제어 회로부(304)는 복수의 인스턴스들의 빈도를 감소시키기 위한 추천들을 포함하는 메시지를 송신할 수도 있다. 예를 들어, 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수가 구독 주기에 대한 임계 수를 초과하는 것으로 결정할 시에, 제어 회로부(304)는 메시지를 서버로부터 상이한 디바이스들 중의 하나로 송신한다. 메시지는 복수의 인스턴스들의 빈도를 감소시키기 위한 추천을 포함할 수도 있다. 예를 들어, 제어 회로부(304)는 사용자가 어떤 시간의 외부에서(예컨대, 사용자들이 스트리밍하는 것에 관심이 있는 쇼 "The Simpsons"의 새로운 에피소드들의 방송에 대응할 수도 있는, 오후 7:00 및 오후 9:00 수요일 타임슬롯의 외부에서) 미디어를 성공적으로 스트리밍할 가능성이 더 클 것이라는 것을 사용자에게 통지한다. 메시지는 스트리밍 충돌들에 대하여 사용자에게 통지할 때에 유용할 수도 있는 정보를 포함할 수도 있다. 예를 들어, 이러한 정보는 미디어 자산의 명칭들, 사용자들의 이름들, 구독 주기 동안에 발생하는 스트리밍 충돌들의 수, 구독에서 스트림들의 수를 증가시키거나 감소시키기 위한 명령어들, 및 미래에 스트리밍 충돌들의 수를 어떻게 최소화할 것인지의 추천들을 포함한다.
도 5 및 도 6은 개시물의 일부 실시형태들에 따른, 제어 회로부(예컨대, 제어 회로부(304))가 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 인스턴스들의 수가 구독 주기 동안의 이용가능한 스트림들의 수를 초과하는 다수의 인스턴스들을 검출하기 위한, 그리고 인스턴스들의 수가 어떤 수를 초과할 때에 메시지를 디바이스들 중의 하나로 송신하기 위한 알고리즘을 제시한다. 일부 실시형태들에서, 이 알고리즘은 프로세싱 회로부(예컨대, 프로세싱 회로부(306))에 의해 디코딩되고 실행되어야 할 명령어들의 세트로서 비-일시적 저장 매체(예컨대, 저장 디바이스(308)) 상으로 인코딩될 수도 있다. 프로세싱 회로부는 결국, 명령어들을 튜닝, 비디오 생성, 인코딩, 디코딩, 암호화, 복호화, 스케일링, 아날로그/디지털 변환 회로부 등과 같은, 제어 회로부(304) 내에 포함된 다른 서브-회로들에 제공할 수도 있다.
도 5에서의 플로우차트는 개시물의 일부 실시형태들에 따른, 제어 회로부(예컨대, 제어 회로부(304))가 구독 주기 내에서 발생하였던 인스턴스들의 수를 결정하기 위한 알고리즘을 설명한다.
단계(502)에서, 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 이용가능한 스트림들의 수를 초과하는 구독 주기 내에서 발생하였던 다수의 인스턴스들을 검출하기 위한 알고리즘은 미디어를 스트리밍하기 위한 요청에 기초하여 시작할 것이다. 일부 실시형태들에서, 이것은 (예컨대, 제어 회로부(304) 또는 사용자 입력 인터페이스(310)에 의해 수신된 신호들로부터의) 사용자 액션 또는 입력에 응답하여 직접적으로 또는 간접적으로의 어느 하나로 행해질 수도 있다. 예를 들어, 알고리즘은 제어 회로부(304)가 사용자 입력 인터페이스(310)로부터 신호들을 수신하는 것에 응답하여 직접적으로 시작하거나, 제어 회로부(304)는 알고리즘을 작동시키기 이전에 (예컨대, 디스플레이(312) 상에서 디스플레이되어야 할 프롬프트(prompt)를 생성함으로써) 디스플레이를 이용하여 그 입력을 확인할 것을 사용자에게 촉구한다.
단계(504)에서, 제어 회로부(304)는 저장된 메모리로부터 타임스탬프의 다음 인스턴스를 취출하도록 진행한다. 일부 실시형태들에서, 제어 회로부(304)는 타임스탬프의 값을 나타내는 단일의 원시적인 데이터 구조를 수신할 수도 있다. 일부 실시형태들에서, 값은 더 큰 데이터 구조의 일부로서 저장될 수도 있고, 제어 회로부(304)는 더 큰 데이터 구조로부터 값을 취출하기 위하여 적절한 액세서(accessor) 방법들을 실행함으로써 값을 취출할 수도 있다.
단계(506)에서, 제어 회로부(304)는 취출된 타임스탬프의 값을, 구독 주기와 연관된 시작 타임스탬프의 저장된 값 및 종료 타임스탬프의 저장된 값과 비교하도록 진행한다. 일부 실시형태들에서, 구독 주기와 연관된 시작 타임스탬프의 값 및 종료 타임스탬프의 저장된 값은 알고리즘을 시작하기 이전에 (예컨대, 저장 디바이스(308) 상에서) 저장될 수도 있다. 일부 실시형태들에서, 구독과 연관된 시작 타임스탬프의 값 및 종료 타임스탬프의 값은 또한, 취출된 타임스탬프의 각각 및 매 인스턴스에 대하여 취출될 수도 있고, 구독과 연관된 시작 타임스탬프 및 종료 타임스탬프의 값들은 반복마다 변경될 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 메모리로부터 각각 값들을 액세스함으로써, 그리고 값 비교를 수행함으로써, 구독과 연관된 시작 타임스탬프의 값 및 종료 타임스탬프의 저장된 값을 취출된 타임스탬프의 값과 직접적으로 비교할 수도 있다. 일부 사례들에서, 제어 회로부(304)는 취출된 타임스탬프 및 구독과 연관된 시작 타임스탬프 및 종료 타임스탬프의 저장된 값을 비교하기 위하여 (예컨대, 객체 대 객체 비교를 위한) 비교 함수를 호출할 수도 있다.
단계(508)에서, 제어 회로부(304)는 취출된 타임스탬프의 값이 구독과 연관된 종료 타임스탬프의 값보다 더 큰지를 결정하기 위하여, 취출된 타임스탬프의 값들 및 구독과 연관된 종료 타임스탬프의 저장된 값을 비교한다. 조건이 충족될 경우, 알고리즘은 단계(510)로 진행할 수도 있고; 조건이 충족되지 않을 경우, 알고리즘은 그 대신에, 단계(512)로 진행할 수도 있다.
단계(510)에서, 제어 회로부(304)는 단계(508)에서의 조건이 충족되는 것에 기초하여 취출된 타임스탬프와 연관된 인스턴스를 무시하기 위한 서브루틴(subroutine)을 실행할 것이다. 서브루틴이 실행된 후, 알고리즘은 단계(516)로 진행할 수도 있고, 여기서, 취출된 타임스탬프의 모든 인스턴스들이 참작되고 추가의 반복들이 필요한지 여부가 결정된다.
단계(512)에서, 제어 회로부(304)는 취출된 타임스탬프의 값이 시작 타임스탬프의 값보다 더 큰지를 결정하기 위하여 취출된 타임스탬프 및 시작 타임스탬프의 값들을 비교한다. 조건이 충족될 경우, 알고리즘은 단계(514)로 진행할 수도 있고; 조건이 충족되지 않을 경우, 알고리즘은 그 대신에, 단계(516)로 진행할 수도 있다.
단계(514)에서, 제어 회로부(304)는 단계(512)의 조건이 충족되는 것에 기초하여, 식별된 타임스탬프와 연관된 인스턴스를 구독 주기 내에 있는 인스턴스들의 카운트(count)에 추가하기 위한 서브루틴을 실행할 것이다. 서브루틴이 실행된 후, 알고리즘은 단계(516)로 진행할 수도 있고, 여기서, 타임스탬프들의 모든 인스턴스들이 참작되는지 여부 및 추가의 반복들이 필요한지가 결정된다.
단계(516)에서, 제어 회로부(304)는 타임스탬프의 모든 인스턴스들이 참작되는지를 체크할 것이다. 인스턴스들의 전부가 평가되었을 경우, 제어 회로부(304)는 단계(518)로 진행할 수도 있다. 예를 들어, 제어 회로부(304)는 타임스탬프의 다음 엘리먼트가 있는지를 알아 보기 위한 함수를 호출할 수도 있다. 함수가 참(true)(즉, 프로세싱될 필요가 있는 인스턴스들이 여전히 있음)을 반환할 경우, 제어 회로부(304)는 단계(504)로 진행할 수도 있다.
단계(518)에서, 제어 회로부(304)는 식별된 인스턴스들의 총 수를 임계 수와 비교하기 위한 서브루틴을 실행할 것이다.
도 5의 설명들은 이 개시물의 임의의 다른 실시형태와 함께 이용될 수도 있다는 것이 고려된다. 게다가, 도 5의 알고리즘과 관련하여 설명된 설명들은 이 개시물의 목적들을 증진시키기 위하여 대안적인 순서들로 또는 병렬로 행해질 수도 있다. 예를 들어, 508 및 512에서의 것들과 같은 조건적 명령문들 및 논리적 평가들은 래그(lag)를 감소시키거나 시스템 또는 방법의 속력을 증가시키기 위하여 임의의 순서로 또는 병렬로 또는 동시에 수행될 수도 있다. 추가의 예로서, 일부 실시형태들에서, 타임스탬프의 몇몇 인스턴스들은 다수의 논리적 프로세서 스레드(thread)들을 이용하여 병렬로 평가될 수도 있거나, 알고리즘은 가지 예측을 편입시킴으로써 개량될 수도 있다. 또한, 도 5의 알고리즘은 적절하게 구성된 소프트웨어 및 하드웨어의 조합 상에서 구현될 수도 있다는 것과, 도 3 내지 도 4와 관련하여 논의된 디바이스들 또는 장비의 임의의 것은 알고리즘의 하나 이상의 부분들을 구현하기 위하여 이용될 수 있다는 것이 주목되어야 한다.
도 6에서의 의사코드(pseudocode)는 개시물의 일부 실시형태들에 따른, 미디어를 스트리밍하기 위한 요청에 기초하여 시작할 것이고, 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 이용가능한 스트림들의 수를 초과하는, 구독 주기 내에서 발생하였던 다수의 인스턴스들을 검출하기 위한 알고리즘을 설명한다. 도 6에서의 의사코드에 의해 설명된 알고리즘은 임의의 수의 프로그래밍 언어들 및 다양한 상이한 하드웨어로 구현될 수도 있다는 것과, 스타일 및 포맷은 제한하는 것이 아니라, 오히려, 이 개시물의 일부 실시형태들을 구현하기 위하여 이용된 코드와 부합할 단계들 및 절차들의 일반적인 템플릿으로서 해석되어야 한다는 것이 당해 분야의 당업자에게 분명할 것이다.
라인(601)에서, 알고리즘은 라인(605) 상에서 시작하는, 변수들을 초기화하고 구독 주기 내에서 발생하였던 인스턴스들의 수를 결정하도록 준비하기 위한 서브루틴을 작동시킬 수도 있다. 예를 들어, 일부 실시형태들에서, 제어 회로부(304)는 초기화 스테이지 동안에 프로세싱 회로부(306)를 위하여, 명령어들을 비-일시적 저장 매체(예컨대, 저장 디바이스(308))로부터 RAM으로 또는 캐시(cache)로 복사할 수도 있다. 추가적으로, 일부 실시형태들에서는, 비교를 위하여 이용되는 저장된 구독 주기 시작 타임스탬프의 값 및 저장된 구독 주기 종료-시간의 값이 601에서 취출될 수도 있고, 설정될 수도 있고, 저장될 수도 있다.
라인(605)에서, 제어 회로부(304)는 타임스탬프들의 인스턴스들을 수신할 수도 있다. 일부 실시형태들에서, 이 인스턴스들은 저장된 메모리로부터 취출될 수도 있다. 제어 회로부(304)는 예를 들어, 타임스탬프의 값들의 어레이에 대한 포인터를 수신함으로써 타임스탬프의 인스턴스들을 수신한다. 또 다른 예에서, 제어 회로부(304)는 타임스탬프의 엘리먼트들을 포함하는 반복자 객체(iterator object)와 같은, 클래스(class)의 객체를 수신한다.
라인(606)에서, 제어 회로부(304)는 타임스탬프들의 다양한 인스턴스들을 통해 반복할 수도 있고, 오직 단일 인스턴스가 이용가능할 경우, 루프는 오직 한 번 실행될 것이다. 이 루프는 도 6의 알고리즘을 구현하기 위하여 이용된 하드웨어 및 소프트웨어의 선택에 따라 다수의 방식들로 구현될 수도 있고; 예를 들어, 이것은 "for" 또는 "while" 루프의 일부로서 구현될 수도 있다.
라인(607)에서, 제어 회로부(304)는 타임스탬프의 값을 일시적인 변수 "A"로 저장할 것이다. 일부 실시형태들에서, 타임스탬프의 값은 더 큰 데이터 구조 또는 클래스의 일부로서 저장될 것이고, 타임스탬프의 값은 적절한 액세서 방법들을 통해 획득될 수도 있다. 일부 실시형태들에서, 타임스탬프는 적절한 해싱 알고리즘(hashing algorithm)에 의하여 스트링 또는 다른 비-숫자(non-numeric) 데이터 타입으로부터 숫자 데이터 타입으로 변환될 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 구독 주기 시작 시간과의 취출된 타임스탬프의 비교를 수행하기 위한 함수를 호출할 수도 있다. 일부 실시형태들에서, 타임스탬프는 원시적인 데이터 구조로서 인코딩될 수도 있고, 일시적인 변수를 이용하는 것이 아니라, 취출된 타임스탬프는 라인들(610 및 612)에서의 비교들에서 직접적으로 이용될 수도 있다.
라인(608)에서, 제어 회로부(304)는 구독 주기 시작 타임스탬프의 값을 일시적인 변수 "B"로 저장할 것이다. 타임스탬프와 유사하게, 일부 실시형태들에서, 구독 주기 시작 타임스탬프의 값은 더 큰 데이터 구조 또는 클래스의 일부로서 저장될 것이고, 구독 주기 시작 타임스탬프의 값은 액세서 방법들을 통해 획득될 수도 있다. 일부 실시형태들에서, 구독 주기 시작 타임스탬프는 적절한 해싱 알고리즘에 의하여 스트링 또는 다른 비-숫자 데이터 타입으로부터 숫자 데이터 타입으로 변환될 수도 있거나, 구독 주기 시작 타임스탬프는 원시적인 데이터 구조일 수도 있고, 라인(612)에서의 비교들에서 직접적으로 이용될 수도 있다.
라인(609)에서, 제어 회로부(304)는 구독 주기 종료-시간의 값을 일시적인 변수 "C"로 저장할 것이다. 시작 타임스탬프와 유사하게, 일부 실시형태들에서, 구독 주기 종료 타임스탬프의 값은 더 큰 데이터 구조 또는 클래스의 일부로서 저장될 것이고, 구독 주기 종료 타임스탬프의 값은 액세서 방법들을 통해 획득될 수도 있다. 일부 실시형태들에서, 구독 주기 종료 타임스탬프는 적절한 해싱 알고리즘에 의하여 스트링 또는 다른 비-숫자 데이터 타입으로부터 숫자 데이터 타입으로 변환될 수도 있거나, 구독 주기 종료 타임스탬프는 원시적인 데이터 구조일 수도 있고, 라인(610)에서의 비교들에서 직접적으로 이용될 수도 있다.
라인(610)에서, 제어 회로부(304)는 A가 C보다 더 큰지를 결정하기 위하여 A 및 C의 값을 비교할 것이다.
라인(611)에서, 제어 회로부(304)는 라인(610)에서의 조건이 충족될 경우에, 취출된 타임스탬프 제어 회로부와 연관된 인스턴스를 무시하기 위한 서브루틴을 실행할 것이다.
라인(612)에서, 제어 회로부(304)는 A가 B보다 더 큰지를 결정하기 위하여 A 및 B의 값을 비교할 것이다.
단계(613)에서, 제어 회로부(304)는 라인(612)에서의 조건이 충족될 경우에, 식별된 타임스탬프와 연관된 인스턴스를, 구독 주기 내에 있는 인스턴스들의 카운트에 추가하기 위한 서브루틴을 실행할 것이다.
라인(615)에서, 제어 회로부(304)는 라인들(610 또는 612)에서의 조건들 중의 어느 것도 충족되지 않을 경우에, 타임스탬프들과 연관된 모든 인스턴스들이 제어 회로부(304)를 이용하여 참작되는지 여부를 결정하기 위한 서브루틴을 실행할 것이다.
라인(617)에서, 제어 회로부(304)는 알고리즘이 그 기능을 수행한 후에 종결 서브루틴을 작동시킬 수도 있다. 예를 들어, 일부 실시형태들에서, 제어 회로부(304)는 변수들을 파괴할 수도 있고, 가비지 수집(garbage collection)을 수행할 수도 있고, 메모리를 자유롭게 하거나 프로세싱 회로부(306)의 캐시를 소거할 수도 있다.
도 6에서의 의사코드에 의해 설명된 알고리즘은 임의의 수의 프로그래밍 언어들 및 다양한 상이한 하드웨어로 구현될 수도 있다는 것과, 원시적인 기능들, 논리적 평가들, 및 기능 평가들의 특정한 선택 및 로케이션은 제한하는 것으로 의도된 것이 아니라는 것이 당해 분야의 당업자에게 분명할 것이다. 코드는 다양한 논리적 평가들의 순서를 조작하거나, 단일의 반복적인 루프가 아니라 병렬로 몇몇 반복들을 수행하거나, 또는 그렇지 않을 경우에, 입력들 또는 최종적인 출력들을 근본적으로 변경하지 않으면서 실행-시간(run-time) 및 성능 메트릭들을 조작하고 최적화기 위하여 재인자화(refactor)될 수도 있거나 재기록될 수도 있다는 것이 또한 분명할 것이다. 예를 들어, 일부 실시형태들에서, 파괴 조건들은 동작의 속력을 높이기 위하여 라인들(610 및 612) 이후에 배치될 수도 있거나, 조건적 명령문들은 케이스-스위치(case-switch)로 대체될 수도 있다. 일부 실시형태들에서는, 단계(606)에서의 타임스탬프의 모든 인스턴스들 상에서 반복하는 것이 아니며, 일부 실시형태들에서, 코드는 제어 회로부(304)가 복수의 프로세서들 또는 프로세서 스레드들 상에서 타임스탬프의 다수의 인스턴스들을 동시에 평가할 것이 명령되도록 재기록될 수도 있어서, 필요한 반복들의 수를 저하시키고, 잠재적으로 연산 시간의 속력을 높인다.
도 7 및 도 8은 개시물의 일부 실시형태들에 따른, 제어 회로부(예컨대, 제어 회로부(304))가 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 인스턴스들의 수가 구독 주기의 부분 동안의 이용가능한 스트림들의 수를 초과하는 다수의 인스턴스들을 검출하기 위한, 그리고 인스턴스들의 수가 어떤 수를 초과할 때에 메시지를 디바이스들 중의 하나로 송신하기 위한 알고리즘을 제시한다. 일부 실시형태들에서, 이 알고리즘은 프로세싱 회로부(예컨대, 프로세싱 회로부(306))에 의해 디코딩되고 실행되어야 할 명령어들의 세트로서 비-일시적 저장 매체(예컨대, 저장 디바이스(308)) 상으로 인코딩될 수도 있다. 프로세싱 회로부는 결국, 명령어들을 튜닝, 비디오 생성, 인코딩, 디코딩, 암호화, 복호화, 스케일링, 아날로그/디지털 변환 회로부 등과 같은, 제어 회로부(304) 내에 포함된 다른 서브-회로들에 제공할 수도 있다.
도 7에서의 플로우차트는 개시물의 일부 실시형태들에 따른, 제어 회로부(예컨대, 제어 회로부(304))가 구독 주기의 부분 동안에 발생하였던 인스턴스들의 수를 결정하기 위한 알고리즘을 설명한다.
단계(702)에서, 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 이용가능한 스트림들의 수를 초과하였던 구독 주기의 부분 내에서 발생하였던 다수의 인스턴스들을 검출하기 위한 알고리즘은 미디어를 스트리밍하기 위한 요청에 기초하여 시작할 것이다. 일부 실시형태들에서, 이것은 (예컨대, 제어 회로부(304) 또는 사용자 입력 인터페이스(310)에 의해 수신된 신호들로부터의) 사용자 액션 또는 입력에 응답하여 직접적으로 또는 간접적으로의 어느 하나로 행해질 수도 있다. 예를 들어, 알고리즘은 제어 회로부(304)가 사용자 입력 인터페이스(310)로부터 신호들을 수신하는 것에 응답하여 직접적으로 시작할 수도 있거나, 제어 회로부(304)는 알고리즘을 작동시키기 이전에 (예컨대, 디스플레이(312) 상에서 디스플레이되어야 할 프롬프트를 생성함으로써) 디스플레이를 이용하여 그 또는 그녀의 입력을 확인할 것을 사용자에게 촉구할 수도 있다.
단계(704)에서, 제어 회로부(304)는 저장된 메모리로부터 타임스탬프의 다음 인스턴스를 취출하도록 진행한다. 일부 실시형태들에서, 제어 회로부(304)는 타임스탬프의 값을 나타내는 단일의 원시적인 데이터 구조를 수신할 수도 있다. 일부 실시형태들에서, 값은 더 큰 데이터 구조의 일부로서 저장될 수도 있고, 제어 회로부(304)는 더 큰 데이터 구조로부터 값을 취출하기 위하여 적절한 액세서 방법들을 실행함으로써 값을 취출할 수도 있다.
단계(706)에서, 제어 회로부(304)는 취출된 타임스탬프의 값을, 시작 타임스탬프의 저장된 값 및 구독 주기의 부분과 연관된 종료 타임스탬프의 저장된 값과 비교하도록 진행한다. 일부 실시형태들에서, 시작 타임스탬프의 값 및 구독 주기의 부분과 연관된 종료 타임스탬프의 저장된 값은 알고리즘을 시작하기 이전에 (예컨대, 저장 디바이스(308) 상에서) 저장될 수도 있다. 일부 실시형태들에서, 시작 타임스탬프의 값 및 구독의 부분과 연관된 종료 타임스탬프의 값은 또한, 취출된 타임스탬프의 각각 및 매 인스턴스에 대하여 취출될 수도 있고, 시작 타임스탬프 및 구독의 부분과 연관된 종료 타임스탬프의 값들은 반복마다 변경될 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 메모리로부터 각각 값들을 액세스함으로써, 그리고 값 비교를 수행함으로써, 시작 타임스탬프의 값 및 구독의 부분과 연관된 종료 타임스탬프의 저장된 값을 취출된 타임스탬프의 값과 직접적으로 비교할 수도 있다. 일부 사례들에서, 제어 회로부(304)는 취출된 타임스탬프 및 시작 타임스탬프 및 구독 주기의 부분과 연관된 종료 타임스탬프의 저장된 값을 비교하기 위하여 (예컨대, 객체 대 객체 비교를 위한) 비교 함수를 호출할 수도 있다.
단계(708)에서, 제어 회로부(304)는 취출된 타임스탬프의 값이 구독의 부분과 연관된 종료 타임스탬프의 값보다 더 큰지를 결정하기 위하여, 취출된 타임스탬프 및 구독 주기의 부분과 연관된 종료 타임스탬프의 값들을 비교한다. 조건이 충족될 경우, 알고리즘은 단계(710)로 진행할 수도 있고; 조건이 충족되지 않을 경우, 알고리즘은 그 대신에, 단계(712)로 진행할 수도 있다.
단계(710)에서, 제어 회로부(304)는 단계(708)에서의 조건이 충족되는 것에 기초하여 취출된 타임스탬프와 연관된 인스턴스를 무시하기 위한 서브루틴을 실행할 것이다. 서브루틴이 실행된 후, 알고리즘은 단계(716)로 진행할 수도 있고, 여기서, 취출된 타임스탬프의 모든 인스턴스들이 참작되고 추가의 반복들이 필요한지 여부가 결정된다.
단계(712)에서, 제어 회로부(304)는 취출된 타임스탬프의 값이 시작 타임스탬프의 값보다 더 큰지를 결정하기 위하여 취출된 타임스탬프 및 시작 타임스탬프의 값들을 비교한다. 조건이 충족될 경우, 알고리즘은 단계(714)로 진행할 수도 있고; 조건이 충족되지 않을 경우, 알고리즘은 그 대신에, 단계(716)로 진행할 수도 있다.
단계(734)에서, 제어 회로부(304)는 단계(712)의 조건이 충족되는 것에 기초하여, 식별된 타임스탬프와 연관된 인스턴스를 구독 주기의 부분 내에 있는 인스턴스들의 카운트에 추가하기 위한 서브루틴을 실행할 것이다. 서브루틴이 실행된 후, 알고리즘은 단계(716)로 진행할 수도 있고, 여기서, 타임스탬프들의 모든 인스턴스들이 참작되는지 여부 및 추가의 반복들이 필요한지 여부가 결정된다.
단계(716)에서, 제어 회로부(304)는 타임스탬프의 모든 인스턴스들이 참작되는지 여부를 체크할 것이다. 인스턴스들의 전부가 평가되었을 경우, 제어 회로부(304)는 단계(718)로 진행할 수도 있다. 예를 들어, 제어 회로부(304)는 타임스탬프의 다음 엘리먼트가 있는지를 알아 보기 위한 함수를 호출할 수도 있다. 함수가 참(즉, 프로세싱될 필요가 있는 인스턴스들이 여전히 있음)을 반환할 경우, 제어 회로부(304)는 단계(704)로 진행할 수도 있다.
단계(718)에서, 제어 회로부(304)는 식별된 인스턴스들의 총 수를 임계 수와 비교하기 위한 서브루틴을 실행할 것이다.
도 7의 설명들은 이 개시물의 임의의 다른 실시형태와 함께 이용될 수도 있다는 것이 고려된다. 게다가, 도 7의 알고리즘과 관련하여 설명된 설명들은 이 개시물의 목적들을 증진시키기 위하여 대안적인 순서들로 또는 병렬로 행해질 수도 있다. 예를 들어, 708 및 712에서의 것들과 같은 조건적 명령문들 및 논리적 평가들은 래그를 감소시키거나 시스템 또는 방법의 속력을 증가시키기 위하여 임의의 순서로 또는 병렬로 또는 동시에 수행될 수도 있다. 추가의 예로서, 일부 실시형태들에서, 타임스탬프의 몇몇 인스턴스들은 다수의 논리적 프로세서 스레드들을 이용하여 병렬로 평가될 수도 있거나, 알고리즘은 가지 예측을 편입시킴으로써 개량될 수도 있다. 또한, 도 7의 알고리즘은 적절하게 구성된 소프트웨어 및 하드웨어의 조합 상에서 구현될 수도 있다는 것과, 도 3 내지 도 4와 관련하여 논의된 디바이스들 또는 장비의 임의의 것은 알고리즘의 하나 이상의 부분들을 구현하기 위하여 이용될 수 있다는 것이 주목되어야 한다.
도 8에서의 의사코드는 개시물의 일부 실시형태들에 따른, 미디어를 스트리밍하기 위한 요청에 기초하여 시작할 것이고, 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 이용가능한 스트림들의 수를 초과하는, 구독 주기의 부분 내에서 발생하였던 다수의 인스턴스들을 검출하기 위한 알고리즘을 설명한다. 도 8에서의 의사코드에 의해 설명된 알고리즘은 임의의 수의 프로그래밍 언어들 및 다양한 상이한 하드웨어로 구현될 수도 있다는 것과, 스타일 및 포맷은 제한하는 것이 아니라, 오히려, 이 개시물의 일부 실시형태들을 구현하기 위하여 이용된 코드와 부합할 단계들 및 절차들의 일반적인 템플릿으로서 해석되어야 한다는 것이 당해 분야의 당업자에게 분명할 것이다.
라인(801)에서, 알고리즘은 라인(805) 상에서 시작하는, 변수들을 초기화하고 구독 주기의 부분 내에서 발생하였던 인스턴스들의 수를 결정하도록 준비하기 위한 서브루틴을 작동시킬 수도 있다. 예를 들어, 일부 실시형태들에서, 제어 회로부(304)는 초기화 스테이지 동안에 프로세싱 회로부(306)를 위하여, 명령어들을 비-일시적 저장 매체(예컨대, 저장 디바이스(308))로부터 RAM으로 또는 캐시로 복사할 수도 있다. 추가적으로, 일부 실시형태들에서, 비교를 위하여 이용되는 구독 주기의 부분의 저장된 시작-시간의 값 및 구독 주기의 부분의 저장된 종료-시간의 값은 801에서 취출될 수도 있고, 설정될 수도 있고, 저장될 수도 있다.
라인(805)에서, 제어 회로부(304)는 타임스탬프의 인스턴스들을 수신할 수도 있다. 일부 실시형태들에서, 이 인스턴스들은 저장된 메모리로부터 취출될 수도 있다. 제어 회로부(304)는 예를 들어, 타임스탬프의 값들의 어레이에 대한 포인터를 수신함으로써 타임스탬프의 인스턴스들을 수신할 수도 있다. 또 다른 예에서, 제어 회로부(304)는 타임스탬프의 엘리먼트들을 포함하는 반복자 객체와 같은, 클래스의 객체를 수신할 수도 있다.
라인(806)에서, 제어 회로부(304)는 타임스탬프의 다양한 인스턴스들을 통해 반복할 수도 있고, 오직 단일 인스턴스가 이용가능할 경우, 루프는 오직 한 번 실행될 것이다. 이 루프는 도 8의 알고리즘을 구현하기 위하여 이용된 하드웨어 및 소프트웨어의 선택에 따라 다수의 방식들로 구현될 수도 있고; 예를 들어, 이것은 "for" 또는 "while" 루프의 일부로서 구현될 수도 있다.
라인(807)에서, 제어 회로부(304)는 타임스탬프의 값을 일시적인 변수 "A"로 저장할 것이다. 일부 실시형태들에서, 타임스탬프의 값은 더 큰 데이터 구조 또는 클래스의 일부로서 저장될 것이고, 타임스탬프의 값은 적절한 액세서 방법들을 통해 획득될 수도 있다. 일부 실시형태들에서, 타임스탬프는 적절한 해싱 알고리즘에 의하여 스트링 또는 다른 비-숫자 데이터 타입으로부터 숫자 데이터 타입으로 변환될 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 구독 주기의 부분의 시작 시간과의 취출된 타임스탬프의 비교를 수행하기 위한 함수를 호출할 수도 있다. 일부 실시형태들에서, 타임스탬프는 원시적인 데이터 구조로서 인코딩될 수도 있고, 일시적인 변수를 이용하는 것이 아니라, 취출된 타임스탬프는 라인들(810 및 812)에서의 비교들에서 직접적으로 이용될 수도 있다.
라인(808)에서, 제어 회로부(304)는 구독 주기의 부분의 시작 시간의 값을 일시적인 변수 "B"로 저장할 것이다. 타임스탬프와 유사하게, 일부 실시형태들에서, 구독 주기 타임스탬프의 시작 시간의 값은 더 큰 데이터 구조 또는 클래스의 일부로서 저장될 것이고, 구독 주기 시작 타임스탬프의 값은 액세서 방법들을 통해 획득될 수도 있다. 일부 실시형태들에서, 구독 주기의 부분의 시작 타임스탬프는 적절한 해싱 알고리즘에 의하여 스트링 또는 다른 비-숫자 데이터 타입으로부터 숫자 데이터 타입으로 변환될 수도 있거나, 구독 주기의 부분의 시작 타임스탬프는 원시적인 데이터 구조일 수도 있고, 라인(812)에서의 비교들에서 직접적으로 이용될 수도 있다.
라인(809)에서, 제어 회로부(304)는 구독 주기의 부분의 종료 타임스탬프의 값을 일시적인 변수 "C"로 저장할 것이다. 시작 타임스탬프와 유사하게, 일부 실시형태들에서, 구독 주기 종료 타임스탬프의 값은 더 큰 데이터 구조 또는 클래스의 일부로서 저장될 것이고, 구독 주기의 부분의 종료 타임스탬프의 값은 액세서 방법들을 통해 획득될 수도 있다. 일부 실시형태들에서, 구독 주기의 부분의 종료 타임스탬프는 적절한 해싱 알고리즘에 의하여 스트링 또는 다른 비-숫자 데이터 타입으로부터 숫자 데이터 타입으로 변환될 수도 있거나, 구독 주기의 부분의 종료 타임스탬프는 원시적인 데이터 구조일 수도 있고 라인(810)에서의 비교들에서 직접적으로 이용될 수도 있다.
라인(810)에서, 제어 회로부(304)는 A가 C보다 더 큰지를 결정하기 위하여 A 및 C의 값을 비교할 것이다.
라인(811)에서, 제어 회로부(304)는 라인(810)에서의 조건이 충족될 경우에, 취출된 타임스탬프 제어 회로부와 연관된 인스턴스를 무시하기 위한 서브루틴을 실행할 것이다.
라인(812)에서, 제어 회로부(304)는 A가 B보다 더 큰지 여부를 결정하기 위하여 A 및 B의 값을 비교할 것이다.
단계(813)에서, 제어 회로부(304)는 라인(812)에서의 조건이 충족될 경우에, 식별된 타임스탬프와 연관된 인스턴스를, 구독 주기 부분 내에 있는 인스턴스들의 카운트에 추가하기 위한 서브루틴을 실행할 것이다.
라인(814)에서, 제어 회로부(304)는 라인(810 또는 812)에서의 어느 조건도 충족되지 않는지 여부를 결정할 것이다. 어느 조건도 충족되지 않을 경우, 라인(815)에서의 명령어는 평가될 수도 있고 실행될 수도 있다.
라인(817)에서, 제어 회로부(304)는 알고리즘이 그 기능을 수행한 후에 종결 서브루틴을 작동시킬 수도 있다. 예를 들어, 일부 실시형태들에서, 제어 회로부(304)는 변수들을 파괴할 수도 있고, 가비지 수집을 수행할 수도 있고, 메모리를 자유롭게 하거나 프로세싱 회로부(306)의 캐시를 소거할 수도 있다.
도 8에서의 의사코드에 의해 설명된 알고리즘은 임의의 수의 프로그래밍 언어들 및 다양한 상이한 하드웨어로 구현될 수도 있다는 것과, 원시적인 기능들, 논리적 평가들, 및 기능 평가들의 특정한 선택 및 로케이션은 제한하는 것으로 의도된 것이 아니라는 것이 당해 분야의 당업자에게 분명할 것이다. 코드는 다양한 논리적 평가들의 순서를 조작하거나, 단일의 반복적인 루프가 아니라 병렬로 몇몇 반복들을 수행하거나, 또는 그렇지 않을 경우에, 입력들 또는 최종적인 출력들을 근본적으로 변경하지 않으면서 실행-시간 및 성능 메트릭들을 조작하고 최적화기 위하여 재인자화될 수도 있거나 재기록될 수도 있다는 것이 또한 분명할 것이다. 예를 들어, 일부 실시형태들에서, 파괴 조건들은 동작의 속력을 높이기 위하여 라인들(810 및 812) 이후에 배치될 수도 있거나, 조건적 명령문들은 케이스-스위치로 대체될 수도 있다. 일부 실시형태들에서는, 단계(806)에서의 타임스탬프의 모든 인스턴스들 상에서 반복하는 것이며, 일부 실시형태들에서, 코드는 제어 회로부(304)가 복수의 프로세서들 또는 프로세서 스레드들 상에서 타임스탬프의 다수의 인스턴스들을 동시에 평가하는 것이 명령되도록 재기록될 수도 있어서, 필요한 반복들의 수를 저하시키고, 잠재적으로 연산 시간의 속력을 높인다.
도 9는 인스턴스들의 수가 어떤 수를 초과할 때에 메시지를 디바이스로 송신할 시에 수반된 예시적인 단계들의 플로우차트이다. 프로세스(900) 또는 그 임의의 단계는 도 3 내지 도 4에서 도시된 디바이스들 중의 임의의 것 상에서 수행될 수 있거나 그것에 의해 제공될 수 있다는 것이 주목되어야 한다. 예를 들어, 프로세스(900)는 인스턴스들의 수가 어떤 수를 언제 초과하는지를 검출하기 위하여, 그리고 메시지를 디바이스로 송신하기 위하여, 사용자 장비(402, 404, 및/또는 406)(도 4) 상에서 구현된 제어 회로부에 의해 명령된 바와 같이, 제어 회로부(304)(도 3)에 의해 실행될 수도 있다. 게다가, 프로세스(900)의 하나 이상의 단계들은 임의의 다른 프로세스 또는 실시형태의 하나 이상의 단계들로 편입될 수도 있거나 이것들과 조합될 수도 있다.
프로세스(900)는 단계(902)에서 시작하고, 여기서, 제어 회로부(304)는 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 복수의 인스턴스들을 검출한다. 제어 회로부(304)는 구독 서비스를 액세스하는 사용자들에 의해 이용된 다양한 디바이스들로부터 요청들을 수신한다. 이 디바이스들은 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 및 무선 사용자 통신 디바이스들(406)을 포함할 수도 있다. 하나의 예에서, 제어 회로부(304)는 12 개의 인스턴스들에서, 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과한다는 것을 검출한다. 다시 말해서, 12 개의 경우들에는, 구독의 적어도 하나의 사용자가 컨텐츠 구독 서비스로부터 컨텐츠를 스트리밍할 수 없었다.
단계(904)에서, 제어 회로부(304)는 복수의 인스턴스들의 각각과 대응하는 복수의 타임스탬프들을 생성한다. 예를 들어, 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 다수의 인스턴스들을 검출하는 것에 기초하여, 제어 회로부(304)는 스토리지(308) 내의 리스트에서 각각의 인스턴스와 연관된 타임스탬프를 저장한다. 제어 회로부(304)가 예를 들어, 구독 서비스로부터 상이한 디바이스들로 미디어를 동시에 스트리밍하기 위한 요청들의 수가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수를 초과하는 12 개의 인스턴스들을 검출하면, 제어 회로부(304)는 타임스탬프들의 리스트를 생성하고 이를 스토리지(308) 내에 저장하고, 여기서, 각각의 타임스탬프는 12 개의 인스턴스들 중의 하나에 대응한다.
단계(906)에서, 제어 회로부(304)는 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수를 결정하기 위하여 복수의 타임스탬프들의 각각을, 구독 서비스에 대한 구독 주기에 대응하는 타임스탬프들의 범위와 비교함으로써, 타임스탬프들에 기초하여 구독 주기 내에서 발생하였던 인스턴스들의 수를 결정한다. 예를 들어, 제어 회로부(304)가 12 개의 타임스탬프들을 생성할 경우, 제어 회로부(304)는 12 개의 타임스탬프들의 각각을 구독 서비스에 대한 구독 주기와 비교한다. 그 다음으로, 제어 회로부(304)는 각각의 타임스탬프가 구독 주기의 시작 및 종료 타임스탬프들에 의해 정의된 시간의 범위 내에 속하는지 여부를 결정하기 위하여 12 개의 타임스탬프들의 각각을 비교한다. 범위 내에 속하는 타임스탬프들의 수에 기초하여, 제어 회로부(304)는 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수를 결정한다. 예를 들어, 제어 회로부(304)는 12 개의 생성된 타임스탬프들 중에서, 9 개가 구독 주기의 시작 및 종료 타임스탬프들에 의해 정의된 시간의 범위 내에 속하는 것으로 결정한다.
단계(908)에서, 제어 회로부(304)는 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수를 구독 주기에 대한 임계 수와 비교한다. 제어 회로부(304)는 구독 주기에 대한 임계 수를 결정하기 위하여 상이한 접근법들을 사용한다. 예를 들어, 제어 회로부(304)는 임계 수를, 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수에 기초하게 한다. 예를 들어, 제어 회로부(304)는 이용불가능한 스트림들을 부합하게 처리하고 있는 사용자들을 타겟화할 수도 있다. 그 목적을 위하여, 제어 회로부(304)가 구독 서비스로부터 사용자에 의해 이용가능한 스트림들의 수(예컨대, 9 개의 스트림들)가 구독 서비스의 평균 사용자(예컨대, 평균 사용자는 오직 2 개의 스트림들과 연관될 수도 있음)에 의해 이용가능한 스트림들의 평균 수보다 더 높은 것으로 결정할 경우, 제어 회로부(304)는 임계 수를 더 높은 수(예컨대, 12)로 설정한다.
단계(910)에서, 제어 회로부(304)는 구독 주기 내에서 발생하였던 인스턴스들의 수가 임계 수를 초과할 경우에 메시지를 디바이스로 송신한다. 예를 들어, 제어 회로부(304)는 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수가 구독 주기에 대한 임계 수를 초과하는 것으로 결정하는 것에 응답하여, 메시지를 통신 네트워크(414)를 통해 서버로부터 상이한 디바이스들 중의 하나로 송신한다. 예를 들어, 구독 주기 동안에 발생하였던 복수의 인스턴스들의 수(예컨대, 12)가 임계 수(예컨대, 8)를 초과하는 것으로 결정하는 것에 응답하여, 제어 회로부(304)는 디바이스와 연관된 사용자가 추가적인 스트림들을 구입할 수 있다는 것을 표시하는 메시지를 서버로부터 디바이스로 송신한다. 하나의 예에서, 제어 회로부(304)는 사용자가 빈번한 스트리밍 충돌들로 인해 추가적인 스트림들을 구매할 수 있다는 것을 표시하기 위한 메시지를 생성한다. 제어 회로부(304)는 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 또는 무선 통신 디바이스(406)의 디스플레이(312) 상에서의 디스플레이를 위한 메시지를 송신한다. 예를 들어, 제어 회로부(304)는 사용자 텔레비전 장비(402)의 디스플레이(312) 상에서 디스플레이되는 프로그램 리스팅들 디스플레이(100)에서의 디스플레이를 위한 메시지를 생성한다.
도 9의 단계들 또는 설명들은 이 개시물의 임의의 다른 실시형태와 함께 이용될 수도 있다는 것이 고려된다. 게다가, 도 9와 관련하여 설명된 단계들 및 설명들은 이 개시물의 목적들을 증진시키기 위하여 대안적인 순서들로 또는 병렬로 행해질 수도 있다. 예를 들어, 이 단계들의 각각은 래그를 감소시키거나 시스템 또는 방법의 속력을 증가시키기 위하여 임의의 순서로 또는 병렬로 또는 실질적으로 동시에 수행될 수도 있다.
본 발명에서 수반된 방법들은 컴퓨터-이용가능 및/또는 판독가능 매체를 포함하는 컴퓨터 프로그램 제품에서 구체화될 수도 있다는 것이 당해 분야의 당업자들에게 분명할 것이다. 예를 들어, 이러한 컴퓨터-이용가능 매체는 CD-ROM 디스크 또는 기존의 ROM 디바이스들과 같은 판독-전용 메모리 디바이스, 또는 그 상에 저장된 컴퓨터-판독가능 프로그램 코드를 가지는, 하드 디스크 디바이스 또는 컴퓨터 디스켓과 같은 랜덤 액세스 메모리로 구성될 수도 있다. 본 발명에서 수반된 방법들, 기법들, 및 프로세스들은 프로세싱 회로부를 이용하여 실행될 수도 있다는 것이 또한 이해되어야 한다. 예를 들어, 사용자와 연관된 소셜 미디어 상호작용의 검출은 프로세싱 회로부에 의해, 예컨대, 도 3의 프로세싱 회로부(306)에 의해 수행될 수도 있다. 프로세싱 회로부는 예를 들어, 장비 디바이스(300), 미디어 컨텐츠 제공자(416), 또는 컨텐츠 어그리게이터(430) 내의 범용 프로세서, 맞춤화된 집적 회로(예컨대, ASIC), 또는 필드-프로그래밍가능 게이트 어레이(field-programmable gate array; FPGA)일 수도 있다. 예를 들어, 본원에서 설명된 바와 같은 미디어 자산 메타데이터는 도 3의 스토리지(308), 또는 도 4의 컨텐츠 어그리게이터(430) 내에 저장될 수도 있고 그로부터 취출될 수도 있다. 또한, 프로세싱 회로부 또는 컴퓨터 프로그램은 도 3의 스토리지(308) 또는 도 4의 컨텐츠 어그리게이터(430) 내에 저장된 정보를 업데이트하는, 사용자 프로파일 속성들과 같은 사용자와 연관된 설정들을 업데이트할 수도 있다.
위에서 논의된 프로세스들은 제한적인 것이 아니라, 예시적인 것으로 의도된 것이다. 당해 분야의 당업자는 본원에서 논의된 프로세스들의 단계들이 생략될 수도 있고, 수정될 수도 있고, 조합될 수도 있고, 및/또는 재배열될 수도 있고, 임의의 추가적인 단계들은 발명의 범위로부터 이탈하지 않으면서 수행될 수도 있다는 것을 인식할 것이다. 더 일반적으로, 상기 개시물은 제한적인 것이 아니라 예시적인 것으로 의도된다. 오직 뒤따르는 청구항들은 본 발명이 포함하는 것에 대한 경계들을 설정하도록 의도된다. 또한, 임의의 하나의 실시형태에서 설명된 특징들 및 제한들은 본원에서의 임의의 다른 실시형태에 적용될 수도 있고, 하나의 실시형태에 관련되는 플로우차트들 또는 예들은 적당한 방식으로 임의의 다른 실시형태와 조합될 수도 있거나, 상이한 순서들로 행해질 수도 있거나, 병렬로 행해질 수도 있다는 것이 주목되어야 한다. 게다가, 본원에서 설명된 시스템들 및 방법들은 실시간으로 수행될 수도 있다. 위에서 설명된 시스템들 및/또는 방법들은 다른 시스템들 및/또는 방법들에 적용될 수도 있거나, 다른 시스템들 및/또는 방법들에 따라 이용될 수도 있다는 것이 또한 주목되어야 한다.
일부 실시형태들에서, 제어 회로부(304)는 컨텐츠 어그리게이터 서비스로부터 인증 정보(authentication information)를 자동으로 수신할 수도 있다. 예를 들어, 제어 회로부(304) 상에서 구현된 미디어 안내 애플리케이션은 제어 회로부(304)가 사용자를 구독 서비스에 가입시키기 위한 요청을 수신하기 이전에, 인증 정보를 수신할 수도 있고 인증 정보를 사용자 계정과 연관시킬 수도 있다. 그 다음으로, 제어 회로부(304)는 사용자를 구독 서비스에 가입시키기 위한 요청을 수신할 수도 있고, 이에 따라, 계정을 유효성검사할 수도 있고, 사용자로의 구독 서비스의 제공들에 대한 액세스를 승인할 수도 있다.
일부 양태들에서, 제어 회로부(304)는 구독 서비스와 연관되는 컨텐츠 제공자 서버(예컨대, 훌루(Hulu))에서, 제 2 구독 서비스와 연관되는 컨텐츠 어그리게이터 서버(예컨대, 로비 수퍼 어그리게이터(Rovi Super Aggregator))로부터 제 1 인증 키를 수신할 수도 있고, 여기서, 제 1 인증 키는 사용자가 제 1 구독 서비스에 가입하기 이전에 수신된다. 예를 들어, 사용자는 컨텐츠 어그리게이터 서비스(즉, 제 2 구독 서비스)에 가입할 수도 있다. 일단 사용자가 제 2 구독 서비스에 있어서의 그 또는 그녀의 등록을 완료하면, 제 2 구독 서비스와 연관된 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 사용자를 컨텐츠 어그리게이터 구독의 일부로서 이용가능한 구독 서비스들의 일부 또는 전부와 연관시키기 위하여 인증 키들을 생성할 수도 있고, 생성된 인증 키들을 제 1 구독 서비스를 포함하는 각각의 구독 서비스와 연관된 서버들로 전송할 수도 있다. 각각의 인증 키는 키에서 저장된 정보가 각각의 구독 서비스와 연관된 서버들로 보안성 있게 송신되는 것을 보장하기 위하여 인코딩될 수도 있다. 추가적으로, 각각의 인증 키는 사용자 및 제 2 구독 서비스(예컨대, 로비 수퍼 어그리게이터)를 식별하는 정보를 포함할 수도 있다. 그 다음으로, 제 1 구독 서비스와 연관된 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 컨텐츠 어그리게이터 서버로부터 생성된 인증 키를 수신할 수도 있다. 일부 사례들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 인증 키를 디코딩할 수도 있고, 키에서 저장된 정보를 추출할 수도 있다. 제어 회로부(304)는 인증 키를 컨텐츠 제공자 서버 상에서 추가적으로 저장할 수도 있다. 이러한 방법으로, 제어 회로부(304)는 계정들을 수동으로 생성하는 태스크를 사용자에게 부담시키지 않으면서, 제 1 사용자와 연관된 인증 정보를 제 1 구독 서비스로 송신할 수도 있다.
일부 사례들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 사용자가 제 2 구독 서비스에 등록된 후이지만, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)가 사용자가 제 1 구독 서비스에 가입할 것을 희망하는 것을 검출하기 전에, 컨텐츠 어그리게이터 서버로부터 제 1 인증 키를 수신할 수도 있다. 예를 들어, 제 2 구독 서비스를 제공하는 엔티티(예컨대, 로비 수퍼 어그리게이터)는 제 1 구독 서비스에 대한 구독을 제 2 구독 서비스의 사용자들에게 할인하여 제공하기 위하여 제 1 구독 서비스를 제공하는 엔티티(예컨대, 훌루)와 합의할 수도 있다. 사용자가 제 1 구독 서비스에 가입하기 이전에, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 제 1 인증 키를 컨텐츠 어그리게이터 서버로 송신할 수도 있다.
일부 사례들에서, 제 2 구독 서비스와 연관된 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 사용자를 컨텐츠 어그리게이터 구독의 일부로서 이용가능한 구독 서비스들의 일부 또는 전부와 연관시키기 위하여 인증 키들을 생성할 수도 있고, 생성된 인증 키들을, 제 1 구독 서비스를 포함하는 각각의 구독 서비스와 연관된 서버들로 전송할 수도 있다. 각각의 인증 키는 키에서 저장된 정보가 각각의 구독 서비스와 연관된 서버로 보안성 있게 송신되는 것을 보장하기 위하여 암호화될 수도 있다. 예를 들어, 인증 키는 컨텐츠 제공자 서버 및 컨텐츠 어그리게이터 서버의 양자에 의해 액세스가능할 수도 있는 공개 키(public key)를 통해 암호화될 수도 있다. 추가적으로, 각각의 인증 키는 사용자 및 제 2 구독 서비스(예컨대, 로비 수퍼 어그리게이터)를 식별하는 정보를 포함할 수도 있다. 하나의 예에서, 인증 키는 제 2 구독 서비스 상의 사용자와 연관된 사용자명 및 패스워드를 포함할 수도 있다. 그 다음으로, 제 1 구독 서비스와 연관된 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 컨텐츠 어그리게이터 서버로부터 생성된 인증 킬르 수신할 수도 있다. 일부 사례들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 인증 키를 복호화할 수도 있고, 키에서 저장된 정보를 추출할 수도 있다. 제어 회로부(304)는 인증 키를 컨텐츠 제공자 서버 상에서 추가적으로 저장할 수도 있다. 이러한 방법으로, 제어 회로부(304)는 계정을 수동으로 생성하는 태스크를 사용자에게 부담시키지 않으면서, 제 1 사용자와 연관된 인증 정보를 제 1 구독 서비스로 송신할 수도 있다.
일부 사례들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 인증 키에 기초하여 제 1 구독 서비스에 대한 제 1 사용자 계정을 생성할 것인지 아닌지 여부를 결정하기 위하여, 제 1 인증 키를 제 1 복수의 수용가능한 인증 키들과 비교할 수도 있다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 인증 키에서 저장된 정보를 추출할 수도 있고, 제 2 구독 서비스의 식별자에 관련된 키의 일부에서 열거되는 구독 서비스(예컨대, 로비 수퍼 어그리게이터)의 명칭을 결정할 수도 있다. 그 다음으로, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 구독 서비스 상에서의 계정들을 생성하기 위하여 허용되도록, 제어 회로부(304)가 이전에 식별하였던 구독 서비스들의 리스트를 취출할 수도 있고, 구독 서비스의 명칭을 취출된 리스트에서의 각각의 구독 서비스와 비교할 수도 있다. 실제로, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 생성되는 계정들에 대한 제어를 유지하면서, 컨텐츠 어그리게이터들(즉, 제 2 구독 서비스)로부터 새로운 사용자들에 대한 정보를 보안성 있게 수신할 수 있다. 예를 들어, 제 1 구독 서비스는 할인된 가격에서 제 1 구독 서비스 상에서의 구독들을 제공하기 위하여 제 2 구독 서비스와 계약할 수도 있다. 또한, 인증 키에서의 제 2 구독 서비스에 대한 정보를 캡슐화함으로써, 제 1 구독 서비스는 신뢰된 컨텐츠 어그리게이터들과 연관된 사용자들의 계정들이 오직 생성된다는 것을 보장한다.
일부 사례들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 인증 키에서 저장된 정보를 추출할 수도 있고, 사용자의 사용자명을 결정할 수도 있다. 그 다음으로, 제어 회로부(304)는 제 1 구독 서비스 상에서의 계정들을 생성하기 위하여 허용되도록, 제어 회로부(304)가 이전에 식별하였던 사용자명들의 리스트를 취출할 수도 있고, 추출된 사용자명을 각각의 식별된 사용자명과 비교할 수도 있다.
일부 양태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 인증 키가 제 1 복수의 수용가능한 인증 키들 중의 하나와 일치하는 것으로 결정하는 것에 응답하여, 컨텐츠 제공자 서버에서, 제 1 사용자 계정을 생성할 수도 있다. 예를 들어, 제어 회로부(304)는 컨텐츠 제공자 서버 상에서의 계정을 생성하기 위하여 필요한 정보를 생성하기 위하여, 사용자명, 패스워드, 및 구독 서비스 명칭과 같은, 인증 키 내에 포함된 정보를 추출할 수도 있다. 일부 사례들에서, 제어 회로부(304)는 계정이 유효성검사되지 않은 것을 특정하는, 제 1 계정과 연관된 표시를 저장할 수도 있다. 사용자 또는 제 2 구독 서비스 상에서 구현된 제어 회로부(304)가 미래에 계정을 유효성검사할 것을 판단하면, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 이하에서 더욱 상세하게 설명되는 바와 같이, 사용자로부터 요구된 입력이 거의 없거나 전혀 없이 계정을 효율적으로 유효성검사할 수도 있다.
일부 양태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 사용자 계정이 제 1 인증 키에 대응한다는 것을 표시하는 데이터베이스 엔트리에 제 1 사용자 계정을 저장할 수도 있다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 데이터베이스에서 저장된 엔트리에서, 생성된 사용자 계정에 관련된 정보를 저장할 수도 있다. 제어 회로부(304)는 또한, 예를 들어, 사용자 계정과 연관된 데이터베이스 엔트리에 인증 키의 로케이션에 대한 포인터를 저장함으로써, 사용자 계정을 인증 키와 연관시킬 수도 있다. 저장된 사용자 계정을 제 1 인증 키와 연관시킴으로써, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 제 2 구독 또는 사용자가 제 1 구독 서비스 상에서의 계정을 유효성검사할 것을 판단할 경우에, 계정이 신속하게 유효성검사되는 것을 보장할 수도 있다. 일부 사례들에서, 제어 회로부(304)는 스토리지(308) 내의 로케이션에서 제 1 인증 키를 저장할 수도 있고, 여기서, 로케이션은 디렉토리 또는 파일 경로에 의해 식별된다. 그 다음으로, 제어 회로부(304)는 제 1 사용자 계정에 대응하는 데이터베이스 엔트리에 로케이션으로의 경로를 저장할 수도 있다.
일부 양태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 사용자 계정을 저장하는 것에 후속하여, 컨텐츠 제공자 서버에서, 사용자를 제 1 구독 서비스에 가입시키기 위하여 컨텐츠 어그리게이터 서버로부터 요청을 수신할 수도 있고, 여기서, 요청은 제 2 인증 키를 포함한다. 제어 회로부(304)는 제 1 구독 서비스에 가입하기 위한 사용자 요청에 응답하여, 제 2 인증 키를 수신할 수도 있다. 예를 들어, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 제 2 구독 서비스(예컨대, 로비 수퍼 어그리게이터)의 사용자가 제 1 구독 서비스(예컨대, 훌루)에 가입하는 것을 희망한다는 것을 검출할 수도 있다. 상이한 예에서, 제 2 서비스 상에서 구현된 제어 회로부(304)는 제 1 서비스에 가입하는 비용이 비용 기준을 충족시킬 때, 요청을 제 1 서비스로 자동으로 전송할 수도 있다. 제 1 구독 서비스 상에서의 제어 회로부(304)는 제 2 키에서 저장된 정보를 복호화할 수도 있고, 제 2 키에서 저장된 정보를 취출할 수도 있고, 컨텐츠 제공자 서버 상에서 인증 키를 저장할 수도 있다. 제 2 인증 키를 수신하기 위한 프레임워크를 제공함으로써, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부는 사용자를 위한 계정을 보안성 있게 유효성검사할 수도 있다.
일부 양태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 인증 키를 제 2 인증 키와 비교할 수도 있다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 키와 연관된 사용자의 명칭에 관련된 제 2 키로부터 정보를 취출할 수도 있고, 그 다음으로, 식별된 사용자와 연관된 계정이 존재하는지 여부를 결정하기 위하여 데이터베이스에 질의할 수도 있다. 임의적으로, 그 다음으로, 제어 회로부(304)는 식별된 사용자의 계정과 연관된 (즉, 스토리지(308)로부터 또는 데이터베이스로부터의) 제 1 인증 키를 취출할 수도 있다. 제어 회로부(304)는 키들에서 저장된 데이터를 복호화하거나 복호화하지 않으면서, 제 2 인증 키를 제 1 인증 키와 추가로 비교할 수도 있다.
일부 양태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 인증 키가 제 2 인증 키와 일치하는 것으로 결정하는 것에 응답하여, 제 1 사용자 계정을 유효성검사할 수도 있다. 예를 들어, 제 2 인증 키와의 제 1 인증 키의 비교에 기초하여, 그 다음으로, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 어느 하나의 키와 연관된 사용자 계정을 식별할 수도 있다. 그 다음으로, 제어 회로부(304)는 계정을 식별하기 위하여 데이터베이스에 질의할 수도 있고, 계정이 유효성검사되었다는 것을 특정하는 표시를 저장할 수도 있다. 하나의 예에서, 제어 회로부(304)는 식별된 계정과 연관된 데이터베이스 레코드를 식별할 수도 있고, 계정이 유효성검사되는지 여부와 연관된 필드(예컨대, 필드 IS_VALIDATED)를, 계정이 유효성검사된다는 것을 표시하는 값(예컨대, TRUE)으로 설정할 수도 있다. 계정을 유효성검사함으로써, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 사용자가 계정을 생성하는 것을 필요로 하지 않고도, 컨텐츠 제공자 서버에 의해 인증된 사용자가 제 1 구독 서비스에 의해 제공된 미디어 컨텐츠를 액세스하는 것을 허용한다.
일부 실시형태들에서, 제 1 사용자 계정을 유효성검사하는 것에 응답하여, 제 1 계정 상에서 구현된 제어 회로부(304)는 제 1 사용자 계정을 통한 제 1 구독 서비스에 대한 액세스를 승인할 수도 있다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 계정이 이용을 위하여 이용가능하다는 것을 표시하는 메시지를 생성할 수도 있고, 메시지를 컨텐츠 어그리게이터 서버로 송신할 수도 있다. 이에 따라, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 2 구독 서비스의 제공들이 사용자에 의해 액세스될 수도 있다는 것을 사용자에게 통지할 수 있다.
일부 양태들에서, 제 1 인증 키는 제 2 구독 서비스에 의해 배정된 사용자를 위한 사용자명 및 패스워드에 기초한 암호화 키이다. 예를 들어, 인증 키는 컨텐츠 어그리게이터 서버 상에서의 사용자의 계정에 대응하는 사용자명 및 패스워드를 포함할 수도 있다. 또 다른 예에서, 컨텐츠 어그리게이터 서버 상의 제어 회로부(304)는 제 1 구독 서비스의 패스워드 요건들과 양립가능한 패스워드를 생성할 수도 있다. 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 컨텐츠 제공자 서버를 액세스하기 위하여 필요한 인증 정보가 사용자가 통상적으로 선택할 평균보다 더 강하다는 것을 보장하는, 복호화하기 어려운 난수화된 스트링들을 생성하도록 설계될 수도 있는 패스워드 생성 모듈을 사용할 수도 있다. 예를 들어, 그 또는 그녀의 패스워드를 용이하게 기억하기 위하여, 평균 사용자는 컨텐츠 제공자 서버 상에서 계정을 생성하기 위한 패스워드 요건들이 오직 글자들 및 숫자들로 이루어지는 패스워드를 허용할 경우, 패스워드를 위한 짧은 키워드 및 숫자(예컨대, "mypetsname1")를 선택할 수도 있다. 한편, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 혼합된 소문자 및 대문자 글자들, 숫자들, 및 특수한 부호들의 긴 스트링을 생성하기 위하여 패스워드 생성기 모듈을 사용할 수도 있다. 제어 회로부(304)는 각각의 구독 서비스에 대한 패스워드 규칙들로 사전-구성(pre-configure)될 수도 있다. 예를 들어, 패스워드 규칙은 제 1 구독 서비스(예컨대, 훌루)가 15 개의 부호들의 최대 길이의 패스워드를 허용한다는 것과, 앰퍼샌드 기호(ampersand symbol)들이 패스워드의 일부로서 허용되지 않는다는 것을 표시할 수도 있다. 제 1 구독 서비스(예컨대, 훌루)에 대한 패스워드 규칙에 기초하여, 제어 회로부(304)는 제 1 구독 서비스의 요건들에 순응하는 보안 패스워드(예컨대, "y#E%f4v3Tt$80u")를 생성할 수도 있다. 이러한 방법으로, 컨텐츠 제공자 서버 상에서의 사용자의 계정은 패스워드 해킹 시도들에 덜 민감해진다. 사용자의 사용자명은 컨텐츠 제공자 서버 상에서 사용자의 인증 정보의 보안성을 추가로 증가시키기 위하여 유사한 방식으로 생성될 수도 있다.
일부 실시형태들에서, 제 1 복수의 수용가능한 인증 키들은 컨텐츠 어그리게이터 서버로부터 컨텐츠 제공자 서버에서 수신된다. 예를 들어, 컨텐츠 제공자 서버에서 구현된 제어 회로부(304)는 규칙적인 간격들로 제 2 구독 서비스로부터 인증 키들의 리스트를 수신할 수도 있다. 예를 들어, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 제 2 구독 서비스에 있어서의 계정을 생성하였던 모든 새로운 사용자들과 연관된 인증 키들을 매일 송신할 수도 있다. 일부 사례들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 이전에 설명된 바와 같이, 제 1 인증 키를 복수의 수용가능한 인증 키들과 비교하기 위하여 데이터베이스에서 인증 키들의 수신된 리스트를 저장할 수도 있다.
일부 양태들에서, 컨텐츠 제공자 서버에서 저장된 데이터베이스 엔트리는 제 1 사용자 계정에 대한 포인터를 포함하는 제 1 데이터베이스 필드, 및 제 1 인증 키를 포함하는 제 2 데이터베이스 필드를 포함한다. 본원에서 이용된 바와 같은 용어 "포인터"는 그 값이 스토리지에서 위치된 또 다른 값의 어드레스를 포함하는 데이터를 지칭한다. 예를 들어, 컨텐츠 제공자 서버 상에서의 데이터베이스 엔트리는 사용자의 사용자명, 패스워드, 및 구독 레벨과 같은, 사용자의 계정에 대한 정보를 포함하는 제 2 데이터베이스 엔트리를 참조하는 제 1 데이터베이스 필드에서 저장된 포인터를 포함할 수도 있다. 데이터베이스 엔트리는 제 1 인증 키를 포함할 수도 있는 제 2 데이터베이스 필드를 포함할 수도 있다. 예를 들어, 제 1 인증 키는 제 2 데이터베이스 필드에서 값으로서 저장될 수도 있거나, 또는 대안적으로, 제 2 데이터베이스 필드는 제 1 인증 키의 로케이션에 대한 포인터를 포함할 수도 있다.
일부 실시형태들에서, 컨텐츠 제공자 서버에서 저장된 데이터베이스 엔트리는 제 1 구독 서비스에 대한 구독 기간들을 포함하는 제 3 데이터베이스 필드를 포함한다. 구독 기간들은 사용자가 구독 서비스로부터 사용자에 의해 이용가능하게 된 컨텐츠를 그 동안에 액세스할 수도 있는 날짜 범위를 포함할 수도 있다. 예를 들어, 사용자는 1월 1일부터 3월 31일까지 제 1 구독 서비스(예컨대, 훌루)에 가입될 수도 있다. 또한, 구독 기간들은 사용자가 컨텐츠를 어떻게 액세스할 수도 있는지와, 어느 컨텐츠가 선택된 구독에 기초하여 이용가능하게 되는지에 관련된 정보를 포함할 수도 있다. 예를 들어, 구독 기간들은 4 개의 스트림들의 최대 수가 사용자의 구독을 통해 컨텐츠를 액세스할 수도 있다는 것을 특정할 수도 있다. 또 다른 예에서, 구독 기간들은 사용자가 "프리미엄" 구독의 일부로서 모든 컨텐츠를 액세스할 수도 있지만, "기본" 구독 하에서는 최신 영화들을 액세스하기 위하여 요금을 지불해야 한다는 것을 표시할 수도 있다. 구독의 기간들은 구독의 가격을 결정할 수도 있고; 사용자가 구독하기 위하여 초래하는 가격은 또한, 제 3 데이터베이스 필드에서 저장될 수도 있다.
일부 실시형태들에서, 사용자를 제 1 구독 서비스에 가입시키기 위한 컨텐츠 어그리게이터 서버로부터의 요청은, 사용자가 컨텐츠 어그리게이터 서버에서 제 2 구독 서비스에 대한 구독 레벨을 선택하는 것에 응답하여, 추가의 사용자 입력 없이 컨텐츠 어그리게이터 서버로부터 송신된다. 예를 들어, 사용자가 제 2 구독 서비스(예컨대, 로비 수퍼 어그리게이터)에 대한 등록의 일부로서 정보를 입력할 때, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 2 개의 구독 레벨들: 하나의 구독 서비스에 대한 구독을 포함할 수도 있는 "표준" 레벨, 및 2 개의 구독 서비스들에 대한 구독을 포함할 수도 있는 "디럭스(deluxe)" 레벨을 생성할 수도 있다. 제 1 구독이 "디럭스" 레벨 구독의 일부로서 오직 제공될 경우, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 사용자가 "디럭스" 레벨 구독을 선택한 것으로 결정하는 것에 오직 응답하여 요청을 사용자로부터 제 2 구독 서비스로 송신할 수도 있다. 상이한 예에서, 사용자는 구독의 "표준" 레벨에 이미 가입될 수도 있다. 제 1 구독이 "디럭스" 레벨 구독의 일부로서 오직 제공된다는 것을 알게 될 시에, 사용자는 그 또는 그녀의 구독을 "디럭스" 레벨로 업그레이드할 것을 판단할 수도 있다. 추가의 사용자 입력 없이 요청을 컨텐츠 어그리게이터 서버로부터 제 1 구독으로 송신함으로써, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 사용자의 일부에 관한 최소 입력으로 제 1 구독 서비스에 의해 제공된 컨텐츠에 대한 액세스를 사용자에게 신속하게 제공할 수도 있다.
일부 실시형태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 사용자 계정을 유효성검사하는 것에 응답하여, 컨텐츠 제공자 서버로부터, 확인을 컨텐츠 어그리게이터 서버로 송신할 수도 있다. 예를 들어, 일단 제어 회로부(304)가 사용자 계정을 유효성검사하면, 제어 회로부(304)는 확인을 포함하는 메시지를 컨텐츠 어그리게이터 서버로 송신할 수도 있다. 확인을 송신함으로써, 제 2 서비스의 사용자는 그 또는 그녀가 제 1 구독 서비스와 연관된 미디어를 액세스할 수 있다는 것을 통지받을 수도 있다. 상이한 예에서, 제 2 구독 서비스 상에서 구현된 제어 회로부(304)가 제 1 구독 서비스와 제 2 구독 서비스 사이의 접속을 통해 제 1 구독 서비스의 미디어 컨텐츠를 액세스하도록 구성되면, 제 2 구독 서비스 상에서 구현된 제어 회로부(304)는 확인의 수신 시에 제 1 구독 서비스의 미디어를 열거하도록 구성될 수 있다.
일부 실시형태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 사용자 계정을 통해 제 1 구독 서비스의 미디어 컨텐츠를 액세스하기 위하여 컨텐츠 어그리게이터 서버로부터 요청을 수신할 수도 있다. 컨텐츠 어그리게이션 서비스의 사용자들은 컨텐츠를 액세스하기 위하여 각각의 컨텐츠 구독 서비스에 수동으로 로그인하는 태스크로 실망하게 될 수도 있다. 구독 서비스와 사용자 텔레비전 장비(402) 사이에서 생성된 직접적인 접속은 사용자를 위한 간소화된 뷰잉 경험을 가능하게 할 수도 있다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 미디어 컨텐츠(예컨대, 텔레비전 쇼 "The Simpsons"의 에피소드)를 액세스하기 위하여, 컨텐츠 어그리게이터 서버로부터 전달된 사용자 요청을 수신할 수도 있다. 제 1 사용자 계정을 통해 제 1 구독 서비스의 미디어 컨텐츠를 액세스하기 위하여 컨텐츠 어그리게이터 서버로부터 요청을 수신하는 것에 응답하여, 컨텐츠 어그리게이터 서버 상에서 또는 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 통신 네트워크(414) 상에서 컨텐츠 제공자 서버와 사용자 텔레비전 장비(402) 사이의 직접적인 접속을 생성할 수도 있다. 직접적인 접속은 컨텐츠 제공자 서버와 사용자 텔레비전 장비(402) 사이에서 어떤 양의 대역폭을 예약할 수도 있으므로, 컨텐츠 제공자 서버로부터 사용자 텔레비전 장비(402)로 미디어를 스트리밍하기 위한 사용자 요청은 컨텐츠 제공자와 사용자 텔레비전 장비(402) 사이의 네트워크 상태들에 관계 없이 항상 처리된다. 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 추가의 인증이 발생하지 않으면서, 직접적인 접속을 이용하여 미디어 컨텐츠를 사용자 텔레비전 장비(402)로 전송할 수도 있다. 또한, 직접적인 접속을 생성하고 컨텐츠 제공자 서버로부터 컨텐츠 어그리게이터 서버로 미디어를 전송함으로써, 미디어 컨텐츠는 제 2 구독 서비스를 액세스하기 위하여 이용된 사용자 인터페이스에서 디스플레이될 수도 있어서, 사용자를 위한 뷰잉 경험을 간소화할 수도 있다.
일부 실시형태들에서, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 컨텐츠 제공자 서버와 사용자 텔레비전 장비(402) 사이의 직접적인 접속의 생성에 응답하여, 제 1 구독 서비스와 연관된 사용자 인터페이스 스킨을 취출할 수도 있다. 예를 들어, 제 1 구독 서비스와 연관된 사용자 인터페이스 스킨은 제 1 구독 서비스와 연관된 사용자 인터페이스의 배경 컬러들, 폰트, 및 메뉴 로케이션과 같은 사용자 인터페이스 엘리먼트들의 시각적인 외관을 정의할 수도 있다. 추가적으로, 인터페이스 스킨은 스크린 상의 정의된 로케이션에서 디스플레이될 수 있는 제 1 구독 서비스와 연관된 로고, 및 스크린 엘리먼트들의 배경 컬러를 정의할 수 있는 제 1 구독 서비스와 연관된 컬러 팔레트를 포함할 수도 있다. 제어 회로부(304)는 사용자 인터페이스 스킨과 연관된 파라미터들을 추출할 수도 있고, 파라미터들을 제 2 구독 서비스와 연관된 사용자 인터페이스 스킨에 적용할 수도 있다. 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 디스플레이를 위하여, 제 2 구독 서비스와 연관된 미디어 컨텐츠 리스팅들 사용자 인터페이스 스킨을 생성할 수도 있다. 이러한 방법으로, 제 1 구독 서비스는 제 2 구독 서비스를 이용하여 제시된 컨텐츠의 느낌을 제어할 수 있을 수도 있다.
일부 실시형태들에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 컨텐츠 어그리게이터 서버로부터, 미디어 컨텐츠 리스팅의 제 1 사용자 계정을 통한 사용자 선택을 수신할 수도 있다. 예를 들어, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 컨텐츠 제공자 서버 상에서 이용가능한 컨텐츠의 미디어 컨텐츠 리스팅들을 취출하기 위하여 컨텐츠 제공자 서버와 컨텐츠 어그리게이터 서버 사이에서 생성된 접속을 사용할 수도 있다. 그 다음으로, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 사용자에 의해 행해진 미디어 컨텐츠 리스팅의 선택을 검출할 수도 있고, 여기서, 사용자는 컨텐츠 어그리게이터 서버 상에서의 계정과 연관된다. 일단 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)가 선택을 수신하면, 제어 회로부(304)는 디스플레이를 위하여, 사용자에 의해 선택된 미디어 컨텐츠 리스팅에 대응하는 미디어 자산을 생성할 수도 있다. 예를 들어, 사용자 텔레비전 장비(402) 상에서 구현된 제어 회로부(304)는 컨텐츠 제공자와 사용자 텔레비전 장비(402) 사이에서 생성된 직접적인 접속을 이용하여 미디어 자산을 취출할 수도 있다. 하나의 사례에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 미디어 컨텐츠(예컨대, 텔레비전 쇼 "The Simpsons"의 에피소드)에 대한 요청을 수신할 수도 있다. 제어 회로부(304)는 미디어의 부분들을 직접적인 접속을 이용하여 컨텐츠 제공자 서버로부터 사용자 텔레비전 장비(402)로 전송함으로써, 미디어를 스트리밍하기 시작할 수도 있다. 상이한 예에서, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 미디어 자산으로의 경로를, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)에 제공할 수도 있다. 이에 응답하여, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 경로에서 참조된 파일을 액세스할 수도 있고, 미디어 파일을 컨텐츠 어그리게이터 서버로, 또는 대안적으로, 사용자 텔레비전 장비(402), 사용자 컴퓨터 장비(404), 또는 무선 사용자 통신 디바이스(406)로 다운로딩할 수도 있다.
도 10 및 도 11은 개시물의 일부 실시형태들에 따른, 사용자가 제 1 서비스에 가입하기 이전에, 제어 회로부(예컨대, 제어 회로부(304))가 제 1 구독 서비스와 연관된 컨텐츠 제공자 서버 상에서의 사용자 계정을 생성하기 위한 알고리즘을 제시한다. 일부 실시형태들에서, 이 알고리즘은 프로세싱 회로부(예컨대, 프로세싱 회로부(306))에 의해 디코딩되고 실행되어야 할 명령어들의 세트로서 비-일시적 저장 매체(예컨대, 저장 디바이스(308)) 상으로 인코딩될 수도 있다. 프로세싱 회로부는 결국, 명령어들을 튜닝, 비디오 생성, 인코딩, 디코딩, 암호화, 복호화, 스케일링, 아날로그/디지털 변환 회로부 등과 같은, 제어 회로부(304) 내에 포함된 다른 서브-회로들에 제공할 수도 있다.
도 10에서의 플로우차트는 개시물의 일부 실시형태들에 따른, 제어 회로부(예컨대, 제어 회로부(304))가 컨텐츠 어그리게이터 서버로부터 제 1 인증 키를 수신하는 것에 기초하여 컨텐츠 제공자 서버 상에서의 계정을 생성하기 위한 알고리즘을 설명한다.
단계(1002)에서, 컨텐츠 제공자 서버 상에서의 계정을 생성하기 위한 알고리즘은 컨텐츠 어그리게이터 서버로부터 제 1 인증 키를 수신하는 것에 기초하여 시작할 것이다. 일부 실시형태들에서, 이것은 (예컨대, 제어 회로부(304) 또는 사용자 입력 인터페이스(310)에 의해 수신된 신호들로부터의) 사용자 액션 또는 입력에 응답하여 직접적으로 또는 간접적으로의 어느 하나로 행해질 수도 있다. 예를 들어, 알고리즘은 제어 회로부(304)가 사용자 입력 인터페이스(310)로부터 신호들을 수신하는 것에 응답하여 직접적으로 시작할 수도 있거나, 제어 회로부(304)는 알고리즘을 작동시키기 이전에 (예컨대, 디스플레이(312) 상에서 디스플레이되어야 할 프롬프트를 생성함으로써) 디스플레이를 이용하여 그 또는 그녀의 입력을 확인할 것을 사용자에게 촉구할 수도 있다.
단계(1004)에서, 제어 회로부(304)는 저장된 메모리로부터 수용가능한 인증 키의 다음 인스턴스를 취출하도록 진행한다. 일부 실시형태들에서, 제어 회로부(304)는 수용가능한 인증 키의 값을 나타내는 단일의 원시적인 데이터 구조를 수신할 수도 있다. 일부 실시형태들에서, 값은 더 큰 데이터 구조의 일부로서 저장될 수도 있고, 제어 회로부(304)는 더 큰 데이터 구조로부터 값을 취출하기 위하여 적절한 액세서 방법들을 실행함으로써 값을 취출할 수도 있다.
단계(1006)에서, 제어 회로부(304)는 취출된 수용가능한 인증 키의 값을, 컨텐츠 어그리게이터 서버로부터 수신된 제 1 인증 키의 저장된 값과 비교하도록 진행한다. 일부 실시형태들에서, 컨텐츠 어그리게이터 서버로부터 수신된 제 1 인증 키의 값은 알고리즘을 시작하기 이전에 (예컨대, 저장 디바이스(308) 상에서) 저장될 수도 있다. 일부 실시형태들에서, 컨텐츠 어그리게이터 서버로부터 수신된 제 1 인증 키의 값은 또한, 수용가능한 인증 키의 각각 및 매 인스턴스에 대하여 취출될 수도 있고, 컨텐츠 어그리게이터 서버로부터 수신된 제 1 인증 키의 값은 반복마다 변경될 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 메모리로부터 각각 값들을 액세스함으로써, 그리고 값 비교를 수행함으로써, 컨텐츠 어그리게이터 서버로부터 수신된 제 1 인증 키의 값을 수용가능한 인증 키의 값과 직접적으로 비교할 수도 있다. 일부 사례들에서, 제어 회로부(304)는 수용가능한 인증 키 및 컨텐츠 어그리게이터 서버로부터 수신된 제 1 인증 키를 비교하기 위하여 (예컨대, 객체 대 객체 비교를 위한) 비교 함수를 호출할 수도 있다.
단계(1008)에서, 제어 회로부(304)는 수용가능한 인증 키의 값이 컨텐츠 어그리게이터 서버로부터 수신된 제 1 인증 키의 값과 동일한지 여부를 결정하기 위하여, 수용가능한 인증 키 및 컨텐츠 어그리게이터 서버로부터 수신된 제 1 인증 키의 값들을 비교한다. 조건이 충족될 경우, 알고리즘은 단계(10.10)로 진행할 수도 있고; 조건이 충족되지 않을 경우, 알고리즘은 그 대신에, 단계(1012)로 진행할 수도 있다.
단계(1010)에서, 제어 회로부(304)는 단계(1008)에서의 조건이 충족되는 것에 기초하여 제 1 사용자 계정을 생성하기 위한 서브루틴을 실행할 것이다. 서브루틴이 실행된 후, 알고리즘은 단계(1012)로 진행할 수도 있고, 여기서, 수용가능한 인증 키의 모든 인스턴스들이 참작되고 추가의 반복들이 필요한지 여부가 결정된다.
단계(1014)에서, 제어 회로부(304)가 단계(1010)에서 사용자 계정을 이전에 생성하였을 경우, 제어 회로부(304)는 사용자 계정을 저장하기 위한 서브루틴을 실행할 것이다.
도 10의 설명들은 이 개시물의 임의의 다른 실시형태와 함께 이용될 수도 있고, 게다가, 도 10의 알고리즘과 관련하여 설명된 설명들은 이 개시물의 목적들을 증진시키기 위하여 대안적인 순서들로 또는 병렬로 행해질 수도 있다는 것이 고려된다. 예를 들어, 1008에서의 것들과 같은 조건적 명령문들 및 논리적 평가들은 래그를 감소시키거나 시스템 또는 방법의 속력을 증가시키기 위하여 임의의 순서로 또는 병렬로 또는 동시에 수행될 수도 있다. 추가의 예로서, 일부 실시형태들에서, 수용가능한 인증 키의 몇몇 인스턴스들은 다수의 논리적 프로세서 스레드들을 이용하여 병렬로 평가될 수도 있거나, 알고리즘은 가지 예측을 편입시킴으로써 개량될 수도 있다. 또한, 도 10의 알고리즘은 적절하게 구성된 소프트웨어 및 하드웨어의 조합 상에서 구현될 수도 있다는 것과, 도 3 내지 도 4와 관련하여 논의된 디바이스들 또는 장비의 임의의 것은 알고리즘의 하나 이상의 부분들을 구현하기 위하여 이용될 수 있다는 것이 주목되어야 한다.
도 11에서의 의사코드는 개시물의 일부 실시형태들에 따른, 컨텐츠 어그리게이터 서버로부터 제 1 인증 키를 수신하는 것에 기초하여 컨텐츠 제공자 서버 상에서의 계정을 생성하기 위한 알고리즘을 설명한다. 도 11에서의 의사코드에 의해 설명된 알고리즘은 임의의 수의 프로그래밍 언어들 및 다양한 상이한 하드웨어로 구현될 수도 있다는 것과, 스타일 및 포맷은 제한하는 것이 아니라, 오히려, 이 개시물의 일부 실시형태들을 구현하기 위하여 이용된 코드와 부합할 단계들 및 절차들의 일반적인 템플릿으로서 해석되어야 한다는 것이 당해 분야의 당업자에게 분명할 것이다.
라인(1101)에서, 알고리즘은 라인(1105) 상에서 시작하는, 변수들을 초기화하고 컨텐츠 어그리게이터 서버로부터 제 1 인증 키를 수신하는 것에 기초하여 컨텐츠 제공자 서버 상에서의 계정을 생성하도록 준비하기 위한 서브루틴을 작동시킬 수도 있다. 예를 들어, 일부 실시형태들에서, 제어 회로부(304)는 초기화 스테이지 동안에 프로세싱 회로부(306)를 위하여, 명령어들을 비-일시적 저장 매체(예컨대, 저장 디바이스(308))로부터 RAM으로 또는 캐시로 복사할 수도 있다. 추가적으로, 일부 실시형태들에서는, 비교를 위하여 이용되는 제 1 인증 키의 값, 또는 2 개의 값들이 필수적으로 동등한지를 결정하기 위한 공차 레벨이 1101에서 취출될 수도 있고, 설정될 수도 있고, 저장될 수도 있다.
라인(1105)에서, 제어 회로부(304)는 수용가능한 인증 키의 인스턴스들을 수신할 수도 있다. 일부 실시형태들에서, 이 인스턴스들은 저장된 메모리로부터 취출될 수도 있다. 제어 회로부(304)는 예를 들어, 수용가능한 인증 키의 값들의 어레이에 대한 포인터를 수신함으로써, 수용가능한 인증 키의 인스턴스들을 수신할 수도 있다. 또 다른 예에서, 제어 회로부(304)는 수용가능한 인증 키의 엘리먼트들을 포함하는 반복자 객체와 같은, 클래스의 객체를 수신할 수도 있다.
라인(1106)에서, 제어 회로부(304)는 수용가능한 인증 키의 다양한 인스턴스들을 통해 반복할 수도 있고, 오직 단일 인스턴스가 이용가능할 경우, 루프는 오직 한 번 실행될 것이다. 이 루프는 도 11의 알고리즘을 구현하기 위하여 이용된 하드웨어 및 소프트웨어의 선택에 따라 다수의 방식들로 구현될 수도 있고; 예를 들어, 이것은 "for" 또는 "while" 루프의 일부로서 구현될 수도 있다.
라인(1107)에서, 제어 회로부(304)는 수용가능한 인증 키의 값을 일시적인 변수 "A"로 저장할 것이다. 일부 실시형태들에서, 수용가능한 인증 키의 값은 더 큰 데이터 구조 또는 클래스의 일부로서 저장될 것이고, 수용가능한 인증 키의 값은 적절한 액세서 방법들을 통해 획득될 수도 있다. 일부 실시형태들에서, 수용가능한 인증 키는 적절한 해싱 알고리즘에 의하여 스트링 또는 다른 비-숫자 데이터 타입으로부터 숫자 데이터 타입으로 변환될 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 제 1 인증 키와의 수용가능한 인증 키의 비교를 수행하기 위한 함수를 호출할 수도 있다. 일부 실시형태들에서, 수용가능한 인증 키는 원시적인 데이터 구조로서 인코딩될 수도 있고, 일시적인 변수를 이용하는 것이 아니라, 수용가능한 인증 키는 라인(1109)에서의 비교들에서 직접적으로 이용될 수도 있다.
라인(1108)에서, 제어 회로부(304)는 제 1 인증 키의 값을 일시적인 변수 "B"로 저장할 것이다. 수용가능한 인증 키와 유사하게, 일부 실시형태들에서, 제 1 인증 키의 값은 더 큰 데이터 구조 또는 클래스의 일부로서 저장될 것이고, 제 1 인증 키의 값은 액세서 방법들을 통해 획득될 수도 있다. 일부 실시형태들에서, 제 1 인증 키는 적절한 해싱 알고리즘에 의하여 스트링 또는 다른 비-숫자 데이터 타입으로부터 숫자 데이터 타입으로 변환될 수도 있거나, 제 1 인증 키는 원시적인 데이터 구조일 수도 있고, 라인(1109)에서의 비교들에서 직접적으로 이용될 수도 있다.
라인(1109)에서, 제어 회로부(304)는 그것들이 동등한지를 알아 보기 위하여 A의 값을 B의 값과 비교한다.
라인(1110)에서, 제어 회로부(304)는 라인(1109)에서의 조건이 충족될 경우에 제 1 사용자 계정을 생성하기 위한 서브루틴을 실행할 것이다.
라인(1112)에서, 제어 회로부(304)는 라인(1109)에서의 조건이 충족되지 않을 경우에 다음의 수용가능한 인증 키를 취출하기 위한 서브루틴을 실행할 것이다.
라인(1113)에서, 제어 회로부(304)가 라인(1110)에서 계정을 이전에 생성하였을 경우, 제어 회로부(304)는 생성된 사용자 계정을 저장하기 위한 서브루틴을 실행할 것이다. 제어 회로부(304)는 스토리지(308) 내에 계정을 저장할 수도 있다.
라인(1115)에서, 제어 회로부(304)는 알고리즘이 그 기능을 수행한 후에 종결 서브루틴을 작동시킬 수도 있다. 예를 들어, 일부 실시형태들에서, 제어 회로부(304)는 변수들을 파괴할 수도 있고, 가비지 수집을 수행할 수도 있고, 메모리를 자유롭게 하거나 프로세싱 회로부(306)의 캐시를 소거할 수도 있다.
도 11에서의 의사코드에 의해 설명된 알고리즘은 임의의 수의 프로그래밍 언어들 및 다양한 상이한 하드웨어로 구현될 수도 있다는 것과, 원시적인 기능들, 논리적 평가들, 및 기능 평가들의 특정한 선택 및 로케이션은 제한하는 것으로 의도된 것이 아니라는 것이 당해 분야의 당업자에게 분명할 것이다. 코드는 다양한 논리적 평가들의 순서를 조작하거나, 단일의 반복적인 루프가 아니라 병렬로 몇몇 반복들을 수행하거나, 또는 그렇지 않을 경우에, 입력들 또는 최종적인 출력들을 근본적으로 변경하지 않으면서 실행-시간 및 성능 메트릭들을 조작하고 최적화기 위하여 재인자화될 수도 있거나 재기록될 수도 있다는 것이 또한 분명할 것이다. 예를 들어, 일부 실시형태들에서, 파괴 조건들은 동작의 속력을 높이기 위하여 라인들(1110 및 1112) 이후에 배치될 수도 있거나, 조건적 명령문은 케이스-스위치로 대체될 수도 있다. 일부 실시형태들에서는, 단계(1006)에서의 수용가능한 인증 키의 모든 인스턴스들 상에서 반복하는 것이 아니며, 일부 실시형태들에서, 코드는 제어 회로부(304)가 복수의 프로세서들 또는 프로세서 스레드들 상에서 수용가능한 인증 키들의 다수의 인스턴스들을 동시에 평가하는 것이 명령되도록 재기록될 수도 있어서, 필요한 반복들의 수를 저하시키고, 잠재적으로 연산 시간의 속력을 높인다.
도 12 및 도 13은 개시물의 일부 실시형태들에 따른, 제어 회로부(예컨대, 제어 회로부(304))가 인증 키들의 가능한 값들을 포함하는 데이터베이스를 이용하여 요청에 기초하여 제 1 사용자 계정을 유효성검사하기 위한 알고리즘을 제시한다. 도 10 및 도 11에 의해 설명된 알고리즘들과 유사하게, 일부 실시형태들에서, 이 알고리즘은 프로세싱 회로부(예컨대, 프로세싱 회로부(306))에 의해 디코딩되고 실행되어야 할 명령어들의 세트로서 비-일시적 저장 매체(예컨대, 저장 디바이스(308)) 상으로 인코딩될 수도 있다. 프로세싱 회로부는 결국, 명령어들을 튜닝, 비디오 생성, 인코딩, 디코딩, 암호화, 복호화, 스케일링, 아날로그/디지털 변환 회로부 등과 같은, 제어 회로부(304) 내에 포함된 다른 서브-회로들에 제공할 수도 있다.
도 12에서의 플로우차트는 개시물의 일부 실시형태들에 따른, 제어 회로부(예컨대, 제어 회로부(304))가 요청에 기초하여 데이터베이스를 검색하고 제 1 사용자 계정을 유효성검사하기 위한 알고리즘을 설명한다.
단계(1202)에서, 데이터베이스를 검색하고 제 1 사용자 계정을 유효성검사하기 위한 알고리즘은 요청에 기초하여 시작할 것이다. 일부 실시형태들에서, 이것은 (예컨대, 제어 회로부(304) 또는 사용자 입력 인터페이스(310)에 의해 수신된 신호들로부터의) 사용자 액션 또는 입력에 응답하여 직접적으로 또는 간접적으로의 어느 하나로 행해질 수도 있다.
단계(1204)에서, 제어 회로부(304)는 저장된 메모리로부터 다음의 인증 키의 다음 인스턴스를 취출하도록 진행한다. 일부 실시형태들에서, 제어 회로부(304)는 인증 키의 값을 나타내는 단일의 원시적인 데이터 구조를 취출할 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 더 큰 클래스 또는 데이터 구조로부터 값을 취출할 수도 있다.
단계(1206)에서, 제어 회로부(304)는 인증 키의 타입의 가능한 값들을 포함하는 데이터베이스를 액세스한다. 일부 실시형태들에서, 이 데이터베이스는 알고리즘을 시작하기 이전에, 로컬방식으로 (예컨대, 저장 디바이스(308) 상에서) 저장될 수도 있다. 일부 실시형태들에서, 데이터베이스는 또한, 정보를 통신 네트워크(예컨대, 통신 네트워크(414)에 걸쳐 원격 저장 디바이스(예컨대, 컨텐츠 어그리게이터(430)) 상에서 구현된 데이터베이스로 송신하기 위하여 통신 회로부를 이용함으로써 액세스될 수도 있다.
단계(1208)에서, 제어 회로부(304)는 인증 키와 일치하는 엔트리들에 대한 데이터베이스 테이블(database table)들을 검색한다. 일부 실시형태들에서, 이것은 데이터베이스 내부에서 이용된 식별자들의 타입들과 일치하는 식별자, 예를 들어, 인증 키를 나타내는 스트링 또는 인티저(integer)를 비교함으로써 행해질 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 인증 키와 일치하는 테이블 엔트리들에 대하여 일반적인 질의를 데이터베이스에 제출할 수도 있고, 제어 회로부(304)는 인덱스들의 리스트 또는 데이터베이스 내용들의 부분을 포함하는 데이터 구조를 수신할 수도 있다. 일부 실시형태들에서, 데이터베이스는 결국, 다른 데이터베이스들의 엔트리들을 상호-참조하는 접합 테이블(junction table)을 구현할 수도 있다. 이 경우, 제어 회로부(304)는 결국, 제 2 데이터베이스로부터 정보를 취출하기 위하여 이용될 수 있는 제 1 데이터베이스로부터 인덱스들을 취출할 수도 있다. 우리는 명확함의 목적들을 위하여 단일 데이터베이스와 상호작용하는 제어 회로부(304)를 설명할 수도 있지만, 도 12의 알고리즘은 다수의 독립적인 또는 상호-참조된 데이터베이스들을 이용하여 구현될 수도 있다.
단계(1210)에서, 제어 회로부(304)는 인증 키와 일치하는 데이터베이스 엔트리들이 있는지를 결정할 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 데이터베이스로부터, 일치하는 엔트리들이 없다는 것을 표시하는 신호를 수신할 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 그 대신에, 인덱스들의 리스트 또는 NULL 또는 더미 값을 갖는 데이터 구조들을 수신할 수도 있다. 제어 회로부(304)가 인증 키와 일치하는 데이터베이스 엔트리들이 있다는 것을 식별할 경우, 알고리즘은 단계(1212)로 진행하고, 그렇지 않을 경우에는, 알고리즘이 단계(1214)로 진행한다.
단계(1212)에서, 제어 회로부(304)는 사용자 계정을 유효성검사하기 위한 서브루틴을 실행할 것이다. 나중에, 알고리즘은 단계(1214)로 진행할 수도 있고, 여기서, 참작될 필요가 있는 인증 키의 추가의 인스턴스들이 있는지가 결정된다.
단계(1214)에서, 제어 회로부(304)는 인증 키의 모든 인스턴스들이 참작되는지와, 추가의 반복들이 필요한지를 결정할 것이다. 추가의 반복들이 필요한 경우, 알고리즘은 단계(1204)로 되돌아갈 것이고, 여기서, 제어 회로부(304)는 인증 키의 다음 인스턴스를 취출할 것이다. 추가의 반복들이 필요하지 않을 경우, 알고리즘은 단계(1216)로 진행할 것이다.
단계(1216)에서, 제어 회로부(304)는 제 1 구독에 대한 액세스를 승인하기 위한 서브루틴을 실행할 것이다.
도 12의 설명들은 이 개시물의 임의의 다른 실시형태와 함께 이용될 수도 있다는 것이 고려된다. 게다가, 도 12의 알고리즘과 관련하여 설명된 설명들은 이 개시물의 목적들을 증진시키기 위하여 대안적인 순서들로 또는 병렬로 행해질 수도 있다. 예를 들어, 제어 회로부(304)는 다수의 질의들을 데이터베이스에 병렬로 제출할 수도 있거나, 그것은 래그를 감소시키고 알고리즘의 실행의 속력을 높이기 위하여 다수의 질의들을 복수의 유사한 데이터베이스들에 제출할 수도 있다. 또한, 도 12의 알고리즘은 적절하게 구성된 소프트웨어 및 하드웨어의 조합 상에서 구현될 수도 있다는 것과, 도 3 내지 도 4와 관련하여 논의된 디바이스들 또는 장비의 임의의 것은 알고리즘의 하나 이상의 부분들을 구현하기 위하여 이용될 수 있다는 것이 주목되어야 한다.
도 13에서의 의사코드는 개시물의 일부 실시형태들에 따른, 요청에 기초하여 제 1 사용자 계정을 유효성검사하기 위한 알고리즘을 설명한다. 도 13에서의 의사코드에 의해 설명된 알고리즘은 임의의 수의 프로그래밍 언어들 및 다양한 상이한 하드웨어로 구현될 수도 있다는 것과, 스타일 및 포맷은 제한하는 것이 아니라, 오히려, 이 개시물의 일부 실시형태들을 구현하기 위하여 이용된 코드와 부합할 단계들 및 절차들의 일반적인 템플릿으로서 해석되어야 한다는 것이 당해 분야의 당업자에게 분명할 것이다.
라인(1301)에서, 알고리즘은 라인(1305) 상에서 시작하는, 변수들을 초기화하고 요청에 기초하여 제 1 사용자 계정을 유효성검사하도록 준비하기 위한 서브루틴을 작동시킬 수도 있다. 예를 들어, 일부 실시형태들에서, 제어 회로부(304)는 초기화 스테이지 동안에 프로세싱 회로부(306)를 위하여, 명령어들을 비-일시적 저장 매체(예컨대, 저장 디바이스(308))로부터 RAM으로 또는 캐시로 복사할 수도 있다.
라인(1305)에서, 제어 회로부(304)는 수용가능한 인증 키들의 인스턴스들을 수신할 수도 있다. 일부 실시형태들에서, 이 인스턴스들은 저장된 메모리로부터 취출될 수도 있다.
라인(1306)에서, 제어 회로부(304)는 수용가능한 인증 키들의 다양한 인스턴스들을 통해 반복할 수도 있고, 오직 단일 인스턴스가 이용가능할 경우, 루프는 오직 한 번 실행될 것이다. 이 루프는 도 13의 알고리즘을 구현하기 위하여 이용된 하드웨어 및 소프트웨어의 선택에 따라 다수의 방식들로 구현될 수도 있고; 예를 들어, 이것은 일부 프로그래밍 언어들에서 "for" 또는 "while" 루프의 일부로서 구현될 수도 있다. 일부 실시형태들에서, 내부 방법의 일부로서 루프를 수행할 단일 클래스 또는 캡슐화된 데이터 구조로 수용가능한 인증 키들의 인스턴스들을 저장하는 것이 편리할 수도 있다.
라인(1307)에서, 제어 회로부(304)는 수용가능한 인증 키들과 일치하는 엔트리들에 대하여 데이터베이스에 질의할 수도 있다. 데이터베이스가 어떻게 구현되는지와, 수용가능한 인증 키들이 어떻게 저장되는지에 따라, 중간 단계가 수용가능한 인증 키들을 데이터베이스와 부합하는 형태로 변환하도록 요구될 수도 있다. 예를 들어, 수용가능한 인증 키들은 질의의 일부로서 제어 회로부(304)에 의해 데이터베이스로 송신되기 이전에, 적절한 해싱 알고리즘을 이용하여 스트링 또는 인티저로 인코딩될 수도 있다. 일부 실시형태들에서, 수용가능한 인증 키들은 원시적인 데이터 구조로서 인코딩될 수도 있고, 제어 회로부(304)는 수용가능한 인증 키들을 질의로서 데이터베이스에 직접적으로 제출할 수도 있다. 데이터베이스에 질의한 후에, 제어 회로부(304)는 수용가능한 인증 키들과 일치하는 데이터베이스 엔트리들의 세트를 수신할 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 데이터-구조, 데이터베이스의 인덱스들의 세트, 또는 또 다른 상호-참조된 데이터베이스의 인덱스들의 세트의 형태로 이 엔트리들을 수신할 수도 있다.
라인(1309)에서, 제어 회로부(304)는 수용가능한 인증 키들과 일치하는 임의의 데이터베이스 엔트리들이 있는지를 결정할 것이다. 일부 실시형태들에서, 제어 회로부(304)는 데이터베이스가 라인(1309)에서의 질의에 응답하여 비어 있는 데이터 구조 또는 NULL 값을 반환하였는지를 체크함으로써 이것을 결정할 수도 있다. 일치하는 데이터베이스 엔트리들이 있을 경우, 알고리즘은 라인(1309)으로 진행할 수도 있다. 일치하는 데이터베이스 엔트리들이 없었을 경우, 알고리즘은 그 대신에 라인(1312)으로 진행할 수도 있다.
라인(1309)에서, 제어 회로부(304)는 수용가능한 인증 키들과 일치하는 데이터베이스 엔트리들로부터 제 1 인증 키의 하나 이상의 값들을 취출할 수도 있다. 예를 들어, 제어 회로부(304)가 라인(1307)에서 데이터베이스에 질의한 후에 인덱스들의 리스트를 취출할 경우, 일부 실시형태들에서, 제어 회로부(304)는 수신된 인덱스들에서 위치된 제 1 인증 키에 대한 데이터베이스 엔트리들을 취출할 수도 있다. 일부 실시형태들에서, 인덱스들은 데이터베이스 내에 포함된 더 큰 데이터 구조를 지시할 수도 있고, 제어 회로부(304)는 적절한 액세서 방법들을 이용하여 데이터 구조 내로부터 제 1 인증 키의 값들을 취출할 수도 있다. 일부 실시형태들에서, 제어 회로부(304)는 제 1 인증 키의 값들을 취출할 수도 있고, 추가로 진행하기 이전에, 그것들을 로컬방식으로 (예컨대, 스토리지(308) 내에) 별도의 데이터 구조로 저장할 수도 있다. 제 1 인증 키의 값들을 취출한 후에, 알고리즘은 라인(1310)으로 진행할 것이다.
라인(1310)에서, 제어 회로부(304)는 제 1 인증 키의 값들을 이용하고 제어 회로부를 이용하여 제 1 사용자 계정을 유효성검사하기 위한 서브루틴을 실행할 것이다. 나중에, 알고리즘은 라인(1313)으로 진행할 수도 있다.
라인(1312)에서, 제어 회로부(304)는 라인(1309)에서의 조건이 충족되지 않을 경우에, 제어 회로부(304)를 이용하여 다음의 허용된 인증 키를 취출하기 위한 서브루틴을 실행할 것이다.
*
*
*라인(1313)에서, 제어 회로부(304)는 제 1 사용자 계정에 대한 액세스를 승인하기 위한 서브루틴을 실행할 것이다. 나중에, 알고리즘은 라인(1315)에서의 종결 서브루틴으로 진행할 수도 있다.
라인(1315)에서, 제어 회로부(304)는 알고리즘이 그 기능을 수행하였고 수용가능한 인증 키들의 모든 인스턴스들이 프로세싱되었고 데이터베이스에 대하여 체크된 후에 종결 서브루틴을 실행할 수도 있다. 예를 들어, 일부 실시형태들에서, 제어 회로부(304)는 변수들을 파괴할 수도 있고, 가비지 수집을 수행할 수도 있고, 메모리를 자유롭게 하거나 프로세싱 회로부(306)의 캐시를 소거할 수도 있다.
도 13에서의 의사코드에 의해 설명된 알고리즘은 임의의 수의 프로그래밍 언어들 및 다양한 상이한 하드웨어로 구현될 수도 있다는 것과, 원시적인 기능들, 논리적 평가들, 및 기능 평가들의 특정한 선택 및 로케이션은 제한하는 것으로 의도된 것이 아니라는 것이 당해 분야의 당업자에게 분명할 것이다. 코드는 다양한 논리적 평가들의 순서를 조작하거나, 단일의 반복적인 루프가 아니라 병렬로 몇몇 반복들을 수행하거나, 또는 그렇지 않을 경우에, 입력들 또는 최종적인 출력들을 근본적으로 변경하지 않으면서 실행-시간 및 성능 메트릭들을 조작하고 최적화기 위하여 재인자화될 수도 있거나 재기록될 수도 있다는 것이 또한 분명할 것이다. 예를 들어, 일부 실시형태들에서, 코드는 제어 회로부(304)가 수용가능한 인증 키들의 다수의 인스턴스들을 평가하고 복수의 프로세서들 또는 프로세서 스레들을 이용하여 다수의 데이터베이스 질의들을 동시에 제출하는 것이 명령되도록 재기록될 수도 있다. 우리는 단일 데이터베이스와 상호작용하는 제어 회로부(304)를 설명할 수도 있지만, 이것은 예시적인 목적들을 위하여 설명된 오직 단일 실시형태이고, 도 13의 알고리즘은 다수의 독립적인 또는 상호-참조된 데이터베이스들을 이용하여 구현될 수도 있다는 것이 또한 이해된다. 예를 들어, 로컬 방식으로 (예컨대, 스토리지(308) 상에) 저장된 데이터베이스는 임의의 수의 통신 채널들(예컨대, 통신 네트워크(414))을 통해 액세스될 수도 있는 원격으로(예컨대, 컨텐츠 어그리게이터(430)) 저장된 데이터베이스를 인덱싱할 수도 있거나 상호-참조할 수도 있다. 일부 실시형태들에서, 이것은 제어 회로부(304)가 원격 서버 상에서 저장된 더 큰 데이터베이스를 수용에 따라 액세스하기 위하여 작은 로컬 드라이브 상에서 효율적으로 저장된 룩-업 테이블(look-up table) 또는 데이터베이스 프론트-엔드(front-end)를 사용하는 것을 허용할 수도 있다.
도 14는 제 1 구독 서비스 상에서의 제 1 사용자 계정을 생성하고 유효성검사할 시에 수반된 예시적인 단계들의 플로우차트이다. 프로세스(1400) 또는 그 임의의 단계는 도 3 내지 도 4에서 도시된 디바이스들 중의 임의의 것 상에서 수행될 수 있거나 그것에 의해 제공될 수 있다는 것이 주목되어야 한다. 예를 들어, 프로세스(1400)는 인스턴스들의 수가 어떤 수를 언제 초과하는지를 검출하기 위하여, 그리고 메시지를 디바이스로 송신하기 위하여, 사용자 장비(402, 404, 및/또는 406)(도 4) 상에서 구현된 제어 회로부에 의해 명령된 바와 같이, 제어 회로부(304)(도 3)에 의해 실행될 수도 있다. 게다가, 프로세스(1400)의 하나 이상의 단계들은 임의의 다른 프로세스 또는 실시형태의 하나 이상의 단계들로 편입될 수도 있거나 이것들과 조합될 수도 있다.
프로세스(1400)는 단계(1402)에서 시작하고, 여기서, 제어 회로부(304)는 컨텐츠 어그리게이터 서버로부터 제 1 인증 키를 수신한다. 예를 들어, 제 2 구독 서비스를 제공하는 엔티티(예컨대, 로비 수퍼 어그리게이터)는 제 1 구독 서비스에 대한 구독을 제 2 구독 서비스의 사용자들에게 할인하여 제공하기 위하여 제 1 구독 서비스의 엔티티(예컨대, 훌루)와 합의할 수도 있다. 사용자가 제 1 구독 서비스에 가입하기 이전에, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 제 1 인증 키를 컨텐츠 어그리게이터 서버로 송신한다.
단계(1404)에서, 제어 회로부(304)는 제 1 인증 키를 복수의 수용가능한 인증 키들과 비교한다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 1 인증 키에서 저장된 정보를 추출할 수도 있고, 제 2 구독 서비스의 식별자에 관련된 키의 일부에서 열거된 구독 서비스(예컨대, 로비 수퍼 어그리게이터)의 명칭을 결정할 수도 있다. 그 다음으로, 제어 회로부(304)는 제 1 구독 서비스 상에서의 계정들을 생성하기 위하여 허용되도록, 제어 회로부(304)가 이전에 식별하였던 구독 서비스들의 리스트를 취출할 수도 있고, 구독 서비스의 명칭을 취출된 리스트에서의 각각의 구독 서비스와 비교할 수도 있다. 실제로, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 생성되는 계정들에 대한 제어를 유지하면서, 컨텐츠 어그리게이터들(즉, 제 2 구독 서비스)로부터 새로운 사용자들에 대한 정보를 보안성 있게 수신할 수 있다. 예를 들어, 제 1 구독 서비스는 할인된 가격에서 제 1 구독 서비스 상에서의 구독들을 제공하기 위하여 제 2 구독 서비스와 계약할 수도 있다. 인증 키에서의 제 2 구독 서비스에 대한 정보를 캡슐화함으로써, 제 1 구독 서비스는 신뢰된 컨텐츠 어그리게이터들과 연관된 사용자들의 계정들이 오직 생성된다는 것을 보장한다.
단계(1406)에서, 제어 회로부(304)는 제 1 인증 키가 제 1 복수의 수용가능한 인증 키들 중의 하나와 일치하는 것으로 결정하는 것에 응답하여, 제 1 사용자 계정을 생성한다. 예를 들어, 제어 회로부(304)는 컨텐츠 제공자 서버 상에서의 계정을 생성하기 위하여 필요한 정보를 생성하기 위하여, 사용자명, 패스워드, 및 구독 서비스 명칭과 같은, 인증 키 내에 포함된 정보를 추출할 수도 있다. 일부 사례들에서, 제어 회로부(304)는 계정이 아직 유효성검사되지 않은 것을 특정하는, 제 1 계정과 연관된 표시를 저장할 수도 있다.
단계(1408)에서, 제어 회로부(304)는 데이터베이스 엔트리 또는 예에서 제 1 사용자 계정을 저장하고, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 데이터베이스에서 저장된 데이터베이스 엔트리 내에 생성된 사용자 계정에 관련된 정보를 저장할 수도 있다. 제어 회로부(304)는 또한, 예를 들어, 사용자 계정과 연관된 데이터베이스 엔트리에 인증 키의 로케이션에 대한 포인터를 저장함으로써, 사용자 계정을 인증 키와 연관시킬 수도 있다. 저장된 사용자 계정을 제 1 인증 키와 연관시킴으로써, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 제 2 구독 또는 사용자가 제 1 구독 서비스 상에서의 계정을 유효성검사할 것을 판단할 경우에, 계정이 신속하게 유효성검사될 수도 있다는 것을 보장할 수도 있다. 일부 사례들에서, 제어 회로부(304)는 스토리지(308) 내의 로케이션에서 제 1 인증 키를 저장할 수도 있고, 여기서, 로케이션은 경로에 의해 식별된다. 그 다음으로, 제어 회로부(304)는 제 1 사용자 계정에 대응하는 데이터베이스 엔트리에 로케이션으로의 경로를 저장할 수도 있다.
단계(1410)에서, 제어 회로부(304)는 제 1 사용자 계정을 저장하는 것에 후속하여, 사용자를 제 1 구독 서비스에 가입시키기 위하여 컨텐츠 어그리게이터 서버로부터 요청을 수신한다. 제어 회로부(304)는 제 1 구독 서비스에 가입하기 위한 사용자 요청에 응답하여, 제 2 인증 키를 수신할 수도 있다. 예를 들어, 컨텐츠 어그리게이터 서버 상에서 구현된 제어 회로부(304)는 제 2 구독 서비스(예컨대, 로비 수퍼 어그리게이터)의 사용자가 제 1 구독 서비스(예컨대, 훌루)에 가입하는 것을 희망한다는 것을 검출할 수도 있다. 상이한 예에서, 제 2 서비스 상에서 구현된 제어 회로부(304)는 제 1 서비스에 가입하는 비용이 비용 기준을 충족시킬 때, 요청을 제 1 서비스로 자동으로 전송할 수도 있다. 제 1 구독 서비스 상에서의 제어 회로부(304)는 제 2 키에서 저장된 정보를 복호화할 수도 있고, 제 2 키에서 저장된 정보를 취출할 수도 있고, 컨텐츠 제공자 서버 상에서 인증 키를 저장할 수도 있다.
단계(1412)에서, 제어 회로부(304)는 제 1 인증 키를 제 2 인증 키와 비교한다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 키와 연관된 사용자의 명칭에 관련된 제 2 키로부터 정보를 취출할 수도 있고, 그 다음으로, 식별된 사용자와 연관된 계정이 존재하는지 여부를 결정하기 위하여 데이터베이스에 질의할 수도 있다. 임의적으로, 그 다음으로, 제어 회로부(304)는 식별된 사용자의 계정과 연관된 (즉, 스토리지(308)로부터 또는 데이터베이스로부터의) 제 1 인증 키를 취출할 수도 있다. 제어 회로부(304)는 키들에서 저장된 데이터를 복호화하거나 복호화하지 않으면서, 제 2 인증 키를 제 1 인증 키와 추가로 비교할 수도 있다.
단계(1414)에서, 제어 회로부(304)는 제 1 인증 키가 제 2 인증 키와 일치하는 것으로 결정하는 것에 응답하여, 제 1 사용자 계정을 유효성검사한다. 예를 들어, 제 2 인증 키와의 제 1 인증 키의 비교에 기초하여, 그 다음으로, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 어느 하나의 키와 연관된 사용자 계정을 식별할 수도 있다. 그 다음으로, 제어 회로부(304)는 계정을 식별하기 위하여 데이터베이스에 질의할 수도 있고, 계정이 유효성검사되었다는 것을 특정하는 표시를 저장할 수도 있다. 하나의 예에서, 제어 회로부(304)는 식별된 계정과 연관된 데이터베이스 레코드를 식별할 수도 있고, 계정이 유효성검사되는지 여부와 연관된 필드(예컨대, 필드 IS_VALIDATED)를, 계정이 유효성검사된다는 것을 표시하는 값으로 설정할 수도 있다.
단계(1416)에서, 제어 회로부(304)는 제 1 사용자 계정을 유효성검사하는 것에 응답하여, 제 1 구독 서비스에 대한 액세스를 승인한다. 예를 들어, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 계정이 이용을 위하여 이용가능하다는 것을 표시하는 메시지를 생성할 수도 있고, 메시지를 컨텐츠 어그리게이터 서버로 송신할 수도 있다. 이에 따라, 컨텐츠 제공자 서버 상에서 구현된 제어 회로부(304)는 제 2 구독 서비스의 제공들이 사용자에 의해 액세스될 수도 있다는 것을 사용자에게 통지할 수 있다.
도 14의 단계들 또는 설명들은 이 개시물의 임의의 다른 실시형태와 함께 이용될 수도 있다는 것이 고려된다. 게다가, 도 14와 관련하여 설명된 단계들 및 설명들은 이 개시물의 목적들을 증진시키기 위하여 대안적인 순서들로 또는 병렬로 행해질 수도 있다. 예를 들어, 이 단계들의 각각은 래그를 감소시키거나 시스템 또는 방법의 속력을 증가시키기 위하여 임의의 순서로 또는 병렬로 또는 실질적으로 동시에 수행될 수도 있다.
위에서 논의된 프로세스들은 제한적인 것이 아니라, 예시적인 것으로 의도된 것이다. 당해 분야의 당업자는 본원에서 논의된 프로세스들의 단계들이 생략될 수도 있고, 수정될 수도 있고, 조합될 수도 있고, 및/또는 재배열될 수도 있고, 임의의 추가적인 단계들은 발명의 범위로부터 이탈하지 않으면서 수행될 수도 있다는 것을 인식할 것이다. 더 일반적으로, 상기 개시물은 제한적인 것이 아니라 예시적인 것으로 의도된다. 오직 뒤따르는 청구항들은 본 발명이 포함하는 것에 대한 경계들을 설정하도록 의도된다.

Claims (9)

  1. 방법으로서,
    특정 시간 기간(particular time period) 동안, 사용자 계정의 크리덴셜(credential)을 사용하여 미디어 서비스에 로깅된 상이한 사용자 디바이스가 요청한 동시 스트림의 수를 추적하는 단계;
    특정 수의 동시 스트림이 상기 특정 시간 기간 동안 상이한 사용자 디바이스에 의해 요청되었다는 결정에 응답하여,
    상기 사용자 계정의 크리덴셜을 사용하여 상기 미디어 서비스에 로깅된 추가 사용자 디바이스에 대한 추가 동시 스트림을 요청하기 위해 사용자 선택 가능 옵션을 송신하는 단계; 및
    상기 옵션의 사용자 선택을 수신하는 것에 응답하여, 상기 추가 사용자 디바이스에 추가 동시 스트림을 송신하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 상이한 사용자 디바이스는 상이한 사용자 프로파일과 연관되는 것인, 방법.
  3. 제1항에 있어서,
    상기 특정 수의 동시 스트림은 상기 미디어 서비스로부터 상기 사용자 계정에 이용 가능한 상기 스트림의 수를 포함하는 것인, 방법.
  4. 제1항에 있어서,
    상기 특정 시간 기간은 상기 사용자 계정이 상기 미디어 서비스에 가입한 구독 기간을 포함하는 것인, 방법.
  5. 제1항에 있어서,
    상기 특정 시간 기간은 상기 사용자 계정이 상기 미디어 서비스에 가입한 구독 기간을 포함하고, 상기 동시 스트림의 특정 수는 상기 구독 기간의 시간의 길이에 기초하여 결정되는 것인, 방법.
  6. 제1항에 있어서,
    상기 동시 스트림의 특정 수는 날짜(date)에 기초하여 결정되고, 동시 스트리밍의 일정 수(certain number)의 인스턴스만이 상기 날짜 동안 허용되는 것인, 방법.
  7. 제1항에 있어서,
    상기 동시 스트림의 특정 수는 일자의 시간(time of day)에 기초하여 결정되고, 동시 스트리밍의 일정 수의 인스턴스만이 상기 일자의 시간 동안 허용되는 것인, 방법.
  8. 제1항에 있어서,
    상기 특정 시간 기간은 상기 사용자 계정이 상기 미디어 서비스에 가입한 구독 기간을 포함하고, 상기 동시 스트림의 특정 수는 상기 구독 기간의 일부 동안 구독 서비스로부터 이용 가능하게 되는 미디어 자산의 수에 기초하여 결정되는 것인, 방법.
  9. 제1항에 있어서,
    상기 특정 시간 기간은 상기 사용자 계정이 상기 미디어 서비스에 가입한 구독 기간을 포함하고, 상기 사용자 선택 가능 옵션은, 미디어 자산의 명칭, 사용자 이름, 상기 구독 기간 동안 발생하는 스트리밍 충돌의 수, 구독에서의 스트림의 수를 증가시키거나 감소시키기 위한 명령어, 및 미래의 스트리밍 충돌을 어떻게 최소화할 것인지의 추천을 더 포함하는 것인, 방법.
KR1020237025804A 2015-10-30 2016-10-24 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들 KR102622318B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US14/928,934 US10178421B2 (en) 2015-10-30 2015-10-30 Methods and systems for monitoring content subscription usage
US14/928,934 2015-10-30
US14/928,930 2015-10-30
US14/928,930 US9813396B2 (en) 2015-10-30 2015-10-30 Methods and systems for managing content subscription data
PCT/US2016/058385 WO2017074839A1 (en) 2015-10-30 2016-10-24 Methods and systems for managing content subscription data
KR1020237007311A KR102562574B1 (ko) 2015-10-30 2016-10-24 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020237007311A Division KR102562574B1 (ko) 2015-10-30 2016-10-24 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들

Publications (2)

Publication Number Publication Date
KR20230117637A KR20230117637A (ko) 2023-08-08
KR102622318B1 true KR102622318B1 (ko) 2024-01-05

Family

ID=57389505

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020227036796A KR102506625B1 (ko) 2015-10-30 2016-10-24 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들
KR1020177034718A KR102459310B1 (ko) 2015-10-30 2016-10-24 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들
KR1020237025804A KR102622318B1 (ko) 2015-10-30 2016-10-24 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들
KR1020237007311A KR102562574B1 (ko) 2015-10-30 2016-10-24 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020227036796A KR102506625B1 (ko) 2015-10-30 2016-10-24 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들
KR1020177034718A KR102459310B1 (ko) 2015-10-30 2016-10-24 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020237007311A KR102562574B1 (ko) 2015-10-30 2016-10-24 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들

Country Status (10)

Country Link
EP (1) EP3369233B1 (ko)
JP (3) JP6820279B2 (ko)
KR (4) KR102506625B1 (ko)
CN (1) CN107710717A (ko)
AU (3) AU2016347023B2 (ko)
CA (1) CA2987790A1 (ko)
DK (1) DK3369233T3 (ko)
ES (1) ES2753623T3 (ko)
PT (1) PT3369233T (ko)
WO (1) WO2017074839A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10999182B2 (en) * 2019-05-13 2021-05-04 128 Technology, Inc. Routing using segment-based metrics
CN112581150A (zh) * 2019-09-27 2021-03-30 北京国双科技有限公司 一种信息管理方法、装置、设备及存储介质
US20230131674A1 (en) * 2020-03-19 2023-04-27 Sonos, Inc. Cloud-based video user interfaces
WO2021226494A1 (en) * 2020-05-07 2021-11-11 Schlumberger Technology Corporation Secure platform for the dissemination of data
US11418942B2 (en) * 2020-12-22 2022-08-16 T-Mobile Usa, Inc. Protecting a user data repository (UDR) from over-accumulation of subscription requests in a standalone 5G network
KR102626527B1 (ko) * 2020-12-31 2024-01-18 주식회사 카카오 다중 구독 서비스를 제공하는 방법 및 장치
US20220400316A1 (en) * 2021-06-10 2022-12-15 Sony Group Corporation Personal program and channel guide database

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282851A1 (en) 2013-03-13 2014-09-18 Synacor Inc. Content and service aggregation, management and presentation system

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6239794B1 (en) 1994-08-31 2001-05-29 E Guide, Inc. Method and system for simultaneously displaying a television program and information about the program
US6388714B1 (en) 1995-10-02 2002-05-14 Starsight Telecast Inc Interactive computer system for providing television schedule information
US6177931B1 (en) 1996-12-19 2001-01-23 Index Systems, Inc. Systems and methods for displaying and recording control interface with television programs, video, advertising information and program scheduling information
US6564378B1 (en) 1997-12-08 2003-05-13 United Video Properties, Inc. Program guide system with browsing display
BR9909241A (pt) 1998-03-04 2000-11-14 United Video Properties Inc Sistema de guia de programas com propaganda direcionada
CN1867068A (zh) 1998-07-14 2006-11-22 联合视频制品公司 交互式电视节目导视系统及其方法
ATE225998T1 (de) 1998-07-17 2002-10-15 United Video Properties Inc Interaktive fernsehprogrammführung mit mehreren geräten an einem ort
AR020608A1 (es) 1998-07-17 2002-05-22 United Video Properties Inc Un metodo y una disposicion para suministrar a un usuario acceso remoto a una guia de programacion interactiva por un enlace de acceso remoto
US7165098B1 (en) 1998-11-10 2007-01-16 United Video Properties, Inc. On-line schedule system with personalization features
KR101548473B1 (ko) 2001-02-21 2015-08-28 로비 가이드스, 인크. 개인용 비디오 녹화 특징을 갖는 대화식 프로그램 가이드를 위한 시스템 및 방법
US7793326B2 (en) * 2001-08-03 2010-09-07 Comcast Ip Holdings I, Llc Video and digital multimedia aggregator
US7464392B2 (en) * 2001-11-20 2008-12-09 Starz Encore Group Llc Viewing limit controls
JP2003256676A (ja) * 2002-03-04 2003-09-12 Nec Corp 会員管理方法、会員管理システム及び会員管理プログラム
US7627530B2 (en) 2004-04-26 2009-12-01 Amazon Technologies, Inc. Method and system for managing access to media files
US20100153885A1 (en) 2005-12-29 2010-06-17 Rovi Technologies Corporation Systems and methods for interacting with advanced displays provided by an interactive media guidance application
US8656431B2 (en) * 2006-07-10 2014-02-18 Mark A. Cavicchia Global interactive program guide application and device
JP4914255B2 (ja) * 2007-03-14 2012-04-11 日本放送協会 サービス提供方法、および、属性情報管理装置、サービス提供装置、ユーザ端末ならびにそれらのプログラム
CN101742475B (zh) * 2008-11-12 2012-01-11 华为技术有限公司 订阅和通知的方法、装置和系统
US8862515B2 (en) * 2010-05-04 2014-10-14 Sony Corporation Geographic internet asset filtering for internet video client
KR20140042049A (ko) * 2012-09-27 2014-04-07 한화에스앤씨주식회사 다중 콘텐츠 서버 관리 방법
US9286456B2 (en) * 2012-11-27 2016-03-15 At&T Intellectual Property I, Lp Method and apparatus for managing multiple media services
CN103442027B (zh) * 2013-07-23 2016-04-20 电子科技大学 基于无线传感网络和云计算的发布订阅系统及方法
CN104917795B (zh) * 2014-03-13 2019-09-13 腾讯科技(深圳)有限公司 一种订阅信息的提醒方法及装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282851A1 (en) 2013-03-13 2014-09-18 Synacor Inc. Content and service aggregation, management and presentation system

Also Published As

Publication number Publication date
JP7174781B2 (ja) 2022-11-17
JP6820279B2 (ja) 2021-01-27
AU2021202157A1 (en) 2021-05-06
KR20180077100A (ko) 2018-07-06
AU2016347023B2 (en) 2021-04-22
KR102506625B1 (ko) 2023-03-03
EP3369233B1 (en) 2019-08-28
AU2021202157B2 (en) 2023-01-19
KR102459310B1 (ko) 2022-10-25
JP2021077383A (ja) 2021-05-20
AU2023202388A1 (en) 2023-05-11
JP2018537735A (ja) 2018-12-20
JP2023022050A (ja) 2023-02-14
KR102562574B1 (ko) 2023-08-01
KR20220148324A (ko) 2022-11-04
EP3369233A1 (en) 2018-09-05
PT3369233T (pt) 2019-11-04
ES2753623T3 (es) 2020-04-13
AU2016347023A1 (en) 2017-12-07
WO2017074839A1 (en) 2017-05-04
DK3369233T3 (da) 2019-09-23
KR20230117637A (ko) 2023-08-08
CA2987790A1 (en) 2017-05-04
CN107710717A (zh) 2018-02-16
KR20230034445A (ko) 2023-03-09

Similar Documents

Publication Publication Date Title
US20220159324A1 (en) Methods and systems for monitoring content subscription usage
US11159500B2 (en) Methods and systems for managing content subscription data
KR102622318B1 (ko) 컨텐츠 구독 데이터를 관리하기 위한 방법들 및 시스템들
US9578379B1 (en) Scene-by-scene viewer ratings
US11039211B2 (en) Methods and systems for implementing a locked mode for viewing media assets
US20180205991A1 (en) Systems and methods for allowing access to a different version of the media asset
US9807247B2 (en) Systems and methods for sharing cost of a video-on-demand subscription with another subscriber
US20170126831A1 (en) Methods and systems for caching a media asset

Legal Events

Date Code Title Description
A107 Divisional application of patent
E701 Decision to grant or registration of patent right
GRNT Written decision to grant