Patent CA-3078130-A1 (CA)
Title: Information stream management
Inventor: SYED YASSER F
IPC: H04N21/2343
Filed: 2013-12-17
Abstract: Aspects of the disclosure relate to management of information streams. The information streams can be delivered according to adaptive streaming mechanisms. In one aspect, a method of data stream management can comprise receiving a plurality of data streams having a specific bit rate and a segmentation signaling structure, comprising at least one segmentation signaling marker. The method may also comprise monitoring the segmentation signaling structure of at least one data stream and supplying, based on the monitoring, a metric indicative of compliance with a predetermined segmentation signaling structure. In an aspect, the one or more data sources 12 can comprise a data feed, signal source, file source, content provider, and the like. In an aspect, the one or more data sources 12 can be a content provider of data such as audio content, video content, news feed, sports programming, and the like. As an example, the one or more data sources 12 can be configured to transmit the data stream to various end-users (e.g., or allow access to the data stream). As another example, the one or more data sources 12 can be a network data feed transmitting the data stream to subscribers or clients. As a further example, the one or more data sources 12 can transmit or allow access to the data stream in a standard video format, such as, but not limited to, any of the Moving Picture Experts Group standards (e.g., MPEG-2, MPEG-4, a single MPEG-4 video encapsulated in an MPEG-2 transport stream over UDP MCAST, etc.), or any of the standards for audio and/or video, such as MP3, Quicktime, and Audio Video Interleave (avi). However, the encoder 14 can receive the data stream from any source having any format that can be encoded (or transcoded) into a format that is appropriate for streaming. The encoder 14 can be any device, system, apparatus, or the like to encode and/or transcode the data stream. In an aspect, the encoder 14 converts input video having a single bit rate (by way of example, a high bit rate quality video), to an output video of one or more data streams of other bit rates (by way of example, a lower bit rate quality video). In another example, the encoder 14 can convert the data stream from the input format received from the data source (such as MPEG-4) to a transport format for distribution to users or consumers (such as MPEG-2). In an aspect, the encoder 14 can comprise a device such as a transcoder that conditions streaming data and/or changes data from one format to another. In an aspect, the encoder 14 can comprise a separate encoder and transcoder for conditioning streaming data and/or changing the data from one format to another. As an example, the encoder 14 can receive or access the data stream from the input 12 and can encode/transcode information onto the data stream. As a further example, the encoder 14 can add information to the stream relating to content fragments 18. Turning now to FIG. 1B, content fragments will be discussed in greater detail. As shown in FIG. 1B, the exemplary data stream comprises content that can be divided into one or more content fragments 18. In an aspect, a data stream can comprise a plurality of content fragments. As an example, each of the fragments can comprise a plurality of frames of content. As a further example, the content fragments can be grouped together to form a larger content stream. As an example, each of the content fragments 18 can comprise a particular bit rate and resolution. As a further example, the data stream can be an adaptive data stream and a GOP structure of the data stream. As shown in FIG. 2C, as an illustrative example only, a first data entry can be inserted in a first non-IDR frame representing a Fragment 3. The first data entry can comprise an identification of time stamp 28, the fragment's duration 22 (two seconds), and an identification of the signaling point 20 of Fragment 3. A second data entry can be inserted in a second non-IDR frame representing a Fragment n. The second data entry can comprise an identification of time stamp 28, the fragment's duration 22 (two seconds), and an identification of the signaling point 20 of Fragment n. Similarly, other frames (both IDR-frames and non-IDR frames) can be encoded with entries to indicate at least one of a signaling structure information 26, the signaling point 20, the fragment's duration 22, and frame type 24 of one or more frames of a particular content fragment 18. Any number of content fragments 18 can be labeled and identified in the data stream. Since the downstream device is not limited to a single GOP structure for the construction of each of the content fragments 18, the insertion of data entries and boundaries into non-IDR frames can be subsequently processed by the downstream device to construct the appropriate content fragments 18 for distribution to an end user. Turning now to FIG. 3, one or more switching points of one or more data streams can be compared to determine a metric relating to the one or more data streams. In an aspect, the metric can be a compliance metric indicative of a compliance of the data stream relative to one or more rules. As an example, the metric can be a similarity metric indicative of a similarity between two or more data streams. As illustrated in FIG. 3, a first data stream S1 is similar to a second data stream S2. However, data stream S1 is more similar to data stream S3. As an example, data streams can be less similar if the data streams do not align on all potential switching points in the stream time (e.g., linear time, file based observations, and the like). Turning now to FIG. 4, one or more switching points of one or more data streams can be compared to determine a metric relating to the one or more data streams. In an aspect, the metric can be a similarity metric indicative of a similarity of two or more data streams based upon a comparison of two or more signaling points, such as switching points. In an aspect, identical data streams have the same frame types throughout the entire signal structure of each of the two or more data streams. By characterizing the data streams as similar, rather than identical, only the switching point needs to have an identical frame type between the two or more data streams. Accordingly, the signaling structure of each of the data streams can partially differ, while maintaining compatibility between the streams for adaptive streaming. A comparison of the switching points of two or more data streams can facilitate the determination In another aspect, the computing device 1001 can also comprise other removable/non-removable, volatile/non-volatile computer storage media. By way of example, FIG. 10 illustrates a mass storage device 1004 which can provide non-volatile storage of computer code, computer readable instructions, data structures, program modules, and other data for the computing device 1001. For example and not meant to be limiting, a mass storage device 1004 can be a hard disk, a removable magnetic disk, a removable optical disk, magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like. Optionally, any number of program modules can be stored on the mass storage device 1004, including by way of example, an operating system 1005 and network software 1006. Each of the operating system 1005 and network software 1006 (or some combination thereof) can comprise elements of the programming and the network software 1006. Network data 1007 can also be stored on the mass storage device 904. Network data 1007 can be stored in any of one or more databases known in the art. Examples of such databases comprise, DB2®, Microsoft® Access, Microsoft® SQL Server, Oracle®, mySQL, PostgreSQL, and the like. The databases can be centralized or distributed across multiple systems. In another aspect, the user can enter commands and information into the computing device 1001 via an input device (not shown). Examples of such input devices comprise, but are not limited to, a keyboard, pointing device (e.g., a "mouse"), a microphone, a joystick, a scanner, tactile input devices such as gloves, and other body coverings, and the like These and other input devices can be connected to the processing unit 1003 via a human machine interface 1002 that is coupled to the system bus 1013, but can be connected by other interface and bus structures, such as a parallel port, game port, an IEEE 1394 Port (also known as a Firewire port), a serial port, or a universal serial bus (USB). I n yet another aspect, a display device 1011 can also be connected to the system bus 1013 via an interface, such as a display adapter 1009. It is contemplated that the computing device 1001 can have more than one display adapter 1009 and the computer 1001 can have more than one display device 1011. For example, a display device can be a monitor, an LCD (Liquid Crystal Display), or a projector. In addition to the display device 1011, other output peripheral devices can comprise components such as speakers (not shown) and a printer (not shown) which can be connected to the computing device 1001 via Input/Output Interface 1010. Any step and/or result of the methods can be output in any form to an output device. Such output can be any form of visual representation, including, but not limited to, textual, graphical, animation, audio, tactile, and the like. The display 1011 and computing device 1001 can be part of one device, or separate devices. The computing device 1001 can operate in a networked environment using logical connections to one or more remote computing devices 1014a,b,c. By way of example, a remote computing device can be a personal computer, portable computer, a smart phone, a server, a router, a network computer, a peer device or other common network node, and so on. Logical connections between the computing device 1001 and a remote computing device 1014a,b,c can be made via a network 1015, such as a local area network (LAN) and a general wide area network (WAN). Such network connections can be through a network adapter 1008. A network adapter 1008 can be implemented in both wired and wireless environments. Such networking environments are conventional and commonplace in dwellings, offices, enterprise-wide computer networks, intranets, and the Internet. For purposes of illustration, application programs and other executable program components such as the operating system 1005 are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computing device 1001, and are executed by the data processor(s) of the computer. An implementation of network software 1006 can be stored on or transmitted across some form of computer readable media. Any of the disclosed methods can be performed by computer readable instructions embodied on computer readable media. Computer readable media can be any available media that can be accessed by a computer. By way of example and not meant to be limiting, computer readable media can comprise "computer storage media" and "communications media." "Computer storage media" comprise volatile and non-volatile, removable and non-removable media implemented in any methods or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Exemplary computer storage media comprises, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer. The methods and systems can employ Artificial Intelligence techniques such as machine learning and iterative learning. Examples of such techniques include, but are not limited to, expert systems, case based reasoning, Bayesian networks, behavior based AI, neural networks, fuzzy systems, evolutionary computation (e.g. genetic algorithms), swarm intelligence (e.g. ant algorithms), and hybrid intelligent systems (e.g. expert inference rules generated through a neural network or production rules from statistical learning). The system for data stream fragmentation with scalability provides several advantages over conventional encoding/fragmenting systems in addition to allowing the use of multiple distributed fragmentors. For example, the system offers the ability to accelerate the parsing of a stream by using multiple fragmentors. It also allows for a common stream with common signaling information that can be used by multiple different streaming technologies. The system also allows the synchronization of playback of a stream among two or more clients, in that the clients can communicate with one another to cause each to play identically-named fragments at the same time. It will be apparent to those skilled in the art that various modifications and variations can be made without departing from the scope or spirit of the present disclosure. Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice disclosed herein. The scope of the claims should not be limited by particular embodiments set forth herein, but should be construed in a manner consistent with the specification as a whole. CLAIMS: 1. A method comprising: receiving a first fragment of a first data stream, wherein the first data stream is associated with a content source encoded at a first bit rate; selecting, based on a quality of service measurement, a second data stream associated with the content source encoded at a second bit rate; determining a metric indicating that at least one frame associated with a boundary point of the first fragment and at least one frame associated with a boundary point of a second fragment of the second data stream are a same frame type; and switching, based on the metric, playback from the first fragment to the second fragment. 2. The method of claim 1, wherein the quality of service measurement comprises a measurement of at least one of bandwidth, processor capacity, memory availability, or user preference. 3. The method of claim 1, wherein selecting, based on the quality of service measurement, the second data stream comprises: receiving a manifest file comprising at least one alternate data stream comprising the content source; and selecting, based on the quality of service measurement and the manifest file, the second data stream, wherein the second data stream is encoded at a second bit rate. 4. The method of claim 1, further comprising receiving a first segmentation signaling marker associated with the first fragment and a second segmentation signaling marker associated with the second fragment, wherein the first segmentation signaling marker indicates the boundary point of the first fragment and the second segmentation signaling marker indicates the boundary point of the second fragment. 5. The method of claim 1, wherein determining the metric comprises determining an alignment of a first segmentation signaling structure of the first data stream and a second segmentation signaling structure of the second data stream. 26 (see figure 4)