US10834440B2 - System and method for automatically selecting encoding/decoding for streaming media - Google Patents

System and method for automatically selecting encoding/decoding for streaming media Download PDF

Info

Publication number
US10834440B2
US10834440B2 US15/946,250 US201815946250A US10834440B2 US 10834440 B2 US10834440 B2 US 10834440B2 US 201815946250 A US201815946250 A US 201815946250A US 10834440 B2 US10834440 B2 US 10834440B2
Authority
US
United States
Prior art keywords
media
encoder
client
quality
network
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.)
Active
Application number
US15/946,250
Other versions
US20180227606A1 (en
Inventor
Todd Andrew FRYER
David Irvin
Nick Nicas
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AT&T Intellectual Property I LP
Original Assignee
AT&T Intellectual Property I LP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by AT&T Intellectual Property I LP filed Critical AT&T Intellectual Property I LP
Priority to US15/946,250 priority Critical patent/US10834440B2/en
Publication of US20180227606A1 publication Critical patent/US20180227606A1/en
Assigned to AT&T INTELLECTUAL PROPERTY I, L.P. reassignment AT&T INTELLECTUAL PROPERTY I, L.P. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FRYER, TODD ANDREW, IRVIN, DAVID, NICAS, NICK
Priority to US17/060,882 priority patent/US11589088B2/en
Application granted granted Critical
Publication of US10834440B2 publication Critical patent/US10834440B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available

Definitions

  • the present disclosure relates to media delivery and more specifically to optimizing media encoder selection based on network conditions.
  • network quality is, in fact, a collection of different variables. For example, inconsistent bit rates, jitter, latency, packets arriving out of order, and other Quality of Service parameters can wreak havoc on the client's ability to play back media in a high quality, smooth, pleasing manner.
  • a media provider uses a media encoder corresponding to a media decoder at a client.
  • the media provider and the client negotiate, such as in a handshake, to determine approximate network conditions and an expected baseline of network quality. If the network conditions change (i.e. deteriorate or improve), the media provider changes parameters of the encoder to respond to the changes, such as lowering the bitrate of the media streamed from the media provider to the client. These changed parameters can negatively impact the video playback quality at the client, introducing video compression artifacts. Further, network conditions can degrade so far that the client is unable to display any meaningful image. As more and larger types of media are streamed over packet-switched networks, such as streaming HDTV broadcasts, these problems become more pronounced.
  • the approach set forth herein is for automating encoder/decoder selection based on Quality of Service to provide optimal video quality for streaming content. Instead of relying solely on changing streaming parameters of an encoder, this approach handles changing network conditions by changing from one encoder to another, based on conditions such as the network quality of service, type of network, type of media to stream, client preferences, decoders available on the client, and so forth.
  • An encoder and a corresponding decoder can be matched ‘pair’ of a coder/decoder, or codec.
  • the system changes the source media encoder by utilizing an automated selectable multi-codec module that checks the transmission medium Quality of Service, including parameter such as throughput, latency, buffer, propagation error, jitter, and so forth.
  • the system compares the input media type to a list of available decoders at the client, and begins automatically encoding the media using an optimal codec based on those parameters.
  • the client device can receive metadata associated with the received encoded stream to command the client device to automatically apply a particular decoder from a store of available decoders. Alternatively, the client device can simply identify an encoding type of the received encoded stream without the use of metadata, then select and apply the appropriate decoder.
  • the media server determines quality of service parameters for a network between the media server and a media client.
  • the quality of service parameters can include throughput, latency, buffer, propagation, error, jitter, and other network metrics.
  • the quality of service parameters can be determined based on information gathered by at least one of the media server, the media client, and a node residing in the network.
  • the media server selects an encoder based on a list of decoders available at the media client and the quality of service parameters, and encodes at least a portion of the media via the encoder for streaming to the media client.
  • the media server can select the encoder based on a ratio of encoder compression output quality to source media quality.
  • the list of decoders can be received from the media client or from a database lookup, such as a media client device type database indicating which decoders are available for a particular media client software and/or hardware revision. Further, the list can indicate whether the decoders are hardware decoders or software decoders.
  • the media server can also determine a media profile for media to be transmitted to the media client, and select the encoder further based on the media profile.
  • the media server can determine settings for the encoder based on the media type and the quality of service parameters, and encode the media via the encoder according to the settings.
  • the media server can detect that the media client has moved to a new network, receive new quality of service parameters for the new network, select a new encoder based on the list of decoders available at the media client, the media type, and the new quality of service parameters, and encode the media via the new encoder instead of the encoder for streaming to the media client through the new network.
  • the media server can receive updated quality of service parameters for the network, select a new encoder based on the list of decoders available at the media client, the media type, and the updated quality of service parameters, and encode the media via the new encoder instead of the encoder for streaming to the media client through the network.
  • the media server can determine an optimal encoder based on the media type and the quality of service parameters, but for which a decoder corresponding to the optimal encoder is not on the list of decoders available at the media client.
  • the media server can select a temporary encoder based on the list of decoders available at the media client, and encode the media via the temporary encoder for streaming to the media client.
  • the media server can instruct the media client to obtain the decoder, such as from the media server or from some other source.
  • the media server can encode the media via the optimal encoder instead of the temporary encoder for streaming to the media client.
  • a media client can optionally report a set of available decoders to a media server or other entity.
  • the media client requests media from the media server, which selects an encoder based on a type of the media, network quality of service parameters, and the set of decoders. Then the media client receives from the media server a stream of the media, and decodes the stream using a decoder, from the set of decoders, corresponding to the encoder to yield decoded media data.
  • the media client outputs the decoded media data, such as on a display.
  • the media client can detect a move to a new network, and report the new network to the media server.
  • the media client can transmit to the media server client parameters for video playback associated with at least one of processor usage, memory usage, battery usage, bandwidth, visual quality, client output capabilities, availability of dedicated decoding hardware, decoder capabilities, licensing, and cost.
  • the media server can receive the client parameters, and select an encoder further based on the client parameters.
  • the media server and the media client can adapt to different network conditions by selecting a different encoder/decoder pair that is based on specific network conditions, and can even switch encoder/decoder mid-stream.
  • the media server and media client are not limited to the capabilities of any single encoder/decoder, and can better adapt to provide the best media experience possible, given the network and quality of service conditions.
  • FIG. 1 illustrates an example system embodiment
  • FIG. 2 illustrates an example media streaming architecture
  • FIG. 3 illustrates an exemplary set of steps representing interactions between a media playback client and a media streaming server
  • FIG. 4 illustrates an example method embodiment
  • FIG. 1 A brief introductory description of a basic general purpose system or computing device in FIG. 1 which can be employed to practice the concepts is disclosed herein. A more detailed description of media streaming using encoders and decoders selected based on network quality information will then follow. These variations shall be discussed herein as the various embodiments are set forth. The disclosure now turns to FIG. 1 .
  • an exemplary system 100 includes a general-purpose computing device 100 , including a processing unit (CPU or processor) 120 and a system bus 110 that couples various system components including the system memory 130 such as read only memory (ROM) 140 and random access memory (RAM) 150 to the processor 120 .
  • the system 100 can include a cache 122 of high speed memory connected directly with, in close proximity to, or integrated as part of the processor 120 .
  • the system 100 copies data from the memory 130 and/or the storage device 160 to the cache 122 for quick access by the processor 120 . In this way, the cache provides a performance boost that avoids processor 120 delays while waiting for data.
  • These and other modules can control or be configured to control the processor 120 to perform various actions.
  • Other system memory 130 may be available for use as well.
  • the memory 130 can include multiple different types of memory with different performance characteristics. It can be appreciated that the disclosure may operate on a computing device 100 with more than one processor 120 or on a group or cluster of computing devices networked together to provide greater processing capability.
  • the processor 120 can include any general purpose processor and a hardware module or software module, such as module 1 162 , module 2 164 , and module 3 166 stored in storage device 160 , configured to control the processor 120 as well as a special-purpose processor where software instructions are incorporated into the actual processor design.
  • the processor 120 may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc.
  • a multi-core processor may be symmetric or asymmetric.
  • the system bus 110 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures.
  • a basic input/output system (BIOS) stored in ROM 140 or the like, may provide the basic routine that helps to transfer information between elements within the computing device 100 , such as during start-up.
  • the computing device 100 further includes storage devices 160 such as a hard disk drive, a magnetic disk drive, an optical disk drive, tape drive or the like.
  • the storage device 160 can include software modules 162 , 164 , 166 for controlling the processor 120 . Other hardware or software modules are contemplated.
  • the storage device 160 is connected to the system bus 110 by a drive interface.
  • the drives and the associated computer readable storage media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the computing device 100 .
  • a hardware module that performs a particular function includes the software component stored in a non-transitory computer-readable medium in connection with the necessary hardware components, such as the processor 120 , bus 110 , display 170 , and so forth, to carry out the function.
  • the basic components are known to those of skill in the art and appropriate variations are contemplated depending on the type of device, such as whether the device 100 is a small, handheld computing device, a desktop computer, or a computer server.
  • Non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.
  • an input device 190 represents any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth.
  • An output device 170 can also be one or more of a number of output mechanisms known to those of skill in the art.
  • multimodal systems enable a user to provide multiple types of input to communicate with the computing device 100 .
  • the communications interface 180 generally governs and manages the user input and system output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.
  • the illustrative system embodiment is presented as including individual functional blocks including functional blocks labeled as a “processor” or processor 120 .
  • the functions these blocks represent may be provided through the use of either shared or dedicated hardware, including, but not limited to, hardware capable of executing software and hardware, such as a processor 120 , that is purpose-built to operate as an equivalent to software executing on a general purpose processor.
  • the functions of one or more processors presented in FIG. 1 may be provided by a single shared processor or multiple processors.
  • Illustrative embodiments may include microprocessor and/or digital signal processor (DSP) hardware, read-only memory (ROM) 140 for storing software performing the operations discussed below, and random access memory (RAM) 150 for storing results.
  • DSP digital signal processor
  • ROM read-only memory
  • RAM random access memory
  • VLSI Very large scale integration
  • the logical operations of the various embodiments are implemented as: (1) a sequence of computer implemented steps, operations, or procedures running on a programmable circuit within a general use computer, (2) a sequence of computer implemented steps, operations, or procedures running on a specific-use programmable circuit; and/or (3) interconnected machine modules or program engines within the programmable circuits.
  • the system 100 shown in FIG. 1 can practice all or part of the recited methods, can be a part of the recited systems, and/or can operate according to instructions in the recited non-transitory computer-readable storage media.
  • Such logical operations can be implemented as modules configured to control the processor 120 to perform particular functions according to the programming of the module. For example, FIG.
  • Mod 1 162 , Mod 2 164 and Mod 3 166 which are modules configured to control the processor 120 . These modules may be stored on the storage device 160 and loaded into RAM 150 or memory 130 at runtime or may be stored as would be known in the art in other computer-readable memory locations.
  • the disclosure now returns to a discussion of media streaming.
  • This approach automatically selects the optimal encoding/decoding/transcoding platform for uncompressed or previously encoded streaming media.
  • the system intelligently processes data collected via received input signals from the connected device, the media to be encoded for streaming (including type and/or format), and input from the connected transmission path that describes Quality of Service via TX/RX monitoring.
  • the system can determine an optimal codec based on data collected from the sources and transmission path for the media to be streamed. Once the codec at the system is selected, the system begins streaming the media and processing metadata for causing the proper decoder selection at the media client device.
  • This approach is unique because it strays from the conventional approaches of focusing on the transmission medium throughput as the selection for encoding compression level. This approach automatically selects an entire codec based on link quality of service and input media type. This approach allows for a streaming media end user to receive the absolute best quality content based off the various codecs and their compression ratio to source quality.
  • FIG. 2 illustrates an example media streaming architecture 200 .
  • a media server 214 streams media content 216 over a network 212 to a media client 202 for output on a display 204 .
  • the server 214 has a set of encoders 218 , 220 , 222 which it can use to encode media content 216 .
  • the encoders can be dedicated encoders or can be part of a codec package.
  • the client 202 also has decoders 206 , 208 , 210 which it uses to decode encoded streamed media content for playback.
  • the client 202 can be a mobile device such as a smartphone, laptop computer, or tablet, a non-mobile device, such as a cable or digital television set-top box, or other device.
  • the client 202 makes a request to the server 214 , via the network 212 , for media content 216 .
  • the client 202 and the server 214 can perform a handshake to allow the server 214 to identify which decoders 206 , 208 , 210 the client 202 has available.
  • the server 214 can explicitly query the types of decoders available, or can request other information from which the server 214 can infer which types of decoders are available, such as a network address, a client device type, a client software platform and/or revision, and so forth.
  • the server 214 can use a database of available decoders for different types of devices, for example, to determine that a device of type X has decoders Y and Z available.
  • the server 214 has a database of available decoders for potential clients, and when a media content request arrives from a particular network address, the server 214 can look up that network address in the database to determine which decoders are available at that client.
  • the database can be updated as clients add decoders, or as clients are added or removed.
  • the server 214 also receives network quality of service information for the network 212 .
  • the client 202 sends a quality of service ‘burp’, which stands for Bi-directional Universal Rate Ping, to the server 214 from which the server can determine at least some of the network quality of service information.
  • the serve 214 and/or the client 202 can determine and communicate the network quality of service information in other ways as well, either singly or in cooperation one with another.
  • the server 214 identifies an optimal encoder from a set of encoders having corresponding decoders on the client 202 .
  • the server 214 can select an MPEG-4 encoder because MPEG-4 can handle very low bandwidth connections and still present decent video quality.
  • the server 214 can select a VC-1 encoder because it can provide high-quality video at that bit rate.
  • the server 214 can gauge or detect network quality of service information in other ways as a replacement for or as a supplement to the quality of service burp. For example, the server 214 can perform its own network testing, or nodes in the network can report current network conditions to the server 214 . If the server 214 receives data from multiple sources, the server 214 can intelligently combine that data to construct an accurate reflection of network conditions.
  • the client 202 can send to the server 214 user or device preferences for a particular decoder, a particular encoder setting, and/or a particular goal. For example, if the client 202 has a software decoder and a hardware decoder, the hardware decoder may be less taxing on the battery life of the client 202 . Thus, in low-battery situations, the client 202 can send a preference to the server 214 for using the hardware decoder, even if the corresponding encoder on the server 214 may not be the optimal encoder given the network conditions. The preference can also include a preference strength or weight.
  • the server can use an encoder corresponding to the software encoder instead.
  • the client 202 can indicate a preference, and use the preference strength as a way to indicate how and when to make a trade-off between video quality and battery life or other client consideration.
  • the client 202 may be using or planning to use some of the network resources for a background task, such as downloading a software update or uploading data to a social network.
  • the client 202 can request that the settings for the selected encoder use a lower bit rate, either based on an absolute reduction in bit rate or a dynamic reduction in bit rate or other setting.
  • the server 214 progressively encodes portions of the media content 216 in real time for streaming to the client 202 .
  • the client 202 receives the encoded media content, decodes the encoded media content using the corresponding decoder, and outputs the decoded content on the display 204 .
  • the server 214 can select a new encoder and/or new settings for streaming the media content if the previously selected encoder and/or settings are no longer optimal.
  • the client 202 can send periodic burps to the server 214 indicating the quality of service, such as every 50 milliseconds or some other interval.
  • the client 202 can send a burp or other signal to the server 214 when network conditions change beyond a threshold, or when the client 202 changes from one network to another, such as a mobile device switching from a Wi-Fi network to a 3G cellular network.
  • the server 214 can switch from one encoder to another encoder mid-stream to continue to provide optimal video quality given the network conditions.
  • FIG. 3 illustrates an exemplary set of steps representing interactions between a media playback client and a media streaming server.
  • the media playback client sends a media request to the media streaming server, which the media streaming server receives.
  • the media playback client detects and reports network quality of service parameters, and/or the media streaming server determines network quality of service parameters.
  • the media streaming server can combine and analyze data, which may or may not overlap, from multiple sources to determine as complete of a picture of network conditions as possible.
  • the media playback client can report information about available decoders on the media playback client. This step can occur at any point, including before the media request.
  • the media streaming server selects an optimal encoder and/or optimal settings for the encoder based on the available decoders on the media playback client, and the network quality of service parameters.
  • the media streaming server can use a logic table, parameter ranges, algorithms, and/or preconfigured settings, for example, to determine which encoder and which settings are ‘optimal’, and what ‘optimal’ means.
  • Optimal can be directed to absolute video quality, video quality given the output capabilities of the media playback client, monetarily cheapest to encode and transmit, computationally cheapest to encode and transmit, the maximum quality that can fit within a certain cost and/or bandwidth, which encoders require a license fee, and other factors.
  • the factors that determine an optimal encoder and settings can be established for all clients, or clients/users can establish personalized factors and weights for those factors that take in to consideration what a user desires. For example, one user may have an extremely high end audio system, so his preferences can indicate to only use lossless audio encoding in 7.1 surround sound for video content. Another user may use the built-in speakers in his HDTV, so his preferences can indicate to down-mix all the audio to stereo and to permit the use of lossy encoding. Further, these settings can be established per user and/or per device, to accommodate for user-specific preferences and device-specific abilities and considerations.
  • the media streaming server can select encoders based on different ranges of network quality parameters that are suited to different encoders. For example, codec X may apply to a certain high bandwidth and low jitter range, with various parameter changes based on the actual bandwidth available and the actual jitter experienced. If the bandwidth or jitter drops below a certain threshold into a different range of parameters, the system can switch to a different encoder corresponding to that different range. Further, the system can consider the current encoding of the source media content.
  • the system can determine that the extra effort, cost, and computing time to transcode using the optimal encoder would outweigh the incremental improvement in quality over the existing encoded media.
  • the media streaming server can simply transmit the previously encoded media, as long as the media playback client has a corresponding decoder.
  • the media streaming server streams encoded media using the optimal encoder and the optimal settings in response to the media request, and the media playback client receives and decodes the streamed media for playback.
  • the media streaming server can encode or transcode media content.
  • the principles set forth herein allow streaming media to retain its pre-encoded source quality (for native content) and to be transported greater distances with lower bit rate technologies, such as 3G cellular networks, 4G or LTE cellular networks, and/or locally available wireless networks.
  • FIG. 4 For the sake of clarity, the method is discussed in terms of an exemplary system 100 as shown in FIG. 1 configured to practice the method as the media server.
  • the steps outlined herein are exemplary and can be implemented in any combination thereof, including combinations that exclude, add, or modify certain steps.
  • the media server determines quality of service parameters for a network between the media server and a media client ( 402 ).
  • the quality of service parameters can include throughput, latency, buffer, propagation, error, jitter, and other network metrics.
  • the quality of service parameters can be determined based on information gathered by at least one of the media server, the media client, and a node residing in the network.
  • the media server selects an encoder based on a list of decoders available at the media client and the quality of service parameters ( 404 ), and encodes at least a portion of the media via the encoder for streaming to the media client ( 406 ).
  • the media server can select the encoder based on a ratio of encoder compression output quality to source media quality.
  • the list of decoders can be received from the media client or from a database lookup, such as a media client device type database indicating which decoders are available for a particular media client software and/or hardware revision. Further, the list can indicate whether the decoders are hardware decoders or software decoders.
  • the media server can also determine a media profile for media to be transmitted to the media client, and select the encoder further based on the media profile.
  • the media server can determine settings for the encoder based on the media type and the quality of service parameters, and encode the media via the encoder according to the settings.
  • the media server can detect that the media client has moved to a new network, receive new quality of service parameters for the new network, select a new encoder based on the list of decoders available at the media client, the media type, and the new quality of service parameters, and encode the media via the new encoder instead of the encoder for streaming to the media client through the new network.
  • the media server can receive updated quality of service parameters for the network, select a new encoder based on the list of decoders available at the media client, the media type, and the updated quality of service parameters, and encode the media via the new encoder instead of the encoder for streaming to the media client through the network.
  • the media server can determine an optimal encoder based on the media type and the quality of service parameters, but for which a decoder corresponding to the optimal encoder is not on the list of decoders available at the media client.
  • the media server can select a temporary encoder based on the list of decoders available at the media client, and encode the media via the temporary encoder for streaming to the media client.
  • the media server can instruct the media client to obtain the decoder, such as from the media server or from some other source.
  • the media server can encode the media via the optimal encoder instead of the temporary encoder for streaming to the media client.
  • the media client can optionally report a set of available decoders to a media server or other entity.
  • the media client requests media from the media server, which selects an encoder based on a type of the media, network quality of service parameters, and the set of decoders.
  • the media client receives from the media server a stream of the media, and decodes the stream using a decoder, from the set of decoders, corresponding to the encoder to yield decoded media data.
  • the media client outputs the decoded media data, such as on a display.
  • the media client can detect a move to a new network, and report the new network to the media server.
  • the media client can transmit to the media server client parameters for video playback associated with at least one of processor usage, memory usage, battery usage, bandwidth, visual quality, client device output capabilities, availability of dedicated decoding hardware, decoder capabilities, licensing, and cost.
  • the media server can receive the client parameters, and select an encoder further based on the client parameters.
  • the media server and the media client can adapt to different network conditions by selecting a different encoder/decoder pair that is based on specific network conditions, and can even switch encoder/decoder mid-stream.
  • the media server and media client are not limited to the capabilities of any single encoder/decoder, and can better adapt to provide the best media experience possible, given the network and quality of service conditions.
  • the media server can identify an optimal encoder which is not available on the client, and a second encoder which is available on the client.
  • the media server can progressively encode the media for streaming to the client for playback, while a decoder corresponding to the optimal encoder is being transmitted to the client.
  • the media server or other entity can provide the decoder to the client.
  • the media server or other entity can provide a link to the client a link to download the decoder, or other instructions to obtain the decoder. Then, upon receiving a signal that the client has the optimal decoder in place, the media server can transition to the optimal encoder seamlessly.
  • the client stores decoders in some kind of storage medium which can be updated to include new decoders.
  • the client can download and install new firmware for a hardware decoder, or a user can install a removable device storing a decoder, such as a USB memory device or other device having an integrated hardware decoder.
  • Embodiments within the scope of the present disclosure may also include tangible and/or non-transitory computer-readable storage media for carrying or having computer-executable instructions or data structures stored thereon.
  • Such non-transitory computer-readable storage media can be any available media that can be accessed by a general purpose or special purpose computer, including the functional design of any special purpose processor as discussed above.
  • non-transitory computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions, data structures, or processor chip design.
  • Computer-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions.
  • Computer-executable instructions also include program modules that are executed by computers in stand-alone or network environments.
  • program modules include routines, programs, components, data structures, objects, and the functions inherent in the design of special-purpose processors, etc. that perform particular tasks or implement particular abstract data types.
  • Computer-executable instructions, associated data structures, and program modules represent examples of the program code means for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps.
  • Embodiments of the disclosure may be practiced in network computing environments with many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. Embodiments may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination thereof) through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Disclosed herein are systems, methods, and non-transitory computer-readable storage media for encoding media content based on network quality of service parameters. A system configured to practice the method determines quality of service parameters for a network between a media server and a media client. The system selects an encoder based on a list of decoders available at the media client and the quality of service parameters, and encodes at least a portion of the media via the encoder. The system can further determine settings for the encoder based on a media type, and encode the media via the encoder according to the settings. The system can detect when the media client moves to a new network, detect new quality of service parameters, and select a new encoder based on the list of decoders available at the media client, the media type, and the new quality of service parameters.

Description

PRIORITY INFORMATION
The present application is a continuation of U.S. patent application Ser. No. 13/299,970, filed Nov. 18, 2011, the content of which is incorporated herein by reference in its entirety.
BACKGROUND 1. Technical Field
The present disclosure relates to media delivery and more specifically to optimizing media encoder selection based on network conditions.
2. Introduction
Many variables come in to play when streaming media, particularly video media, over a network from a media source to a media playback client. One main variable is network quality, which is, in fact, a collection of different variables. For example, inconsistent bit rates, jitter, latency, packets arriving out of order, and other Quality of Service parameters can wreak havoc on the client's ability to play back media in a high quality, smooth, pleasing manner.
In existing media streaming approaches, a media provider uses a media encoder corresponding to a media decoder at a client. The media provider and the client negotiate, such as in a handshake, to determine approximate network conditions and an expected baseline of network quality. If the network conditions change (i.e. deteriorate or improve), the media provider changes parameters of the encoder to respond to the changes, such as lowering the bitrate of the media streamed from the media provider to the client. These changed parameters can negatively impact the video playback quality at the client, introducing video compression artifacts. Further, network conditions can degrade so far that the client is unable to display any meaningful image. As more and larger types of media are streamed over packet-switched networks, such as streaming HDTV broadcasts, these problems become more pronounced.
SUMMARY
Additional features and advantages of the disclosure will be set forth in the description which follows, and in part will be obvious from the description, or can be learned by practice of the herein disclosed principles. The features and advantages of the disclosure can be realized and obtained by means of the instruments and combinations particularly pointed out in the appended claims. These and other features of the disclosure will become more fully apparent from the following description and appended claims, or can be learned by the practice of the principles set forth herein.
The approach set forth herein is for automating encoder/decoder selection based on Quality of Service to provide optimal video quality for streaming content. Instead of relying solely on changing streaming parameters of an encoder, this approach handles changing network conditions by changing from one encoder to another, based on conditions such as the network quality of service, type of network, type of media to stream, client preferences, decoders available on the client, and so forth. An encoder and a corresponding decoder can be matched ‘pair’ of a coder/decoder, or codec. The system changes the source media encoder by utilizing an automated selectable multi-codec module that checks the transmission medium Quality of Service, including parameter such as throughput, latency, buffer, propagation error, jitter, and so forth. Based on the input media type format, the system compares the input media type to a list of available decoders at the client, and begins automatically encoding the media using an optimal codec based on those parameters. The client device can receive metadata associated with the received encoded stream to command the client device to automatically apply a particular decoder from a store of available decoders. Alternatively, the client device can simply identify an encoding type of the received encoded stream without the use of metadata, then select and apply the appropriate decoder.
Disclosed are systems, methods, and non-transitory computer-readable storage media for a media server and for a media client. The media server determines quality of service parameters for a network between the media server and a media client. The quality of service parameters can include throughput, latency, buffer, propagation, error, jitter, and other network metrics. The quality of service parameters can be determined based on information gathered by at least one of the media server, the media client, and a node residing in the network.
The media server selects an encoder based on a list of decoders available at the media client and the quality of service parameters, and encodes at least a portion of the media via the encoder for streaming to the media client. The media server can select the encoder based on a ratio of encoder compression output quality to source media quality. The list of decoders can be received from the media client or from a database lookup, such as a media client device type database indicating which decoders are available for a particular media client software and/or hardware revision. Further, the list can indicate whether the decoders are hardware decoders or software decoders. The media server can also determine a media profile for media to be transmitted to the media client, and select the encoder further based on the media profile. The media server can determine settings for the encoder based on the media type and the quality of service parameters, and encode the media via the encoder according to the settings.
In the case of streaming media to a mobile device or other device that can change between networks, the media server can detect that the media client has moved to a new network, receive new quality of service parameters for the new network, select a new encoder based on the list of decoders available at the media client, the media type, and the new quality of service parameters, and encode the media via the new encoder instead of the encoder for streaming to the media client through the new network. Similarly, the media server can receive updated quality of service parameters for the network, select a new encoder based on the list of decoders available at the media client, the media type, and the updated quality of service parameters, and encode the media via the new encoder instead of the encoder for streaming to the media client through the network.
The media server can determine an optimal encoder based on the media type and the quality of service parameters, but for which a decoder corresponding to the optimal encoder is not on the list of decoders available at the media client. In this case, the media server can select a temporary encoder based on the list of decoders available at the media client, and encode the media via the temporary encoder for streaming to the media client. Then the media server can instruct the media client to obtain the decoder, such as from the media server or from some other source. Upon receiving a notification that the media client has obtained the decoder, the media server can encode the media via the optimal encoder instead of the temporary encoder for streaming to the media client.
A media client can optionally report a set of available decoders to a media server or other entity. The media client requests media from the media server, which selects an encoder based on a type of the media, network quality of service parameters, and the set of decoders. Then the media client receives from the media server a stream of the media, and decodes the stream using a decoder, from the set of decoders, corresponding to the encoder to yield decoded media data. The media client outputs the decoded media data, such as on a display. The media client can detect a move to a new network, and report the new network to the media server. The media client can transmit to the media server client parameters for video playback associated with at least one of processor usage, memory usage, battery usage, bandwidth, visual quality, client output capabilities, availability of dedicated decoding hardware, decoder capabilities, licensing, and cost. The media server can receive the client parameters, and select an encoder further based on the client parameters.
In this way, the media server and the media client can adapt to different network conditions by selecting a different encoder/decoder pair that is based on specific network conditions, and can even switch encoder/decoder mid-stream. Thus, the media server and media client are not limited to the capabilities of any single encoder/decoder, and can better adapt to provide the best media experience possible, given the network and quality of service conditions.
BRIEF DESCRIPTION OF THE DRAWINGS
In order to describe the manner in which the above-recited and other advantages and features of the disclosure can be obtained, a more particular description of the principles briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only exemplary embodiments of the disclosure and are not therefore to be considered to be limiting of its scope, the principles herein are described and explained with additional specificity and detail through the use of the accompanying drawings in which:
FIG. 1 illustrates an example system embodiment;
FIG. 2 illustrates an example media streaming architecture;
FIG. 3 illustrates an exemplary set of steps representing interactions between a media playback client and a media streaming server; and
FIG. 4 illustrates an example method embodiment.
DETAILED DESCRIPTION
Various embodiments of the disclosure are discussed in detail below. While specific implementations are discussed, it should be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the disclosure.
The present disclosure addresses the need in the art for improving and maintaining quality in streamed media. A brief introductory description of a basic general purpose system or computing device in FIG. 1 which can be employed to practice the concepts is disclosed herein. A more detailed description of media streaming using encoders and decoders selected based on network quality information will then follow. These variations shall be discussed herein as the various embodiments are set forth. The disclosure now turns to FIG. 1.
With reference to FIG. 1, an exemplary system 100 includes a general-purpose computing device 100, including a processing unit (CPU or processor) 120 and a system bus 110 that couples various system components including the system memory 130 such as read only memory (ROM) 140 and random access memory (RAM) 150 to the processor 120. The system 100 can include a cache 122 of high speed memory connected directly with, in close proximity to, or integrated as part of the processor 120. The system 100 copies data from the memory 130 and/or the storage device 160 to the cache 122 for quick access by the processor 120. In this way, the cache provides a performance boost that avoids processor 120 delays while waiting for data. These and other modules can control or be configured to control the processor 120 to perform various actions. Other system memory 130 may be available for use as well. The memory 130 can include multiple different types of memory with different performance characteristics. It can be appreciated that the disclosure may operate on a computing device 100 with more than one processor 120 or on a group or cluster of computing devices networked together to provide greater processing capability. The processor 120 can include any general purpose processor and a hardware module or software module, such as module 1 162, module 2 164, and module 3 166 stored in storage device 160, configured to control the processor 120 as well as a special-purpose processor where software instructions are incorporated into the actual processor design. The processor 120 may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.
The system bus 110 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. A basic input/output system (BIOS) stored in ROM 140 or the like, may provide the basic routine that helps to transfer information between elements within the computing device 100, such as during start-up. The computing device 100 further includes storage devices 160 such as a hard disk drive, a magnetic disk drive, an optical disk drive, tape drive or the like. The storage device 160 can include software modules 162, 164, 166 for controlling the processor 120. Other hardware or software modules are contemplated. The storage device 160 is connected to the system bus 110 by a drive interface. The drives and the associated computer readable storage media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the computing device 100. In one aspect, a hardware module that performs a particular function includes the software component stored in a non-transitory computer-readable medium in connection with the necessary hardware components, such as the processor 120, bus 110, display 170, and so forth, to carry out the function. The basic components are known to those of skill in the art and appropriate variations are contemplated depending on the type of device, such as whether the device 100 is a small, handheld computing device, a desktop computer, or a computer server.
Although the exemplary embodiment described herein employs the hard disk 160, it should be appreciated by those skilled in the art that other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, digital versatile disks, cartridges, random access memories (RAMs) 150, read only memory (ROM) 140, a cable or wireless signal containing a bit stream and the like, may also be used in the exemplary operating environment. Non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.
To enable user interaction with the computing device 100, an input device 190 represents any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth. An output device 170 can also be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems enable a user to provide multiple types of input to communicate with the computing device 100. The communications interface 180 generally governs and manages the user input and system output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.
For clarity of explanation, the illustrative system embodiment is presented as including individual functional blocks including functional blocks labeled as a “processor” or processor 120. The functions these blocks represent may be provided through the use of either shared or dedicated hardware, including, but not limited to, hardware capable of executing software and hardware, such as a processor 120, that is purpose-built to operate as an equivalent to software executing on a general purpose processor. For example the functions of one or more processors presented in FIG. 1 may be provided by a single shared processor or multiple processors. (Use of the term “processor” should not be construed to refer exclusively to hardware capable of executing software.) Illustrative embodiments may include microprocessor and/or digital signal processor (DSP) hardware, read-only memory (ROM) 140 for storing software performing the operations discussed below, and random access memory (RAM) 150 for storing results. Very large scale integration (VLSI) hardware embodiments, as well as custom VLSI circuitry in combination with a general purpose DSP circuit, may also be provided.
The logical operations of the various embodiments are implemented as: (1) a sequence of computer implemented steps, operations, or procedures running on a programmable circuit within a general use computer, (2) a sequence of computer implemented steps, operations, or procedures running on a specific-use programmable circuit; and/or (3) interconnected machine modules or program engines within the programmable circuits. The system 100 shown in FIG. 1 can practice all or part of the recited methods, can be a part of the recited systems, and/or can operate according to instructions in the recited non-transitory computer-readable storage media. Such logical operations can be implemented as modules configured to control the processor 120 to perform particular functions according to the programming of the module. For example, FIG. 1 illustrates three modules Mod 1 162, Mod 2 164 and Mod 3 166 which are modules configured to control the processor 120. These modules may be stored on the storage device 160 and loaded into RAM 150 or memory 130 at runtime or may be stored as would be known in the art in other computer-readable memory locations.
Having disclosed some components of a computing system, the disclosure now returns to a discussion of media streaming. This approach automatically selects the optimal encoding/decoding/transcoding platform for uncompressed or previously encoded streaming media. The system intelligently processes data collected via received input signals from the connected device, the media to be encoded for streaming (including type and/or format), and input from the connected transmission path that describes Quality of Service via TX/RX monitoring. The system can determine an optimal codec based on data collected from the sources and transmission path for the media to be streamed. Once the codec at the system is selected, the system begins streaming the media and processing metadata for causing the proper decoder selection at the media client device. This approach is unique because it strays from the conventional approaches of focusing on the transmission medium throughput as the selection for encoding compression level. This approach automatically selects an entire codec based on link quality of service and input media type. This approach allows for a streaming media end user to receive the absolute best quality content based off the various codecs and their compression ratio to source quality.
FIG. 2 illustrates an example media streaming architecture 200. In this architecture 200, a media server 214 streams media content 216 over a network 212 to a media client 202 for output on a display 204. The server 214 has a set of encoders 218, 220, 222 which it can use to encode media content 216. The encoders can be dedicated encoders or can be part of a codec package. The client 202 also has decoders 206, 208, 210 which it uses to decode encoded streamed media content for playback. The client 202 can be a mobile device such as a smartphone, laptop computer, or tablet, a non-mobile device, such as a cable or digital television set-top box, or other device. The client 202 makes a request to the server 214, via the network 212, for media content 216. The client 202 and the server 214 can perform a handshake to allow the server 214 to identify which decoders 206, 208, 210 the client 202 has available. The server 214 can explicitly query the types of decoders available, or can request other information from which the server 214 can infer which types of decoders are available, such as a network address, a client device type, a client software platform and/or revision, and so forth. The server 214 can use a database of available decoders for different types of devices, for example, to determine that a device of type X has decoders Y and Z available. In another example, the server 214 has a database of available decoders for potential clients, and when a media content request arrives from a particular network address, the server 214 can look up that network address in the database to determine which decoders are available at that client. The database can be updated as clients add decoders, or as clients are added or removed.
The server 214 also receives network quality of service information for the network 212. In one variation, the client 202 sends a quality of service ‘burp’, which stands for Bi-directional Universal Rate Ping, to the server 214 from which the server can determine at least some of the network quality of service information. The serve 214 and/or the client 202 can determine and communicate the network quality of service information in other ways as well, either singly or in cooperation one with another. Based on the network quality of service information, the server 214 identifies an optimal encoder from a set of encoders having corresponding decoders on the client 202. For example, if the network quality of service information indicates particularly low throughput, such as 1.5 megabit per second, the server 214 can select an MPEG-4 encoder because MPEG-4 can handle very low bandwidth connections and still present decent video quality. On the other hand, if the network quality of service information indicates that the network has very low latency and high throughput, such as 10 megabits per second, the server 214 can select a VC-1 encoder because it can provide high-quality video at that bit rate.
The server 214 can gauge or detect network quality of service information in other ways as a replacement for or as a supplement to the quality of service burp. For example, the server 214 can perform its own network testing, or nodes in the network can report current network conditions to the server 214. If the server 214 receives data from multiple sources, the server 214 can intelligently combine that data to construct an accurate reflection of network conditions.
Further, the client 202 can send to the server 214 user or device preferences for a particular decoder, a particular encoder setting, and/or a particular goal. For example, if the client 202 has a software decoder and a hardware decoder, the hardware decoder may be less taxing on the battery life of the client 202. Thus, in low-battery situations, the client 202 can send a preference to the server 214 for using the hardware decoder, even if the corresponding encoder on the server 214 may not be the optimal encoder given the network conditions. The preference can also include a preference strength or weight. For example, if the video quality using preferred hardware decoder, given the network conditions, is below a certain threshold indicated by the preference strength, then the server can use an encoder corresponding to the software encoder instead. In this way, the client 202 can indicate a preference, and use the preference strength as a way to indicate how and when to make a trade-off between video quality and battery life or other client consideration. Similarly, the client 202 may be using or planning to use some of the network resources for a background task, such as downloading a software update or uploading data to a social network. In this case, the client 202 can request that the settings for the selected encoder use a lower bit rate, either based on an absolute reduction in bit rate or a dynamic reduction in bit rate or other setting.
Then, once the server 214 has selected a codec and appropriate settings for that codec, the server 214 progressively encodes portions of the media content 216 in real time for streaming to the client 202. The client 202 receives the encoded media content, decodes the encoded media content using the corresponding decoder, and outputs the decoded content on the display 204.
If the server 214 or the client 202 detects a change in the network quality of service information, the server 214 can select a new encoder and/or new settings for streaming the media content if the previously selected encoder and/or settings are no longer optimal. The client 202 can send periodic burps to the server 214 indicating the quality of service, such as every 50 milliseconds or some other interval. Alternately, the client 202 can send a burp or other signal to the server 214 when network conditions change beyond a threshold, or when the client 202 changes from one network to another, such as a mobile device switching from a Wi-Fi network to a 3G cellular network. In these cases, the server 214 can switch from one encoder to another encoder mid-stream to continue to provide optimal video quality given the network conditions.
FIG. 3 illustrates an exemplary set of steps representing interactions between a media playback client and a media streaming server. First, the media playback client sends a media request to the media streaming server, which the media streaming server receives. Second, the media playback client detects and reports network quality of service parameters, and/or the media streaming server determines network quality of service parameters. The media streaming server can combine and analyze data, which may or may not overlap, from multiple sources to determine as complete of a picture of network conditions as possible. Third, the media playback client can report information about available decoders on the media playback client. This step can occur at any point, including before the media request. Further, other entities besides the media playback client can report information about which decoders are available on the media playback client, such as an available decoder database service, or a look-up table of available decoders by device type. Fourth, the media streaming server selects an optimal encoder and/or optimal settings for the encoder based on the available decoders on the media playback client, and the network quality of service parameters. The media streaming server can use a logic table, parameter ranges, algorithms, and/or preconfigured settings, for example, to determine which encoder and which settings are ‘optimal’, and what ‘optimal’ means. Optimal can be directed to absolute video quality, video quality given the output capabilities of the media playback client, monetarily cheapest to encode and transmit, computationally cheapest to encode and transmit, the maximum quality that can fit within a certain cost and/or bandwidth, which encoders require a license fee, and other factors.
The factors that determine an optimal encoder and settings can be established for all clients, or clients/users can establish personalized factors and weights for those factors that take in to consideration what a user desires. For example, one user may have an extremely high end audio system, so his preferences can indicate to only use lossless audio encoding in 7.1 surround sound for video content. Another user may use the built-in speakers in his HDTV, so his preferences can indicate to down-mix all the audio to stereo and to permit the use of lossy encoding. Further, these settings can be established per user and/or per device, to accommodate for user-specific preferences and device-specific abilities and considerations.
Similarly, the media streaming server can select encoders based on different ranges of network quality parameters that are suited to different encoders. For example, codec X may apply to a certain high bandwidth and low jitter range, with various parameter changes based on the actual bandwidth available and the actual jitter experienced. If the bandwidth or jitter drops below a certain threshold into a different range of parameters, the system can switch to a different encoder corresponding to that different range. Further, the system can consider the current encoding of the source media content. If the source media content is already encoded using a non-optimal encoder, such as the second choice of encoder based on the network parameters, then the system can determine that the extra effort, cost, and computing time to transcode using the optimal encoder would outweigh the incremental improvement in quality over the existing encoded media. In this case, the media streaming server can simply transmit the previously encoded media, as long as the media playback client has a corresponding decoder.
Fifth, the media streaming server streams encoded media using the optimal encoder and the optimal settings in response to the media request, and the media playback client receives and decodes the streamed media for playback. The media streaming server can encode or transcode media content. The principles set forth herein allow streaming media to retain its pre-encoded source quality (for native content) and to be transported greater distances with lower bit rate technologies, such as 3G cellular networks, 4G or LTE cellular networks, and/or locally available wireless networks.
Having disclosed some basic system components and concepts, the disclosure now turns to the exemplary method embodiment shown in FIG. 4. For the sake of clarity, the method is discussed in terms of an exemplary system 100 as shown in FIG. 1 configured to practice the method as the media server. The steps outlined herein are exemplary and can be implemented in any combination thereof, including combinations that exclude, add, or modify certain steps.
The media server determines quality of service parameters for a network between the media server and a media client (402). The quality of service parameters can include throughput, latency, buffer, propagation, error, jitter, and other network metrics. The quality of service parameters can be determined based on information gathered by at least one of the media server, the media client, and a node residing in the network.
The media server selects an encoder based on a list of decoders available at the media client and the quality of service parameters (404), and encodes at least a portion of the media via the encoder for streaming to the media client (406). The media server can select the encoder based on a ratio of encoder compression output quality to source media quality. The list of decoders can be received from the media client or from a database lookup, such as a media client device type database indicating which decoders are available for a particular media client software and/or hardware revision. Further, the list can indicate whether the decoders are hardware decoders or software decoders. The media server can also determine a media profile for media to be transmitted to the media client, and select the encoder further based on the media profile. The media server can determine settings for the encoder based on the media type and the quality of service parameters, and encode the media via the encoder according to the settings.
In the case of streaming media to a mobile device or other device that can change between networks, the media server can detect that the media client has moved to a new network, receive new quality of service parameters for the new network, select a new encoder based on the list of decoders available at the media client, the media type, and the new quality of service parameters, and encode the media via the new encoder instead of the encoder for streaming to the media client through the new network. Similarly, the media server can receive updated quality of service parameters for the network, select a new encoder based on the list of decoders available at the media client, the media type, and the updated quality of service parameters, and encode the media via the new encoder instead of the encoder for streaming to the media client through the network.
The media server can determine an optimal encoder based on the media type and the quality of service parameters, but for which a decoder corresponding to the optimal encoder is not on the list of decoders available at the media client. In this case, the media server can select a temporary encoder based on the list of decoders available at the media client, and encode the media via the temporary encoder for streaming to the media client. Then the media server can instruct the media client to obtain the decoder, such as from the media server or from some other source. Upon receiving a notification that the media client has obtained the decoder, the media server can encode the media via the optimal encoder instead of the temporary encoder for streaming to the media client.
On the other hand, the media client can optionally report a set of available decoders to a media server or other entity. The media client requests media from the media server, which selects an encoder based on a type of the media, network quality of service parameters, and the set of decoders. Then the media client receives from the media server a stream of the media, and decodes the stream using a decoder, from the set of decoders, corresponding to the encoder to yield decoded media data. The media client outputs the decoded media data, such as on a display. The media client can detect a move to a new network, and report the new network to the media server. The media client can transmit to the media server client parameters for video playback associated with at least one of processor usage, memory usage, battery usage, bandwidth, visual quality, client device output capabilities, availability of dedicated decoding hardware, decoder capabilities, licensing, and cost. The media server can receive the client parameters, and select an encoder further based on the client parameters.
In this way, the media server and the media client can adapt to different network conditions by selecting a different encoder/decoder pair that is based on specific network conditions, and can even switch encoder/decoder mid-stream. Thus, the media server and media client are not limited to the capabilities of any single encoder/decoder, and can better adapt to provide the best media experience possible, given the network and quality of service conditions.
In some variations of this approach, the media server can identify an optimal encoder which is not available on the client, and a second encoder which is available on the client. In this case, the media server can progressively encode the media for streaming to the client for playback, while a decoder corresponding to the optimal encoder is being transmitted to the client. The media server or other entity can provide the decoder to the client. Alternatively, the media server or other entity can provide a link to the client a link to download the decoder, or other instructions to obtain the decoder. Then, upon receiving a signal that the client has the optimal decoder in place, the media server can transition to the optimal encoder seamlessly. This example assumes that the client stores decoders in some kind of storage medium which can be updated to include new decoders. Similarly, the client can download and install new firmware for a hardware decoder, or a user can install a removable device storing a decoder, such as a USB memory device or other device having an integrated hardware decoder.
Embodiments within the scope of the present disclosure may also include tangible and/or non-transitory computer-readable storage media for carrying or having computer-executable instructions or data structures stored thereon. Such non-transitory computer-readable storage media can be any available media that can be accessed by a general purpose or special purpose computer, including the functional design of any special purpose processor as discussed above. By way of example, and not limitation, such non-transitory computer-readable media can include RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions, data structures, or processor chip design. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or combination thereof) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of the computer-readable media.
Computer-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Computer-executable instructions also include program modules that are executed by computers in stand-alone or network environments. Generally, program modules include routines, programs, components, data structures, objects, and the functions inherent in the design of special-purpose processors, etc. that perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of the program code means for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps.
Those of skill in the art will appreciate that other embodiments of the disclosure may be practiced in network computing environments with many types of computer system configurations, including personal computers, hand-held devices, multi-processor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. Embodiments may also be practiced in distributed computing environments where tasks are performed by local and remote processing devices that are linked (either by hardwired links, wireless links, or by a combination thereof) through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
The various embodiments described above are provided by way of illustration only and should not be construed to limit the scope of the disclosure. Those skilled in the art will readily recognize various modifications and changes that may be made to the principles described herein without following the example embodiments and applications illustrated and described herein, and without departing from the spirit and scope of the disclosure.

Claims (20)

We claim:
1. A method comprising:
receiving, over a network, from a media server and at a media client, a first portion of a media, wherein the media was encoded with a first encoder on the media server, wherein a selection of the first encoder is based on a first decoder available on the media client, the first decoder corresponding to the first encoder, and wherein the selection of the first encoder is further based on quality of service parameters;
receiving, over the network and at the media client, a second portion of the media, the second portion of the media being encoded with a temporary encoder when a second decoder is not available at the media client associated with a second encoder which is identified as preferable for encoding the second portion;
obtaining the second decoder; and
after obtaining the second decoder, receiving a third portion of the media that is encoded using the second encoder.
2. The method of claim 1, wherein the media server determines settings for one or more of the first encoder, the second encoder and the temporary encoder based on a type of the media and the quality of service parameters.
3. The method of claim 2, wherein the media server encodes at least one portion of the media via one or more of the first encoder, the second encoder and the temporary encoder according to the settings.
4. The method of claim 1, further comprising:
transmitting new quality of service parameters to the media server when the media client moves to a new network, wherein the media server selects a new encoder based on one or more of a list of decoders available at the media client, a media type, a battery life, and the new quality of service parameters.
5. The method of claim 4, wherein the media server encodes at least a portion of the media via the new encoder for streaming to the media client through the new network.
6. The method of claim 1, further comprising:
transmitting updated quality of service parameters for the network to the media server, wherein the media server selects a new encoder based on one or more of a list of decoders available at the media client, a media type, a battery life, and the updated quality of service parameters and encodes at least a portion of the media via the new encoder for streaming to the media client through the network.
7. The method of claim 1, further comprising:
transmitting client parameters to the media server, wherein the media server selects an encoder further based at least in part on the client parameters.
8. The method of claim 7, wherein the client parameters are associated with one or more of processor usage, memory usage, bandwidth, visual quality, client output capabilities, availability of dedicated decoding hardware, decoder capabilities, licensing, and cost.
9. The method of claim 1, wherein the quality of service parameters comprise one or more of throughput, latency, buffer, propagation, error, and jitter.
10. A system comprising:
a processor; and
a computer-readable storage medium having instructions stored which, when executed by the processor, cause the processor to perform operations comprising:
receiving, over a network, from a media server and at a media client, a first portion of a media, wherein the media was encoded with a first encoder on the media server, wherein a selection of the first encoder is based on a first decoder available on the media client, the first decoder corresponding to the first encoder, and wherein the selection of the first encoder is further based on quality of service parameters;
receiving, over the network and at the media client, a second portion of the media, the second portion of the media being encoded with a temporary encoder when a second decoder is not available at the media client associated with a second encoder which is identified as preferable for encoding the second portion;
obtaining the second decoder; and
after obtaining the second decoder, receiving a third portion of the media that is encoded using the second encoder.
11. The system of claim 10, wherein the media server determines settings for one or more of the first encoder, the second encoder and the temporary encoder based on a type of the media and the quality of service parameters.
12. The system of claim 11, wherein the media server encodes at least one portion of the media via one or more of the first encoder, the second encoder and the temporary encoder according to the settings.
13. The system of claim 10, wherein the computer-readable storage medium stores additional instructions which, when executed by the processor, cause the processor to perform operations further comprising:
transmitting new quality of service parameters to the media server when the media client moves to a new network, wherein the media server selects a new encoder based on one or more of a list of decoders available at the media client, a media type, a battery life, and the new quality of service parameters.
14. The system of claim 13, wherein the media server encodes at least a portion of the media via the new encoder for streaming to the media client through the new network.
15. The system of claim 10, wherein the computer-readable storage medium stores additional instructions which, when executed by the processor, cause the processor to perform operations further comprising:
transmitting updated quality of service parameters for the network to the media server, wherein the media server selects a new encoder based on one or more of a list of decoders available at the media client, a media type, a battery life, and the updated quality of service parameters and encodes at least a portion of the media via the new encoder for streaming to the media client through the network.
16. The system of claim 10, wherein the computer-readable storage medium stores additional instructions which, when executed by the processor, cause the processor to perform operations further comprising:
transmitting client parameters to the media server, wherein the media server selects an encoder further based on the client parameters.
17. The system of claim 16, wherein the client parameters are associated with one or more of processor usage, memory usage, bandwidth, visual quality, client output capabilities, availability of dedicated decoding hardware, decoder capabilities, licensing, and cost.
18. The system of claim 10, wherein the quality of service parameters comprise one of throughput, latency, buffer, propagation, error, and jitter.
19. A non-transitory computer-readable storage device having instructions stored which, when executed by a computing device, cause the computing device to perform operations comprising:
receiving, over a network, from a media server and at a media client, a first portion of a media, wherein the media was encoded with a first encoder on the media server, wherein a selection of the first encoder is based on a first decoder available on the media client, the first decoder corresponding to the first encoder, and wherein the selection of the first encoder is further based on quality of service parameters;
receiving, over the network and at the media client, a second portion of the media, the second portion of the media being encoded with a temporary encoder when a second decoder is not available at the media client associated with a second encoder which is identified as preferable for encoding the second portion;
obtaining the second decoder; and
after obtaining the second decoder, receiving a third portion of the media that is encoded using the second encoder.
20. The non-transitory computer-readable storage device of claim 19, wherein the media server determines settings for one or more of the first encoder, the second encoder and the temporary encoder based on a type of the media and the quality of service parameters.
US15/946,250 2011-11-18 2018-04-05 System and method for automatically selecting encoding/decoding for streaming media Active US10834440B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/946,250 US10834440B2 (en) 2011-11-18 2018-04-05 System and method for automatically selecting encoding/decoding for streaming media
US17/060,882 US11589088B2 (en) 2011-11-18 2020-10-01 System and method for automatically selecting encoding/decoding for streaming media

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/299,970 US9942580B2 (en) 2011-11-18 2011-11-18 System and method for automatically selecting encoding/decoding for streaming media
US15/946,250 US10834440B2 (en) 2011-11-18 2018-04-05 System and method for automatically selecting encoding/decoding for streaming media

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US13/299,970 Continuation US9942580B2 (en) 2011-11-18 2011-11-18 System and method for automatically selecting encoding/decoding for streaming media

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/060,882 Continuation US11589088B2 (en) 2011-11-18 2020-10-01 System and method for automatically selecting encoding/decoding for streaming media

Publications (2)

Publication Number Publication Date
US20180227606A1 US20180227606A1 (en) 2018-08-09
US10834440B2 true US10834440B2 (en) 2020-11-10

Family

ID=48426910

Family Applications (3)

Application Number Title Priority Date Filing Date
US13/299,970 Active 2034-04-15 US9942580B2 (en) 2011-11-18 2011-11-18 System and method for automatically selecting encoding/decoding for streaming media
US15/946,250 Active US10834440B2 (en) 2011-11-18 2018-04-05 System and method for automatically selecting encoding/decoding for streaming media
US17/060,882 Active US11589088B2 (en) 2011-11-18 2020-10-01 System and method for automatically selecting encoding/decoding for streaming media

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US13/299,970 Active 2034-04-15 US9942580B2 (en) 2011-11-18 2011-11-18 System and method for automatically selecting encoding/decoding for streaming media

Family Applications After (1)

Application Number Title Priority Date Filing Date
US17/060,882 Active US11589088B2 (en) 2011-11-18 2020-10-01 System and method for automatically selecting encoding/decoding for streaming media

Country Status (1)

Country Link
US (3) US9942580B2 (en)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9942580B2 (en) * 2011-11-18 2018-04-10 At&T Intellecutal Property I, L.P. System and method for automatically selecting encoding/decoding for streaming media
US9241167B2 (en) 2012-02-17 2016-01-19 Microsoft Technology Licensing, Llc Metadata assisted video decoding
US9762634B2 (en) 2012-04-06 2017-09-12 At&T Intellectual Property I, L.P. System and method to transmit digital broadcast grade video via a cellular data network
US9351196B2 (en) 2012-08-31 2016-05-24 International Business Machines Corporation Byte caching in wireless communication networks
KR102023402B1 (en) * 2013-02-28 2019-09-23 삼성전자주식회사 Method and apparatus for monitoring internet connection status in communication system
US20150201041A1 (en) * 2013-03-18 2015-07-16 Google Inc. Device dependent codec negotiation
US9888050B2 (en) * 2013-09-24 2018-02-06 Verizon Patent And Licensing Inc. Method and apparatus for integrating various network elements and providing media processing services
US9839040B2 (en) * 2013-11-26 2017-12-05 Echostar Technologies L.L.C. Mitigating wireless interference
US9872255B2 (en) * 2015-04-01 2018-01-16 Ebay Inc. Battery charge aware communications
US10298645B2 (en) * 2015-04-28 2019-05-21 Nvidia Corporation Optimal settings for application streaming
US10219008B2 (en) * 2016-07-29 2019-02-26 At&T Intellectual Property I, L.P. Apparatus and method for aggregating video streams into composite media content
US10523895B2 (en) 2016-09-26 2019-12-31 Samsung Display Co., Ltd. System and method for electronic data communication
US10469857B2 (en) 2016-09-26 2019-11-05 Samsung Display Co., Ltd. System and method for electronic data communication
US10616383B2 (en) 2016-09-26 2020-04-07 Samsung Display Co., Ltd. System and method for electronic data communication
US10075671B2 (en) * 2016-09-26 2018-09-11 Samsung Display Co., Ltd. System and method for electronic data communication
US10938687B2 (en) * 2017-03-29 2021-03-02 Accenture Global Solutions Limited Enabling device under test conferencing via a collaboration platform
US10931988B2 (en) 2017-09-13 2021-02-23 Amazon Technologies, Inc. Distributed multi-datacenter video packaging system
US10652304B1 (en) * 2017-11-08 2020-05-12 Amazon Technologies, Inc. Instantaneous egress management service
US11102492B2 (en) 2018-02-20 2021-08-24 Arlo Technologies, Inc. Multi-sensor motion detection
US11272189B2 (en) 2018-02-20 2022-03-08 Netgear, Inc. Adaptive encoding in security camera applications
US11756390B2 (en) 2018-02-20 2023-09-12 Arlo Technologies, Inc. Notification priority sequencing for video security
US11064208B2 (en) 2018-02-20 2021-07-13 Arlo Technologies, Inc. Transcoding in security camera applications
US10855996B2 (en) * 2018-02-20 2020-12-01 Arlo Technologies, Inc. Encoder selection based on camera system deployment characteristics
US20190289263A1 (en) 2018-03-19 2019-09-19 Netgear, Inc. Notifications by a network-connected security system based on content analysis
US10440367B1 (en) * 2018-06-04 2019-10-08 Fubotv Inc. Systems and methods for adaptively encoding video stream
US10771399B2 (en) * 2018-07-30 2020-09-08 Intel Corporation Quality of service-aware processing of decoding tasks
US11190598B2 (en) 2018-10-31 2021-11-30 Comcast Cable Communications, Llc Methods and systems for session management
US11671653B2 (en) * 2019-03-14 2023-06-06 Comcast Cable Communications, Llc Methods and systems for content delivery
US11731043B2 (en) * 2019-11-19 2023-08-22 Sony Interactive Entertainment Inc. Adaptive graphics for cloud gaming
US11930244B2 (en) * 2019-11-23 2024-03-12 Dish Network Technologies India Private Limited Method and apparatus for preview decoding for joint video production
CN116437399A (en) * 2020-04-22 2023-07-14 华为技术有限公司 Media message transmission method, device and system
US11637913B2 (en) 2020-07-15 2023-04-25 Stryker Corporation Automatic correspondence of encoders and decoders to video ports
CN112188239B (en) * 2020-09-30 2022-12-20 中国联合网络通信集团有限公司 Audio and video stream transmission method, media server and wireless access network entity
KR20220135483A (en) * 2021-03-30 2022-10-07 삼성전자주식회사 A method and an apparatus for conversational services in a mobile communication system
US12058193B2 (en) * 2021-06-30 2024-08-06 Tencent America LLC Bidirectional presentation datastream
US11870833B2 (en) * 2021-08-31 2024-01-09 Google Llc Methods and systems for encoder parameter setting optimization
CN114501017A (en) * 2022-03-04 2022-05-13 百果园技术(新加坡)有限公司 Video coding adaptation method, device, equipment and storage medium
CN115474063B (en) * 2022-10-27 2023-01-10 中诚华隆计算机技术有限公司 Streaming media back-end decoding method, device and storage medium

Citations (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020080871A1 (en) 2000-10-03 2002-06-27 Realtime Data, Llc System and method for data feed acceleration and encryption
US20030119515A1 (en) 2001-10-31 2003-06-26 Jan Holler Method and apparatus for auto-configuration for optimum multimedia performance
US20030191876A1 (en) 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US6810086B1 (en) 2001-06-05 2004-10-26 At&T Corp. System and method of filtering noise
US20050047449A1 (en) 2003-07-17 2005-03-03 Dirk Adolph Individual video encryption system and method
US20050125838A1 (en) * 2003-12-04 2005-06-09 Meng Wang Control mechanisms for enhanced features for streaming video on demand systems
US6909745B1 (en) 2001-06-05 2005-06-21 At&T Corp. Content adaptive video encoder
US6968006B1 (en) 2001-06-05 2005-11-22 At&T Corp. Method of content adaptive video decoding
US6970513B1 (en) 2001-06-05 2005-11-29 At&T Corp. System for content adaptive video decoding
US20060025149A1 (en) 2004-07-28 2006-02-02 Jeyhan Karaoguz Quality-of-service (QoS)-based association with a new network using background network scanning
US7039116B1 (en) * 2000-11-07 2006-05-02 Cisco Technology, Inc. Methods and apparatus for embedding and format conversion of compressed video data
US20060146703A1 (en) 2004-12-16 2006-07-06 Samsung Electronics Co.; Ltd Dynamic quality-of-service mapping apparatus and method through hybrid monitoring in digital home service
US20060227870A1 (en) * 2005-03-10 2006-10-12 Tao Tian Context-adaptive bandwidth adjustment in video rate control
US20070022032A1 (en) 2005-01-12 2007-01-25 Anderson Bruce J Content selection based on signaling from customer premises equipment in a broadcast network
US20070067704A1 (en) * 2005-07-21 2007-03-22 Mustafa Altintas Deinterleaver and dual-viterbi decoder architecture
US20070109156A1 (en) 1998-12-11 2007-05-17 Fallon James J Data compression system and methods
US20070174209A1 (en) 2000-10-03 2007-07-26 Realtime Data Llc System and method for data feed acceleration and encryption
US20070171841A1 (en) 2004-03-04 2007-07-26 Andreas Witzel Method and node for selecting a codec type or configuration by extending the list comprising codecs for transcoder/tandem free operation by further codecs supported by the node
US20070230563A1 (en) * 2006-04-04 2007-10-04 Qualcomm Incorporated Adaptive encoder-assisted frame rate up conversion
US20080118227A1 (en) 2006-09-11 2008-05-22 Tivo, Inc. Personal content distribution network
US20090006104A1 (en) 2007-06-29 2009-01-01 Samsung Electronics Co., Ltd. Method of configuring codec and codec using the same
US20090052553A1 (en) * 2007-08-20 2009-02-26 Alcatel Lucent Device and associated method for concealing errors in decoded media units
US20090138614A1 (en) 2007-11-28 2009-05-28 Motorola, Inc. Method and apparatus for streaming media in a communication network
US20090216897A1 (en) 2007-04-13 2009-08-27 Huawei Technologies Co., Ltd. Method and system for controlling streaming rates
US20090295905A1 (en) 2005-07-20 2009-12-03 Reha Civanlar System and method for a conference server architecture for low delay and distributed conferencing applications
US7773670B1 (en) 2001-06-05 2010-08-10 At+T Intellectual Property Ii, L.P. Method of content adaptive video encoding
US20100205049A1 (en) * 2009-02-12 2010-08-12 Long Dustin W Advertisement management for live internet multimedia content
US20100248643A1 (en) 2009-03-31 2010-09-30 At&T Intellectual Property I, L.P. Intelligent adaptive re-coding for improved communications resource utilization
US20100316066A1 (en) 2009-06-16 2010-12-16 Qualcomm Incorporated Managing video adaptation algorithms
US20110164111A1 (en) 2009-12-31 2011-07-07 Broadcom Corporation Adaptable media stream servicing two and three dimensional content
US20110302324A1 (en) 2010-06-04 2011-12-08 Jeyhan Karaoguz Customized delivery of content by a broadband gateway
US20120050616A1 (en) 2010-08-25 2012-03-01 Telefonaktiebolaget Lm Ericsson (Publ) Controlling streaming media responsive to proximity to user selected display elements
US20120059872A1 (en) * 2010-03-30 2012-03-08 International Business Machines Corporation Interactively Communicating A Media Resource
US20120131627A1 (en) 2010-11-22 2012-05-24 Sling Media Pvt Ltd Systems, methods and devices to reduce change latency in placeshifted media streams using predictive secondary streaming
US20120213294A1 (en) 2008-04-15 2012-08-23 Desktone, Inc. Media Acceleration for Virtual Computing Services
US20120239921A1 (en) 2000-02-03 2012-09-20 Realtime Data LLC DBA IXO Data Storewidth Accelerator
US20120242775A1 (en) * 2011-03-25 2012-09-27 Hon Hai Precision Industry Co., Ltd. Video conference device and method for using the same
US20130034146A1 (en) 2011-08-02 2013-02-07 Hyeonkuk Jeong Selection of encoder and decoder for a video communications session

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916737A (en) * 1988-11-14 1990-04-10 Teleglobe Pay-Tv System, Inc. Secure anti-piracy encoded television system and method
US20020097798A1 (en) * 2000-11-17 2002-07-25 Yehuda Manor System and method for coding and decoding
US20020191116A1 (en) * 2001-04-24 2002-12-19 Damien Kessler System and data format for providing seamless stream switching in a digital video recorder
US7599434B2 (en) * 2001-09-26 2009-10-06 Reynolds Jodie L System and method for compressing portions of a media signal using different codecs
US7480703B2 (en) * 2001-11-09 2009-01-20 Sony Corporation System, method, and computer program product for remotely determining the configuration of a multi-media content user based on response of the user
AU2002357144A1 (en) * 2001-12-15 2003-06-30 Thomson Licensing S.A. Quality of service setup on a time reservation basis
US9192859B2 (en) * 2002-12-10 2015-11-24 Sony Computer Entertainment America Llc System and method for compressing video based on latency measurements and other feedback
KR100703421B1 (en) * 2003-01-20 2007-04-03 삼성전자주식회사 Device and method for communicating moving picture using trasnscoding
WO2006081634A2 (en) * 2005-02-04 2006-08-10 Barco N.V. Method and device for image and video transmission over low-bandwidth and high-latency transmission channels
KR100729063B1 (en) * 2005-11-14 2007-06-14 주식회사 대우일렉트로닉스 Method for coding divx file in optical disc player
JP4585479B2 (en) * 2006-03-30 2010-11-24 株式会社東芝 Server apparatus and video distribution method
US7456760B2 (en) * 2006-09-11 2008-11-25 Apple Inc. Complexity-aware encoding
US7853969B2 (en) * 2007-04-03 2010-12-14 Google Inc. Log processing to determine impression values using reliable durations
US8683540B2 (en) * 2008-10-17 2014-03-25 At&T Intellectual Property I, L.P. System and method to record encoded video data
CN105791861B (en) * 2009-04-20 2018-12-04 杜比实验室特许公司 Orient interpolation and Data Post
US9942580B2 (en) * 2011-11-18 2018-04-10 At&T Intellecutal Property I, L.P. System and method for automatically selecting encoding/decoding for streaming media

Patent Citations (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070109156A1 (en) 1998-12-11 2007-05-17 Fallon James J Data compression system and methods
US20030191876A1 (en) 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US20120239921A1 (en) 2000-02-03 2012-09-20 Realtime Data LLC DBA IXO Data Storewidth Accelerator
US20070174209A1 (en) 2000-10-03 2007-07-26 Realtime Data Llc System and method for data feed acceleration and encryption
US20020080871A1 (en) 2000-10-03 2002-06-27 Realtime Data, Llc System and method for data feed acceleration and encryption
US7039116B1 (en) * 2000-11-07 2006-05-02 Cisco Technology, Inc. Methods and apparatus for embedding and format conversion of compressed video data
US6909745B1 (en) 2001-06-05 2005-06-21 At&T Corp. Content adaptive video encoder
US20100054344A1 (en) 2001-06-05 2010-03-04 At&T Corp. System and Method of Filtering Noise
US6970513B1 (en) 2001-06-05 2005-11-29 At&T Corp. System for content adaptive video decoding
US20100272173A1 (en) 2001-06-05 2010-10-28 At&T Intellectual Property Ii, L.P. Via Transfer From At&T Corp. Method of content adaptive video encoding
US7630444B1 (en) 2001-06-05 2009-12-08 At&T Intellectual Property Ii, L.P. System and method of filtering noise
US6968006B1 (en) 2001-06-05 2005-11-22 At&T Corp. Method of content adaptive video decoding
US7715475B1 (en) 2001-06-05 2010-05-11 At&T Intellectual Property Ii, L.P. Content adaptive video encoder
US7773670B1 (en) 2001-06-05 2010-08-10 At+T Intellectual Property Ii, L.P. Method of content adaptive video encoding
US7277485B1 (en) 2001-06-05 2007-10-02 At&T Corp. Computer-readable medium for content adaptive video decoding
US6810086B1 (en) 2001-06-05 2004-10-26 At&T Corp. System and method of filtering noise
US20030119515A1 (en) 2001-10-31 2003-06-26 Jan Holler Method and apparatus for auto-configuration for optimum multimedia performance
US20050047449A1 (en) 2003-07-17 2005-03-03 Dirk Adolph Individual video encryption system and method
US20050125838A1 (en) * 2003-12-04 2005-06-09 Meng Wang Control mechanisms for enhanced features for streaming video on demand systems
US20070171841A1 (en) 2004-03-04 2007-07-26 Andreas Witzel Method and node for selecting a codec type or configuration by extending the list comprising codecs for transcoder/tandem free operation by further codecs supported by the node
US20060025149A1 (en) 2004-07-28 2006-02-02 Jeyhan Karaoguz Quality-of-service (QoS)-based association with a new network using background network scanning
US20060146703A1 (en) 2004-12-16 2006-07-06 Samsung Electronics Co.; Ltd Dynamic quality-of-service mapping apparatus and method through hybrid monitoring in digital home service
US20120023522A1 (en) 2005-01-12 2012-01-26 Invidi Technologies Corporation Targeted impression model for broadcast network asset delivery
US20070022032A1 (en) 2005-01-12 2007-01-25 Anderson Bruce J Content selection based on signaling from customer premises equipment in a broadcast network
US20060227870A1 (en) * 2005-03-10 2006-10-12 Tao Tian Context-adaptive bandwidth adjustment in video rate control
US20090295905A1 (en) 2005-07-20 2009-12-03 Reha Civanlar System and method for a conference server architecture for low delay and distributed conferencing applications
US20070067704A1 (en) * 2005-07-21 2007-03-22 Mustafa Altintas Deinterleaver and dual-viterbi decoder architecture
US9077853B2 (en) 2005-09-07 2015-07-07 Vidyo, Inc. System and method for a conference server architecture for low delay and distributed conferencing applications
US20070230563A1 (en) * 2006-04-04 2007-10-04 Qualcomm Incorporated Adaptive encoder-assisted frame rate up conversion
US20080118227A1 (en) 2006-09-11 2008-05-22 Tivo, Inc. Personal content distribution network
US20090216897A1 (en) 2007-04-13 2009-08-27 Huawei Technologies Co., Ltd. Method and system for controlling streaming rates
US20090006104A1 (en) 2007-06-29 2009-01-01 Samsung Electronics Co., Ltd. Method of configuring codec and codec using the same
US20090052553A1 (en) * 2007-08-20 2009-02-26 Alcatel Lucent Device and associated method for concealing errors in decoded media units
US20090138614A1 (en) 2007-11-28 2009-05-28 Motorola, Inc. Method and apparatus for streaming media in a communication network
US20120213294A1 (en) 2008-04-15 2012-08-23 Desktone, Inc. Media Acceleration for Virtual Computing Services
US20100205049A1 (en) * 2009-02-12 2010-08-12 Long Dustin W Advertisement management for live internet multimedia content
US9009066B2 (en) * 2009-02-12 2015-04-14 Echostar Technologies L.L.C. Advertisement management for live internet multimedia content
US20100248643A1 (en) 2009-03-31 2010-09-30 At&T Intellectual Property I, L.P. Intelligent adaptive re-coding for improved communications resource utilization
US20100316066A1 (en) 2009-06-16 2010-12-16 Qualcomm Incorporated Managing video adaptation algorithms
US20110164111A1 (en) 2009-12-31 2011-07-07 Broadcom Corporation Adaptable media stream servicing two and three dimensional content
US20120059872A1 (en) * 2010-03-30 2012-03-08 International Business Machines Corporation Interactively Communicating A Media Resource
US20110302324A1 (en) 2010-06-04 2011-12-08 Jeyhan Karaoguz Customized delivery of content by a broadband gateway
US20120050616A1 (en) 2010-08-25 2012-03-01 Telefonaktiebolaget Lm Ericsson (Publ) Controlling streaming media responsive to proximity to user selected display elements
US8412842B2 (en) 2010-08-25 2013-04-02 Telefonaktiebolaget L M Ericsson (Publ) Controlling streaming media responsive to proximity to user selected display elements
US20120131627A1 (en) 2010-11-22 2012-05-24 Sling Media Pvt Ltd Systems, methods and devices to reduce change latency in placeshifted media streams using predictive secondary streaming
US9143825B2 (en) 2010-11-22 2015-09-22 Sling Media Pvt. Ltd. Systems, methods and devices to reduce change latency in placeshifted media streams using predictive secondary streaming
US20120242775A1 (en) * 2011-03-25 2012-09-27 Hon Hai Precision Industry Co., Ltd. Video conference device and method for using the same
US20130034146A1 (en) 2011-08-02 2013-02-07 Hyeonkuk Jeong Selection of encoder and decoder for a video communications session

Also Published As

Publication number Publication date
US20180227606A1 (en) 2018-08-09
US9942580B2 (en) 2018-04-10
US11589088B2 (en) 2023-02-21
US20210021878A1 (en) 2021-01-21
US20130128947A1 (en) 2013-05-23

Similar Documents

Publication Publication Date Title
US11589088B2 (en) System and method for automatically selecting encoding/decoding for streaming media
US11038944B2 (en) Client/server signaling commands for dash
US10455404B2 (en) Quality of experience aware multimedia adaptive streaming
TWI590632B (en) Video quality enhancement
US10045089B2 (en) Selection of encoder and decoder for a video communications session
US11094346B2 (en) Systems and methods for adaptive streaming of multimedia content
US9516078B2 (en) System and method for providing intelligent chunk duration
JP7438974B2 (en) Adaptive bitrate method for live broadcasting
US8837578B2 (en) MPEG-W decoder
MX2013004481A (en) Dynamic encode setting adjustment.
JP2004507985A (en) System and method for dynamically adaptively decoding scalable video to stabilize CPU load
US20140226711A1 (en) System and method for self-adaptive streaming of multimedia content
WO2015054833A1 (en) Method, apparatus and system to select audio-video data for streaming
US20170249120A1 (en) Sharing of Multimedia Content
US10356439B2 (en) Flexible frame referencing for display transport
CN116017004A (en) Method, system and computer program product for streaming

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

AS Assignment

Owner name: AT&T INTELLECTUAL PROPERTY I, L.P., GEORGIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FRYER, TODD ANDREW;IRVIN, DAVID;NICAS, NICK;REEL/FRAME:053654/0926

Effective date: 20111111

STPP Information on status: patent application and granting procedure in general

Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED

STCF Information on status: patent grant

Free format text: PATENTED CASE