Patent Description:
Social media and digital fan club platforms utilize mobile and web-based technologies to create highly interactive environments through which individuals and communities share, co-create, discuss, and modify user-generated content. However, some social media and digital fan club platforms limit the way by which a user can share content. For example, certain social media environments and digital fan clubs do not incorporate email, instant messaging (IM), phone calls, or live video feeds into their supported technologies.

The prior art thus perceives a need for enhanced means for sharing content within a social environment including group stream broadcasting whereby a broadcasting client initiates a content sharing event and the content as broadcast to community connected clients share in content consumption as selectively sourced to each content based on user-preferred sourcing. Further, the prior art perceives a need for prioritized queueing of content being added to the group stream or broadcast experience. The present invention attempts to address these shortcomings in the prior art as summarized in more detail hereinafter.

<CIT> of Savenok discloses a system, method, and application for exchanging content in a social network environment, which discloses some of the elements of the pre-characterising part of Claim <NUM>.

<CIT> of Savenok discloses a smart routing synchronization system and methods for socializing a synthetic rebroadcast and group stream.

The stateless queue system according to the present invention is designed to implement and support a virtual room containing a content playback queue as exemplified by a music queue. The stateless queue system allows multiple clients to listen to queued content in a synchronized manner and to modify the same music queue without requiring a broadcasting client to send playback events. The stateless queue system comprises a multiplicity of computing clients that can add content items to the queue by interacting with an application service that further operates to store all queue structure and data in a database.

The clients are enabled via the application service to update or add content to the queue in a number of ways, including by simple add-on to the end or back of the queue, by vote, or by direct modification to the structure of the queue. The clients may also rely on the application service to provide the current order of the queue, as for example, when entering into a playback session. Upon a client entrance into the playback session or joining the virtual room or alternatively based on time-based representation, data provided to the clients represents the queue order at the time of request, the number of votes each items contains if structure is determined by vote, the start time for each queued item, and the current playing item.

The stateless queue system according to the present invention operates within the context of the systems and methods for implementing subscription-based social media or digital fan club platforms which are the subject of <CIT>, and the systems and methods for group streaming and rebroadcasting which are the subject of U. Published Patent Application Specification No. <CIT>. More particularly, it is contemplated that the present invention may well cooperate with the chat and live video aspects or provisions of <CIT> and the live video aspects or provisions of U. Published Patent Application Specification No. <CIT>.

The invention is described according to the features of independent method claim <NUM> and corresponding independent system claim <NUM>. Additional aspects of the invention can be found in dependent claim <NUM>.

Referring now to the drawings with more specificity, the stateless queue system according to the present invention is designed to implement and support a virtual room containing a content or media playback queue exemplified by a music queue as at <NUM>. The stateless queue system according to the present invention is built upon a non-transitory computer-implementable application implemented by one or more application-implementing computers typically in the form of mobile device clients all in communication with a centralized server network. The stateless queue system allows multiple clients, including broadcasting client <NUM> and broadcast-receiving clients <NUM> to consume content from the queue <NUM> in a synchronized manner while further enabling the client(s) <NUM>/<NUM> to modify the content queue <NUM> without requiring the broadcasting client <NUM> to send playback events.

The computer-implementable stateless queue application service according to the present invention enables or provides a queue creation service as at <NUM> for creating a content queue <NUM> and for storing queue structure and support data in a database. The plurality of application-implementing computer clients as at <NUM> and <NUM> are independently operable to selectively add content to the content queue <NUM> by a select content addition mechanism. The select content addition mechanism is preferably selected from the group consisting of simple end-based or bottom-based content addition, vote-based content addition, and direct modification-based content addition.

The stateless queue system according to the present invention may thus be said to comprise computing clients <NUM>/<NUM> all of which implement the computer-implementable application service <NUM> for adding content items <NUM> (e.g. music tracks) to the content queue <NUM> by interacting with the application service <NUM> that stores all content queue structure and data in a database. The client(s) <NUM>/<NUM> may update as at <NUM> the content queue <NUM> by vote as at <NUM>, or by direct modification <NUM> of the queue structure.

The client(s) <NUM>/<NUM> may further rely on the application service <NUM> to provide as at <NUM> the current order of the content queue <NUM>. The provision of content queue order may typically occur on client entrance into the session (e.g. by joining the virtual room) or periodically by way of a timer (e.g. every "n" seconds). The data provided to the client(s) <NUM>/<NUM> during content queue order provision embraces (a) the queue order at the time of the request, (b) the number of votes each item <NUM> contains or is affiliated with (if queue structure is determined by vote), (c) the start time for each queued item <NUM>, and the then currently playing item <NUM>.

When a client <NUM> adds an item <NUM> to the content queue <NUM>, the newly added item <NUM> is by default or most simply added to the bottom of the content queue <NUM> as generally depicted in Figure Nos. <NUM> and <NUM>. This content addition may thus be referred to as an end-based or bottom based content addition. The bottom-based content addition mechanism of the application service <NUM> of assigns a playback start time as at <NUM> to newly added item(s) <NUM>. The playback start time <NUM> of any given newly added item <NUM> is effectively equal to the sum of the playback start time <NUM> of the preceding item or item precedent and its duration as at <NUM>.

Playback synchronization is preferably achieved by way of synchronizing time across clients <NUM>/<NUM> and a centralized server network as prefaced above. This is preferably and more particularly achieved by directing the application service <NUM> and clients <NUM>/<NUM> to independently synchronize as at <NUM> with a Network Time Protocol or NTP server <NUM> as generally depicted and referenced in Figure No. <NUM> or alternatively by directing the application service <NUM> to synchronize <NUM> with an NTP server <NUM> with client(s) <NUM>/<NUM> indirectly synchronizing through the service <NUM> as generally depicted in Figure No. <NUM>.

Figure No. <NUM> thus depicts a server-direct time synchronization mechanism according to the present invention whereby the client(s) <NUM>/<NUM> directly link to the NTP server <NUM>, and Figure No. <NUM> depicts a server-indirect time synchronization mechanism according to the present invention whereby the client(s) <NUM>/<NUM> link to the NTP server <NUM> via the application service <NUM>. The latter mechanism ensures time consistency given load balancing or clustered conditions. The client(s) <NUM>/<NUM> preferably synchronize as at <NUM> with server time via the application service <NUM> by obtaining NTP server <NUM> time and adjusting it by a portion (e.g. half) of the time it took for the request to to be fulfilled from the NTP server <NUM>.

In both alternative time synchronization scenarios, the time across the application service(s) <NUM> and the client(s) <NUM>/<NUM> are preferably synchronized to within a single second. Once time is synchronized, playback is preferably synchronized for the purpose of providing a current playback position <NUM>. The current playback position <NUM> is preferably calculated by subtracting item playback start time <NUM> from the synchronized time <NUM> ultimately provided or controlled by the NTP server <NUM>. This process <NUM> indicates or governs the playback position <NUM> from which the content playback should initiate or to which the content playback should be synchronized in the case of de-synchronization.

Reprioritization <NUM> of the content queue <NUM> or items therewithin may be preferably performed in one of two ways. The content queue <NUM> preferably comprises two portions, including an immutable portion as at <NUM> consisting of both already consumed or played items <NUM> as well as the then playing item <NUM>. The immutable portion <NUM> is preferably and periodically cleaned or wiped on a time interval, and data from the immutable portion <NUM> is preferably stored for generating group-curated queues <NUM>. The mutable portion <NUM> of the content queue <NUM> is preferably reprioritized/updated by either a voting mechanism <NUM> or by a direct input or modification mechanism <NUM> as discussed in more detail hereinafter.

Referencing Figure No. <NUM>, the reader will there consider that when the voting mechanism is implemented as at process <NUM>, the queue order is determined by votes in descending order of vote strength. The queue order is preferably calculated either on a timer or every time a client <NUM>/<NUM> submits a new vote. When queue order is directly modified as at process <NUM> each client <NUM>/<NUM> is enabled to controllably submit the position of an item or manually re-position an item within the content queue <NUM>.

In either re-prioritization <NUM> scenario as at voting process <NUM> or direct modification process <NUM>, all items in the affected range <NUM> require a recalculated playback start time <NUM>. Referencing item <NUM> in Figure No. <NUM>, the reader will there consider item <NUM> immediately follows a moved item moving from an old position <NUM> depicted in broken lining to a new position <NUM> depicted in solid lining. Item <NUM> thereby inherits the start time of the moved item at the old position <NUM>.

All other depending items recalculate their respective start times from item <NUM> and its newly inherited start time. This is done by adding the duration of each respective item to the start time of the item that precedes it or the precedent item. For example, referencing Figure N. <NUM>, the start time of the next item <NUM> effectively becomes the start time of the moved item at the old position <NUM>. The start time of the successive item to item <NUM> will depend from the duration <NUM> of item <NUM> plus the start time <NUM> of item <NUM>. The start time of the moved item at the new position <NUM> is the start time <NUM> of item <NUM> plus the duration <NUM> of the item <NUM>.

While the above descriptions contain much specificity, this specificity should not be construed as limitations on the scope of the invention, but rather as an exemplification of the invention. For example, it is contemplated that the present invention preferably and essentially comprises a stateless queue system for allowing multiple clients to consume synchronized queued content. The stateless queue system according to the present invention is believed to essentially comprise a non-transitory, computer-implementable application or service <NUM> for supporting the system or for implementing the stateless queue system according to stateless queue system rules and protocol generally described hereinabove.

A plurality of application-implementing computer clients as at <NUM> and <NUM> implement the non-transitory, computer-implementable application, which when implemented, provides a queue creation service for creating a content queue <NUM> and storing queue structure and support data in a separate database. The plurality or multiplicity of application-implementing computer clients <NUM>/<NUM> are independently operable to selectively add content items to the content queue <NUM> by a select content addition mechanism as selected from the group consisting of bottom-based content addition generally depicted in Figure No. <NUM> or re-prioritized queue modification as at vote-based content addition as at process <NUM> and direct modification-based content addition as at process <NUM> in Figure No. <NUM>.

When content is added to the content queue <NUM> via the bottom-based content addition mechanism, newly added content item <NUM> is preferably appended to a queue bottom and assigned a playback start time <NUM>. The playback start time <NUM> of the newly added content item <NUM> is preferably based on both playback start time(s) <NUM> of content item(s) precedent <NUM> and duration(s) <NUM> of the content item(s) precedent <NUM>. The stateless queue system according to the present invention may preferably comprise a Network Time Protocol (NTP) server <NUM> in communication with the plurality of computer clients <NUM>/<NUM> such that content queue <NUM> is played back to the plurality of computer clients <NUM>/<NUM> in a select synchronization manner governed via the NTP server <NUM>.

The select synchronization manner is preferably selected from the group consisting of a server-direct synchronization as generally depicted in Figure No. <NUM> or a server-indirect synchronization as generally depicted in Figure No. <NUM>. The server-direct synchronization manner is characterized by independent client-to-server and service-to-server linkages <NUM> such that the clients <NUM>/<NUM> and application service <NUM> are independently time-synchronized. The server-indirect synchronization manner is characterized by a service-to-server linkage <NUM> and a clients-to-service linkage as at <NUM>. In either case, the computer clients <NUM>/<NUM> preferably synchronize with server time by obtaining server time and adjusting server time by a portion (e.g. half) of the fulfillment time. Playback is preferably synchronized by determining the current playback queue position, the current playback queue position being determined or calculated by subtracting the item playback start time <NUM> from a server-synchronized time <NUM> as generally depicted in Figure No. <NUM>.

The content queue <NUM> preferably comprises an immutable portion as at <NUM> and a mutable portion as at <NUM>. The immutable portion preferably comprises previously consumed or played content items as at <NUM>, and a currently playing or consuming content item as at <NUM>. The mutable portion <NUM> is amenable via the select content addition mechanism as previously described. IN the case or re-prioritization <NUM> of queue order, the queue order may be determined via either vote-based content addition as at <NUM> or by direct input or modification content addition as at <NUM>.

The vote-based content addition process <NUM> operates to modify queue order by vote number in descending order of strength, and may be calculated either periodically via timer or iteratively when a new vote is submitted. When the queue order is determined via direct modification-based content addition <NUM>, the requesting client <NUM>/<NUM> determines queue order directly by client re-order or placement of content items with in the queue as for example moving a content item from the old position at <NUM> to the new position at <NUM>.

The mutable portion <NUM> is preferably governed by a playback recalculation protocol in the event of either content addition. The playback recalculation protocol is characterized by movement of a select content item to a new queue position as at <NUM>. The select content item naturally has a successive content item, which successive content item inherits the original start time of the select content item. All other depending content items recalculate their respective start times based upon the successive content item and the inherited start time thereof. Further, all other content items recalculate respective start times from the successive content item and the inherited start time by adding duration of each respective content item to a start time of a content item precedent.

Recalling that the presently described stateless queue system builds upon the concepts set forth in <CIT>, it is contemplated that the present invention may be further said to provide a method for implementing a social media platform comprising a series of steps. A server may receive from at least one content sharing client an Application Programming Interface (API) first request for initializing a live stream from the content sharing client. The API first request is preferably generated by a non-transitory, computer-implementable application running on the content sharing client. The server may store metadata information of the received API first request in a database coupled to the server.

The server sends a stream configuration second request to an encoding service provider requesting a plurality of stream configurations whereafter the server receives stream configuration information from the encoding service provider and stores the received stream configuration information in the database. The server may then send the stream configuration information to the content sharing client, receiving a first notification from the content sharing client that the content sharing client has initiated a live stream. The server may then send a second notification to the database that the content sharing client has initiated the live stream.

The methodologies practiced or taught by <CIT> may thus provide support for a stateless queue system implementation according to stateless queue system rules and protocol of the non-transitory computer-implementable application. The application provides or enables a queue creation service <NUM> for (a) creating a content queue <NUM> and (b) storing (i) queue structure and (ii) support data in the database. Each content sharing client <NUM>/<NUM> is independently operable to selectively add content to the content queue <NUM> by a select content addition mechanism, which select content addition mechanism is selected from the group consisting of bottom-based content addition, vote-based content addition, and direct modification-based content addition as previously described.

Recalling that the presently described stateless queue system builds upon the concepts set forth in U. Published Patent Application Specification No. <CIT>, it is contemplated that the present invention may be further said to provide a method for implementing social broadcasting within a social media platform comprising a series of steps. A stateless queue service <NUM> provides a content queue <NUM> for synchronized and queued content delivery to content sharing clients <NUM>/<NUM> in communication with and implementing the application service <NUM>.

A group origination content sharing client as at <NUM> sends to a server an API first request for sharing select content with group member content sharing clients as at <NUM> in communication with the group origination content sharing client <NUM> via the server and the application service <NUM>. The API first request is generated by an application running on the group origination content sharing client <NUM>. The virtual room holding the stateless queue of the stateless queue system is created on user sign up. Invitations can be sent out on demand by users who enter the virtual room or automatically triggered when a select person enters the virtual room. The room exists even when there are no participants in the virtual room. Thus the system is stateless and no consumption is required to maintain the session. The playback position changes with time and votes or direct user modification. If there are no voting changes, then time is the only modifying factor.

Each group member content sharing client <NUM>/<NUM> may be prompted with information associated with the select content. In this regard, it should be noted that the server can prompt clients or the clients can poll on a timer-based mechanism. This step contemplates either scenario. Each group member content sharing client <NUM>/<NUM> may query a user-preferred source for the select content associated with the information; and the select content may be sourced to each group member content sharing client <NUM>/<NUM> from the user-preferred source selected from one or more content sources in communication with each group member content sharing client. Each content source is characterized by a separate legal access point as described in more detail in U. Published Patent Application Specification No. <CIT>. Each group member content sharing client <NUM>/<NUM> is preferably independently operable to selectively add content to the content queue <NUM> by a select content addition mechanism as previously described.

A content broadcast system according to the present invention may further provide for an optimally sourced broadcast to a social consumer group. The content broadcast system may be said to comprise a non-transitory, computer-implementable application for routing select, consumable, legally-protected, and queue-able content to individual members of the social consumer group from an optimal legal access point associated with each individual member and as determined from at least two legal access points. The at least two legal access points consist of a user's own legal access point and at least one third party legal access point.

The queue-able content is queue-able via a queue creation service of the non-transitory, computer-implementable application. A content queue, its structure, and support data may be stored in a separate database. Independent clients of the social consumer group are independently operable to selectively add content to the content queue by a select mechanism, the select mechanism being selected from the group consisting of bottom-based content addition, vote-based content addition, and direct modification-based content addition.

A group streaming system enables individual members of a user group to queue and stream synchronized content in a social environment. The group streaming system according to the present invention may be said to comprise a non-transitory, computer-implementable application for implementing a stateless queue system and a plurality of application-implementing computer clients for implementing the non-transitory, computer-implementable application.

The computer-implementable application provides a queue creation service for (a) creating a content queue and (b) storing queue structure and support data in a separate database. The plurality of application-implementing computer clients are (c) independently operable to selectively add content to the content queue by a select content addition mechanism, and (d) in communication with at least two content sources. The at least two content sources are each characterized by a separate legal access point thus defining at least two legal access points for each computer client.

Claim 1:
A method for implementing social broadcasting within a virtual room of a social media platform comprising the steps of:
a stateless queue service (<NUM>) providing a content queue (<NUM>) for synchronized and queued content delivery to content sharing clients (<NUM>,<NUM>) in communication with the stateless queue service (<NUM>);
a group origination content sharing client (<NUM>) sending to a server (<NUM>) an API first request for sharing select content with group member content sharing clients (<NUM>,<NUM>) in communication with the group origination content sharing client (<NUM>) via the server (<NUM>), the API first request generated by an application running on the group origination content sharing client (<NUM>);
prompting each group member content sharing client (<NUM>,<NUM>) with information associated with the select content;
each group member content sharing client (<NUM>,<NUM>) querying a user-preferred source for the select content associated with the information; and
sourcing the select content to each group member content sharing client (<NUM>,<NUM>) from the user-preferred source as selected from one or more content sources in communication with each group member content sharing client (<NUM>,<NUM>),
characterised in that, the content queue (<NUM>) comprises an immutable portion (<NUM>) and a mutable portion (<NUM>), the immutable portion (<NUM>) comprising played and playing content items (<NUM>,<NUM>), the mutable portion (<NUM>) being amenable via a select content addition mechanism,
the mutable portion (<NUM>) being governed by a playback recalculation protocol in the event of content addition, the playback recalculation protocol being characterised by movement of a select content item to a new queue position, the select content item having a successive content item, the successive content item inheriting the start time of the select content item, all other content items recalculating respective start times from the successive content item and an inherited start time thereof.