US Pat. No. 9,313,533

AD INVENTORY MANAGEMENT SYSTEM

HULU, LLC, Santa Monica,...

1. A method for estimating ad inventory in a video streaming system, by at least one computer, the method comprising:
streaming, by a video streaming service, videos to clients using the video streaming system, wherein the video streaming service
offers a program collection of videos that are available for requesting by the clients;

storing electronic data records for ad impressions from advertisements played during the videos;
determining a probability distribution of samples randomly taken from the electronic data records of the ad impressions during
a first time period, among a population comprising a first combination set of targeted attributes, wherein the samples randomly
taken for each of the samples comprise a second combination set of targeted attributes, and wherein the second combination
set has fewer combinations than the first combination set;

receiving an ad campaign defined by a set of parameters, the ad campaign to run for a second time period defined in the set
of parameters on the video streaming service, wherein the ad campaign includes a query for a combination of targeted attributes;

determining individual programs in the program collection being offered by the video streaming service based on the set of
parameters and the combination of targeted attributes;

forecasting which individual programs of the program collection will be released at least with respect to a time schedule
of new episodes to be released during the second time period;

defining a time-dependent projected viewership function for each program at least in part by summing a series of time-dependent
projected viewership functions for individual episodes forecasted for each program, wherein each time-dependent projected
viewership function comprises a linear function characterized by C+B/N, wherein ‘C’ and ‘B’ are constants, and ‘N’ represents
time since initial release of a respective corresponding one of the individual episodes based on the time schedule of new
episodes;

determining a value for the constants ‘C’ and ‘B’ by analyzing viewership records for the individual episodes of each program;
populating an electronic data structure in a computer memory relating each different combination of the targeted attributes
in the second combination set to a forecasted number of available impressions in the second time period, based on the probability
distribution and a forecasted total number of available impressions in the second time period that is determined based on
the time-dependent viewership functions for the individual programs;

identifying the forecasted number of available impressions in the electronic data structure for each different combination
in the second combination set of the targeted attributes;

estimating an inventory number of impressions for each different combination in the second combination set of the targeted
attributes in the second time period that is available for targeting ads to be included in streamed videos of the program
collection providing ad impressions having the first combination set of targeted attributes by multiplying the forecasted
number of available impressions by a ratio of the forecasted total number of available impressions to a number of samples
taken for the probability distribution; and

retrieving the estimated inventory number of impressions from the electronic data structure based on the combination of targeted
attributes being stored in the electronic data structure in an entry.

US Pat. No. 9,358,452

CONFIGURING ADVERTISEMENTS IN A VIDEO SEGMENT BASED ON A GAME RESULT

HULU, LLC, Santa Monica,...

1. A method for providing input for configuring advertisements in a video segment based on a game result, by at least one
client device, the method comprising:
requesting, by a client device, play of a video segment from a network node;
receiving, by the client device, an interactive game application from the network node, wherein the interactive game application
is configured to operate on the client device to provide a user interface for an interactive game process;

receiving, by the client device, advertisement state information for the video;
configuring and executing, by the client device, the interactive game process on the client device using the advertisement
state information, as a condition precedent to playing the requested video segment;

reporting, by the client device, a game result of the interactive game process to the network node, the game result including
altered advertisement state information; and

playing, by the client device, the video segment to include at least one of (a) selected advertisements determined by the
network node based on the altered advertisement state information during ad slots defined in the video segment, or (b) a number
of the ad slots determined by the network node based on the altered advertisement state information, wherein the video segment
is different from the interactive computer game.

US Pat. No. 9,208,578

LOCAL BINARY PATTERN-BASED OPTICAL FLOW

HULU, LLC, Santa Monica,...

1. A method comprising:
determining, by a computing device, a first local binary pattern for a first image in a video;
determining, by the computing device, a second local binary pattern for a second image in the video;
determining, by the computing device, an optical flow between the first image and the second image based on a distance between
the first local binary pattern and the second local binary pattern, wherein the distance measured between the first local
binary pattern and the second local binary pattern is between binary numbers representing the first local binary pattern and
the second local binary pattern, and wherein the distance between the first local binary pattern and the second local binary
pattern is a summation of square Euclidean distances; and

outputting, by the computing device, the optical flow for use in aligning the first image to the second image.

US Pat. No. 9,210,211

REMOTE AUTOMATED UPDATES FOR AN APPLICATION

HULU, LLC, Santa Monica,...

1. A method for updating a media program streaming application for a media program streaming service, the method comprising:
downloading the media program streaming application including a bootstrap application through a distribution site to a computing
device, wherein initial installation of the media program streaming application is coordinated through the distribution site
to approve the media program streaming application for download;

upon startup of the media program streaming application, running the bootstrap application to determine if the media program
streaming application on the computing device needs to be updated;

sending, by the bootstrap application, a request for a manifest to a remote server;
receiving, by the bootstrap application, the manifest from the remote server, wherein the manifest lists a set of remote core
files stored at the remote server;

reviewing, by the bootstrap application, the manifest to determine if a core memory on the computing device contains a set
of updateable core files that correspond to the set of remote core files;

for each remote core file, performing:
if an updateable core file is present in the core memory that matches a remote core file, loading the updateable core file
from the core memory into an application execution memory; and

if the updateable core file that matches the remote core file is not present in the core memory, requesting the remote core
file from the remote server, receiving the remote core file from the remote server, and loading the received remote core file
into the application execution memory, the remote core file being received without communicating with the distribution site;
and

executing the loaded updateable core files and the received remote core files in the application execution memory without
recompilation of the loaded updateable core files or remote core files to provide the streaming media program service.

US Pat. No. 9,434,653

METHOD FOR PRODUCING BULK CERAMIC COMPONENTS FROM AGGLOMERATIONS OF PARTIALLY CURED GELATINOUS POLYMER CERAMIC PRECURSOR RESIN DROPLETS

Dynamic Material Systems,...

1. A ceramic component made by a process for producing bulk ceramic components from agglomerations of partially cured gelatinous
polymer ceramic precursor resin droplets comprising:
a molded ceramic bulk component having a thickness of less than 1 mm up to several cm; and
gas pathways in the ceramic bulk component of approximately 2% to approximately 98% of the volume of the molded ceramic bulk
component, and ranges in size from approximately 1 to approximately 50 microns, wherein the gas pathways are formed without
a sacrificial sponge material.

US Pat. No. 9,336,824

SCENE DETECTION USING WEIGHTING FUNCTION

HULU, LLC, Santa Monica,...

1. A method comprising:
analyzing, by a computer system, characteristics of a media program to label parts of the media program with a plurality of
labels, wherein parts of the media program that are determined to be substantially similar are labeled with a same label;

generating, by the computer system, a weighting value for each of different partitionings of a sequence of different labels
for the media program based on a weighting function, wherein the weighting function is configured to weight the different
partitionings based on portions created from partitions in the different partitionings;

comparing, by the computer system, the weighting value for each of the different partitionings to select one weighting value
for a partitioning in the different partitionings; and

outputting, by the computer system, the selected partitioning for the selected weighting value, wherein the outputted partitioning
partitions the media program into a set of portions and provides points for insertion of information for a service in the
media program.

US Pat. No. 9,226,023

DEVICE ACTIVATION FOR A SERVICE USING AN OUTPUTTED REPRESENTATION

HULU, LLC, Santa Monica,...

1. A method for activating a first device for using a service, the method comprising:
receiving, by a second device from a third device, a user identifier for a user and a unique identifier for the first device,
the user identifier originating from the third device and the unique identifier originating from the first device in a representation
outputted by the first device, wherein the third device captured the outputted representation in a same physical location
as the first device;

determining, by the second device, a user account for the service, the user account being associated with the user identifier
for the user;

associating, by the second device, the unique identifier for the first device with the user account, wherein the association
allows the user to use the service with the first device;

communicating, by the second device, with the first device to activate the first device to use the service in response to
receiving the user identifier and the unique identifier; and

allowing, by the second device, access to the service from an application running on the first device in response to associating
the unique identifier with the user account and activating the first device.

US Pat. No. 9,477,721

SEARCHING MEDIA PROGRAM DATABASES

HULU, LLC, Santa Monica,...

1. A method comprising:
identifying, by a computing device, a synonym including one or more search terms that is determined to be synonymous with
a term;

accepting, by the computing device, a general search query including the term from a user computer, wherein the general search
query has not been identified as being directed to any particular media program category in a plurality of media program categories;

associating, by the computing device, the synonym with the term in the general search query;
selecting, by the computing device, a search term in the one or more search terms for the synonym for use in identifying a
media program category;

using, by the computing device, the search term of the synonym to identify the media program category in the plurality of
media program categories;

performing, by the computing device, a categorical search of a media program database based on the general search query and
the identified media program category to obtain a categorical search result including a list of media programs that are categorized
in the identified media program category; and

outputting, by the computing device, the categorical search result in conjunction with the identified media program category.

US Pat. No. 9,245,280

PREDICTIVE VIDEO ADVERTISING EFFECTIVENESS ANALYSIS

HULU, LLC

1. A method for predicting effectiveness of video advertising, the method comprising:
sending videos to one or more client devices, wherein video ads are sent to the one or more client devices and viewed during
ad slots in the videos by one or more users during the playing of the videos;

identifying, by a computing device, attributes of a set of previously viewed video ads by automatically analyzing video data
of the set of previously viewed video ads, wherein the set of previously viewed ads are from the video ads played in the ad
slots;

measuring, by the computing device, a video ad metric for the set of previously viewed video ads based on data received in
response to the sending of the set of previously viewed video ads to the one or more client devices;

generating, by the computing device, a machine learning algorithm to predict the video ad metric for new video ads using the
attributes of the set of previously viewed video ads and the measured video ad metric for the set of previously viewed video
ads;

identifying, by the computing device, attributes of a new video ad by automatically analyzing video data in the new video
ad using an attribute identification algorithm;

using, by the computing device, the machine learning algorithm to determine correlation coefficients for features of the set
of previously viewed video ads, wherein the features represent different combinations of the attributes, and wherein the machine
learning algorithm comprises:

w=(XTX)?1XTy,
where

and
?i=xiTw,
where ?i is a predicted video advertising metric, w represents the correlation coefficients, x represents values for the features,
and y represents values associated with the measured video ad metrics for the set of previously viewed ads;

inputting, by the computing device, the features of the new video ad into the machine learning algorithm to estimate the predicted
video advertising metric of the new video ad based on the correlation coefficients and the features of the new video ad.

US Pat. No. 9,319,678

KEYFRAME ALIGNMENT FOR ENCODING VIDEO AT MULTIPLE BITRATES

HULU, LLC, Santa Monica,...

1. A method comprising:
receiving a frame type storage medium including information for frame type decisions made by a first encoding process to encode
a video at a first bitrate to generate a first encoded video at the first bitrate, wherein the frame type decisions were made
based on characteristics of the video; and

while performing a second encoding process to encode the video at a second bitrate to generate a second encoded video at the
second bitrate, performing:

during the second encoding process, retrieving information from the frame type storage medium regarding a frame type decision
made during the first encoding process of the video at the first bitrate;

inserting a keyframe in the second encoded video based on the retrieved information from the frame type storage medium, wherein
the inserted keyframe in the second encoded video is aligned with a corresponding keyframe in the first encoded video;

continuing to retrieve information from the frame type storage medium and inserting keyframes in the second encoded video
until the video is encoded at the second bitrate, wherein keyframes in the first encoded video at the first bitrate are aligned
with keyframes in the second encoded video at the second bitrate;

while performing a third encoding process to encode the video at a third bitrate to generate a third encoded video at the
third bitrate, performing:

during the third encoding process, retrieving information from the frame type storage medium regarding the frame type decision
made during the first encoding process of the video at the first bitrate;

inserting a keyframe in the third encoded video based on the retrieved information from the frame type storage medium, wherein
the inserted keyframe in the third encoded video is aligned with a corresponding keyframe in the first encoded video; and

continuing to retrieve information from the frame type storage medium and inserting keyframes in the third encoded video until
the video is encoded at the third bitrate, wherein keyframes in the first encoded video at the first bitrate are aligned with
keyframes in the third encoded video at the third bitrate.

US Pat. No. 9,445,143

TRANSFERRING A BROADCAST TRANSMISSION TO A REMOTE DEVICE

HULU, LLC, Santa Monica,...

1. A computer program product comprising a computer readable storage medium having program instructions embodied therewith,
wherein the computer readable storage medium is not a transitory signal per se, and the program instructions are readable
by a computing device to cause the computing device to perform a method comprising:
determining that a remote device has moved outside of a pre-defined area associated with a digital video recorder (DVR), wherein
the determining is performed by the DVR; and

transmitting program data from the DVR to the remote device while the remote device remains outside of the pre-defined area,
wherein:
the determining that the remote device has moved outside of the pre-defined area comprises transmitting an infrared or wireless
radio signal from the DVR to the remote device; and

the DVR determines one of:
the remote device is within the pre-defined area when the DVR receives a return infrared or wireless radio signal from the
remote device; and

the remote device is outside of the pre-defined area when the DVR does not receive a return infrared or wireless radio signal
from the remote device.

US Pat. No. 9,286,616

METHOD AND APPARATUS FOR PROVIDING DIRECTED ADVERTISING BASED ON USER PREFERENCES

HULU, LLC, Santa Monica,...

1. A method of providing an advertisement with a media program having at least one advertising break, comprising:
receiving, by a computing device from a user device at a media program provider, an identification of the media program to
be sent to the user device;

transmitting, by the computing device from the media program provider to the user device, metadata defining an advertising
break having at least one advertisement opportunity within the media program, wherein the advertising break is temporally
interposed between playing of the media program, and wherein the metadata is used to configure a media program player of the
user device to request the media program and advertisements during the advertising break;

transmitting, by the computing device from the media program provider to the user device, configuration information defining
a set of events that will trigger advertising viewing data to be sent by the media program player during a temporal session;

at the advertisement opportunity, transmitting, by the computing device to the user device, advertising control options configured
to be output on the user device;

receiving, by the computing device from the user device, a user selection for the output advertising control options, the
user selection affecting sending of an advertisement in the advertising opportunity;

causing sending, by the computing device during the advertisement break, of the advertisement to the user device according
to the user selection for the advertising control options, wherein the media program and advertisement are sent from one or
more sources to the user device in the temporal session, and wherein the advertisement is sent in a communication channel
from the one or more sources using a transport/transmission protocol;

receiving, by the computing device, advertisement viewing data describing the viewing of the advertisement on the user device
via the communication channel using the transport/transmission protocol before the temporal session of sending the media program
to the user device ends, wherein the advertisement viewing data is determined while the advertisement is viewed on the media
program player of the user device and sending of the advertisement viewing data by the media program player is triggered based
on an event in the set of events occurring at the media program player; and

storing, by the computing device, the advertisement viewing data for use in determining an advertisement for a next advertisement
opportunity in the media program.

US Pat. No. 9,307,292

OVERLAY OF VISUAL REPRESENTATIONS OF CAPTIONS ON VIDEO

HULU, LLC, Santa Monica,...

1. A method comprising:
storing, by a computing device, a set of visual representations of captions for a media program and video information for
the media program, wherein text for the captions is rendered in the stored set of visual representations;

receiving, by the computing device, a plurality of first requests for segments of the video information for the media program
from a user device, wherein the user device uses a video playlist to determine the segments of video information to request;

receiving, by the computing device, a plurality of second requests from visual representations of captions corresponding to
the segments of the video information requested from the user device, wherein the user device uses a visual representation
playlist to determine the visual representations of captions to request, wherein the video playlist is separate from the visual
representation playlist; and

in response to the plurality of first requests and the plurality of second requests, sending, by the computing device, the
visual representations of captions from the set of visual representations of captions with the segments of the video information
over a network to the user device, wherein text for the captions has been pre-rendered in the sent visual representations
of captions before sending of the visual representations of captions to the user device and the user device is configured
to directly render and overlay the visual representations of captions over at least a portion of segments of video information
without rendering of the text for the captions on the segments of the video information at the user device.

US Pat. No. 9,467,498

REMOTE AUTOMATED UPDATES FOR AN APPLICATION

HULU, LLC, Santa Monica,...

1. A method for updating a media program streaming application for a media program streaming service, the method comprising:
running, by a computing device, an update application to determine when the media program streaming application on the computing
device needs to be updated based on update information from a remote server;

reviewing, by the update application on the computing device, the update information to determine when the media program streaming
application needs to be updated;

when the media program streaming application needs to be updated, performing:
loading, by the computing device, a set of updateable core files in a plurality of updateable core files from a core memory
of the computing device into an application execution memory;

sending, by the computing device, a request for a set of remote core files to the remote server;
receiving, by the computing device, the set of remote core files from the remote server;
loading, by the computing device, the set of remote core files into the application execution memory; and
executing, by the computing device, the set of updateable core files and the set of remote core files in the application execution
memory without recompilation of the set of updateable core files or set of remote core files to provide the streaming media
program service on the media program streaming application.

US Pat. No. 9,199,163

CONFIGURING ADVERTISEMENTS IN A VIDEO SEGMENT BASED ON A GAME RESULT

HULU, LLC, Santa Monica,...

1. A method comprising:
receiving, by a video server, a request for a video from a client device;
determining, by the video server, advertisement state information for the video;
providing, by the video server, the advertisement state information for the video for use in an interactive computer game
to be played by a user at the client device, wherein the advertisement state information is input into the interactive computer
game to configure game play of the interactive computer game;

receiving, by the video server, a game result determined based on the user playing the game of the interactive computer game,
the game result including altered advertisement state information based on the game play of the interactive computer game;

determining, by the video server, based on the altered advertisement state information, a video segment configuration including
at least one of: (a) selected advertisements to play during ad breaks to be included in a video segment of the video for play
on the client device, or (b) a number of the ad breaks for the video, wherein the video is different from the interactive
computer game; and

streaming, by the video server, the video segment of the video to the client including the number of ad breaks so that the
selected advertisements are played on the client device during the ad breaks if the number of ad breaks is greater than zero,
and no advertisements are played on the client if the number of ad breaks is zero.

US Pat. No. 9,083,640

ADAPTIVE BIT RATE SWITCHING

HULU, LLC, Santa Monica,...

1. A method comprising:
determining, by a computing device, data describing a temporal variability of a bit rate of a first bitstream;
receiving, by the computing device, the first bitstream through a communication channel;
determining, by the computing device, a throughput for the communication channel;
comparing, by the computing device, the throughput of the communication channel with the data describing the temporal variability
of the bit rate of the first bitstream to determine a variance of the first bitstream from the throughput for the communication
channel for a portion of a media program not already received;

determining, by the computing device, an amount of data currently buffered in a buffer for the media program; and
comparing, by the computing device, the amount of data currently buffered to the variance for the portion to determine whether
to switch to receiving a second bitstream, wherein the second bitstream has a different bit rate from the first bitstream.

US Pat. No. 9,483,738

TOPIC MODEL BASED MEDIA PROGRAM GENOME GENERATION

HULU, LLC, Santa Monica,...

23. An apparatus comprising:
one or more computer processors; and
a non-transitory computer-readable storage medium comprising instructions, that when executed, control the one or more computer
processors to be configured for:

defining information for a set of genomes, the set of genomes describing characteristics of media programs;
defining which genomes in the set of genomes correspond to which topics in a set of topics;
inputting textual information for a plurality of media programs and the information for the set of genomes into a model;
training the model to determine a probability distribution of terms for the set of topics based on analyzing the textual information
and the information for the set of genomes, wherein training comprises incorporating a parameter that prevents topics from
being submerged by other topics that are larger via a first item in the model; and

outputting the trained model, wherein the probability distribution of terms is usable to determine genomes for each of the
plurality of media programs, wherein a genome corresponds to a topic and is associated with a media program based on terms
found in the textual information for the media program and the probability distribution of terms for the topic corresponding
to the genome.

US Pat. No. 9,392,304

ENCODING OPTIMIZATION USING QUALITY LEVEL OF ENCODED SEGMENTS

HULU, LLC, Santa Monica,...

1. A method comprising:
encoding a media file using a variable bitrate encoding algorithm based on a plurality of bitrate ranges to generate a set
of encoded segments, wherein a first encoded segment generated by a higher bitrate range has a bitrate that falls within a
bitrate range of a lower bitrate range and not the higher bitrate range;

encoding the media file to generate a second encoded segment based on the lower bitrate range using the variable bitrate encoding
algorithm;

determining, for each bitrate range, an encoded segment for each segment of the media file from the set of encoded segments
based on a quality level of the encoded segment and each bitrate range, wherein the first encoded segment is selected for
the higher bitrate range and the lower bitrate range;

storing the first encoded segment and not the second encoded segment in storage based on the determining of the encoded segment
for each segment of the media file for each bitrate range; and

identifying a playlist for each bitrate range including the encoded segment for each segment of the media file that was determined
for each bitrate range, wherein:

a first playlist associated with the lower bitrate range includes the first encoded segment that was generated based on the
higher bitrate range using the variable bitrate encoding algorithm, and the first encoded segment is included in a second
playlist associated with the higher bitrate range, and

the first encoded segment is provided to a client when the client requests the first encoded segment from the first bitrate
playlist associated with the lower bitrate and the first encoded segment is provided to the client when the client requests
the first encoded segment from the second bitrate playlist associated with the higher bitrate range, the first encoded segment
provided for the first bitrate playlist and the second bitrate playlist having a same bitrate.

US Pat. No. 9,307,261

SPLICING OF VIDEO FOR PARALLEL ENCODING

HULU, LLC, Santa Monica,...

1. A method comprising:
receiving a video at a partial encoder, the partial encoder programmed to only perform a portion of an encoding process of
the video;

determining, by the partial encoder, characteristics of the video to determine differences between the pictures in the video,
the characteristics determined by performing the portion of the encoding process of the video;

analyzing the differences between pictures in the video to
determine ratings for a plurality of potential splice points in the video;
comparing the ratings between pictures to a threshold;
selecting splice points from a subset of the plurality of potential splice points based on the comparing, wherein a splice
point is selected when a rating between pictures meets the threshold;

splicing the video into a plurality of parts based on the splice points; and
sending the plurality of parts to a plurality of encoders, wherein:
the plurality of encoders encode the plurality of parts substantially in parallel,
the encoded plurality of parts are combined to form an encoded version of the video, and
the partial encoder does not encode any of the encoded plurality of parts in the encoded version of the video.

US Pat. No. 9,305,032

FRAMEWORK FOR GENERATING PROGRAMS TO PROCESS BEACONS

HULU, LLC, Santa Monica,...

1. A method comprising:
receiving, by a computer system, an object model including objects determined from a specification for processing beacons,
a beacon being associated with an event occurring at a client while a user is interacting with an application and including
unstructured data;

determining, by the computer system, first information for a beacon object referenced in a basefact object to determine which
beacon objects are applicable for the basefact object, wherein the beacon object includes a set of field objects that identify
a set of composite objects for the beacon object, and the basefact object includes a set of structured data objects that identify
the set of output fields in a composite object to map to a set of structured data fields;

determining, by the computer system, second information for the set of structured data fields referenced in the basefact object
to determine which output fields map to which structured data fields;

determining, by the computer system, third information for a set of transformations for a set of input fields in the set of
composite objects for the beacon to determine how to perform transformations to transform the set of input fields to the set
of output fields; and

generating, by the computer system, instructions for a target program to process the beacons using the first information,
the second information, and the third information to transform the set of input fields to the set of output fields and map
the set of output fields to the set of structured data fields.

US Pat. No. 9,203,910

GEOFILTERING FOR CONTENT BY LOCATION

HULU, LLC, Santa Monica,...

1. A method comprising:
receiving, by a computing device, a first request from a user device for content, wherein first geolocation information for
the user device is determined;

facilitating, by the computing device, a determination whether the first geolocation information complies with a geographical
restriction associated with the content;

receiving, by the computing device, second geolocation information provided by the user device from a media server that received
a second request directed to an address for the content from the user device and a token generated based on the first geolocation
information complying with the geographical restriction; and

facilitating, by the computing device, a determination whether the second geolocation information complies with the geographical
restriction associated with the content by verifying at least a portion of an address from the token with the address in which
the second request for the content was directed, wherein the determination causes a message indicating whether to allow or
deny the second request to be sent to the media server.

US Pat. No. 9,426,537

PROVIDING DIRECTED ADVERTISING BASED ON USER PREFERENCES

HULU, LLC, Santa Monica,...

1. A method comprising:
providing, by a computer system, advertisement options for configuring a total amount of advertisements that is set by a media
program provider of a video program, wherein the advertisement options allow selecting of a number of advertising blocks,
allow selecting of a number of advertisements in the number of advertising blocks, allow selecting of a temporal distribution
of the number of advertising blocks, and allow a number restriction per advertising block, wherein the advertisement options
are provided to a user without a need for the user to provide an indicia of compensation for receiving the advertisement options;

receiving, by the computer system, first user preference information from the user selecting the number of advertising blocks
for the video program;

receiving, by the computer system, second user preference information from the user selecting the temporal distribution that
distributes the selected number of advertising blocks throughout the video program, the temporal distribution being available
to be specified by the user throughout the video program;

receiving, by the computer system, third user preference information from the user selecting the number of advertisements
to be included in each of the number of advertising blocks, wherein the third user preference information is restricted based
on the number restriction per advertising block, and wherein the total amount of advertisements is constant irrespective of
the first user preference information, the second user preference information, and the third user preference information;

using, by the computer system, the first, the second, and the third user preference information to configure the number of
advertising blocks, the temporal distribution of the number of advertising blocks, and the number of advertisements to be
included in each of the number of advertising blocks for the video program;

determining, by the computer system, when each advertising block in the number of advertising blocks occurs according to the
temporal distribution during sending of the video program;

when each advertising block occurs, performing:
determining, by the computer system, the number of advertisements in the advertising block based on the third user preference
information;

determining, by the computer system, advertisements for the advertising block equal to the number of advertisements in the
advertising block; and

sending, by the computer system, the determined advertisements during the advertising block.

US Pat. No. 9,118,886

ANNOTATING GENERAL OBJECTS IN VIDEO

HULU, LLC, Santa Monica,...

1. A method for annotating general objects contained in video content, the method comprising:
sending the video content to a client device, the video content being requested by a user from a video delivery service;
receiving a first annotation from the client device defining a first boundary around a portion of a first frame of the video
content;

selecting the first annotation as a seed for an object;
tracking the first annotation through multiple frames of the video content based on a position of the first boundary, wherein
the tracking is performed backwards and forwards until a condition is met;

determining second annotations that include second boundaries that match the position of the first boundary for the first
annotation within a first threshold, the second annotations being received from other client devices and being located in
the first frame or other frames from the first frame;

generating a third annotation for the object, the third annotation generated automatically from analyzing the video content;
determining the third annotation matches the first annotation within a second threshold;
combining the third annotation, the second annotations, and the first annotation into an object track for the object; and
associating a tag with the object in the object track, the tag being input by at least one of the client devices.

US Pat. No. 9,066,145

COMMENTING CORRELATED TO TEMPORAL POINT OF VIDEO DATA

HULU, LLC, Santa Monica,...

1. A method for providing user comment data, by a client device, the method comprising:
detecting an indication that a user is interested in adding the user comment data for audio/video content in a comment window;
outputting a comment placement window pointing to a progress indicator along a progress bar for the audio/video content during
playback of audio/video content on an electronic display device of the client device, wherein the comment placement window
estimates where the user comment data would be placed, the comment placement window is different from the comment window,
the comment placement window previews where the user comment data will be placed, and the comment placement window changes
position based on a location of the progress indicator;

receiving the user comment data in the comment window;
detecting a time that input of the user comment data is received during playback of audio/video content on the electronic
display device, wherein detecting the time comprises:

detecting a lag time for the user to enter the user comment data; and
determining the time as an adjustment of the location along the progress bar based on the lag time;
determining a temporal point relative to the playback of the audio/video content correlated to the user comment data, based
on the time; and

transmitting the user comment data correlated to an identifier for the audio/video content and the temporal point to a computer
server.

US Pat. No. 9,560,399

PERSONALIZED GENERATION OF WATCH LIST OF SHOWS IN A VIDEO DELIVERY SYSTEM

HULU, LLC, Santa Monica,...

1. A method comprising:
storing, by a computing device, a watch history of shows for a user at a video delivery service that provides a service to
send videos to a plurality of users, wherein the shows release recurring episodes in a season on the video delivery service;

training, by the computing device, a machine learning predictor to determine selection probabilities for shows using the watch
history of shows, the selection probability indicating a prediction the user will select the show to watch;

receiving, by the computing device, a request for an episode of a show from a client device being used by the user;
updating, by the computing device, the watch history of shows with an indication the episode of the show was watched;
determining, by the computing device, a list of eligible shows for the watch list based on the updated watch history of shows
for the user;

receiving, by the computing device, user specific features for the list of eligible shows based on the updated user's watch
history, wherein the updated user's watch history is used to determine unseen released episodes for at least a portion of
the list of eligible shows;

inputting, by the computing device, the user specific features and the list of eligible shows into the machine learning predictor
to determine selection probabilities for each of the list of eligible shows, the selection probability indicating the prediction
the user will select the show to watch and affected by a number of unseen released episodes for the show when the show has
unseen released episodes; and

dynamically updating, by the computing device, the watch list of shows for the user based on the selection probabilities of
the list of eligible shows, wherein the watch list of shows orders the shows in an order in which the selection probability
predicts that the user will select one or more of the list of eligible shows to watch.

US Pat. No. 9,448,723

METHOD AND APPARATUS FOR INTUITIVE NAVIGATION OF A MEDIA PROGRAM

HULU, LLC, Santa Monica,...

1. A user interface for navigating a media program having a plurality of frames, comprising:
a jog control displayed on the user interface, comprising:
a radial control at one of a plurality of user-selectable radial distances from a center of the jog control, the radial distance
indicative of a jog control scale factor;

wherein a user selection of the radial control on the user interface at a radial distance from the center selects and fixes
the jog control scale factor until a control area of the jog control is unselected; and

wherein rotation of the selected radial control from a first position to a second position about the center of the jog control
by user input causes navigation through the plurality of media program frames at a rate determined by the selected jog control
scale factor that is fixed and an angular rate of the selected radial control from the first position to the second position
about the center of the jog control even when different user-selectable radial distances are selected while rotation of the
selected radial control is performed from the first position to the second position.

US Pat. No. 9,247,315

DISABLING OF MULTIPLE BITRATE ALGORITHM FOR MEDIA PROGRAMS WHILE PLAYING ADVERTISEMENTS

HULU, INC., Santa Monica...

1. A method comprising:
determining first information from a set of components of a computing device to determine when receiving of one or more advertisements
for an advertisement break will affect an available bandwidth reading that is based on receiving of a media program;

disabling a multiple bitrate algorithm by changing from an enabled state to a disabled state based upon the first information
such that a new bitrate version of the media program cannot be requested by the multiple bitrate algorithm for a media player;

determining second information from the set of components of the computing device to determine when the available bandwidth
reading will not be affected by receiving of the one or more advertisements for the advertisement break of the media program;
and

enabling the multiple bitrate algorithm from the disabled state to an enabled state based on the second information, wherein
the multiple bitrate algorithm is allowed to request the different bitrate version of the media program based on the available
bandwidth reading when in the enabled state.

US Pat. No. 9,363,157

REMOTELY CONTROLLING DEVICES AND PROCESSING ASYNCHRONOUS EVENTS FOR TESTING

HULU, LLC, Santa Monica,...

1. A method comprising:
executing, by a script on a testing device, code to automatically control a control device that is remotely located from the
testing device, wherein, during the control, a media player on the control device interacts with a video streaming service
remotely located from the control device;

determining, by the script, when to start storing events in an event buffer based on the executing of the code;
receiving, by the testing device, a set of events from the control device based on the control device being controlled by
the script to perform a set of actions related to interacting with the video streaming service, wherein the set of actions
performed by the control device results in the set of events being asynchronously sent to the testing device;

storing, by the testing device, the set of events in the event buffer;
initiating, by the script, a wait for routine that waits for a target event to occur before execution of the script can continue;
receiving, by the script, the set of events from the event buffer, the set of events being stored in the event buffer based
on the determining of when to start storing events in the event buffer; and

analyzing, by the script, the set of events to determine if the target event occurred to allow the script to continue execution,
wherein the target event was stored in the event buffer before initiating the wait for routine.

US Pat. No. 9,202,224

PROVIDING A SURVEY DURING AN ADVERTISEMENT OPPORTUNITY TO IMPROVE ADVERTISING EXPERIENCE

HULU, LLC, Santa Monica,...

1. A method comprising:
configuring, by a computing device, a set of locations within a media program where a media program provider is provided the
opportunity to initiate transmission of a survey, wherein an indicia of compensation from a user is required to entitle the
user to control advertisements associated with the media program;

providing, by the computing device, a segment playlist for segments of the media program, wherein the segment playlist includes
discontinuity tags to delineate advertisement opportunities in the media program;

receiving, by the computing device, messages regarding a progress of playback of the media program based on requesting of
segments of the media program from the segment playlist;

determining, by the computing device, whether one of the set of locations is encountered in the media program based on the
progress;

in response to determining one of the set of locations is encountered, holding, by the computing device, transmission of an
advertisement in an advertisement opportunity during playback of the media program;

providing, by the computing device, a survey asking a survey question for a user that requires a survey answer from the user
during the advertisement opportunity, wherein the survey indicates the advertisement will be skipped during the advertisement
opportunity when the survey question is answered;

determining, by the computing device, when a response from the user to the survey question is received;
determining, by the computing device, when the response satisfies a survey answer requirement;
when the response satisfies the survey answer requirement, determining, by the computing device, the indicia of compensation
is received from the user by virtue of receiving the response to the survey question from the user; and

causing, by the computing device, a media player to request a segment of the media program after a discontinuity tag and not
play the advertisement during the advertisement opportunity.

US Pat. No. 9,055,313

DEVICE ACTIVATION USING ENCODED REPRESENTATION

HULU, LLC, Santa Monica,...

1. A method for activating a first device for delivering media to the first device, the method comprising:
capturing, by a second device, an encoded representation being output by the first device, the encoded representation being
output by an application upon being provided on the first device that determined a unique identifier (ID) originating from
within the first device, wherein activation of the first device via a server is necessary for configuring a media program
delivery service for a user on the first device;

determining, by the second device, information encoded in the encoded representation, the information including the unique
identifier (ID) for the first device;

determining, by the second device, a user identifier for the user, and
automatically communicating, by the second device, the unique ID and the user identifier to the server associated with the
media program delivery service to allow the server to activate the first device for the media delivery service using the unique
ID.

US Pat. No. 9,596,514

METHOD AND APPARATUS FOR PROVIDING USER CONTROL OF ADVERTISING BREAKS ASSOCIATED WITH A MEDIA PROGRAM

HULU, LLC, Santa Monica,...

1. A method comprising:
displaying, by a computing device, an interface for playback of a media program that includes a set of ad slots, the interface
including a progress bar and a progress slider that shows a current location of playback of the media program;

displaying, by the computing device, a set of indicators for the set of ad slots indicating pre-set locations of the set of
ad slots within the media program, the set of indicators associated with the progress bar of the interface and indicating
a transition from the playback of the media program to playback of an advertisement;

accepting, by the computing device, a command in the interface from a user to move an indicator in the set of indicators from
a pre-set location associated with the progress bar to a user defined location associated with the progress bar, wherein the
pre-set location corresponds to a first temporal location within the media program;

moving, by the computing device, the indicator on the interface to indicate a different location associated with the interface
from the pre-set location, the different location determined based on the user defined location, wherein a respective ad slot
for the indicator is moved from the first temporal location within the media program to a second temporal location within
the media program that corresponds to the different location; and

when the progress slider moves to reach the indicator in the different location on the progress bar, transitioning, by the
computing device, from playing the media program to playing an advertisement on the interface during the ad slot at the second
temporal location within the media program.

US Pat. No. 9,066,159

USER CONTROL OF AD SELECTION FOR SUBSEQUENT AD BREAK OF A VIDEO

HULU, LLC, Santa Monica,...

1. A method, comprising:
sending video content having a defined video ad break at a designated location from a computer server to a client device,
wherein the defined video ad break is configured for a first non-zero number of video ads;

determining a second number of video ads during the sending of the video content to the client device;
providing an identifier for each video ad included in the second number of video ads to the client device that is receiving
the video content, prior to the defined video ad break and upon starting of the sending of the video content, wherein the
second number is greater than the first number, and wherein information for the second number of video ads is concurrently
displayed at the client device upon playing of the video content and prior to the defined video ad break;

receiving, during the sending and prior to the defined video ad break, an indication of at least one selected video ad selected
based on the information for the second number of video ads in response to a user input; and

sending the at least one selected video ad to the client device during the defined video ad break.

US Pat. No. 9,948,967

DATABASE TABLE STORAGE TECHNIQUES FOR VIDEO DELIVERY SERVICE AUTHORIZATION

HULU, LLC, Santa Monica,...

1. A method comprising:determining, by a computing device, a plurality of authorization packages for a video entity including a plurality of episodes, wherein at least two of the plurality of authorization packages include different sets of episodes from the plurality of episodes;
generating, by the computing device, a first subset of possible combinations in a plurality of possible combinations for the plurality of authorization packages, wherein at least a portion of the plurality of possible combinations includes two or more of the plurality of authorization packages;
storing, by the computing device, the first subset of possible combinations in a database table, wherein a second subset of possible combinations in the plurality of possible combinations is not stored in the database table;
selecting, by the computing device, a user package group identifier for a user of a video delivery service in which a user package group authorization needs to be computed;
generating, by the computing device, a query to the database table for the user package group authorization, the query selecting a plurality of the first subset of possible combinations and then selecting a combination from the plurality of the first subset of possible combinations; and
using, by the computing device, the combination from the plurality of the first subset of possible combinations to provide access to a set of episodes of the video entity for the video delivery service to the user.

US Pat. No. 9,521,470

VIDEO DELIVERY SYSTEM CONFIGURED TO SEEK IN A VIDEO USING DIFFERENT MODES

HULU, LLC, Santa Monica,...

1. A method comprising:
sending, by a computing device, a request for a video using a media player;
receiving, by the computing device, a plurality of boundary information sets for the video, the plurality of boundary information
sets segmenting the video differently based on different video characteristics and the plurality of boundary information sets
are associated with a plurality of seek modes;

sending, by the computing device, requests for segments of the video;
receiving, by the computing device, the segments for the video and playing the segments using the media player;
receiving, by the computing device, a seek request for a seek time in the video;
determining, by the computing device, a seek mode from the plurality of seek modes to use based on the seek time and two or
more boundaries from two or more of the plurality of boundary information sets, wherein the two or more boundaries are associated
with two or more scene boundaries, shot boundaries, and dialogue boundaries;

determining, by the computing device, a segment in the video using the one of the plurality of boundary information sets associated
with the determined seek mode, wherein the segment starts at a different time than the seek time; and

sending, by the computing device, a request for the segment, wherein the media player plays the segment in response to the
seek request.

US Pat. No. 9,055,129

AUTOMATION FRAMEWORK TO REMOTELY CONTROL DEVICES AND PROCESS ASYNCHRONOUS EVENTS

HULU, LLC, Santa Monica,...

1. A method comprising:
starting, by a script, automatic control of a remote device, the device being automatically controlled to play a video to
be streamed to a media player from a streaming service;

issuing, by the script, a command to the device to automatically control the device, wherein the command causes the device
to perform an action related to playing of the video in the media player;

causing, by the script, a marker to be set at a position in an event buffer upon issuing of the command, the marker indicating
events generated by the device should be stored in the event buffer in relation to the position, wherein the action performed
by the device results in one or more events being asynchronously sent to the event buffer where the one or more events are
stored in the event buffer based on the position;

initiating, by the script, a wait for routine that waits for a target event to occur before execution of the script can continue;
receiving, by the script, the one or more events from the event buffer, the one or more events being stored in the event buffer
based on the position; and

analyzing, by the script, the one or more events to determine if the target event occurred to allow the script to continue
execution, wherein the target event was stored in the event buffer before initiating the wait for routine.

US Pat. No. 9,189,547

METHOD AND APPARATUS FOR PRESENTING A SEARCH UTILITY IN AN EMBEDDED VIDEO

HULU, LLC, Santa Monica,...

1. A method of providing search results to a user, comprising:
transmitting, from a media program service, instructions for embedding a media program player associated with the media program
service in a webpage provided by a third party web server, the instructions being configured for displaying an embedded search
utility in the embedded media program player that is configured to play a first media program;

receiving a search query from a user computer, the search query entered into the embedded search utility and including keywords
unrelated to the first media program played by the media program player, wherein receiving the search query comprises receiving
the search query via a web service call to a media program server associated with the media program service;

generating search results responsive to the user search query using a database associated with the media program service,
the search results including media programs offered by the media program service and information that directs a selection
of one of the media programs back to the media program service; and

transmitting the search results to the media program player embedded in the webpage for displaying within the embedded media
program player, wherein transmitting the search results to the embedded media program player comprises returning a data object
including the search results to the embedded media program player, the data object expressed in a programming language in
which the embedded media program player can use to display the search results, and wherein the embedded media program player,
upon accepting a selection of a second media program in the search results, requests the second media program using the information
that directs the selection of one of the media programs back to the media program service and plays the second media program
in the embedded media program player that played the first media program.

US Pat. No. 9,047,376

AUGMENTING VIDEO WITH FACIAL RECOGNITION

HULU, LLC, Santa Monica,...

1. A method for providing interactive video content including a plurality of frames, the method comprising:
executing an automatic face detection algorithm on video data of a first subset of the plurality of frames to detect a face
in the video content;

executing a face tracking algorithm to define a track of the face through multiple frames of the video content by analyzing
video characteristics of the video content, wherein the track includes a first set of faces detected by the automatic face
detection algorithm in the first subset of frames and a second set of faces not detected by the automatic face detection algorithm
in a second subset of frames;

selecting a sample face from the first set of faces and the second set of faces in a frame of the video data to represent
the track of the face;

executing an automatic face recognition algorithm on the sample face to identify the sample face belongs to a specific person;
configuring at least one user-selectable link to be activated for the first set of faces and the second set of faces along
the track of the face through multiple frames of the video data based on the identifying of a person for the sample face,
wherein the user-selectable link comprises a data address for obtaining additional information about the person identified
with the face; and

storing the video data associated with the user-selectable link in a computer memory.

US Pat. No. 9,769,546

PREVIEW IMAGE PROCESSING USING A BUNDLE OF PREVIEW IMAGES

HULU, LLC, Santa Monica,...

1. A method comprising:
sending, by a computing device, a request for a bundle of preview images for a video to a server;
starting, by the computing device, to play the video, wherein the bundle of preview images is separate from the video;
receiving, by the computing device, a portion of the bundle of preview images for the video;
prior to receiving an input from a user for a location in the video that is different from a current position being played
for the video, decoding, by the computing device, the portion of the bundle of preview images sequentially from a beginning
of the bundle of preview images before the entire bundle of preview images is received while the video is received and played;

receiving, by the computing device, the input from the user for the location in the video that is different from the current
position being played for the video;

upon receiving the input, determining, by the computing device, if a preview image corresponding to the location has been
decoded from the bundle of preview images;

when the image corresponding to the location has been decoded, displaying, by the computing device, the preview image corresponding
to the location as a preview image for the location while displaying the video being played;

when the image corresponding to the location has not been decoded, performing, by the computing device, an action designated
for when the preview image corresponding to the location has not been decoded; and

after displaying the preview image or performing the action, switching, by the computing device, from decoding the bundle
of preview images sequentially from the beginning to decoding preview images from the bundle of preview images in both a forward
direction and a reverse direction from the location.

US Pat. No. 9,078,020

DYNAMIC OPTIMIZATION OF VIDEO CONTENT DISTRIBUTION

HULU, LLC, Santa Monica,...

1. A method for distributing files for assets to a plurality of content delivery networks (CDNs) for a company providing a
video content delivery service, the method comprising:
determining, by a computing device, a set of asset characteristics related to an asset of video content;
analyzing, by the computing device, the set of asset characteristics to determine a delivery classification for the asset,
wherein different asset characteristics result in different delivery classifications; and

automatically, by the computing device, determining a set of content delivery networks to distribute files for the asset based
on the delivery classification, wherein:

a first asset with a different delivery classification from a second asset has files delivered by the company to a first set
of content delivery networks that are different from a second set of content delivery networks in which files for the second
asset are delivered,

the files delivered by the company to the first set of content delivery networks and second set of content delivery networks
are stored by the first set of content delivery networks and second set of content delivery networks for delivery to users
in response to the users requesting the first asset or the second asset, and

the first set of content delivery networks and second set of content delivery networks that deliver the video content for
the asset to the users charge the company for the use of each respective content delivery network and also charge for storage
of the files.

US Pat. No. 9,826,007

METHOD AND APPARATUS FOR SHARING VIEWING INFORMATION

HULU, LLC, Santa Monica,...

1. A method comprising:
receiving, by a computing device, registration information from a first user and a second user, wherein the registration information
includes user preference information indicating preferences of the first user and the second user;

receiving, by the computing device, a request from the first user to play a first video;
determining, by the computing device, user information related to the first user and the second user, the user information
including geographical information for the first user and the second user and the user preference information for the first
user and the second user;

analyzing, by the computing device, the geographical information and the user preference information to determine that the
second user may be interested in viewing the first video based on the geographical information and the user preference information;

suggesting, by the computing device, the second user to the first user as a possible viewer to share the first video in a
viewing information box on an interface for the second user while the second user is playing a second video in a media player
on the interface;

determining, by the computing device, if the first user wants to share the first video with the second user;
when the first user wants to share the first video with the second user, causing, by the computing device, display of viewing
information for the first video in the viewing information box while the second user is playing the second video in the media
player;

receiving, by the computing device, a selection for the first video from the second user; and
sending, by the computing device, the first video to the second user for display in the media player to replace the playing
of the second video, wherein a single version of the first video is sent to the first user and the second user when the geographical
information indicates the first user and the second user are in a same household.

US Pat. No. 9,070,139

ESTIMATING UNIQUE IMPRESSIONS IN AN ONLINE VIDEO DISTRIBUTION SYSTEM

HULU, LLC, Santa Monica,...

1. A method, comprising:
streaming video content including the video advertising segments to a plurality of client devices;
receiving, by a computing device, a query defining a time period and an integer ‘N’;
determining, by the computing device, in response to the query, a discrete probability distribution of video advertising segments
per unit time per client device in a population of the video advertising segments streamed to the plurality of client devices
during ad slots in the video content streamed to the plurality of client devices, based on a count of video advertising segments
per unit time streamed to each of the plurality of client devices by a streaming video system;

storing, by the computing device, a first data structure including a set of nodes used for randomly sampling the probability
distribution as a search tree, wherein the set of nodes include a count where every node in a left sub-tree of a node has
a smaller partial sum, and every node in a right sub-tree has a larger partial sum;

modifying, by the computing device, the first data structure to generate a second data structure such that nodes of the search
tree in each right sub-tree include a count representing a delta from a partial sum from an adjacent node of the search tree;

randomly sampling, by the computing device, the probability distribution ‘N’ times without replacement, wherein each sample
of the probability distribution identifies a number of video advertising segments streamed to a client device during the ad
slots in the probability distribution;

determining, by the computing device, based on the random sampling, ‘N’ client devices using a binary search algorithm on
the search tree based on an implied value of nodes that is calculated each sample using deltas of the second data structure
to determine the count of the nodes in the first data structure, enabling completing the ‘N’ samples in an amount of time
proportional to log(N);

updating, by the computing device, a value of only one node of the search tree in the second data structure for each sample
taken in the random sampling;

determining, by the computing device, based on the sampling, a number ‘U’ of unique client devices included the N client devices,
wherein unique client devices are determined to view at least one video advertising segment and a same client device is not
represented more than once in the number U; and

storing, by the computing device, the number ‘U’ in a computer memory.

US Pat. No. 9,852,364

FACE TRACK RECOGNITION WITH MULTI-SAMPLE MULTI-VIEW WEIGHTING

HULU, LLC, Santa Monica,...

1. A method comprising:
determining, by a computing device, a plurality of face tracks for detected face samples in a video;
receiving, by the computing device, a set of labels for a portion of the plurality of face tracks from a set of users to form
a set of labeled face tracks, wherein a label in the set of labels identifies an identity for a face track in the set of labeled
face tracks;

extracting, by the computing device, a first set of features for a first plurality of face samples in an unlabeled face track
in the plurality of face tracks, wherein an identity for the unlabeled face track is not known;

correlating, by the computing device, the extracted first set of features for the unlabeled face track to a second set of
features from a second plurality of face samples in the set of labeled face tracks;

generating, by the computing device, feature weights for the first set of features based on a set of confidence scores for
the second set of features using a weighting function that magnifies feature weights for second features from the second plurality
of face samples in the second set of features with higher confidence scores more than feature weights for second features
from the second plurality of face samples in the second set of features with lower confidence scores in a non-linear manner,
wherein a confidence score in the set of confidence scores for a feature in the second plurality of features is based on a
quality of a face track in the set of labeled face tracks that includes the feature in the second plurality of features; and

using, by the computing device, the generated feature weights to determine a label for the unlabeled face track by applying
the generated feature weights to the second set of features.

US Pat. No. 9,826,257

CAPTION AND SPEECH ALIGNMENT FOR A VIDEO DELIVERY SYSTEM

HULU, LLC, Santa Monica,...

1. A method comprising:
determining, by a computing device, a video including ad slots inserted within the video;
generating, by the computing device, a caption curve for a caption file of captions for the video based on start times and
stop times for caption segments in the caption file, wherein the caption segments in the caption file were generated for the
video without including ad slots;

determining, by the computing device, a speech velocity of characters per a time unit using a set of caption files that include
captions for a set of videos, wherein the speech velocity is used to estimate how fast speech occurs for caption segments
in the set of videos;

detecting, by the computing device, when the start time or the stop time of one or more caption segments should be adjusted
based on the speech velocity, a number of characters in caption segments in the caption file, and a duration between the start
time and the stop time;

revising, by the computing device, the start time or the stop time for the one or more caption segments associated with the
caption curve based on the detecting;

determining, by the computing device, a speech probability curve based on audio of the video, wherein the speech probability
curve indicates a probability of speech occurring in the video; and

correlating, by the computing device, the speech probability curve to the revised caption curve to align the caption segments
of the caption file with speech of the video.

US Pat. No. 9,721,254

METHOD AND APPARATUS FOR PROVIDING STREAMING MEDIA PROGRAMS AND TARGETED ADVERTISEMENTS USING MULTIPLE ADVERTISEMENT VERSION SEGMENTS

HULU, LLC, Santa Monica,...

1. A method of streaming a media program and an advertisement for presentation therewith, comprising:
generating a plurality of media program versions of the media program for a plurality of bitrates, each of the plurality of
media program versions generated for a different bitrate in the plurality of bitrates;

segmenting each of the media program versions into a plurality of media program version segments to produce a plurality of
media program version segments for each media program version of the media program;

generating a plurality of advertisement versions of the advertisement for the plurality of bitrates, each of the plurality
of advertisement versions associated with only one of the media program versions and generated for a respective bitrate of
the associated media program version;

segmenting each of the advertisement versions into a plurality of advertisement version segments to produce a plurality of
advertisement version segments for each advertisement version;

receiving a media program request for playing the media program; determining a user identifier associated with the media program
request; dynamically selecting the advertisement to be included during playing of the media program based on the user identifier;

generating a plurality of media program version addresses for the plurality of media program versions generated for the plurality
of bitrates, wherein the plurality of media program version addresses include a plurality of advertisement version identifiers
for the advertisement;

generating a master playlist including the plurality of media program version addresses;
transmitting the master playlist to a media program player; generating a segment playlist, the segment playlist associated
with a requested one of the media program versions generated for a bit rate in the plurality of bitrates and comprising a
temporally ordered list having:

a media program version segment address associated with each one of the plurality of media program version segments associated
with the requested one of the media program versions, and

an advertisement version segment address associated with each one of the plurality of advertising segments for the advertisement
version included in the respective media program version address for the requested one of the media program versions, each
one of the plurality of advertising segments generated for the bitrate associated with the requested one of the media program
versions; and

sending the segment playlist to the media program player,
wherein the advertisement version identifiers that are included in the media program version addresses allow an identity of
the selected advertisement to persist between generation of the master playlist and the requested media program version without
maintaining an advertisement state for the selected advertisement after the transmitting of the master playlist.

US Pat. No. 9,712,850

DYNAMIC MAINTENANCE AND DISTRIBUTION OF VIDEO CONTENT ON CONTENT DELIVERY NETWORKS

HULU, LLC, Santa Monica,...

1. A method for maintaining files of an asset of video content at a plurality of content delivery networks (CDNs) for delivery
to users, wherein the asset of video content is transcodeable into a plurality of file sizes, the method comprising:
determining, by a computing device, that the asset of video content has been distributed based on a first delivery classification,
wherein the first delivery classification is used to determine a first combination of file sizes in the plurality of file
sizes and CDNs in the plurality of CDNs;

monitoring, by the computing device, a set of asset characteristics for the asset of video content;
analyzing, by the computing device, the set of asset characteristics to determine whether the first delivery classification
for the asset of video content is changed to a second delivery classification, wherein different values for the set of asset
characteristics result in different delivery classifications; and

when the first delivery classification of the asset of video content is changed to the second delivery classification, automatically,
by the computing device, changing a distribution of the asset of video content, wherein the second delivery classification
is used to determine a second combination of file sizes in the plurality of file sizes and CDNs in the plurality of CDNs,
and wherein the second combination is different from the first combination.

US Pat. No. 9,992,523

SELECTING RECOMMENDATIONS IN A VIDEO DELIVERY SYSTEM USING DIVERSITY AND RELEVANCE

HULU, LLC, Santa Monica,...

1. A method comprising:receiving, by a computing device, a candidate set of recommendations for video entities on a video delivery service in response to receiving a request from a client device to generate a page of an interface in an online environment;
receiving, by the computing device, relevance ratings for recommendations in the candidate set of recommendations, wherein a relevance rating is based on a recommendation's relevance to a user using the client device;
generating, by the computing device, a number for each recommendation that represents the relevance rating of the respective recommendation minus a similarity rating between the respective recommendation and recommendations from the candidate set of recommendations that are added to a subset of recommendations;
adding, by the computing device, a recommendation from the candidate set of recommendations to the subset of recommendations that has a maximum probability of being relevant to the user and diverse from the recommendations in the subset of recommendations based on the number, wherein adding the recommendation to the subset of recommendations removes the recommendation from the candidate set of recommendations;
updating, by the computing device, the number for recommendations in the candidate set of recommendations based on adding the recommendation to the subset of recommendations, wherein updating the number comprises:
retrieving a first value of a first variable that was stored in memory from a prior iteration;
using the first value of the first variable to generate a second value of a second variable; and
using the second value to update the number;
iteratively performing, by the computing device, the adding and the updating until a limit of a number of recommendations in the subset of recommendations is reached or the probability of adding any recommendation from the candidate set is zero; and
providing, by the computing device, the subset of recommendations in the page of the interface to the client device in the online environment.

US Pat. No. 9,916,867

VIDEO CAPTURE AND TESTING OF MEDIA PLAYER PLAYBACK OF A VIDEO

HULU, LLC, Santa Monica,...

1. A method comprising:
receiving, by a computing device, a capture video of an external capture of a trace video being played on a media player of
a hardware platform, wherein the trace video displays visual codes on the media player, and wherein a capture device captured
images of the trace video at a first capture rate determined based on a second frame rate of the trace video;

analyzing, by the computing device, frames of the capture video to extract visible codes on each of the frames, each visible
code associated with an identifier identifying a respective frame of the capture video;

determining, by the computing device, that an event occurred during playback of the capture video on the media player by comparing
a sequence of the identifiers to an expected sequence of frames of the trace video; and

correlating, by the computing device, the event to a set of calls received from the media player to determine whether a call
was received that corresponds to the event while the media player was playing the capture video.

US Pat. No. 9,832,540

METHOD AND APPARATUS FOR HYBRID TRANSCODING OF A MEDIA PROGRAM

HULU, LLC, Santa Monica,...

18. An apparatus for encoding a source media program, comprising:
a first transcoder for performing a first pass transcoding for all frames of the source media program to produce a constant
video quality transcoded version of the source media program before a request for transmission, wherein the constant video
quality transcoded version is transcoded by the first transcoder operating in a first mode that targets a video quality;

a constraint decision module for analyzing all of the frames of the constant video quality transcoded version using an interval
of a plurality of frames after performing the first pass transcoding of all the frames of the source media program and determining
when a plurality of frames of the constant video quality transcoded version of the transcoded media program fail to satisfy
a constraint related to a bit rate based on the analyzing of all the frames using the interval;

an adjustment module for adjusting at least one transcoding parameter of a set of transcoding parameters such that the constraint
can be satisfied by a constant bit rate transcoding of the plurality of frames of the source media program when the plurality
of frames of the constant video quality transcoded version fail to satisfy the constraint;

a second transcoder for performing a second pass transcoding of the plurality of frames of the source media program according
to the adjusted at least one transcoding parameter to produce a constant bit rate version of the plurality of frames of the
source media program after the first pass transcoding of all the frames of the source media program, wherein the constant
bit rate version of the plurality of frames of the source media program is transcoded by the transcoder operating in a second
mode that targets the bit rate;

a splicer for substituting the constant bit rate version of the plurality of frames for the plurality of frames in the constant
video quality transcoded version to generate a transcoded source media program in response to producing the plurality of frames
of the constant bitrate version;

storage for storing, before the request for transmission, the transcoded source media program in storage as a version of the
source media program to be transmitted,

wherein the version of the source media program is provided from the storage for transmission in response to the request for
the version.

US Pat. No. 9,721,183

INTELLIGENT DETERMINATION OF AESTHETIC PREFERENCES BASED ON USER HISTORY AND PROPERTIES

HULU, LLC, Santa Monica,...

1. An apparatus for selecting a digital image, the apparatus comprising:
one or more computer processors; and
a non-transitory computer-readable storage medium comprising instructions, that when executed, control the one or more computer
processors to be configured for:

receiving a first set of digital images;
analyzing the first set of digital images to extract first image features from each of the first set of digital images;
accessing a user profile stored in a memory, wherein the user profile comprises a preset list of image features corresponding
to a second set of digital images previously selected by a user;

comparing the extracted first image features to the preset list of image features;
ranking each digital image of the first set based on the comparing of the extracted first image features to the preset list
of image features;

selecting each digital image from the first set having a ranking that exceeds a threshold;
assigning a category to each selected digital image based on a comparison of each selected digital image to a prestored category
database of digital image categories;

displaying each selected digital image with the assigned category;
receiving an input from the user in response to the displaying of each selected digital image and the assigned category;
updating the user profile and the category database in accordance with the input; and
selecting at least one subsequent digital image from a third set of digital images based on the updated user profile and category
database.

US Pat. No. 10,027,560

LEADER ELECTION IN DISTRIBUTED COMPUTER SYSTEM

HULU, LLC, Santa Monica,...

1. A method comprising:storing, by a first computing node in a group of computing nodes, a first variable for a first proposal number that was accepted, a second variable for a second proposal number of an accepted leader, a third variable for the accepted leader, and a fourth variable for an invalidated computing node in storage;
performing, by the first computing node, a first comparison with the first variable and a third proposal number to determine whether to accept or reject a proposal for an election of a leader;
performing, by the first computing node, a second comparison with a fourth proposal number and the first variable and the second variable to determine whether to accept or reject a commitment to a proposed leader in the election when it is determined the proposal of the election is accepted;
performing, by the first computing node, a third comparison with the fourth variable and an identifier for the proposed leader to determine whether the proposed leader has been invalidated or not when it is determined the commitment is accepted;
when it is determined the proposed leader has not been invalidated, overwriting, by the first computing node, an identifier in the third variable with the identifier for the proposed leader in the storage to elect the proposed leader as a new accepted leader for the group of computing nodes; and
accepting, by the first computing node, a communication from the new accepted leader to coordinate performing an action based on the identifier for the new accepted leader being stored in the third variable.

US Pat. No. 10,019,345

EXECUTING MULTI-VERSION TESTS AGAINST A MULTI-VERSION APPLICATION

HULU, LLC, Santa Monica,...

1. A method comprising:receiving, by a computing device, a plurality of application blueprints for a plurality of versions of an application, wherein each application blueprint for each version of the application includes at least one different feature;
selecting, by the computing device, one of the versions of the application for testing;
loading, by the computing device, the application blueprint for the first version of the application, the application blueprint defining a first set of features supported by the first version of the application;
loading, by the computing device, the first set of features and a first set of interfaces for the features, wherein interfaces in the first set of interfaces describe what a corresponding feature does;
building, by the computing device, the application model by connecting the first set of interfaces to the first set of features at runtime when a test is to be executed,
wherein features in the first set of features loosely define dependencies without pre-defining which feature satisfies the dependency, and wherein, at runtime, the application blueprint inserts which feature satisfies the dependency for features in the first set of features to dynamically generate the dependencies;
connecting, by the computing device, the application model to the version of the application and a test case for the version of the application; and
testing, by the computing device, the version of the application by executing a test case against the application model, wherein the first set of interfaces are used to test the first set of features of the version of the application.

US Pat. No. 9,998,781

MEDIA PLAYER OPERATING IN MULTIPLE MODES

HULU, LLC, Santa Monica,...

1. A method comprising:playing, by a computing device on an interface, a media program in a media player operating in a first mode;
determining, by the computing device, a position change of the media player on the interface while the media program is being played in the media player to cause the media player to move to an out of bounds position;
detecting, by the computing device, the media player moving to the out of bounds position, wherein the out of bounds position is a position in which at least a portion of the media player is not visible on the interface; and
upon detecting, automatically performing:
switching, by the computing device, from the first mode to a second mode based on the media player moving to the out of bounds position, wherein the second mode restricts movement of the media player; and
transferring, by the computing device, the media player to a new position that is not in the out of bounds position, the media player continuing to play the media program in the new position.

US Pat. No. 9,942,582

DYNAMIC SEEKING IN VIDEO DELIVERY SYSTEMS

HULU, LLC, Santa Monica,...

1. A method comprising:receiving, by a computing device, a seek command at a media player that is playing a media program at a first location, the seek command seeking to a second location in the media program;
determining, by the computing device, a first segment of the media program that is associated with the second location in the media program;
downloading, by the computing device, the first segment into a buffer;
calculating, by the computing device, a position of the second location within the first segment;
calculating, by the computing device, an estimated download time for a second segment using the position, the second segment being after the first segment; and
determining, by the computing device, whether to delay starting playback of the first segment at the second location when the first segment is downloaded into the buffer based on the estimated download time for the second segment.

US Pat. No. 9,900,608

KEYFRAME ALIGNMENT FOR ENCODING VIDEO AT MULTIPLE BITRATES

HULU, LLC, Santa Monica,...

1. A method for using frame type decisions made by a first encoding process when encoding a video at a first bitrate to generate
a first encoded video, the method comprising:
while performing a second encoding process to encode the video at a second bitrate to generate a second encoded video, performing:
determining, by a computing device, a frame type decision previously made by the first encoding process, wherein the frame
type decision comprises a frame type of a frame for the video that was previously encoded at the first bitrate by the first
encoding process when encoding the video at the first bitrate to generate the first encoded video;

inserting, by the computing device, a keyframe in the second encoded video based on the frame type decision, wherein the inserted
keyframe in the second encoded video is aligned with a corresponding keyframe in the first encoded video; and

continuing, by the computing device, to retrieve frame type decisions made by the first encoding process and inserting keyframes
in the second encoded video until the video is encoded at the second bitrate,

wherein keyframes in the first encoded video at the first bitrate are aligned with keyframes in the second encoded video at
the second bitrate.

US Pat. No. 9,878,211

PROPULSION SYSTEM

RIG LLC, Kahului, HI (US...

1. An propulsion system, the system comprising:
a power source coupled to a flotation device;
at least one thruster configured to be coupled to a person; and
a power cable that operably couples the power source and the at least one thruster, wherein the system is configured such
that the at least one thruster propels the person through the water while the power source remains at a surface of the water
and coupled to the flotation device.

US Pat. No. 9,725,052

LICENSE PLATE MOUNTING BRACKET FOR VEHICLES HAVING MESH OR HORIZONTAL GRILLES

Ernest R. Honaker, Kahul...

1. A license plate mounting bracket for vehicles having horizontal grilles, comprising:
a license plate holder;
a license plate holder mount coupled to the license plate holder and including a first adjustable clamp including:
a first jaw and a second jaw;
a male-to-female standoff, the male-to-female standoff including an axial threaded hole at a female end thereof, the male-to-female
standoff having a shoulder engaging a front end of the first jaw and a male threaded portion passing through the first jaw
and engaging female threads in a hole in the second jaw; and

a second adjustable clamp including:
a first jaw and a second jaw; and
a male-to-female standoff, the male-to-female standoff including an axial threaded hole at a female end thereof, the male-to-female
standoff having a shoulder engaging a front end of the first jaw and a male threaded portion passing through a clearance hole
in the first jaw and engaging female threads in a threaded hole in the second jaw; and

a horizontal stabilizing member attached to the first jaw of both the first and second clamps to hold the first jaw of the
first clamp in a fixed position with respect to the first jaw of the second clamp.

US Pat. No. 9,674,100

DYNAMIC ADJUSTMENT TO MULTIPLE BITRATE ALGORITHM BASED ON BUFFER LENGTH

HULU, LLC, Santa Monica,...

1. A method comprising: determining, by a computing device, a plurality of thresholds for a multiple bitrate algorithm that
adjusts which bitrates for a media program are requested, wherein a first threshold is associated with a first buffer length
and a first direction of adjustment and a second threshold is associated with a second buffer length greater than the first
buffer length and a second direction of adjustment; determining, by the computing device, which threshold applies to a buffer
length of a buffer buffering at least a portion of the media program; when the first threshold applies, causing, by the computing
device, an adjustment to the multiple bitrate algorithm in the first direction to increase an aggressiveness used by the multiple
bitrate algorithm to increase the bitrate requested; when the second threshold applies due to the buffer length of the buffer
being greater than when the first threshold applies, causing, by the computing device, the adjustment to the multiple bitrate
algorithm in the second direction to decrease the aggressiveness used by the multiple bitrate algorithm to increase the bitrate
requested, wherein to account for possible inaccurate readings of an available bandwidth, a third threshold is used; and when
the third threshold applies due to the buffer length of the buffer being greater than the second buffer length, causing, by
the computing device, the adjustment to the multiple bitrate algorithm in the first direction to increase the aggressiveness
used by the multiple bitrate algorithm to increase the bitrate requested.

US Pat. No. 10,015,549

REAL-TIME GENERATION OF MANIFEST LIST OF LINKS FOR VIDEO SEGMENTS IN LINEAR VIDEO COMMUNICATION

HULU, LLC, Santa Monica,...

1. A method comprising:receiving, by a computing device, information describing programs for a channel over multiple time slots, wherein the programs are included in multiple source streams;
generating, by the computing device, audience definitions for each of the programs defining parameters for selecting a respective source stream for delivery to a user;
storing, by the computing device, a bundle for each audience definition, wherein the bundle identifies the source stream and the respective audience definition;
receiving, by the computing device, a request for the channel from the user;
generating, by the computing device, a viewer definition for the user based on a current status of the user, wherein the viewer definition includes user information for the user;
in response to receiving the request, constructing, by the computing device, a manifest for the channel using a set of bundles that includes audience definitions that match the viewer definition, wherein only one bundle per time slot is selected for the manifest, wherein:
an audience definition includes a first set of characteristics for a potential user that will be eligible to request the program,
the viewer definition includes a second set of characteristics for the user, and
a bundle is selected when the first set of characteristics of the audience definition match the second set of characteristics; and
providing, by the computing device, portions of the manifest to a client device for the user to allow the client device to request content from the channel.

US Pat. No. 9,740,732

JOB DISPATCHER OF TRANSCODING JOBS FOR MEDIA PROGRAMS

HULU, LLC, Santa Monica,...

1. A method comprising:
determining, by a computing device, a job to dispatch for transcoding a source file, wherein the source file is stored on
a node in a distributed file system in which a plurality of nodes are storing a plurality of source files, and wherein the
plurality of source files need to be transcoded;

determining, by the computing device, location information for the source file in the distributed file system, the location
information identifying a first node in which the source file is stored and a second node where the source file is not stored;

evaluating, by the computing device, whether to dispatch the job to the first node or the second node based on one or more
factors associated with the first node and the second node, the one or more factors being weighted to determine which of the
first node or the second node to assign the job; and

dispatching, by the computing device, the job to the first node or the second node based on the evaluation, wherein when the
second node is dispatched the job, the source file is transferred from the first node to the second node for transcoding,
and when the first node is dispatched the job, the source file stored on the first node is transcoded.

US Pat. No. 9,774,922

METHOD AND APPARATUS FOR SYNCHRONIZING PAUSED PLAYBACK ACROSS PLATFORMS

HULU, LLC, Santa Monica,...

1. A method of resuming playback of a media program, the playback initiated by a first device and resumed on a second device,
the method comprising:
receiving, by a media server, a first request to transmit the media program to the first device;
streaming, by the media server, the media program to the first device;
during the streaming, monitoring, by the media server, an event from the streaming of the media program to the first device
to generate media program streaming information;

during the streaming, transmitting, by the media server, the media program streaming information to a media program provider
including the event before the media program is one or more of stopped and paused on the first device;

receiving, by the media server, a second request to resume transmission of the media program from a second device, wherein
the request includes a playback temporal location within the media program that was inferred based on the event included in
the media program streaming information, and wherein the event did not include the playback temporal location; and

resuming, by the media server, transmission of the media program to the second device from the temporal location received
from the media program provider.

US Pat. No. 9,716,919

QUEUE TO DISPLAY ADDITIONAL INFORMATION FOR ENTITIES IN CAPTIONS

HULU, LLC, Santa Monica,...

1. A method comprising:
receiving, by a computing device, a video for a media program;
receiving, by the computing device, a set of captions for a dialog in the video;
playing, by the computing device, the video in a media player;
determining, by the computing device, a time associated with playing of the video;
determining, by the computing device, a set of entities within a time period in relation to the time, the set of entities
including a first entity that is included in one or more captions in the set of captions within the time period and a second
entity that is displayed in the video within the time period; and

displaying, by the computing device, links for the set of entities in a queue, wherein the links for set of entities are associated
with additional information for each respective entity in the set of entities,

wherein when a first portion of the video is being currently played that corresponds to a first caption, the second entity
in the set of entities is included in a second caption that is associated with a second portion of the video not being currently
played and the second entity is included in the set of entities based on an appearance of the second entity in the video being
currently played.

US Pat. No. 10,212,464

GENERATION, RANKING, AND DELIVERY OF ACTIONS FOR ENTITIES IN A VIDEO DELIVERY SYSTEM

HULU, LLC, Santa Monica,...

1. A method comprising:sending, by a computing device, videos to a user that is using a video delivery service on a client;
receiving, by the computing device, user behavior for the user, wherein the user behavior includes actions taken by the user on the video delivery service;
receiving, by the computing device, a real-time context based on the user using the video delivery service;
inputting, by the computing device, the user behavior into a first predictor to generate a set of actions for a set of entities found on the video delivery service, wherein inputting the user behavior into the first predictor to generate the set of actions for the set of entities comprises:
determining, by the computing device, a first candidate set of entities the user has engaged within a first time period using the user behavior;
determining, by the computing device, if a probability the user would re-engage with each of the first candidate set of entities meets a first threshold; and
including, by the computing device, entities in the first candidate set of entities that have the probability the user would re-engage with each of the first candidate set of entities that meets the threshold in the set of entities;
inputting, by the computing device, the set of actions for the set of entities, the real-time context, and the user behavior into a second predictor to generate probabilities for the set of actions for the set of entities, wherein the probability for an action indicates the probability the user would select that action for an entity when compared against other actions in the set of actions for the set of entities;
selecting, by the computing device, an action feed based on the ranking, the action feed including at least a portion of the set of actions for the set of entities; and
dynamically outputting, by the computing device, the action feed to the client while the user is using the video delivery service, wherein an action on an entity in the action feed is performed when selected by the user.

US Pat. No. 10,212,479

LIVE PROGRAMMING EVENT QUERY GENERATION FOR RECORDING AND NOTIFICATION IN A VIDEO DELIVERY SYSTEM

HULU, LLC, Santa Monica,...

1. A method comprising:receiving, by a computing device, interest indications for entities, entitlements, and location information that are indexed by a plurality of user profiles in a plurality of first databases;
transforming, by the computing device, the interest indications for the entities, the entitlements, and the location information from being indexed by the plurality of user profiles to being indexed in a new index,
the new index comprising
the entities, and
availability pairs, wherein each availability pair identifies an entitlement and location combination;
associating user profiles in the plurality of user profiles as entries for the new index,
the new index being stored in a second database;
receiving, by the computing device, a notification of a live programming event before the event starts, the live programming event repeatedly occurring with different media programs based on a linear schedule;
using, by the computing device, the notification to determine an entity of a media program and an availability pair,
the availability pair identifying an entitlement and a location combination for viewing the media program;
querying, by the computing device, the second database using the entity and the availability pair in a query to determine a set of user profiles associated with the entity and the availability pair; and
performing, by the computing device, an action for at least a portion of the set of user profiles based on an occurrence of the live programming event.

US Pat. No. 10,250,482

DISTRIBUTED TASK EXECUTION IN DIFFERENT LOCATIONS WITH DYNAMIC FORMATION OF TESTING GROUPS

HULU, LLC, Santa Monica,...

1. A method comprising:configuring a helper client computing device with task code that all helper client computing devices can execute, wherein the task code tests a video delivery system configured to deliver videos to video devices, and wherein the task code includes a plurality of portions that correspond to a plurality of roles;
waiting, by the helper client computing device, in a group of helper client computing devices for requests from a master computing device that are sent to the group of helper client computing devices for helping a master computing device with processing a task;
determining, by the helper client computing device, a request in which the helper client computing device can help with processing based on characteristics of the task;
sending, by the helper client computing device, a response to the master computing device that the helper client computing device will help process the task;
configuring the helper client computing device with a first role in the plurality of roles, wherein the master computing device is configured with a second role in the plurality of roles;
determining, by the helper client computing device, one or more portions of the task code associated with the first role for the helper client computing device;
executing, by the helper client computing device, the one or more portions of the task code that are associated with the first role to process the task to test the video delivery system, wherein the helper client computing device skips one or more portions of the task code not associated with the first role, and wherein the master computing device executes one or more portions of the task code that are associated with the second role and skips the one or more portions of the task code that are not associated with the second role; and after finishing processing of the task, rejoining, by the helper client computing device, the group of helper client computing devices that are available to process tasks.

US Pat. No. 10,228,973

KERNEL POLICY OPTIMIZATION FOR COMPUTING WORKLOADS

HULU, LLC, Santa Monica,...

1. A method comprising:searching, by a computing device, from a starting parameter value through a first set of parameter values in a parameter value range specified in a policy specification for a parameter while a first workload of a plurality of workloads is being processed by a kernel of the computing device;
storing, by the computing device, an intermediate parameter setting for the policy specification in a policy storage for the first set of parameter values that were used in the searching;
during execution of a second workload in the plurality of workloads being processed by the kernel, searching, by the computing device, the policy storage for a similar workload that has been previously optimized, wherein a sensor is used to compare the second workload to the first workload in the policy storage to determine if the first workload and the second workload are similar;
when the first workload and the second workload are similar, performing:
retrieving, by the computing device, the intermediate parameter setting from the policy storage;
adjusting, by the computing device, parameter values in the parameter value range while the second workload in the plurality of workloads is being processed by the kernel using a second set of parameter values, wherein a search through the second set of parameter values starts from a parameter value that is not from the first set of parameter values and the starting parameter value; and
evaluating, by the computing device, an effect on performance of the computing device from using the first set of parameter values and the second set of parameter values based on an optimization target to determine an optimized parameter value from the first set of parameter values and the second set of parameter values for reuse;
storing, by the computing device, the optimized parameter value for the policy specification in the policy storage for reuse by similar workloads; and
when the similar workload is not found, searching, by the computing device, from the starting parameter value through a third set of parameter values in the parameter value range for the parameter while the second workload is being processed by the kernel.

US Pat. No. 10,194,210

DYNAMIC CONTENT DELIVERY NETWORK ALLOCATION SYSTEM

HULU, LLC, Santa Monica,...

1. A method comprising:determining, by a computing device of a content delivery service, an allocation percentage in an overall percentage for video traffic for each of a plurality of content delivery networks (CDNs), wherein each CDN is configured to select servers from each independent network for each CDN to deliver media programs for the content delivery service to client devices;
associating, by the computing device, metrics for each CDN together based on information regarding playback of the media programs for each CDN;
analyzing, by the computing device, the metrics for each CDN together based on information regarding the playback of the media programs for each CDN to determine when to change one or more allocation percentages in the overall percentage, wherein the metrics are associated with a time period, and wherein allocation percentages are per CDN based on a platform type, and each allocation percentage is used to allocate requests for playback of media programs to a CDN;
reducing, by the computing device, a first allocation percentage for a platform type in the overall percentage for a first CDN in the plurality of CDNs based on the analyzing of the metrics to reduce future allocations to the first CDN, wherein the first allocation percentage is used to allocate a first set of requests for playback of media programs to the first CDN, and wherein the first CDN selects servers from a first CDN network for the first CDN to respond to the first set of requests;
increasing, by the computing device, a second allocation percentage for a platform type in the overall percentage for a second CDN in the plurality of CDNs based on the analyzing of the metrics to increase future allocations to the second CDN, wherein the second allocation percentage is used to allocate a second set of requests for playback of media programs to the second CDN, and wherein the second CDN selects servers from a second CDN network for the second CDN to respond to the second set of requests; and
allocating, by the computing device, requests for playback of media programs to the plurality of CDNs based on the allocation percentages in the overall percentage, wherein the reduced first allocation percentage and the increased second allocation percentage are used in allocating the requests.

US Pat. No. 10,271,103

RELEVANCE TABLE AGGREGATION IN A DATABASE SYSTEM FOR PROVIDING VIDEO RECOMMENDATIONS

HULU, LLC, Santa Monica,...

1. A method comprising:generating, by a computing device, a plurality of sub-relevance tables including a first set of relevance values between a first set of media programs and a second set of media programs being provided by a video delivery service, wherein each table models relevance values relating similarity for a single feature in a plurality of features between the first set of media programs and the second set of media programs;
receiving, by the computing device, labeling results including a second set of relevance values between the first set of media programs and the second set of media programs, the labeling results based on user input;
generating, by the computing device, weights for each of the plurality of sub-relevance tables based on the second set of relevance values for the labeling results and the first set of relevance values of the plurality of sub-relevance tables;
combining, by the computing device, relevance values from the plurality of sub-relevance tables into a single relevance table by applying respective weights for each of the plurality of sub-relevance tables to the relevance values, wherein the single relevance table includes a third set of relevance values relating similarity for the plurality of features between the first set of media programs and the second set of media programs; and
providing, by the computing device, a recommendation to a user using the video delivery service, the recommendation generated using the third set of relevance values from the single relevance table and a characteristic of the user.