U.S. patent application number 14/986491 was filed with the patent office on 2017-07-06 for systems and methods for enabling transitions between items of content.
This patent application is currently assigned to OpenTV, Inc.. The applicant listed for this patent is OpenTV, Inc.. Invention is credited to Crx Chai, Laurent Demesmaeker, Alex Fishman.
Application Number | 20170195736 14/986491 |
Document ID | / |
Family ID | 57851336 |
Filed Date | 2017-07-06 |
United States Patent
Application |
20170195736 |
Kind Code |
A1 |
Chai; Crx ; et al. |
July 6, 2017 |
SYSTEMS AND METHODS FOR ENABLING TRANSITIONS BETWEEN ITEMS OF
CONTENT
Abstract
A computing device for facilitating access to items of content
includes is configured to enable communication with a companion
device. A companion device includes a user interface including a
touch panel. The computing device is configured to determine
whether touch event data received from a companion device
corresponds to a particular gesture. The computing device causes a
guide to be presented on the display, upon determining that the
received touch event data corresponds to a swipe gesture, and
causes a transition from the selected item of content to another
item of content, upon determining that the received touch event
data corresponds to a perpendicular swipe gesture.
Inventors: |
Chai; Crx; (Oakland, CA)
; Fishman; Alex; (San Francisco, CA) ;
Demesmaeker; Laurent; (San Anselmo, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
OpenTV, Inc. |
San Francisco |
CA |
US |
|
|
Assignee: |
OpenTV, Inc.
San Francisco
CA
|
Family ID: |
57851336 |
Appl. No.: |
14/986491 |
Filed: |
December 31, 2015 |
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 3/04817 20130101;
H04N 21/4622 20130101; H04N 21/4316 20130101; G06F 3/04886
20130101; G06F 3/04845 20130101; H04N 21/4383 20130101; H04N
21/42224 20130101; H04N 21/47205 20130101; G06F 3/04883 20130101;
H04N 21/4821 20130101 |
International
Class: |
H04N 21/482 20060101
H04N021/482; H04N 21/472 20060101 H04N021/472; H04N 21/438 20060101
H04N021/438; H04N 21/431 20060101 H04N021/431; H04N 21/422 20060101
H04N021/422; G06F 3/0488 20060101 G06F003/0488; H04N 21/462
20060101 H04N021/462 |
Claims
1. A method of facilitating access to items of content, the method
comprising: causing a video presentation for a selected item of
content to be rendered on a display; receiving touch event data
from a companion device; determining the touch event data
corresponds to a vertical swipe gesture; causing a guide associated
with an ordered set of items of content to be presented on the
display in response to the vertical swipe gesture, wherein
presenting the guide on the display includes rendering an image on
the display for each item of content within a subset of the ordered
set of items of content, wherein the subset is updated in response
to subsequently received touch event data; and caching images
associated with items of content in the ordered set of items of
content based on the likelihood that subsequently received touch
event data will cause the image to be rendered on the display.
2. The method of claim 1, wherein causing a video presentation for
a selected item of content to be rendered on the display includes
causing a full screen video presentation for the selected item of
content to be rendered on the display, and wherein causing a guide
to be presented on the display includes causing a reduced size
video presentation to be rendered on the display.
3. (canceled)
4. The method of claim 1, wherein one of the items of content
within the subset is selected, and further comprising changing the
selected item of content upon receiving a directional click
activation.
5. (canceled)
6. The method of claim 1, wherein causing a guide to be presented
on the display includes causing a dynamic guide to be presented on
the display, upon determining that the received touch event data
corresponds to a vertical swipe gesture having a first direction
and causing an on now guide to be presented on the display, upon
determining that the received touch event data corresponds to a
vertical swipe gesture having a direction opposing the first
direction.
7. The method of claim 6, wherein a dynamic guide includes trending
items of content.
8. The method of claim 6, wherein an on now guide includes event
based items of content.
9-15. (canceled)
16. A device for facilitating access to items of content
comprising: an interface configured to enable communication with a
companion device; and one or more processors configured to: cause a
video presentation for a selected item of content to be rendered on
a display; determine touch event data received from a companion
device corresponds to a vertical swipe gesture; cause a guide
associated with an ordered set of items of content to be presented
on the display in response to the vertical swipe gesture, wherein
presenting the guide on the display includes rendering an image on
the display for each item of content within a subset of the ordered
set of items of content, wherein the subset is updated in response
to subsequently received touch event data; and cache images
associated with items of content in the ordered set of items of
content based on the likelihood that subsequently received touch
event data will cause the image to be rendered on the display.
17-18. (canceled)
19. The device of claim 16, wherein one of the items of content
within the subset is selected and wherein the one or more
processors are further configured to receive a directional click
activation from the companion device and change the active tile,
upon receiving the directional click activation
20. The device of claim 19, wherein the one or more processors are
further configured to send an indication of the subset of items of
content to the companion device, and change the selected item of
content to an item of content upon receiving touch event data from
the companion device that corresponds to activation of an icon
associated with an item of content.
21. The method of claim 1, wherein the likelihood that subsequently
received touch event data will cause an image to be rendered on the
display is based on the likelihood that a particular user will
perform a particular gesture.
22. The method of claim 21, wherein the likelihood that a
particular user will perform a particular gesture is based on
information included in a user profile.
23. The method of claim 22, wherein information included in the
user profile includes past behavior of the user.
24. The method of claim 22, wherein information included in the
user profile includes information regarding whether the user is
left hand dominant or right hand dominant.
25. The method of claim 1, wherein updating the subset in response
to subsequently received touch event data includes causing lower
numbered items of content included in the ordered set of items of
content to be included in the subset, upon determining that
subsequently received touch event data corresponds to a horizontal
swipe gesture having a first direction and causing higher numbered
items of content included in the ordered set of items of content to
be included in the subset, upon determining that subsequently
received touch event data corresponds to a horizontal swipe gesture
having a direction opposing the first direction.
26. The method of claim 25, wherein caching images associated with
items of content in the ordered set of items of content based on
the likelihood that subsequently received touch event data will
cause the image to be rendered on the display includes caching
images based on the likelihood that subsequently received touch
event data corresponds to the horizontal swipe gesture having a
particular direction.
27. The device of claim 26, wherein the likelihood that
subsequently received touch event data corresponds to the
horizontal swipe gesture having a particular direction is based on
whether the user is left hand dominant or right hand dominant.
28. The device of claim 26, wherein the likelihood that
subsequently received touch event data corresponds to a horizontal
swipe gesture having a particular direction is based on past user
behavior.
29. The device of claim 16, wherein updating the subset in response
to subsequently received touch event data includes causing lower
numbered items of content included in the ordered set of items of
content to be included in the subset, upon determining that
subsequently received touch event data corresponds to a horizontal
swipe gesture having a first direction and causing higher numbered
items of content included in the ordered set of items of content to
be included in the subset, upon determining that subsequently
received touch event data corresponds to a horizontal swipe gesture
having a direction opposing the first direction; and wherein
caching images associated with items of content in the ordered set
of items of content based on the likelihood that subsequently
received touch event data will cause the image to be rendered on
the display includes caching images based on the likelihood that
subsequently received touch event data corresponds to a horizontal
swipe gesture having a particular direction.
30. The device of claim 29, wherein the likelihood that
subsequently received touch event data corresponds to the
horizontal swipe gesture having a particular direction is based on
whether a particular user is left hand dominant or right hand
dominant.
31. The device of claim 29, wherein the likelihood that
subsequently received touch event data corresponds to the
horizontal swipe gesture having a particular direction is based on
past user behavior.
Description
TECHNICAL FIELD
[0001] The present disclosure relates to the field of interactive
digital media and graphical user interfaces.
BACKGROUND
[0002] Digital media playback capabilities may be incorporated into
a wide range of devices, including digital televisions, including
so-called "smart" televisions, set-top boxes, laptop or desktop
computers, tablet computers, e-book readers, digital recording
devices, digital media players, video gaming devices, digital
cameras, cellular phones, including so-called "smart" phones, and
dedicated video streaming devices. Digital media content may
originate from a plurality of sources including, for example, local
storage devices, over-the-air television providers, satellite
television providers, cable television providers, and online media
services, including, online media streaming and downloading
services. Further, devices with digital media playback capabilities
may provide a user with interfaces, including graphical user
interfaces (GUIs), that enable the user to select an item of
content to access.
[0003] Due to the wide range of content users may access on devices
with digital media playback capabilities, traditional interfaces
and techniques for organizing, sorting, and displaying available
items of content may be less than ideal.
SUMMARY
[0004] The following brief summary is not intended to include all
features and aspects of the present invention, nor does it imply
that the invention must include all features and aspects discussed
in this summary The present disclosure relates to techniques for
enabling users to access digital media content and more
specifically describes techniques and tools for enabling a user to
efficiently access items of content. It should be noted that as
used herein the term item of content may at least include
individual items of digital content (e.g., video files, music
files, and digital images), and collections of individual items of
digital content (e.g., a collection of video files, including, for
example, a television series, an album including music files, and
an album of digital images). Further, in some examples, items of
content may refer to applications that, upon execution, enable a
user to access digital content through execution of the
application. In some examples, the techniques described herein may
be implemented in a device with digital media playback
capabilities, including, for example, set-top boxes, televisions,
laptop or desktop computers, gaming consoles, dedicated streaming
devices, and/or an associated companion device, including, for
example, remote controllers, tablet computers, and smart phones. It
should be noted that in some instances the techniques described
herein may generally be applicable to devices capable of displaying
graphical user interfaces and causing digital content to be
rendered on a display device.
[0005] According to one example of the disclosure, a method of
facilitating access to items of content comprises causing a video
presentation for a selected item of content to be rendered on a
display, determining whether touch event data corresponds to a
particular gesture, causing a guide to be presented on the display,
upon determining that the touch event data corresponds to a
vertical swipe gesture, and causing a transition from the selected
item of content to another item of content, upon determining that
the touch event data corresponds to a horizontal swipe gesture.
[0006] According to another example of the disclosure, a device for
facilitating access to items of content comprises one or more
processors configured to cause a video presentation for a selected
item of content to be rendered on a display, determine whether
touch event data corresponds to a particular gesture, cause a guide
to be presented on the display, upon determining that the touch
event data corresponds to a vertical swipe gesture, and cause a
transition from the selected item of content to another item of
content, upon determining that the touch event data corresponds to
a horizontal swipe gesture.
[0007] According to another example of the disclosure, an apparatus
for facilitating access to items of content comprises means for
causing a video presentation for a selected item of content to be
rendered on a display, means for determining whether touch event
data corresponds to a particular gesture, means for causing a guide
to be presented on the display, upon determining that the touch
event data corresponds to a vertical swipe gesture, and means for
causing a transition from the selected item of content to another
item of content, upon determining that the touch event data
corresponds to a horizontal swipe gesture.
[0008] According to another example of the disclosure, a
non-transitory computer-readable storage medium has instructions
stored thereon that upon execution cause one or more processors of
a device to cause a video presentation for a selected item of
content to be rendered on a display, determine whether touch event
data corresponds to a particular gesture, cause a guide to be
presented on the display, upon determining that the touch event
data corresponds to a vertical swipe gesture, and cause a
transition from the selected item of content to another item of
content, upon determining that the touch event data corresponds to
a horizontal swipe gesture.
[0009] The details of one or more examples are set forth in the
accompanying drawings and the description below. Other features,
objects, and advantages will be apparent from the description and
drawings, and from the claims.
BRIEF DESCRIPTION OF DRAWINGS
[0010] FIG. 1 is block diagram illustrating an example of a system
that may implement one or more techniques of this disclosure.
[0011] FIG. 2 is a block diagram illustrating an example of a
computing device that may implement one or more techniques of this
disclosure.
[0012] FIG. 3 is a block diagram illustrating an example of a
companion device that may implement one or more techniques of this
disclosure.
[0013] FIG. 4 is a block diagram illustrating an example of a
companion device that may implement one or more techniques of this
disclosure.
[0014] FIG. 5 is a conceptual diagram illustrating an example of a
user interface that may implement one or more techniques of this
disclosure.
[0015] FIG. 6 is a conceptual diagram illustrating an example of a
user interface that may implement one or more techniques of this
disclosure.
[0016] FIG. 7A is a conceptual diagram illustrating an example of a
user interface that may implement one or more techniques of this
disclosure.
[0017] FIG. 7B-7C are conceptual diagrams illustrating exploded
views of a mechanical assembly of a companion device that may
include the example user interface illustrated in FIG. 7A.
[0018] FIGS. 8A-8D are conceptual diagrams illustrating example
user inputs that may be received by the example user interface
illustrated in FIG. 7A according to one or more techniques of this
disclosure.
[0019] FIGS. 9A-9D are conceptual diagrams illustrating an example
graphical user interface that may implement one or more techniques
of this disclosure.
[0020] FIG. 10 is a conceptual diagram illustrating an example of a
transition on a display device in response to user input that may
be received by an example user interface according to one or more
techniques of this disclosure.
[0021] FIG. 11 is a conceptual diagram illustrating an example of a
transition on a display device in response to user input that may
be received by an example user interface according to one or more
techniques of this disclosure.
[0022] FIG. 12 is a conceptual diagram illustrating an example
graphical user interface that may implement one or more techniques
of this disclosure.
[0023] FIG. 13 is a conceptual diagram illustrating an example of
multi-level gestures according to one or more techniques of this
disclosure.
[0024] FIGS. 14A-14C are conceptual diagrams illustrating an
example graphical user interface that may implement one or more
techniques of this disclosure.
[0025] FIG. 15 is a conceptual diagram illustrating an example of
transitions on a display device in response to user input that may
be received by an example user interface according to one or more
techniques of this disclosure.
[0026] FIGS. 16A-16F are conceptual diagrams illustrating an
example graphical user interface that may implement one or more
techniques of this disclosure.
[0027] FIGS. 17A-17B are conceptual diagrams illustrating an
example of a transition on a display device in response to user
input that may be received by an example user interface according
to one or more techniques of this disclosure.
[0028] FIGS. 18A-18B are conceptual diagrams illustrating an
example graphical user interface that may implement one or more
techniques of this disclosure.
[0029] FIGS. 19A-19E is a flowchart illustrating an example method
of selecting items of content according to one or more techniques
of this disclosure.
[0030] FIG. 20 is a flowchart illustrating an example of a
background process according to one or more techniques of this
disclosure.
DETAILED DESCRIPTION
[0031] Described herein are systems and methods for enabling a user
to access items of content. Some embodiments extend to a
machine-readable medium embodying instructions which, when executed
by a machine, cause the machine to perform any one or more of the
methodologies described herein. Other features will be apparent
from the accompanying drawings and from the detailed description
that follows. Examples merely typify possible variations. Unless
explicitly stated otherwise, components and functions are optional
and may be combined or subdivided, and operations may vary in
sequence or may be combined or subdivided. In the following
description, for purposes of explanation, numerous specific details
are set forth to provide a thorough understanding of example
embodiments. It will be evident to one skilled in the art, however,
that the present subject matter may be practiced without these
specific details.
[0032] Devices with digital media playback capabilities may enable
a user to access items of content from diverse sources. For
example, devices with digital media playback capabilities,
including, for example, televisions, set-top boxes, laptop or
desktop computers, tablet computers, video gaming devices, smart
phones, and dedicated video streaming devices may enable a user
thereof to access digital media content through one or more digital
media content services. Examples of digital media content services
include streaming services, television services, and combinations
thereof. Current commercial examples of streaming services include
streaming services available from Hulu.RTM., LLC and Netflix.RTM.,
Inc. Current commercial examples of combinations of television and
streaming services include services available from the Comcast.RTM.
Corporation, DirecTV.RTM., LLC and Home Box Office.RTM., Inc.
[0033] Devices with digital media playback capabilities, including,
for example, televisions, set-top boxes, and dedicated video
streaming devices may include a push-button remote controller.
Push-button remote controllers enable a user to select an item of
content by activating a sequence of buttons, for example, keying a
number associated with a television channel. Further, devices with
digital media playback capabilities may be configured to provide
users thereof with graphical user interfaces that enable the
selection of content. For example, a set-top box may be configured
to provide a user with an electronic programming guide (EPG), where
the electronic programming guide displays items of content in a
grid. That is, an EPG may display items of content in a grid
according to television networks and time slots. A push-button
remote controller may enable a user to select a particular item of
content from within a grid for viewing. Further, some devices with
digital media playback capabilities may enable a user to select
items of content using a secondary computing device (e.g., a smart
phone, tablet, etc.) in communication with the device. As used
herein, a companion device may refer to any device configured to
communicate with a computing device and may include, in some
examples, a device including a user interface (e.g., push buttons,
a touch screen, etc.) in communication with a device with digital
media presentation capabilities.
[0034] Devices with digital media playback capabilities may enable
a user to access items of content from diverse sources. For
example, a single device with digital media capabilities may enable
a user to access digital media from a television service, through a
tuner, as well as from an online media streaming service, through a
network interface, thereby increasing the types and number of items
of content available to a user. Conventional user interfaces,
including traditional graphical user interfaces and/or traditional
push-button remote controllers may be less than ideal.
[0035] FIG. 1 is block diagram illustrating an example of a system
that may implement one or more techniques described in this
disclosure. System 100 may be configured to enable a user to access
items of content in accordance with the techniques described
herein. In the example illustrated in FIG. 1, system 100 includes
one or more computing devices 102A-102N, communications network
104, television service provider site 110, one or more media
service provider sites 118A-118N, webpage content distribution site
120, application distribution site 122, and companion device(s)
130. System 100 may include software modules operating on one or
more servers. Software modules may be stored in a memory and
executed a processor. Servers may include one or more processors
and a plurality of internal and/or external memory devices.
Examples of memory devices include file servers, file transfer
protocol (FTP) servers, network attached storage (NAS) devices,
local disk drives, or any other type of device or storage medium
capable of storing data. Storage media may include optical discs,
including, e.g., Blu-ray discs, DVDs, and CD-ROMs, flash memory, or
any other suitable digital storage media. When the techniques
described herein are implemented partially in software, a device
may store instructions for the software in a suitable,
non-transitory computer-readable medium and execute the
instructions in hardware using one or more processors.
[0036] System 100 represents an example of a system that may be
configured to allow digital content, such as, for example, music,
videos, including movies and television programming, images,
webpages, messages, voice communications, and applications, to be
distributed to and accessed by a plurality of computing devices,
such as computing devices 102A-102N. In the example illustrated in
FIG. 1, computing devices 102A-102N may include any device
configured to transmit data to and/or receive data from
communication network 104. For example, computing devices 102A-102N
may be equipped for wired and/or wireless communications and may
include set-top boxes, digital video recorders, televisions,
desktop, laptop, or tablet computers, gaming consoles, mobile
devices, including, for example, "smart" phones, cellular
telephones, and personal gaming devices. It should be noted that
although example system 100 is illustrated as having distinct
sites, such an illustration is for descriptive purposes and does
not limit system 100 to a particular physical architecture.
Functions of system 100 and sites included therein may be realized
using any combination of hardware, firmware and/or software
implementations.
[0037] Communications network 104 may comprise any combination of
wireless and/or wired communication media. Communications network
104 may include coaxial cables, fiber optic cables, twisted pair
cables, wireless transmitters and receivers, routers, switches,
repeaters, base stations, or any other equipment that may be useful
to facilitate communications between various devices and sites.
Communications network 104 may operate according to a combination
of one or more telecommunication protocols. Telecommunications
protocols may include proprietary aspects and/or may include
standardized telecommunication protocols. Examples of standardized
telecommunications protocols include Digital Video Broadcasting
(DVB) standards, Advanced Television Systems Committee (ATSC)
standards, including the so-called ATSC 3.0 suite of standards
currently under development, Integrated Services Digital
Broadcasting (ISDB) standards, Digital Terrestrial Multimedia
Broadcast (DTMB), Digital Multimedia Broadcasting (DMB), Data Over
Cable Service Interface Specification (DOCSIS) standards, Global
System Mobile Communications (GSM) standards, code division
multiple access (CDMA) standards, 3rd Generation Partnership
Project (3GPP) standards, European Telecommunications Standards
Institute (ETSI) standards, Internet Protocol (IP) standards,
Wireless Application Protocol (WAP) standards, and IEEE standards,
such as, for example, one or more of standards included in the IEEE
802 family of standards.
[0038] As illustrated in FIG. 1, networks of different types may be
defined within communications network 104. Networks may be defined
according to physical and/or logical aspects. For example, networks
that share the same physical infrastructure (e.g., coaxial cables)
may be distinguished based on a primary service type (e.g., webpage
access or television service) or communications protocols (e.g.,
IP/TCP or MPEG-TS). In the example illustrated in FIG. 1,
communications network 104 includes television provider network 106
and public network 108. It should be noted that although television
provider network 106 and public network 108 are illustrated as
distinct, television provider network 106 and public network 108
may share physical and/or logical aspects.
[0039] Television provider network 106 is an example of a network
configured to provide a user with television services. For example,
television provider network 106 may include public over-the-air
television networks, public or subscription-based satellite
television service provider networks, and public or
subscription-based cable television provider networks. It should be
noted that although in some examples television provider network
106 may primarily be used to provide television services,
television provider network 106 may also provide other types of
data and services according to any combination of the
telecommunication protocols described herein.
[0040] Public network 108 is an example of a packet-based network,
such as, a local area network, a wide-area network, or a global
network, such as the Internet, configured to provide a user with
World Wide Web based services. Public network 108 may be configured
to operate according to Internet Protocol (IP) standards. It should
be noted that although in some examples public network 108 may
primarily be used to provide access to hypertext web pages, public
network 108 may also provide other types of media content according
to any combination of the telecommunication protocol described
herein.
[0041] Referring again to FIG. 1, television service provider site
110 may be configured to provide computing devices 102A-102N with
television service. For example, television service provider site
110 may include a public broadcast station, a cable television
provider, or a satellite television provider and may be configured
to provide television services to analog and/or digital televisions
and set-top boxes. In the example illustrated in FIG. 1, television
service provider site 110 includes on air distribution engine 112
and on demand engine 114. On air distribution engine 112 may be
configured to receive a plurality of on air feeds and distribute
the feeds to computing devices 102A-102N through television
provider network 106. For example, on air distribution engine 112
may be configured to receive one or more over-the-air television
events via a satellite uplink/downlink and distribute the
over-the-air television events to one or more users of a
subscription-based cable television service.
[0042] On demand engine 114 may be configured to access a library
of multimedia content and distribute multimedia content to one or
more of computing devices 102A-102N through television provider
network 106. For example, on demand engine 114 may access
multimedia content (e.g., music, movies, and TV shows) stored in
multimedia database 116A and provide a subscriber of a cable
television service with movies on a pay per view (PPV) basis. For
example, a user may purchase access to an item of content for a
limited period (e.g., 24 hour access to a movie for $4.99).
Multimedia database 116A may include storage devices configured to
store multimedia content. It should be noted that multimedia
content accessed through on demand engine 114 may also be located
at various sites within system 100 (e.g., peer-to-peer distribution
may be supported).
[0043] Media service provider sites 118A-118N represent examples of
multimedia service providers. Media service provider sites
118A-118N may be configured to access a library of multimedia
content and distribute multimedia content to one or more of
computing devices 102A-102N through public network 108. For
example, media service provider sites 118A-118N may access
multimedia (e.g., music, movies, and TV shows) stored in multimedia
databases 116B-116N and provide a user of a media service with
multimedia. Multimedia databases 116B-116N may include storage
devices configured to store multimedia content. In one example, a
media service provider site may be configured to provide content to
one or more of computing devices 102A-102N using the Internet
protocol suite. In some examples, a media service may be referred
to as a streaming service. Commercial examples of streaming
services are described above. As described above, television
provider network 106 and public network 108 may share physical and
logical aspects. Thus, content accessed by one or more of computing
devices 102A-102N from a media service provider site 118A-118N may
be transmitted through physical components of television provider
network 106. For example, a user of one of computing devices
102A-102N may access the Internet and multimedia content provided
by a media service through a cable modem connected to a coaxial
network maintained by a cable television provider.
[0044] Webpage content distribution site 120 represents an example
of a webpage service provider. Webpage content distribution site
120 may be configured to provide hypertext based content to one or
more of computing devices 102A-102N through public network 108. It
should be noted that hypertext based content may include audio and
video content. Hypertext content may be defined according to
programming languages, such as, for example, Hypertext Markup
Language (HTML), Dynamic HTML, and Extensible Markup Language
(XML). Examples of webpage content distribution sites include the
United States Patent and Trademark Office website. In some
examples, digital media services may be associated with a website
enabling a user to search for items of content accessible through
that particular service. Further, in some examples websites may
provide information with respect to items of content (e.g., plot
summaries, user reviews, etc.).
[0045] Application distribution site 122 represents an example of
an application distribution service. Application distribution site
122 may be configured to distribute developed software applications
to one or more of computing devices 102A-102N. In one example,
software applications may include games and programs operable on
computing devices. In other examples, software applications may be
configured to allow a computing device to access content provided
by a webpage content distribution site in manner specific to the
computing device. For example, software applications may be
configured to provide enhanced or reduced functionality of a
webpage to a mobile device or a set-top box. In one example, a
software application may enable a user to access a media service on
a particular device. For example, a software application may enable
a user to access a streaming service using a gaming console.
Further, software applications may be provided to a computing
device to enable the computing device to perform one or more of the
techniques described herein.
[0046] Software applications may be developed using a programming
language. Examples of programming languages include, Java.TM.,
Jini.TM., C, C++, Perl, UNIX Shell, Visual Basic, and Visual Basic
Script. In some examples, developers may write software
applications using a software development kit (SDK) provided by a
device manufacturer or a service provider. In the example where one
or more of computing devices 102A-102N are mobile devices,
application distribution site 122 may be maintained by a mobile
device manufacturer, a service provider, and/or a mobile device
operating system provider. In the example where one or more of
computing devices 102A-102N are set-top boxes, application
distribution site 122 may be maintained by a set-top box
manufacturer, a service provider, and/or an operating system
provider. In some examples, an application distribution site may be
referred to as an app store. Examples of current commercial
application distribution sites include sites maintained by
Google.RTM., Inc. and Apple.RTM., Inc.
[0047] Referring again to FIG. 1, in addition to being configured
to receive digital media content from communications network 104,
computing devices 102A-102N may be configured to communicate with
companion device(s) 130 either directly or through communications
network 104. As used herein, a companion device may refer to any
device configured to communicate with a computing device. Companion
device(s) 130 may be equipped for wired and/or wireless
communications and may include, for example, a desktop, a laptop,
or a tablet computer, a smartphone, personal gaming device, remote
controllers, etc. In the example illustrated in FIG. 1, companion
device(s) 130 may be configured to communicate directly with
computing devices 102A-102N (e.g., using a short range or near
field communication protocols), communicate with computing devices
102A-102N via a local area network (e.g., through a Wi-Fi router),
and/or communicate with a wide area network (e.g., a cellular
network). Further, in some examples, companion device(s) 130 may
act as a client device for one of computing devices 102A-102N. For
example, companion device(s) 130 may be configured to act as a
Universal Plug and Play (UPnP) client or a multicast Domain Name
System (mDNS) client. In one example, companion device(s) 130 may
be registered with one (or more) of computing devices 102A-102N
using its media access control (MAC) address or a unique device
identifier and/or a user's subscriber identifier. In one example,
companion device(s) 130 may execute applications in conjunction
with computing devices 102A-102N. As described in detail below,
companion device(s) 130 may be configured to provide user
interfaces that enable users to provide input. For example, upon
selection through a user interface of a companion device, an item
of content may be presented on one of computing devices 102A-102N.
It should be noted that although a single companion device is
illustrated in the example of FIG. 1, each computing device
102A-102N may be associated with one or more companion device(s)
130. For example, each member of a household may have a companion
device (e.g., a smartphone) associated with a computing device
(e.g., a set-top box).
[0048] FIG. 2 is a block diagram illustrating an example of a
computing device that may implement one or more techniques of this
disclosure. Computing device 200 is an example of a computing
device that may be configured to transmit data to and receive data
from a communications network, allow a user to access multimedia
content, and execute one or more applications. Computing device 200
may include or be part of a stationary computing device (e.g., a
desktop computer, a television, a set-top box, a gaming console, a
dedicated multimedia streaming device, a digital video recorder,
etc.), a portable computing device (e.g., a mobile phone, a laptop,
a personal data assistant (PDA), a tablet device, a portable gaming
device, etc.) or another type of computing device. In the example
illustrated in FIG. 2, computing device 200 is configured to send
and receive data via a television network, such as, for example,
television network 106 described above and send and receive data
via a public network, such as, for example, public network 108. It
should be noted that in other examples, computing device 200 may be
configured to send and receive data through one of television
network 106 or public network 108. The techniques described herein
may be utilized by devices configured to communicate using any and
all combinations of communications networks.
[0049] As illustrated in FIG. 2, computing device 200 includes
central processing unit(s) 202, system memory 204, system interface
210, modem 212, transport module 214, audio-video de-multiplexer
(AV demux) 216, network interface 218, storage device(s) 220, user
interface(s) 222, audio decoder 224, audio processor 226, video
decoder 228, graphics processing unit 230, and display processor
232. As illustrated in FIG. 2, system memory 204 includes operating
system 206, applications 208, and content selection application
209. Each of central processing units(s) 202, system memory 204,
system interface 210, modem 212, transport module 214, AV demux
216, network interface 218, storage device(s) 220, user
interface(s) 222, audio decoder 224, audio processor 226, video
decoder 228, graphics processing unit 230, and display processor
232 may be interconnected (physically, communicatively, and/or
operatively) for inter-component communications and may be
implemented as any of a variety of suitable circuitry, such as one
or more microprocessors, digital signal processors (DSPs),
application specific integrated circuits (ASICs), field
programmable gate arrays (FPGAs), discrete logic, software,
hardware, firmware or any combinations thereof. It should be noted
that although example computing device 200 is illustrated as having
distinct functional blocks, such an illustration is for descriptive
purposes and does not limit computing device 200 to a particular
hardware architecture. Functions of computing device 200 may be
realized using any combination of hardware, firmware and/or
software implementations. In some examples, functionality of
computing device 200 may be implemented using one or more so-called
systems on a chip (SOC). For example, computing device 200 may
include a set-top box including a SOC. One example of a
commercially available SOC that may be included in a set-top box is
the Broadcom.RTM. BCM7252 Ultra HD SoC.
[0050] Central processing unit(s) 202 may be configured to
implement functionality and/or process instructions for execution
in computing device 200. Central processing unit(s) 202 may be
capable of retrieving and processing instructions, code, and/or
data structures for implementing one or more of the techniques
described herein. Instructions may be stored on a computer readable
medium, such as system memory 204 or storage device(s) 220. Central
processing unit(s) 202 may include multi-core central processing
units. As described in detail below, the techniques described
herein may be used to optimize CPU usage. For example, one or more
background processing techniques may be used to reduce the delay
(or lag) experienced by a user interacting with one of the
graphical user interfaces described below.
[0051] System memory 204 may be described as a non-transitory or
tangible computer-readable storage medium. In some examples, system
memory 204 may provide temporary and/or long-term storage. In some
examples, system memory 204 or portions thereof may be described as
non-volatile memory and in other examples portions of system memory
204 may be described as volatile memory. Examples of volatile
memories include random access memories (RAM), dynamic random
access memories (DRAM), and static random access memories (SRAM).
Examples of non-volatile memories include magnetic hard discs,
optical discs, floppy discs, flash memories, or forms of
electrically programmable memories (EPROM) or electrically erasable
and programmable (EEPROM) memories.
[0052] System memory 204 may be configured to store information
that may be used by computing device 200 during operation. System
memory 204 may be used to store program instructions for execution
by central processing unit(s) 202 and may be used by software or
applications running on computing device 200 to temporarily store
information during program execution. For example, system memory
204 may store instructions associated with operating system 206,
applications 208, and content selection application 209. System
memory 204 may include one or more distinct memory devices, where
each memory device may include a distinct type of memory interface.
For example, system memory 204 may include an internal hard disk or
solid state drive, a random access memory module, an embedded
MultiMediaCard (eMMC) memory device, and/or one or more caches
(e.g., CPU caches and/or GPU caches). As described in detail below,
images associated with a graphical user interface may be loaded
from a portion of system memory 204 to another portion of system
memory 204 in order to reduce the time required to render the
images on a display based on received user inputs. For example, a
subset of images associated with a graphical user interface may be
loaded into a cache based on user behavior. It should be noted that
the techniques described herein may be generally applicable to any
memory architecture.
[0053] Applications 208 and content selection application 209 may
include applications implemented within or executed by computing
device 200 and may be implemented or contained within, operable by,
executed by, and/or be operatively/communicatively coupled to
components of computing device 200. Applications 208 and content
selection application 209 may include instructions that may cause
central processing unit(s) 202 of computing device 200 to perform
particular functions. Applications 208 and content selection
application 209 may include algorithms which are expressed in
computer programming statements, such as, for-loops, while-loops,
if-statements, do-loops, etc. Applications 208 and content
selection application 209 may be distributed to computing device
200 through an application distribution site, for example,
application distribution site 122. In one example, applications 208
and content selection application 209 may cause computing device
200 to perform functions associated with the example techniques
described herein that enable a user to access items of content.
Applications 208 and content selection application 209 may cause
one or more graphical user interfaces to be presented that enable a
user to provide data for use by an application. In one example,
applications 208 may include one or more dedicated applications
enabling a user to access a digital media service. It should be
noted that as used herein a dedicated application enabling a user
to access a digital media service may be high integrated with an
application or operating system of a computing device. For example,
a set-top box supported by a cable television provider may enable a
user to access items of content from a television service, an on
demand media service maintained by the cable television service
provider, and/or a third party media streaming service. In some
cases, each distinct graphical user interface enabling a user to
select items of content to access may be referred to as a dedicated
application, a source, and/or a portal. In one example, content
selection application 209 may be provided to a computing device and
cause a computing device to enable a user to select items of
content according to one or more of the techniques described
herein. As described in detail below content selection application
209 may operate in conjunction with an application running on a
companion device.
[0054] As further illustrated in FIG. 2, applications 208 and
content selection application 209 may execute in conjunction with
operating system 206. That is, operating system 206 may be
configured to facilitate the interaction of applications 208 and
content selection application 209 with central processing unit(s)
202, and other hardware components of computing device 200. It
should be noted that in some examples, components of operating
system 206 and components acting in conjunction with operating
system 206 may be referred to as middleware. Further, in some
examples, content selection application 209 may include an
application programming interface (API). The techniques described
herein may be utilized by devices configured to operate using any
and all combinations of software architectures. Operating system
206 may be an operating system designed to be installed on laptops,
desktops, smartphones, tablets, set-top boxes, digital video
recorders, televisions and/or gaming devices. In one example,
operating system 206 may include one or more of operating systems
or middleware components developed by OpenTV.RTM., Windows.RTM.
operating systems, Linux operation systems, Mac OS.RTM.,
Android.RTM. operating systems, and any and all combinations
thereof.
[0055] System interface 210 may be configured to enable
communications between components of computing device 200. In one
example, system interface 210 comprises structures that enable data
to be transferred from one peer device to another peer device or to
a storage medium. For example, system interface 210 may include a
chipset supporting Accelerated Graphics Port (AGP) based protocols,
Peripheral Component Interconnect (PCI) bus based protocols, such
as, for example, the PCI Express.TM. (PCIe) bus specification,
which is maintained by the Peripheral Component Interconnect
Special Interest Group, or any other form of structure that may be
used to interconnect peer devices.
[0056] Storage device(s) 220 represent memory of computing device
200 that may be configured to store relatively larger amounts of
information for relatively longer periods of time than system
memory 204. For example, in the example where computing device 200
is included as part of a digital video recorder, storage device(s)
220 may include a hard disk drive configured to store numerous
video files. Similar to system memory 204, storage device(s) 220
may also include one or more non-transitory or tangible
computer-readable storage media. Storage device(s) 220 may include
internal and/or external memory devices and in some examples may
include volatile and non-volatile storage elements.
[0057] User interface(s) 222 may include devices configured to
receive input from a user during operation of computing device 200.
For example, user interface(s) 222 may include buttons and
switches, motion sensors (e.g., accelerometers), touch-sensitive
sensors, a track pad, a mouse, a keyboard, a microphone, a video
camera, or any other type of device configured to receive user
input. User interface(s) 222 may be integrated into computing
device 200. For example, in the case where computing device 200
includes a television, user interface(s) 222 may include push
buttons located on the television. Further, user interface(s) 222
may be integrated into devices external to computing device 200.
For example, user interface(s) 222 may be integrated into a
companion device, such as, for example, companion device 300 and
companion device 400 described in detail below. In some examples,
an external device including user interfaces(s) 222 may be
operatively coupled to computing device 200 using a standardized
communication protocol, such as for example, Universal Serial Bus
protocol (USB), Bluetooth, ZigBee or a proprietary communications
protocol, such as, for example, a proprietary infrared
communications protocol. It should be noted that techniques
described herein may be generally applicable regardless of the type
of device including a user interface and regardless of the manner
in which the device communicates with computing device 200. As
described in detail below, user interface(s) 222 may include a
display configured to display the graphical users interfaces
described herein. For example, in the case where computing device
200 includes a television, a companion device (e.g., a smart phone
or a dedicated remote controller) in communication with a
television may include a user interface including a touch-sensitive
display presenting a graphical user interface described herein.
Further, as described in detail below, a user may provide commands
to computing device 200 by activating portions of a touch-sensitive
display.
[0058] Referring again to FIG. 2, computing device 200 is
configured to send and receive data via a television network, such
as, for example, television network 106 described above and send
and receive data via a public network, such as, for example, public
network 108. A communications network may be described based on a
model including layers that define communication properties, such
as, for example, physical signaling, addressing, channel access
control, packet properties, and data processing in a communications
system. In the example illustrated in FIG. 2, modem 212, transport
module 214, and AV demux 216 may be configured to perform lower
layer processing associated with television network 106 and network
interface 218 may be configured to perform lower layer processing
associated with public network 108.
[0059] In one example, modem 212 may be configured to perform
physical signaling, addressing, and channel access control
according to the physical and MAC layers utilized in a television
provider network, such as, for example, television provider network
106. In one example, modem 212 may configured to receive signals
from a coaxial cable and/or an over-the-air signal and perform low
level signal processing (e.g., demodulation). In one example, modem
212 may be configured to extract transport streams from signals
received from a coaxial cable. In one example, a transport stream
may be based on a transport stream defined by the Moving Pictures
Experts Group (MPEG). In one example, a transport stream may
include a plurality of program streams where each program stream
respectively corresponds to a program available from a television
network. Further, a transport stream may include a plurality of
data streams (e.g., Program Map Table and EPG data).
[0060] Transport module 214 may be configured to receive data from
modem 212 and process received data. For example, transport module
214 may be configured to receive a transport stream including a
plurality of program streams and extract individual program streams
from a received transport stream. In one example, a program stream
may include a video stream, an audio stream, and a data stream. AV
demux 216 may be configured to receive data from transport module
214 and process received data. For example, AV demux 216 may be
configured to receive a program stream from transport module 214
and extract audio packets, video packets, and data packets. That
is, AV demux 216 may apply demultiplexing techniques to extract
video streams, audio streams, and data streams from a program
stream. In one example, AV demux 216 may be configured to
decapsulate packetized elementary video and audio streams from a
transport stream defined according to MPEG-2 Part 1. It should be
noted that although modem 212, transport module 214, and AV demux
216 are illustrated as distinct functional blocks, the functions
performed by modem 212, transport module 214, and AV demux 216 may
be highly integrated and realized using any combination of
hardware, firmware and/or software implementations. Further, it
should be noted that the example lower layer processing described
with respect to modem 212, transport module 214, and AV demux 216
should not be constructed to limit the type of television services
computing device 200 may be configured to receive. That is,
computing device 200 may be configured to receive television
services according to any number of communication protocols (e.g.,
ATSC, DVB, ISDB, etc.), including those currently under development
(e.g., the ATSC 3.0 suite of standards).
[0061] Network interface 218 may be configured to enable computing
device 200 to send and receive data via a public network. As
described above, data sent or received via a public network may
include data associated digital content, such as, for example,
music, videos, images, webpages, messages, voice communications,
and applications. Network interface 218 may include a network
interface card, such as an Ethernet card, an optical transceiver, a
radio frequency transceiver, or any other type of device configured
to send and receive information. Network interface 218 may be
configured to perform physical signaling, addressing, and channel
access control according to the physical and MAC layers utilized in
a public network, such as, for example, public network 108.
Further, in a manner similar to that described above with respect
to transport module 214 and AV demux 216, network interface 218 may
be configured to extract audio packets, video packets, and data
packets from a data stream, or similar fragments from a similar
data structure. For example, network interface 218 may be
configured to extract video packets, audio packets, and data
packets according to one or more streaming protocols including
internet protocol (IP), transport control protocol (TCP), real time
streaming protocol (RTSP), user datagram protocol (UDP), real time
protocol (RTP), MPEG transport streaming protocols, IPTV protocols,
and the so-called HTTP Live Stream (HLS) Protocol developed by
Apple, Inc. It should be noted, that the techniques described
herein are generally applicable to any and all methods of digital
content distribution and are not limited to particular
communications network implementations. For example, the techniques
described herein may be applicable to digital content originating
from one or more of a broadcast, a multicast, a unicast, an
over-the-top content source, a personal video recorder (PVR), and a
peer-to-peer content source.
[0062] In some cases, streaming protocols may utilize media
segments and index (or manifest) files. That is, an event (e.g., a
stream corresponding to an over-the-air television broadcast or the
like) may be segmented into a plurality of media files, which may
be referred to as segments or fragments. An index file may provide
a location (e.g., a universal resource locator (URL) or universal
resource identifier (URI)) for each segment included in an event
and timing information associated with each segment (e.g., the
length of each segment in seconds and the playback order of each
segment). Typically, to initiate a streaming session a computing
device will download an index file, parse the index file, begin
downloading a first media segment in a sequence of segments, and
upon a sufficient portion of the first media segment being
downloaded, begin playback of a of the first media segment.
Subsequent media segments included in an event may be downloaded
after a previous media segment has been downloaded. Typically, for
an event, media segments are approximately 5-10 seconds in length.
It should be noted that in some typical cases, a delay with respect
to downloading a particular media segment may propagate a
throughout the presentation on an event on a computing device. That
is, buffering associated with one segment may propagate throughout
the presentation of the event. In this manner, the playback of an
event on a particular computing device may be delayed with respect
to system time (i.e., the current date and time of day).
[0063] Referring again to FIG. 2, data associated with digital
content, such as, for example, music, videos, images, webpages,
messages, voice communications, and applications may be stored in a
computer readable medium, such as, for example, system memory 204
and storage device(s) 220. Data stored in a memory device may be
retrieved and processed by central processing unit(s) 202, audio
decoder 224, audio processor 226, video decoder 228, graphics
processing unit 230, and display processor 232. As described above,
central processing unit(s) 202 may be capable of retrieving and
processing instructions, code, and/or data structures for
implementing one or more of the techniques described herein. Each
of audio decoder 224, audio processor 226, video decoder 228,
graphics processing unit 230, and display processor 232 may also be
capable of retrieving and processing instructions, code, and/or
data structures for implementing one or more of the techniques
described herein.
[0064] Audio decoder 224 may be configured to retrieve and process
coded audio data. For example, audio decoder 224 may be a
combination of hardware and software used to implement aspects of
audio codec. Audio data may be coded using multi-channel formats
such as those developed by Dolby and Digital Theater Systems. Audio
data may be coded using a compressed or uncompressed format.
Examples of compressed audio formats include MPEG-1, 2 Audio Layers
II and III, AC-3, AAC, and Ogg Vorbis. An example of an
uncompressed audio format includes pulse-code modulation (PCM)
audio format. Audio processor 226 may be configured to retrieve
captured audio samples and may process audio data for output to an
audio system (not shown). In some examples, audio processor 226 may
include a digital to analog converter. An audio system may comprise
any of a variety of audio output devices such as headphones, a
single-speaker system, a multi-speaker system, or a surround sound
system. Video decoder 228 may be configured to retrieve and process
coded video data. For example, video decoder 228 may be a
combination of hardware and software used to implement aspects of
video codec. In one example, video decoder 228 may be configured to
decode video data encoded according to any number of video
compression standards, such as ITU-T H.261, ISO/IEC MPEG-1 Visual,
ITU-T H.262 or ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4
Visual, ITU-T H.264 (also known as ISO/IEC MPEG-4 AVC), VP8, VP9,
and High-Efficiency Video Coding (HEVC).
[0065] As described above, a device with media playback
capabilities may provide a graphical user interface that enables a
user to access items of content. A graphical user interface may
include images and graphics displayed in conjunction with video
content (e.g., playback icons overlaid on a video presentation).
Graphics processing unit 230 is an example of a dedicated
processing unit that may be configured to generate graphical user
interfaces, including the graphical user interfaces described
herein. That is, graphics processing unit 230 may be configured to
receive commands and content data and output pixel data. Graphic
processing unit 230 may operate according to a graphics pipeline
process (e.g., input assembler, vertex shader, geometry shader,
rasterizer, pixel shader, and output merger). Graphics processing
unit 230 may include multiple processing cores and may be
configured to operate according to OpenGL (Open Graphic Library,
managed by the Khronos Group), Direct3D (managed by Microsoft,
Inc.), or the like.
[0066] Display processor 232 may be configured to retrieve and
process pixel data for display. For example, display processor 232
may receive pixel data from video decoder 228 and/or graphics
processing unit 230 and output data for display. Display processor
232 may be coupled to a display, such as display 250 (not shown in
FIG. 2) using a standardized communication protocol (e.g.,
High-Definition Multimedia Interface (HDMI), Digital Visual
Interface (DVI), DisplayPort, component video, composite video,
and/or Video Graphics Array (VGA)). Display 250 may comprise one of
a variety of display devices such as a liquid crystal display
(LCD), a plasma display, an organic light emitting diode (OLED)
display, or another type of display device capable of presenting
video data to a user. Display 250 may include a standard definition
television, a high definition television, or an ultra-resolution
display as described above. Further, display 250 may include an
integrated display of a portable computing device (e.g., a mobile
phone, a laptop, a personal data assistant (PDA), or a tablet
device). As described above, in some examples a portable computing
device may operate as a companion device for a stationary computing
device.
[0067] As described above, computing device 200 may be configured
to send data to and receive data from a companion device. FIG. 3 is
a block diagram illustrating an example of a companion device that
may implement one or more techniques of this disclosure. Companion
device 300 may be included as part of a portable computing device.
As illustrated in FIG. 3, companion device 300 includes central
processor unit(s) 302, system memory 304, system interface 310,
storage device(s) 312, user interface(s) 314, and network interface
316. As illustrated in FIG. 3, system memory 304 includes operating
system 306, applications 308, and content selection application
309. It should be noted that although example companion device 300
is illustrated as having distinct functional blocks, such an
illustration is for descriptive purposes and does not limit
companion device 300 to a particular hardware or software
architecture. For example, in some instances, companion device 300
may include a combination of ASICs and basis circuitry to implement
the functions described herein. Further, in some examples,
companion device 300 may not include a dedicated central processing
unit and an operating system. Functions of companion device 300 may
be realized using any combination of hardware, firmware and/or
software implementations.
[0068] Referring again to FIG. 3, each of central processor unit(s)
302, system memory 304, and system interface 310, may be similar to
central processor unit(s) 202, system memory 204, and system
interface 210 described above. Storage device(s) 312 represent
memory of companion device 300 that may be configured to store
larger amounts of data than system memory 304. Storage device(s)
312 may be internal or external memory and in some examples may
include non-volatile storage elements. For example, storage
device(s) 312 may include memory cards (e.g., a Secure Digital (SD)
memory card), and/or an internal solid state drive. User
interface(s) 314 may include devices configured to receive input
from a user. For example, user interface(s) 314 may be similar to
user interface(s) 222 described above, and may include buttons and
switches, motion sensors, a touch-sensitive sensors, a track pad, a
mouse, a keyboard, a microphone, a video camera, or any other type
of device configured to receive user input. In one example, user
interface(s) 314 may include a touchscreen display configured to
display one or more of the graphical user interfaces described
herein. As described above and in further detail below, a user may
provide commands to a computing device (e.g., a television or a
set-top box) by activating portions of a graphical user interface
displayed on a companion device 300.
[0069] Network interface 316 may be configured to enable companion
device 300 to communicate with external computing devices, such as
computing device 200 and other devices or servers. Further, in the
example where companion device 300 includes a smartphone, or the
like, network interface 316 may be configured to enable companion
device 300 to communicate with a cellular network. Network
interface 316 may include a network interface card, such as an
Ethernet card, an optical transceiver, a radio frequency
transceiver, or any other type of device that can send and receive
information. Network interface 316 may be configured to operate
according to one or more communication protocols such as, for
example, a Global System Mobile Communications (GSM) standard, a
code division multiple access (CDMA) standard, a 3rd Generation
Partnership Project (3GPP) standard, an Internet Protocol (IP)
standard, a Wireless Application Protocol (WAP) standard,
Bluetooth, ZigBee, and/or an IEEE standard, such as, one or more of
the 802.11 standards, as well as various combinations thereof.
[0070] As illustrated in FIG. 3, system memory 304 includes
operating system 306, applications 308, and content selection
application 309 stored thereon. Operating system 306 may be
configured to facilitate the interaction of applications 308 and
content selection application 309 with central processing unit(s)
302, and other hardware components of companion device 300.
Operating system 306 may include any version of any of the example
operating systems described above, or any similar operating system.
It should be noted that the techniques described herein are not
limited to a particular operating system. Applications 308 and
content selection application 309 may be any applications
implemented within or executed by companion device 300 and may be
implemented or contained within, operable by, executed by, and/or
be operatively/communicatively coupled to components of companion
device 300. Applications 308 and content selection application 309
may include instructions that may cause central processing unit(s)
302 of companion device 300 to perform particular functions.
Applications 308 may include algorithms which are expressed in
computer programming statements, such as, for loops, while-loops,
if-statements, do-loops, etc. In one example, applications 308 may
include one or more dedicated applications enabling a user to
access a digital media service. In one example, an application
distribution site (e.g., application distribution site 122) may
provide content selection application 309 to companion device
300.
[0071] As described above, content application 209 may operate in
conjunction with an application running on a companion device. In
one example, content selection application 309 may be configured to
receive data from a computing device and parse the data in order to
determine a context and/or a sub-context. A context may identify an
application currently running on a computing device and a
sub-context may identify a particular aspect of an application
running on a computing device, e.g., a graphical user interface
currently displayed. Content selection application 309 may be
configured to provide functionality based on a context and/or a
sub-context. For example, as described in detail below, a companion
device may include a user interface that displays soft buttons
based on an application currently running on a computing device and
a companion device enable a user to cause different functionality
to occur based on an application currently running on a computing
device.
[0072] As described above, in some examples, a companion device may
not include a dedicated central processing unit and an operating
system. FIG. 4 is a block diagram illustrating an example of a
companion device that may implement one or more techniques of this
disclosure. In one example, companion device 400 may be included as
part of a dedicated device remote control. As illustrated in FIG.
4, companion device 400 includes microprocessor 402,
transmitter/receiver 404, and user interface(s) 406. Microprocessor
402 may include a microprocessor programmed to execute one or more
of the techniques described herein. In one example, microprocessor
402 may enable functional similar to that described above with
respect to content selection application 309. Transmitter/receiver
404 may include any combination of transmitter device and receiver
device configured to enable communications with a computing device.
User interface(s) 406 may include any of the example user
interfaces described herein. In one example, user interface(s) 406
may include push-buttons.
[0073] As described above, each of computing device 200, companion
device 300, and companion device 400 may include user interfaces.
FIGS. 5-7A are conceptual diagrams illustrating respective examples
of user interfaces that may implement one or more techniques of
this disclosure. It should be noted that the techniques described
herein are generally applicable regardless of the particular
hardware and software implementations of a device including an
example user interface described herein. For example, when a user
interface described herein is implemented as part of a dedicated
remote control device, functions may be implemented using
application specific integrated circuits (ASICs) or the like.
Further, when a user interface described herein is implemented as
part of a mobile computing device, functions may be implemented
using applications available from an application distribution site,
e.g., application distribution site 122. Further, it should be
noted that functionality described below with respect to a user
interface of a companion device may be distributed between a
companion device and a computing device in communication with the
companion device. For example, a companion device may generate
electrical signals corresponding to a received user input. In some
cases, a companion device may simply communicate the electrical
signals to a computing device and the computing device may
interpret the electrical signals in order to associate the
electrical signals with a particular command. In some cases, a
companion device may interpret the electrical signals and
communicate a particular command to a computing device. Further, in
the case where multiple levels of interpretation are required
(e.g., interpretation of touch input to a motion event and
interpretation of motion events to a gesture) interpretations may
be distributed between a companion device and a computing device.
That is, the techniques described herein may be generally
applicable regardless of how processing is distributed between a
computing device and a companion device.
[0074] FIG. 5 is a conceptual diagram illustrating an example of a
user interface that may implement one or more techniques of this
disclosure. User interface 500 may generally correspond to a
push-button remote controller user interface. User interface 500
may be included in a companion device that includes a dedicated
device remote control. As described in further detail below, the
functionality of user interface 500 may be implemented using other
types of user interfaces. For example, functions achieved by
activation of particular buttons of user interface may be achieved
through other types of user inputs. For example, in the case where
a user interface includes a touchscreen, gesture recognition,
and/or voice recognition, virtual buttons may be presented on the
touchscreen and functions achieved by activation of buttons on user
interface 500 may be achieved through any and all combinations of
virtual button activation, motion gestures, and/or voice
commands.
[0075] User interface 500 includes basic television controls 510,
playback controls 520, and navigational controls 530. Basic
television controls 510 may be configured to enable a user to
perform basic tuning and volume control functions typically
associated with viewing television programming As illustrated in
FIG. 5, basic television controls 510 include numeric keypad 511,
enter button 512, previous channel button 513, channel change
buttons 514, and volume control buttons 515. Numeric keypad 511,
enter button 512, previous channel button 513, and channel change
buttons 514 may be configured to enable a user to access a
particular service, e.g., to tune to a particular analog and/or
digital channel. In the case of a user tuning to a particular
channel, upon a user entering a sequence of numbers using numeric
keypad 511 and, optionally, additionally activating enter key 512,
a tuner may tune to a specified channel. Upon activation of
previous channel button 513, a tuner may tune to a previously tuned
channel. Activation of "+" and "-" channel buttons 514 may
respectively cause a tuner to tune to the respective next channel
in a sequence of channels. Activation of "+" and "-" volume control
buttons 515 may respectively cause the output of an audio system to
be increased or decreased. It should be noted that although the
basic television controls 510 may be configured to enable a user to
perform basic tuning and volume control functions associated with a
television, in some examples, basic television controls 510 may be
used to perform other functions associated with a computing
device.
[0076] Playback controls 520 may be configured to enable a user to
control the playback of and/or record multimedia content. For
example, playback controls 520 may enable a user to control the
playback of a video originating from a media service provider site,
an on demand engine, and/or a personal video recorder (PVR). As
illustrated in FIG. 5, playback controls 520 include reverse
playback button 521, normal playback button 522, forward playback
button 523, stop playback button 524, pause playback button 525,
and record button 526. Reverse playback button 521 may enable to a
user to navigate to a previous point in a multimedia sequence. Upon
activation, normal playback button 522 may cause normal playback of
an item of multimedia content to begin or resume. Forward playback
button 523 may enable a user to navigate to a future point in a
multimedia sequence. Upon activation, stop playback button 524 may
cause the playback of an item of multimedia content to cease. Upon
activation, pause playback button 525 may cause the playback of an
item of multimedia content to be paused. Record button 526 may
enable a user to cause an item of multimedia content to be stored
to a storage device. In one example, record button 526 may enable a
user to record content to a storage device. It should be noted that
although playback controls 520 may be configured to enable a user
to control the playback of and/or record multimedia content, in
some examples playback controls 520 may be used to perform other
functions associated with a computing device.
[0077] As described above, devices with digital media playback
capabilities, including, for example, televisions, set top boxes,
and mobile devices, may be configured to provide users thereof with
graphical user interfaces that enable the selection of content.
Navigational controls 530 may be configured to enable a user to
navigate graphical user interfaces and select content using a
graphical user interface. In one example, navigational controls 530
may be configured to enable a user to navigate graphical user
interfaces and access items of content according to the techniques
described herein.
[0078] In the example illustrated in FIG. 5, navigational controls
530 include navigational arrow buttons 531, select button 532,
information button 533, menu button 534, guide button 535, back
button 536, and exit button 537. Navigational arrow buttons 531 may
be configured to move the position of a cursor associated with a
graphical user interface and/or change the selection of an item
included in a graphical user interface. Select button 532 may
enable a user to further select an icon. In one example,
consecutive activations of select button 532 may cause respective
levels of selection to occur. Information button 533 may be
configured to cause additional information associated with an item
of content of to be displayed. For example, when an icon
representing an item of content is initially selected, activation
of information button 533 may cause information associated with the
content (e.g., cast and crew information) to be displayed.
[0079] Menu button 534, guide button 535, back button 536, and exit
button 537 may be configured to enable a user to cause different
graphical user interfaces to be presented. Upon activation, menu
button 534 may cause a graphical user interface including a high
level menu to be displayed. In one example, a high level menu may
include a menu that enables a user to change settings associated
with the operation of a computing device. In one example, a
high-level menu may include a menu that enables a user to select a
user profile (e.g., a log-in graphical user interface). Upon
activation, guide button 535 may be configured to provide a
graphical user interface that enables a user to select content. In
one example, upon activation of guide button 535, a graphical user
interface including a grid guide may be presented to a user. Back
button 536 may be configured to enable a user to return to a
previous graphical user interface. Exit button 537 may be
configured to enable a user to return to a full screen viewing
mode. For example, when a graphical user interface is displayed,
upon activation of exit button 537, the graphical user interface
may "disappear" and a full screen content viewing mode may be
presented to a user.
[0080] FIG. 6 is a conceptual diagram illustrating an example of a
user interface that may implement one or more techniques of this
disclosure. User interface 600 may generally correspond to a mobile
computing device (e.g., a smartphone or a tablet computing device)
user interface. In the example illustrated in FIG. 6, user
interface device 600 includes touchscreen display 602 and button
604. It should be noted that in some examples, user interface 600
may include a microphone and/or motion sensors and may be
configured to receive voice and motion input. In some examples,
button 604 may be referred to as a home button. Touchscreen display
602 may include any display device configured to display graphics
and receive a user touch input. For example, touchscreen display
602 may include an LCD display, an OLED display, or any other type
of display device capable of presenting visual data to a user, and
a capacitive touch sensor device, a resistive touch sensor device,
or any other type of device capable of receiving user touch events.
Further, it should be noted that touchscreen 602 may be configured
to receive user touch events directly or indirectly (e.g., using a
stylus). Touchscreen display 602 may be configured to display icons
representing items of content. As further described in detail
below, touchscreen display 602 may be configured to enable a user
to perform multiple types of activations with respect to a region
of touchscreen display 602, where a region may correspond to a
displayed graphic (e.g., an icon). That is, touchscreen display 602
may be configured to receive one or more of the following user
touch inputs: a signal tap, a double-tap, a press of a specified
duration (e.g., a long press), a multi-point touch input (e.g., a
pinch gesture), and complex touch gestures (e.g., drag and drop
gesture, character writing gestures, and swiping gestures).
Further, in some examples, touchscreen display 602 may be pressure
sensitive and cause different types of activations to occur based
on the amount of pressure a user applies to touchscreen display 602
(i.e., how "hard" a user presses). Button 604 may cause difference
graphical user interfaces to be displayed on touchscreen display
602. In the example illustrated in FIG. 6, one or more activations
of button 604 may cause user touchscreen display 602 to display a
home screen. Further, button 604 may have different functionality
based on a graphical user interface displayed on touchscreen
display 602.
[0081] In the example illustrated in FIG. 6, touchscreen display
602 displays virtual buttons 606 and a graphical user interface 608
within respective regions. Virtual buttons 606 may replicate
push-buttons, including, for example, one or more of the buttons
described above with respect to FIG. 5. A user may activate a
virtual button by activating a corresponding area on touchscreen
display 602. It should be noted that in some instances virtual
buttons may be referred to as soft keys. In the example illustrated
in FIG. 6, virtual buttons 606 replicate a numeric keypad, an enter
button, a previous channel button buttons, and volume control
buttons. Graphical user interface 608 may include one or more
components of a graphical user interface described herein. For
example, graphical user interface 608 may include icons
representing an item of content, as described in detail below. In
the example illustrated in FIG. 6, graphical user interface 608
includes a voice activated searching graphical user interface. For
example, upon a user saying the name of an actress and graphical
user interface 608 may display a list of movies associated with the
actress.
[0082] FIG. 7A is a conceptual diagram illustrating an example of a
user interface that may implement one or more techniques of this
disclosure. In the example illustrated in FIG. 7A, user interface
700 includes stand-by button 702, volume control buttons 704, and
touch interface 706. In one example, user interface 700 may be
implemented as part of companion device 790 illustrated in FIGS.
7B-7C. Companion device 790 may, in some examples, be referred to
as a dynamic remote controller. Stand-by button 702 may be
configured such that upon activation, components of a companion
device including user interface 700 are powered up and/or powered
down. Further, upon activation of stand-by button 702 components of
a computing device may be powered up and/or powered down. Volume
control buttons 704 upon activation, may respectively cause the
output of an audio system to be increased or decreased. Touch
interface 706 may include any device and/or combination of devices
configured to dynamically display icons, and the like, and receive
touch input.
[0083] As illustrated in FIGS. 7B-7C, companion device 790 includes
top cover assembly 760 and bottom cover assembly 770. In the
example illustrated in FIGS. 7B-7C, battery 782, springs 784a-784b,
microphone 785, and switch cover 786 are disposed between top cover
assembly 760 and bottom cover assembly 770 when companion device
790 is assembled. Companion device 790 is assembled such that top
cover assembly 760 is hinged with respect to bottom cover assembly
770, such that, springs 784a-784b may be compressed. That is, a
user holding companion device 790 may press top cover assembly 760
and cause springs 784a-784b to become compressed. For example, a
user may hold bottom cover assembly 770 in a palm and press on top
cover assembly 760 to cause springs 784a-784b to become compressed.
Switch cover 786 covers switch 787, included in top cover assembly
760, as illustrated in FIG. 7C, such that the compression of
springs 784a-784b may cause switch 787 to be activated by bottom
cover assembly 770. Thus, a user may activate switch 787 by
pressing top cover assembly 760. Such an activation may be referred
to as a click activation and may be accompanied by a mechanical
click sound. It should be noted that switch cover 786 may be
configured to provide a high quality (e.g., loud and distinct)
audible "click" sound.
[0084] Referring to FIG. 7A, touch interface 706 dynamically
displays icons, and the like. Dynamically displayed icons may be
referred to as virtual or soft buttons or keys. Touch interface 706
or regions thereof may include a touchscreen display as described
above, e.g., an LCD display, an OLED display, etc. A user may
activate a displayed icon button by activating a corresponding area
on touch interface 706. In the example where user interface 700 is
implemented as part of computing device 790, touch interface 706
may be implemented as part of top cover assembly 760. Referring to
FIG. 7C, top cover assembly 760 includes top cover 762, touch panel
764, display 766, upper structure 768, and circuit board 769. Top
cover 762 may include a solid translucent material (e.g., a clear
plastic, glass, including Gorilla.RTM. glass, developed by Corning,
Inc., or the like) having zero or more protrusions (e.g.,
protrusions 728, 743, and 744). As described in further detail
below, protrusions may be arranged on the surface of top cover 762
to provide haptic feedback (e.g., enable a user to locate the
position of an icon). Touch panel 764 may be any device configured
to detect touch events and to generate electric signals in
accordance with detected touch events. Touch panel 764 may include
a capacitive touch sensor device, a resistive touch sensor device,
or any other type of device capable of receiving user touch events.
In one example, touch events may include an action down event
(e.g., a user touching touch panel 764) and action up event (e.g.,
a user lifting a finger) and each action down event and action up
event may be associated with a set of coordinates indicating a
position on touch panel 764. Display 766 may include any display
device configured to display graphics. In one example, display 766
may include a flexible display device. In one example, display 766
may include an electrophoretic display (EPD) device, which may be
referred to as an electronic paper display or electronic ink
device. Display 766 may include a full-color display or a
monochromatic display.
[0085] Upper structure 768 may support top cover 762, touch panel
764, display 766, and circuit board 769. That is, top cover 762,
touch panel 764, display 766, and circuit board 769 may be mounted
to upper structure 768. Further, upper structure 768 includes a
hinge structure enabling top cover assembly 760 and bottom cover
assembly 770 to be hinged as described above. Circuit board 769 may
include electronic components of companion device 790. Electronic
components may include any combination of logical components, e.g.,
components described above with respect to FIG. 3 and FIG. 4,
configured to enable the functionality described herein.
[0086] Referring to FIG. 7C, bottom cover assembly 770 includes
middle structure 772, speaker structure 774, and bottom cover 776.
Bottom cover 776 and top cover 762 enclose components of companion
device 790. Bottom cover 776 may be composed of plastic, metal, or
any other suitable material. Middle structure 772 supports springs
784a-784b, microphone 785, battery 782 and speaker structure 774.
Microphone 785 may be configured to receive audio input (e.g., user
voice commands). In one example, user interface 700 may be
configured to receive audio input through microphone 785 upon
switch 787 being depressed. That is, a user may press and hold top
cover assembly 760 in order to provide a verbal command (e.g.,
"Search for Walking Dead"). Battery 782 may power companion device
790 and in one example may include a rechargeable battery (e.g.,
lithium-ion, nickel-cadmium, etc.). Speaker structure 774 includes
one or more speakers operably connected to the circuit board. Thus,
companion device 790 may be configured to output audio through one
or more speakers mounted to speaker structure 774. It should be
noted that in some examples, companion device 790 may additionally
include motion sensors (e.g., accelerometers) and may be configured
to receive motion input in addition to audio input.
[0087] In the example illustrated in FIG. 7A, touch interface 706
includes status area 710, dynamic button area 720, navigational
area 740, and short-cut icon area 750. Status area 710 may be
configured to display status information associated with a
companion device and/or a computing device. Further, status area
710 may be configured to enable a user to change a status and/or
settings associated with a companion device and/or a computing
device. In the example illustrated in FIG. 7A, status area 710
includes settings icon 712, user identifier 714, and power
indicator icon 716. Settings icon 712 may be configured to enable a
user to change a setting associated with a companion device or a
computing device. In one example, upon activation, settings icon
712 may cause a graphical user interface to be presented on a
display associated with computing device that enables a user to
change settings associated with a computing device (e.g., settings
related to a time zone, a language, etc.). Further, in one example,
upon activation, settings icon 712 may cause a graphical user
interface to be presented on a display associated with computing
device or on touch interface 706 that enables a user to change a
setting associated with a companion device (e.g., settings related
to sensitivity of touch interface 706, etc.).
[0088] User identifier 714 may be configured to display a user
currently associated with a computing device and/or a companion
device. For example, if a computing device is running an
application associated with a media streaming service, user
identifier 714 may display an identifier associated with a user
currently logged-in to the application. Further, in one example,
user identifier 714 may display an identifier associated with a
user currently operating a computing device through a companion
device including user interface 700. For example, a computing
device and/or a companion device may support multiple users and may
include profiles including information associated with each
respective user. In some examples, information included in a
profile may include one or more of a user's favorite media services
(e.g., television channels, streaming services, etc.), an
indication of whether a user is right hand dominant or left hand
dominant, and other user customizable settings. Further, in some
examples, a profile may include consumption and behavior
information. In one example, consumption may include content a user
has accessed or is accessing. In one example, behavior may include
user usage information such as, for example, how fast the user
changes channels, how often the user skips commercials, how
frequently a user accesses content through a computing device, how
frequently a user accessing a particular graphical user interface,
etc.
[0089] In some examples, information included in a profile may
enable dynamic functionality of user interface 700. For example, as
described in detail below, icons displayed in short-cut icon area
750 may be based on a user's preferred media services. Further, as
described in detail below, user input gestures with respect to
navigational area 740 may be based on whether a user is right hand
dominant or left hand dominant. In one example, upon activation,
user identifier 714 may cause a graphical user interface to be
presented on a display associated with a computing device and/or a
display associated with a companion device that enables a user to
change a corresponding user identifier (e.g., log-in to an
application, a computing device, and/or a companion device as
another user). Power indicator icon 716 may be configured to
display the remaining energy of batteries powering a companion
device (e.g., battery 782). In one example, power indicator icon
716 may provide a visual warning when the remaining energy is at a
low level (e.g., blink, flash, etc.). It should be noted that in
one example, icons included in status area 710 may remain static
regardless of the application running on a computing device.
[0090] Dynamic button area 720 may be configured to enable a user
to cause functionality associated a computing device to occur
and/or cause functions associated with an application currently
running on a computing device to be performed. Further, in the
example illustrated in FIG. 7A, dynamic button area 720 includes
respective protrusions 728 positioned such that each protrusion may
correspond to the location of a virtual button. Virtual buttons may
enable any number of functions associated with the operation of a
computing device and applications running thereon. For example, in
the case where a computing device includes a set-top box or a
dedicated media streaming device capable of running a plurality of
dedicated applications and/or accessing items of content through a
plurality of dedicated media services, dynamic button area 720 may
display virtual buttons associated with a high-level device menu in
order to enable application selection. Further, virtual buttons
displayed in dynamic button area 720 may be application specific
and may change based on an application currently running on a
computing device. Further, it should be noted that the presentation
of a particular virtual button displayed in dynamic button area 720
may change based on the operating state of an application running
on a computing device. For example, the appearance of a virtual
button enabling a function to be toggled (play/pause, mute/unmute,
etc.) may change based on the current setting of a function. In
this manner, virtual buttons displayed in dynamic button area 720
may change based on a context and/or a sub-context.
[0091] In the example illustrated in FIG. 7A, designated button
area 720 includes virtual buttons associated with high level
computing device functions, search icon 722, save icon 724, and
menu icon 726 and virtual buttons 730 associated with a particular
application running on a computing device (a media playback
application in the example illustrated in FIG. 7A). Search icon 722
may be configured to enable a user to perform a high-level search
associated with a computing device. In one example, upon
activation, search icon 722 may cause a graphical user interface to
be displayed that enables a user to search the availability and
accessibility of particular items of content across multiple media
service provider sites or services. For example, a graphical user
interface may be presented that enables a user to search for
available items content associated with a particular actor and may
provide aggregated search results from multiple media service
provider sites or services (e.g., television service, on demand
service, streaming services, etc.). In one example, upon
activation, search icon 722 may cause a graphical user interface to
be displayed that enables a user to search for applications
available through an application distribution site. Graphical user
interface 608 described above with respect to FIG. 6 illustrates an
example of a graphical user interface enables a user to search the
availability and accessibility of particular items of content
across multiple media service provider sites or services.
[0092] Save icon 724 may be configured to enable a user to cause an
item of content to be accessed through a particular graphical user
interface at a future point in time. For example, upon activation,
save icon 724 may be configured to add items of content to a user's
so-called media library. For example, a user may cause a subset of
available items of content be accessible through a graphical user
interface associated with a PVR menu or the like. The graphical
user interface may be referred to as a "My TV" or a "My Recordings"
menu. In one example, upon activation, save icon 724 may cause a
graphical user interface to be displayed that enables a user to
download particular items of content for storage on a local storage
device (e.g., saved to a hard disk drive of a PVR). Further, in one
example, upon activation, save icon 724 may store a pointer to a
server, or the like, to enable a user to access an item of content
from a server. For example, if a tile corresponding to a video on
demand item of content is active in a graphical user interface when
save icon 724 is activated, a pointer to the item of content on a
media server may be saved. It should be noted that in some
examples, whether an item of content is stored locally or whether a
pointer is stored may be transparent to the user. In some cases,
segments of an item of content (e.g., the first 10 minutes of a
movie) may be stored locally and segments of the item of content
(e.g., the subsequent portion of the movie) may be retrieved from a
server. Menu icon 726 may be configured to cause a graphical user
interface including a high level menu to be displayed. In one
example, upon activation, menu icon 726 may be configured to cause
graphical user interface 1000 described below with respect to FIG.
12 to be displayed. It should be noted that in some examples, menu
icon 726 may have similar functionality as back button 536.
[0093] In the example illustrated in FIG. 7A, virtual buttons 730
are associated with media playback control functions and include a
mute button (i.e., upon activation, causes volume to be
muted/unmuted), a closed-captioning button (i.e., upon activation,
causes closed-caption text to be displayed/not displayed), a
presentation window button (i.e., upon activation, causes a video
presentation window to be displayed in a full-screen mode or
restored down to a smaller presentation window), reverse playback
and forward playback buttons (i.e., upon activation, causes a video
presentation to be reversed or advanced), and play or pause button
(i.e., upon activation, causes a video presentation to pause or
resume). It should be noted that although virtual buttons 730 are
described with respect to a video playback application in the
example illustrated in FIG. 7A, virtual buttons 730 may include
buttons associated with any type of application. For example, in
the case where an application includes an application enabling
voice and/or video calls to occur, virtual buttons may include a
button that enables a user to cause video to be displayed (e.g., a
video camera icon), a button that enables a user to end a call
(e.g., a telephone handset icon), and the like. In other examples,
other types of buttons may be displayed based on the type of
application.
[0094] Navigational area 740 may be configured to receive user
touch inputs including gestures. Functionality associated with a
computing device and/or an application may occur based on received
user touch inputs. As described above, user touch inputs may
include a single-tap, a double-tap, a press of a specified
duration, a multi-point touch input, and complex touch gestures. As
further described above, touch panel 764 may be configured to
detect touch events (e.g., action down events and action up events)
and generate a set of coordinates indicating a position on touch
panel 764 corresponding to an action. That is, a touch panel 764
may sample electrical signals that provide information with respect
to the location of a user's finger on touch panel 764 (i.e., where
touch panel 764 is activated). A touch event handler may be
configured to receive one or more touch events during a time period
and determine whether the one or more touch events correspond to a
particular user touch input. In one example, a touch event handler
may receive a plurality of action down events during a time period
and determine that a motion event having a particular velocity has
occurred and/or determine that the motion event corresponds to a
particular gesture. It should be noted that interpreting whether
touch events correspond to a motion event and whether motion events
correspond to a gesture may be determined by a companion device
and/or a computing device. For example, a companion device may send
any combination of touch events (e.g., an action, a set of
coordinates, and a time), motion events, and/or an indication of a
gesture (e.g., a double-tap) to a computing device. As described
above, the techniques described herein may be generally applicable
regardless of how processing (e.g., touch event handling) is
distributed between a computing device and a companion device.
[0095] Further, as described above, companion device 790 is
configured to receive a click activation, which may include a
single or multiple click activations. In the example illustrated in
FIG. 7A, navigational area 740 includes visual and haptic feedback
that may assist a user in providing gestures. In the example
illustrated in FIG. 7A, navigational area 740 includes displayed OK
button 742 and corresponding protrusion 743, and protrusions 744.
In one example, OK button 742 may, upon activation, provide
functionality similar to select button 532 described above with
respect to FIG. 5. In one example, OK button 742 may be activated
upon a user tapping on a region of navigational area 740 associated
with OK button 742 and/or a user performing a click activation
while activating touch interface 706 at the region corresponding to
OK button 742. As described in detail below, in some examples,
activation of OK button 742 based on a tap and activation of OK
button 742 based on a click may cause different respective
functionality to occur. Protrusions 744 may be configured to
provide haptic feedback to a user of user interface 700. That is, a
user may be able to feel protrusions 744 to determine the position
of the user's finger with respect to navigational area 740. The
position of a user's finger (e.g., where a user starts or
terminates a gesture) may enable a particular type of gesture to
cause distinct functions to occur with respect to a computing
device and/or an application running on a computing device. It
should be noted that although protrusions are illustrated as dots
or lines in the example of FIG. 7A, in some examples, protrusions
may include characters and the like. For example, protrusions
corresponding to OK button 742 may include a raised O and K.
Further, it should be noted that in some examples touch interface
706 may include indentations in addition to or as an alternative to
protrusions. Further, it should be noted that in some examples
touch interface 706 may include fewer, including none, of the
protrusions illustrated in the example illustrated in FIG. 7A.
[0096] FIGS. 8A-8D are conceptual diagrams illustrating examples of
user inputs that may be received by the example user interface
illustrated in FIG. 7A according to one or more techniques of this
disclosure. In the examples illustrated in FIG. 8A and FIG. 8B, and
other examples described below, the "X" indicates an initial
location where a user activates navigational area 740 (e.g., where
a user initially presses with a finger or stylus) and the
directional arrows indicate movement while navigational area 740 is
active (e.g., a user sliding a finger across the surface). It
should be noted that in some examples the "X" illustrated with
respect to navigational area 740 may indicate an initial touch
location that does not include a corresponding click activation. In
contrast, the "[X]" illustrated in FIG. 8C and FIG. 8D may indicate
a touch location and a corresponding click activation, i.e., a user
pressing navigational area 740 and causing switch 787 to be
activated.
[0097] As described above, a set of touch events may correspond to
one or more motion events and one or more motion events may
correspond to a gesture. Table 1 provides an example of a set of
touch events that correspond to the example user input illustrated
in FIG. 8A. In the example illustrated in Table 1, the x-coordinate
and y-coordinate have a range of 0 to 100 and the origin (0, 0) is
located at the top-left corner.
TABLE-US-00001 TABLE 1 Time Touch Event X-coordinate Y-coordinate 0
Action Down 75 50 t1 Action Down 60 50 t2 Action Down 40 50 t3
Action Up 25 50
[0098] In the example illustrated in Table 1, a user touches
navigational area 740 with a finger at an initial touch location
(75,50), slides the finger to the left while maintaining the
contact with navigational area 740, and lifts a finger at a final
touch location (25,50). The data in Table 1 may be interpreted as a
motion event (i.e., a left motion event) having a distance (i.e.,
50), and having a speed (i.e., 50/t.sub.3). It should be noted that
the data in Table 1 may, in some cases, be interpreted as two or
more motion events. Further, the data in Table 1 may be interpreted
as a gesture. For example, a particular gesture may require a
minimum distance and a minimum speed. As described above,
interpreting whether touch events correspond to a motion event and
whether motion events correspond to a gesture may be determined by
a companion device and/or a computing device. In one example, a
companion device may receive touch events at one sampling rate,
filter the touch events (e.g., average coordinate values of
multiple samples), and send a reduced set of touch events to a
computing device. Thus, with respect to the example illustrated in
Table 1, a companion device may send the data in Table 1 to a
computing device, and a computing device may interpret motion
events and gestures. In some examples, the level of filtering of
touch event data that a companion device performs prior to sending
touch event data to a computing device may be based on an
application currently running on a computer device and/or a
graphical user interface currently displayed on a computing device.
That is, some applications may be more sensitivity to touch input
than others and as such may require more touch event data. Other
applications running on a computing device may require less than
all of the touch event data that may be generated by a companion
device.
[0099] In some examples, the inputs illustrated in FIG. 8A and FIG.
8B may be referred to as a swipe or a slide gesture. In the example
illustrated in FIG. 8A, the initial touch location is within the
area enclosed by protrusions 744. As such, in some examples, the
gesture illustrated in FIG. 8A may be referred to as an inside
swipe gesture. In the example illustrated in FIG. 8B, the initial
touch location is outside of the area enclosed by protrusions 744.
As such, in some examples, the gesture illustrated in FIG. 8B may
be referred to as an outside swipe gesture. As described in further
detail below, based on whether an inside swipe gesture or an
outside swipe gesture occurs, different functionality may occur. It
should be noted that although FIG. 8A and FIG. 8B illustrate
horizontal swipes moving to the left, inside and outside swipes may
be defined for any direction of movement (e.g., vertical, diagonal,
etc.). Further, in some examples, inside and outside distinctions
of gestures may be defined for gestures including multi-point touch
inputs (e.g., inside and outside pinch gestures may be defined).
Further, in some examples, inside and outside distinctions of touch
points may be defined for both the vertical and horizontal axis
(e.g., corner touch points, etc.). In some examples, the gestures
illustrated in FIG. 8A and FIG. 8B may more specifically be
referred to as horizontal (inside or outside) swipes or as
horizontal left (inside or outside) swipes. In this manner,
computing device 200 and a companion device including user
interface 700 are configured to support multi-level user
activations or gestures. It should be noted that in some examples
user interface 600 may be configured to support multi-level
activations.
[0100] As described above, OK button 742 may be activated upon a
user performing a click activation while activating touch interface
706 at the region corresponding to OK button 742. FIG. 8C
illustrates an example of a user performing a click activation
while activating touch interface 706 at the region corresponding to
OK button 742. As described above, such an activation may provide
functionality similar to select button 532. In one example, the
activation illustrated in FIG. 8C may be referred to as an OK click
activation. It should be noted that OK click activations may
include multiple click activations (e.g., double-click
activations). Further, a user causing switch 787 to be activated
while activating navigational area 740 near one of the upper,
lower, left, or right protrusion of protrusions 744 may provide
functionality similar to navigational arrows 531. In one example,
these activations may be referred to as directional click
activations. FIG. 8D illustrates an example where a user performs a
right directional click activation by activating navigational area
740 near the right most protrusion and causing switch 787 to be
activated. In this manner, user interface 700 and navigational area
740 may be configured be enable directional navigation (e.g.,
directional arrow based navigation) and gesture based
navigation.
[0101] Referring again to FIG. 7A, short-cut icon area 750 may be
configured to facilitate functionality with respect to a particular
application currently running on a computing device and/or a
particular user currently operating a computing device. In the
example illustrated in FIG. 7A, short-cut icon area 750 includes
application specific icons 752. It should be noted that in the
example illustrated in FIG. 7A, in contrast to dynamic button area
720, short-cut icon area 750 does not include protrusions. In this
manner, short-cut icon area 750 may provide increased flexibility
with respect to the types of icons that may be displayed. For
example, short-cut icon area 750 may display one large icon, which
upon activation causes an advertisement to be presented. As
described above, in one example, a content selection application of
running on a companion device may be configured to receive data
from a computing device and parse the data in order to determine a
context and/or a sub-context. A context may identify an application
currently running on a computing device and a sub-context may
identify a particular aspect of an application running on a
computing device. Application specific icons 752 may be based on a
context and/or a sub-context.
[0102] In the example illustrated in FIG. 7A, application specific
icons 752 correspond to icons associated with a television service
application. In the example illustrated in FIG. 7A, application
specific icons 752 represent television channels that, upon
activation, may cause a tuner of a computing device to tune to the
particular television channel (or cause a computing device to
access a particular media stream). It should be noted that in some
examples, application specific icons 752 may be activated upon a
user providing a tap activation and in some examples application
specific icons 752 may be activated upon a user providing a click
activation. In the case where application specific icons 752
represent television channels, television channels may correspond
to recently viewed channels and/or a set of channels determined by
information included in a user's profile. Further, in one example,
television channels represented by application specific icons 752
may mirror channels displayed on a graphical user interface. For
example, referring to FIG. 14A, channels AMC, FOX, NBC, CBS, BBC,
Showtime, and HBO are displayed on the display 250 of a computing
device 200 as part of a graphical user interface. In this case,
application specific icons 752 may include icons representing AMC,
FOX, NBC, CBS, BBC, Showtime, and HBO. In a similar manner, when a
graphical user interface associated with an on demand content
application is presented on a display, specific icons 752 may
represent icons corresponding items of content. For example,
application specific icons 752 may represent the movies illustrated
in the example of FIG. 18B, when graphical user interface 1100 is
presented on a display.
[0103] In this manner, user interface 700 is configured to
dynamically present icons which may be activated by a user and
receive user input, including multi-level activations. Based on
received user inputs provided to a companion device, a computing
device may cause changes to occur with respect to an item of
content and/or graphical user interfaces presented on a display. It
should be noted that although user interface 700 is described in
the examples above as displaying icons, these examples should not
be construed as limiting the functionality of user interface 700.
In other examples user interface 700 may display motion based
graphics, animations, video, and the like and may enable complex
user interactions (e.g., so-called second screen applications). For
example, user interface 700 may enable a user to play a game (e.g.,
a trivia game or a video game) displayed in short-cut icon area
750. Further, user interface 700 may display information associated
with an item of content rendered on a display associated with a
computing device (e.g., a plot synopsis of a movie).
[0104] As described above, navigational area 740 may be configured
to receive user touch inputs including gestures and functionality
associated with a computing device and/or an application may occur
based on the received user touch inputs. Functionality associated
with a computing device and/or an application may include
functional provided in conjunction with a graphical user interface.
FIGS. 9A-9D, FIG. 12, FIG. 14A-14C, FIG. 16A-16F, and FIG. 18A-18B
are conceptual diagrams illustrating examples of graphical user
interfaces that may implement one or more techniques of this
disclosure. As described in further detail below, navigational area
740 may be configured to receive user touch inputs including
gestures, taps and click activations, and computing device 200 may
cause functionality associated with the graphical user interfaces
illustrated in FIGS. 9A-9D, FIG. 12, FIG. 14A-14C, FIG. 16A-16F,
and FIG. 18A-18B to occur, including transitioning from the
respective graphical user interfaces. It should be noted that
although the example graphical user interfaces illustrated in FIGS.
9A-9D, FIG. 12, FIG. 14A-14C, FIG. 16A-16F, and FIG. 18A-18B are
described with respect to user interface 700 and companion device
790, the graphical user interfaces may be generally applicable to
other user interfaces and companion devices. FIGS. 19A-19E is a
flowchart illustrating an example of enabling a user to select an
item of content using the example graphical user interfaces
illustrated in FIGS. 9A-9D, FIG. 12, FIG. 14A-14C, FIG. 16A-16F,
and FIG. 18A-18B.
[0105] FIGS. 9A-9D illustrate an example where a companion device
may change an item of content presented on a display based on input
received through a user interface. In some examples, the example
graphical user interface illustrated in FIGS. 9A-9D may correspond
to a television viewing application and, in some cases, the
transition illustrated in FIGS. 9A-9D may generally be referred to
as a channel change transition. FIG. 10 is a conceptual diagram
further illustrating the transition illustrated in FIGS. 9A-9D and
a corresponding example user input received by an example user
interface. It should be noted that although the example transition
illustrated in FIGS. 9A-9D is described with respect to user
interface 700, in other examples, input received through other
example users interfaces (e.g., user interface 500 and user
interface 600) may cause the transition to occur.
[0106] As illustrated in FIGS. 9A-9D graphical user interface 900
includes window 902, window 904, source identifier 906, item of
content identifier 908, and progress bar 910. Window 902 includes a
presentation area associated with a currently selected item of
content (e.g., a television channel that a tuner of a computing
device is currently tuned to). Window 904 includes a presentation
area associated with a potential subsequently selected item of
content (e.g., an adjacent television channel in a television
channel listing). Referring to FIG. 9A, graphical user interface
900 displays a full screen video presentation for a currently
selected item of content associated with window 902. Referring to
FIG. 9D, graphical user interface 900 displays a full screen
presentation for a subsequent selected item of content associated
with window 904. FIGS. 9B and 9C illustrate a transition between
graphical user interface 900 as illustrated in FIG. 9A and FIG.
9D.
[0107] As illustrated in FIG. 9B and FIG. 9C, graphical user
interface 900 displays window 904 in such a manner that it appears
to overlap window 902. As described below with respect to FIG. 10,
the manner in which window 904 overlaps window 902 may be based on
user input received through a user interface. With respect to the
example where graphical user interface 900 corresponds to a
television viewing application, when a user wishes to change a full
screen video presentation from an item of content associated with
window 902 to an item of content associated with window 904, a
video presentation for an item of content associated with window
904 may not be immediately available. That is, for example, for an
over-the-air or a cable television source there may be a delay with
respect to a tuner (e.g., an ATSC or DVB tuner) acquiring a
channel. Further, in the example where a television service
includes a so-called streaming or an over-the-top (OTT) television
service (e.g., HTTP Live Streaming), a delay may occur based on the
time it takes for a computing device to establish a session with a
host server and/or download media segment files. The example
illustrated in FIGS. 9A-9D may illustrate an example where a video
presentation for an item of content associated with window 904 is
not immediately available. Further, the example illustrated in
FIGS. 9A-9D may illustrate an example where a computing device
tunes or attempts to access a stream upon a user completing a
sufficient portion of a gesture.
[0108] Referring to the example illustrated in FIGS. 9B-9D window
904 displays an image associated with an item of content (i.e., an
still image associated with The Walking Dead) or a video (e.g., a
video of an event in progress) based on availability of video
and/or computing resources and information that enables a user to
identify an item of content associated with window. Source
identifier 906 identifies a source associated with an item of
content (e.g., a logo identifying a television network). An item of
content identifier 908 includes text identifying an item of
content. Progress bar 910 illustrates the progress of the
presentation of an item of content (e.g., the current playback
point of a television program). In one example, an image associated
with an item of content may be referred to as an image plate and
source identifier 906, item of content identifier 908, and progress
bar 910 may be referred to as an information group. An image plate
and an information group may collectively be referred to as
graphics associated with an item of content.
[0109] As illustrated in FIG. 9B and FIG. 9C, window 904 is sized
such that it spans the height of display 250 and each of source
identifier 906, item of content identifier 908, and progress bar
910 are proportional in size to the area of window 904 on display
250. That is, each of source identifier 906, item of content
identifier 908, and progress bar 910 increase in size as window 904
covers more of window 902. Further, as illustrated in FIG. 9D, each
of source identifier 906, item of content identifier 908, and
progress bar 910 increase to a maximum size and stop at the center
of display whereas the image associated with the item of content
may cover the full area of display 250. Such a transition may be
visually appealing to a user of a computing device. As described in
detail below, a graphical processing unit (e.g. graphics processing
unit 230) may be configured to enable such transitions to occur
based on user input received through a user interface. As further
described in detail below, graphics associated with items of
content may be cached based on the likelihood that a user will
attempt to access a particular item of content at during a time
period.
[0110] FIG. 10 illustrates an example where a user performs a
horizontal inside swipe gesture, as described above with respect to
FIG. 8A, in order to cause the transition illustrated in FIGS.
9A-9D to occur. In the example illustrated in FIG. 10, for each
subsequent point in time, Time.sub.0, Time.sub.1, and Time.sub.2,
graphical user interface 900 as displayed on display 250 and a user
gesture as received by navigational area 740 are illustrated. At
Time.sub.0, graphical user interface 900 displays a full-screen
video presentation of the item of content associated with window
902 and a user initiates an inside swipe gesture by activating
navigational area 740 within the area defined by protrusions 744.
At Time.sub.1 and Time.sub.2, as the user slides a finger to the
left on navigational area 740, window 904 displaying the image
plate "slides" over window 902 and source identifier 906 increases
in size. The movement of window 904 on display 250 may be
synchronized with the movement of a user's finger on navigational
area 740. That is, a relationship between the movement of a user's
finger on navigational area 740 (i.e., touch event data) and
position of window 904 and/or size of source identifier 906 is
defined such that the window appears to move on display in
conjunction with swipe gesture.
[0111] Referring again to FIG. 10, the gesture may be interpreted
by a companion device and/or a computing device based on a starting
point, transition distance, and a threshold. As described above,
the starting point may be used to distinguish between an inside
swipe gesture and an outside swipe gesture. The transition distance
may correspond to a distance where motion of a user's finger causes
a visual transition to occur. It should be noted that a transition
distance may include a minimum distance required to initiate a
transition. Minimum distances may be used to distinguish gestures
from inadvertent touch events. For example, a user's finger may be
required to travel a distance of 15% of the width of navigational
area 740 before window 904 appears on display 250. In the example
illustrated in FIG. 10, the threshold may be used to determine
whether, upon a user deactivating navigational area 740 (e.g.,
lifting a finger off of navigational area 740, i.e.,), graphical
user interface 900 displays a full screen presentation of window
902 or a full screen presentation of window 904. That is, a user
may cause a portion of window 904 to be displayed in order to
identify and/or preview an item of content associated with window
904 (e.g., when video is available) and if a user does not wish to
access the item of content associated with window 904, the user may
lift the finger from navigational area 740 to cause the display to
return to the full screen viewing mode of the currently selected
item of content. As described below, the threshold may be based on
equations defining window movement. In one example, window 904 may
include a message indicating that the channel is currently at a
commercial break. For example, computing device 200 may receive
data or flags indicating that the channel is a commercial break. In
some cases, causing a portion of window 904 to be displayed may be
referred to as a peek view. In some examples, upon the user not
exceeding the threshold and lifting a finger from navigational area
740, window 904 may rapidly move to the right (i.e., "snap
back").
[0112] In some examples, upon the user exceeding the threshold and
lifting a finger, window 904 may move to the left to cause
graphical user interface 900 as illustrated in FIG. 9D to be
displayed. In this case, in one example, graphical user interface
900 as illustrated in FIG. 9D will transition to a full screen
video presentation (e.g., fade out from an image to a video
presentation) once the video associated when the item of content is
available (e.g., after tuning occurs or after a media segment is
downloaded). It should be noted that in some examples, in order to
conserve or optimize resources of a computing device, it may be
desirable to initiate tuning based on the movement of a user's
finger on navigational area 740. That is, in one example, resources
of a computing device may be optimized by initiating tuning upon a
user's finger passing or being within a predetermined distance of a
threshold. Further, it should be noted that a threshold may be
defined with respect to an absolute point on navigational area 740
(e.g., the center of navigation area 740), an absolute distance
traveled by a user input (e.g., one centimeter from a starting
point), a relative distance (e.g., 50% of the distance between a
starting point and an edge of navigational area 740), and/or the
speed of the motion of the user input. In one example, user
interface 700 may be configured such that a user may initiate a
channel change transition by activating navigational area 740 at
any point within protrusions 744 and moving a finger a distance of
approximately 10%-20% (e.g., 15%) of the width of navigational area
740 (i.e., the minimum distance). In this example, window 904 may
be displayed based on the continued motion of the user's finger.
Further, in this example the threshold may be a distance of
approximately 35%-60% (e.g., 50%) of the width of navigational area
740.
[0113] A described above, a relationship between the movement of a
user's finger on navigational area 740 and position of window 904
and/or size of source identifier 906 is defined. As further
described above with respect to Table 1, a set of touch events may
be interpreted as a motion event having a direction, a distance,
and a speed. In one example, a companion device including interface
700 may send an indication to computing device 200 that a user has
initiated a channel change transition (e.g., activated navigational
area 740 at any point within protrusions 744 and moved a finger the
minimum distance). The companion device may subsequently send touch
event data to computing device 200. Computing device 200 and/or
graphical processing unit 230 may be configured to move window 904
on display 250 and move and scale the size of an information group
based on the received touch event data. In one example, the
movement of window 904 on display 250 (e.g., how far window 904
moves to the left in the example of FIG. 10) may be based on the
following equation:
Window movement=(a*distance.sub.ME).times.(b*speed.sub.ME), [0114]
where [0115] Window movement corresponds to a distance on display
(e.g., a number of pixels); [0116] distance.sub.ME corresponds to a
distance of a motion event; [0117] speed.sub.ME corresponds to a
speed of a motion event; and [0118] a and b are scaling factors. In
this manner, the movement of a window on display is relative to
distance and speed of a swipe gesture. It should be noted that
based on this equation, for a given swipe distance, the distance
window 904 appears to move on display 250 is based on the speed of
a swipe. That is, referring to FIG. 10, window 904 will move
further to the left, if a use performs a relatively faster swipe.
As described above, a threshold may be defined based on window
movement. That is, for example, if a user provides an input that
causes window 904 to move halfway across display 250, based on
distance and speed of a swipe, a channel change transition may
occur.
[0119] In some examples, computing device 200 and a companion
device including user interface 700 may be configured such that a
user may be able to set the sensitivity with respect to a channel
change transition. That is, particular users may desire the ability
to preview items of content and/or cause channel changes to occur
more rapidly. In one example, computing device 200 may be
configured such that a user may set a sensitivity setting to one
of: high, medium, or low, where each setting provides a threshold
that must be exceeded in order for a channel change transition to
occur. In one example, each setting may be associated with
respective values of scaling factors, a and b, described above
(e.g., a high sensitivity provides the highest values of a and b).
Further, in one example, a user may be able to explicitly set
values associated with sensitivity of a channel change transition.
In the example illustrated in FIG. 10, the motion of the user's
finger to the left causes window 904 to appear at the right edge of
display 250 and move to the left. In some examples, computing
device 200 and a companion device including user interface 700 may
be configured such that a user may be able to set how the movement
of window 904 corresponds to the motion of the user's finger. For
example, a user may wish to invert the movement of window 904 with
respect to the motion of the user's finger. That is, the movement
of the user's finger to the left may cause window 904 to appear at
the left edge of display 250 and move to the right.
[0120] As described above, the example illustrated in FIGS. 9A-9D
illustrates an example where video corresponding to an item of
content associated with window 904 is not immediately available. In
some examples, delays in accessing video content may be mitigated
using so-called pre-tuning techniques. That is, for example, a
television or set-top box accessing an over-the-air or a cable
television source may include multiple tuners, where a first tuner
is tuned to a current channel and additional tuners are tuned to
channels a user is likely to tune to (e.g., adjacent channels in a
channel listing). Further, in the example where a television
service includes a streaming or OTT television service, a computing
device may access multiple media streams simultaneously (e.g.,
streams associated with different television networks). It should
be noted however that in some cases the availability of resources
of a computing device may limit the effectiveness of pre-tuning
techniques. For example, a computing device may have a limited
number of available tuners and/or processing resources. Further, in
the case of an OTT television service, the amount of available
bandwidth may be limited such that additional media streams cannot
be accessed without adversely impacting the quality of a primary
media stream. Further, limitations with respect to the availability
of computing device resources may become apparent in the case where
a user wishes to change content in a rapid manner (i.e., rapid
channel "surfing").
[0121] As described above with respect to FIG. 2, buffering
associated with one media segment may propagate throughout the
presentation of the event. Although buffering may be acceptable
when an event is presented to a user, when a segment is associated
with a pre-tuned media stream, buffering may cause a pre-tuned
media stream to become out of sync with an event. In one example,
computing device 200 may be configured to simulate playback of an
item of content that a user is likely to access in order to
maintain synchronization with an event. In some examples, this type
of synchronization may be referred to as system time
synchronization. As described above, an index file may provide
timing information associated with each media segment included in
an event. In one example, computing device 200 may retrieve an
index file for an item of content that a user is likely to access
and simulate playback of media segments listed in the index file.
That is, computing device 200 may retrieve an index file and
determine which media segment should be accessed upon a channel
change based on a clock and an estimated bit rate. That is, instead
of downloading media segments associated with an event and
potentially introducing delay, computing device 200 may retrieve a
more current, with respect to system time, media segment upon a
user initiating, partially completing (e.g., being within a
threshold), and/or completing a channel change transition by
estimating which media segment should be played back at a
particular system time. In one example, upon a user initiating,
partially completing and/or completing a channel change transition,
computing device 200 may download a media segment file
corresponding to the media segment that should be played at the
current system time. In one example, upon a user initiating,
partially completing and/or completing a channel change transition
computing device 200 may download a subsequent media segment file
(i.e., the next media segment after the media segment that should
be played at the current system time).
[0122] In one example, an item of content a user is likely to
access may include adjacent television channels in a television
channel listing. For example, if a currently tuned channel is
channel number 100, computing device 200 may be configured to
retrieve index files for channels 98, 99, 101, and 102 and simulate
playback for one or more of these channels. Further, as described
above, a user profile may include user behavior information and/or
information regarding whether a user is left hand dominant or right
hand dominant. Behavior information may include information
regarding how a user has previously caused channel changes to
occur. For example, computing device 200 may determine that a
particular user usually swipes to the left. In this case, channels
associated with left swipes may be higher numbered channels and
computing device 200 may prioritize adjacent higher numbered
channels over adjacent lower numbered channels. For example,
instead of retrieving index files for channels 98, 99, 101, and
102, computing device 200 may retrieve index files for channels
101, 102, 103, and 104 based on the determined user behavior. In a
similar manner, higher numbered channels or lower numbered channels
may be prioritized based on whether a user is left hand dominant or
right hand dominant. For example, left hand dominant users may be
more likely to perform swipes to the left and right hand dominant
users may be more likely to perform swipes to the right. As
described in further detail below, images and graphics associated
with an item of content may be prioritized based on information
included in a user profile. It should be noted that although the
example illustrated in FIGS. 9A-9B is described with respect to
adjacent channels in a listing, the techniques described with
respect to FIGS. 9A-9D may be generally applicable to any type of
ordered sets of items of content (e.g., switching from movies
within a set of movies ordered alphabetically, etc.).
[0123] Referring again to FIG. 9A, in one example, in addition to
providing an inside swipe gesture when window 902 is displayed in a
full screen viewing mode on display 250, a user may provide other
gestures that cause other functionality to occur. FIG. 11
illustrates an example where a user performs an outside swipe
gesture, as described above with respect to FIG. 8B, when graphical
user interface 900 as illustrated in FIG. 9A is presented on
display 250. In the example illustrated in FIG. 11, upon a user
completing an outside swipe gesture, graphical user interface 1100
as illustrated in FIG. 18A is presented on display 250. It should
be noted that graphical user interface 900 and graphical user
interface 1100 are associated with distinct types of media services
and represent different applications, sources, and/or portals. That
is, graphical user interface 900 may correspond to a user accessing
items of content through a television service (e.g., an OTT
television service) and graphical user interface 1100 may
correspond to a user accessing item of content through an on demand
service. Thus, computing device 200 may be configured to switch
from one media service application to another media service
application (or other type of application, e.g., teleconference
application), upon a user performing an outside swipe gesture. In
this manner, an outside swipe gesture may correspond to application
switching and an inside swipe gesture may correspond to switching
of selected items of content within an application (e.g., channel
changing). As such, computing device 200 may be configured to
enable a user to perform multi-level swipe gestures.
[0124] FIG. 11 illustrates an example transition from one
application to another application based on a user performing an
outside swipe gesture. In the example illustrated in FIG. 11, for
each subsequent point in time, Time.sub.0, Time.sub.1, and
Time.sub.2, graphical user interface 900 and/or graphical user
interface 1000 as displayed on display 250 and a user gesture as
received by navigational area 740 are illustrated. At Time.sub.0,
graphical user interface 900 displays a full-screen video
presentation of the item of content associated with window 902 and
a user initiates an outside swipe gesture by activating
navigational area 740 outside of the area defined by protrusions
744. At Time.sub.1 and Time.sub.2, as the user slides a finger to
the left on navigational area 740, display 250 appears to zoom out
about the center of window 902, such that window 902 is displayed
as a window in graphical user interface 1000 and thereby reveling
additional media service applications. In a manner similar to that
described above with respect to FIG. 10, the zooming out of
graphical user interface 900 to reveal graphical user interface
1000 may be synchronized with the movement of a user's finger on
navigational area 740. In one example, the size of window 902 on
display 250 (e.g., the zoom level) may be based on the following
equation:
Zoom level=100-((c*distance.sub.ME).times.(d*speed.sub.ME)), [0125]
where [0126] Zoom level corresponds to percentage with a maximum
value of 100% corresponding to a full screen presentation of window
902 and a minimum value (e.g., 20-35%) corresponding to a full
screen presentation of graphical user interface 1000; [0127]
distance corresponds to a distance of a motion event; [0128]
speed.sub.ME corresponds to a speed of a motion event speed; and
[0129] c and d are scaling factors.
[0130] Further, in a manner similar to that described above with
respect to FIG. 10, graphical user interface 1100 may be presented
on display 250 based on whether a gesture exceeds a threshold. That
is, upon the user not exceeding the threshold and lifting a finger
from navigational area 740, graphical user interface 900 may be
displayed on display 250 (i.e., a fast zoom-in may occur) and upon
the user exceeding the threshold and lifting a finger from
navigational area 740, graphical user interface 1100 may be
displayed on display 250. Further, in a manner similar to
initiating tuning based on the movement of a user's finger on
navigational area 740, described above, in order to conserve or
optimize resources of a computing device the loading of an
application may be based on the movement of a user's finger on
navigational area 740. That is, in one example, computing device
resources may be optimized by initiating the loading of an
application upon a user exceeding a threshold.
[0131] FIG. 12 illustrates graphical user interface 1000 in detail.
As illustrated in FIG. 12, in addition to including window 902,
graphical user interface 1000 includes windows 1002a-1002d, where
each of windows 1002a-1002d may correspond to a respective media
service application, other type of application, or portal. Each of
windows 1002a-1002d includes an image or video associated with an
application that enables a user to identify an application or
portal corresponding to each window. In the example illustrated in
FIG. 12, window 1002a corresponds to a personalized media service
portal, window 1002b corresponds to a search portal, window 1002c
corresponds to an on demand portal, and window 1002d corresponds to
a media streaming service application (e.g., Netflix). It should be
noted that in some examples, additional applications or portals may
be available to a user. An example of a personalized media service
portal is described in commonly assigned, currently pending U.S.
patent application Ser. No. 14/465,043 filed Aug. 21, 2014, which
is incorporated by reference in its entirety. An example of an on
demand portal is illustrated in FIGS. 18A-18B. As described in
further detail below, an application and/or a background image
associated with an application may be loaded in a cache to enable a
smooth transition (e.g., reduce potential user perceived lag) from
graphical user interface 900 to graphical user interface 1000. For
example, when a full screen video presentation associated with a
television viewing application is displayed, processes associated
with a media streaming application may occur in the background,
such that the media streaming application remains in a state that
reduces loading time, upon a user switching to the application.
[0132] FIG. 13 is a conceptual diagram that generally illustrates
inside/outside multi-level gestures. In the example illustrated in
FIG. 13, a gesture is distinguish based on whether the starting
point (e.g., the coordinates of an action down event) is within or
outside of the area defined by protrusions 744. In the example
illustrated in FIG. 13, if the starting point is outside of the
area, the gesture corresponds to application switching, and if the
gesture is inside of the area, the gesture corresponds to item of
content switching of items associated with a selected application,
where a switch may occurs upon a gesture exceeding a threshold. It
should be noted that in other examples, other types of multi-level
activations may be supported. For example, multi-level vertical
swipes, diagonal swipes, inside/outside pinches, and the like may
be supported. Further, as described in further detail below
multi-level gestures may be enabled or disabled based on whether a
particular graphical user interface associated with an application
is displayed. That is, for example, in the case of a television
service application, multi-level gestures may be enabled when a
full screen video presentation is displayed and may be disabled
when a programming guide or other graphical user interface is
displayed. In this manner, a user may be able to navigate a
programming guide or another graphic user interface without
inadvertently switching applications. Further, in the case of an on
demand content application, multi-level gestures may be disabled
when a full screen video presentation is displayed and may be
enabled when a graphical user interface is displayed. In this
manner, a user may be able to view a full screen on demand video
presentation interface without inadvertently switching
applications.
[0133] In one example, in addition to enabling a user to perform
horizontal inside swipe gestures and horizontal outside swipe
gestures when window 902 is displayed in a full screen viewing mode
on display 250 to cause functionality to occur, computing device
200 may be configured to enable a user to perform other
activations, including providing additional gestures to touch
interface 706, to cause additional functionality to occur. In one
example, computing device 200 may be configured to enable a user
may cause guides to be displayed by performing one or more
additional types of gestures. FIGS. 14A-14C are conceptual diagrams
illustrating examples where graphical user interface 900 displays
one or more guides based on particular user activations. FIG. 15 is
a conceptual diagram further illustrating the guides illustrated in
FIGS. 14A-14C and corresponding example inputs received by an
example user interface. As illustrated in FIGS. 14A-14C, graphical
user interface 900 includes window 902, described above, dynamic
guide 912, on now guide 920, and grid guide 926. Each of dynamic
guide 912, on now guide 920, and grid guide 926 include tiles.
Tiles may be similar to windows described above and may include
visual indicators (e.g., video or an image) and textual information
associated with an item of content that may enable a user to
quickly identify an item of content and/or preview an item of
content. Further, tiles may be associated with data associated with
an item content (e.g., a tile may be associated with a crew member
in a movie or a genre of a movie). As described in detail below,
computing device 200 may be configured to enable a user to cause a
function associated with a tile to occur by causing a title to
become active (e.g., causing tile to be selected) and performing a
particular activation. Further, it should be noted that in some
examples, short-cut icon area 750, described above, may include
application specific icons corresponding to tiles displayed on
display 250 and a user may cause a function associated with a tile
to occur by activating a corresponding icon displayed on short-cut
icon area 750.
[0134] As illustrated in FIG. 15, when an item of content
associated with window 902 is displayed in a full screen viewing
mode, a user may perform a downward swiping gesture to cause
dynamic guide 912 to be displayed. It should be noted that in the
example illustrated in FIG. 15 the starting point of the downward
swiping gesture is illustrated as inside of the upper protrusion on
navigational area 740, in other examples, downward swipes having
other starting points may cause dynamic guide 912 to be presented.
In one example, a downward swipe initiated anywhere on navigational
area 740 having a minimum distance may cause dynamic guide 912 to
be displayed. In one example, in a manner similar to that described
above with respect to FIGS. 9B-9C, the display of dynamic guide 912
may be based on a threshold. That is, for example, dynamic guide
912 may be partially displayed and may either snap back or be
displayed as illustrated in FIG. 14A based on whether the distance
traveled by a user's finger exceeds a threshold. In one example, a
threshold may be a distance of approximately 15-20% of the length
of navigational area 740. In the example illustrated in FIG. 14A,
the size of window 902 is reduced compared to the size of window
902 as displayed in FIG. 9A and dynamic guide 912 is displayed in a
non-overlapping manner with respect to window 902. It should be
noted that in other examples, dynamic guide 912 may be displayed as
overlapping a full screen presentation of window 902.
[0135] As illustrated in FIG. 14A, dynamic guide 912 includes tiles
914a-914e and tiles 916a-916c. Further, in the example of FIG. 14A,
tile 914e is illustrated as an active tile 918. Tiles 914a-914e are
associated with items of content that a user has recently accessed
(e.g., recent previously tuned channels). It should be noted that
recently accessed items of content may be associated with one or
more distinct services (e.g., various types of media service). In
one example, tiles 914a-914e may be chronologically ordered from
right to left, (e.g., the item of content associated with tile 914e
is the most recently accessed item of content, the item of content
associated with tile 914d is the second most recently accessed item
of content, and so on). In the case where each of the items of
content associated with tiles 914a-914e include recently accessed
television channels, a minimum channel access time (e.g., 5
seconds) may be used in order to add a channel to the group of
recent channels. In one example, dynamic guide 912 may be
configured to display a maximum number of tiles corresponding to
items of content recently accessed by a user. For example, dynamic
guide 912 may be configured to display up to five tiles
corresponding to items of content previously accessed by a user. It
should be noted that in some cases, a user may have recently
accessed fewer items of content than the maximum number of tiles
corresponding to recently accessed items of content that may be
displayed. For example, recently accessed items of content may be
defined according to a viewing session (e.g., recently accessed
items of content may be reset on power up/down events). In this
case, dynamic guide 912 may be configured to display additional
tiles associated with trending items of content.
[0136] In the example illustrated in FIG. 14A, tiles 916a-916c are
associated with trending items of content. In one example, trending
items of content may include items of content currently available
to a user that are popular with one or more users of a media
service, a social network, a search service, or the like. For
example, each of the respective items of content associated with
tiles 916a-916d may be associated with a ranking value comprised of
one or more of: the number of users currently accessing the item of
content through a media service, the number of social media
comments (e.g., tweets, posts, etc.) referencing the item of
content within a past time interval, and the number of search
queries related to the item of content within a past time interval.
In one example, the ranking value may be referred to as a buzz
value. An example of a buzz value is described in commonly
assigned, currently pending U.S. patent application Ser. No.
14/260,677 filed Apr. 24, 2014, which is incorporated by reference
in its entirety. Further, it should be noted that items of content
associated with tiles 916a-916d may include items of content
available on an on demand basis.
[0137] In the example illustrated in FIG. 14A based on the
availability of tuning resources (e.g., number of tuners and/or
number of media streams that can be simultaneously accessed), tiles
914a-914e and tiles 916a-916c may include an image plate associated
with an item of content or a video presentation associated with an
item content. In one example, active tile 918 may include a video
presentation and the other tiles may include an image plate. In one
example, a user may cause the active tile 918 to change by
performing horizontal swipe gestures. In one example,
inside/outside multi-level horizontal swipe gestures may be enabled
when dynamic guide 912 is displayed. In this case, an inside
horizontal swipe gesture may correspond to changing active tile 918
and an outside horizontal swipe gesture may correspond to
application switching, as described above. In another example,
inside/outside multi-level horizontal swipe gestures may be
disabled when dynamic guide 912 is displayed. In this case, both
inside horizontal swipe gestures and outside horizontal swipe
gestures may correspond to changing active tile 918.
[0138] As described above, in the example where user interface 700
is implemented using computing device 790, in addition to a user
providing input by performing gestures using navigational area 740,
a user may perform a single click or a multiple click activation by
causing switch 787 be activated. In one example, computing device
200 may be configured such that a user performing directional click
activations causes a tile to become the active tile 918. For
example, referring to FIG. 14A, upon a user performing three
subsequent left click activations, tile 914b may become the active
tile 918. Further, in one example, computing device 200 may be
configured such that upon a user performing an OK single click
activation, an item of content associated with active tile 918 may
become associated with window 902. That is, a video presentation
associated with an item of content associated with active tile 918
may become displayed in window 902. In one example, window 902 may
remain the size illustrated in FIG. 14A, upon an OK single click
activation. In another example, window 902 may be presented in a
full screen viewing mode, as illustrated in FIG. 9A, upon an OK
single click activation. In this manner, in the case of a
television service, an OK single click activation, when dynamic
guide 912 is displayed may correspond to a channel change function.
Further, it should be noted that the item of content associated
with window 902 prior to the OK single click activation may be
added to a list recently accessed items of content and presented as
a tile in dynamic guide 912.
[0139] In one example, in addition to an OK single click activation
when dynamic guide 912 is displayed causing an item of content
associated with active tile 918 to become associated with window
902, computing device 200 may be configured such that an OK
double-click activation may cause a graphical user interface
providing more information for an item of content associated with
active tile 918 to be displayed. An example of a graphical user
interface providing more information for an item of content is
illustrated in FIGS. 16A-16F and in some examples may be referred
to as a media card graphical user interface. It should be noted
that in one example, an OK double-click activation may cause an
item of content associated with active tile 918 to become
associated with window 902 and an OK single click activation may
cause a media card to be displayed. In one example, a user may be
able to change the respective functionality associated with an OK
single click activation and an OK double-click activation (e.g., by
changing a setting using a menu graphical user interface). Further,
it should be noted that in some examples in addition to, or as an
alternative to click activations, taps on navigation area 740,
including, for example, taps of OK button 742 may cause functions
associated with active tile 918 to occur. In this manner, graphical
user interface 900 as illustrated in FIG. 14A and user interface
700 may enable a user to select an item of content. In one example,
when graphical user interface 900 as displayed in FIG. 14A is
presented a user may cause graphical user interface 900 as
displayed in FIG. 9A to be presented by performing a subsequent
downward swipe, an upward swipe and/or another activation
corresponding to an exit function (e.g., activating a corresponding
virtual button).
[0140] Referring again to the example illustrated in FIG. 15, when
an item of content associated with window 902 is displayed in a
full screen viewing mode, a user may perform an upward swiping
motion to cause on now guide 920 to be displayed. As further
illustrated in FIG. 15, a subsequent upward swiping motion when on
now guide 920 is displayed may cause grid guide 926 to be
displayed. Each of on now guide 920 and grid guide 926 may
correspond to items of content corresponding to events. That is,
availability of items of content associated with on now guide 920
and grid guide 926 may be based on a time and date (e.g., items of
content may correspond to an over-the-air broadcast or the like).
It should be noted that in one example, a single upward swipe
exceeding a threshold may cause grid guide 926 to be displayed. In
one example, an upward swipe having a distance of approximately
15-20% of the length of navigational area 740 may cause on now
guide 920 to be displayed and an upward swipe having a distance of
approximately 50% of the length of navigational area 740 may cause
on grid guide 926 to be displayed. It should be noted that in a
manner similar to that described above with respect to dynamic
guide 912, the display of on now guide 920 and/or grid guide 926
may be based on a threshold. That is, for example, on now guide 920
may be partially displayed and may either snap back or be displayed
as illustrated in FIG. 14B based on whether the movement of a
user's finger exceeds a threshold.
[0141] As illustrated in FIG. 14B, on now guide 920 includes tiles
924a-924f, where tile 924c is an active tile 922. Further, as
illustrated in FIG. 14C, when grid guide 926 is displayed, on now
guide 920 is included as a row of grid guide 926. Tiles 924a-924f
may be similar to tiles 914a-914e described above. Further, active
tile 922 may be similar to active tile 918 described above. That
is, a user may perform horizontal swipe gestures and/or directional
click activations to cause active tile 922 to change and may
further perform activations, e.g., OK click activations as
described above, to cause functions associated with active tile 922
to occur. Further, it should be noted that in one example, a user
may perform vertical swipe gestures to cause items of content other
than items of content associated with tiles in on now guide to
become selected. For example, referring to FIG. 14C, in one
example, a user may perform an upward swipe gesture to cause items
of content associated with 11:00 PM to be associated with tiles
924a-924f. That is, a user may scroll with respect to grid guide
926. Further, in one example, a user may perform diagonal swipes to
scroll through channels and times simultaneously.
[0142] In one example, horizontal swipe gestures when on now guide
920 is displayed may be distinguished based on the speed at which a
user performs a swipe, where the speed may be determined by motion
events. For example, a relatively slow swipe may cause the distance
the user moves a finger along navigational area 740 to correspond
to a linear change in the active tile 922 and a relatively fast
swipe may cause the distance the user moves a finger along
navigational area 740 to correspond to an exponential change in the
active tile 922. For example, a slow left horizontal swipe may
cause one of tiles 924a-924b to become the active tile 922 for a
swipe having a distance of 0% to 50% of the width of navigational
area 740 and a fast left horizontal swipe having a distance of 0%
to 50% of the width of navigation area 740 may correspond to a
selection of one of any number of items of contents (e.g., 20-100
items of content). For example, if tile 924c is associated with
channel 120 in a television listing, a fast left horizontal swipe
may enable a user to cause channel 70 to become the active tile. As
described in further detail below, images associated with items of
content may be cached based on the likelihood that a user will
perform a gesture that will cause a tile to be displayed. In this
manner, graphical user interface 900 as illustrated in FIGS.
14B-14C and user interface 700 may enable a user to browse for item
of content having a presentation time. It should be noted that in
one example, active tile 922 may remain in a center position, e.g.,
the position illustrated in FIG. 14C, as a user performs swipes to
navigate grid guide 926.
[0143] As described above, with respect to dynamic guide 912, upon
a user performing respective OK click activations or the like, an
item of content associated with active tile 918 may be presented in
window 902 or a corresponding media card graphical user interface
may be presented. Similar functions may be performed for an item of
content associated with active tile 922, upon a user performing
click activations or the like. FIGS. 17A-17B are conceptual
diagrams illustrating the graphical user interfaces illustrated in
FIGS. 16A-16F and corresponding example inputs received by an
example user interface. As illustrated in FIGS. 16A-16F, in
additional to including tiles 924b-924d, graphical user interface
950 includes active tile 952, description information 960, review
information 962, watch icon 964, record icon 966, more icon 968,
tiles 970a-970e, tiles 972a-972g, tiles 974a-974g, tiles 976a-976g,
crew member information 980, add as favorite icon 982, and auto
record icon 984. The example illustrated in FIGS. 16A-16F
represents an example where a user performs a continuous upward
swipe gesture and/or multiple subsequent upward swipe gestures
using navigational area 740, thereby causing graphical user
interface 950 to scroll vertically. It should be noted that in
other examples other types of scroll operation activations may be
used (e.g., activation of navigation arrow buttons 531 or arrow
soft keys). As illustrated in FIGS. 16A-16F, as graphical user
interface 950 scrolls, respective tiles or icons may become active.
That is, tile 924c is active in FIG. 16A, watch icon 964 is active
in FIG. 16B, tile 970c is active in FIG. 16C, tile 972d is active
in FIG. 16D, tile 974d is active in FIG. 16E, and add as favorite
icon 982 is active in FIG. 16F. Upon a user performing an OK single
click activation or an OK multi-click activation, as described
above, or another activation (e.g., taps of the OK button 742,
activations of select button 532, etc.) a function corresponding to
an active icon may occur or a presentation corresponding to an item
of content associated with an active tile may occur. Further, when
an icon or tile within a particular row is active, a user may cause
the active tile 952 to change by performing horizontal swipe
gestures. In one example, inside/outside multi-level horizontal
swipe gestures may be enabled when graphical user interface 950 is
displayed. In another example, inside/outside multi-level
horizontal swipe gestures may be disabled when graphical user
interface 950 is displayed.
[0144] As illustrated in FIGS. 16A-16F and FIG. 17A, the size of
tiles in graphical user interface 950 changes based on the position
of the tiles with respect to the vertical center of display 250. In
one example, in a manner similar to that described above with
respect to FIG. 10 and FIG. 11, the movement of tiles and the
changing of size of tiles may be synchronized with the movement of
a user's finger on navigational area 740. Further, a particular row
of tiles may snap to the vertical center of display 250 based on
the movement of the user's finger exceeding a threshold. In this
manner, a user may preview items of content associated with a row
of tiles adjacent to a currently selected row of tiles before
causing the adjacent row of tiles to move to the vertical center of
display 250.
[0145] Referring to FIG. 16A, description information 960 and
review information 962 correspond to the item of content associated
with tile 924c (i.e., Marvel's Agents of the S.H.I.E.L.D.).
Description information 960 provides information that enables a
user to determine whether an item of content is of interest. In the
example illustrated in FIG. 16A description information 960
includes a plot synopsis, genre information, content rating,
content presentation time, content video and audio information, and
captioning service information. Review information 962 includes
information regarding the subjective quality of the item of
content. In the example illustrated in FIG. 16A, review information
960 includes a number of stars on a five star scale, which may be
based on feedback provided by users of a media service, and reviews
provided from webpage content distribution sites (e.g., from the
Rotten Tomatoes web site and the Flixster website). In other
examples, review information 960 may include review information
from other sources. In one example, computing device 200 may be
configured to enable a user to select the sources of review
information that will be included in graphical user interface 950
(e.g., by changing a setting using a menu graphical user
interface). In the example illustrated in FIG. 16A, tile 924c is an
active tile 952. In one example, computing device 200 may be
configured such that upon a user performing an OK single click
activation, the item of content associated with tile 924c is
presented in a full screen viewing mode. In a manner similar to
that described above with respect to FIG. 14C, a user may perform
fast or slow horizontal swipe gestures in order to cause another
tile to become the selected tile.
[0146] In the example illustrated in FIG. 16B watch icon 964 is
active. In one example, when watch icon 964 is active, upon a user
performing an OK single click activation, the item of content
associated with tile 924c may be presented in a full screen viewing
mode. In one example, a user may perform horizontal swipe gestures
in order to cause record icon 966 or more icon 968 to become
active. Further, in one example, a user may perform directional
click activations in order to cause record icon 966 or more icon
968 to become active. Record icon 966 may be configured to enable a
user to cause an item of content associated with tile 924c to be
stored to a storage device (e.g., a disk drive of a PVR), upon
activation. In one example, an intermediate graphical user
interface the enables a user to change and/or confirm recording
settings may be presented. More icon 968 may be configured to cause
additional information associated with an item of content
associated with tile 924c to be presented on display 250, upon
activation. In one example, additional information may include
information available from a webpage content distribution site. For
example, a web site associated with the item of content associated
with tile 924c may be retrieved and presented.
[0147] Referring to FIGS. 16A-16D, items of content associated with
tiles 970a-970e represent other episodes of a television series
associated with tile 924c. That is, for example, tile 924c may
represent an episode that is currently available through an
over-the-air transmission and tiles 970a-970e may represent
previously aired or to be aired episodes. In the example
illustrated in FIG. 16C, tile 970c is an active tile 952. In one
example, computing device 200 may be configured such that upon a
user performing an OK single click activation, or the like, the
item of content associated with tile 970c may be presented in a
full screen viewing mode. In a manner similar to that described
above with respect to FIG. 16B, a user may perform a horizontal
swipe gestures in order to cause another one of tiles 970-970e to
become the selected tile 952. It should be noted that in the case
where an episode represents an episode to be aired at a future date
(e.g., next week's episode), upon a user performing an OK single
click activation, or the like, a graphical user interface including
additional information about the particular episode may be
displayed. Referring to FIGS. 16C-16E, tiles 972a-972g may be
similar to tiles 970a-970e. In the example illustrated in FIGS.
16C-16E, tiles 972a-972g represent items of content that are
related to the item of content associated with tile 924. For
example, items of content associated with tiles 972a-972g may be of
a similar type of genre to the item of content associated with tile
924. One or more algorithms may be used to define similar types of
items of content. Tiles 972a-972g may be activated in a manner
similar to the activation of tiles 970-970e described above. That
is, for example, upon a user performing an OK click activation, or
the like, the item of content associated with tile 972d may be
presented in a full screen viewing mode or a graphical user
interface including additional information may be displayed.
[0148] Referring to FIGS. 16D-16F, tiles 974a-974g represent cast
and crew members associated with the item of content associated
with tile 924. Tiles 974a-974g may be activated in a manner similar
to the activation of tiles 970a-970e described above. In the
example illustrated in FIG. 16E, tile 974d is the selected tile
952. In one example, upon a user performing an OK single click
activation, or the like, additional information associated with the
crew member associated with tile 974d to be presented on display
250. In one example, information available from a webpage content
distribution site may be retrieved and presented, e.g., a web site
associated with the crew member may be retrieved and presented.
[0149] In the example illustrated in FIG. 16F, add as favorite icon
982 is active. In one example, when add as favorite icon 982 is
active, upon a user performing an OK single click activation, items
of content associated with the crew member associated with tile
974d may be presented to a user. For example, items of content
associated with favorite crew members may be highlighted in grid
guide 926 or may be presented to a user through one or more other
graphical user interfaces (e.g., pop-up notifications, etc.).
Further, in one example, favorite crew members may be stored as
part of a user profile. Further, a user may perform horizontal
swipe gestures, or directional click activations, in one example,
in order to cause auto record icon 984 to become active. Auto
record icon 984 may be configured to enable a user to cause items
of content associated with the crew member to be stored to a
storage device, upon activation. As further illustrated in FIG.
16F, crew member information 980 may be displayed (e.g.,
biographical information). In this manner, graphical user interface
950 as illustrated in FIGS. 16A-16F and user interface 700 may
enable a user view additional information associated with a
particular item of content and may enable a user to find additional
items of content associated with the particular item of
content.
[0150] As described above, graphical user interface 950 may be
displayed upon a user causing on now guide 920 or grid guide 926 to
be presented when a full screen view mode is displayed and further
performing an activation of an active tile in a guide. In some
cases a user may wish to return to the full screen viewing mode
when graphical user interface 950 is displayed. FIG. 17B
illustrates an example of a specific gesture that a user may
perform in order to cause display 250 to return to a full screen
viewing mode. In some instances, the gesture illustrated in FIG.
17B may cause functionality similar to functionality associated
with activation of exit button 537 to occur and as such in some
cases may be referred to as an exit gesture. In the example
illustrated in FIG. 17B, a left horizontal swipe gesture having a
starting point of outside of the upper protrusion and right
protrusion on navigational area 740 is illustrated. In one example,
a left horizontal swipe gesture having a starting point of outside
of the upper protrusion and right protrusion on navigational area
740 having a distance of approximately 15-20% of the length of
navigational area 740 may cause a full screen viewing mode to be
displayed. It should be noted that in other examples, other
starting points and directions (e.g., diagonal swipes) may be
correspond to an exit gesture.
[0151] As described above with respect to FIG. 11, when graphical
user interface 900 as illustrated in FIG. 9A is presented on
display 250, a user may perform an outside swipe gesture in order
to cause an application to switch from a television viewing
application to an on demand portal. FIGS. 18A-18B illustrate an
example graphical user interface associated with an on demand
portal. In the example illustrated in FIGS. 18A-18B, graphical user
interface 1100 includes tiles 1102a-1102e, tiles 1104a-1104e, and
rating information 1106. In the example illustrated in FIGS.
18A-18B, tiles 1102a-1102e are associated with categories of items
of content, which may include genres, and the like, and tiles
1104a-1104e are associated with items of content within a
category.
[0152] Referring to FIG. 18A, the tile located in the center of
graphical user interface 1100 is an active tile. In a manner
similar to that described above with respect to graphical user
interface 900 and graphical user interface 950, a user may cause
one of tiles 1102a-1102e to become active by performing a
relatively fast horizontal swipe gesture or a relatively slow
horizontal swipe gesture. It should be noted that additional tiles
associated with genre may be displayed on display 250 in response
to a horizontal swipe gesture. For example, there may be dozens of
available genres and graphical user interface 1100 may display five
tiles associated with genre at a time. Further, in a manner similar
to that described above with respect to FIGS. 16A-16F, a user may
perform upward swipe gestures and downward swipe gestures in order
to cause a row of tiles to be positioned at the vertical center of
display 250. In the example illustrated in FIG. 18A, upon a user
performing a downward swipe gesture, a row of tiles associated with
popular items of content may be positioned at the vertical center
of display. In one example, popular items of content may be based
on a ranking value in a manner similar to trending items of content
being associated with a ranking value as described above. Further,
in the example illustrated in FIG. 18A, upon a user performing an
upward swipe gesture, a row of tiles associated with television
network categories may be positioned at the vertical center of
display. In this manner, graphical user interface 1100 enables a
user to browse categories of items of content as well as items of
content using horizontal swipe gestures and vertical swipe
gestures.
[0153] Computing device 200 may be configured such that upon a user
performing an OK click activation, or the like, as described above,
when one of tiles 1102a-1102e is active, or another tile associated
with a category is active, corresponding tiles associated with
items of content within a genre category are displayed. Graphical
user interface 1100 as displayed in FIG. 18B represents an example
where a user performs an OK click activation, or the like, when
tile 1102c is active. That is, items of content associated with
tiles 1104a-1104e are within the Action & Adventure genre. A
user may cause one of tiles 1104a-1104e (or tiles not currently
displayed) to become active by performing horizontal swipe
gestures. When a tile is active, rating information 1106
corresponding to the item of content associated with the active
tile is displayed. Rating information 1106 may be similar to rating
information 962 described above. Further, tiles 1104a-1104e may be
activated in a manner similar to the activation of tiles 970a-970e
described above. That is, for example, upon a user performing an OK
click activation, or the like, the item of content associated with
tile 1104c may be presented in a full screen viewing mode or a
graphical user interface including additional information may be
displayed. In one example, a graphical user interface that enables
a user to purchase access to an item of content may be
displayed.
[0154] As illustrated in FIG. 18B "Back to Genres" is displayed at
the top of graphical user interface 1100 and "Browse by Network" is
displayed at the bottom of graphical user interface 1100. In this
manner, in one example, upon a user performing a downward swipe
gesture, graphical user interface 1100 as illustrated in FIG. 18A
may be displayed and upon a user performing an upward swipe
gesture, graphical user interface 1100 may display a row of tiles
associated with television networks at the center vertical
position. That is, upward and downward swipe gestures may enable a
user to return to category browsing. In this manner, graphical user
interface 1100 and navigational area 740 may be configured to
enable a user to browser and select item of content available on an
on demand basis using swipe gestures and click activations.
[0155] As described above, with respect to FIGS. 9A-18B, when an
item of content is displayed in a full screen viewing mode, a user
may perform inside horizontal swipe gestures, outside horizontal
swipe gestures, downward swipe gestures, and upward swipe gestures
using navigational area 740 and a computing device receiving each
particular gesture may cause different graphical user interfaces to
be displayed that enable a user to browse and select items of
content available through one or more diverse application, sources,
and/or portals using click activations. Thus, computing device 200,
user interface 700, and the graphical user interfaces described
with respect to FIGS. 9A-18B are configured to enable a user to
browse and select items of content available through one or more
diverse application, sources, and/or portals using gestures and
click activations.
[0156] Referring to FIGS. 19A-19E, flowchart 1900 illustrates an
example of how graphical user interfaces described herein may be
presented on a display. It should be noted that although flowchart
1900 is described with respect to computing device 200 and user
interface 700, the techniques described with respect to flowchart
1900 may be performed using any and all combinations of components
of computing devices and user interfaces. Further, it should be
noted that flowchart 1900 illustrates one example of how graphical
user interfaces described herein may be presented on a display and
does not include all possible user inputs that may be provided in
combination with the graphical user interfaces and user interfaces
described herein and as such flowchart 1900 should not be construed
to limit the techniques described herein. Further, as described
above, interpreting whether touch events correspond to a motion
event and whether motion events correspond to a gesture may be
determined by a computing device and/or a companion device. Thus,
techniques described with respect to FIGS. 19A-19E may be generally
applicable regardless of how processing (e.g., touch event
handling) is distributed between a computing device and a companion
device.
[0157] Referring to FIG. 19A, computing device 200 renders a full
screen presentation of a selected item of content (1902). An
example of a rendering of a full screen presentation of an item of
content is illustrated in FIG. 9A. In addition to rendering a full
screen presentation, computing device 200 performs background
processes (1904). Background processes may include, at least, any
process used to optimize CPU and/or GPU usage and/or reduce any
delay perceived by a user interacting with graphical user
interfaces. For example, as described above, computing device 200
may be configured to perform pre-tuning techniques, including
simulating playback of an item of content that a user is likely to
access, in order to reduce the time required to render a full
screen video presentation for an item of content and/or maintain
synchronization with an event. Further, as described above, when a
full screen video presentation associated with a television viewing
application is displayed, processes associated with other
applications, including media streaming applications, may occur,
such that the media streaming application remains in a state that
reduces loading time, upon a user switching to the application
(e.g., a user performing an outside swipe gesture). Further, as
described above, images associated with items of content may be
loaded from a portion of system memory 204 to another portion of
system memory 204 (e.g., from a hard disk drive to a cache) based
on user behavior in order to reduce the time required to render the
images on a display.
[0158] FIG. 20 represents an example of one of a plurality of
background processes that may be performed by computing device 200.
FIG. 20 illustrates an example of loading images based on user
behavior. Flowchart 2000 illustrates an example of loading images
associated with a graphical user interface from a portion of system
memory 204 to a cache. Loading images to a cache, in some examples,
may be referred to as pre-loading. Referring to FIG. 20, computing
device 200 loads zero or more images associated with one or more
graphical user interfaces based on a user profile (2002). That is,
for example, computing device 200 may load zero or more images
associated with one or more of each of the graphical user
interfaces described above with respect to FIGS. 9A-18B based on
user profile information. It should be noted that in some examples,
loading images may include formatting images and/or storing images
as a hidden element (e.g., a <div> element in HTML) so that
they may be cloned or attached to another element. Formatting
images and storing images as hidden elements may reduce the amount
of time required to render an image on a display.
[0159] In one example, computing device 200 may pre-load images
based on the likelihood a user will perform one of an inside
horizontal swipe gesture, an outside horizontal swipe gesture, a
downward swipe gesture, or an upward swipe gesture. The likelihood
of a user performing a particular gesture may be based on behavior
information included in a user profile. For example, computing
device 200 may determine that a particular user is more likely to
perform channel change transitions before accessing a grid guide
based on past behavior of the user. It should be noted that loading
images based on a user profile may include loading a subset of
available images to a cache and, in some cases prioritizing the
loading of the subset of images. For example, computing device 200
may load image plates and information groups for ten channels
adjacent to a currently selected channel and images associated with
tiles of a dynamic guide. Each of the images may be prioritized
such that they are loaded in a particular order. For example, image
plates and information groups for five channels adjacent to the
currently selected channel (e.g., five higher numbered channels)
may be prioritized over images associated with a dynamic guide, and
images associated with a dynamic guide may be prioritized over
image plates and information groups for the other five channels
adjacent to the currently selected channel (e.g., five lower
numbered channels). For example, as described above, left hand
dominant users may be more likely to perform swipes to the left and
thus more likely to tune to higher numbered channels.
[0160] Referring to FIG. 20, computing device 200 receives an
initial user interaction (2004), e.g., a touch event, a motion
event, or a gesture. Upon receiving the initial user interaction,
computing device 200 stops the loading process (2006). It should be
noted that an initial user interaction may be received prior to a
loading process being completed. For example, computing device 200
may receive an initial user interaction before being able to load
all of the image plates and information groups for ten channels
adjacent to a currently selected channel (e.g., 3 of 10 image
plates and information groups may be loaded when an initial user
interaction is received). Stopping the loading process, upon
receiving an initial user interaction, may optimize computing
resources of computing device 200 and in some cases may be
necessary to achieve an acceptable level of performance. For
example, in the event an initial user interaction corresponds to
switching from a television viewing application to an on demand
media streaming application, it may be more efficient to allocate
CPU resources to loading and rendering graphics associated with the
on demand media streaming application rather than continuing to
load images associated with the television application to a cache.
In this manner, the manner in which images are prioritized may
change based on user interactions.
[0161] Referring again to FIG. 20, after a last user interaction is
received, computing device 200 waits a specified amount of time
(2008) before returning to the image loading process. For example,
computing device 200 may wait approximately two seconds before
pre-loading any additional images. Waiting a specified amount of
time may conserve computing resources. Further, because the manner
in which images are prioritized may change based on user
interactions, it may be more efficient to wait after a particular
user interaction before loading images. That is, computing device
200 may wait until a relatively stable state before loading images.
For example, in the case where pre-loading stops when graphical
user interface 900 as illustrated in FIG. 9A is displayed and a
user provides interactions that subsequently cause graphical user
interface 950 to be displayed, it may be efficient to resume
pre-loading after it is determined that a user is likely to
continue browsing items of content while graphical user interface
950 is displayed. In this manner, computing device 200 may be
configured to dynamically pre-load images based on user behavior.
It should be noted that the process illustrated in FIG. 20 may be
performed in parallel with the process illustrated in FIGS.
19A-19E.
[0162] Referring again to FIG. 19A, computing device 200 determines
whether a horizontal inside swipe is initiated (1906). An example
of a horizontal inside swipe is illustrated in FIG. 8A. In one
example, computing device 200 may determine that a horizontal
inside swipe is initiated based on touch event data received from a
companion device and whether touch event data indicates that
movement of a user's finger exceed a minimum distance. An example
of a process that may occur upon determining that a horizontal
inside swipe is initiated is illustrated in FIG. 19B. Computing
device 200 determines whether a horizontal outside swipe is
initiated (1908). An example of a horizontal inside swipe is
illustrated in FIG. 8B. In one example, computing device 200 may
determine that a horizontal outside swipe is initiated based on
touch event data received from a companion device. An example of a
process that may occur upon determining that a horizontal outside
swipe is initiated is illustrated in FIG. 19C. Computing device 200
determines whether an upward swipe is initiated (1910). An example
of a process that may occur upon determining that upward swipe is
initiated is illustrated in FIG. 19D. Computing device 200
determines whether a downward swipe is initiated (1912). An example
of a process may that occur upon determining that a downward swipe
is initiated is illustrated in FIG. 19E. In this manner, as
illustrated in FIG. 19A, computing device 200 renders a full screen
presentation and performs background processes while determining
whether a particular user input has been received by a user
interface. Based on whether particular user inputs are received the
full screen presentation and background processes may be updated.
The process illustrated in FIG. 19A may continue throughout a
viewing session (e.g., while a user is accessing television
programming through a television application).
[0163] As described above, a horizontal inside swipe may correspond
to channel change transition. Upon determining that a horizontal
inside swipe is initiated, (i.e., a channel change transition is
initiated in the example illustrated in FIG. 19B), computing device
200 determines whether the swipe is a left swipe or a right swipe
(1914). Upon determining that a left swipe occurs, computing device
200 renders graphics for a higher numbered television channel
(1916). For example, referring to FIG. 9B, the item of content
associated with window 902 may correspond to channel number N and
the item of content associated with window 904 may correspond to
channel number N+1. Upon determining that a right swipe occurs,
computing device 200 renders graphics for a lower numbered
television channel (1918). For either a left or right swipe,
computing device 200 determines whether a user continues a swipe
gesture such that the gesture is within a threshold (1920). Upon
determining that a gesture is within a threshold, computing device
200 initiates access to an item of content (1922). Examples of
initiating access to an item of content based on a gesture being
within a threshold are described above with respect to FIG. 10.
Computing device 200 further determines whether a threshold is
exceeded (1924). Upon determining that a threshold is exceeded,
computing device 200 changes a selected item of content (1926).
Examples of changing a selected item of content based on a gesture
exceeding a threshold are described above with respect to FIG. 10.
Computing device 250 determines whether an action up event occurs
(1928). That is, computing device 250 determines whether a user
completes a swipe gesture. Upon an action up event occurring,
computing device 200 renders a full screen presentation of a
selected item of content. The selected item of content may include
a new item of content based on whether the horizontal inside swipe
gesture exceeded a threshold.
[0164] As described above, a horizontal outside swipe may
correspond to an application switching transition. Upon determining
that a horizontal outside swipe is initiated (i.e., an application
switching transition is initiated in the example illustrated in
FIG. 19C), computing device 200 renders graphics for an application
zoom out view (1930). An example of graphics that may be rendered
for an application zoom out view are illustrated in FIG. 12.
Computing device 200 determines whether the swipe is a left swipe
or a right swipe (1932). Upon determining that a left swipe occurs,
computing device 200 initiates loading of an N+1 application
(1934). Upon determining that a right swipe occurs, computing
device 200 initiates loading of an N-1 application (1936). It
should be noted that N+1 and N-1 are relative numbers with respect
to a currently selected application N. For example, referring to
FIG. 12, the application associated with window 902 may be the N
application, the application associated with window 1002c may be
the N+1 application, and the application associated with window
1002b may be the N-1 application. Computing device 200 determines
whether a threshold is exceeded (1938). Upon determining that a
threshold is exceeded, computing device 200 changes a selected
application (1940). Examples of changing a selected application
based on a gesture exceeding a threshold are described above with
respect to FIG. 11. Computing device determines whether an action
up event occurs (1942). Upon an action up event occurring,
computing device 200 renders a full screen presentation of a
selected item of content. The selected item of content may include
a new application based on whether the horizontal outside swipe
gesture exceeded a threshold.
[0165] As described above, an upward swipe may correspond to
presentation of an on now guide and/or a grid guide. Upon
determining that an upward swipe is initiated (i.e., presentation
of an on now guide and/or a grid guide is initiated in the example
illustrated in FIG. 19D), computing device 200 renders an on now
guide (1944). An example of an on now guide is illustrated in FIG.
14B. Computing device 200 further determines whether the upward
swipe is a continued upward swipe (1946). Upon determining that the
upward swipe is a continued upward swipe, computing device 200
renders a grid guide (1948). An example of a grid guide is
illustrated in FIG. 14C. As described above with respect to FIG.
14B and FIG. 14C, guides may include an active tile, which may be
changed based on user input. Computing device 200 changes an active
tile based on received user input (1950). As further, described
above with respect to FIG. 14B and FIG. 14C, while a tile is active
one or more user activations may be received. Computing device 200
determines whether an OK tap activation occurs (1952). Upon
determining that an OK tap activation occurs, computing device 200
presents a media card graphical user interface (1954). An example
of a media card graphical user interface is illustrated in FIGS.
16A-16F. Computing device 200 determines whether an OK click
activation occurs (1956). An example of an OK click activation is
described above with respect to FIG. 8C. Upon determining that an
OK click activation occurs, computing device 200 changes the
selected item of content (1958). Computing device 200 determines
whether an exit input is received (1960). An example of an exit
input is described above with respect to FIG. 17B. As illustrated
in FIG. 19D, upon determining, that an OK click activation occurs
or an exit input is received, computing device 200 renders a full
screen presentation of a selected item of content. The selected
item of content may include a new item of content based on whether
an OK click activation occurred.
[0166] As described above, a downward swipe may correspond to
presentation of a dynamic guide. Upon determining that a downward
swipe is initiated (i.e., presentation a dynamic guide is initiated
in the example illustrated in FIG. 19E), computing device 200
renders a dynamic guide (1962). An example of a dynamic guide is
described above with respect to FIG. 14A. As described above with
respect to FIG. 14A, dynamic guides may include an active tile,
which may be changed based on user input. Computing device 200
changes an active tile based on received user input (1964).
Computing device 200 determines whether an OK tap activation occurs
(1966). Upon determining that an OK tap activation occurs,
computing device 200 presents a media card graphical user interface
(1968). Computing device 200 determines whether an OK click
activation occurs (1970). Upon determining that an OK click
activation occurs, computing device 200 changes the selected item
of content (1972). Computing device 200 determines whether an exit
input is received (1974). As illustrated in FIG. 19E, upon
determining, that an OK click activation occurs or an exit input is
received, computing device 200 renders a full screen presentation
of a selected item of content. The selected item of content may
include a new item of content based on whether an OK click
activation occurred. In this manner computing device 200 represents
an example of a computing device configured to enable transitions
between items of content.
[0167] As described herein, in one example, a method of
facilitating access to items of content comprises causing a video
presentation for a selected item of content to be rendered on a
display, determining whether touch event data corresponds to a
particular gesture, causing a guide to be presented on the display,
upon determining that the touch event data corresponds to a
vertical swipe gesture, and causing a transition from the selected
item of content to another item of content, upon determining that
the touch event data corresponds to a horizontal swipe gesture. In
one example, causing a video presentation for a selected item of
content to be rendered on the display includes causing a full
screen video presentation for the selected item of content to be
rendered on the display, and causing a guide to be presented on the
display includes causing a reduced size video presentation and one
or more tiles to be rendered on the display. In one example, each
of the one or more tiles includes visual indicators associated with
respective items of content. In one example, one of the one or more
tiles is an active tile, and the method further comprises changing
the selected item of content to an item of content associated with
the active tile, upon determining that a particular activation
occurs. In one example, the particular activation includes a click
activation. In one example, causing a guide to be presented on the
display includes causing a dynamic guide to be presented on the
display, upon determining that the received touch event data
corresponds to a vertical swipe gesture having a first direction
and causing an on now guide to be presented on the display, upon
determining that the received touch event data corresponds to a
vertical swipe gesture having a direction opposing the first
direction. In one example, causing a dynamic guide to be presented
on the display includes causing one or more tiles to be rendered on
the display, wherein each of the one or more tiles includes visual
indicators associated with respective trending items of content. In
one example, causing an on now guide to be presented on the display
includes causing one or more tiles to be rendered on the display,
wherein each of the one or more tiles includes visual indicators
associated with respective event based items of content. In one
example, causing a transition from the selected item of content to
another item of content includes initiating a change from the
selected item of content to an adjacent item of content within an
ordered set of items of content. In one example, the ordered set of
items of content includes a channel listing and wherein initiating
a change from the selected item of content to an adjacent item of
content includes initiating a change to a lower numbered channel,
upon determining that the received touch event data corresponds to
a horizontal swipe gesture having a first direction, and initiating
a change to a higher numbered channel, upon determining that the
received touch event data corresponds to a horizontal swipe gesture
having a direction opposing the first direction. In one example,
causing a transition from the selected item of content to another
item of content includes causing a window associated with an
adjacent item of content within an ordered set of items of content
to be rendered on the display. In one example, the window is sized
such it spans the height of the display and includes an image plate
and an information group. In one example, the method further
comprises prioritizing images within a subset of images, wherein
the subset includes one or more images from a set of images
associated with a guide and one or more images from a set of images
associated with a transition from the selected item of content to
another item of content. In one example, prioritizing images within
the subset of images includes prioritizing images based on user
profile information. In one example, user profile information
includes information indicating the likelihood of a particular
gesture being performed.
[0168] As described herein, in one example, a device for
facilitating access to items of content comprises an interface
configured to enable communication with a companion device, and one
or more processors configured to cause a video presentation for a
selected item of content to be rendered on a display, determine
whether touch event data received from a companion device
corresponds to a particular gesture, cause a guide to be presented
on the display, upon determining that the received touch event data
corresponds to a vertical swipe gesture, and cause a transition
from the selected item of content to another item of content, upon
determining that the received touch event data corresponds to a
horizontal swipe gesture. In one example, causing a guide to be
presented on the display includes causing one or more tiles to be
rendered on the display, wherein each of the one or more tiles
includes visual indicators associated with respective items of
content, and wherein one of the one or more tiles is an active
tile. In one example, the one or more processors are further
configured to receive a click activation from the companion device
and change the selected item of content to an item of content
associated with the active tile, upon receiving the click
activation. In one example, the one or more processors are further
configured to receive a directional click activation from the
companion device and change the active tile, upon receiving the
directional click activation. In one example, the one or more
processors are further configured to send an indication of tiles
rendered on the display to the companion device, and change the
selected item of content to an item of content upon receiving touch
event data from the companion device that corresponds to activation
of an icon associated with a tile.
[0169] The disclosed and other embodiments, modules and the
functional operations described in this document can be implemented
in digital electronic circuitry, or in computer software, firmware,
or hardware, including the structures disclosed in this document
and their structural equivalents, or in combinations of one or more
of them. The disclosed and other embodiments can be implemented as
one or more computer program products, i.e., one or more modules of
computer program instructions encoded on a computer readable medium
for execution by, or to control the operation of, data processing
apparatus. The computer readable medium can be a machine-readable
storage device, a machine-readable storage substrate, a memory
device, a composition of matter effecting a machine-readable
propagated signal, or a combination of one or more them. The term
"data processing apparatus" encompasses all apparatus, devices, and
machines for processing data, including by way of example a
programmable processor, a computer, or multiple processors or
computers. The apparatus can include, in addition to hardware, code
that creates an execution environment for the computer program in
question, e.g., code that constitutes processor firmware, a
protocol stack, a database management system, an operating system,
or a combination of one or more of them. A propagated signal is an
artificially generated signal, e.g., a machine-generated
electrical, optical, or electromagnetic signal, which is generated
to encode information for transmission to suitable receiver
apparatus.
[0170] A computer program (also known as a program, software,
software application, script, or code) can be written in any form
of programming language, including compiled or interpreted
languages, and it can be deployed in any form, including as a
standalone program or as a module, component, subroutine, or other
unit suitable for use in a computing environment. A computer
program does not necessarily correspond to a file in a file system.
A program can be stored in a portion of a file that holds other
programs or data (e.g., one or more scripts stored in a mark-up
language document), in a single file dedicated to the program in
question, or in multiple coordinated files (e.g., files that store
one or more modules, sub programs, or portions of code). A computer
program can be deployed to be executed on one computer or on
multiple computers that are located at one site or distributed
across multiple sites and interconnected by a communication
network.
[0171] The processes and logic flows described in this document can
be performed by one or more programmable processors executing one
or more computer programs to perform functions by operating on
input data and generating output. The processes and logic flows can
also be performed by, and apparatus can also be implemented as,
special purpose logic circuitry, e.g., an FPGA (field programmable
gate array) or an ASIC (application specific integrated
circuit).
[0172] Processors suitable for the execution of a computer program
include, by way of example, both general and special purpose
microprocessors, and any one or more processors of any kind of
digital computer. Generally, a processor will receive instructions
and data from a read only memory or a random access memory or both.
The essential elements of a computer are a processor for performing
instructions and one or more memory devices for storing
instructions and data. Generally, a computer will also include, or
be operatively coupled to receive data from or transfer data to, or
both, one or more mass storage devices for storing data, e.g.,
magnetic, magneto optical disks, or optical disks. However, a
computer need not have such devices. Computer readable media
suitable for storing computer program instructions and data include
all forms of non-volatile memory, media and memory devices,
including by way of example semiconductor memory devices, e.g.,
EPROM, EEPROM, and flash memory devices; magnetic disks, e.g.,
internal hard disks or removable disks; magneto optical disks; and
CD ROM and DVD-ROM disks. The processor and the memory can be
supplemented by, or incorporated in, special purpose logic
circuitry.
[0173] While this patent document contains many specifics, these
should not be construed as limitations on the scope of an invention
that is claimed or of what may be claimed, but rather as
descriptions of features specific to particular embodiments.
Certain features that are described in this document in the context
of separate embodiments can also be implemented in combination in a
single embodiment. Conversely, various features that are described
in the context of a single embodiment can also be implemented in
multiple embodiments separately or in any suitable sub-combination.
Moreover, although features may be described above as acting in
certain combinations and even initially claimed as such, one or
more features from a claimed combination can in some cases be
excised from the combination, and the claimed combination may be
directed to a sub-combination or a variation of a sub-combination.
Similarly, while operations are depicted in the drawings in a
particular order, this should not be understood as requiring that
such operations be performed in the particular order shown or in
sequential order, or that all illustrated operations be performed,
to achieve desirable results.
[0174] Only a few examples and implementations are disclosed.
Variations, modifications, and enhancements to the described
examples and implementations and other implementations can be made
based on what is disclosed.
* * * * *