As mentioned in the background, video content is among the most difficult content to reliably transmit over a communication channel that includes one or more wireless and/or communication links. The technical barriers of streaming video content are numerous, for example, shared/limited bandwidth, best effort delivery, transmission errors, dropped video frames, delays, out of sync video with voice, etc. A typical residential network (although this disclosure is not limited to only residential networks) may operate according to various industry standards for wired local area networks (LAN) and/or for wireless local area networks (WLAN). Such industry standards may include, but are not limited to, industry standards associated with or sponsored by the Institute for Electrical and Electronic Engineers (IEEE). These industry standards may enable the efficient exchange of types of data that is not timing sensitive. However, the components of a typical residential network (e.g., computing platforms, wireless APs, etc.) are not well suited or configured for types of data that is timing sensitive (e.g., streaming of video content including associated audio content) even when operating according to LAN or WLAN industry standards.
In one example, video content is streamed at a given bit-rate from a computing platform through a wireless AP and to a DMA that decodes the video content for display. A communication channel that is used to stream the video content to the digital media adaptor is monitored to collect information associated with the communication channel as at least a portion of the video content is streamed from the computing platform. Available bandwidth for the communication channel is determined based on the collected information. The given bit-rate another portion of the video content is streamed from the computing platform is adjusted based on the available bandwidth.
As shown in
In one example, transcoder/streamer logic 114 may transcode and stream the video content in compliance with one or more industry standards for transcoding and/or compressing images included in the video content. These industry standards may include, but are not limited to, the Motion Picture Expert Group (MPEG) standards published by the International Organization for Standardization (ISO)/International Electrotechnical Commission (IEC). The MPEG standards include: ISO/IEC 11172:1993, Information technology—Coding of Moving Pictures and Associated Audio for Digital Storage Media at up to about 1.5 Mbits/sec, published in 1993, and/or later versions (“MPEG-1”); ISO/IEC 13818:2000, Information technology—Generic Coding of Moving Pictures and Associated Audio Information, published in 2000, and/or later versions (“MPEG-2”); and ISO/IEC 14496:2004, Information technology—Coding of Audio-Visual Objects, published in 2004, and/or later versions (“MPEG-4”).
In one implementation, the video content is streamed via communication channel 140 to DMA 130. Communication channel 140, for example, includes communication links 142 and 144. In one implementation, communication links 142 and 144 may include duplex or two-way (transmit and receive) wired and wireless links. The video content, for example, is first forwarded over communication link 142 to wireless AP 120 and then forwarded from wireless AP 120 to DMA 130 over communication link 144.
In one example, wireless AP 120 includes network interface 122 to facilitate the streaming of video content received from computing platform 110 over communication link 142 and then to DMA 130 over communication link 144. Network interface 122, for example, includes or has access to Tx buffer 122A and Rx buffer 122B to at least temporarily store the video content as the video content is received from computing platform 110 and before it is forwarded to DMA 130. Wireless AP 120, for example, also includes proactive air management (PAM) logic 124. PAM logic 124, for example, includes features to monitor the streaming of the video content via communication channel 140, determine and/or estimate the available bandwidth to stream the video content via communication channel 140 and then indicate that available bandwidth for communication channel 140 to computing platform 110.
In one implementation, BFC 150 is established, maintained and used to communicate or indicate available bandwidth for communication channel 140. In one example, BFC 150 is established and maintained using either wired or wireless communication links between computing platform 110 and wireless AP 120. Although not shown in
In one example, once BFC 150 is established, it is used by PAM logic 124 to indicate available bandwidth to SQM logic 118. As shown in
In one implementation, the video content streamed to DMA 130 via communication channel 140 is received via communication link 144. In one example, DMA 130 includes network interface 132. Network interface 132, for example, includes or has access to receive (Rx) buffer 132A to at least temporarily store received video content. The received video content may then be forwarded to decoder logic 134. Decoder logic 134, for example, decodes or disassembles the packetized video content for display of the video content on one or more display devices. These display devices include, but are not limited to, plasma displays, liquid crystal displays (LCD), projection displays and cathode ray tube (CRT) displays. In one implementation, these types of displays may be part of a television or may be a monitor for a computing platform, although this disclosure is not limited to only displays in televisions or monitors.
In one example, DMA 130, as shown in
In one implementation, information including an indication to send more or different video content is at least temporarily stored at Tx buffer 132B included in and/or responsive to network interface 132. The information is then forwarded to wireless AP 120 over communication link 144. Tx buffer 112A and Rx buffer 122B, for example, at least temporarily store at least portions (e.g., one or more data packets) of the information at wireless AP 120 before it is forwarded on to computing platform 110 via communication link 142. At computing platform 110, for example, Rx buffer 116B at least temporarily stores the information as the information is then sent to transcoder/streamer logic 114. Transcoder/streamer logic 114, for example, transcodes and streams video content from memory 112 based at least in part on the information received from DMA 130. This streaming, for example, is at a given bit-rate that may be an adjustment to a previous given bit-rate. The given or adjusted bit-rate may also consider indications received from PAM logic 124 to determine adjustments to the bit-rate to stream the video content from computing platform 110.
In one example, PAM logic 124, monitors communication channel 140. As described more below, one or more features of PAM logic 124, for example, gather or collect information associated with the streaming of video content using communication channel 140. This associated information may include statistical information related to communication channel 140 and/or to certain aspects of transmit and receive portions of one or both communication links 142 and 144. The statistical information may also include network statistics, e.g., congestion, link bandwidth, peak/low traffic periods, constraining link(s), etc. Based on that collected information, the available bandwidth for communication channel 140 may be determined by features of PAM logic 124. That determination, for example, is communicated to computing platform 110 for an adjustment to the given bit-rate that video content is streamed from computing platform 110.
In one implementation, communication channel 240A also includes a wireless communication link 244A as depicted in
In one implementation, over the given measurement time, at least three categories of information are tracked by monitor feature 124A: Transmit (Tx), Receive (Rx) and Idle time. The Measurement Time shown in
In one example, additional information or statistics are obtained or collected by monitor feature 124A. This additional information or statistics may include a transmit byte count (“Tx_byte count”). A Tx_byte count, for example, may include a byte count of successfully transmitted packets of video content and/or other information to DMA 130. In one example, the Tx_byte count does not include retransmissions. The additional information or statistics may also include a receive (Rx) byte count (“Rx_byte count”). An Rx_byte count, for example, is a byte count of successfully received packets of video content and/or other information received from computing platform 110 over the measurement time (e.g., as mentioned above). In one example, the Rx_byte count does not include packet drops.
Monitor feature 124A, for example, obtains the Tx_byte count and the Rx_byte count by monitoring network interface 122 and/or Tx and Rx buffer 122A. Network interface 122 may also include a media access controller (not shown) that monitor feature 124A may also monitor and obtain Tx_byte and/or the Rx_byte counts.
In one implementation, PAM logic 124 activates bandwidth feature 124 to determine available bandwidth for communication channel 140 to stream video content to DMA 130. Bandwidth feature 124, for example, obtains the timing model and/or the additional information mentioned above that was collected by monitor feature 124A and determines the available bandwidth, additional communication channel capacity for communication channel 140, or head room on the channel in bits/sec for video content to be streamed on communication channel 140 to DMA 130.
In one example, available bandwidth can be calculated by first calculating the effective rate for each direction (Tx & Rx) for the measurement period by taking the sum of the number of data bytes successfully transmitted/received. This calculation, for example, estimates the rate that was achieved in the Measurement Time “T”. Examples of the effective Tx rate and Rx rate are shown in Table 1. Also, since “T” is in milliseconds and counts are in bytes the values are divided by 1000 and multiplied by 8 to achieve bit/sec units
The additional bandwidth (“Headroom_Rate” (bit/sec)) for communication channel 140, in this example, is then calculated by multiplying the Total Effective Rate (Effective_Tx_rate+Effective_Rx_rate) times the ratio of Idle_Time to Non_Idle_Time. An example of this calculation is shown in Table 2.
The Idle_time/Non_Idle_time in Table 2 above, for example, provides a de-rating factor and is used to more accurately determine what additional bandwidth can be achieved based on a performance of communication channel 140 to stream video content and to relay information between computing platform 110, wireless AP 120 and DMA 130. Additionally, for example, a tuning factor is also introduced to Non_Idle_Time that is used in the calculation shown in Table 2. An example of this tuning factor is shown in Table 3. This tuning factor, for example, possibly provides an even more accurate calculation of available bandwidth.
The Protocol_Seq_OH_Time in Table 3 above, for example is used to compensate for the air time used in the transmission and receive sequences of frames of streamed video content that is not captured by the Tx_Time and Rx_Time measurement. This, for example, may be needed due to protocol sequence overhead associated with a given communication protocol (e.g., IEEE 802.11, 802.3, etc.) that is used to transmit/receive packets of video content or information on communication channel 140 and/or communication links included in communication channel 140.
At block 420, in one example, monitoring feature 214A gathers, as described above, additional information or statistics that may include Tx_byte count and the Rx_byte count. Then at block 430, for example, PAM logic 124 activates bandwidth feature 124B. Bandwidth feature 124B, for example, obtains the timing model and/or the additional information mentioned above that was collected by monitor feature 124A and determines the available bandwidth, additional communication channel capacity for communication channel 140, or head room on the channel in bits/sec for video content to be streamed on communication channel 140 to DMA 130.
At block 440, in one example, PAM logic 214 activates communication feature 214C to report the calculated available bandwidth, additional communication channel capacity for communication channel 140, or head room on the channel in bits/sec for video content to be streamed on communication channel 140 to DMA 130. This reported information, for example is sent to computing platform 110. As described more below, this reporting occurs, for example, via BFC 150.
At block 450, in one example, PAM logic 214 determines whether video content is still streaming from computing platform 110. This determination may include, for example, an indication from computing platform 110 that video content is no longer being streamed and to stop monitoring communication channel 140. If no indications of stoppage are received, for example, the method moves back to block 410. If no packets have been transmitted within the given amount of time or an indication of stoppage is received the method is done until more or additional video content is streamed from a computing platform (e.g., computing platform 110) and through wireless AP 120.
In one implementation, the algorithm in Table 4 is implemented by the features of PAM logic 214 (e.g., monitor feature 214A, bandwidth feature 214B) to accomplish the method portrayed in the flow chart of
In
In one example, BFC ID Channel 550A is used for device discovery by the possible receivers of bandwidth information (e.g., computing platform 110 or other computing platforms). A user datagram protocol (UDP), multicast, message, for example, is transmitted from a given communication port (e.g., port A) at wireless AP 120 at regular intervals that are controlled by a programmable timer (not shown). This transmitted message is portrayed in
In
In
In one implementation, at point 610, ID state machine 600 depicts communicate feature 124C beginning at state A0—sa following a power-on initiation or a hard reset condition at wireless AP 120. Also in parallel to state A0—sa, for example, are two more states that are portrayed at point 710 as state A0—sb in
In one example, ID state machine 600 depicts a transition to state A1—sa at point 620 as a session socket “a” is opened. At point 620 and while in state A1—sa, communicate feature 124C sends or transmits an ID message (e.g., ID message 510) for computing platform 110 to identify wireless AP 120 as a provider of available bandwidth information. As shown at point 620, in one example, a timer may be initiated by communicate feature 124C to wait for a response to the transmit ID message. ID State machine 600, for example, at point 630 transitions to state A2—sa based on a response to the transmit ID message, processes the response and then transitions back to state A1—sa to transmit another ID message and wait for a response.
In one implementation, control state machine 700 depicts a transition to state A1—sb at point 720 as a session is opened at socket “b”. At point 720 and while in state A1—sb, for example, communicate feature 124C waits for a control message (e.g., control message 520) from computing platform 110. That control message, for example, includes information on what portions (e.g., links, Tx/Rx buffers, etc.) of communication channel 140 or other information (e.g., network statistics) are to be monitored and/or collected. As shown at point 720, in one example, communicate feature 124C transitions to state A2—sa to process the control message. At point 730, for example, the control message is processed and communicate feature 124C transitions back to state A1—sb.
In one implementation, control state machine 800 depicts a transition to state A1—sb at point 820 as a session is opened at socket “c”. At point 820 and while in state A1—sb, for example, communicate feature 124C waits for a control message as mentioned above. As shown at point 820, in one example, communicate feature 124C may transition to one of two states. These two states include state A0—sc at point 810 and A2—sa at point 830. At point 820, for example, communicate feature 124 receives a control message (e.g., control message 520) and forwards information to monitor feature 124B to make any necessary modification to what is monitored and/or collected. In one example, from point 820 communicate feature 124B may return to state A0—sc if a control message is received from computing platform 110 that indicates monitoring is to stop.
At point 830, for example, communicate feature 124C receives the results of any available bandwidth calculations completed by bandwidth feature 124B based on information gathered by monitor feature 124A. In one example, communicate feature 124C transitions to state A2—sa to generate a bandwidth message (e.g., bandwidth message 530). This bandwidth message, for example, is transmitted to computing platform 110 to indicate the available bandwidth for the computing platform to adjust the given bit-rate video content is streamed.
In one implementation, connect state machine 900 depicts a transition to state C1—sa at point 920 following a session socket “a” opening. At point 920, for example, communicate feature 118A may initiate or activate a timer. The timer may be set for a given time for which communicate feature 118A will wait for an ID message (e.g., ID message 550A) from wireless AP 120. If no ID message is received, for example, communicate feature 118A transitions back to state C0—sa and the session socket “a” is closed.
In one example, at point 930, communicate feature 118A receives the ID message and responds by generating a control message (e.g., control message 550B). Based on this response, communicate feature 118A transitions to state C2—sb. At point 940, for example, communicate feature 118A transitions to state C3—sc and waits to receive a bandwidth message (e.g., bandwidth message 530) from wireless AP 120. This waiting, for example, may include the initiation of a timer. If the time expires before receiving a bandwidth message, for example, communicate feature 118A closes a session socket “c” that was previously opened by wireless AP 120 (see
At point 950, in one example, a bandwidth message is received before the timer expires and communicate feature 118A transitions to state C4—sc to process the information in the bandwidth message. Communication feature 118A, for example, may relay or make available that information to adjustment feature 118B. Adjustment feature 118B, for example, may cause transcoder/streamer logic 114 to adjust the given bit-rate that video content is streamed from computing platform 110 based on that information.
At point 960, in one example, communicate feature 118A transitions to state C5—sc and at this state checks for an indication to end or stop communications with wireless AP 120 via the communication channels included in BFC 150. A shut down flag, for example, serves as an indication to stop communications if this is the case. In one example, if the shut down flag is asserted then communicate feature 118A takes this as an indication to end communications. If the shut down flag is not asserted, for example, communicate feature 118A transitions back to state C3—sc and waits for additional bandwidth messages. In another example, communicate feature 118A may transition all the way back to state C0—sa if computing platform 110 and/or SQM logic is reset or communications are interrupted with wireless AP 120.
In one implementation, disconnect state machine 1000 in
In one implementation, field 1110 includes a wireless AP's unique identifier or serial number. This unique identifier, for example, is a given 64-bit identifier that is associated with a given wireless AP (e.g., wireless AP 120) and is used for receivers of ID message 510 (e.g., computing platform 110) to uniquely identify that wireless AP to these receivers. In one example, the first 32-bits of the 64-bit identifier are placed in dword 0 and the second 32-bits are placed in dword 1. This 64-bit identifier may be assigned by the wireless AP manufacturer or may be assigned by a network administrator or other entity as the wireless AP is activated.
In one example, field 1120 includes information to indicate the packet size or structure for ID messages. For example, field 1120 indicates the number of dwords included in an ID message in the format of message format 1100. Field 1130, in one example, includes sub-fields 1132, 1134 and 1136. These sub-fields include type, protocol (e.g., UDP, TCP, etc.) and version, information to initiate or open a socket session with the given wireless AP. For example, a socket session is opened between computing platform 110 and wireless AP 120 to establish BFC ID channel 550A based, at least in part, on the information in sub-fields 1132, 1134 and 1136.
In one implementation, field 1140 includes information to indicate a port via which bandwidth messages are transmitted from the wireless AP. Field 1150, for example, includes a network address (e.g., an Internet Protocol (IP) address) for the wireless AP. In one example, computing platform 110 uses this port information to maintain another socket session for BFC data channel 550C.
In one implementation, field 1210 includes the same identifier information that was included in field 1110 of an ID message in the format of message format 1100. In one example, field 1220 includes information to indicate the packet size or structure for a control message. For example, field 1220 indicates the number of dwords included in a control message in format of message format 1200.
In one example, field 1230, includes sub-fields 1232 and 1234. Sub-field 1232, for example, includes information to indicate the type of control message. Types of control messages may include types that indicate to a wireless AP to either add or delete portions of communication channel 140 to monitor (e.g., add or delete communication links to monitor). In one example, sub-field 1232 may also include an identifier for a computing platform to associate any bandwidth information received with a given control message. This identifier, for example, may be included by a wireless AP in any bandwidth messages sent in response to the given control message. Sub-field 1234, for example, includes information to indicate the version of the protocol to use to decode or interpret control messages.
In one implementation, field 1240 includes information or data to indicate to a wireless AP what is to be monitored. For example, field 1240 may include information associated with a communication link(s) in a communication channel. Communication link information, for example, may include media access controller (MAC) address information for a source of video content (e.g., transmitter) on a communication link and MAC address information for a destination (e.g., receiver). For example, communication link 142 in communication channel 140 (see
In one implementation, field 1310 includes the same identifier information that was included in field 1110 of an ID message in the format of message format 1100. In one example, field 1320 includes information to indicate the packet size or structure for a bandwidth message. For example, field 1320 indicates the number of dwords included in bandwidth message in the format of message format 1300.
In one example, field 1330 includes sub-fields 1332 and 1334. Sub-field 1332, for example, includes information to indicate what control request the bandwidth information is associated with as mentioned above when describing message format 1200 and sub-field 1232. Sub-field 1334, for example, includes information to indicate the version of the protocol to use to decode or interpret bandwidth messages.
In one implementation, field 1340 includes sub-fields 1342 and 1344. In one example, sub-fields 1342 and 1344 contain information to determine the measurement time that a wireless AP has monitored a given communication channel. For example, sub-field 1342 includes a start time stamp for the monitoring and sub-field 1344 includes a stop time stamp for the monitoring.
In one example, field 1350 includes communication channel information. For example, field 1350 may include information to indicate that a given communication link in the monitored communication channel is having the biggest impact on available bandwidth, e.g., has lower available bandwidth when compared to other communication links. Thus, for example the given communication link is a constraining communication link for the communication channel.
In one example, field 1360 includes bandwidth information. For example, bandwidth information that was calculated as described in
In one implementation, as mentioned previously, wireless AP 120 may transmit an ID message at regular intervals. In one example, PAM logic 124 of wireless AP 120 activates communicate feature 124C. Communicate feature 124C, for example, generates or assembles an ID message in the format of message format 1100 and transmits it as a multicast message to any device that may establish a communication channel through wireless AP 120.
Communicate feature 118A, for example, receives the ID message and generates or assembles a control message in the format of message format 1200. This control message, for example, may include information to monitor communication link 142 in communication channel 140. In one example, communication channel 140 is used to stream video content from computing platform 110 to DMA 130 for the video content to be displayed. In one example, a control message is sent at regular intervals to indicate to wireless AP 120 what to monitor and/or what to continue to monitor as the video content is streamed.
In one example, communicate feature 124C of PAM logic 124 receives the control message and PAM logic 124 activates monitor feature 124A and bandwidth feature 124B. Monitor feature 124A, for example, begins to monitor communication link 142 and relays information at regular intervals (e.g., measurement intervals) to bandwidth feature 124B. At each interval, for example, bandwidth feature 124B calculates available bandwidth on communication link 142 based on the information relayed from monitor feature 124A. Communicate feature 124C, for example, generates and transmits a bandwidth message in the format of message format 1300 to indicate the available bandwidth.
In one example, communicate feature 118A of SQM logic 118 receives the bandwidth message and relays or makes available the available bandwidth information to adjustment feature 118B. Adjustment feature 118B, for example, based on the available bandwidths, determines if the bit-rate to stream the video content is to be adjusted and indicates any adjustments needed to transcoder/streamer logic 114.
At event 2, in one example, transcoder/streamer logic 114 receives an indication or determines that it needs available bandwidth information for another communication link in communication channel 140, for example, communication link 144 between wireless AP 120 and DMA 130. Transcoder/streamer logic 114 may indicate this additional communication link to communicate feature 118A. Communicate feature 118A, for example, generates and transmits a control message in the format of message format 1200 that includes information to request that available bandwidth information be provided for both communication link 142 and communication link 144. Communicate feature 124C in PAM logic 124 receives and relays that information to bandwidth feature 124B and monitor feature 124A. Both communication links 142 and 144 are monitored, and the same process as described above for determining and reporting available bandwidth as described for event 1 is followed.
At event 3, in one example, streaming of the video content is stopped or is complete. Transcoder/streamer logic 114, for example, indicates this stoppage to SQM logic 118. SQM logic 118 directs communicate feature 118A to stop transmitting control messages to wireless AP 120. In one example, a control message is generated and sent by communication feature 118A to indicate to PAM logic 124 to stop monitoring or collecting information. PAM logic 124, for example, indicates to monitor feature 124A to stop monitoring or collecting information on communication channel 140.
In one example, computing platform 110A is a media server that includes a large amount of storage capacity to store video content (temporarily or longer periods) that is received from elements coupled to residential network 1500. Computing platform 110B, for example, is a media gateway or hub that at least temporarily stores video content that is received from other media devices such as digital video recorder (DVR) 1516, digital video disc (DVD) player 1514, video cassette recorder (VCR) 1512 or from other computing platforms such as computing platform 110C. Computing platform 110C, for example, is a set top box that also at least temporary stores video content. This video content stored at computing platform 110C, for example, is received via communication channel 1502. In one example, communication channel 1502 includes a cable television feed, a satellite television feed or a fiber-optic television feed. This disclosure is not limited to only to the above mentioned types of computing platforms, in other examples a computing platform may be a desktop computer, a laptop computer, a notebook computer, other types of servers, a digital broadband telephony device, a personal digital assistant (PDA) and the like.
In one example, network elements 1520 include components or devices to interconnect other devices in residential network 1500. Network elements 1520 and other components interconnected within residential network 1500 may also receive/transmit data and/or other media content via the Internet through communication channel 1501. In one example, communication channel 1501 is a broadband Internet connection (e.g., cable, fiber-optic, digital subscriber line, broadband wireless, etc.). In this example, residential network 1500 is coupled to the Internet via communication channel 1501 through modem 1526.
In one implementation, modem 1526 couples to switch/router 1522 and this enables devices in residential network 1500 that are interconnected via switch/router 1522 to access the Internet. For example, Voice over Internet Protocol (VoIP) adaptor 1524 makes Internet-based voice calls, computing platforms 110A, 110B and 110C can receive video content, and data device 1550 (e.g., a notebook, desktop, laptop computer, PDA, etc) can receive/transmit data via an interconnection with wireless AP 120 through communication link 1545. Voice device 1560, for example, can make voice calls with or without the use of VoIP adaptor 1524 via an interconnection with wireless AP 120 through wireless communication link 1546.
In one implementation,
In one example, video content can be streamed from computing platforms 110B and 110C using one of four communication channels. A first communication channel, for example, includes a wireless communication link 1542 between computing platform 110B and wireless AP 120 and then includes wireless communication link 1544 to DMA 130. A second communication channel, for example, is depicted in
In one implementation, wireless AP 120 may establish and maintain a BFC channel (not shown in
Reference is made again to the types of memory depicted in
Reference is also made to the types of logic depicted in
In one example, machine-readable instructions can be provided to the types of logic depicted in
In the previous descriptions, for the purpose of explanation, numerous specific details were set forth in order to provide an understanding of this disclosure. It will be apparent that the disclosure can be practiced without these specific details. In other instances, structures and devices were shown in block diagram form in order to avoid obscuring the disclosure.
References made in this disclosure to the term “responsive to” are not limited to responsiveness to only a particular feature and/or structure. A feature may also be “responsive to” another feature and/or structure and also be located within that feature and/or structure. Additionally, the term “responsive to” may also be synonymous with other terms such as “communicatively coupled to” or “operatively coupled to,” although the term is not limited in his regard.