US20140032523A1 - Automatic link generation for video watch style - Google Patents
Automatic link generation for video watch style Download PDFInfo
- Publication number
- US20140032523A1 US20140032523A1 US11/843,461 US84346107A US2014032523A1 US 20140032523 A1 US20140032523 A1 US 20140032523A1 US 84346107 A US84346107 A US 84346107A US 2014032523 A1 US2014032523 A1 US 2014032523A1
- Authority
- US
- United States
- Prior art keywords
- digital video
- instruction set
- uri
- single item
- video content
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/10—Indexing; Addressing; Timing or synchronising; Measuring tape travel
- G11B27/102—Programmed access in sequence to addressed parts of tracks of operating record carriers
- G11B27/105—Programmed access in sequence to addressed parts of tracks of operating record carriers of operating discs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
Definitions
- Example embodiments relate generally to the technical field of algorithms and programming and, in an example, to the generation and use of Uniform Resource Identifiers (URI) to retrieve content.
- URI Uniform Resource Identifiers
- a URI schema outlines the structure of a URI such as a Uniform Resource Locator (URL).
- a URI maybe expressed as: ⁇ scheme name>: ⁇ hierarchical part>[? ⁇ query>] [# ⁇ fragment>].
- the query portion of this grammar may be used to provide information relating to some part of the hierarchical part. Further, this query portion may be delimited using a “?” character.
- FIG. 1 is a diagram of an example system illustrating the generation of selection data in the form of a watch history to be stored in a persistent native data store, according to an example embodiment.
- FIG. 2 is a diagram of a system illustrating the generation of a URI, and the providing of this URI over a network to another party or user, according to an example embodiment.
- FIG. 3 is a diagram of a partially distributed peer to peer network, wherein a content request is made of one peer by another peer, according to an example embodiment.
- FIG. 4 is a system diagram of a system illustrating the use of asymmetric key encryption to obscure an instruction set contained within the query portion of a URI, according to an example embodiment.
- FIG. 5 is a diagram of system illustrating the use of Augmented Backus-Naur form (ABNF), according to an example embodiment.
- ABNF Augmented Backus-Naur form
- FIG. 6 is a diagram of a Graphical User Interface (GUI) used to generate selection data, such as selection data, according to an example embodiment.
- GUI Graphical User Interface
- FIG. 7 is a diagram of a GUI for a media player application wherein this GUI illustrates the use of a scroll bar selection button to initiate a starting point for the generation of watch history, and specifically selection data, according to an example embodiment.
- FIG. 8 is a GUI used to set certain types of protections to obscure the instruction set (e.g., the query portion) of a URI, according to an example embodiment.
- FIG. 9 is a block diagram of an example computer system in the form of a device, according to an example embodiment.
- FIG. 10 is a block diagram of an example computer system in the form of a media server, according to an example embodiment.
- FIG. 11 is a tri-stream flowchart illustrating a method used to generate selection data in the form of a watch history, record this watch, and to obscure and transmit this watch history for viewing by another, according to an example embodiment.
- FIG. 12 is a flowchart illustrating a method used to execute an operation that records frame numbers and/or Temporal Reference (TR) values viewed by a user, according to an example embodiment.
- TR Temporal Reference
- FIG. 13 is a flowchart illustrating a method used to execute an operation that generates an instruction set, according to an example embodiment.
- FIG. 14 is a flowchart illustrating a method used to execute an operation to obscure an instruction set, according to an example embodiment.
- FIG. 15 is a flowchart illustrating a method used to execute an operation to insert the instruction set into a URI and store it according to an example embodiment.
- FIG. 16 is a flowchart illustrating a method used to execute an operation to remove the measures used to obscure an instruction set, according to an example embodiment.
- FIG. 17 is a flowchart illustrating a method used to execute an operation to request for a data stream containing data corresponding to the instruction set, according to an example embodiment.
- FIG. 18 is a Relational Data Scheme (RDA) illustrating various data tables that may be implemented on a suitable data stores, according to an example embodiment.
- RDA Relational Data Scheme
- FIG. 19 shows a diagrammatic representation of a machine in the example form of a computer system that executes a set of instructions to perform any one or more of the methodologies discussed herein.
- a system and method are outlined to allow a user to select certain portions of digital content (e.g., content such as audio, video, or audio-video content) using an instruction set embedded in a Uniform Resource Identifier (URI).
- URI Uniform Resource Identifier
- a user watches a video or listens to a piece of audio (collectively digital content or content)
- the user performs some actions like “Forward” , “Backward”, “Stop”, or “Play”. If the user does not like some songs in a movie or some scenes in a movie, then as soon as the user reaches these scenes, the user would press the forward button to skip such scenes. Every user has a unique style of watching a video. The next time the user watches the same video, the user may have to perform these actions again.
- the user may have to manually pass certain portions of the digital content using, for example, the “Forward,” “Backward,” or “Stop” operations.
- the user may be able to avoid having to manually perform these actions again.
- Some example embodiments may include the user sending this URI, and associated query information, to another user for use in viewing a piece of digital content. For example, the user wants to forward a video to another user for review, and that the user wants that other user only to watch/review interesting scenes in that video.
- the user using an instruction set placed into the query portion of the URI, may specify markers (e.g., a range of values specified in an instruction set) in the video to communicate separately things like starting time of the scene, ending time of scene, etc. This instruction set may also be used in the streaming of video on the web.
- the instruction set may be placed into the query portion of a URI.
- This example instruction set is outlined as follows:
- a media player application may be used to generate the URI and query portion associated therewith, and to store this URI.
- This media player application may be, for example, a MICROSOFT WINDOWS MEDIA PLAYERTM, REAL NETWORKS REAL PLAYERTM, FLASHTM MEDIA PLAYER, or some other suitable media player application.
- Some example embodiments may include the media player application automatically creating a watch history of a user.
- the media player application may automatically generate a URI containing a query portion reflecting the scenes viewed by the user.
- This query portion may include scenes, as denoted by frame or TR values, that are fast forwarded past, stopped at, or otherwise viewed or avoided by the user during the course of viewing.
- This query portion may also include scenes, as denoted by frame or TR values, that are to be played at a normal rate for viewing by a user.
- a normal rate may be a rate of, for example, 30 frames per second.
- Certain rules may be followed during the course of the viewing of digital content by the user. These rules may include:
- an instruction set is provided via the query portion of a URI so as to instruct a party receiving the URI as to what piece or pieces of digital content are to be viewed. Additional information may also be provided in this instruction set such as ratings related to the digital content, or portions thereof.
- this instruction set may be written observing such standards as Augmented Backus-Naur form (ABNF) such that instructions may be written in hexadecimal, decimal, or binary form.
- ABNF Augmented Backus-Naur form
- Some example embodiments may include obscuring portions of the instruction set using hashing, symmetric encryption, asymmetric encryption, or some other suitable obscuficating regime.
- URI schema may be provided as follows:
- a scheme name e.g., Hyper Text Transfer Protocol (HTTP)
- IP Internet Protocol
- a fragment e.g., #“World's Sharks”.
- a sequence of queries e.g., instructions or an instruction set
- more complex queries may be generated.
- a series of queries may be strung together using the URI syntax for a query.
- the above outlined query portion may retrieve certain pieces of content (e.g., the referenced digital content of “Jaws” “ET”, Scarface etc.) depending on other operations with which this query portion is combined within a URI. For example, using the HTTP “GET” operation in combination with this query portion may result in these various pieces of content being retrieved for viewing. In some case, the “#” character may not be used.
- Some example embodiments may include using numeric values formatted using ABNF to represent numeric values or ranges of values in a query.
- the statement “% x” denotes that the subsequent values are to be understood as hexadecimal values.
- decimal e.g., % d
- binary e.g., % b
- character values e.g., % ⁇ ASCII value>
- quotation marks e.g., “ ”.
- other example syntax may be used alone or in combination with ABNF to denote certain a certain query.
- the statement “&T” may be used to denote the use of time as a TR value to illustrate a portion of content.
- Some example embodiments may include the use of “&F” to denote the use of a frame value to illustrate a portion of content.
- Some example embodiments may include the use of open-ended syntax to represent an open-ended range.
- “&150-” may represent the range 150 to the end of a piece of content.
- “&-150” may represent the beginning of a piece of digital content to the 150 th frame of TR value.
- the query portion, and instruction set contained therein may be obscured using, for example, a hashing algorithm, symmetric encryption, asymmetric encryption, or some other suitable method for obscuring an alpha-numeric value.
- hashing algorithms include Message-Digest algorithm 5 (MD5), and the Secure Hash Algorithm (SHA) series of algorithms.
- obfuscation techniques may also be applied to hide the query portion and instruction set contained therein including a symmetric encryption algorithm.
- symmetric key algorithms include the Advanced Encryption Standard (AES), Twofish, Serpent, and Blowfish.
- AES Advanced Encryption Standard
- Twofish Twofish
- Serpent Serpent
- Blowfish Blowfish
- a media player application is compiled with one or more symmetric key values. One or more of these symmetric key values may then be used to encrypt the query portion of the URI so as to obscure the instruction set contained therein. Once encrypted, this URI may be sent to another media player or other suitable device. Once received by the media player or other suitable device, the media player may use its own symmetric key or range of key values to decrypt the query portion and read the instruction set.
- asymmetric encryption algorithm examples include Rivest, Shamir and Adleman (RSA), and Diffie-Hellman.
- RSA Rivest, Shamir and Adleman
- a media player application or trusted server e.g., a third party identity provider
- a media player application or trusted server authorized by the user generates a public key/private key pair. Once generated, the user keeps the private and distributes the public key. The private is then used by the user to encrypt the query portion of the URI and the instruction set contained therein.
- the now encrypted query portion and the associated URI are sent to a second party for playing (e.g., for playing on another media player application).
- a second party for playing e.g., for playing on another media player application.
- the query portion is decrypted with the public key for playing on, for example, the media player application.
- FIG. 1 is a diagram of an example system 100 illustrating the generation of selection data in the form of a watch history to be stored in a persistent native data store. Illustrated is a user 101 who, utilizing a media player application 112 , generates selection signals 107 . These selection signals may instruct, for example, a cell phone 103 , a computer system 104 , a television 105 , and/or a Personal Digital Assistant (PDA) 106 (collectively referenced herein as one or more devices 102 ) to record a particular selection.
- PDA Personal Digital Assistant
- This recording may be in the form of the user 101 executing a play button residing as a part of the media player application 112 , a scroll bar residing as a part of the media player application 112 , or some other function that is a part of the media player application 112 .
- a selection signal 107 is generated, a selection data 109 is, in turn, generated.
- This selection data 109 is then converted into, for example, a URI value 108 .
- This URI value 108 is stored into, for example, a URI content store 111 .
- this URI content store 111 may reside as a part of one or more of the devices 102 .
- this URI 108 may be provided to other devices to be used in the viewing of content. Further, as will be more fully illustrated below, the selection signals 107 and selection data 109 may be generated in respect to a piece of content (e.g., digital content such as audio content, video content, and/or audio-video content).
- a piece of content e.g., digital content such as audio content, video content, and/or audio-video content.
- FIG. 2 is a diagram of an example system 200 illustrating the generation of a URI, and the providing of this URI over a network to another party or user. This other party or user may then use this URI to view a data stream reflecting selected portions of a piece of digital content as defined in the query portion (e.g., an instruction set) of the URI. Illustrated is the user 101 utilizing the media player application 112 , and the one or more devices 102 upon which is media player application 112 resides, to generate selection signals 213 . Once these selection signals 213 are generated, selection data 214 is generated and stored as a URI 208 onto the URI content store 111 .
- this URI 208 may be transmitted across a network 220 by one or more of the devices 102 .
- a HyperText Transfer Protocol (HTTP) schema may be associated with the URI.
- HTTP HyperText Transfer Protocol
- the URI 208 may be utilized via the user 201 using a media player application 212 .
- This media player application 212 may reside on a number of devices 202 such as, for example, a cell phone 203 , a computer system 204 , a television 205 , and/or a PDA 206 .
- Associated with any one of these devices 202 may be some type of native persistent data store, such as a URI content store 221 .
- a content request 209 may be generated wherein this content request 209 contains the URI information contained in the URI 208 .
- this content request 209 may utilize a link, such as an HTTP based hyperlink containing, for example, the query data supplied by the URI 208 .
- This query data now in the form of an instruction set may instruct a device on the particular portions of content that are requested to be viewed by the user 201 .
- a content request 209 is sent across a network 220 to a media server 210 .
- This media server 210 may be a web server, a media server, or some other suitable type of server that facilitates the streaming of content, such as digital content. Further, in some example embodiments, a plurality of media servers may be used. Similarly, in some example embodiments, a plurality of web servers in combination with the plurality of media servers may be used.
- the media server 210 may generate and send back across the network 220 a confirmation and data stream 211 .
- this confirmation and data stream 211 may be a HTTP confirmation that precedes the streaming of content, such as digital content.
- the confirmation data stream 211 maybe played such that the selected portions of the content, as shown in the query portion of the content request 209 and URI 208 , may be played.
- frame values 0 to 100 are being requested from the media server 210 and provided by the media server 210 to the media player application 212 .
- the URI 208 may be stored onto the previously illustrated URI content store 221 for future use by the user 201 .
- FIG. 3 is a diagram of an example partially distributed peer to peer network 300 , wherein a content request is made of one peer by another peer. Illustrated is a plurality of control peers 304 , 305 , 325 , and 312 . Operatively connected to each one of these control peers is a number of ordinary peers. For example, control peer 304 is operatively connected via an internet 321 to an ordinary peer 301 , 302 and 303 . Similarly, control peer 305 is operatively connected via the internet 321 to an ordinary peer 306 , 307 , and 308 . Further, a control peer 325 is operatively connected via the internet 321 to an ordinary peer 313 , 314 , and 315 .
- control peer 312 is operatively connected via the internet 321 to ordinary peer 309 , 310 , and 311 .
- an additional ordinary peer may become a part of this partially distributed peer to peer network by first, for example, logging onto a login server 320 via the internet 321 .
- an ordinary peer 316 logs onto the partially distributed peer to peer system via the previously illustrated internet 321 and login server 320 .
- This URI 350 is transmitted across an internet 321 and ultimately to an ordinary peer 309 . Further, this URI 350 may be part of a more general content request.
- a data stream containing the requested portion of the digital content as reflected in the query portion of the URI 350 is transmitted back across the internet 321 by the ordinary peer 309 .
- This data stream 351 is then received by the ordinary peer 313 for playing.
- this query portion may also be referred to as an instruction set wherein the query portion provides instructions generated by one ordinary peer (e.g., ordinary peer 313 ) to a second ordinary peer such as, for example, ordinary peer 309 .
- ordinary peer 313 e.g., ordinary peer 313
- second ordinary peer such as, for example, ordinary peer 309 .
- peer to peer network 300 illustrated herein references a partially distributed peer-to-peer network, other types of peer to peer networks are also envisioned such as a wholly distributed peer to peer network utilizing query flooding.
- FIG. 4 is a system diagram of an example system 400 illustrating the use of asymmetric key encryption to obscure an instruction set contained within the query portion of an URI. Illustrated is a user 101 , utilizing the media player application 112 , which may reside in any one of the number of devices 102 , that may generate a particular URI value for viewing by another user, such as user 201 . In example cases where some type of obfuscation method may be used for the purposes of obscuring the query portion of a URI, the user 101 may have to request a public key for the purposes of obscuring this query portion or instruction set. Shown is a key request 402 containing authentication information for the user 101 .
- This key request 402 is transmitted across a network 220 to a third party key server 403 .
- the identity of the user 101 is verified.
- a public key 404 is transmitted by the third party key server 403 back across the network 220 to the user 101 utilizing the media player application 112 .
- this public key 404 is used to encrypt the query portion of a URI, such as URI 405 .
- This URI 405 may be part of a more general content request.
- This encrypted query portion is reflected as a field 406 .
- this URI 405 is then transmitted by the user 101 utilizing the one or more devices 102 across the network 220 to a user 201 utilizing a media player application 212 .
- This user 201 and, more specifically, the media player application 212 have a private key that corresponds to the public key 404 supplied by the third party key server.
- This private key may then be used to decrypt the field 406 revealing a range of frame values, or TR values corresponding to a particular instruction set or query portion of the URI 405 .
- the user 201 may be free to request the portion of digital content corresponding to the range of values illustrated in the query portion.
- a trusted relationship 420 in the form of, for example, a shared secret, such as a private key value, may exist between the third party key server 403 and the media player application 212 .
- some other use of asymmetric encryption may be utilized.
- a public key supplied by, for example, a media server 210 may be utilized to encrypt a URI.
- the query portion may be sent to the media server 210 where the media server 210 may utilize its private key to decrypt this query portion.
- the identity of the requesting party e.g., the party utilizing the public key
- some other suitable use of asymmetric encryption may be utilized.
- FIG. 5 is a diagram of example system 500 illustrating the use of ABNF. Illustrated is a user 101 , who, utilizing a media player application 112 , generates a URI 521 .
- This URI 521 may be part of a more general content request. In some example embodiments, this URI 521 , and the data contained therein, may be stored as a content store 502 to the URI content store 111 . In some example embodiments, this URI 521 is transmitted across a network 220 to a media player application 212 residing on one or more devices 202 . This URI 521 may then be transmitted by the media player application 212 across network 220 to the media server 210 .
- This URI 521 may contain a field 522 with a query portion and instruction set that is encoded using ABNF.
- the query portion is encoded using ABNF where the values contained in the query portion are represented in their hexadecimal form where these values correspond to a range of frame values, or TR values for a particular piece of content.
- the media server 210 may convert the ABNF form of the query portion to some type of other representation of the values contained therein, such as a decimal, binary, octal, ASCII, or some other suitable representation of the data
- the URI 521 may be stored into a URI content store 221 as a URI 524 .
- a query e.g., an instruction set
- the ranges of values contained therein may be represented in a more compact form than, for example, representing the query portion in a binary or even decimal form.
- FIG. 6 is a diagram of an example Graphical User Interface (GUI) used to generate selection data, such as selection data 109 .
- GUI Graphical User Interface
- Tis GUI may reside on the media player application 112 .
- a user's (e.g., user 101 ) watch history maybe automatically recorded by, for example, the media player application 112 .
- a watch history may be the viewing history of a particular user, where this viewing history includes all portions of content played at a normal viewing rate as might be encountered through the execution of a play operation or other function residing on the media player application.
- selection data such as selection data 109
- selection data is generated and stored, for example, as a URI 108 , or as, for example, a URI 208 .
- This select data may be data that reflects the watch history of user 101 , and may include examples such as TR values or frame values. In other instances, the user 101 may be able to choose which portions of the digital content (e.g., selection data) are actually selected.
- the media player application 112 has a number of different functions associated with it that allow further viewing of contents such as digital content. For example, a mute function 606 , a play function 607 , a fast forward function 608 , a reverse function 609 , and a pause function 610 are illustrated. Further illustrated are various scroll functions such as, for example, a first position 604 of a scroll button or bar, and a second position 605 of the scroll button or bar.
- a user such as user 101 may be able to utilize a mouse pointer 603 to manipulate a scroll button or bar such that all ranges of frame or TR values between the first position 604 of the scroll bar or button, and a second position 605 may be captured as watch history and more fundamentally as selection data.
- the mouse pointer 603 may provide some type of textual information to a user, such as user 101 , regarding the functionality that is associated with executing various functions that are illustrated and that reside as a part of, for example, the media player application 112 .
- FIG. 7 is a diagram of an example GUI for a media player application 112 wherein the GUI illustrates the use of a scroll bar selection button to initiate a starting point for the generation of a watch history, and specifically of selection data. Illustrated is a start time 701 of a particular piece of content, and an end time referenced by 702 . Further, a media player application function bar 703 is illustrated with, for example, a play button 704 . In some example embodiments, a user, such as user 101 , may be able to utilize the mouse pointer 705 to move a scroll button or bar to a particular position. Once the mouse pointer 706 is moved to the illustrated position, the mouse pointer 706 , may be utilized to execute the play button 704 .
- the watch history and, more specifically, the selection data may be generated starting from the time selected by the positioning of the scroll button or bar to the end time 702 of the digital content.
- mouse pointer 705 and mouse pointer 706 are the same mouse pointer, but merely distinguished here for illustrative purposes.
- FIG. 8 is an example GUI 800 used to set certain types of protections to obscure the instruction set (e.g., the query portion) of a URI. Illustrated is a recipient address field label and its associated text box 801 wherein the recipient of a particular URI, such as URI 208 , may be provided. Once the address of the recipient is provided, here at the text box 801 , then any one of a number of radio buttons 802 through 804 may be used to set certain ways in which the query value or, more specifically, the instruction set associated with this URI, such as URI 208 , may be obscured.
- this query value may be hashed by executing the radio button 802
- a symmetric key value may be used to obscure this query value by executing the radio button 803
- a public key may be used to obscure this query value via the execution of a radio button 804 .
- the location of a particular key server such as a third party key server 403
- a hash such as an MD5 algorithm
- radio button 803 is executed, a secret key, such as a symmetric key may be utilized as generated by, for example, an AES algorithm.
- a message field 811 is provided to allow a user, such as user 101 , to associate a message with the particular URI value.
- a URI list field 809 is provided that lists the various URIs that are available and that may be sent by a user such as a user 101 to, for example, a user 201 .
- a mouse pointer 810 may be utilized to highlight, focus or otherwise select one of these URI values.
- a user may choose to send the URI value to another user by executing the send button 807 , or may choose to start over by clicking on a clear button 808 .
- FIG. 9 is a block diagram of an example computer system in the form of a device 102 .
- the various blocks illustrated herein may be implemented as hardware, firmware, or even as software.
- a receiver 901 to receive selection data generated by a media player application, the selection data being related to digital content.
- a generator 902 to generate an instruction set that includes the selection data, the instruction set being formatted based upon a URI schema.
- An insertion engine 903 is also illustrated that inserts the instruction set into a query portion of a URI.
- the instruction set may include a range of values corresponding to at least one of a frame value, or a TR value.
- the selection data may include at least one of a frame value, or a TR value.
- a conversion engine 904 to convert a portion of the instruction set into ABNF.
- an obscuring engine 905 is shown to obscure the instruction set based upon at least one of a hashing algorithm, a symmetric encryption algorithm, or an asymmetric algorithm.
- a transmitter 906 is shown that transmits the URI.
- a storage engine 907 is shown that stores the URI.
- FIG. 10 is a block diagram of an example computer system in the form of a media server 210 .
- the various blocks illustrated herein may be implemented as hardware, firmware, or even as software. Shown is a receiver 1001 to receive a URI associated with digital content, the URI containing an instruction set in a query portion of the URI.
- a parser 1002 is also illustrated to parse the instruction set to retrieve selection data relating to the digital content.
- a retriever 1003 is shown to retrieve the digital content based upon the selection data.
- a generator 1004 is illustrated that generates a data stream that includes the digital content.
- a transmitter 1005 is shown that transmits the data stream that includes the digital content.
- a de-obscuring engine 1006 is shown to de-obscure the instruction set based upon at least one of a hashing algorithm, a symmetric encryption algorithm, or an asymmetric algorithm.
- the selection data includes at least one of a frame value, or a IR value.
- FIG. 11 is a tri-stream flowchart illustrating the example method 1100 used to generate selection data in the form of a watch history, record this watch, and to obscure and transmit this watch history for viewing by another.
- the first stream of this tri-stream flowchart is titled “URI generator,” the second stream is titled “URI Player” and the third stream is titled “Content Store.”
- URI Generator a plurality of operations 1101 through 1108 are illustrated, wherein this plurality of operations resides on, for example, one or more of the devices 102 . Shown is an operation 1101 that executes a player application, such as media player application 112 . Once executed, an operation 1102 is executed that checks a watch history associated with this media player application.
- an operation 1103 is executed that records frame numbers and/or TR values viewed by, for example, the user 101 .
- a decisional operation 1104 is executed that determines whether a user, such as user 101 , has ended his viewing of a particular piece of content.
- operation 1102 is re-executed and the watch history for a particular user, such as user 101 , is checked and, where necessary, recorded.
- a further operation 1105 is executed that generates an instruction set. As previously shown, this instruction set may be similar to, for example, the query portion of a URI value.
- an operation 1106 is executed wherein this instruction set may be obscured.
- this obscuring can take the form of applying various methods to the instruction set such as hashing the instruction set, applying a symmetric encryption method or algorithm to the instruction set, and applying an asymmetric encryption algorithm to the instruction set. Further, as will be more fully illustrated below, combinations of these various obscuring methods may be applied such that, for example, an instruction set may first be obscured with a symmetric key utilizing a symmetric algorithm, a public key of an asymmetric algorithm may then be applied to further obscure the instruction set, and finally this instruction set may be hashed, further obscuring it.
- the instruction set is inserted into the URI and stored via the execution of operation 1107 .
- an operation 1108 is executed to transmit the URI with the instruction set.
- the instruction set may be converted into ABNF via the execution of the previously illustrated operation 1105 .
- the URI is transmitted with the instruction set as, for example, a URI 208 .
- This URI 208 may be either requested and/or received through the execution of an operation 1109 that resides on, for example, one or more devices 202 .
- Mis operation 1109 may use a Real-Time Streaming Protocol (RTSP), the aforementioned HTTP, or some other suitable protocol to request the URI 208 , or to receive a request to receive the URI 208 .
- RTSP Real-Time Streaming Protocol
- Additional operations that may reside on this device 202 may include, for example, decisional operation 1110 and further operations 1111 through 1113 .
- a decisional operation 1110 is executed to determine whether or not the instruction set is obscured.
- operation 1111 In example cases where a decisional operation 1110 evaluates to true, then operation 1111 is executed. In example cases where a decisional operation 1110 evaluates to false, then the instruction set is not obscured, and an operation 1112 is executed. With regard to the operation 1111 , this operation acts to remove the measures used to obscure the instruction set when executed. That is, the instruction set may be de-hashed, decrypted, or de-hashed and decrypted in some way. With regard to the operation 1112 , when executed a request for a data stream containing data corresponding to the instruction set made of, for example, the previously illustrated media server 210 . As illustrated herein, once operation 1112 is executed, an operation 1114 is executed that receives and parses a data stream request.
- This parsing may be based upon some type of predefined grammar instructing the operation 1114 as to the syntax of the instruction set.
- This grammar may instruct as to, for example, where a range of values (e.g., frame or TR values) begins or ends.
- This data stream request may be, for example, an HTTP or RTSP based request
- an operation 1115 is executed that retrieves a data stream based upon a provided instruction set, the data stream retrieved from a data store 1116 containing digital content.
- an operation 1117 is executed that transmits the data stream as a data stream 1118 .
- This transmission of the data stream 1118 may utilize, for example, HTTP, or RTSP to stream the particular portions of digital content as outlined in an instruction set contained in a query field (see e.g., URI 521 containing the field 522 with a query).
- the data stream 1118 is received through the execution of an operation 1113 to be played on, for example, the media player application 212 .
- FIG. 12 is a flowchart illustrating an example method used to execute operation 1103 . Illustrated is an operation 1201 that monitors a media player watch operation, such as, for example, the play operation/function or one of the other operations/functions outlined or otherwise illustrated in FIGS. 6 and 7 .
- a decisional operation 1202 is executed that determines whether or not a watch operation has been executed. In example cases where decisional operation 1202 evaluates to false, then operation 1201 is re-executed. In example cases where a decisional operation 1202 evaluates to true, that is, a watch operation has been executed, then a further operation 1203 is executed that records the selection data, such as selection data 109 , associated with the watch operation.
- the selection data may be in the form of, for example, a frame number, a TR value or some other suitable data type. This selection data is stored into, for example, a watch value store 1204 .
- FIG. 13 is a flowchart illustrating an example method used to execution operation 1105 . Illustrated is an operation 1301 that retrieves selection data from a watch value store 1204 . Next, an operation 1302 is executed that passes the selection data through a formatting engine. Then, an operation 1303 is executed that generates an instruction set. Once the instruction set is generated, a decisional operation 1304 is executed that determines whether or not the instructions set should be converted into an ABNF form. The decision to convert the instruction set into an ABNF form maybe determined by, for example, the user 101 . In example cases where decisional operation 1304 evaluates to true, then the instruction set is converted into ABNF form via the execution of an operation 1305 . In example cases where decisional operation 1304 evaluates to false, a termination condition 1306 is executed. Once operation 1305 is executed, the termination condition 1306 is executed.
- FIG. 14 is a flowchart illustrating an example method used to execute an operation 1106 . Shown is an operation 1401 that receives an instruction set. Once received, an operation 1402 is executed that retrieves obscuring instructions for the particular instruction set. Next, a decisional operation 1403 is executed that determines whether an asymmetric encryption algorithm should be applied in the instruction set. In examples where decisional operation 1403 evaluates to true, an operation 1404 is executed that verifies the identity of a particular user, such as user 101 to a key server, such as a third party key server 403 .
- an operation 1406 is executed to encrypt the instructions utilizing the public key.
- decisional operation 1403 evaluates to false
- a further decisional operation 1407 is executed that determines whether or not in a symmetric encryption algorithm should be applied in the instruction set.
- the same decisional operation 1407 is executed upon the successful completion of the execution of operation 1406 .
- an operation 1408 is executed that retrieves a private key.
- This private key may be retrieved from, for example, the one or more devices 102 wherein this key may be, for example, generated during the compilation of the media player application 112 , or may be supplied and stored as a part of, for example, some natively residing stored content, such as the URI content store 111 .
- an operation 1409 is executed that encrypts the instruction set using the symmetric key or private key retrieved for the execution of the operation 1408 .
- this instruction set is encrypted with the symmetric key retrieved via the execution of the operation 1408 .
- a further decisional operation 1410 is executed. This decisional operation 1410 may be executed upon either the successful execution of operation 1409 , or the decisional operation 1407 evaluating to false. This decisional operation 1410 determines whether or not the instruction set, which may be symmetrically encrypted, asymmetrically encrypted, or not encrypted, should be hashed (e.g., that is be passed through a hashing algorithm).
- a termination condition 1412 is executed.
- a decisional operation 1410 evaluates to true that is a hashing algorithm is applied to the instruction set, which may be encrypted or not encrypted
- an operation 1411 is executed that hashes the instruction set.
- the termination condition 1412 is executed.
- the asymmetric algorithm as identified and applied through the execution of operations 1404 through 1406 may be, for example, the RSA algorithm.
- a symmetric encryption algorithm such as AES may be applied.
- hashing is utilized via the execution of operation 1411 .
- MD5 maybe applied to the instruction set.
- the hashing algorithm maybe used alone or in combination with the asymmetric encryption algorithm and/or the symmetric encryption algorithm.
- the asymmetric, symmetric, and/or hashing may be applied to an instruction set in its ABNF form.
- FIG. 15 is a flowchart illustrating an example method used to execute operation 1107 . Illustrated is an operation 1501 that receives an instruction set. Once received, an operation 1502 is executed that retrieves a URI for a particular piece of content to which the instructions set corresponds. Next, an operation 1503 is executed that inserts the instruction set into the query portion of the URI. Then, an operation 1504 is executed that stores this URI containing the instruction set as part of its query field into, for example, a URI content store 111 .
- FIG. 16 is a flowchart illustrating an example method used to execute operation 1111 . Illustrated is an operation 1601 that receives an instruction set and extracts the obscuring data from this instruction set. Next, a decisional operation 1602 is executed that is used to determine whether or not this obscured data has been asymmetrically encrypted. In example cases where a decisional operation 1602 evaluates to true, then a further operation 1603 is executed that retrieves a private key and decrypts the obscured data using this private key. In example cases where decisional operation 1602 evaluates to false, then a further decisional operation 1604 is executed that determines whether or not the obscured data has been encrypted using symmetric encryption.
- a further operation 1605 may be executed that retrieves a private symmetric key and uses this private symmetric key to decrypt the obscured data.
- the further decisional operation 1604 maybe executed either through decisional operation 1602 evaluating to false or through the successful execution of operation 1603 .
- a further decisional operation 1606 may be executed. This decisional operation 1606 evaluates whether or not the obscured data has been hashed.
- a termination condition 1608 is executed.
- an operation 1607 is executed that, in effect, de-hashes the obscured data. After the successful execution of 1607 , then terminating condition 1608 is executed.
- the sequence of decryption and de-hashing, or de-hashing and decryption may be performed in a variety of sequences.
- the de-hashing may be performed first and then decryption, or decryption may be performed first and then de-hashing.
- this de-hashing or decryption may be applied to obscured data in its ABNF form.
- various asymmetric encryption algorithms may include, for example, RSA whereas various symmetric encryption algorithms may include AES, and further various hashing algorithms may include, for example, MD5.
- FIG. 17 is a flowchart illustrating an example method used to execute operation 1112 . Illustrated is an operation 1701 that receives an instruction set. Once received, an operation 1702 is executed that may optionally convert the instruction set from its ABNF form. Once optionally converted, an operation 1703 is executed that generates a data stream based upon the instruction set provided or the provided instruction set. This data stream request may then be sent across a network such as, for example, a network 220 to, for example, a media server 210 , wherein this media server 210 provides, for example, a confirmation and data stream 211 in response.
- a network 220 such as, for example, a network 220 to, for example, a media server 210 , wherein this media server 210 provides, for example, a confirmation and data stream 211 in response.
- Some example embodiments may include the various databases (e.g., 111 , 211 , 1116 , and 1204 ) being relational databases or in some example cases OLAP based databases.
- relational databases various tables of data are created and data is inserted into, and/or selected from, these tables using SQL or some other database-query language known in the art.
- OLAP databases one or more multi-dimensional cubes or hypercubes containing multidimensional data from which data is selected or into which data is inserted using MDX may be implemented.
- a database application such as, for example, MYSQLTM, SQLSERVERTM, Oracle 8ITM, 10GTM, or some other suitable database application may be used to manage the data.
- MOLAP Multidimensional On Line Analytic Processing
- ROLAP Relational On Line Analytic Processing
- HOLAP Hybrid On Line Analytic Processing
- RDS Object Relational Data Schema
- These schemas may be normalized using certain normalization algorithms so as to avoid abnormalities such as non-additive joins and other problems. Additionally, these normalization algorithms may include Boyce-Codd Normal Form or some other normalization, optimization algorithm known in the art.
- FIG. 18 is an example RDA 1800 illustrating various data tables that may be implemented on, for example, the URI content store 111 , or other suitable data stores (e.g., 111 , 211 , 1116 , and 1204 ). Illustrated is table 1801 containing one or more instruction sets. These one or more instruction sets may be in the form of data reflecting a particular range of frame values or TR values for a particular piece of content. A string, eXtensible Markup Language (XML), or character data type may be used to store this instruction set data. Also illustrated is an obfuscation data table 1802 that contains data corresponding to the instruction set and reflecting whether or not a particular instruction set has been obscured using symmetric encryption, asymmetric encryption, and/or hashing.
- XML eXtensible Markup Language
- various sequences of char values may be used as a data type such that, for example, the obfuscation data may contain, for example, the first letter of the particular symmetric, asymmetric or hashing algorithm that may be applied to the instruction set to which it corresponds.
- a boolean value data type may be utilized to denote what types of symmetric, asymmetric, or hashing algorithms may be applied to a particular instruction set.
- a table 1803 that contains URI content.
- the additional fields of a particular URI may be stored or these fields may be, for example, a scheme name, a hierarchical part, or a fragment value corresponding to particular URI.
- an XML data type or a string data type may be used to store this URI content data.
- Table 1804 contains data pertaining to particular hashing function for a particular instruction set. In some example cases, the actual hashing function itself may be stored into this table 1804 such that a string or even a Binary Large Object (BLOB) data type may be utilized.
- BLOB Binary Large Object
- the BLOB data type may be used to store the actual hashing function algorithm itself, whereas the string data type may only be used to store, for example, the name of the hashing function (e.g., MD5).
- a table 1805 is illustrated containing an asymmetric key.
- Stored within table 1805 may be an asymmetric key, for example, a public key corresponding to a private key wherein this public key may be used to, for example, encrypt a particular instruction set.
- This key may be, for example, an integer, float, double, string, or some other suitable data type.
- a table 1807 is illustrated that contains symmetric keys.
- table 1807 Contained in table 1807 are various symmetric keys they may be used to obscure a particular instruction set, wherein this symmetric key may be a private key in the form of a float double, integer, or some other suitable data type.
- this symmetric key may be a private key in the form of a float double, integer, or some other suitable data type.
- these key values may be of some suitable length including, for example, a 128 bit key, a 256 bit key, or some other suitable key size.
- a BLOB data type may be used as the basis to store either an asymmetric key into table 1805 , or a symmetric key into table 1807 .
- a table 1808 is illustrated that contains the various watch values.
- These watch values may be, for example, a frame value or a range of frame values, or a TR value, or a range of TR values that correspond to or may be considered as, for example, selection data such as selection data 109 that are selected by, for example, a user 101 .
- These watch values may include, for example, a string data type or some other suitable data type.
- the table 1806 that contains a unique identifier for the various values contained in the various tables illustrated herein (e.g., 1801 through 1805 , and 1807 through 1808 ). This unique identifier value may contain values or serve as unique key values for each of the particular tuple entries in each of the afore-illustrated tables.
- a method is illustrated as implemented in a distributed or non-distributed software application designed under a three-tier architecture paradigm, whereby the various components of computer code that implement this method may be categorized as belonging to one or more of these three tiers.
- Some example embodiments may include a first tier as an interface (e.g., an interface tier) that is relatively free from application processing.
- a second tier may be a logic tier that performs application processing in the form of logical/mathematical manipulations of data inputted through the interface level, and that communicates the results of these logical/mathematical manipulations to the interface tier and/or to a backend or storage tier.
- a third storage tier may be a persistent storage medium or non-persistent storage medium.
- one or more of these tiers may be collapsed into another, resulting in a two-tier architecture, or even a one-tier architecture.
- the interface and logic tiers may be consolidated, or the logic and storage tiers may be consolidated, as in the case of a software application with an embedded database.
- This three-tier architecture may be implemented using one technology, or, as will be discussed below, a variety of technologies.
- This three-tier architecture may be executed on two or more computer systems organized in a server-client, peer-to-peer, or some other suitable configuration. Further, these three tiers may be distributed between more than one computer system as various software components.
- Some example embodiments may include the above illustrated tiers and the processes or operations that make them up, as one or more software components. Common to many of these components is the ability to generate, use, and manipulate data. These components, and the functionality associated with each, may be used by client, server, or peer computer systems. These various components may be implemented by a computer system on an as-needed basis. These components may be written in an object-oriented computer language such that a component-oriented or object-oriented programming technique can be implemented using a Visual Component Library (VCL), Component Library for Cross Platform (CLX), Java Beans (JB), Java Enterprise Beans (EJB), Component Object Model (COM), Distributed Component Object Model (DCOM), or other suitable technique. These components may be linked to other components via various Application Programming interfaces (APIs), and then compiled into one complete server, client, and/or peer software application. Further, these APIs may be able to communicate through various distributed programming protocols as distributed computing components.
- APIs Application Programming interfaces
- Some example embodiments may include remote procedure calls used to implement one or more of the above-illustrated components across a distributed programming environment as distributed computing components.
- an interface component e.g., an interface tier
- a logic component e.g., a logic tier
- These first and second computer systems may be configured in a server-client, peer-to-peer, or some other suitable configuration.
- These various components may be written using the above-illustrated object-oriented programming techniques, and can be written in the same programming language or a different programming language.
- Various protocols may be implemented to enable these various components to communicate regardless of the programming language used to write these components.
- a component written in C++ may be able to communicate with another component written in the Java programming language using a distributed computing protocol such as a Common Object Request Broker Architecture (CORBA), a Simple Object Access Protocol (SOAP), or some other suitable protocol.
- CORBA Common Object Request Broker Architecture
- SOAP Simple Object Access Protocol
- Some example embodiments may include the use of one or more of these protocols with the various protocols outlined in the Open Systems Interconnection (OSI) model, or Transmission Control Protocol/Internet Protocol (TCP/IP) protocol stack model for defining the protocols used by a network to transmit data
- OSI Open Systems Interconnection
- TCP/IP Transmission Control Protocol/Internet Protocol
- Some example embodiments may use the OSI model or TCP/IP protocol stack model for defining the protocols used by a network to transmit data.
- OSI model or TCP/IP protocol stack model for defining the protocols used by a network to transmit data.
- a system of data transmission between a server and client or between peer computer systems is illustrated as a series of roughly five layers comprising: an application layer, a transport layer, a network layer, a data link layer, and a physical layer.
- the various tiers e.g., the interface, logic, and storage tiers
- data from an application residing at the application layer is loaded into the data load field of a TCP segment residing at the transport layer.
- This TCP segment also contains port information for a recipient software application residing remotely.
- This TCP segment is loaded into the data load field of an IP datagram residing at the network layer.
- this IP datagram is loaded into a frame residing at the data link layer.
- This frame is then encoded at the physical layer, and the data transmitted over a network such as the Internet, a Local Area Network (LAN), a Wide Area Network (WAN), or some other suitable network.
- Internet refers to a network of networks. These networks may use a variety of protocols for the exchange of data, including the aforementioned TCP/IP, and additionally ATM, SNA, SDI, or some other suitable protocol. These networks may be organized within a variety of topologies (e.g., a star topology) or structures.
- FIG. 19 shows a diagrammatic representation of a machine in the example form of a computer system 1900 that executes a set of instructions to perform any one or more of the methodologies discussed herein.
- the machine operates as a standalone device or may be connected (e.g., networked) to other machines.
- the machine may operate in the capacity of a server or a client machine in server-client network environment or as a peer machine in a peer-to-peer (or distributed) network environment.
- the machine may be a PC, a tablet PC, a Set-Top Box (STB), a PDA, a cellular telephone, a Web appliance, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- STB Set-Top Box
- PDA Packet Data Assistant
- cellular telephone a packet data network
- Web appliance a network router, switch or bridge
- any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
- Example embodiments can also be practiced in distributed system environments where local and remote computer systems, which are linked (e.g., either by hardwired, wireless, or a combination of hardwired and wireless connections) through a network, both perform tasks such as those illustrated in the above description.
- the example computer system 1900 includes a processor 1902 (e.g., a Central Processing Unit (CPU), a Graphics Processing Unit (GPU) or both), a main memory 1901 , and a static memory 1906 , which communicate with each other via a bus 1908 .
- the computer system 1900 may further include a video display unit 1910 (e.g., a Liquid Crystal Display (LCD) or a Cathode Ray Tube (CRT)).
- LCD Liquid Crystal Display
- CRT Cathode Ray Tube
- the computer system 1900 also includes an alpha-numeric input device 1917 (e.g., a keyboard), a User Interface (UI) cursor controller 1911 (e.g., a mouse), a disk drive unit 1916 , a signal generation device 1919 (e.g., a speaker) and a network interface device (e.g., a transmitter) 1920 .
- UI User Interface
- the computer system 1900 also includes an alpha-numeric input device 1917 (e.g., a keyboard), a User Interface (UI) cursor controller 1911 (e.g., a mouse), a disk drive unit 1916 , a signal generation device 1919 (e.g., a speaker) and a network interface device (e.g., a transmitter) 1920 .
- UI User Interface
- the drive unit 1916 includes a machine-readable medium 1922 on which is stored one or more sets of instructions and data structures (e.g., software) embodying or used by any one or more of the methodologies or functions illustrated herein.
- the software may also reside, completely or at least partially, within the main memory 1901 and/or within the processor 1902 during execution thereof by the computer system 1900 , the main memory 1901 and the processor 1902 also constituting machine-readable media 1922 .
- the instructions 1921 may further be transmitted or received over a network 1926 via the network interface device 1920 using any one of a number of well-known transfer protocols (e.g., HTTP, Session Initiation Protocol (SIP)).
- HTTP HyperText Transfer Protocol
- SIP Session Initiation Protocol
- machine-readable medium should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions.
- the term “machine-readable medium” shall also be taken to include any medium capable of storing, encoding, or carrying a set of instructions for execution by the machine and that cause the machine to perform any of the one or more of the methodologies illustrated herein.
- the term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic medium, and carrier wave signals.
- Some example embodiments may include the use of the query portion of a URI to transmit an instruction set relating to selected portions of content (e.g., audio or video digital content) selected by a user for viewing or listening.
- This instruction set may be automatically generated by, for example, a media player application, wherein the user chooses to fast-forward past a particular portion of content.
- this instruction set may be stored as part of the query portion of a URI.
- the entire URI may be stored for future use by the user, or may be transferred by the user to another user for use in viewing and listening to the content.
- the user need not repeat the act of manually fast-forwarding through certain portions of content deemed irrelevant. Further, the user may be able to express their likes and dislikes to other users regarding certain pieces of content by providing the other users with the URI containing the queries and selected pieces of content.
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Description
- A portion of the disclosure of this document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software, data, and/or screenshots that may be described below and in the drawings that form a part of this document: Copyright © 2007, Adobe Systems Incorporated. All Rights Reserved.
- Example embodiments relate generally to the technical field of algorithms and programming and, in an example, to the generation and use of Uniform Resource Identifiers (URI) to retrieve content.
- A URI schema outlines the structure of a URI such as a Uniform Resource Locator (URL). Grammatically, a URI maybe expressed as: <scheme name>: <hierarchical part>[?<query>] [# <fragment>]. The query portion of this grammar may be used to provide information relating to some part of the hierarchical part. Further, this query portion may be delimited using a “?” character.
- Some embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings in which:
-
FIG. 1 is a diagram of an example system illustrating the generation of selection data in the form of a watch history to be stored in a persistent native data store, according to an example embodiment. -
FIG. 2 is a diagram of a system illustrating the generation of a URI, and the providing of this URI over a network to another party or user, according to an example embodiment. -
FIG. 3 is a diagram of a partially distributed peer to peer network, wherein a content request is made of one peer by another peer, according to an example embodiment. -
FIG. 4 is a system diagram of a system illustrating the use of asymmetric key encryption to obscure an instruction set contained within the query portion of a URI, according to an example embodiment. -
FIG. 5 is a diagram of system illustrating the use of Augmented Backus-Naur form (ABNF), according to an example embodiment. -
FIG. 6 is a diagram of a Graphical User Interface (GUI) used to generate selection data, such as selection data, according to an example embodiment. -
FIG. 7 is a diagram of a GUI for a media player application wherein this GUI illustrates the use of a scroll bar selection button to initiate a starting point for the generation of watch history, and specifically selection data, according to an example embodiment. -
FIG. 8 is a GUI used to set certain types of protections to obscure the instruction set (e.g., the query portion) of a URI, according to an example embodiment. -
FIG. 9 is a block diagram of an example computer system in the form of a device, according to an example embodiment. -
FIG. 10 is a block diagram of an example computer system in the form of a media server, according to an example embodiment. -
FIG. 11 is a tri-stream flowchart illustrating a method used to generate selection data in the form of a watch history, record this watch, and to obscure and transmit this watch history for viewing by another, according to an example embodiment. -
FIG. 12 is a flowchart illustrating a method used to execute an operation that records frame numbers and/or Temporal Reference (TR) values viewed by a user, according to an example embodiment. -
FIG. 13 is a flowchart illustrating a method used to execute an operation that generates an instruction set, according to an example embodiment. -
FIG. 14 is a flowchart illustrating a method used to execute an operation to obscure an instruction set, according to an example embodiment. -
FIG. 15 is a flowchart illustrating a method used to execute an operation to insert the instruction set into a URI and store it according to an example embodiment. -
FIG. 16 is a flowchart illustrating a method used to execute an operation to remove the measures used to obscure an instruction set, according to an example embodiment. -
FIG. 17 is a flowchart illustrating a method used to execute an operation to request for a data stream containing data corresponding to the instruction set, according to an example embodiment. -
FIG. 18 is a Relational Data Scheme (RDA) illustrating various data tables that may be implemented on a suitable data stores, according to an example embodiment. -
FIG. 19 shows a diagrammatic representation of a machine in the example form of a computer system that executes a set of instructions to perform any one or more of the methodologies discussed herein. - In some example embodiments, a system and method are outlined to allow a user to select certain portions of digital content (e.g., content such as audio, video, or audio-video content) using an instruction set embedded in a Uniform Resource Identifier (URI). For example, when a user watches a video or listens to a piece of audio (collectively digital content or content), the user performs some actions like “Forward” , “Backward”, “Stop”, or “Play”. If the user does not like some songs in a movie or some scenes in a movie, then as soon as the user reaches these scenes, the user would press the forward button to skip such scenes. Every user has a unique style of watching a video. The next time the user watches the same video, the user may have to perform these actions again. That is, the user may have to manually pass certain portions of the digital content using, for example, the “Forward,” “Backward,” or “Stop” operations. By embedding an instruction set into the query portion of a URI, the user may be able to avoid having to manually perform these actions again.
- Some example embodiments may include the user sending this URI, and associated query information, to another user for use in viewing a piece of digital content. For example, the user wants to forward a video to another user for review, and that the user wants that other user only to watch/review interesting scenes in that video. In an example embodiment, the user, using an instruction set placed into the query portion of the URI, may specify markers (e.g., a range of values specified in an instruction set) in the video to communicate separately things like starting time of the scene, ending time of scene, etc. This instruction set may also be used in the streaming of video on the web.
- In one example embodiment, the instruction set may be placed into the query portion of a URI. This example instruction set is outlined as follows:
- files:///C:/Video1.mpeg?0-100&150-270, or
- http://www.video.com/watch?v=eaFXs5UIL2A&0-100&150-270. The grammar and syntax for this URI, and associated query, is outlined below.
- In some example embodiments, a media player application may be used to generate the URI and query portion associated therewith, and to store this URI. This media player application may be, for example, a MICROSOFT WINDOWS MEDIA PLAYER™, REAL NETWORKS REAL PLAYER™, FLASH™ MEDIA PLAYER, or some other suitable media player application. In one example embodiment, a media player may begin playing a piece of content using the following URI-http://www.video.com/watch?v=eaFXs5UIL2A&0-100&150-270. Reading and interpreting this URI, the mediaplayer application may
-
- Start playing from
frame number 0 - Stop at
frame number 100 - Go to frame number 150
- Resume play at frame number 150 and stop at frame number 270
In some example embodiments, the above instruction may be based upon time (e.g., TR values common too many digital content formats such as the Moving Picture Experts Group (MPEG) format) instead of frames.
- Start playing from
- Some example embodiments may include the media player application automatically creating a watch history of a user. In such an embodiment, the media player application may automatically generate a URI containing a query portion reflecting the scenes viewed by the user. This query portion may include scenes, as denoted by frame or TR values, that are fast forwarded past, stopped at, or otherwise viewed or avoided by the user during the course of viewing. This query portion may also include scenes, as denoted by frame or TR values, that are to be played at a normal rate for viewing by a user. A normal rate may be a rate of, for example, 30 frames per second. Certain rules may be followed during the course of the viewing of digital content by the user. These rules may include:
-
- Two consecutive “Forward” operations may be combined to form a single “Forward” operation as long as the play gap between these operations is less than a predefined value F (e.g., say 5 frames which indicates that the frames played were not significant play frames, but rather were played while seeking to the right frame by the user). Similar operations may be performed for “Backward”/“Reverse”
- If two consecutive operations are “Forward” & “Backward”, they will be combined to make a single “Forward” or “Backward” operation, as long the play gap is less than F
In some example embodiments, the final link will look like:
- files:///C:/Video1.mpeg?0-100&150-270, which can then be used by the media player application in an intelligent manner to play the digital content, and can also be used by a server (e.g., a media server) to send only the required parts of the digital content to another user, or even the same user.
- In some example embodiments, an instruction set is provided via the query portion of a URI so as to instruct a party receiving the URI as to what piece or pieces of digital content are to be viewed. Additional information may also be provided in this instruction set such as ratings related to the digital content, or portions thereof. In some example cases, this instruction set may be written observing such standards as Augmented Backus-Naur form (ABNF) such that instructions may be written in hexadecimal, decimal, or binary form. Some example embodiments may include obscuring portions of the instruction set using hashing, symmetric encryption, asymmetric encryption, or some other suitable obscuficating regime.
- An example URI schema may be provided as follows:
- http://Joe@email.com/favoritemovies/?content=“Jaws”#“World'sSharks”
- This URI may be broken down into four parts: a scheme name (e.g., Hyper Text Transfer Protocol (HTTP)), a hierarchical part (e.g., an Internet Protocol (IP) address such as Joe@email), a query (e.g., ?content=“Jaws”#), and a fragment (e.g., #“World's Sharks”). In some example cases a sequence of queries (e.g., instructions or an instruction set) may be provided such that more complex queries may be generated.
- In some example embodiments, a series of queries may be strung together using the URI syntax for a query. A trivial example of the syntax for a query may be represented as <key>=<value>, where the beginning of the query is delimited by a “?”, and the end of the query may be delimited by a “#”. In some example cases, more than one query may be strung together using an “&” character. For example, ?content=“Jaws” may be strung together with other queries such that Joe's favorite movies may be not only Jaws, but also ET, Scarface, and Othello, as stated in the above outlined syntax:
- ?content=“Jaws”&content=“ET”&content=“Scarface”&content=“Othello”#
- As illustrated above, some example embodiments may include the <value> containing complex statements delimited with the “&” character, or even organized using the <key>=<value> syntax. In some example cases, the above outlined query portion may retrieve certain pieces of content (e.g., the referenced digital content of “Jaws” “ET”, Scarface etc.) depending on other operations with which this query portion is combined within a URI. For example, using the HTTP “GET” operation in combination with this query portion may result in these various pieces of content being retrieved for viewing. In some case, the “#” character may not be used.
- Some example embodiments may include using numeric values formatted using ABNF to represent numeric values or ranges of values in a query. For example, the query portion ?v=eaFXs5UIL2A&0-100&150-270 may be represented as ?v=aFXs5UIL2A&%x0-64&96-10E, where v=eaFXs5UIL2A is the key value for a piece of content (e.g., the movie “Jaws”). The statement “% x” denotes that the subsequent values are to be understood as hexadecimal values. Additional statements denoting decimal (e.g., % d), binary (e.g., % b), and even character values (e.g., %<ASCII value>) may be used. Further, as shown above string literals as denoted through the use of quotation marks (e.g., “ ”) may also be used.
- In some example embodiments, other example syntax may be used alone or in combination with ABNF to denote certain a certain query. For example, in some example embodiments, the statement “&T” may be used to denote the use of time as a TR value to illustrate a portion of content. Some example embodiments may include the use of “&F” to denote the use of a frame value to illustrate a portion of content. For example, the query portion ?v=eaFXs5UIL2A&T&0-100&150-270 may represent a range of values as TR values, or ?veaFXs5UIL2A&F&0-100&150-270 may represent a range of values as frame values.
- Some example embodiments may include the use of open-ended syntax to represent an open-ended range. For example, “&150-” may represent the range 150 to the end of a piece of content. And again, “&-150” may represent the beginning of a piece of digital content to the 150th frame of TR value. For example, the query portion ?v=eaFXs5UIL2&0-100&150- may represent the range 0-100 and 150 to the end of the content, while ?v=eaFXs5UIL2A&-270 may represent the beginning to 270.
- In some example embodiments, the query portion, and instruction set contained therein, may be obscured using, for example, a hashing algorithm, symmetric encryption, asymmetric encryption, or some other suitable method for obscuring an alpha-numeric value. In one embodiment, the query value is hashed such that, for example, the query ?v=eaFXs5UIL2A&0-100&150-270 becomes ?EF46745A120, a hexadecimal value generated through the use of a hashing algorithm. Some examples of hashing algorithms include Message-Digest algorithm 5 (MD5), and the Secure Hash Algorithm (SHA) series of algorithms.
- In addition to hashing, or, in lieu of hashing, other obfuscation techniques (e.g., a description of the act of obscuring) may also be applied to hide the query portion and instruction set contained therein including a symmetric encryption algorithm. Some examples of symmetric key algorithms include the Advanced Encryption Standard (AES), Twofish, Serpent, and Blowfish. In one embodiment, a media player application is compiled with one or more symmetric key values. One or more of these symmetric key values may then be used to encrypt the query portion of the URI so as to obscure the instruction set contained therein. Once encrypted, this URI may be sent to another media player or other suitable device. Once received by the media player or other suitable device, the media player may use its own symmetric key or range of key values to decrypt the query portion and read the instruction set.
- In addition to hashing and/or the use of symmetric keys, or in lieu of hashing and/or the use of symmetric keys, other obfuscation techniques may also be applied to hide the query, and instruction set contained therein, including an asymmetric encryption algorithm. Some examples of asymmetric encryption algorithms include Rivest, Shamir and Adleman (RSA), and Diffie-Hellman. In one embodiment, a media player application or trusted server (e.g., a third party identity provider) authorized by the user generates a public key/private key pair. Once generated, the user keeps the private and distributes the public key. The private is then used by the user to encrypt the query portion of the URI and the instruction set contained therein. Once encrypted, the now encrypted query portion and the associated URI are sent to a second party for playing (e.g., for playing on another media player application). Once the URI containing the private key encrypted query portion is received, the query portion is decrypted with the public key for playing on, for example, the media player application. These various obfuscation techniques may be more fully illustrated below.
-
FIG. 1 is a diagram of anexample system 100 illustrating the generation of selection data in the form of a watch history to be stored in a persistent native data store. Illustrated is auser 101 who, utilizing amedia player application 112, generates selection signals 107. These selection signals may instruct, for example, acell phone 103, acomputer system 104, atelevision 105, and/or a Personal Digital Assistant (PDA) 106 (collectively referenced herein as one or more devices 102) to record a particular selection. This recording may be in the form of theuser 101 executing a play button residing as a part of themedia player application 112, a scroll bar residing as a part of themedia player application 112, or some other function that is a part of themedia player application 112. Once thisselection signal 107 is generated, aselection data 109 is, in turn, generated. Thisselection data 109 is then converted into, for example, aURI value 108. ThisURI value 108 is stored into, for example, aURI content store 111. In some example embodiments, thisURI content store 111 may reside as a part of one or more of thedevices 102. In some example embodiments, as will be more fully illustrated below, thisURI 108 may be provided to other devices to be used in the viewing of content. Further, as will be more fully illustrated below, the selection signals 107 andselection data 109 may be generated in respect to a piece of content (e.g., digital content such as audio content, video content, and/or audio-video content). -
FIG. 2 is a diagram of anexample system 200 illustrating the generation of a URI, and the providing of this URI over a network to another party or user. This other party or user may then use this URI to view a data stream reflecting selected portions of a piece of digital content as defined in the query portion (e.g., an instruction set) of the URI. Illustrated is theuser 101 utilizing themedia player application 112, and the one ormore devices 102 upon which ismedia player application 112 resides, to generate selection signals 213. Once these selection signals 213 are generated,selection data 214 is generated and stored as aURI 208 onto theURI content store 111. In some example cases, thisURI 208 may be transmitted across anetwork 220 by one or more of thedevices 102. In example cases where thisURI 208 is transmitted across a network, a HyperText Transfer Protocol (HTTP) schema may be associated with the URI. Once transmitted across thenetwork 220, theURI 208 may be utilized via theuser 201 using amedia player application 212. Thismedia player application 212 may reside on a number ofdevices 202 such as, for example, acell phone 203, acomputer system 204, atelevision 205, and/or aPDA 206. Associated with any one of thesedevices 202 may be some type of native persistent data store, such as aURI content store 221. Once theURI 208 is received by theuser 201, using any one of thedevices 202, acontent request 209 may be generated wherein thiscontent request 209 contains the URI information contained in theURI 208. Specifically, thiscontent request 209 may utilize a link, such as an HTTP based hyperlink containing, for example, the query data supplied by theURI 208. This query data, now in the form of an instruction set may instruct a device on the particular portions of content that are requested to be viewed by theuser 201. For example, here acontent request 209 is sent across anetwork 220 to amedia server 210. Thismedia server 210 may be a web server, a media server, or some other suitable type of server that facilitates the streaming of content, such as digital content. Further, in some example embodiments, a plurality of media servers may be used. Similarly, in some example embodiments, a plurality of web servers in combination with the plurality of media servers may be used. - In some example embodiments, once the
content request 209 is received by themedia server 210, themedia server 210 may generate and send back across the network 220 a confirmation and data stream 211. In some example embodiments, this confirmation and data stream 211 may be a HTTP confirmation that precedes the streaming of content, such as digital content. Once received by themedia player application 212, the confirmation data stream 211 maybe played such that the selected portions of the content, as shown in the query portion of thecontent request 209 andURI 208, may be played. Here, for example,frame values 0 to 100 are being requested from themedia server 210 and provided by themedia server 210 to themedia player application 212. In certain example cases, theURI 208 may be stored onto the previously illustratedURI content store 221 for future use by theuser 201. -
FIG. 3 is a diagram of an example partially distributed peer to peernetwork 300, wherein a content request is made of one peer by another peer. Illustrated is a plurality of 304, 305, 325, and 312. Operatively connected to each one of these control peers is a number of ordinary peers. For example,control peers control peer 304 is operatively connected via aninternet 321 to an 301, 302 and 303. Similarly,ordinary peer control peer 305 is operatively connected via theinternet 321 to an 306, 307, and 308. Further, aordinary peer control peer 325 is operatively connected via theinternet 321 to an 313, 314, and 315. Also,ordinary peer control peer 312 is operatively connected via theinternet 321 to 309, 310, and 311. In some example cases, an additional ordinary peer may become a part of this partially distributed peer to peer network by first, for example, logging onto aordinary peer login server 320 via theinternet 321. Here, anordinary peer 316 logs onto the partially distributed peer to peer system via the previously illustratedinternet 321 andlogin server 320. - Shown is an
ordinary peer 313 that generates and transmits aURI 350 containing content information and, in particular, a range of content frame values, or TR values contained within the query portion of theURI 350. ThisURI 350 is transmitted across aninternet 321 and ultimately to anordinary peer 309. Further, thisURI 350 may be part of a more general content request. Once received by theordinary peer 309, a data stream containing the requested portion of the digital content as reflected in the query portion of theURI 350 is transmitted back across theinternet 321 by theordinary peer 309. Thisdata stream 351 is then received by theordinary peer 313 for playing. As previously illustrated elsewhere, this query portion may also be referred to as an instruction set wherein the query portion provides instructions generated by one ordinary peer (e.g., ordinary peer 313) to a second ordinary peer such as, for example,ordinary peer 309. While the peer to peernetwork 300 illustrated herein references a partially distributed peer-to-peer network, other types of peer to peer networks are also envisioned such as a wholly distributed peer to peer network utilizing query flooding. -
FIG. 4 is a system diagram of an example system 400 illustrating the use of asymmetric key encryption to obscure an instruction set contained within the query portion of an URI. Illustrated is auser 101, utilizing themedia player application 112, which may reside in any one of the number ofdevices 102, that may generate a particular URI value for viewing by another user, such asuser 201. In example cases where some type of obfuscation method may be used for the purposes of obscuring the query portion of a URI, theuser 101 may have to request a public key for the purposes of obscuring this query portion or instruction set. Shown is akey request 402 containing authentication information for theuser 101. Thiskey request 402 is transmitted across anetwork 220 to a thirdparty key server 403. Once received by the thirdparty key server 403, the identity of theuser 101 is verified. In example cases where the identity of theuser 101 is successfully identified, a public key 404 is transmitted by the thirdparty key server 403 back across thenetwork 220 to theuser 101 utilizing themedia player application 112. Once this public key 404 is received, this public key 404 is used to encrypt the query portion of a URI, such asURI 405. ThisURI 405 may be part of a more general content request. This encrypted query portion is reflected as afield 406. - In some example embodiments, this
URI 405 is then transmitted by theuser 101 utilizing the one ormore devices 102 across thenetwork 220 to auser 201 utilizing amedia player application 212. Thisuser 201 and, more specifically, themedia player application 212 have a private key that corresponds to the public key 404 supplied by the third party key server. This private key may then be used to decrypt thefield 406 revealing a range of frame values, or TR values corresponding to a particular instruction set or query portion of theURI 405. Once decrypted, theuser 201 may be free to request the portion of digital content corresponding to the range of values illustrated in the query portion. In some example cases, atrusted relationship 420 in the form of, for example, a shared secret, such as a private key value, may exist between the thirdparty key server 403 and themedia player application 212. - In some example embodiments, some other use of asymmetric encryption may be utilized. For example, a public key supplied by, for example, a
media server 210 may be utilized to encrypt a URI. Once the query portion of this URI is encrypted, the query portion may be sent to themedia server 210 where themedia server 210 may utilize its private key to decrypt this query portion. Where the decryption is successful, the identity of the requesting party (e.g., the party utilizing the public key) may be authenticated. Further, in other example embodiments, some other suitable use of asymmetric encryption may be utilized. -
FIG. 5 is a diagram ofexample system 500 illustrating the use of ABNF. Illustrated is auser 101, who, utilizing amedia player application 112, generates aURI 521. ThisURI 521 may be part of a more general content request. In some example embodiments, thisURI 521, and the data contained therein, may be stored as acontent store 502 to theURI content store 111. In some example embodiments, thisURI 521 is transmitted across anetwork 220 to amedia player application 212 residing on one ormore devices 202. ThisURI 521 may then be transmitted by themedia player application 212 acrossnetwork 220 to themedia server 210. ThisURI 521 may contain afield 522 with a query portion and instruction set that is encoded using ABNF. Here, for example, the query portion is encoded using ABNF where the values contained in the query portion are represented in their hexadecimal form where these values correspond to a range of frame values, or TR values for a particular piece of content. Once received by themedia server 210, the URI 521 (e.g., a content request) is processed and a confirmation anddata stream 503 is returned where this confirmation may be, for example, an HTTP confirmation that is subsequently followed by the requested frame, and/or TR values. In some example embodiments, themedia server 210 may convert the ABNF form of the query portion to some type of other representation of the values contained therein, such as a decimal, binary, octal, ASCII, or some other suitable representation of the data Further, in some example cases, theURI 521 may be stored into aURI content store 221 as aURI 524. In some example embodiments, through the use of ABNF, a query, (e.g., an instruction set) and the ranges of values contained therein, may be represented in a more compact form than, for example, representing the query portion in a binary or even decimal form. -
FIG. 6 is a diagram of an example Graphical User Interface (GUI) used to generate selection data, such asselection data 109. Tis GUI may reside on themedia player application 112. In some example embodiments, a user's (e.g., user 101) watch history maybe automatically recorded by, for example, themedia player application 112. A watch history may be the viewing history of a particular user, where this viewing history includes all portions of content played at a normal viewing rate as might be encountered through the execution of a play operation or other function residing on the media player application. Once recorded, selection data, such asselection data 109, is generated and stored, for example, as aURI 108, or as, for example, aURI 208. This select data may be data that reflects the watch history ofuser 101, and may include examples such as TR values or frame values. In other instances, theuser 101 may be able to choose which portions of the digital content (e.g., selection data) are actually selected. Here, for example, themedia player application 112 has a number of different functions associated with it that allow further viewing of contents such as digital content. For example, amute function 606, aplay function 607, a fast forward function 608, a reverse function 609, and a pause function 610 are illustrated. Further illustrated are various scroll functions such as, for example, afirst position 604 of a scroll button or bar, and asecond position 605 of the scroll button or bar. Further illustrated is the beginning time for a piece of digital content as 0:00 (see referent 601), and an end time for a particular piece of digital content, as 45:00, referenced herein as 602. In some example embodiments, a user such asuser 101 may be able to utilize amouse pointer 603 to manipulate a scroll button or bar such that all ranges of frame or TR values between thefirst position 604 of the scroll bar or button, and asecond position 605 may be captured as watch history and more fundamentally as selection data. In certain example cases, themouse pointer 603 may provide some type of textual information to a user, such asuser 101, regarding the functionality that is associated with executing various functions that are illustrated and that reside as a part of, for example, themedia player application 112. -
FIG. 7 is a diagram of an example GUI for amedia player application 112 wherein the GUI illustrates the use of a scroll bar selection button to initiate a starting point for the generation of a watch history, and specifically of selection data. Illustrated is astart time 701 of a particular piece of content, and an end time referenced by 702. Further, a media player application function bar 703 is illustrated with, for example, aplay button 704. In some example embodiments, a user, such asuser 101, may be able to utilize themouse pointer 705 to move a scroll button or bar to a particular position. Once themouse pointer 706 is moved to the illustrated position, themouse pointer 706, may be utilized to execute theplay button 704. Once executed, the watch history and, more specifically, the selection data may be generated starting from the time selected by the positioning of the scroll button or bar to theend time 702 of the digital content. In one embodiment,mouse pointer 705 andmouse pointer 706 are the same mouse pointer, but merely distinguished here for illustrative purposes. -
FIG. 8 is anexample GUI 800 used to set certain types of protections to obscure the instruction set (e.g., the query portion) of a URI. Illustrated is a recipient address field label and its associatedtext box 801 wherein the recipient of a particular URI, such asURI 208, may be provided. Once the address of the recipient is provided, here at thetext box 801, then any one of a number ofradio buttons 802 through 804 may be used to set certain ways in which the query value or, more specifically, the instruction set associated with this URI, such asURI 208, may be obscured. For example, this query value may be hashed by executing theradio button 802, a symmetric key value may be used to obscure this query value by executing theradio button 803, and/or a public key may be used to obscure this query value via the execution of aradio button 804. In example cases where theradio button 804 is executed, the location of a particular key server, such as a thirdparty key server 403, may have to be specified via entering its location into thetext box 805. As previously illustrated, through the execution ofradio button 802, a hash, such as an MD5 algorithm, may be utilized. Further, whereradio button 803 is executed, a secret key, such as a symmetric key may be utilized as generated by, for example, an AES algorithm. Further, where private key/public key encryption, otherwise known as asymmetric encryption, is utilized, an algorithm such as RSA may be implemented. Amessage field 811 is provided to allow a user, such asuser 101, to associate a message with the particular URI value. In some example cases, aURI list field 809 is provided that lists the various URIs that are available and that may be sent by a user such as auser 101 to, for example, auser 201. In some example cases, amouse pointer 810 may be utilized to highlight, focus or otherwise select one of these URI values. In some example embodiments, once a way of obscuring a particular query portion or instruction set for a URI is selected, and a message provided, a user, such asuser 101, may choose to send the URI value to another user by executing thesend button 807, or may choose to start over by clicking on aclear button 808. -
FIG. 9 is a block diagram of an example computer system in the form of adevice 102. The various blocks illustrated herein may be implemented as hardware, firmware, or even as software. Shown is areceiver 901 to receive selection data generated by a media player application, the selection data being related to digital content. Also illustrated is agenerator 902 to generate an instruction set that includes the selection data, the instruction set being formatted based upon a URI schema. Aninsertion engine 903 is also illustrated that inserts the instruction set into a query portion of a URI. The instruction set may include a range of values corresponding to at least one of a frame value, or a TR value. The selection data may include at least one of a frame value, or a TR value. Also illustrated is aconversion engine 904 to convert a portion of the instruction set into ABNF. Additionally, an obscuringengine 905 is shown to obscure the instruction set based upon at least one of a hashing algorithm, a symmetric encryption algorithm, or an asymmetric algorithm. Moreover, atransmitter 906 is shown that transmits the URI. Further, astorage engine 907 is shown that stores the URI. -
FIG. 10 is a block diagram of an example computer system in the form of amedia server 210. The various blocks illustrated herein may be implemented as hardware, firmware, or even as software. Shown is areceiver 1001 to receive a URI associated with digital content, the URI containing an instruction set in a query portion of the URI. Aparser 1002 is also illustrated to parse the instruction set to retrieve selection data relating to the digital content. Further, aretriever 1003 is shown to retrieve the digital content based upon the selection data. Also, agenerator 1004 is illustrated that generates a data stream that includes the digital content. Moreover, atransmitter 1005 is shown that transmits the data stream that includes the digital content. Further, ade-obscuring engine 1006 is shown to de-obscure the instruction set based upon at least one of a hashing algorithm, a symmetric encryption algorithm, or an asymmetric algorithm. In certain example cases, the selection data includes at least one of a frame value, or a IR value. -
FIG. 11 is a tri-stream flowchart illustrating theexample method 1100 used to generate selection data in the form of a watch history, record this watch, and to obscure and transmit this watch history for viewing by another. The first stream of this tri-stream flowchart is titled “URI generator,” the second stream is titled “URI Player” and the third stream is titled “Content Store.” Starting with the first stream titled “URI Generator,” a plurality ofoperations 1101 through 1108 are illustrated, wherein this plurality of operations resides on, for example, one or more of thedevices 102. Shown is anoperation 1101 that executes a player application, such asmedia player application 112. Once executed, anoperation 1102 is executed that checks a watch history associated with this media player application. Next, anoperation 1103 is executed that records frame numbers and/or TR values viewed by, for example, theuser 101. Then, adecisional operation 1104 is executed that determines whether a user, such asuser 101, has ended his viewing of a particular piece of content. In example cases wheredecisional operation 1104 evaluates to false,operation 1102 is re-executed and the watch history for a particular user, such asuser 101, is checked and, where necessary, recorded. In example cases wheredecisional operation 1104 evaluates to true, afurther operation 1105 is executed that generates an instruction set. As previously shown, this instruction set may be similar to, for example, the query portion of a URI value. In some example embodiments, anoperation 1106 is executed wherein this instruction set may be obscured. - In some example embodiments, as will be more fully illustrated below, this obscuring can take the form of applying various methods to the instruction set such as hashing the instruction set, applying a symmetric encryption method or algorithm to the instruction set, and applying an asymmetric encryption algorithm to the instruction set. Further, as will be more fully illustrated below, combinations of these various obscuring methods may be applied such that, for example, an instruction set may first be obscured with a symmetric key utilizing a symmetric algorithm, a public key of an asymmetric algorithm may then be applied to further obscure the instruction set, and finally this instruction set may be hashed, further obscuring it. Once the instruction set is obscured, where such is required or requested by, for example, the
user 101 or theuser 201, the instruction set is inserted into the URI and stored via the execution ofoperation 1107. Next, anoperation 1108 is executed to transmit the URI with the instruction set. In certain example cases, before an instruction set is obscured, the instruction set may be converted into ABNF via the execution of the previously illustratedoperation 1105. - Upon the successful execution of
1107 and 1108, the URI is transmitted with the instruction set as, for example, aoperations URI 208. ThisURI 208 may be either requested and/or received through the execution of anoperation 1109 that resides on, for example, one ormore devices 202.Mis operation 1109 may use a Real-Time Streaming Protocol (RTSP), the aforementioned HTTP, or some other suitable protocol to request theURI 208, or to receive a request to receive theURI 208. Additional operations that may reside on thisdevice 202 may include, for example,decisional operation 1110 andfurther operations 1111 through 1113. Upon the execution of the operation 1109 adecisional operation 1110 is executed to determine whether or not the instruction set is obscured. In example cases where adecisional operation 1110 evaluates to true, thenoperation 1111 is executed. In example cases where adecisional operation 1110 evaluates to false, then the instruction set is not obscured, and anoperation 1112 is executed. With regard to theoperation 1111, this operation acts to remove the measures used to obscure the instruction set when executed. That is, the instruction set may be de-hashed, decrypted, or de-hashed and decrypted in some way. With regard to theoperation 1112, when executed a request for a data stream containing data corresponding to the instruction set made of, for example, the previously illustratedmedia server 210. As illustrated herein, onceoperation 1112 is executed, anoperation 1114 is executed that receives and parses a data stream request. This parsing may be based upon some type of predefined grammar instructing theoperation 1114 as to the syntax of the instruction set. This grammar may instruct as to, for example, where a range of values (e.g., frame or TR values) begins or ends. This data stream request may be, for example, an HTTP or RTSP based request Next, anoperation 1115 is executed that retrieves a data stream based upon a provided instruction set, the data stream retrieved from adata store 1116 containing digital content. Then, anoperation 1117 is executed that transmits the data stream as adata stream 1118. This transmission of thedata stream 1118 may utilize, for example, HTTP, or RTSP to stream the particular portions of digital content as outlined in an instruction set contained in a query field (see e.g.,URI 521 containing thefield 522 with a query). Thedata stream 1118 is received through the execution of anoperation 1113 to be played on, for example, themedia player application 212. -
FIG. 12 is a flowchart illustrating an example method used to executeoperation 1103. Illustrated is anoperation 1201 that monitors a media player watch operation, such as, for example, the play operation/function or one of the other operations/functions outlined or otherwise illustrated inFIGS. 6 and 7 . Next, adecisional operation 1202 is executed that determines whether or not a watch operation has been executed. In example cases wheredecisional operation 1202 evaluates to false, thenoperation 1201 is re-executed. In example cases where adecisional operation 1202 evaluates to true, that is, a watch operation has been executed, then afurther operation 1203 is executed that records the selection data, such asselection data 109, associated with the watch operation. The selection data may be in the form of, for example, a frame number, a TR value or some other suitable data type. This selection data is stored into, for example, awatch value store 1204. -
FIG. 13 is a flowchart illustrating an example method used toexecution operation 1105. Illustrated is anoperation 1301 that retrieves selection data from awatch value store 1204. Next, anoperation 1302 is executed that passes the selection data through a formatting engine. Then, anoperation 1303 is executed that generates an instruction set. Once the instruction set is generated, adecisional operation 1304 is executed that determines whether or not the instructions set should be converted into an ABNF form. The decision to convert the instruction set into an ABNF form maybe determined by, for example, theuser 101. In example cases wheredecisional operation 1304 evaluates to true, then the instruction set is converted into ABNF form via the execution of anoperation 1305. In example cases wheredecisional operation 1304 evaluates to false, atermination condition 1306 is executed. Onceoperation 1305 is executed, thetermination condition 1306 is executed. -
FIG. 14 is a flowchart illustrating an example method used to execute anoperation 1106. Shown is anoperation 1401 that receives an instruction set. Once received, anoperation 1402 is executed that retrieves obscuring instructions for the particular instruction set. Next, adecisional operation 1403 is executed that determines whether an asymmetric encryption algorithm should be applied in the instruction set. In examples wheredecisional operation 1403 evaluates to true, anoperation 1404 is executed that verifies the identity of a particular user, such asuser 101 to a key server, such as a thirdparty key server 403. Next, assuming the successful verification of the user's identity through the execution of operation 1405 (e.g., a public key had been retrieved), then anoperation 1406 is executed to encrypt the instructions utilizing the public key. In example cases wheredecisional operation 1403 evaluates to false, then a furtherdecisional operation 1407 is executed that determines whether or not in a symmetric encryption algorithm should be applied in the instruction set. The samedecisional operation 1407 is executed upon the successful completion of the execution ofoperation 1406. In example cases where adecisional operation 1407 evaluates to true, anoperation 1408 is executed that retrieves a private key. This private key may be retrieved from, for example, the one ormore devices 102 wherein this key may be, for example, generated during the compilation of themedia player application 112, or may be supplied and stored as a part of, for example, some natively residing stored content, such as theURI content store 111. - In some example embodiments, after the successful execution of
operation 1408, anoperation 1409 is executed that encrypts the instruction set using the symmetric key or private key retrieved for the execution of theoperation 1408. Once this instruction set is encrypted with the symmetric key retrieved via the execution of theoperation 1408, a furtherdecisional operation 1410 is executed. Thisdecisional operation 1410 may be executed upon either the successful execution ofoperation 1409, or thedecisional operation 1407 evaluating to false. Thisdecisional operation 1410 determines whether or not the instruction set, which may be symmetrically encrypted, asymmetrically encrypted, or not encrypted, should be hashed (e.g., that is be passed through a hashing algorithm). In example cases wheredecisional operation 1410 evaluates to false, atermination condition 1412 is executed. In example cases where adecisional operation 1410 evaluates to true, that is a hashing algorithm is applied to the instruction set, which may be encrypted or not encrypted, anoperation 1411 is executed that hashes the instruction set. Upon the successful execution ofoperation 1411, thetermination condition 1412 is executed. - As previously illustrated, the asymmetric algorithm as identified and applied through the execution of
operations 1404 through 1406 may be, for example, the RSA algorithm. In example cases where symmetric encryption is utilized via the execution of 1408 and 1409, a symmetric encryption algorithm such as AES may be applied. In example cases where hashing is utilized via the execution ofoperations operation 1411, a hashing algorithm, such as MD5, maybe applied to the instruction set. Further, as previously illustrated, the hashing algorithm maybe used alone or in combination with the asymmetric encryption algorithm and/or the symmetric encryption algorithm. Further, the asymmetric, symmetric, and/or hashing may be applied to an instruction set in its ABNF form. -
FIG. 15 is a flowchart illustrating an example method used to executeoperation 1107. Illustrated is anoperation 1501 that receives an instruction set. Once received, anoperation 1502 is executed that retrieves a URI for a particular piece of content to which the instructions set corresponds. Next, anoperation 1503 is executed that inserts the instruction set into the query portion of the URI. Then, anoperation 1504 is executed that stores this URI containing the instruction set as part of its query field into, for example, aURI content store 111. -
FIG. 16 is a flowchart illustrating an example method used to executeoperation 1111. Illustrated is anoperation 1601 that receives an instruction set and extracts the obscuring data from this instruction set. Next, adecisional operation 1602 is executed that is used to determine whether or not this obscured data has been asymmetrically encrypted. In example cases where adecisional operation 1602 evaluates to true, then afurther operation 1603 is executed that retrieves a private key and decrypts the obscured data using this private key. In example cases wheredecisional operation 1602 evaluates to false, then a furtherdecisional operation 1604 is executed that determines whether or not the obscured data has been encrypted using symmetric encryption. In example cases wheredecisional operation 1604 evaluates to true, then afurther operation 1605 may be executed that retrieves a private symmetric key and uses this private symmetric key to decrypt the obscured data. The furtherdecisional operation 1604 maybe executed either throughdecisional operation 1602 evaluating to false or through the successful execution ofoperation 1603. In example cases wheredecisional operation 1604 evaluates to false, or whereoperation 1605 is successfully executed, then a furtherdecisional operation 1606 may be executed. Thisdecisional operation 1606 evaluates whether or not the obscured data has been hashed. In example cases wheredecisional operation 1606 evaluates to false, then atermination condition 1608 is executed. In example cases wheredecisional operation 1606 evaluates to true, then anoperation 1607 is executed that, in effect, de-hashes the obscured data. After the successful execution of 1607, then terminatingcondition 1608 is executed. - As previously illustrated elsewhere, the sequence of decryption and de-hashing, or de-hashing and decryption may be performed in a variety of sequences. For example, the de-hashing may be performed first and then decryption, or decryption may be performed first and then de-hashing. Further, this de-hashing or decryption may be applied to obscured data in its ABNF form. Moreover, as previously illustrated and shown, various asymmetric encryption algorithms may include, for example, RSA whereas various symmetric encryption algorithms may include AES, and further various hashing algorithms may include, for example, MD5.
-
FIG. 17 is a flowchart illustrating an example method used to executeoperation 1112. Illustrated is anoperation 1701 that receives an instruction set. Once received, anoperation 1702 is executed that may optionally convert the instruction set from its ABNF form. Once optionally converted, anoperation 1703 is executed that generates a data stream based upon the instruction set provided or the provided instruction set. This data stream request may then be sent across a network such as, for example, anetwork 220 to, for example, amedia server 210, wherein thismedia server 210 provides, for example, a confirmation and data stream 211 in response. - Some example embodiments may include the various databases (e.g., 111, 211, 1116, and 1204) being relational databases or in some example cases OLAP based databases. In the case of relational databases, various tables of data are created and data is inserted into, and/or selected from, these tables using SQL or some other database-query language known in the art. In the case of OLAP databases, one or more multi-dimensional cubes or hypercubes containing multidimensional data from which data is selected or into which data is inserted using MDX may be implemented. In the case of a database using tables and SQL, a database application such as, for example, MYSQL™, SQLSERVER™, Oracle 8I™, 10G™, or some other suitable database application may be used to manage the data. Here, the case of a database using cubes and MDX, a database using Multidimensional On Line Analytic Processing (MOLAP), Relational On Line Analytic Processing (ROLAP), Hybrid On Line Analytic Processing (HOLAP), or some other suitable database application may be used to manage the data. These tables or cubes made up of tables, in the case of, for example, ROLAP, are organized into a RDS or Object Relational Data Schema (ORDS), as is known in the art. These schemas may be normalized using certain normalization algorithms so as to avoid abnormalities such as non-additive joins and other problems. Additionally, these normalization algorithms may include Boyce-Codd Normal Form or some other normalization, optimization algorithm known in the art.
-
FIG. 18 is anexample RDA 1800 illustrating various data tables that may be implemented on, for example, theURI content store 111, or other suitable data stores (e.g., 111, 211, 1116, and 1204). Illustrated is table 1801 containing one or more instruction sets. These one or more instruction sets may be in the form of data reflecting a particular range of frame values or TR values for a particular piece of content. A string, eXtensible Markup Language (XML), or character data type may be used to store this instruction set data. Also illustrated is an obfuscation data table 1802 that contains data corresponding to the instruction set and reflecting whether or not a particular instruction set has been obscured using symmetric encryption, asymmetric encryption, and/or hashing. In some example embodiments, various sequences of char values may be used as a data type such that, for example, the obfuscation data may contain, for example, the first letter of the particular symmetric, asymmetric or hashing algorithm that may be applied to the instruction set to which it corresponds. Further, in some example cases, a boolean value data type may be utilized to denote what types of symmetric, asymmetric, or hashing algorithms may be applied to a particular instruction set. - Also illustrated is a table 1803 that contains URI content. In some example cases, the additional fields of a particular URI may be stored or these fields may be, for example, a scheme name, a hierarchical part, or a fragment value corresponding to particular URI. In some example cases, an XML data type or a string data type may be used to store this URI content data. Table 1804 contains data pertaining to particular hashing function for a particular instruction set. In some example cases, the actual hashing function itself may be stored into this table 1804 such that a string or even a Binary Large Object (BLOB) data type may be utilized. For example, the BLOB data type may be used to store the actual hashing function algorithm itself, whereas the string data type may only be used to store, for example, the name of the hashing function (e.g., MD5). Further, a table 1805 is illustrated containing an asymmetric key. Stored within table 1805 may be an asymmetric key, for example, a public key corresponding to a private key wherein this public key may be used to, for example, encrypt a particular instruction set. This key may be, for example, an integer, float, double, string, or some other suitable data type. Further, a table 1807 is illustrated that contains symmetric keys. Contained in table 1807 are various symmetric keys they may be used to obscure a particular instruction set, wherein this symmetric key may be a private key in the form of a float double, integer, or some other suitable data type. In the case of either the data contained in the table 1805 for asymmetric keys, or the data contained in a table 1807 for symmetric keys, these key values may be of some suitable length including, for example, a 128 bit key, a 256 bit key, or some other suitable key size. Also, in some example cases, a BLOB data type may be used as the basis to store either an asymmetric key into table 1805, or a symmetric key into table 1807. Further, a table 1808 is illustrated that contains the various watch values. These watch values may be, for example, a frame value or a range of frame values, or a TR value, or a range of TR values that correspond to or may be considered as, for example, selection data such as
selection data 109 that are selected by, for example, auser 101. These watch values may include, for example, a string data type or some other suitable data type. Further illustrated is the table 1806 that contains a unique identifier for the various values contained in the various tables illustrated herein (e.g., 1801 through 1805, and 1807 through 1808). This unique identifier value may contain values or serve as unique key values for each of the particular tuple entries in each of the afore-illustrated tables. - In some example embodiments, a method is illustrated as implemented in a distributed or non-distributed software application designed under a three-tier architecture paradigm, whereby the various components of computer code that implement this method may be categorized as belonging to one or more of these three tiers. Some example embodiments may include a first tier as an interface (e.g., an interface tier) that is relatively free from application processing. Further, a second tier may be a logic tier that performs application processing in the form of logical/mathematical manipulations of data inputted through the interface level, and that communicates the results of these logical/mathematical manipulations to the interface tier and/or to a backend or storage tier. These logical/mathematical manipulations may relate to cern business rules or processes that govern the software application as a whole. A third storage tier may be a persistent storage medium or non-persistent storage medium. In some example cases, one or more of these tiers may be collapsed into another, resulting in a two-tier architecture, or even a one-tier architecture. For example, the interface and logic tiers may be consolidated, or the logic and storage tiers may be consolidated, as in the case of a software application with an embedded database. This three-tier architecture may be implemented using one technology, or, as will be discussed below, a variety of technologies. This three-tier architecture, and the technologies through which it is implemented, may be executed on two or more computer systems organized in a server-client, peer-to-peer, or some other suitable configuration. Further, these three tiers may be distributed between more than one computer system as various software components.
- Some example embodiments may include the above illustrated tiers and the processes or operations that make them up, as one or more software components. Common to many of these components is the ability to generate, use, and manipulate data. These components, and the functionality associated with each, may be used by client, server, or peer computer systems. These various components may be implemented by a computer system on an as-needed basis. These components may be written in an object-oriented computer language such that a component-oriented or object-oriented programming technique can be implemented using a Visual Component Library (VCL), Component Library for Cross Platform (CLX), Java Beans (JB), Java Enterprise Beans (EJB), Component Object Model (COM), Distributed Component Object Model (DCOM), or other suitable technique. These components may be linked to other components via various Application Programming interfaces (APIs), and then compiled into one complete server, client, and/or peer software application. Further, these APIs may be able to communicate through various distributed programming protocols as distributed computing components.
- Some example embodiments may include remote procedure calls used to implement one or more of the above-illustrated components across a distributed programming environment as distributed computing components. For example, an interface component (e.g., an interface tier) may reside on a first computer system remotely located from a second computer system containing a logic component (e.g., a logic tier). These first and second computer systems may be configured in a server-client, peer-to-peer, or some other suitable configuration. These various components may be written using the above-illustrated object-oriented programming techniques, and can be written in the same programming language or a different programming language. Various protocols may be implemented to enable these various components to communicate regardless of the programming language used to write these components. For example, a component written in C++ may be able to communicate with another component written in the Java programming language using a distributed computing protocol such as a Common Object Request Broker Architecture (CORBA), a Simple Object Access Protocol (SOAP), or some other suitable protocol. Some example embodiments may include the use of one or more of these protocols with the various protocols outlined in the Open Systems Interconnection (OSI) model, or Transmission Control Protocol/Internet Protocol (TCP/IP) protocol stack model for defining the protocols used by a network to transmit data
- A System of Transmission between a Server and Client
- Some example embodiments may use the OSI model or TCP/IP protocol stack model for defining the protocols used by a network to transmit data. In applying these models, a system of data transmission between a server and client or between peer computer systems is illustrated as a series of roughly five layers comprising: an application layer, a transport layer, a network layer, a data link layer, and a physical layer. In the case of software having a three-tier architecture, the various tiers (e.g., the interface, logic, and storage tiers) reside on the application layer of the TCP/IP protocol stack. In an example implementation using the TCP/IP protocol stack model, data from an application residing at the application layer is loaded into the data load field of a TCP segment residing at the transport layer. This TCP segment also contains port information for a recipient software application residing remotely. This TCP segment is loaded into the data load field of an IP datagram residing at the network layer. Next, this IP datagram is loaded into a frame residing at the data link layer. This frame is then encoded at the physical layer, and the data transmitted over a network such as the Internet, a Local Area Network (LAN), a Wide Area Network (WAN), or some other suitable network. In some example cases, “Internet” refers to a network of networks. These networks may use a variety of protocols for the exchange of data, including the aforementioned TCP/IP, and additionally ATM, SNA, SDI, or some other suitable protocol. These networks may be organized within a variety of topologies (e.g., a star topology) or structures.
-
FIG. 19 shows a diagrammatic representation of a machine in the example form of acomputer system 1900 that executes a set of instructions to perform any one or more of the methodologies discussed herein. In alternative example embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in server-client network environment or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a PC, a tablet PC, a Set-Top Box (STB), a PDA, a cellular telephone, a Web appliance, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. Example embodiments can also be practiced in distributed system environments where local and remote computer systems, which are linked (e.g., either by hardwired, wireless, or a combination of hardwired and wireless connections) through a network, both perform tasks such as those illustrated in the above description. - The
example computer system 1900 includes a processor 1902 (e.g., a Central Processing Unit (CPU), a Graphics Processing Unit (GPU) or both), amain memory 1901, and astatic memory 1906, which communicate with each other via abus 1908. Thecomputer system 1900 may further include a video display unit 1910 (e.g., a Liquid Crystal Display (LCD) or a Cathode Ray Tube (CRT)). Thecomputer system 1900 also includes an alpha-numeric input device 1917 (e.g., a keyboard), a User Interface (UI) cursor controller 1911 (e.g., a mouse), adisk drive unit 1916, a signal generation device 1919 (e.g., a speaker) and a network interface device (e.g., a transmitter) 1920. - The
drive unit 1916 includes a machine-readable medium 1922 on which is stored one or more sets of instructions and data structures (e.g., software) embodying or used by any one or more of the methodologies or functions illustrated herein. The software may also reside, completely or at least partially, within themain memory 1901 and/or within theprocessor 1902 during execution thereof by thecomputer system 1900, themain memory 1901 and theprocessor 1902 also constituting machine-readable media 1922. - The
instructions 1921 may further be transmitted or received over anetwork 1926 via thenetwork interface device 1920 using any one of a number of well-known transfer protocols (e.g., HTTP, Session Initiation Protocol (SIP)). - The term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-readable medium” shall also be taken to include any medium capable of storing, encoding, or carrying a set of instructions for execution by the machine and that cause the machine to perform any of the one or more of the methodologies illustrated herein. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical and magnetic medium, and carrier wave signals.
- Some example embodiments may include the use of the query portion of a URI to transmit an instruction set relating to selected portions of content (e.g., audio or video digital content) selected by a user for viewing or listening. This instruction set may be automatically generated by, for example, a media player application, wherein the user chooses to fast-forward past a particular portion of content. Once generated, this instruction set may be stored as part of the query portion of a URI. The entire URI, in turn, may be stored for future use by the user, or may be transferred by the user to another user for use in viewing and listening to the content. Through the use of instruction sets, queries, and URIs, the user need not repeat the act of manually fast-forwarding through certain portions of content deemed irrelevant. Further, the user may be able to express their likes and dislikes to other users regarding certain pieces of content by providing the other users with the URI containing the queries and selected pieces of content.
- The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b), requiring an abstract that allows the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed example embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment.
Claims (24)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/843,461 US8639681B1 (en) | 2007-08-22 | 2007-08-22 | Automatic link generation for video watch style |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/843,461 US8639681B1 (en) | 2007-08-22 | 2007-08-22 | Automatic link generation for video watch style |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US8639681B1 US8639681B1 (en) | 2014-01-28 |
| US20140032523A1 true US20140032523A1 (en) | 2014-01-30 |
Family
ID=49958053
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US11/843,461 Active 2029-11-29 US8639681B1 (en) | 2007-08-22 | 2007-08-22 | Automatic link generation for video watch style |
Country Status (1)
| Country | Link |
|---|---|
| US (1) | US8639681B1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140250480A1 (en) * | 2011-10-04 | 2014-09-04 | Google Inc. | System and method for obtaining video streams |
| JP2021077384A (en) * | 2021-01-06 | 2021-05-20 | 株式会社三井住友銀行 | Ar platform system, method, and program |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9871916B2 (en) * | 2009-03-05 | 2018-01-16 | International Business Machines Corporation | System and methods for providing voice transcription |
| US9858329B2 (en) * | 2011-10-04 | 2018-01-02 | Google Inc. | Combined activities history on a device |
| US9716855B2 (en) | 2012-09-14 | 2017-07-25 | Comcast Cable Communications, Llc | Optically readable codes in a content delivery system |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6556217B1 (en) * | 2000-06-01 | 2003-04-29 | Nokia Corporation | System and method for content adaptation and pagination based on terminal capabilities |
| US20030093430A1 (en) * | 2000-07-26 | 2003-05-15 | Mottur Peter A. | Methods and systems to control access to network devices |
| US20050071886A1 (en) * | 2003-09-30 | 2005-03-31 | Deshpande Sachin G. | Systems and methods for enhanced display and navigation of streaming video |
| US7353994B2 (en) * | 2000-12-20 | 2008-04-08 | Andrew John Farrall | Security, identification and verification systems |
| US20080208589A1 (en) * | 2007-02-27 | 2008-08-28 | Cross Charles W | Presenting Supplemental Content For Digital Media Using A Multimodal Application |
| US8125932B2 (en) * | 2001-07-16 | 2012-02-28 | Exedra Technologies, LLC | Method and apparatus for continuously receiving images from a plurality of video channels and for alternately continuously transmitting to each of a plurality of participants in a video conference individual images containing information concerning each of said video channels |
| US8370520B2 (en) * | 2008-11-24 | 2013-02-05 | Juniper Networks, Inc. | Adaptive network content delivery system |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| AU7593601A (en) * | 2000-07-14 | 2002-01-30 | Atabok Inc | Controlling and managing digital assets |
| US20050210145A1 (en) * | 2000-07-24 | 2005-09-22 | Vivcom, Inc. | Delivering and processing multimedia bookmark |
| KR20040041082A (en) * | 2000-07-24 | 2004-05-13 | 비브콤 인코포레이티드 | System and method for indexing, searching, identifying, and editing portions of electronic multimedia files |
| WO2002029509A2 (en) * | 2000-10-03 | 2002-04-11 | Vidius Inc. | Secure distribution of digital content |
| US20030084180A1 (en) * | 2001-10-31 | 2003-05-01 | Tomohiro Azami | Metadata receiving apparatus, receiving method, metadata receiving program, computer-readable recording medium recording therein metadata receiving program, metadata sending apparatus, and transmitting method |
| JP2004096478A (en) * | 2002-08-30 | 2004-03-25 | Fujitsu Ltd | Content viewing history service program |
| US7552176B2 (en) * | 2003-03-12 | 2009-06-23 | Microsoft Corporation | Reducing unwanted and unsolicited electronic messages by exchanging electronic message transmission policies and solving and verifying solutions to computational puzzles |
| US7308464B2 (en) * | 2003-07-23 | 2007-12-11 | America Online, Inc. | Method and system for rule based indexing of multiple data structures |
| US7685511B2 (en) * | 2003-08-29 | 2010-03-23 | Sun Microsystems, Inc. | Framework for providing and using schema data for markup languages |
| US7882139B2 (en) * | 2003-09-29 | 2011-02-01 | Xunlei Networking Technologies, Ltd | Content oriented index and search method and system |
| US20050228668A1 (en) * | 2004-03-31 | 2005-10-13 | Wilson James M | System and method for automatic generation of dialog run time systems |
| US7676590B2 (en) * | 2004-05-03 | 2010-03-09 | Microsoft Corporation | Background transcoding |
| US7734801B2 (en) * | 2004-05-20 | 2010-06-08 | Intel Corporation | Method and apparatus for acquiring internet real-time media channels in a private network |
| TW200612260A (en) * | 2004-10-14 | 2006-04-16 | Via Tech Inc | Method and system for editing and using visual bookmarks |
| EP1717723A1 (en) * | 2005-04-29 | 2006-11-02 | ST Incard S.r.l. | Improved virtual machine or hardware processor for IC-card portable electronic devices |
| US20070112675A1 (en) * | 2005-11-14 | 2007-05-17 | Flinn Brenda J | Goods and Services Locator Language for Uniform Resource Identifier Components |
| US7571064B2 (en) * | 2006-03-31 | 2009-08-04 | Apple Inc. | Display digital signal visualizations with increasing accuracy |
| US20080005126A1 (en) * | 2006-06-29 | 2008-01-03 | Ayyappan Sankaran | System and method for managing and accessing one or more multimedia contents |
| US20100030808A1 (en) * | 2008-07-31 | 2010-02-04 | Nortel Networks Limited | Multimedia architecture for audio and visual content |
-
2007
- 2007-08-22 US US11/843,461 patent/US8639681B1/en active Active
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6556217B1 (en) * | 2000-06-01 | 2003-04-29 | Nokia Corporation | System and method for content adaptation and pagination based on terminal capabilities |
| US20030093430A1 (en) * | 2000-07-26 | 2003-05-15 | Mottur Peter A. | Methods and systems to control access to network devices |
| US7353994B2 (en) * | 2000-12-20 | 2008-04-08 | Andrew John Farrall | Security, identification and verification systems |
| US8125932B2 (en) * | 2001-07-16 | 2012-02-28 | Exedra Technologies, LLC | Method and apparatus for continuously receiving images from a plurality of video channels and for alternately continuously transmitting to each of a plurality of participants in a video conference individual images containing information concerning each of said video channels |
| US20050071886A1 (en) * | 2003-09-30 | 2005-03-31 | Deshpande Sachin G. | Systems and methods for enhanced display and navigation of streaming video |
| US20080208589A1 (en) * | 2007-02-27 | 2008-08-28 | Cross Charles W | Presenting Supplemental Content For Digital Media Using A Multimodal Application |
| US8370520B2 (en) * | 2008-11-24 | 2013-02-05 | Juniper Networks, Inc. | Adaptive network content delivery system |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20140250480A1 (en) * | 2011-10-04 | 2014-09-04 | Google Inc. | System and method for obtaining video streams |
| US9918115B2 (en) * | 2011-10-04 | 2018-03-13 | Google Llc | System and method for obtaining video streams |
| US10327024B2 (en) | 2011-10-04 | 2019-06-18 | Google Llc | System and method for obtaining video streams |
| JP2021077384A (en) * | 2021-01-06 | 2021-05-20 | 株式会社三井住友銀行 | Ar platform system, method, and program |
| JP7116200B2 (en) | 2021-01-06 | 2022-08-09 | 株式会社三井住友銀行 | AR platform system, method and program |
Also Published As
| Publication number | Publication date |
|---|---|
| US8639681B1 (en) | 2014-01-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11770581B2 (en) | Systems and methods for recording relevant portions of a media asset | |
| US8607270B2 (en) | Virtual tuner | |
| EP3346718B1 (en) | Methods and systems for displaying contextually relevant information regarding a media asset | |
| US9536557B2 (en) | Systems and methods for content playback and recording | |
| US11301465B2 (en) | Media player feedback | |
| US20200175067A1 (en) | Selecting and Sharing Content | |
| US11375287B2 (en) | Systems and methods for gamification of real-time instructional commentating | |
| US9560389B2 (en) | Network-based content storage | |
| US12081844B2 (en) | Systems and methods for discovery of, identification of, and ongoing monitoring of viral media assets | |
| US8639681B1 (en) | Automatic link generation for video watch style | |
| US12301926B2 (en) | Systems and methods for retrieving segmented media guidance data | |
| US20190109882A1 (en) | System and Method for Assembling and Playing a Composite Audiovisual Program Using Single-Action Content Selection Gestures and Content Stream Generation | |
| US10650065B2 (en) | Methods and systems for aggregating data from webpages using path attributes | |
| US20190342608A1 (en) | Methods and systems for providing uncorrupted media assets |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: ADOBE SYSTEMS INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DYVADHEENAM, T A NOAH;GOEL, PARESH;DUGGAL, ASHISH;AND OTHERS;SIGNING DATES FROM 20070817 TO 20070821;REEL/FRAME:019845/0035 |
|
| FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| FPAY | Fee payment |
Year of fee payment: 4 |
|
| AS | Assignment |
Owner name: ADOBE INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:ADOBE SYSTEMS INCORPORATED;REEL/FRAME:048867/0882 Effective date: 20181008 |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
| MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |