KR101973045B1 - 채널 바의 관리 - Google Patents

채널 바의 관리 Download PDF

Info

Publication number
KR101973045B1
KR101973045B1 KR1020177005545A KR20177005545A KR101973045B1 KR 101973045 B1 KR101973045 B1 KR 101973045B1 KR 1020177005545 A KR1020177005545 A KR 1020177005545A KR 20177005545 A KR20177005545 A KR 20177005545A KR 101973045 B1 KR101973045 B1 KR 101973045B1
Authority
KR
South Korea
Prior art keywords
video
bit rate
displaying
displayed
bit
Prior art date
Application number
KR1020177005545A
Other languages
English (en)
Other versions
KR20170040293A (ko
Inventor
로날드 디. 루상
크리스토퍼 엘. 오클로타
님로드 가트
로저 팬토스
시몬 골드레이
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20170040293A publication Critical patent/KR20170040293A/ko
Application granted granted Critical
Publication of KR101973045B1 publication Critical patent/KR101973045B1/ko

Links

Images

Classifications

    • 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/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • H04N21/2355Processing of additional data, e.g. scrambling of additional data or processing content descriptors involving reformatting operations of additional data, e.g. HTML pages
    • H04N21/2358Processing of additional data, e.g. scrambling of additional data or processing content descriptors involving reformatting operations of additional data, e.g. HTML pages for generating different versions, e.g. for different recipient devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/431Generation of visual interfaces for content selection or interaction; Content or additional data rendering
    • H04N21/4312Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/438Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving MPEG packets from an IP network
    • H04N21/4383Accessing a communication channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/4424Monitoring of the internal components or processes of the client device, e.g. CPU or memory load, processing speed, timer, counter or percentage of the hard disk space used
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB

Abstract

비디오는 복수의 비트레이트 중 임의의 비트레이트에서 전자 디바이스에 로드될 수 있고, 각각의 비트레이트는 특정 비디오 품질 레벨에 대응한다. 선택된 비트레이트는 예를 들어 대역폭 능력 및/또는 비디오 품질 표준에 기초할 수 있다. 그러나 다수의 비디오가 동시에 전자 디바이스에 로드되는 경우 대역폭 능력이 과하게 요구되거나 초과될 수 있다. 본 발명의 예들은 비교적 높은 품질로 중단 없는 비디오 재생을 제공하기 위해 대역폭 능력에 따라 대역폭을 관리하고, 비트레이트를 조정하고/하거나 비디오 및 오디오를 선택적으로 로드하는 데 사용될 수 있다. 또한, 비디오 플레이어들은 메모리에 할당되어 사용자가 화면에 동시에 재생중인 다수의 비디오 스크롤하고 스위치하는 경우 재사용될 수 있다.

Description

채널 바의 관리{MANAGEMENT OF THE CHANNEL BAR}
본 발명은 일반적으로 비디오를 제시하기 위한 인터페이스에 관한 것이다.
비디오는 복수의 비트레이트 중 임의의 비트레이트에서 전자 디바이스에 로드될 수 있고, 각각의 비트레이트는 특정 비디오 품질 레벨에 대응한다. 선택된 비트레이트는 예를 들어 대역폭 능력 및/또는 비디오 품질 표준에 기초할 수 있다. 그러나 다수의 비디오가 동시에 전자 디바이스에 로드되는 경우 대역폭 능력이 과하게 요구되거나 초과될 수 있다.
비디오는 복수의 비트레이트 중 임의의 비트레이트에서 전자 디바이스에 로드될 수 있고, 각각의 비트레이트는 특정 비디오 품질 레벨에 대응한다. 선택된 비트레이트는 예를 들어 대역폭 능력 및/또는 비디오 품질 표준에 기초할 수 있다. 그러나 다수의 비디오가 동시에 전자 디바이스에 로드되는 경우 대역폭 능력이 과하게 요구되거나 초과될 수 있다. 본 발명의 예들은 비교적 높은 품질로 중단 없는 비디오 재생을 제공하기 위해 대역폭 능력에 따라 대역폭을 관리하고, 비트레이트를 조정하고/하거나 비디오 및 오디오를 선택적으로 로드하는 데 사용될 수 있다. 또한, 비디오 플레이어들은 메모리에 할당되어 사용자가 화면에 동시에 재생중인 다수의 비디오 스크롤하고 스위치하는 경우 재사용될 수 있다.
도 1은 본 발명의 예들에 따른 복수의 비디오를 동시에 디스플레이하는 전자 디바이스의 예시적인 사용자 인터페이스를 도시한다.
도 2는 본 발명의 예들에 따른 복수의 비디오를 디스플레이하는 예시적인 방법을 도시한다.
도 3은 본 발명의 예들에 따른 복수의 비디오를 디스플레이하는 예시적인 방법을 도시한다.
도 4는 본 발명의 예들에 따른 복수의 비디오를 디스플레이하는 예시적인 방법을 도시한다.
도 5a 및 도 5b는 본 발명의 예들에 따른 복수의 비디오의 수평 스크롤링 애니메이션을 디스플레이하는 전자 디바이스의 예시적인 사용자 인터페이스를 도시한다.
도 6a 내지 도 6d는 본 발명의 예들에 따른 복수의 비디오의 수직 스크롤링 애니메이션을 디스플레이하는 전자 디바이스의 예시적인 사용자 인터페이스를 도시한다.
도 7은 본 발명의 예들에 따른 복수의 비디오 플레이어를 할당하는 예시적인 방법을 도시한다.
도 8은 본 발명의 예들에 따른 비디오의 우선순위 로딩의 예시적인 방법을 도시한다.
도 9는 본 발명의 예들에 따라 할당된 비디오 플레이어를 재사용하는 예시적인 방법을 도시한다.
도 10은 본 발명의 예들에 따라 복수의 할당된 비디오 플레이어를 동시에(at once) 재사용하는 예시적인 방법을 도시한다.
도 11은 본 발명의 일부 예들에서 사용될 수 있는 예시적인 API 아키텍처를 도시하는 블록 다이어그램이다.
도 12는 본 발명의 예들에 따른 API의 예시적인 소프트웨어 스택을 도시한다.
도 13은 본 발명의 예들에 따른 디바이스의 터치 스크린과 다른 컴포넌트들 간의 예시적인 상호작용을 도시하는 블록 다이어그램이다.
도 14는 본 발명의 예들에 따른 임의의 휴대용 또는 비-휴대용 디바이스 내에 구현될 수 있는 시스템 아키텍처의 예를 도시하는 블록 다이어그램이다.
예들의 다음의 설명에서, 본 명세서의 일부를 형성하는 첨부된 도면들이 참조되고, 실행될 수 있는 특정 예들이 도면들 내에서 예시로써 도시된다. 개시된 예들의 범위를 벗어나지 않으면서 다른 예들이 이용될 수 있고, 구조적 변경이 가해질 수 있다는 것이 이해되어야 한다.
비디오는 복수의 비트레이트 중 임의의 비트레이트에서 전자 디바이스에 로드될 수 있고, 각각의 비트레이트는 특정 비디오 품질 레벨에 대응한다. 선택된 비트레이트는 예를 들어 대역폭 능력 및/또는 비디오 품질 표준에 기초할 수 있다. 그러나 다수의 비디오가 동시에 전자 디바이스에 로드되는 경우 대역폭 능력이 과하게 요구되거나 초과될 수 있다. 본 발명의 예들은 비교적 높은 품질로 중단 없는 비디오 재생을 제공하기 위해 대역폭 능력에 따라 대역폭을 관리하고, 비트레이트를 조정하고/하거나 비디오 및 오디오를 선택적으로 로드하는 데 사용될 수 있다. 또한, 비디오 플레이어들은 메모리에 할당되어 사용자가 화면에 동시에 재생중인 다수의 비디오 스크롤하고 스위치하는 경우 재사용될 수 있다. 비디오는 로컬 저장소(예컨대, 하드 디스크 드라이브, 솔리드 스테이트 드라이브, 광학 디스크 등)로부터, 인터넷과 같은 네트워크를 통한 원격 장치(예컨대, 스트리밍 비디오 서비스, 동일한 로컬 영역 네트워크 상의 개별 디바이스, 네트워크-연결된 디지털 비디오 레코더(DVR) 등)로부터, 또는 라이브 텔레비전 스트림(예컨대, 방송(over-the-air) 브로드캐스트, 라이브 케이블 스트림, 라이브 인터넷 스트림 등)으로부터 로드될 수 있다.
비록 본 명세서에서 예시된 예들은 복수의 비디오를 포함하는 채널 바에 관하여 주로 설명되고 예시될 수 있지만, 예들은 그렇게 한정되지 않고, 비디오 스트리밍의 대역폭 관리 방법에 보다 일반적으로 더 적용 가능하다는 것이 이해되어야 한다.
도 1은 본 발명의 예들에 따라 복수의 비디오(102 내지 110)를 동시에 디스플레이하는 전자 디바이스의 예시적인 사용자 인터페이스(100)를 도시한다. 사용자 인터페이스(100)는 제1 비디오(102), 및 추가적인 비디오들(104, 106, 108 및 110)을 포함하는 채널 바를 포함할 수 있다. 제1 비디오(102)는 채널 바의 추가적인 비디오들(104 내지 110)보다 크게 디스플레이될 수 있으며(예컨대, 제1 비디오는 풀스크린으로 디스플레이될 수 있음), 추가적인 비디오들은 사용자 인터페이스(100)의 에지를 따라 제1 비디오(102)에 오버레이(overlay)될 수 있다. 일부 예들에서, 제1 비디오(102)와 연관된 오디오만이 전자 디바이스에 의해 재생될 수 있다. 채널 바의 추가적인 비디오(104 내지110) 중 임의의 추가적인 비디오를 브라우징하기 위해 전자 디바이스에 의해 사용자 입력이 수신될 수 있으며(예컨대, 다른 가능성들 중 특히, 추가적인 비디오들 중 하나에 커서를 이동시키거나 또는 추가적인 비디오들 중 하나가 하이라이트되게 함), 사용자 입력은 비디오들 중 하나를 선택하기 위해 수신될 수 있다. 채널 바의 추가적인 비디오들 중 하나의 선택에 응답하여, 선택된 비디오가 제1 비디오(102)를 대신하여 디스플레이될 수 있고, 선택된 비디오와 연관된 오디오는 전자 디바이스에 의해 재생될 수 있다.
도 2는 본 발명의 예들에 따른 복수의 비디오를 디스플레이하는 예시적인 방법을 도시한다. 제1 비디오는 제1 비트레이트에서 디스플레이될 수 있으며, 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이용으로 이용 가능하고, 제2 비트레이트는 제1 비트레이트보다 낮다(200). 일부 예들에서, 비디오는 복수의 비트레이트에서 이용 가능할 수 있고, 각각의 비트레이트는 특정 비디오 해상도 또는 비디오 품질 레벨에 대응할 수 있다. 예를 들어, 비디오는 8000 kbps(kilobits per second), 4000 kbps 및 1500 kbps에서 디스플레이용으로 이용 가능할 수 있다. 일부 예들에서, 8000 kbps 비트레이트는 1920 x 1080 픽셀의 해상도에서의 고화질 비디오에 대응할 수 있고, 4000 kbps 비트레이트는 1280 x 720 픽셀의 해상도에서의 중간 품질 비디오에 대응할 수 있고, 1500 kbps 비트레이트는 854 x 480 픽셀의 해상도에서 저품질 비디오에 해당할 수 있다.
사용자 입력이 수신될 수 있다(202). 사용자 입력은 전자 디바이스에 의해 수신된 임의의 종류의 사용자 상호작용을 포함할 수 있으며, 상호작용은 전자 디바이스 자체에 존재하거나 전자 디바이스와 통신하는 일부 다른 장치에 존재한다. 예를 들어, 전자 디바이스는 사용자가 리모콘 상의 채널 버튼을 눌렀음을 나타내는 신호를 수신할 수 있다.
사용자 입력에 응답하여, 복수의 추가적인 비디오가 디스플레이될 수 있다(204). 예를 들어, 복수의 추가적인 비디오를 포함하는 채널 바가 도 1에 도시된 바와 같이 디스플레이될 수 있다. 또한, 사용자 입력에 응답하여, 제1 비디오의 비트레이트는 제1 비트레이트로부터 제2 비트레이트로 감소될 수 있다(206). 즉, 제1 비디오는 보다 높은 제1 비트레이트 대신 제2 비트레이트에서 디스플레이될 수 있다. 사용자가 채널 바의 디스플레이를 유발한 경우, 제1 비디오에 대한 관심이 줄어들어 품질 저하가 덜 두드러질 수 있다. 이러한 방식으로, 전자 디바이스는 풀스크린 제1 비디오 및 채널 바 상의 복수의 추가적인 비디오를 디스플레이하는 대역폭 부하를 감소시킬 수 있다. 일부 예들에서, 제1 비디오의 비트레이트는 채널 바가 숨겨지도록 하는 사용자 입력에 응답하여 제2 비트레이트로부터 제1 비트레이트로 증가될 수 있다.
도 3은 본 발명의 예들에 따른 복수의 비디오를 디스플레이하는 예시적인 방법을 도시한다. 비디오의 중단 없는 재생을 허용하도록, 비디오는 실제로 전자 디바이스에 의해 디스플레이되기 전에 로드될 수 있는데, 즉, 사용자에 의해서 일단 재생이 요청되면 즉시 중단 없이 디스플레이될 수 있도록 비디오의 일부분이 로드될 수 있다.
제2 비디오는 제3 비트레이트에서 디스플레이될 수 있고, 제2 비디오는 제3 및 제4 비트레이트에서 디스플레이용으로 이용 가능하다(300). 제2 비디오는 채널 바의 일부로서 디스플레이될 수 있고, 제3 비트레이트는 도 1에 도시된 바와 같이 풀스크린으로 디스플레이된 제1 비디오의 제1 비트레이트보다 낮을 수 있다.
제2 비디오를 브라우징하는 사용자 입력이 수신될 수 있다(302). 예를 들어, 사용자가 리모콘상의 방향 버튼을 누른 것을 나타내는 사용자 입력이 수신될 수 있고, 커서가 제2 비디오로 이동될 수 있다. 사용자 입력에 응답하여, 제2 비디오는 제3 비트레이트보다 높은 제4 비트레이트에서 로드될 수 있다(304). 이러한 방식으로, 사용자가 디스플레이를 위해 제2 비디오를 선택할 수 있다고 예상될 수 있으며, 사용자가 제2 비디오를 선택한다면, 제2 비디오를 제4 비트레이트에서 로드하는 것은 제2 비디오가 제4 비트레이트에서 즉시 디스플레이되도록 준비할 수 있다. 일부 예들에서, 제2 비디오와 연관된 오디오는 또한 제2 비디오를 브라우징하는 사용자 입력에 응답하여 로드될 수 있다.
사용자 입력은 제2 비디오를 선택하여 수신될 수 있다(306). 예를 들어, 사용자가 리모콘 상의 선택 버튼을 눌렀음을 나타내는 사용자 입력이 수신될 수 있다. 사용자 입력에 응답하여, 제2 비디오는 제4 비트레이트에서 디스플레이될 수 있다(308). 일부 예들에서, 제2 비디오를 선택하는 사용자 입력에 응답하여, 제2 비디오는 도 1을 참조하여 논의된 바와 같이, 제1 비디오를 대신하여 풀스크린으로 디스플레이될 수 있다.
도 4는 본 발명의 예들에 따른 복수의 비디오를 디스플레이하는 예시적인 방법을 도시한다. 사용자가 채널 바로부터 비디오를 선택한 경우 중단 없는 시청을 위해 선택된 비디오가 상대적으로 낮은 비트레이트에서 즉시 디스플레이되는 동안 비디오는 보다 높은 비트레이트에서 로드될 수 있고, 이어서, 충분한 비디오가 로드되면 비디오는 보다 높은 비트레이트에서 디스플레이될 수 있다.
제2 비디오(예컨대 도 1에 도시된 바와 같이 채널 바에 디스플레이되는 비디오)를 선택하는 사용자 입력이 수신될 수 있다(400). 사용자 입력에 응답하여, 제2 비디오가 제4 비트레이트에서 디스플레이될 수 있다(402). 예를 들어, 제2 비디오는 제1 비디오를 대신하여 풀스크린으로 디스플레이될 수 있다. 또한, 제2 비디오를 선택하는 사용자 입력에 응답하여, 제2 비디오는 제4 비트레이트보다 높은 제5 비트레이트에서 로드될 수 있다(404). 이어서, 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있는 것으로 결정될 수 있다(406). 예를 들어, 전자 디바이스는 제2 비디오가 중단 없이 제5 비트레이트에서 디스플레이될 수 있도록 충분한 비디오가 로드될 때까지 제5 비트레이트에서의 제2 비디오의 로딩을 모니터링할 수 있다. 일부 예들에서, 결정은 전자 디바이스의 대역폭 능력에 기초할 수 있다. 결정에 응답하여, 제2 비디오는 제5 비트레이트에서 디스플레이될 수 있다(408).
도 5a 및 도 5b는 본 발명의 예들에 따른 복수의 비디오의 수평 스크롤링 애니메이션을 디스플레이하는 전자 디바이스의 예시적인 사용자 인터페이스를 도시한다. 도 5a는 복수의 비디오(102 내지110)를 동시에 디스플레이하는 예시적인 사용자 인터페이스(100)를 도시한다. 사용자 인터페이스(100)는 제1 비디오(102), 및 추가적인 비디오(104 내지 110)를 포함하는 채널 바를 포함할 수 있다. 채널 바를 수평 스크롤하기 위한 사용자 입력이 수신될 수 있으며, 도 5b는 수평 스크롤 이후의 예시적인 사용자 인터페이스(100)를 도시한다. 비디오들(104 내지 110) 각각은 수평 시프트됨으로서, 비디오(104)가 오프스크린(offscreen)으로 완료될 수 있고, 비디오(106)가 부분적으로 오프스크린일 수 있고, 비디오들(112 및 114)이 온스크린(onscreen)으로 스크롤될 수 있다.
일부 예들에서, 복수의 비디오 플레이어가 메모리에 할당될 수 있고, 플레이어들 중 하나 이상이 온스크린으로 디스플레이될 수 있고, 플레이어들 중 하나 이상이 디스플레이되지 않을 수 있다. 예를 들어, 비디오들(104 내지 110) 각각은 초기에는 할당된 비디오 플레이어에서 디스플레이될 수 있다. 또한, 비디오들(112 및 114)은 비디오들이 디스플레이될 때 재생될 준비가 될 수 있도록, 심지어 도 5b에서 비디오 플레이어들이 디스플레이되기도 전에 할당된 비디오 플레이어에 각각 로드될 수 있다. 일부 예들에서, 비디오 플레이어는 오프스크린으로 이동된 후에도 계속하여 사용될 수 있다. 예를 들어, 비디오(104)는 도 5b에서 오프스크린으로 이동된 후에 자신의 플레이어에 계속해서 로드될 수 있으므로, 비디오(104)를 온스크린으로 되돌리기 위해 사용자가 다른 방향으로 스크롤백(scroll back)하는 경우 비디오는 재생될 준비가 되어 있을 수 있다.
일부 예들에서, 할당된 비디오 플레이어들은 재사용될 수 있다. 예를 들어, 비디오(104)가 오프스크린으로 스크롤된 후, 비디오(104)는 그의 대응하는 플레이어로부터 제거될 수 있고, 해당 플레이어는 재사용되어 비디오(114)가 로드됨으로써, 비디오(114)가 온스크린으로 스크롤되는 경우 비디오는 추가적인 플레이어를 할당함이 없이 재생될 준비가 될 수 있다.
도 6a 내지 도 6d는 본 발명의 예들에 따른 복수의 비디오의 수직 스크롤링 애니메이션을 디스플레이하는 전자 디바이스의 예시적인 사용자 인터페이스를 도시한다. 일부 예들에서, 채널 바가 수직으로 또는 다른 방식으로 스크롤되어, 모든 비디오들이 채널 바로부터 사라지고, 추가적인 복수의 비디오가 채널 바를 채울 수 있다. 이 프로세스는 임의의 추가적인 비디오 플레이어들을 할당하지 않고 완료될 수 있다. 도 6a는 비디오들(104 내지110)을 갖는 채널 바를 도시한다. 채널 바를 수직 스크롤하기 위한 사용자 입력이 수신될 수 있다. 스크롤에 대비하여, 도 6b에 도시된 바와 같이, 비디오들(104 내지110) 각각은 정지 이미지(정지 이미지들(150 내지156) 각각)로 대체될 수 있다. 정지 이미지는 플레이스홀더 이미지 일 수 있다. 예를 들어, 정지 이미지는 대응하는 비디오의 마지막으로 디스플레이된 프레임일 수 있다. 이어서, 채널 바에 대해 할당된 비디오 플레이어들 각각에는 추가적인 복수의 비디오(즉, 스크롤링이 완료되면 디스플레이될 새로운 비디오들)와 상이한 비디오가 로드될 수 있고, 플레이어들은 오프스크린으로 재배치되어 그것들이 점진적으로 온스크린으로 나타나는 것처럼 애니메이션화될 수 있다. 도 6c는 복수의 추가적인 비디오가 사용자 인터페이스(100)의 하부 에지로부터 위로 이동하면서 점진적으로 온스크린으로 나타나고, 정지 이미지들이 상향 이동하면서 사용자 인터페이스로부터 점진적으로 사라지는 것을 도시한다. 일단 스크롤링이 완료되면, 추가적인 복수의 비디오(160 내지166)는 도 6d에 도시된 바와 같이, 사용자 인터페이스(100)에 디스플레이될 수 있다. 비록 도 6a 내지 6d는 새로운 비디오들이 온스크린으로 이동하면서 정지 이미지들이 오프스크린으로 이동하는 것을 도시하고 있으나, 비디오들을 스크롤하는 다른 방법들이 고려된다. 예를 들어, 다른 가능성들 중에 특히, 새로운 비디오들이 점진적으로 페이드인(fade in)되면서 정지 이미지가 점진적으로 페이드아웃(fade out)되거나 정지 이미지가 점진적으로 축소될 수 있다.
도 7은 본 발명의 예들에 따른 복수의 비디오 플레이어를 할당하는 예시적인 방법을 도시한다. 채널 바에 대한 비디오 플레이어들의 풀(pool)이 메모리에 할당될 수 있다(700). 예를 들어, 복수의 비디오 플레이어 데이터 구조가 풀 내의 비디오 플레이어에 각각 대응하면서 메모리에 생성될 수 있다. 다른 가능성들 중에 특히, 각각의 비디오 플레이어는 연관된 비디오 컨텐츠의 주소, 사용자 인터페이스에 대한 위치, 비디오 플레이어가 디스플레이되어야 하는지 여부를 나타내는 가시성 플래그, 및/또는 비디오 플레이어가 현재 연관된 비디오 컨텐츠를 로드하고 재생해야 하는지 여부를 나타내는 플레이백 플래그를 포함하는 다수의 속성을 가질 수 있다.
일부 예들에서, 추가적인 비디오 플레이어가 필요하다는 것과 추가적인 비디오 플레이어가 풀에 대한 메모리에 할당될 수 있다는 것이 결정될 수 있다. 추가적인 비디오 플레이어는 그것의 할당에 후속하여 디스플레이될 수 있다. 일부 예들에서, 풀에 대한 비디오 플레이어들의 최대 수가 결정될 수 있으며, 이미 비디오 풀이 최대 수의 비디오 플레이어를 포함하고 있는 경우 추가적인 비디오 플레이어는 할당되지 않을 수 있다. 일부 예들에서, 최대 수는 다른 가능성들 중 특히, 대역폭 제약, 메모리 제약 및/또는 프로세싱 제약과 같은 시스템 제약에 기초하여 결정될 수 있다.
비디오 플레이어는 온스크린으로 디스플레이되지 않으면서 풀의 일부로서 메모리에 할당될 수 있다. 일부 예들에서, 비디오 플레이어들의 제2 서브셋은 디스플레이되지 않고 풀 내의 비디오 플레이어들의 제1 서브셋만이 디스플레이될 수 있다(702). 또한, 제1 서브셋의 각각의 비디오는 비디오 컨텐츠를 재생하고 있을 수 있다. 비디오 플레이어는 디스플레이되지 않아야 함을 나타내는 가시성 플래그로 인해 디스플레이되지 않을 수 있으며, 또는 경우에 따라, 다른 가능성들 중 특히, 비디오 플레이어는 사용자 인터페이스에 대한 그것의 위치가 비디오 플레이어를 사용자 인터페이스의 시청 가능 영역 외부에 배치하기 때문에 디스플레이되지 않을 수 있다,
오프스크린으로 이동하는 제1 서브셋의 제1 비디오 플레이어의 애니메이션이 디스플레이될 수 있어, 제1 비디오 플레이어는 애니메이션에 이어 온스크린으로 더 이상 디스플레이되지 않을 수 있다(704). 그러한 애니메이션의 예가 도 5a 및 도 5b에 도시되며, 여기서 비디오(104)는 사용자 인터페이스(100)에 대해 좌측으로, 도 5b에서 더 이상 디스플레이되지 않을 때까지 이동한다. 일부 예들에서, 비디오 컨텐츠는 비디오(104)에 대응하는 비디오 플레이어에 더 이상 로드되지 않을 수 있으며, 따라서 비디오 플레이어는 다른 비디오 컨텐츠에 대해 재사용될 수 있다. 일부 예들에서, 사용자가 비디오(104)를 온스크린으로 다시 스크롤하고자 하는 경우, 비디오 컨텐츠는 비디오 플레이어에 계속해서 로드될 수 있다.
온스크린으로 이동하는 제2 서브셋의 제2 비디오 플레이어의 애니메이션이 디스플레이될 수 있으며, 따라서 제2 비디오 플레이어는 애니메이션에 이어 온스크린으로 디스플레이될 수 있다(706). 그러한 애니메이션의 예는 도 5a 및 도 5b에 도시되며, 여기서 비디오(114)는 사용자 인터페이스(100)에 대해 좌측으로, 도 5b에서 온스크린으로 디스플레이될 때까지 이동한다. 일부 예들에서, 제2 비디오 플레이어는 애니메이션을 디스플레이하기 전에 비디오 컨텐츠를 로드하기 시작할 수 있으며, 따라서 비디오(114)가 애니메이션에 이어 온스크린으로 디스플레이될 때까지 비디오 컨텐츠는 완전히 로드되거나 부분적으로 로드될 수 있다.
도 8은 본 발명의 예들에 따른 비디오의 우선순위 로딩의 예시적인 방법을 도시한다. 제1 비디오 플레이어의 제1 우선순위가 결정될 수 있고(800), 제2 비디오 플레이어의 제2 우선순위가 결정될 수 있다(804). 일부 예들에서, 제1 및 제2 우선순위는 채널 바에서 제1 및 제2 비디오 플레이어의 상대적인 위치에 기초하여 결정될 수 있다. 예를 들어, 채널 바의 중앙에 있는 비디오 플레이어는 채널 바의 제일 좌측 또는 제일 우측 에지 방향의 비디오보다 높은 우선순위를 가질 수 있으므로 중앙의 비디오가 다른 비디오들에 앞서 로드될 수 있다. 일부 예들에서 채널 바의 제일 좌측의 비디오 플레이어는 채널 바의 다른 비디오들보다 높은 우선순위를 가지므로, 비디오들은 좌측에서 우측으로 로드될 수 있다.
비디오 컨텐츠는 제1 비디오 플레이어의 제1 우선순위에 기초하여 제1 비디오 플레이어에 로드될 수 있고(802), 제2 비디오 플레이어의 제2 우선순위에 기초하여 제2 비디오 플레이어를 대신하여 플레이스홀더 이미지가 디스플레이될 수 있다(806). 우선순위를 결정한 이후에, 우선순위에 기초하여 비디오들의 로딩이 진행될 수 있다. 예를 들어, 제1 우선순위가 제2 우선순위보다 높으면 제1 우선순위의 비디오가 제2 우선순위의 비디오에 앞서 로드될 수 있다. 상대적으로 우선순위가 낮은 비디오 플레이어들의 경우, 비디오가 로드될 때까지 플레이스홀더 이미지가 비디오 플레이어를 대신하여 디스플레이될 수 있다.
도 9는 본 발명의 예들에 따라 할당된 비디오 플레이어를 재사용하는 예시적인 방법을 도시한다. 제1 비디오 컨텐츠를 재생하는 제1 비디오 플레이어가 디스플레이될 수 있다(900). 이어서, 제1 비디오 플레이어를 오프스크린 위치로 이동시키는 애니메이션이 디스플레이될 수 있다(902). 상술한 바와 같이, 그러한 애니메이션의 예가 도 5a 및 도 5b에 도시되며, 여기서 비디오(104)는 사용자 인터페이스(100)에 대해 좌측으로, 도 5b에서 더 이상 디스플레이되지 않을 때까지 이동한다.
이어서, 제1 비디오 플레이어는 다른 비디오 컨텐츠에 대해 재사용될 수 있고, 제2 비디오 컨텐츠는 제1 비디오 플레이어에 로드될 수 있다(904). 이어서, 제1 비디오 플레이어를 온스크린의 위치로 이동시키는 애니메이션이 디스플레이될 수 있고, 제1 비디오 플레이어는 이제 제2 비디오 컨텐츠를 재생할 수 있다(906).
일부 예들에서, 제1 비디오 플레이어를 온스크린으로 다시 이동시키는 애니메이션 전에 제1 비디오 플레이어가 재위치될 수 있으며, 따라서 비디오 플레이어는 사용자 인터페이스의 상이한 측으로부터 들어오는 것처럼 보일 수 있다. 예를 들어, 도 5a 및 도 5b는 비디오(104)가 사용자 인터페이스(100)의 좌측 에지로 이동하여 사라지는 것을 도시한다. 이어서, 비디오(104)에 대응하는 비디오 플레이어에는 비디오(114)에 대한 비디오 컨텐츠가 로드될 수 있고, 비디오 플레이어가 사용자 인터페이스의 우측에 재배치됨으로써 비디오(114)는 사용자 인터페이스의 내부로 그것의 우측 에지로부터 이동할 수 있다.
도 10은 본 발명의 예들에 따라 복수의 할당된 비디오 플레이어를 동시에 재사용하는 예시적인 방법을 도시한다. 비디오 컨텐츠를 재생하는 복수의 비디오 플레이어가 디스플레이될 수 있다(1000). 도 6a 내지 도 6d에 도시된 바와 같이, 수직 스크롤을 위한 준비로서, 각각의 플레이어의 비디오 컨텐츠는 정지 이미지로 대체될 수 있다(1002). 예를 들어, 각각의 비디오 컨텐츠는 대응하는 비디오 컨텐츠의 디스플레이된 마지막 프레임의 정지 이미지로 대체될 수 있다.
이어서, 추가적인 비디오 컨텐츠가 복수의 비디오 플레이어에 로드될 수 있고(1004), 점진적으로 사라지는 정지 이미지와 점진적으로 나타나는 비디오 플레이어들의 애니메이션이 디스플레이될 수 있다(1006). 일부 예들에서, 애니메이션은 도 6a 내지 도 6d에 도시된 바와 같이 수직 스크롤일 수 있으나, 점차적인 페이드인/아웃 또는 점차적인 크기 변경과 같은 많은 다른 예들이 가능하다.
복수의 비디오 플레이어는, 애니메이션에 앞서 사용자 인터페이스(100)에 대해 재배치될 수 있으며, 따라서 비디오 플레이어들이 사용자 인터페이스의 상이한 측으로부터 들어오는 것처럼 보일 수 있다. 예를 들어, 도 6a 내지 도 6d에서, 복수의 비디오 플레이어는 애니메이션에 앞서 사용자 인터페이스(100)의 하부 에지 아래에 재배치될 수 있으며, 따라서 비디오들이 사용자 인터페이스의 하부 에지로부터 나오는 것처럼 보인다.
위에서 논의된 예들은 하나 이상의 API(Application Programming Interface)에서 구현될 수 있다. API는 프로그램 코드 컴포넌트 또는 하드웨어 컴포넌트(이하에서 "API-구현 컴포넌트"라고 함)에 의하여 구현되는 인터페이스로서, API-구현 컴포넌트는 상이한 프로그램 코드 컴포넌트 또는 하드웨어 컴포넌트(이하에서, "API-호출 컴포넌트"라고 함)가 API-구현 컴포넌트에 의해 제공되는 하나 이상의 기능, 방법, 절차, 데이터 구조, 클래스 및/또는 다른 서비스에 액세스 하여 이를 사용하게 한다. API는 API-호출 컴포넌트와 API-구현 컴포넌트 사이에서 전달되는 하나 이상의 파라미터들을 정의할 수 있다.
위에서 설명한 특징부들은 터치 입력을 입력 메커니즘으로서 활용하는 상이한 애플리케이션들(예컨대 스프레드시트 애플리케이션)에 통합되도록 할 수 있는 API의 일부로서 구현될 수 있다. API는 API-호출 컴포넌트의 개발자(제3자의 개발자일 수 있음)가 API-구현 컴포넌트에 의해 제공되는 규정된 특징부, 예컨대 위에서 설명한 것들을 레버리지(leverage)할 수 있다. 하나의 API-호출 컴포넌트가 있을 수 있거나, 하나 초과의 그러한 컴포넌트가 있을 수 있다. API는 애플리케이션으로부터의 서비스 요청을 지원하기 위하여 컴퓨터 시스템 또는 프로그램 라이브러리가 제공하는 소스 코드 인터페이스일 수 있다. 운영 체제(operating system, OS)는 다수의 API들을 가져서 OS 상에서 실행되는 애플리케이션이 그 API들 중 하나 이상을 호출하게 할 수 있으며, (프로그램 라이브러리와 같은) 서비스는 다수의 API들을 가져서 그 서비스를 사용하는 애플리케이션이 그 API들 중 하나 이상을 호출하게 할 수 있다. API는 애플리케이션이 구축될 때 인터프리팅(interpreting)되거나 컴파일링(compiling)될 수 있는 프로그래밍 언어에 의해 규정될 수 있다.
일부 예들에서, API-구현 컴포넌트는 둘 이상의 API를 제공하여, 각각 API-구현 컴포넌트에 의해 구현되는 상이한 관점의 기능들을 제공하거나, 또는 API-구현 컴포넌트에 의해 구현되는 상이한 양태의 기능에 접근하는 상이한 양태를 가질 수 있다. 예를 들어, API-구현 컴포넌트 중 하나의 API는 제1 기능 세트를 제공할 수 있고 제3자의 개발자에게 노출될 수 있으며, API-구현 컴포넌트 중 다른 API는 숨겨질(노출되지 않을) 수 있고 제1 기능 세트의 하위세트(subset)를 제공하고 또한 제1 기능 세트에는 없는 테스팅 및 디버깅 기능과 같은 다른 기능 세트를 제공할 수 있다. 다른 예들에서, API-구현 컴포넌트 자체는 기본 API를 통해 하나 이상의 다른 컴포넌트들을 호출할 수 있고, 따라서 API-호출 컴포넌트와 API-구현 컴포넌트 둘 모두가 될 수 있다.
API는 API-호출 컴포넌트들이 API-구현 컴포넌트의 규정된 특징부들에 액세스하여 이를 사용할 때 API-호출 컴포넌트가 사용하는 언어와 파라미터를 정의한다. 예를 들어, API-호출 컴포넌트는 API에 의하여 노출된 하나 이상의 API 호출 또는 (예를 들어, 기능 또는 메소드 호출에 의하여 실시되는) 인보케이션(invocation)들을 통해 API-구현 컴포넌트의 규정된 특징부들에 액세스하여, API 호출들 또는 인보케이션들을 통해 파라미터들을 사용하여 데이터 및 제어 정보를 전달한다. API-구현 컴포넌트는 API-호출 컴포넌트로부터의 API 호출에 응답하여 API를 통해 값을 반환할 수 있다. API는 API 호출의 신택스(syntax)와 결과(예컨대, API 호출을 어떻게 작동시키는지 그리고 API 호출이 무엇을 하는지)를 정의하지만, API는 API 호출이 API 호출에 의하여 규정된 기능을 어떻게 성취하는지 드러내지 않을 수 있다. 호출(API-호출 컴포넌트)과 API-구현 컴포넌트 사이에서 하나 이상의 애플리케이션 프로그래밍 인터페이스를 통하여 다양한 API 호출들이 전달된다. API 호출들을 전달하는 것은 함수 호출 또는 메시지를 발행, 초기화, 호출(invoking), 호출(calling), 수신, 반환 또는 응답을 포함할 수 있다; 다시 말해서, 전달은 API-호출 컴포넌트 또는 API-구현 컴포넌트 중 어느 하나에 의한 작동을 설명할 수 있다. API의 함수 호출 또는 다른 인보케이션은 파라미터 목록 또는 다른 구조를 통하여 하나 이상의 파라미터들을 보내거나 받을 수 있다. 파라미터는 상수, 키(key), 데이터 구조, 객체, 객체 클래스, 변수, 데이터 유형, 포인터, 어레이, 함수 또는 메소드에 대한 포인터 또는 목록, 또는 API를 통하여 전달되는 데이터 또는 다른 항목을 참조하기 위한 다른 방법일 수 있다.
또한, 데이터 유형 또는 클래스가 API에 의하여 제공되고 API-구현 컴포넌트에 의하여 구현될 수 있다. 따라서, API-호출 컴포넌트는 API에서 제공되는 정의들을 사용함으로써 그러한 유형들 또는 클래스들의 변수들을 선언하거나, 이들에 대한 포인터들을 사용하거나, 이들의 상수 값을 사용 또는 인스턴스화한다(instantiate).
일반적으로, API를 사용하여 API-구현 컴포넌트에 의하여 제공되는 서비스 또는 데이터에 액세스하거나 API-구현 컴포넌트에 의하여 제공되는 동작 또는 연산의 수행을 개시할 수 있다. 예로서, API-구현 컴포넌트 및 API-호출 컴포넌트는 각각 운영 체제, 라이브러리, 디바이스 구동기, API, 어플리케이션 프로그램, 또는 다른 모듈 중에서 임의의 것일 수 있다(API-구현 컴포넌트 및 API-호출 컴포넌트가 서로 동일하거나 상이한 유형의 모듈일 수 있음이 이해되어야 한다). API-구현 컴포넌트들은 일부 경우에 적어도 부분적으로 펌웨어, 마이크로코드 또는 다른 하드웨어 로직으로 실시될 수 있다. 일부 예들에서, API는 클라이언트 프로그램이 소프트웨어 디벨롭먼트 키트(Software Development Kit, SDK) 라이브러리에 의해 제공되는 서비스를 사용하게 할 수 있다. 다른 예들에서, 애플리케이션 또는 다른 클라이언트 프로그램은 애플리케이션 프레임워크에 의해 제공되는 API를 사용할 수 있다. 이들 예들에서, 어플리케이션 또는 클라이언트 프로그램은 SDK에 의해 제공되고 API에 의해 제공된 함수들 또는 메소드들에 대한 호출들을 통합시키거나 SDK에서 정의되고 API에 의해 제공된 데이터 유형들 또는 객체들을 사용할 수 있다. 이 예들에서, 애플리케이션 프레임워크는 프레임워크에 의해 정의되는 다양한 이벤트들에 응답하는 프로그램용 메인 이벤트 루프를 제공한다. API는 애플리케이션 프레임워크를 사용하여 애플리케이션이 이벤트 및 이벤트에 대한 응답들을 규정하게 한다. 일부 구현예들에서, API 호출은 입력 능력 및 상태, 출력 능력 및 상태, 프로세싱 능력, 전력 상태, 저장 용량 및 상태, 통신 능력 등과 같은 양태들에 관계되는 것들을 비롯한 하드웨어 디바이스의 능력 또는 상태를 애플리케이션에 보고할 수 있으며, API는 펌웨어, 마이크로코드, 또는 하드웨어 컴포넌트 상에서 부분적으로 실행되는 기타 낮은 레벨의 로직에 의하여 부분적으로 구현될 수 있다.
API-호출 컴포넌트는 로컬 컴포넌트(즉, API-구현 컴포넌트와 동일한 데이터 프로세싱 시스템 상의) 또는 네트워크에 걸쳐 API를 통해 API-구현 컴포넌트와 통신하는 원격 컴포넌트(즉, API-구현 컴포넌트와 상이한 데이터 프로세싱 시스템 상의)일 수 있다. API-구현 컴포넌트가 또한 API-호출 컴포넌트로서의 역할을 할 수도 있고(즉, 그것은 상이한 API-구현 컴포넌트에 의해 노출된 API에 API 호출을 행할 수 있다), 상이한 API-호출 컴포넌트에 노출되는 API를 구현함으로써 API-호출 컴포넌트가 또한 API-구현 컴포넌트로서의 역할을 할 수 있음이 이해되어야 한다.
API는 상이한 프로그래밍 언어들로 기록된 다수의 API-호출 컴포넌트들이 API-구현 컴포넌트와 통신하도록 허용할 수 있다(따라서, API는 API-구현 컴포넌트와 API-호출 컴포넌트 사이의 호출 및 반환을 해석하기 위한 특징부들을 포함할 수 있음); 그러나 API는 구체적인 프로그래밍 언어의 관점에서 구현될 수 있다. 일례로, API-호출 컴포넌트는 OS 공급자로부터의 API 세트, 플러그인 공급자로부터의 다른 API 세트, 다른 API 세트의 다른 공급자(예컨대, 소프트웨어 라이브러리의 공급자) 또는 생성자로부터의 다른 API 세트와 같은, 상이한 공급자들로부터의 API들을 호출할 수 있다.
도 11은 본 발명의 일부 예들에서 사용될 수 있는 예시적인 API 아키텍처를 도시하는 블록 다이어그램이다. 도 11에 도시된 바와 같이, API 아키텍처(600)는 API(620)를 구현하는 API-구현 컴포넌트(610)(예컨대, 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)를 포함한다. API(620)는 하나 이상의 기능, 메소드, 클래스, 객체, 프로토콜, 데이터 구조, 포맷, 및/또는 API-호출 컴포넌트(630)에 의해 사용될 수 있는 API-구현 컴포넌트의 다른 특징부들을 규정한다. API(620)는 API-구현 컴포넌트 내의 함수가 어떻게 API-호출 컴포넌트로부터 파라미터들을 받는지, 그리고 이 함수가 어떻게 API-호출 컴포넌트로 결과를 반환하는지를 규정하는 적어도 하나의 호출 규약(calling convention)을 규정할 수 있다. API-호출 컴포넌트(630)(예컨대, 운영 체제, 라이브러리, 디바이스 구동기, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)는 API(620)를 통해 API 호출하여 API(620)에 의해 규정되는 API-구현 컴포넌트(610)의 특징부들에 액세스하여 이를 사용한다. API-구현 컴포넌트(610)는 API 호출에 응답하여 API(620)를 통하여 API-호출 컴포넌트(630)로 값을 반환할 수 있다.
API 구현 컴포넌트(610)가 API(620)를 통해 규정되지 않고 API 호출 컴포넌트(630)가 이용 가능하지 않은 추가적인 함수, 메소드, 클래스, 데이터 구조, 및/또는 다른 특징을 포함할 수 있음이 인식될 것이다. API 호출 컴포넌트(630)가 API 구현 컴포넌트(610)와 동일한 시스템 상에 있을 수 있거나, 원격으로 위치되어 네트워크를 통해 API(620)를 이용하여 API 구현 컴포넌트(610)에 액세스할 수 있다는 것을 이해해야 한다. 도 11은 API(620)와 상호작용하는 단일 API-호출 컴포넌트(630)를 도시하지만, API-호출 컴포넌트(630)와 상이한 언어(또는 동일한 언어)로 작성될 수 있는 다른 API-호출 컴포넌트들이 API(620)를 사용할 수 있다는 것을 이해할 것이다.
API-구현 컴포넌트(610), API(620) 및 API-호출 컴포넌트(630)는 기계(예컨대, 컴퓨터 또는 다른 데이터 프로세싱 시스템)에 의해 판독가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함하는 비일시적 기계-판독가능한 저장 매체에 저장될 수 있다. 예를 들어, 기계-판독가능한 매체는 자기 디스크, 광 디스크, RAM(random access memory); 판독 전용 메모리, 플래시 메모리 디바이스 등을 포함한다.
도 12에 도시된 예시적인 소프트웨어 스택에서, 애플리케이션은 여러 서비스 API를 이용하여 서비스 A 또는 서비스 B로의 호출을 행하고 여러 운영 체제(OS) API를 이용하여 OS로의 호출을 행할 수 있다. 서비스 A 및 서비스 B는 여러 OS API를 이용하여 OS로의 호출을 행할 수 있다.
서비스 2는 2개의 API를 갖는데, 그 중 하나(서비스 2 API 1)는 애플리케이션 1로부터 호출을 수신하고 그것에 값을 반환하며, 다른 것(서비스 2 API 2)은 애플리케이션 2로부터 호출을 수신하고 그것에 값을 반환함에 유의한다. 서비스 1(예컨대 소프트웨어 라이브러리일 수 있음)은 OS API 1로의 호출을 행하고 그로부터 반환 값을 수신하며, 서비스 2(예컨대 소프트웨어 라이브러리일 수 있음)는 OS API 1 및 OS API 2 둘 모두로의 호출을 행하고 그들로부터 반환 값을 수신한다. 애플리케이션 2는 OS API 2로의 호출을 행하고 그로부터 반환 값을 수신한다.
도 13은 디바이스의 터치 스크린과 다른 컴포넌트들 간의 예시적인 상호작용을 도시하는 블록 다이어그램이다. 설명된 예들은 유선 또는 무선 통신 채널(1002)을 통해 컴퓨팅 시스템(1003)과 상호작용하기 위한 터치 입력을 수신할 수 있는 터치 I/O 디바이스(1001)를 포함할 수 있다. 터치 I/O 디바이스(1001)는, 다른 입력 디바이스들, 예컨대 키보드, 마우스 등을 대신하여 또는 그것들과 조합하여 사용자 입력을 제공하기 위해 사용될 수 있다. 하나 이상의 터치 I/O 디바이스(1001)들이 사용자 입력을 컴퓨팅 시스템(1003)에 제공하는데 사용될 수 있다. 터치 I/O 디바이스(1001)는 컴퓨팅 시스템(1003)의 일체화된 부분(예컨대, 스마트폰 또는 태블릿 PC 상의 터치 스크린)일 수 있거나 또는 컴퓨팅 시스템(1003)으로부터 분리될 수 있다.
터치 I/O 디바이스(1001)는 전체적으로 또는 부분적으로 투명, 반투명, 불투명, 불명료한 또는 이들의 임의의 조합인 터치 감지 패널을 포함할 수 있다. 터치 I/O 디바이스(1001)는 터치 스크린, 터치 패드, 터치 패드로서 기능하는 터치 스크린(예컨대 랩톱의 터치 패드를 대체하는 터치 스크린), 임의의 다른 입력 디바이스와 조합되거나 통합된 터치 스크린 또는 터치 패드(예컨대 키보드 상에 배치된 터치 스크린 또는 터치 패드) 또는 터치 입력을 수신하기 위한 터치 감지 표면을 갖는 임의의 다차원 객체로서 구현될 수 있다.
일례로, 터치 스크린으로서 구현되는 터치 I/O 디바이스(1001)는 디스플레이의 적어도 일부분 위에 부분적으로 또는 전체적으로 위치한 투명 및/또는 반투명 터치 감지 패널을 포함할 수 있다. 이 예에 따라, 터치 I/O 디바이스(1001)는 컴퓨팅 시스템(1003)(및/또는 다른 소스)에서 전송된 그래픽 데이터를 디스플레이하도록 기능하고 또한 사용자 입력을 수신하도록 기능한다. 다른 예들에서, 터치 I/O 디바이스(1001)는 터치 감지 컴포넌트들/디바이스들이 디스플레이 컴포넌트들/디바이스들에 내장된 내장형 터치 스크린으로서 구현될 수 있다. 또 다른 예들에서 터치 스크린은 보충적인 그래픽 데이터 또는 주요 디스플레이와 동일한 그래픽 데이터를 디스플레이하기 위한 보충적 또는 추가적 디스플레이 스크린으로서 사용될 수 있고 터치 입력을 수신한다.
터치 I/O 디바이스(1001)는 용량성, 저항성, 광학적, 음향적, 유도성, 기계적, 화학적 측정, 또는 디바이스(1001)에 대한 하나 이상의 터치 또는 근사 터치의 발생에 대하여 측정될 수 있는 임의의 현상에 기초하여 디바이스(1001) 상의 하나 이상의 터치 또는 근사 터치의 위치를 검출하도록 구성될 수 있다. 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합을 이용하여 검출된 터치들의 측정을 프로세싱하여 하나 이상의 제스쳐를 식별하고 추적할 수 있다. 제스쳐는 터치 I/O 디바이스(1001) 상의 정지된 또는 정지되지 않은, 단일 또는 다중의 터치 또는 근사 터치에 대응할 수 있다. 근본적으로 동시에, 인접하게, 또는 연속하여, 탭핑(tapping)하거나, 누르거나, 흔들거나(rocking), 문지르거나, 비틀거나, 배향을 바꾸거나, 다양한 압력으로 누르는 것과 같은 터치 I/O 디바이스(1001) 상에서 특정 방식으로 하나 이상의 손가락 또는 다른 객체를 움직임으로써 제스쳐가 수행될 수 있다. 제스쳐는 임의의 다른 손가락 또는 손가락들을 이용하거나 그 사이에서 핀칭(pinching), 슬라이딩(sliding), 스와이핑(swiping), 돌리기(rotating), 구부리기(flexing), 드래깅(dragging), 또는 탭핑 모션에 의해 특성화될 수 있지만, 이에 제한되지 않는다. 한명 이상의 사용자에 의해, 하나 이상의 손으로, 또는 이들의 임의의 조합으로 단일 제스쳐가 수행될 수 있다.
컴퓨팅 시스템(1003)은 GUI(graphical user interface)를 디스플레이하기 위하여 그래픽 데이터를 이용하여 디스플레이를 구동할 수 있다. GUI는 터치 I/O 디바이스(1001)를 통해 터치 입력을 수신하도록 구성될 수 있다. 터치 스크린으로 구현되는 경우, 터치 I/O 디바이스(1001)는 GUI를 디스플레이할 수 있다. 대안적으로, GUI는 터치 I/O 디바이스(1001)와 별개의 디스플레이 상에 디스플레이될 수 있다. GUI는 인터페이스 내의 특정 위치에 디스플레이되는 그래픽 요소들을 포함할 수 있다. 그래픽 요소들은 가상 스크롤 휠, 가상 키보드, 가상 노브(knob), 가상 버튼, 임의의 가상 UI 등을 포함하는 다양한 디스플레이된 가상 입력 디바이스들을 포함할 수 있지만, 이에 제한되지 않는다. 사용자는 GUI의 그래픽 요소들과 연관될 수 있는 터치 I/O 디바이스(1001) 상의 하나 이상의 특정 위치에서 제스쳐들을 수행할 수 있다. 다른 예들에서, 사용자는 GUI의 그래픽 요소들의 위치들에 독립적인 하나 이상의 위치에서 제스쳐들을 수행할 수 있다. 터치 I/O 디바이스(1001) 상에서 수행되는 제스쳐들은 직접 또는 간접적으로 GUI 내의 그래픽 요소들, 예컨대 커서, 아이콘, 미디어 파일, 리스트, 텍스트, 전체 또는 일부 이미지 등을 조작, 제어, 변경, 이동, 구동, 초기화 또는 일반적으로 영향을 줄 수 있다. 예를 들어, 터치 스크린의 경우, 사용자는 터치 스크린 상의 그래픽 요소 위에 제스쳐를 수행함으로써 그래픽 요소와 직접 상호작용할 수 있다. 대안적으로, 터치 패드는 일반적으로 간접 상호작용을 제공한다. 제스쳐는 또한 디스플레이되지 않는 GUI 요소들에 영향을 줄 수 있거나(예컨대 사용자 인터페이스가 보이게 함) 또는 컴퓨팅 시스템(1003) 내의 다른 작동들에 영향을 줄 수 있다(예컨대 GUI, 애플리케이션, 또는 운영 체제의 상태 또는 모드에 영향을 줌). 제스쳐는 터치 I/O 디바이스(1001) 상에서 디스플레이되는 커서와 협력하여 수행되거나 수행되지 않을 수 있다. 예를 들어, 제스쳐가 터치 패드 상에서 수행되는 경우, 커서(또는 포인터)가 디스플레이 스크린 또는 터치 스크린 상에 디스플레이될 수 있고, 커서는 터치 패드 상의 터치 입력을 통해 제어되어 디스플레이 스크린 상의 그래픽 객체들과 상호작용할 수 있다. 제스쳐가 터치 스크린 상에서 직접 수행되는 다른 예들에서, 사용자는 터치 스크린 상에 디스플레이되고 있는 커서 또는 포인터를 이용하여 또는 이용하지 않고 터치 스크린 상의 객체들과 직접 상호작용할 수 있다.
터치 I/O 디바이스(1001) 상의 터치 또는 근사 터치들에 응답하여 또는 기초하여 통신 채널(1002)을 통해 사용자에게 피드백이 제공될 수 있다. 피드백은 광학적으로, 기계적으로, 전기적으로, 후각적으로, 음향적으로 등이나, 또는 이들의 임의의 조합 및 가변적 또는 비가변적 방식으로 전달될 수 있다.
통신 디바이스(예를 들어 모바일 폰, 스마트 폰), 멀티미디어 디바이스(예컨대 MP3 플레이어, TV, 라디오), 휴대용 또는 핸드헬드 컴퓨터(예컨대 태블릿, 넷북, 랩톱), 테스크톱 컴퓨터, 일체형 데스크톱, 주변기기 디바이스, 또는 시스템 아키텍처(2000)를 포함하는 데 적용 가능한 임의의 다른 시스템 또는 디바이스를 포함하지만 이에 제한되지 않고, 이러한 유형의 디바이스들 중 둘 이상의 조합을 포함하는, 임의의 휴대용 또는 비휴대용 디바이스 내에서 구현될 수 있는 시스템 아키텍처의 예들에 관해 이제 설명한다. 도 14는 일반적으로 하나 이상의 컴퓨터 판독가능 매체(2001), 프로세싱 시스템(2004), I/O 서브시스템(2006), 무선 주파수(RF) 회로(2008), 오디오 회로(2010), 및 센서 회로(2011)를 포함하는 시스템(2000)의 일 예의 블록 다이어그램이다. 이 컴포넌트들은 하나 이상의 통신 버스 또는 신호 라인(2003)에 의해 결합될 수 있다.
도 14에 도시된 아키텍처는 단지 일례의 시스템(2000)의 아키텍처일 뿐이고, 시스템(2000)의 컴포넌트들은 도시된 것보다 보다 많거나 적을 수 있고, 또는 구성이 상이할 수도 있다는 것이 명백할 것이다. 도 14에 도시된 다양한 컴포넌트들은 하나 이상의 신호 프로세싱 및/또는 애플리케이션 맞춤형 집적 회로들을 포함하는 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다.
RF 회로(2008)는 무선 링크 또는 네트워크를 통해 하나 이상의 다른 디바이스에 정보를 주고 받는 데 사용되고 이 기능을 수행하기 위한 공지의 회로를 포함한다. RF 회로(2008) 및 오디오 회로(2010)는 주변기기 인터페이스(2016)를 통해 프로세싱 시스템(2004)에 결합될 수 있다. 인터페이스(2016)는 주변기기와 프로세싱 시스템(2004) 간의 통신을 구성하고 유지하기 위한 다양한 공지의 컴포넌트들을 포함할 수 있다. 오디오 회로(2010)는 오디오 스피커(2050) 및 마이크로폰(2052)에 연결될 수 있고 사용자가 다른 사용자들과 실시간으로 통신할 수 있도록 인터페이스(2016)로부터 수신된 음성 신호들을 프로세싱하기 위한 공지된 회로를 포함할 수 있다. 일부 예들에서, 오디오 회로(2010)는 헤드폰 잭(도시되지 않음)을 포함할 수 있다. 센서 회로(2011)는 배터리 잔존 수명, 전력 소비, 프로세서 속도, CPU 부하 등을 감지할 수 있는 하나 이상의 발광 다이오드(LED) 또는 다른 광 방출기, 하나 이상의 포토 다이오드 또는 다른 광 센서들, 하나 이상의 광열 센서들, 자력계, 가속도계, 자이로스코프, 가압계, 나침반, 근접 센서, 카메라, 주변 광 센서, 온도계, GPS 센서, 및 다양한 시스템 센서들을 포함하지만 제한되지 않는 다양한 센서들과 결합될 수 있다.
주변기기 인터페이스(2016)는 시스템의 입력 및 출력 주변기기를 프로세서(2018) 및 컴퓨터 판독가능 매체(2001)에 결합할 수 있다. 하나 이상의 프로세서(2018)는 제어기(2020)를 통해 하나 이상의 컴퓨터 판독가능 매체(2001)와 통신한다. 컴퓨터 판독가능 매체(2001)는 하나 이상의 프로세서(2018)에 의한 사용을 위해 코드 및/또는 데이터를 저장할 수 있는 임의의 디바이스 또는 매체일 수 있다. 일부 예들에서, 매체(2001)는 비일시적 컴퓨터 판독가능 저장 매체가 될 수 있다. 매체(2001)는 캐시, 메인 메모리 및 2차 메모리를 포함하는 메모리 계층을 포함할 수 있지만, 이에 제한되지 않는다. 메모리 계층은 RAM(예컨대 SRAM, DRAM, DDRAM), ROM, FLASH, 자기 및/또는 광학 저장 디바이스, 예컨대 디스크 드라이브, 자기 테이프, CD(compact disk) 및 DVD(digital video discs)의 임의의 조합을 이용하여 구현될 수 있다. 매체(2001)는 또한 컴퓨터 명령어들 또는 데이터를 나타내는 정보를 담고 있는 신호들을 전달하기 위한 전송 매체(신호가 변조되는 반송파를 이용하거나 이용하지 않음)를 포함할 수 있다. 예를 들어, 전송 매체는 인터넷(월드 와이드 웹으로도 지칭됨), 인트라넷(들), 로컬 영역 네트워크(LAN), 와이드 로컬 영역 네트워크(WLAN), 저장소 영역 네트워크(SAN), 도시권 네트워크(MAN) 등을 포함하는 통신 네트워크를 포함할 수 있지만, 이에 제한되지 않는다.
하나 이상의 프로세서(2018)는 시스템(2000)을 위한 다양한 기능들을 수행하기 위해 매체(2001)에 저장된 다양한 소프트웨어 컴포넌트들을 실행할 수 있다. 일부 예들에서, 소프트웨어 컴포넌트들은 운영 체제(2022), 통신 모듈(또는 명령어들의 세트)(2024), 터치 프로세싱 모듈(또는 명령어들의 세트)(2026), 그래픽 모듈(또는 명령어들의 세트)(2028), 및 하나 이상의 애플리케이션(또는 명령어들의 세트)(2030)을 포함한다. 이러한 모듈들 및 위에 기재된 애플리케이션들 각각은 위에 설명된 하나 이상의 기능 및 본원에 설명되는 방법들(예컨대, 컴퓨터 구현 방법들 및 본 명세서에 설명되는 다른 정보 프로세싱 방법들)을 수행하기 위한 명령어들의 세트에 대응한다. 이들 모듈들(즉, 명령어들의 세트들)은 별도의 소프트웨어 프로그램들, 절차들 또는 모듈들로서 구현될 필요는 없으며, 따라서 이들 모듈들의 다양한 서브세트들이 다양한 예들에서 조합되거나 그렇지 않으면 재배열될 수 있다. 일부 예들에서, 매체(2001)는 앞서 식별된 모듈들 및 데이터 구조들의 서브세트를 저장할 수 있다. 또한, 매체(2001)는 상술되지 않은 추가적인 모듈들 및 데이터 구조들을 저장할 수 있다.
운영 체제(2022)는 일반적인 시스템 태스크들(예컨대, 메모리 관리, 저장 디바이스 제어, 전력 관리 등)을 제어 및 관리하기 위한 다양한 절차들, 명령어들의 세트, 소프트웨어 컴포넌트들 및/또는 드라이버들을 포함할 수 있고, 다양한 하드웨어 및 소프트웨어 컴포넌트들 간의 통신을 용이하게 한다.
통신 모듈(2024)은 하나 이상의 외부 포트(2036)를 통해 또는 RF 회로(2008)를 통해 다른 디바이스들과의 통신을 용이하게 할 수 있고, RF 회로(2008) 및/또는 외부 포트(2036)로부터 수신되는 데이터를 처리하기 위한 다양한 소프트웨어 컴포넌트들을 포함할 수 있다.
그래픽 모듈(2028)은, 디스플레이 표면 상의 그래픽 객체들을 렌더링, 애니메이션화, 및 디스플레이하기 위한 다양한 알려진 소프트웨어 컴포넌트들을 포함할 수 있다. 터치 I/O 디바이스(2012)가 터치 감응형 디스플레이(예컨대, 터치 스크린)인 예들에서, 그래픽 모듈(2028)은 터치 감응형 디스플레이 상의 객체들을 렌더링, 디스플레이, 및 애니메이션화하기 위한 컴포넌트들을 포함할 수 있다.
하나 이상의 애플리케이션(2030)은, 브라우저, 주소록, 연락처 목록, 이메일, 인스턴트 메시징, 워드 프로세싱, 키보드 에뮬레이션(keyboard emulation), 위젯, JAVA 지원 애플리케이션, 암호화, 디지털 권한 관리, 음성 인식, 음성 복제, 위치 판단 기능(위성 위치 확인 시스템(GPS)에서 제공되는 것과 같음), 음악 플레이어 등을 포함하지만 이로 제한되지 않는, 시스템(2000)에 설치된 임의의 애플리케이션들을 포함할 수 있다.
터치 프로세싱 모듈(2026)은, 터치 I/O 디바이스 제어기(2032)를 통해 I/O 디바이스(2012)로부터 수신되는 터치 입력을 수신하고 프로세싱하는 것을 포함할 수 있지만 이로 제한되지 않는, 터치 I/O 디바이스(2012)와 연관된 다양한 태스크들을 수행하기 위한 다양한 소프트웨어 컴포넌트들을 포함할 수 있다.
다양한 기능들을 제어하거나 수행하기 위한 터치 I/O 디바이스(2012) 및 하나 이상의 다른 I/O 디바이스(2014)에 결합될 수 있다. 터치 I/O 디바이스(2012)는 터치 I/O 디바이스 제어기(2032)를 통해 프로세싱 시스템(2004)과 통신할 수 있고, 이는 사용자 터치 입력(예컨대, 스캐닝 하드웨어)을 프로세싱하기 위한 다양한 컴포넌트들을 포함할 수 있다. 하나 이상의 다른 입력 제어기(2034)는 다른 I/O 디바이스들(2014)로부터/로 전기 신호들을 수신/전송할 수 있다. 다른 I/O 디바이스들(2014)은 물리적 버튼, 다이얼, 슬라이더 스위치, 스틱, 키보드, 터치 패드, 추가적인 디스플레이 스크린, 또는 그들의 임의의 조합을 포함할 수 있다.
터치 스크린으로서 구현되는 경우, 터치 I/O 디바이스(2012)는 GUI에서 사용자에게 시각적 출력을 디스플레이할 수 있다. 시각적 출력은 텍스트, 그래픽, 비디오 및 이들의 임의의 조합을 포함할 수 있다. 시각적 출력 중 일부 또는 모두는 사용자 인터페이스 객체들에 대응할 수 있다. 터치 I/O 디바이스(2012)는 사용자로부터 터치 입력을 수용하는 터치 감응형 표면을 형성할 수 있다. 터치 I/O 디바이스(2012) 및 터치 스크린 제어기(2032)(더불어 매체(2001) 내의 임의의 연관된 모듈들 및/또는 명령어들의 세트들)는 터치 I/O 디바이스(2012) 상의 터치들 또는 근사 터치들(및 터치의 임의의 이동 또는 해제)을 검출하고 추적할 수 있고, 검출된 터치 입력을 하나 이상의 사용자 인터페이스 객체와 같은 그래픽 객체들과의 상호작용으로 변환할 수 있다. 디바이스(2012)가 터치 스크린으로서 구현되는 경우, 사용자는 터치 스크린 상에 디스플레이되는 그래픽 객체들과 직접 상호작용할 수 있다. 대안적으로, 디바이스(2012)가 터치 스크린 이외의 터치 디바이스(예컨대, 터치 패드)로서 구현되는 경우, 사용자는 I/O 디바이스(2014)로서 구현된 별개의 디스플레이 스크린 상에 디스플레이되는 그래픽 객체들과 간접적으로 상호작용할 수 있다.
터치 I/O 디바이스(2012)는 다음의 미국 특허들: 제6,323,846호(Westerman 등), 제6,570,557(Westerman 등), 및/또는 제6,677,932호(Westerman), 및/또는 미국 특허 공개 제2002/0015024A1호에 기술되는 멀티-터치 감응형 표면과 유사할 수 있으며, 이 미국 특허들 및 미국 특허 공개 각각은 이로써 참고자료로 포함된다.
터치 I/O 디바이스(2012)가 터치 스크린인 예들에서, 터치 스크린은 LCD(액정 디스플레이) 기술, LPD(발광 폴리머 디스플레이) 기술, OLED(유기 LED), 또는 OEL(organic electro luminescence)을 사용할 수 있지만, 다른 디스플레이 기술들이 다른 예들에서 사용될 수 있다.
피드백은, 사용자의 터치 입력뿐만 아니라 디스플레이되고 있는 것 및/또는 컴퓨팅 시스템의 상태 또는 상태들에 기초하여 터치 I/O 디바이스(2012)에 의해 제공될 수 있다. 피드백은 광학적으로(예컨대, 광 신호 또는 디스플레이된 이미지), 기계적으로(예컨대, 햅틱 피드백, 터치 피드백, 힘 피드백 등), 전기적으로(예컨대, 전기 자극), 후각적으로, 음향적으로(예컨대, 비프(beep) 등) 등, 또는 이들의 임의의 조합 및 가변 또는 비가변 방식으로 전송될 수 있다.
시스템(2000)은 또한 다양한 하드웨어 컴포넌트들에 전력을 공급하기 위한 전력 시스템(2044)을 포함하고, 전력 관리 시스템, 하나 이상의 전원, 재충전 시스템, 전원 장애 감지 회로, 전력 변환기 또는 인버터, 전력 상태 표시기, 및 통상적으로 휴대용 디바이스들 내의 전력의 생성, 관리, 및 분배와 연관된 임의의 다른 컴포넌트를 포함할 수 있다.
일부 예들에서, 주변기기 인터페이스(2016), 하나 이상의 프로세서(2018) 및 메모리 제어기(2020)는 프로세싱 시스템(2004)과 같은 단일 칩 상에서 구현될 수 있다. 일부 다른 예들에서, 이들은 별개의 칩들 상에서 구현될 수 있다.
본 발명의 예들은 복수의 비디오를 동시에 디스플레이하는 전자 디바이스의 대역폭 관리를 허용하여, 고품질의 중단 없는 비디오 재생을 허용함에 있어서 유리할 수 있다.
일부 예들에서, 전자 디바이스의 컴퓨터 구현 방법이 개시된다. 방법은: 제1 비트레이트에서 제1 비디오를 디스플레이하는 단계 - 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이용으로 이용 가능하며, 제2 비트레이트는 제1 비트레이트보다 낮음 -; 및 사용자 입력에 응답하여, 복수의 추가적인 비디오를 디스플레이하고 제1 비디오의 비트레이트를 제1 비트레이트로부터 제2 비트레이트로 감소시키는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 복수의 추가적인 비디오는 제3 비트레이트에서 디스플레이되는 제2 비디오를 포함할 수 있으며, 제2 비디오는 제3 및 제4 비트레이트에서 디스플레이용으로 이용 가능하고, 제4 비트레이트는 제3 비트레이트보다 높으며, 방법은: 제2 비디오를 브라우징하는 사용자 입력에 응답하여, 제2 비디오를 제4 비트레이트에서 로드하는 단계 및 제2 비디오를 선택하는 사용자 입력에 응답하여, 제2 비디오를 제4 비트레이트에서 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제2 비디오는 제5 비트레이트에서 디스플레이용으로 더 이용 가능할 수 있으며, 제5 비트레이트는 제4 비트레이트보다 높고, 방법은: 제2 비디오를 선택하는 사용자 입력에 응답하여 제2 비디오를 제5 비트레이트에서 로드하는 단계; 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계; 및 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계에 응답하여, 제2 비디오를 제5 비트레이트에서 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 추가적으로 또는 대안적으로, 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 제2 비디오가 중단 없이 제5 비트레이트에서 디스플레이될 수 있도록 충분한 제2 비디오가 제5 비트레이트에서 로드되었다고 결정하는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 전자 디바이스의 대역폭 능력에 기초할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 복수의 추가적인 비디오는 제2 비디오를 포함할 수 있고, 복수의 추가적인 비디오를 디스플레이하는 단계는 제2 비디오와 연관된 오디오를 로드하는 단계를 포함하지 않을 수 있고, 방법은 제2 비디오에 브라우징하는 사용자 입력에 응답하여, 제2 비디오와 연관된 오디오를 로드하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은 채널 바를 디스플레이하는 단계를 더 포함할 수 있으며, 채널 바를 디스플레이하는 단계는 복수의 추가적인 비디오를 디스플레이하는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제1 및 제2 비트레이트 각각은 해상도 및 품질 레벨의 하나 이상과 연관될 수 있다.
일부 예들에서, 전자 디바이스의 컴퓨터 구현 방법이 개시된다. 방법은: 채널 바에 대한 비디오 플레이어들의 풀(pool)을 메모리에 할당하는 단계; 및 비디오 플레이어들의 제1 서브셋만을 디스플레이하는 단계 - 제1 서브셋 각각의 비디오 플레이어는 비디오 컨텐츠를 재생함 - 를 포함할 수 있으며, 비디오 플레이어들의 제2 서브셋은 디스플레이되지 않을 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 비디오 플레이어들의 제1 서브셋을 디스플레이하는 단계는: 제1 비디오 플레이어의 제1 우선순위를 결정하는 단계; 제1 비디오 플레이어의 제1 우선순위에 기초하여 제1 비디오 플레이어의 비디오 컨텐츠를 로드하는 단계; 제2 비디오 플레이어의 제2 우선순위를 결정하는 단계; 및 제2 비디오 플레이어의 제2 우선순위에 기초하여 제2 비디오 플레이어를 대신하여 플레이스홀더 이미지를 디스플레이하는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제1 및 제2 우선순위는 채널 바의 제1 및 제2 비디오 플레이어의 상대적인 위치에 기초하여 결정될 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은, 제1 서브셋의 제1 비디오 플레이어를 오프스크린 위치로 이동시키고 제2 서브셋의 제2 비디오 플레이어를 온스크린 위치로 이동시키는 애니메이션을 디스플레이하는 단계를 더 포함할 수 있으며, 제1 비디오 플레이어가 더 이상 디스플레이되지 않고 제2 비디오 플레이어가 디스플레이될 수 있다. 위의 예들 중 하나 이상에 추가적으로 또는 대안적으로, 제2 비디오 플레이어는 애니메이션을 디스플레이하기 전에 비디오 컨텐츠 로드를 시작할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은: 추가적인 비디오 플레이어가 필요하다고 결정하는 단계; 풀에 대한 추가적인 비디오 플레이어를 메모리에 할당하는 단계; 및 추가적인 비디오 플레이어를 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은: 제1 비디오 컨텐츠를 재생하는 제1 서브셋의 제1 비디오 플레이어를 디스플레이하는 단계; 제1 비디오 플레이어를 오프스크린 위치로 이동시키는 애니메이션을 디스플레이하는 단계; 제1 비디오 플레이어에 제2 비디오 컨텐츠를 로드하는 단계; 및 제1 비디오 플레이어를 온스크린 위치로 이동시키는 애니메이션을 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은 전자 디바이스의 제약에 기초하여 풀에 대한 비디오 플레이어들의 최대 수를 결정하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 전자 디바이스의 제약은 대역폭 제약을 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은: 제1 서브셋의 각각의 비디오 플레이어를 정지 이미지로 대체하는 단계; 제1 서브셋의 각각의 비디오 플레이어에 추가적인 비디오 컨텐츠를 로드하는 단계; 및 정지 이미지는 점진적으로 사라지고 비디오 플레이어들의 제1 서브셋은 점진적으로 나타나는 애니메이션을 디스플레이하는 단계를 더 포함할 수 있다.
일부 예들에서, 비일시적 컴퓨터 판독가능 매체가 개시된다. 컴퓨터 판독가능 매체는 실행될 때 방법을 수행하는 명령어들을 포함할 수 있으며, 방법은: 제1 비트레이트에서 제1 비디오를 디스플레이하는 단계 - 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이용으로 이용 가능하고, 제2 비트레이트는 제1 비트레이트보다 낮음 -; 및 사용자 입력에 응답하여, 복수의 추가적인 비디오를 디스플레이하고 제1 비디오의 비트레이트를 제1 비트레이트로부터 제2 비트레이트로 감소시키는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 복수의 추가적인 비디오는 제3 비트레이트에서 디스플레이되는 제2 비디오를 포함할 수 있으며, 제2 비디오는 제3 및 제4 비트레이트에서 디스플레이용으로 이용 가능하고, 제4 비트레이트는 제3 비트레이트보다 높으며, 방법은: 제2 비디오를 브라우징하는 사용자 입력에 응답하여, 제2 비디오를 제4 비트레이트에서 로드하는 단계; 및 제2 비디오를 선택하는 사용자 입력에 응답하여, 제2 비디오를 제4 비트레이트에서 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제2 비디오는 제5 비트레이트에서 디스플레이용으로 더 이용 가능할 수 있으며, 제5 비트레이트는 제4 비트레이트보다 높고, 방법은: 제2 비디오를 선택하는 사용자 입력에 응답하여 제2 비디오를 제5 비트레이트에서 로드하는 단계; 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계; 및 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계에 응답하여, 제2 비디오를 제5 비트레이트에서 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 추가적으로 또는 대안적으로, 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 제2 비디오가 중단 없이 제5 비트레이트에서 디스플레이될 수 있도록 충분한 제2 비디오가 제5 비트레이트에서 로드되었다고 결정하는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 전자 디바이스의 대역폭 능력에 기초할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 복수의 추가적인 비디오는 제2 비디오를 포함할 수 있고, 복수의 추가적인 비디오를 디스플레이하는 단계는 제2 비디오와 연관된 오디오를 로드하는 단계를 포함하지 않을 수 있고, 방법은 제2 비디오에 브라우징하는 사용자 입력에 응답하여, 제2 비디오와 연관된 오디오를 로드하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은 채널 바를 디스플레이하는 단계를 더 포함할 수 있으며, 채널 바를 디스플레이하는 단계는 복수의 추가적인 비디오를 디스플레이하는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제1 및 제2 비트레이트 각각은 해상도 및 품질 레벨의 하나 이상과 연관될 수 있다.
일부 예들에서, 비일시적 컴퓨터 판독가능 매체가 개시된다. 컴퓨터 판독가능 매체는, 실행될 때, 방법을 수행하는 명령어들을 포함할 수 있으며, 방법은: 채널 바에 대한 비디오 플레이어들의 풀을 메모리에 할당하는 단계; 및 비디오 플레이어들의 제1 서브셋만을 디스플레이하는 단계 - 제1 서브셋의 각각의 비디오 플레이어는 비디오 컨텐츠를 재생함 - 을 포함할 수 있으며, 비디오 플레이어들의 제2 서브셋은 디스플레이되지 않을 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 비디오 플레이어들의 제1 서브셋을 디스플레이하는 단계는: 제1 비디오 플레이어의 제1 우선순위를 결정하는 단계; 제1 비디오 플레이어의 제1 우선순위에 기초하여 제1 비디오 플레이어의 비디오 컨텐츠를 로드하는 단계; 제2 비디오 플레이어의 제2 우선순위를 결정하는 단계; 및 제2 비디오 플레이어의 제2 우선순위에 기초하여 제2 비디오 플레이어를 대신하여 플레이스홀더 이미지를 디스플레이하는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제1 및 제2 우선순위는 채널 바의 제1 및 제2 비디오 플레이어의 상대적인 위치에 기초하여 결정될 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은, 제1 서브셋의 제1 비디오 플레이어를 오프스크린 위치로 이동시키고 제2 서브셋의 제2 비디오 플레이어를 온스크린 위치로 이동시키는 애니메이션을 디스플레이하는 단계를 더 포함할 수 있으며, 제1 비디오 플레이어가 더 이상 디스플레이되지 않고 제2 비디오 플레이어가 디스플레이될 수 있다. 위의 예들 중 하나 이상에 추가적으로 또는 대안적으로, 제2 비디오 플레이어는 애니메이션을 디스플레이하기 전에 비디오 컨텐츠 로드를 시작할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은: 추가적인 비디오 플레이어가 필요하다고 결정하는 단계; 풀에 대한 추가적인 비디오 플레이어를 메모리에 할당하는 단계; 및 추가적인 비디오 플레이어를 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은: 제1 비디오 컨텐츠를 재생하는 제1 서브셋의 제1 비디오 플레이어를 디스플레이하는 단계; 제1 비디오 플레이어를 오프스크린 위치로 이동시키는 애니메이션을 디스플레이하는 단계; 제1 비디오 플레이어에 제2 비디오 컨텐츠를 로드하는 단계; 및 제1 비디오 플레이어를 온스크린 위치로 이동시키는 애니메이션을 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은 전자 디바이스의 제약에 기초하여 풀에 대한 비디오 플레이어들의 최대 수를 결정하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 전자 디바이스의 제약은 대역폭 제약을 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은: 제1 서브셋의 각각의 비디오 플레이어를 정지 이미지로 대체하는 단계; 제1 서브셋의 각각의 비디오 플레이어에 추가적인 비디오 컨텐츠를 로드하는 단계; 및 정지 이미지는 점진적으로 사라지고 비디오 플레이어들의 제1 서브셋은 점진적으로 나타나는 애니메이션을 디스플레이하는 단계를 더 포함할 수 있다.
일부 예들에서, 전자 디바이스가 개시된다. 전자 디바이스는 명령어들을 실행하기 위한 프로세서 및 명령어들을 저장하기 위해 프로세서와 결합된 메모리를 포함할 수 있고, 프로세서에 의해 실행될 때 명령어들은 프로세서로 하여금 애플리케이션 프로그래밍 인터페이스(API)를 생성하여 API 호출 컴포넌트가 방법을 수행하도록 허용하기 위한 동작들을 수행하게 하며, 방법은: 제1 비트레이트에서 제1 비디오를 디스플레이하는 단계 - 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이 가능하며, 제2 비트레이트는 제1 비트레이트보다 낮음 -; 및 사용자 입력에 응답하여, 복수의 추가적인 비디오를 디스플레이하고 제1 비디오의 비트레이트를 제1 비트레이트로부터 제2 비트레이트로 감소시키는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 복수의 추가적인 비디오는 제3 비트레이트에서 디스플레이되는 제2 비디오를 포함할 수 있으며, 제2 비디오는 제3 및 제4 비트레이트에서 디스플레이용으로 이용 가능하고, 제4 비트레이트는 제3 비트레이트보다 높으며, 방법은: 제2 비디오를 브라우징하는 사용자 입력에 응답하여, 제2 비디오를 제4 비트레이트에서 로드하는 단계 및 제2 비디오를 선택하는 사용자 입력에 응답하여, 제2 비디오를 제4 비트레이트에서 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제2 비디오는 제5 비트레이트에서 디스플레이용으로 더 이용 가능할 수 있으며, 제5 비트레이트는 제4 비트레이트보다 높고, 방법은: 제2 비디오를 선택하는 사용자 입력에 응답하여 제2 비디오를 제5 비트레이트에서 로드하는 단계; 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계; 및 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계에 응답하여, 제2 비디오를 제5 비트레이트에서 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 추가적으로 또는 대안적으로, 제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 제2 비디오가 중단 없이 제5 비트레이트에서 디스플레이될 수 있도록 충분한 제2 비디오가 제5 비트레이트에서 로드되었다고 결정하는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로,
제2 비디오가 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 전자 디바이스의 대역폭 능력에 기초할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 복수의 추가적인 비디오는 제2 비디오를 포함할 수 있고, 복수의 추가적인 비디오를 디스플레이하는 단계는 제2 비디오와 연관된 오디오를 로드하는 단계를 포함하지 않을 수 있고, 방법은 제2 비디오에 브라우징하는 사용자 입력에 응답하여, 제2 비디오와 연관된 오디오를 로드하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은 채널 바를 디스플레이하는 단계를 더 포함할 수 있으며, 채널 바를 디스플레이하는 단계는 복수의 추가적인 비디오를 디스플레이하는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제1 및 제2 비트레이트 각각은 해상도 및 품질 레벨의 하나 이상과 연관될 수 있다.
일부 예들에서, 전자 디바이스가 개시된다. 전자 디바이스는 명령어들을 실행하기 위한 프로세서 및 명령어들을 저장하기 위해 프로세서와 결합된 메모리를 포함할 수 있으며, 프로세서에 의해 실행될 때 명령어들은 프로세서로 하여금 API를 생성하여 API 호출 컴포넌트가 방법을 수행하도록 허용하기 위한 동작들을 수행하게 하며, 방법은: 채널 바에 대한 비디오 플레이어들의 풀을 메모리에 할당하는 단계; 및 비디오 플레이어들의 제1 서브셋만을 디스플레이하는 단계 - 제1 서브셋의 각각의 비디오 플레이어는 비디오 컨텐츠를 재생함 - 를 포함하며, 비디오 플레이어들의 제2 서브셋은 디스플레이되지 않을 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 비디오 플레이어들의 제1 서브셋을 디스플레이하는 단계는: 제1 비디오 플레이어의 제1 우선순위를 결정하는 단계; 제1 비디오 플레이어의 제1 우선순위에 기초하여 제1 비디오 플레이어의 비디오 컨텐츠를 로드하는 단계; 제2 비디오 플레이어의 제2 우선순위를 결정하는 단계; 및 제2 비디오 플레이어의 제2 우선순위에 기초하여 제2 비디오 플레이어를 대신하여 플레이스홀더 이미지를 디스플레이하는 단계를 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 제1 및 제2 우선순위는 채널 바의 제1 및 제2 비디오 플레이어의 상대적인 위치에 기초하여 결정될 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은, 제1 서브셋의 제1 비디오 플레이어를 오프스크린 위치로 이동시키고 제2 서브셋의 제2 비디오 플레이어를 온스크린 위치로 이동시키는 애니메이션을 디스플레이하는 단계를 더 포함할 수 있으며, 제1 비디오 플레이어가 더 이상 디스플레이되지 않고 제2 비디오 플레이어가 디스플레이될 수 있다. 위의 예들 중 하나 이상에 추가적으로 또는 대안적으로, 제2 비디오 플레이어는 애니메이션을 디스플레이하기 전에 비디오 컨텐츠 로드를 시작할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은: 추가적인 비디오 플레이어가 필요하다고 결정하는 단계; 풀에 대한 추가적인 비디오 플레이어를 메모리에 할당하는 단계; 및 추가적인 비디오 플레이어를 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은: 제1 비디오 컨텐츠를 재생하는 제1 서브셋의 제1 비디오 플레이어를 디스플레이하는 단계; 제1 비디오 플레이어를 오프스크린 위치로 이동시키는 애니메이션을 디스플레이하는 단계; 제1 비디오 플레이어에 제2 비디오 컨텐츠를 로드하는 단계; 및 제1 비디오 플레이어를 온스크린 위치로 이동시키는 애니메이션을 디스플레이하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은 전자 디바이스의 제약에 기초하여 풀에 대한 비디오 플레이어들의 최대 수를 결정하는 단계를 더 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 전자 디바이스의 제약은 대역폭 제약을 포함할 수 있다. 위의 예들 중 하나 이상에 부가적으로 또는 대안적으로, 방법은: 제1 서브셋의 각각의 비디오 플레이어를 정지 이미지로 대체하는 단계; 제1 서브셋의 각각의 비디오 플레이어에 추가적인 비디오 컨텐츠를 로드하는 단계; 및 정지 이미지는 점진적으로 사라지고 비디오 플레이어들의 제1 서브셋은 점진적으로 나타나는 애니메이션을 디스플레이하는 단계를 더 포함할 수 있다.
개시된 예들이 첨부의 도면들을 참조하여 충분히 설명되었지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 다양한 변경들 및 수정들이 명백할 것이라는 것에 주목하여야 한다. 그러한 변경들 및 수정들은 첨부된 청구항들에 의해 정의되는 바와 같은 개시된 예들의 범주 내에 포함되는 것으로서 이해되어야 한다.

Claims (22)

  1. 전자 디바이스의 컴퓨터 구현 방법으로서,
    제1 크기 및 제1 비트레이트에서 제1 비디오를 디스플레이하는 단계 - 상기 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이용으로 이용 가능하며, 상기 제2 비트레이트는 상기 제1 비트레이트보다 낮음 - ; 및
    사용자 입력에 응답하여, 상기 제1 비디오를 상기 제1 크기로 디스플레이하는 동시에, 복수의 추가적인 비디오를 포함하는 채널 바를 디스플레이하고 상기 제1 비디오의 상기 비트레이트를 상기 제1 비트레이트로부터 상기 제2 비트레이트로 감소시키는 단계를 포함하는, 컴퓨터 구현 방법.
  2. 전자 디바이스의 컴퓨터 구현 방법으로서,
    제1 비트레이트에서 제1 비디오를 디스플레이하는 단계 - 상기 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이용으로 이용 가능하며, 상기 제2 비트레이트는 상기 제1 비트레이트보다 낮음 - ; 및
    사용자 입력에 응답하여, 복수의 추가적인 비디오를 포함하는 채널 바를 디스플레이하고 상기 제1 비디오의 상기 비트레이트를 상기 제1 비트레이트로부터 상기 제2 비트레이트로 감소시키는 단계를 포함하고,
    상기 복수의 추가적인 비디오는 제3 비트레이트에서 디스플레이되는 제2 비디오를 포함하고, 상기 제2 비디오는 제3 및 제4 비트레이트에서 디스플레이용으로 이용 가능하고, 상기 제4 비트레이트는 상기 제3 비트레이트보다 높으며, 상기 방법은:
    상기 제2 비디오를 브라우징하는 사용자 입력에 응답하여, 상기 제2 비디오를 상기 제4 비트레이트에서 로드하는 단계; 및
    상기 제2 비디오를 선택하는 사용자 입력에 응답하여, 상기 제2 비디오를 상기 제4 비트레이트에서 디스플레이하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  3. 제2항에 있어서, 상기 제2 비디오는 제5 비트레이트에서 디스플레이용으로 더 이용 가능하고, 상기 제5 비트레이트는 상기 제4 비트레이트보다 높으며, 상기 방법은:
    상기 제2 비디오를 선택하는 상기 사용자 입력에 응답하여, 상기 제2 비디오를 상기 제5 비트레이트에서 로드하는 단계;
    상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계; 및
    상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 것에 응답하여, 상기 제2 비디오를 상기 제5 비트레이트에서 디스플레이하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  4. 제3항에 있어서, 상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 상기 제2 비디오가 중단 없이 상기 제5 비트레이트에서 디스플레이될 수 있도록 충분한 상기 제2 비디오가 상기 제5 비트레이트에서 로드되었다고 결정하는 단계를 포함하는, 컴퓨터 구현 방법.
  5. 제3항에 있어서, 상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 상기 전자 디바이스의 대역폭 능력에 기초하는, 컴퓨터 구현 방법.
  6. 제2항에 있어서, 상기 복수의 추가적인 비디오는 제2 비디오를 포함하고, 상기 복수의 추가적인 비디오를 디스플레이하는 단계는 상기 제2 비디오와 연관된 오디오를 로드하는 단계를 포함하지 않으며, 상기 방법은
    상기 제2 비디오를 브라우징하는 사용자 입력에 응답하여, 상기 제2 비디오와 연관된 오디오를 로드하는 단계를 더 포함하는, 컴퓨터 구현 방법.
  7. 제1항에 있어서, 상기 제1 및 제2 비트레이트 각각은 해상도 및 품질 레벨 중 하나 이상과 연관되는, 컴퓨터 구현 방법.
  8. 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 비일시적 컴퓨터 판독가능 저장 매체는 실행될 때 전자 디바이스의 방법을 수행하는 명령어들을 포함하고, 상기 방법은:
    제1 크기 및 제1 비트레이트에서 제1 비디오를 디스플레이하는 단계 - 상기 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이용으로 이용 가능하며, 상기 제2 비트레이트는 상기 제1 비트레이트보다 낮음 - ; 및
    사용자 입력에 응답하여, 상기 제1 비디오를 상기 제1 크기로 디스플레이하는 동시에, 복수의 추가적인 비디오를 포함하는 채널 바를 디스플레이하고 상기 제1 비디오의 상기 비트레이트를 상기 제1 비트레이트로부터 상기 제2 비트레이트로 감소시키는 단계를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  9. 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 비일시적 컴퓨터 판독가능 저장 매체는 실행될 때 전자 디바이스의 방법을 수행하는 명령어들을 포함하고, 상기 방법은:
    제1 비트레이트에서 제1 비디오를 디스플레이하는 단계 - 상기 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이용으로 이용 가능하며, 상기 제2 비트레이트는 상기 제1 비트레이트보다 낮음 - ; 및
    사용자 입력에 응답하여, 복수의 추가적인 비디오를 포함하는 채널 바를 디스플레이하고 상기 제1 비디오의 상기 비트레이트를 상기 제1 비트레이트로부터 상기 제2 비트레이트로 감소시키는 단계를 포함하고,
    상기 복수의 추가적인 비디오는 제3 비트레이트에서 디스플레이되는 제2 비디오를 포함하고, 상기 제2 비디오는 제3 및 제4 비트레이트에서 디스플레이용으로 이용 가능하고, 상기 제4 비트레이트는 상기 제3 비트레이트보다 높으며, 상기 방법은:
    상기 제2 비디오를 브라우징하는 사용자 입력에 응답하여, 상기 제2 비디오를 상기 제4 비트레이트에서 로드하는 단계; 및
    상기 제2 비디오를 선택하는 사용자 입력에 응답하여, 상기 제2 비디오를 상기 제4 비트레이트에서 디스플레이하는 단계를 더 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  10. 제9항에 있어서, 상기 제2 비디오는 제5 비트레이트에서 디스플레이용으로 더 이용 가능하고, 상기 제5 비트레이트는 상기 제4 비트레이트보다 높으며, 상기 방법은:
    상기 제2 비디오를 선택하는 상기 사용자 입력에 응답하여, 상기 제2 비디오를 상기 제5 비트레이트에서 로드하는 단계;
    상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계; 및
    상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 것에 응답하여, 상기 제2 비디오를 상기 제5 비트레이트에서 디스플레이하는 단계를 더 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  11. 제10항에 있어서, 상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 상기 제2 비디오가 상기 제5 비트레이트에서 중단 없이 디스플레이될 수 있도록 충분한 상기 제2 비디오가 상기 제5 비트레이트에서 로드되었다고 결정하는 단계를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  12. 제10항에 있어서, 상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 상기 전자 디바이스의 대역폭 능력에 기초하는, 비일시적 컴퓨터 판독가능 저장 매체.
  13. 제9항에 있어서, 상기 복수의 추가적인 비디오는 제2 비디오를 포함하고, 상기 복수의 추가적인 비디오를 디스플레이하는 단계는 상기 제2 비디오와 연관된 오디오를 로드하는 단계를 포함하지 않으며, 상기 방법은:
    상기 제2 비디오를 브라우징하는 사용자 입력에 응답하여, 상기 제2 비디오와 연관된 오디오를 로드하는 단계를 더 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  14. 제8항에 있어서, 상기 제1 및 제2 비트레이트 각각은 해상도 및 품질 레벨 중 하나 이상과 연관되는, 비일시적 컴퓨터 판독가능 저장 매체.
  15. 전자 디바이스로서,
    명령어들을 실행하기 위한 프로세서; 및
    명령어들을 저장하기 위해 상기 프로세서와 결합되는 메모리를 포함하며, 상기 명령어들은 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, API(application programming interface) 호출 컴포넌트가 소정 방법을 수행하도록 허용하는 API를 생성하기 위한 동작들을 수행하게 하며, 상기 방법은:
    제1 크기 및 제1 비트레이트에서 제1 비디오를 디스플레이하는 단계 - 상기 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이용으로 이용 가능하며, 상기 제2 비트레이트는 상기 제1 비트레이트보다 낮음 -; 및
    사용자 입력에 응답하여, 상기 제1 비디오를 상기 제1 크기로 디스플레이하는 동시에, 복수의 추가적인 비디오를 포함하는 채널 바를 디스플레이하고 상기 제1 비디오의 상기 비트레이트를 상기 제1 비트레이트로부터 상기 제2 비트레이트로 감소시키는 단계를 포함하는, 전자 디바이스.
  16. 전자 디바이스로서,
    명령어들을 실행하기 위한 프로세서; 및
    명령어들을 저장하기 위해 상기 프로세서와 결합되는 메모리를 포함하며, 상기 명령어들은 상기 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, API(application programming interface) 호출 컴포넌트가 소정 방법을 수행하도록 허용하는 API를 생성하기 위한 동작들을 수행하게 하며, 상기 방법은:
    제1 비트레이트에서 제1 비디오를 디스플레이하는 단계 - 상기 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이용으로 이용 가능하며, 상기 제2 비트레이트는 상기 제1 비트레이트보다 낮음 -; 및
    사용자 입력에 응답하여, 복수의 추가적인 비디오를 포함하는 채널 바를 디스플레이하고 상기 제1 비디오의 상기 비트레이트를 상기 제1 비트레이트로부터 상기 제2 비트레이트로 감소시키는 단계를 포함하고,
    상기 복수의 추가적인 비디오는 제3 비트레이트에서 디스플레이되는 제2 비디오를 포함하며, 상기 제2 비디오는 제3 및 제4 비트레이트에서 디스플레이용으로 이용 가능하고, 상기 제4 비트레이트는 상기 제3 비트레이트보다 높으며, 상기 방법은:
    상기 제2 비디오를 브라우징하는 사용자 입력에 응답하여, 상기 제2 비디오를 상기 제4 비트레이트에서 로드하는 단계; 및
    상기 제2 비디오를 선택하는 사용자 입력에 응답하여, 상기 제2 비디오를 상기 제4 비트레이트에서 디스플레이하는 단계를 더 포함하는, 전자 디바이스.
  17. 제16항에 있어서, 상기 제2 비디오는 제5 비트레이트에서 디스플레이용으로 더 이용 가능하고, 상기 제5 비트레이트는 상기 제4 비트레이트보다 높으며, 상기 방법은:
    상기 제2 비디오를 선택하는 상기 사용자 입력에 응답하여, 상기 제2 비디오를 상기 제5 비트레이트에서 로드하는 단계;
    상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계; 및
    상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 것에 응답하여, 상기 제2 비디오를 상기 제5 비트레이트에서 디스플레이하는 단계를 더 포함하는, 전자 디바이스.
  18. 제17항에 있어서, 상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 상기 제2 비디오가 중단 없이 상기 제5 비트레이트에서 디스플레이될 수 있도록 충분한 상기 제2 비디오가 상기 제5 비트레이트에서 로드되었다고 결정하는 단계를 포함하는, 전자 디바이스.
  19. 제17항에 있어서, 상기 제2 비디오가 상기 제5 비트레이트에서 디스플레이될 수 있다고 결정하는 단계는 상기 전자 디바이스의 대역폭 능력에 기초하는, 전자 디바이스.
  20. 제16항에 있어서, 상기 복수의 추가적인 비디오는 제2 비디오를 포함하고, 상기 복수의 추가적인 비디오를 디스플레이하는 단계는 상기 제2 비디오와 연관된 오디오를 로드하는 단계를 포함하지 않으며, 상기 방법은:
    상기 제2 비디오를 브라우징하는 사용자 입력에 응답하여, 상기 제2 비디오와 연관된 오디오를 로드하는 단계를 더 포함하는, 전자 디바이스.
  21. 제15항에 있어서, 상기 제1 및 제2 비트레이트 각각은 해상도 및 품질 레벨 중 하나 이상과 연관되는, 전자 디바이스.
  22. 전자 디바이스의 컴퓨터 구현 방법으로서,
    제1 크기 및 제1 비트레이트에서 제1 비디오를 디스플레이하는 단계 - 상기 제1 비디오는 제1 및 제2 비트레이트에서 디스플레이용으로 이용 가능하며, 상기 제2 비트레이트는 상기 제1 비트레이트보다 낮음 - ; 및
    사용자 입력에 응답하여, 상기 제1 비디오를 상기 제1 크기로 디스플레이하는 동시에, 복수의 추가적인 비디오를 디스플레이하고 상기 제1 비디오의 상기 비트레이트를 상기 제1 비트레이트로부터 상기 제2 비트레이트로 감소시키는 단계를 포함하는, 컴퓨터 구현 방법.
KR1020177005545A 2014-09-24 2014-09-24 채널 바의 관리 KR101973045B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/057272 WO2016048308A1 (en) 2014-09-24 2014-09-24 Management of the channel bar

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020197011552A Division KR102006598B1 (ko) 2014-09-24 2014-09-24 채널 바의 관리

Publications (2)

Publication Number Publication Date
KR20170040293A KR20170040293A (ko) 2017-04-12
KR101973045B1 true KR101973045B1 (ko) 2019-04-26

Family

ID=51845490

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197011552A KR102006598B1 (ko) 2014-09-24 2014-09-24 채널 바의 관리
KR1020177005545A KR101973045B1 (ko) 2014-09-24 2014-09-24 채널 바의 관리

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197011552A KR102006598B1 (ko) 2014-09-24 2014-09-24 채널 바의 관리

Country Status (3)

Country Link
US (1) US10205985B2 (ko)
KR (2) KR102006598B1 (ko)
WO (1) WO2016048308A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9591339B1 (en) 2012-11-27 2017-03-07 Apple Inc. Agnostic media delivery system
US9774917B1 (en) 2012-12-10 2017-09-26 Apple Inc. Channel bar user interface
US10200761B1 (en) 2012-12-13 2019-02-05 Apple Inc. TV side bar user interface
US9532111B1 (en) 2012-12-18 2016-12-27 Apple Inc. Devices and method for providing remote control hints on a display
US10521188B1 (en) 2012-12-31 2019-12-31 Apple Inc. Multi-user TV user interface
CN106415475A (zh) 2014-06-24 2017-02-15 苹果公司 用于在用户界面中导航的列界面
DK201670582A1 (en) 2016-06-12 2018-01-02 Apple Inc Identifying applications on which content is available
DK201670581A1 (en) 2016-06-12 2018-01-08 Apple Inc Device-level authorization for viewing content
US11966560B2 (en) 2016-10-26 2024-04-23 Apple Inc. User interfaces for browsing content from multiple content applications on an electronic device
CN114297620A (zh) 2019-03-24 2022-04-08 苹果公司 用于媒体浏览应用程序的用户界面
US11445263B2 (en) 2019-03-24 2022-09-13 Apple Inc. User interfaces including selectable representations of content items
US11683565B2 (en) 2019-03-24 2023-06-20 Apple Inc. User interfaces for interacting with channels that provide content that plays in a media browsing application
WO2020198221A1 (en) 2019-03-24 2020-10-01 Apple Inc. User interfaces for viewing and accessing content on an electronic device
WO2020243645A1 (en) 2019-05-31 2020-12-03 Apple Inc. User interfaces for a podcast browsing and playback application
US11863837B2 (en) 2019-05-31 2024-01-02 Apple Inc. Notification of augmented reality content on an electronic device
US11843838B2 (en) 2020-03-24 2023-12-12 Apple Inc. User interfaces for accessing episodes of a content series
US11899895B2 (en) 2020-06-21 2024-02-13 Apple Inc. User interfaces for setting up an electronic device
US11720229B2 (en) 2020-12-07 2023-08-08 Apple Inc. User interfaces for browsing and presenting content
US11934640B2 (en) 2021-01-29 2024-03-19 Apple Inc. User interfaces for record labels

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5483261A (en) 1992-02-14 1996-01-09 Itu Research, Inc. Graphical input controller and method with rear screen image detection
US5880411A (en) 1992-06-08 1999-03-09 Synaptics, Incorporated Object position detector with edge motion feature and gesture recognition
US5488204A (en) 1992-06-08 1996-01-30 Synaptics, Incorporated Paintbrush stylus for capacitive touch sensor pad
US8850477B2 (en) 1995-10-02 2014-09-30 Starsight Telecast, Inc. Systems and methods for linking television viewers with advertisers and broadcasters
US5825352A (en) 1996-01-04 1998-10-20 Logitech, Inc. Multiple fingers contact sensing method for emulating mouse buttons and mouse operations on a touch sensor pad
US5835079A (en) 1996-06-13 1998-11-10 International Business Machines Corporation Virtual pointing device for touchscreens
US5886690A (en) 1996-10-31 1999-03-23 Uniden America Corporation Program schedule user interface
US6028600A (en) 1997-06-02 2000-02-22 Sony Corporation Rotary menu wheel interface
US20030088872A1 (en) 1997-07-03 2003-05-08 Nds Limited Advanced television system
US6310610B1 (en) 1997-12-04 2001-10-30 Nortel Networks Limited Intelligent touch display
EP1717684A3 (en) 1998-01-26 2008-01-23 Fingerworks, Inc. Method and apparatus for integrating manual input
US8479122B2 (en) 2004-07-30 2013-07-02 Apple Inc. Gestures for touch sensitive input devices
US7663607B2 (en) 2004-05-06 2010-02-16 Apple Inc. Multipoint touchscreen
CN1169373C (zh) * 1998-02-03 2004-09-29 皇家菲利浦电子有限公司 编码图像序列的切换方法及相应装置
US6188391B1 (en) 1998-07-09 2001-02-13 Synaptics, Inc. Two-layer capacitive touchpad and method of making same
JP4542637B2 (ja) 1998-11-25 2010-09-15 セイコーエプソン株式会社 携帯情報機器及び情報記憶媒体
US6677932B1 (en) 2001-01-28 2004-01-13 Finger Works, Inc. System and method for recognizing touch typing under limited tactile feedback conditions
US6570557B1 (en) 2001-02-10 2003-05-27 Finger Works, Inc. Multi-touch system and method for emulating modifier keys via fingertip chords
JP3800984B2 (ja) 2001-05-21 2006-07-26 ソニー株式会社 ユーザ入力装置
JP2003173237A (ja) 2001-09-28 2003-06-20 Ricoh Co Ltd 情報入出力システム、プログラム及び記憶媒体
US6690387B2 (en) 2001-12-28 2004-02-10 Koninklijke Philips Electronics N.V. Touch-screen image scrolling system and method
US11275405B2 (en) 2005-03-04 2022-03-15 Apple Inc. Multi-functional hand-held device
JP4674771B2 (ja) 2003-11-12 2011-04-20 トムソン ライセンシング メニューを構成する方法及び装置
US20060107304A1 (en) 2004-11-15 2006-05-18 Microsoft Corporation Data-driven media guide
KR100863046B1 (ko) 2007-03-09 2008-10-13 엘지전자 주식회사 방송채널정보 표시방법 및 이를 구현할 수 있는 방송수신용단말기
US8037493B2 (en) 2007-06-11 2011-10-11 Microsoft Corporation Modular remote control and user interfaces
US8752092B2 (en) 2008-06-27 2014-06-10 General Instrument Corporation Method and apparatus for providing low resolution images in a broadcast system
JP4675995B2 (ja) 2008-08-28 2011-04-27 株式会社東芝 表示処理装置、プログラムおよび表示処理方法
CN102461165A (zh) * 2009-06-24 2012-05-16 德耳塔维德约股份有限公司 用于动态视频电子节目指南的系统和方法
KR101281845B1 (ko) * 2009-12-02 2013-07-03 한국전자통신연구원 스케일러블 비디오 전송 단말 장치에 대한 비주얼 프로그램 가이드 장치 및 방법
FI20105105A0 (fi) 2010-02-04 2010-02-04 Axel Technologies Medialaitteen käyttöliittymä
US8291452B1 (en) * 2011-05-20 2012-10-16 Google Inc. Interface for watching a stream of videos
US8296783B1 (en) 2010-05-28 2012-10-23 Adobe Systems Incorporated Media player instance managed resource reduction
EP2596622B1 (en) * 2010-07-22 2023-06-28 Dolby Laboratories Licensing Corporation System, apparatus and methods for mapping between video ranges of image data and display
US9043800B2 (en) 2011-05-26 2015-05-26 Adobe Systems Incorporated Video player instance prioritization
WO2013149128A2 (en) * 2012-03-30 2013-10-03 United Video Properties, Inc. Systems and methods for adaptively transmitting media and advertising content
US9774917B1 (en) 2012-12-10 2017-09-26 Apple Inc. Channel bar user interface
US9719797B2 (en) * 2013-03-15 2017-08-01 Apple Inc. Voice and touch user interface
US20170300151A1 (en) 2014-09-24 2017-10-19 Apple Inc. Management of the channel bar

Also Published As

Publication number Publication date
KR20190044702A (ko) 2019-04-30
US20170339443A1 (en) 2017-11-23
KR20170040293A (ko) 2017-04-12
US10205985B2 (en) 2019-02-12
KR102006598B1 (ko) 2019-08-01
WO2016048308A1 (en) 2016-03-31

Similar Documents

Publication Publication Date Title
KR101973045B1 (ko) 채널 바의 관리
US20170300151A1 (en) Management of the channel bar
US11487403B2 (en) Systems and methods for displaying notifications received from multiple applications
US10613701B2 (en) Customizable bladed applications
US10156980B2 (en) Toggle gesture during drag gesture
US10353661B2 (en) Method for sharing screen between devices and device using the same
KR101961860B1 (ko) 사용자 단말 장치 및 그 제어 방법
US10203815B2 (en) Application-based touch sensitivity
US20140136987A1 (en) Generation of a user interface based on contacts
US20140173747A1 (en) Disabling access to applications and content in a privacy mode
US10222975B2 (en) Single contact scaling gesture
AU2012268312A1 (en) Systems and methods for displaying notifications received from multiple applications
KR20140033561A (ko) 데이터 표시 방법 및 장치
WO2019032185A1 (en) TRANSITION BETWEEN GRAPHICAL INTERFACE ELEMENT MODALITIES BASED ON COMMON DATA SETS AND USER INPUT CHARACTERISTICS
US20150134492A1 (en) Coordinated image manipulation
WO2017113551A1 (en) System and method for operating system of mobile device
US9600172B2 (en) Pull down navigation mode
US20140267438A1 (en) Scaling an image having text
US20130328887A1 (en) Methods and systems for hosting a portion of a user interface and synchronizing animation between processes
WO2019022834A1 (en) KEYBOARD ON PROGRAMMABLE MULTI-KEY SCREEN
KR20160045478A (ko) 디스플레이 장치 및 그 제어 방법

Legal Events

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