Adaptive bitrate streaming for wireless video

Techniques related to adaptive bitrate streaming for wireless video are discussed. Such techniques may include determining candidate bitrates for encoding segments of a source video. A minimum of the candidate bitrates may be selected and a segment of the source video may be encoded based on the selected encoding bitrate. The encoded bitstream may be transmitted wirelessly from a transmitting device to a receiving device, which may decode the bitstream and present the decoded video to a user.

BACKGROUND

Streaming video content (e.g., content from the Internet, locally saved content, or the like) from a mobile device to a television via wireless display technology is becoming increasingly popular. For example, a Wi-Fi communications channel may be used to implement Wireless Display (WiDi) and/or Miracast technology to enable users to stream videos, movies, photos, or displayed content from a mobile device to a television.

In some implementations, wireless channel capacity may not be a bottleneck or concern when transmitting video content over a wireless channel. However, streaming video content at an unnecessarily high encoding bit rate via wireless channel may cause several problems such as wasting wireless bandwidth, causing interference in the environment of the transmission, and reducing the battery life of mobile device streaming the video content. In particular, the reduced battery life may be dramatic and may degrade the user experience for a user of the mobile device and/or television. In other implementations, wireless channel capacity may be a concern and streaming video content at a lower bitrate may be advantageous for the utilization of the wireless communications channel.

Current WiDi/Miracast solutions may set a fixed relatively high video encoding bitrate (e.g. an average encoding bit rate of about 9 megabits per second (Mbps) and a max encoding bit rate of about 12 Mbps for 1920×1080 resolution video) to guarantee the transmission will not degrade the quality of the source content (e.g., the content on the transmitting device) no matter what video content is streamed. Such techniques may cause short battery life during WiDi/Miracast video streaming. Solutions have been proposed to reduce the encoding bitrate, but such solutions may not ensure quality video or quality of user experience at the receiving display device (e.g., a television).

As such, existing techniques do not provide wireless streaming of video content with a reduced bitrate to enhance batter life at the transmitting device (e.g., a mobile device) and high quality video presentment at the receiving device (e.g., a television). Such problems may become critical as the desire to transmit video content from a transmitting device for presentment of high quality, aesthetically pleasing video content at a receiving device becomes more widespread.

DETAILED DESCRIPTION

Methods, devices, apparatuses, computing platforms, and articles are described herein related to encoding video content for wireless transmission and, in particular, to selecting an encoding bitrate for encoding the video content.

As described above, it may be advantageous to stream video content such as a source video (e.g., content from the Internet, locally saved content, or the like) from a mobile device to a television via wireless display technology. For example, such a system may provide users flexibility in presenting and sharing content. Also as discussed, some existing techniques may provide for fixed relatively high encoding bitrates that may decrease battery life at the transmitting device and/or cause overuse or strain on the wireless communications channel. Other existing techniques may reduce encoding bitrates at the cost of decreased video quality that reduces a user's experience.

In some embodiments discussed herein, encoding video content for wireless transmission may include determining multiple candidate bitrates for encoding a segment of source video. For example, the candidate bitrates may be candidate bitrates for encoding the source video based on a local codec (e.g., a local video codec used by the transmitting device for encoding and the receiving device for decoding). The local codec may be any suitable codec such as a codec based on the H.264/MPEG-4 Advanced Video Coding (AVC) standard or the High Efficiency Video Coding (HEVC) standard or the like. A minimum of the candidate bitrates may be selected for encoding the segment and the segment may be encoded based on the local video codec and the selected bitrate. The resultant encoded bitstream may be transmitted to a receiving device for decoding and eventual presentment to a user.

In some examples, a first candidate bitrate may be determined based on a bitrate of the source video modified by a scaling factor. For example, the source video may be a compressed source video that has been compressed based on a video codec associated with the source video. The video codec used to compress the source video may be any suitable codec such as MPEG-2, H.264/MPEG-4 AVC standard, the HEVC standard, the Audio Vide Standard (AVS), the Windows Media Video codec, or the like. For example, the local video codec and the video codec associated with the compression of the source video may be different. A bitrate associated with the compressed source video may be determined (e.g., via an application programming interface or the like) and the determined bitrate may be modified by a scaling factor to generate the first candidate bitrate. The scaling factor may be an adaptive scaling factor based on the video codec associated with the compressed source video and the local codec.

Furthermore, a second candidate bitrate may be determined based on an average bitrate for either the segment encoded using the local codec or a previously encoded segment (e.g., a previous segment in the source video encoded using the local codec). In some examples, a previously encoded segment may be used to generate a candidate bitrate for a subsequent segment (e.g., a current segment). Such examples may provide low latency and substantially real-time encoding bitrates for encoding and transmitting the source video. In other examples, the segment itself may be encoded (e.g., based on a prior target bitrate, a default bitrate, or based on another encoding parameter) and a candidate bitrate may be determined for the segment. In such examples, after determining a selected encoding bitrate from the candidate bitrates, the segment may be encoded (again) based on the selected bitrate. Such examples may provide for increased accuracy in selecting the encoding bitrate at the cost of potential latency issues in transmitting the video content to the receiving device.

In some examples, a third candidate bitrate may be determined based on an encoding bitrate prediction for the segment encoded using the local codec or a previously encoded segment (e.g., a previous segment in the source video encoded using the local codec). The encoding bitrate prediction may be based on the encoded bitstream of the segment or the previously encoded segment, a selected desired mean opinion score (MOS; e.g., a measure of a user's view of quality), selected minimum and maximum bitrate boundaries, and quality coefficients associated with the receiving device (e.g., based on the resolution of the receiving device or the like). The encoding bitrate prediction may provide a non-reference MOS based bitrate prediction for encoding the segment. As discussed with respect to the second candidate bitrate, the encoding bitrate prediction may be based on an encoding the segment itself or based on an encoding of a previous segment of the video content.

A selected encoding bitrate for the segment may be determined as a minimum of the first, second, and third candidate bitrates. Furthermore, the segment may be encoded using the local video codec and based on the selected encoding bitrate. The resultant bitstream may be wirelessly transmitted to a receiving device, which may decode the bitstream to generate video frames for presentment to a user. Such techniques may provide for reduced bitrates for transmitting the video content, which may save battery life at the transmitting device. Furthermore, the techniques discussed herein may provide for high quality video with a lower encoding bitrate and lower required wireless bandwidth and improve WiDi/Miracast performance robustness under interference, thereby improving the user's experience during video streaming.

FIG. 1is an illustrative diagram of an example system100for wirelessly transmitting video content, arranged in accordance with at least some implementations of the present disclosure. As shown inFIG. 1, system100may include a transmitting device101and a receiving device102communicatively coupled via wireless communications channel103. In some examples, transmitting device101may transmit, via wireless communications channel103, encoded video data to receiving device102. Receiving device102may receive the encoded video data, decode it to generate video frames or the like, and present the decoded video to a user. Although illustrated with a single transmitting device101and a single receiving device102communicating via a single wireless communications channel103, any number or transmitting devices, receiving devices, and/or wireless communications channels may be employed in system100.

In the illustrated example, transmitting device101is a tablet and receiving device102is a television. However, any combination of suitable devices may be implemented via system100. For example, transmitting device101may include any suitable device such as a computer, a laptop, an ultrabook, a smartphones, a tablet, or the like. Furthermore, receiving device102may include any suitable device such as a television, a smart television, a computer, a laptop, an ultrabook, a smartphone, a tablet, or the like. In some examples, receiving device102may be a set-top box or a digital recorder or the like. In such examples, receiving device102may not include a display, but receiving device102may be coupled to a display for presentment of video content. In any case, transmitting device101and/or receiving device102may be described as a computing device as used herein. Furthermore, the video content transmitted from transmitting device101to receiving device102may include any suitable video content such as a video or other content downloaded to transmitting device101via the Internet or a local area network or the like, a video file or video container or other video content saved on a local memory of transmitting device, a streaming of video data or other images emulating the display of transmitting device101(e.g., receiving device102may mirror content displayed via transmitting device101), photographs streamed from transmitting device101to receiving device102, or the like. In some examples, receiving device102and transmitting device101may present the same content to a user or users and, in other examples, they may present different content.

Wireless communications channel103may be any suitable wireless link and communications may be facilitated via any suitable protocol(s) or standard(s). In some examples, wireless communications channel103is a Wi-Fi connection based on an Institute of Electrical and Electronics Engineers (IEEE) 802.11 standard such as 802.11a/b/g/n/ac/ad or the like. In other examples, wireless communications channel103may be based on an implementation of a Wi-Fi Multimedia (WMM) interoperability standard. In yet further examples, wireless communications channel103may provide communications based on wireless display (WiDi) technology and/or based on implementation of a wireless screen casting standard such as a Miracast standard using Wi-Fi direction connections. In an embodiment, wireless communications channel103is part of a wireless local area network (WLAN).

As discussed herein, it may be advantageous, even in instances where the bandwidth of wireless communications channel103is not a bottleneck or a concern, to limit the bitrate for transmitting video content from transmitting device101to receiving device102. For example, such bandwidth limitation may preserve a battery life of transmitting device101. Techniques discussed herein may reduce the bitrate of transmitted video while providing a desirable video quality and/or quality of experience (QoE) for a user of system100.

For example, the techniques discussed herein may evaluate a source video's content information (e.g. bitrate, resolution, temporal complexity, or the like) and display information associated with receiving device102based on a non-reference (NR) mean opinion score (MOS) bitrate prediction tool or module to reduce the required video encoding bitrate differently for different video content while achieving a certain desired video quality.

FIG. 2illustrates an example system200for encoding video content for wireless transmission, arranged in accordance with at least some implementations of the present disclosure. In some examples, system200may be implemented as a portion of transmitting device101. As shown inFIG. 2, system200may include a decoder202, an encoder203, an encoding bitrate prediction module204, a segment average bitrate determination module205, an encoded source video based bitrate determination module206, and a bitrate selection module207. As shown, system200may receive, obtain or contain (e.g., via memory), source video201. Also as shown, in some examples, system200may receive, obtain or contain multiple source videos including source video201and source video221. Although illustrated with two source videos201,221, any number of source videos may be provided. As is discussed further herein, in some examples, source video201and source video221may have been compressed with different video codecs. Herein, the discussion of source video will use source video201for exemplary purposes; however, the discussed techniques may be used with source video221or the like. Source video201may include any suitable video content, such as those discussed herein, for transmission to receiving device102obtained via any suitable manner, such as downloading via the Internet, as saved in memory, via a video media device, or the like. As discussed, source video201may be compressed video content such that source video201was compressed via a video codec. The video codec used to compress source video201may be described as a video codec associated with the source video. In various examples, the video codec associated with the source video may be based on the H.264/MPEG-4 AVC standard, the HEVC standard, the Audio Vide Standard (AVS), the Windows Media Video codec, or any other suitable standard. In some examples, source video201may be a video file or a container or the like.

As shown, decoder202may receive source video201or a portion thereof. Decoder202may decode source video201based on the video codec associated with the source video and decoder202may transfer the decoded video content or a decoded portion of the video content to encoder203. Encoder203may receive the decoded video content or the decoded portion of the video content. Encoder203may encode a segment of the decoded video content to generate encoded segment (ES)208(e.g., an encoded bitstream for the segment of source video201). The segment of source video201may be any suitable portion of source video201having any number of frames such as 1 to 100 frames, 1 to 300 frames, or the like, or any time duration of source video201such as 1 to 3 seconds or the like. As discussed, encoder203may encode the decoded video content based on a local video codec (e.g., such that transmission of the video content may be based on the local video codec between transmitting device101and receiving device102). The local video codec may be determined in any suitable manner such as a negotiation between transmitting device101and receiving device102, a predetermined codec, a codec based on a standard (e.g., WiDi and/or Miracast), or the like. For example, decoder202may decode source video201based on a first video codec (e.g., a video codec associated with source video201) and encoder203may encode the decoded video content (or a segment thereof) based on a second video codec (e.g., a local video codec). In such a manner, decoder202and encoder203may provide a transcoding of source video201from one compression format to another compression format. Furthermore, in some examples, encoded segment208may also be provided as a portion of bitstream216(e.g., as a portion of a resultant bitstream for transmission to receiving device102).

Encoding bitrate prediction module204may receive encoded segment208(e.g., a bitstream for an encoded segment of source video201), a maximum bitrate and a minimum bitrate (max, min bitrates)209, a mean opinion score (MOS)210, and display data211. For example, maximum and minimum bitrates209may be preset by a compression and/or transmission standard or protocol, preset by a system developer, or heuristically determined by system200, or the like. Maximum and minimum bitrates209may be any suitable bitrates that provide boundaries for transmission of quality video and limits on bandwidth used for transmission. For example, the maximum bitrate may be 10 Mbps, 15 Mbps, 20 Mbps, or the like, and the minimum bitrate may be 1 Mbps, 2 Mbps, 5 Mbps, or the like.

Furthermore, MOS210may be any suitable mean opinion score and may be preset by a compression and/or transmission standard or protocol, preset by a system developer, heuristically determined by system200, or set by a user or the like. For example, a user may select a subjective quality selection (e.g., high, medium, or low quality) based on a user interface presented to the user such as a slider bar or the like, which may be translated to a MOS. For example, MOS210may be 3.5, 4.0, 4.5, or 5.0 or the like.

Display data211may be any suitable display data representative of a quality and/or resolution of a display of receiving device102. In some examples, display data211may be one or more display quality coefficients based on the display of receiving device102. For example, a request for display information may be transmitted from transmitting device101to receiving device102via wireless communications channel103. Receiving device102may reply via wireless communications channel103to transmitting device101with display information including, for example, a resolution of the display, model numbers or other data associated with receiving device102, or the like. In an embodiment, receiving device102may be a WiDi sink and the display information may be communicated via a real time streaming protocol (RTSP; e.g., a network control protocol designed for controlling streaming media devices). System200may receive the display information and may determine, using a look up table for example, display data211. For example, display data211may include one or more receiving device dependent display quality coefficients. Such receiving device dependent display quality coefficients may approximate a display quality of receiving device102, for example. In some examples, system200may receive such device dependent display quality coefficients directly from receiving device102(e.g., such that a local look up table or similar technique is not needed).

Encoding bitrate prediction module204may, based on encoded segment208, maximum and minimum bitrates209, MOS210, and/or display data211, determine an encoding bitrate prediction for either encoded segment208or a segment of source video201subsequent to encoded segment208. The generated encoding bitrate prediction may be provided to bitrate selection module207as candidate bitrate (CBR)212. In some examples, encoding bitrate prediction module204of system200may generate candidate bitrate212for a current segment of source video201based on a previously encoded segment of source video201. In other examples, encoding bitrate prediction module204of system200may generate candidate bitrate212for a current segment of source video201based on a previous encoding of the current segment itself. In such examples, the current segment may be encoded (e.g., encoded a second time) based on a selected encoding bitrate (e.g., selected encoding bitrate215). Such examples may provide for more accurate bitrate selection at the cost of potential latency in transferring portions of bitstream216. In examples where candidate bitrate212for a current segment of source video201is based on a previously encoded segment, improved latency may be provided at the cost of potentially less accurate bitrate selection.

In either case, encoding bitrate prediction module204may determine candidate bitrate212based on a bitstream analysis of encoded segment208that may provide segment bitstream parameters such as, for example, an average bits per pixel of encoded segment208, an average quantization parameter of encoded segment208, an encoding frame rate of encoded segment208, an encoding video height of encoded segment208, or the like. Furthermore, candidate bitrate212may be based on the predetermined mean opinion score (e.g., MOS210), the predetermined maximum and minimum bitrates (e.g., maximum and minimum bitrates209), and the display quality coefficient(s) associated with receiving device102(e.g., display data211). For example, a temporal complexity may be determined based on encoded segment208using any suitable techniques. The temporal complexity, the display data, and the segment bitstream parameters may be provided to a pre-trained bitrate prediction model, which may generate candidate bitrate212. Details for an example determination of candidate bitrate212are discussed herein below with respect toFIG. 3

Also as shown inFIG. 2, segment average bitrate determination module205may receive encoded segment208. Segment average bitrate determination module205may determine an average bitrate for encoded segment208and may provide the average bitrate as candidate bitrate (CBR)213to bitrate selection module207. In an embodiment, candidate bitrate213is the number of bits in encoded segment208divided by the playback time represented by encoded segment208. In another embodiment, candidate bitrate213(e.g., the average bitrate for encoded segment208) is the number of bits in encoded segment208divided by the number of pixels represented by encoded segment208. As with respect to encoding bitrate prediction module204, candidate bitrate213may be determined based on encoded segment208for a subsequent segment of source video201or for encoded segment208itself.

As shown, encoded source video based bitrate determination module206may receive source video201or a portion thereof. Encoded source video based bitrate determination module206may determine a candidate bitrate (CBR)214based on the received encoded source video201. For example, encoded source video based bitrate determination module206may determine a bitrate for the encoded source video and modify the determined bitrate by a scaling factor to generate candidate bitrate214. As discussed, the encoded source video (e.g., source video201or a portion thereof) may be encoded based on a video codec that is different than the video codec used to encode bitstream216for transmission to receiving device102. In an example, the bitrate of the encoded source video may be determined by system200using an application programming interface that may access the encoded video content to determine its bitrate. The determined bitrate may be modified by a scaling factor (e.g., multiplied by a scaling factor). For example, the scaling factor may increase or decrease the determiend bitrate to determined candidate bitrate214. The scaling factor may be any suitable scaling factor for determining candidate bitrate214. In some examples, the scaling factor may be in the range of 50% to 75%, 75% to 125%, 90% to 100%, 125% to 150%, or 175% to 225% or the like.

In some examples, the scaling factor may be adaptive based on the codec associated with the encoded source video (e.g., the codec previously used to encode the compressed source video201) and the codec used to encode bitstream216(e.g., the local codec used by the transmitting device101and the receiving device102). In some examples, candidate bitrate214may provide a minimum bitrate required to encode source video201,221, such that the local video codec will produce equal or better quality than that of source video201,221. In some examples, the scaling factor may be determined based on a difference (e.g., a capability difference) between the codec previously used to encode the source video and the codec used to encode bitstream216. For example, if source video201has been compressed based on MPEG-2 at 12 Mbps, candidate bitrate214may only need to be 6 Mbps if the local codec is a H.264. In such examples (e.g., a source video codec of MPEG-2 and a local codec of H.264) the scaling factor may therefore be about 50% or 60% or the like. Such a scaling factor may be provided because the local codec, H.264 in this example, is more efficient codec than MPEG-2 with the same encoding features. Furthermore, if the local codec and the source video codec use the same codec, candidate bitrate214may still be modified based on, for example, different features used by the codecs. For example, a codec may enable I-frames only for archiving, I- and P-frames for real-time streaming, or I-, P-, and B-frames for high quality, or the like. For example, a source video compressed in H.264 at 6 Mbps with B-frames (e.g., I-, P-, and B-frames) may need a bitrate of about 12 Mbps for coding based on a local codec without B frames (e.g., either with I- and P-frames or I-frames only). In such an example, the scaling factor may therefore be about 200% or the like. Other combinations may be available. Using the techniques discussed herein, a candidate bitrate for source video201(e.g., candidate bitrate214in a first instance) and a candidate bitrate for source video221(e.g., candidate bitrate214in a second instance) may thereby be different. As such, the scaling factor may be adaptive based on the video codec used to compress source video such as source video201, source video221or the like.

As shown inFIG. 2, bitrate selection module207may receive candidate bitrates212,213,214and bitrate selection module207may select selected encoding bitrate215for encoding a segment (e.g., either the segment associated with encoded segment208or a subsequent or different segment, as discussed). For example, bitrate selection module207may select a minimum bitrate from candidate bitrates212,213,214as selected encoding bitrate215. In an embodiment, bitrate selection module207may select the minimum bitrate using a switch217as illustrated inFIG. 2. For example, switch217may be connected based on a minimum of candidate bitrates212,213,214to transmit the minimum as selected encoding bitrate215.

Encoder203may receive selected encoding bitrate215and may encode decoded source video content based on selected encoding bitrate215to generate bitstream216, which may be provided to receiving device102. As discussed, receiving device102may receive bitstream216and receiving device102may decode bitstream216to generate video frames for presentment to a user. Encoder203may encode any portion of decoded source video content based on selected encoding bitrate215. In an embodiment, encoder203may encode source video content associated with encoded segment208based on selected encoding bitrate215. In another embodiment, encoder203may encode source video content associated with another segment of source video201based on selected encoding bitrate215. For example, the segment encoded based on selected encoding bitrate215may be a subsequent segment with respect to encoded segment208. In some embodiments, all of or a remainder of source video201may be encoded based on selected encoding bitrate215.

FIG. 3illustrates an example system300for encoding video content for wireless transmission, arranged in accordance with at least some implementations of the present disclosure. In some examples, system300may be implemented as a portion of transmitting device101. As shown inFIG. 3, system300may include decoder202, encoder203, encoding bitrate prediction module204, segment average bitrate determination module205, encoded source video based bitrate determination module206, bitrate selection module207, a mean opinion score module301, a maximum and minimum bitrate module302, and a display information module303. Furthermore, display information module303may include a display parameters module304and a display quality coefficients look up table (LUT)305, encoding bitrate prediction module may include a function modeling module306, a bitstream analysis module307, a temporal complexity module308, and a bitrate prediction module309, segment average bitrate determination module205may include a bitstream analysis module310and a segment averaging module311, and encoded source video based bitrate determination module206may include a source video bitrate module and a scaling factor modification module313.

As shown, decoder202may receive source video201and/or source video221or a portion or portions thereof and decoder202may decode source video201based on the video codec associated with the source video and transfer the decoded video content or a decoded portion of the video content to encoder203. Encoder203may receive the decoded video content or the decoded portion of the video content and encoder203may encode a segment of the decoded video content to generate encoded segment (ES)208. Details associated with source video201, source video221, decoder202, encoder203, and encoded segment208have been discussed with respect toFIG. 2and will not be repeated for the sake of brevity.

Also as shown, mean opinion score module301may determine, store, and/or transmit MOS210, which may include any suitable information as discussed herein. For example, mean opinion score module301may provide functionality (e.g., via an application programming interface or the like) for a system developer and/or a user to adjust MOS210and/or a memory for storing a current MOS. Similarly, maximum and minimum bitrate (max, min bitrate) module302may determine, store, and/or transmit maximum and minimum bitrates (max, min BRs)209, which may include any suitable information as discussed herein. For example, maximum and minimum bitrate module may provide functionality (e.g., via an application programming interface or the like) for a system developer and/or a user to adjust maximum and minimum bitrates209and/or a memory for storing a maximum and minimum bitrates (max, min BRs)209.

As shown, bitstream analysis module307of encoding bitrate prediction module204may receive encoded segment208(e.g., the encoded bitstream for a segment of source video201). Bitstream analysis module307may determine segment bitstream parameters associated with encoded segment208. For example, the segment bitstream parameters may include average bits per pixel, average quantization parameter, encoding frame rate, or encoding video height. In some examples, the segment bitstream parameters may be frame size data, frame type data, frame resolution data, or bitrate data. Bitstream analysis module307may transfer the segment bitstream parameters to function modeling module306and temporal complexity module308.

Temporal complexity module308may determine a temporal complexity associated with encoded segment208based at least in part on the received segment bitstream parameters. Temporal complexity module308may determine the temporal complexity using any suitable technique or techniques. For example, the temporal complexity may be based on Equation (1) as follows:

TC=fTC⁡(f_parameters)=mean⁡(BitsP)SF×cmean⁡(QPP)×fpsf_h(1)
where TC may be the temporal complexity, fTCmay a function for determining TC, f_parameters may be the segment bitstream parameters, mean(BitsP) may be the average bits per pixel, SF may be a scaling factor of about 40, c may be a constant of about 0.87, mean(QPP) may be the average quantization parameter, fps may be the encoding frame rate, and f_h may be the encoding video height. Although described with respect to video height, f_h, other information or data associated with video or frame size may be used. In various examples, video height, video width, video aspect ratio, or combinations thereof may be used.

As shown, the temporal complexity may be transferred to function modeling module306and bitrate prediction module309. Function modeling module306may provide a content (e.g., source video via the segment bitstream parameters and temporal complexity) and device (e.g., receiving device102via display data211) based model to predict a video bitrate. For example, the model may be a pre-trained linear and/or non-linear model. For example, a training of the model may be provided as a non-linear fit of parameters based on a training set of video clips as shown in Equation (2) and/or as a linear fit as shown in Equation (3) and based on a test as shown in Equation (4):
vi=nonlinearfit(bitrate,MOS),i=4,5  (2)
where v may be parameters or function modeling coefficients to predict encoding bitrate, bitrate may be the bitrate of a training video clip, and MOS may be the mean opinion score of the training video clip.
(a,b)vi=linearfit(TCtraining,vi),vi=a×TCtraining+b(3)
where a and b may be slope and y-intercept corresponding to virespectively and TCtrainingmay be the temporal complexity of the training set.
vi_test=a×TCtest+b(4)
where vi_testmay be a predicted vifor input test video.

In some examples, the training of function modeling module306may be performed offline (e.g., prior to a run-time with respect to source video201) and function modeling module306may be saved via memory for implementation. As shown, bitrate prediction module306may receive parameters from function modeling module306and the temporal complexity from temporal complexity module308. Bitrate prediction module306may determine candidate bitrate212based on an encoding bitrate prediction using any suitable technique or techniques. In an example, bitrate prediction module306may determine candidate bitrate212based on an encoding bitrate prediction determined by Equation (5) as follows:

e_bitrate=max(min(v4(11-desired_MOS-1b-1)1v5),b_max),b_min)(5)
where e_bitrate may be the encoding bitrate prediction, desired_MOS may be MOS210, b_max and b_min may be maximum and minimum bitrates, respectively from maximum and minimum bitrates209, and b may be a constant of about 3.7.

As shown inFIG. 3and as discussed herein, the encoding bitrate prediction as described may be provided to bitrate selection module207as candidate bitrate212.

Furthermore, bitstream analysis module310of segment average bitrate determination module205may receive encoded segment208as shown. Bitstream analysis module310may determine an average bitrate for encoded segment208and/or a average bits per pixel for encoded segment208. Furthermore, segment averaging module311may determine an average bitrate for encoded segment208. In some examples, bitstream analysis modules307,310may be implemented separately (as shown) and, in other examples, they may be implemented together. Furthermore, in some examples, segment averaging module311may be eliminated and the discussed averaging may be provided by bitstream analysis module310.

As discussed, in some examples, candidate bitrate213may be provided as an average bitrate for encoded segment208. In such examples, bitstream analysis module310or segment averaging module311may provide the average bitrate (and the other module may be eliminated if desired). In other examples, one of candidate bitrate212or candidate bitrate213may be eliminated (prior to reaching bitrate selection module207) based on a thresholding performed by bitstream analysis module307and/or bitstream analysis module310. For example, an average bits per pixel may be determined for encoded segment208. The average bits per pixel may be compared to a threshold to determine whether candidate bitrate212or candidate bitrate213may be provided to bitrate selection module207. For example, if the average bits per pixel is greater than (or equal to) the threshold, candidate bitrate212may be provided (and candidate bitrate213may be eliminated) and, if the average bits per pixel is less than (or equal to) the threshold, candidate bitrate212may be provided (and candidate bitrate213may be eliminated). In such examples, bitrate selection module207may, for a particular segment, select between two candidate bitrates (e.g., candidate bitrate214and one of candidate bitrate212or candidate bitrate213) and not three as illustrated inFIG. 3. Such techniques are discussed further herein with respect toFIG. 4.

As shown inFIG. 3, source video bitrate module312of encoded source video bitrate determination module206may receive source video201or portion thereof. For example, encoded source video bitrate determination module206may receive a compressed (e.g., encoded) source video such that the source video was compressed based on a video codec associated with source video201(e.g., prior to download, at the time of storing into memory, at the time of capture, or the like; and different than the video codec used by encoder203or the same as the video codec used by encoder203but with different features implemented). Source video bitrate module312may determine a bitrate of the compressed source video based on an average bitrate or the like. Source video bitrate module312may transfer the determined bitrate of the compressed source video to scaling factor modification module313. Scaling factor modification module313may modify the determined bitrate by a scaling factor as discussed herein. For example, the scaling factor may be based on a difference between the codec used to compress the compressed source video and the local codec used to encode bitstream216. As discussed, the scaling factor may thereby be adaptive based on the quality of the codec used to compress the compressed source video and/or the quality of the local codec used to encode bitstream216. For example, two source videos compressed using different codecs may have different scaling factors as determined by scaling factor modification module313. The determined bitrate may be modified by the scaling factor in any suitable manner. In an embodiment, the scaling factor (either positive or negative in this example) is added to the determined bitrate. In another embodiment, the scaling factor is multiplied by the determined bitrate (e.g., the determined bitrate is modified by x % where x is the scaling factor).

Bitrate selection module207may receive candidate bitrates212,213,214or candidate bitrate214and one of candidate bitrates212,213(as discussed) and bitrate selection module207may determine selected encoding bitrate215for encoding a segment of source video201(e.g., for encoding a decoded segment of video content such that the segment is either the same as the segment represented by encoded segment208or different than the segment represented by encoded segment208). For example, bitrate selection module207may select a minimum bitrate of the received candidate bitrates as selected encoding bitrate215. In an embodiment, bitrate selection module207may select a minimum bitrate based on switch215as discussed herein.

Encoder203may receive selected encoding bitrate215and may encode source video201(e.g., decoded video content based on selected encoding bitrate215) to generate bitstream216, which may be provided to receiving device102. As discussed bitstream216may be encoded using a local video codec. The local video codec may be determined based on a standard, a negotiation between transmitting device101and receiving device102or the like. Receiving device102may receive bitstream216and decode bitstream216to generate video frames for presentment to a user. Encoder203may encode any portion of decoded video content based on selected encoding bitrate215. In an embodiment, encoder203may encode video content associated with encoded segment208based on selected encoding bitrate215. In another embodiment, encoder203may encode video content associated with another segment of source video201based on selected encoding bitrate215. For example, the segment encoded based on selected encoding bitrate215may be a subsequent segment with respect to encoded segment208. In some embodiments, all of or a remainder of source video201may be encoded based on selected encoding bitrate215.

FIG. 4is a flow diagram illustrating an example process400for encoding video content for wireless transmission, arranged in accordance with at least some implementations of the present disclosure. Process400may include one or more operations401-415as illustrated inFIG. 4. Process400may form at least part of a video encoding process. By way of non-limiting example, process400may form at least part of a video encoding process video content as undertaken by devices101or800or systems200,300,600, or700as discussed herein.

In some examples, process400may be implemented even when a wireless channel capacity is not a bottleneck or concern. Furthermore, process400may be based on the non-reference (NR) bitrate predictor (e.g., encoding bitrate prediction module204), In some examples, encoding bitrate prediction may be skipped or bypassed when the segment average bit per pixel is below a specific threshold (e.g., as discussed with respect to decision operation409). In other examples, the encoding bitrate prediction and the segment average bitrate may be provided for selection as discussed with respect to candidate bitrates212and213. In such examples, when bypass would have occurred (such that only candidate bitrate213would be provided), candidate bitrate213would likely (or necessarily) be less than candidate212such that a bypass or determining both provides the same result. Such a bypass and/or determination of a segment average bitrate may provide for improved bitrate predictions in instances where the encoding bitrate prediction may have limitations such as, for example, in evaluating segments consisting of static frames with extremely small number of bits (e.g. black and white frames).

Furthermore, as discussed, an encoded source video based bitrate determination may be made based on a bitrate of compressed source video modified by a scaling factor. Such techniques may be advantageous when source video201is either Internet video content having a relatively low video quality or local video content having relatively high video quality (e.g., low or high quality as compared to H.264 AVC or HEVC quality). For both cases, the achievable video quality bitstream216(e.g., encoded video for transmission) is determined largely by the bitrate and resolution of source video201. If source video201has high bitrate and higher MOS than the desired MOS (e.g., MOS210), the discussed encoding NR MOS bitrate prediction may be used to reduce the encoding bitrate significantly. However, if source video201has a low or very low bitrate, then using a high encoder bitrate (e.g., selected encoding bitrate215) may be wasteful and would not improve MOS of the presentment of video at receiving device102. In such instances, as discussed, a scaling factor (e.g., modifying the bitrate of the source video by a scaling factor) may be used to determine the bitrate for encoding (e.g., selected encoding bitrate215). For example, the scaling factor (e.g., x) may be adaptively adjusted based on the source and local codec performance difference as discussed.

Returning toFIG. 4, process400may begin at operation401, “Set Min and Max Bitrates for Local Encoding”, where a minimum bitrate and a maximum bitrate may be set or determined as discussed herein. For example, maximum and minimum bitrates209may be set or determined via maximum and minimum bitrate module302of system300.

Process400may continue at operation402, “Set Desired MOS for Local Encoding”, where a desired mean opinion score (MOS) may be set or determined as discussed herein. For example, mean opinion score210may be set or determined via mean opinion score module301.

Process400may continue at operation403, “Obtain Receiver Display Information”, where display information for a receiver (e.g., receiving device102) may be obtained or received as discussed herein. For example, display parameters module304of display information module303may obtain or receive display information (e.g., display resolution information) for receiving device102.

Process400may continue at operation404, “Determine Device Dependent Coefficients”, where device dependent coefficients such as display quality coefficients may be determined as discussed herein. For example, display data211including display quality coefficients may be determined via display quality coefficients look up table305of display information module303.

Process400may continue at operation405, “Obtain Bitstream of Locally Encoded Video Segment”, where a bitstream of a locally encoded video segment may be obtained and/or determined as discussed herein. For example, decoder202may decode a segment of source video201(based on a video codec associated with the compressed source video) and encoder203may encode the segment based on a local video codec as discussed.

Process400may continue at operation406, “Perform Bitstream Analysis”, where a bitstream analysis may be performed based on the bitstream associated with the segment of video as discussed herein. For example, bitstream analysis module307of encoding bitrate prediction module204may perform a bitstream analysis based on encoded segment208to generate segment bitstream parameters including an average bits per pixel of the segment, an average quantization parameter of the segment, an encoding frame rate of the segment, or an encoding video height of the segment.

Process400may continue at operation407, “Collect Bitrate of Source Video Content”, where a bitrate of source video content may be collected or determined as discussed herein. For example, source video bitrate module312of encoded source video based bitrate determination module206may receive source video201(e.g., compressed source video) or a portion thereof and source video bitrate module312may determine a bitrate for the source video encoded using the video codec associated with the compression of the source video.

Process400may continue at operation408, “Adjust by Scaling Factor to Determine CBR”, where the bitrate for the compressed source video may be adjusted by a scaling factor as discussed herein. For example, scaling factor modification module313of encoded source video based bitrate determination module206may modify the bitrate by a scaling factor to generate candidate bitrate214. As discussed, the scaling factor may be adaptive based on the video codec associated with the compression of the source video.

Process400may continue from operation406as discussed at decision operation409, “Segment Average Bits per Pixel<Threshold?”, where an average bits per pixel of the segment may be compared to a threshold. As shown, if the average bits per pixel for the segment are less than a threshold (or less than or equal to in some implementations), process400may continue at operation410and, if the average bits per pixel for the segment are greater than or equal to the threshold (or greater than in some implementations), process400may continue at operation413.

Process400may continue thereby at operation410, “Determine Temporal Complexity”, where a temporal complexity for the segment may be determined as discussed herein. For example, temporal complexity module308of encoding bitrate prediction module204may determine the temporal complexity based on Equation (1) or the like.

Process400may continue at operation411, “Determine Function Modeling Coefficients”, where function modeling coefficients may be determined based on the device dependent coefficients determined via operation404and the temporal complexity determined via operation410. For example, the function modeling coefficients may provide coefficients for a pre-trained bitrate prediction model, which may generate a bitrate prediction dependent upon the content of the segment (e.g., the temporal complexity) and a quality of the receiver display (e.g., the device dependent quality coefficients).

Process400may continue at operation412, “Determine Encoding Bitrate Prediction as CBR”, where an encoding bitrate prediction may be determined based on the function modeling coefficients determined via operation411, the minimum and maximum bitrates determined via operation401, and the desired MOS determined via operation402. For example, bitrate prediction module309of encoding bitrate prediction module204may determine candidate bitrate212based on Equation (5) or the like.

As discussed, in examples where the segment average bits per pixel are less than a threshold (or less than or equal to the threshold) process400may continue from decision operation409to operation413, “Use Segment Average Bits as CBR”, where the average bits of the segment (or an average bitrate for the segment) may be used as the candidate bitrate. As discussed, in some examples, decision operation409and operation413may provide a bypass or a skip of operations410-412. For example, such a bypass may occur when the segment average bits per pixel are less than a threshold (or less than or equal to the threshold). In such examples, the discussed encoding bitrate prediction model may not provide useful results such as in low or very low bitrate scenarios (e.g., segments of static black and white frames or the like). For example, segment averaging module311or bitstream analysis module310may provide candidate bitrate213as the average bits of the segment.

Process400may continue at operation414, “Determine Minimum of Candidate Bitrates”, where a minimum of the candidate bitrates may be determined. For example, bitrate selection module207may determine a minimum of the candidate bitrates. As discussed, in the example of process400, operation414may be used to select the minimum of the candidate bitrate provided by operation408and either a candidate bitrate provided by operation412or a candidate bitrate provided by operation413(depending on the decision at decision operation409). Such a bypass implementation may provide less computations and faster processing times for example.

In other embodiments as discussed herein, decision operation409may be bypassed and both a candidate bitrate provided by operation412and a candidate bitrate provided by operation413(along with a candidate bitrate provided by operation408) may be provided for the determination of a minimum of the candidate bitrates at operation414.

Process400may continue at operation415, “Set Encoding Bitrate and Encode Segment”, where an encoding bitrate may be set and a segment may be encoded. For example, bitrate selection module207may set selected encoding bitrate215for encoder203to encode a segment of (decoded) source video201. As discussed, in some examples, the selected bitrate may be used to encode a subsequent segment to the segment currently being evaluated and, in other examples, the selected bitrate may be used to encode the current segment currently itself.

The operations of process400may be repeated any number of times either in series or in parallel for any number of segments of a source video and/or for any number of source videos. As discussed, various source videos may have been compressed using different video codecs, which may influence the scaling factor implemented via operation408.

FIG. 5is a flow diagram illustrating an example process500for encoding video content for wireless transmission, arranged in accordance with at least some implementations of the present disclosure. Process500may include one or more operations501-505as illustrated inFIG. 5. Process500may form at least part of a video encoding process. By way of non-limiting example, process500may form at least part of a video encoding process as undertaken by devices101or800or systems200,300,600, or700as discussed herein. Furthermore, process500will be described herein in reference to system600ofFIG. 6.

FIG. 6is an illustrative diagram of an example system600, arranged in accordance with at least some implementations of the present disclosure. For example, system600may be a video coding system of device101or the like. As shown inFIG. 6, system600may include one or more imaging devices602, an antenna602, one or more processing units620including logic circuitry630, one or more processors603, one or more memory stores604, and a display device605. Furthermore, logic circuitry630may include decoder202, decoder202, encoding bitstream prediction module205, segment average bitrate determination module205, encoded source video based bitrate determination module206, and bitrate selection module207. As illustrated, imaging device(s)601, antenna602, processing unit(s)620, logic circuitry630, decoder202, decoder202, processor(s)603, memory store(s)604, and/or display device605may be capable of communication with one another.

As shown, in some examples, system600may include antenna602. Antenna602may be configured to transmit or receive an encoded bitstream of video data, for example. Further, in some examples, system600may include display device605. Display device605may be configured to present video data such decoded source video201. As shown, in some example, logic circuitry630may be implemented via processing unit(s)620. Processing unit(s)620may include application-specific integrated circuit (ASIC) logic, graphics processor(s), general purpose processor(s), or the like. System600also may include optional processor(s)603, which may similarly include application-specific integrated circuit (ASIC) logic, graphics processor(s), general purpose processor(s), or the like. In some examples, logic circuitry630may be implemented via hardware, video coding dedicated hardware, or the like, and processor(s)603may implement general purpose software, operating systems, or the like, via, for example, a multi-core central processing unit (CPU). In addition, memory store(s)604may be any type of memory such as volatile memory (e.g., Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), etc.) or non-volatile memory (e.g., flash memory, etc.), and so forth. In a non-limiting example, memory store(s)604may be implemented by cache memory. In some examples, logic circuitry630may access memory store(s)604(for implementation of a video frame buffer for example). In other examples, logic circuitry630and/or processing unit(s)620may include memory stores (e.g., cache or the like) for the implementation of a video frame buffer or the like. For example, memory store(s)604may store any video data such as source video201(e.g., compressed source video), decoded source video, encoded segment208, bitstream216, candidate bitrates212,213,214, maximum and minimum bitrates209, MOS210, display data211, selected encoding bitrate215, or any other data utilized or generated as discussed herein.

In some examples, encoder100implemented via logic circuitry630may include a frame buffer (e.g., via either processing unit(s)620or memory store(s)604) and a graphics processing unit (e.g., via processing unit(s)620). The graphics processing unit may be communicatively coupled to the frame buffer for example. The graphics processing unit may include encoder100as implemented via logic circuitry630and/or the various modules as discussed herein. For example, the graphics processing unit may include decoder202, decoder202, encoding bitstream prediction module205, segment average bitrate determination module205, encoded source video based bitrate determination module206, and bitrate selection module207as shown. The illustrated modules may be implemented to perform any of the operations as discussed herein.

In some examples, antenna602of system2000may be configured to transmit an encoded bitstream of video data such as bitstream216. As discussed, the encoded bitstream may include video data encoded using a local codec such as the H.264 AVC codec or the HEVC codec or the like.

Returning to discussion ofFIG. 5, process500may begin at operation501, “Determine a First Candidate Bitrate for Encoding a Segment of a Source Video, Using a First Video Codec, as a Bitrate for the Source Video Encoded Using a Second Video Codec Modified by a Scaling Factor”, where a first candidate bitrate for encoding a segment of a source video, using a first video codec, may be determined such that the first candidate bitrate is a bitrate for the source video encoded using a second video codec modified by a scaling factor. For example, encoded source video based bitrate determination module206as implemented via logic circuitry630may receive a compressed source video or a portion thereof such that the compression was performed using a codec associated with a compression of the source video (e.g., the second video codec) and encoded source video based bitrate determination module206may determine the bitrate for the compressed source video and modify it by a scaling factor as discussed herein to generate the first candidate bitrate. The first bitrate may be determined for encoding the segment using a local video codec (e.g., the first video codec). For example, the scaling factor may be based on a quality of the video codec associated the compression of the source video such that, for a greater quality difference between the video codecs, a larger scaling factor may be used.

For example, a candidate bitrate may be determined for encoding, using the first video codec, a second segment of a second source video such that the candidate bitrate comprises a bitrate for the second source video encoded using a third video codec modified by a second scaling factor. In an embodiment, if the second video codec and the third video codec are different, the determined scaling factors are also different. For example, when wherein a first quality difference between the first video codec and the second video codec is greater than a second quality difference between the first video codec and the third video codec, the scaling factor for the segment encoded using the second video codec is greater than the scaling factor for the segment encoded using the third video codec.

Processing may continue at operation502, “Determine a Second Candidate Bitrate for Encoding the Segment of the Source Video, Using the First Video Codec, as an Average Bitrate for the Segment or a Previous Segment of the Source Video Encoded Using the First Video Codec”, where a second candidate bitrate for encoding the segment of the source video, using the first video codec, may be determined such that the second candidate bitrate is an average bitrate for at least one of the segment of the source video encoded using the first video codec or a previous segment of the source video encoded using the first video codec. In an embodiment, the previous segment is used and the previous segment is immediately prior to the segment in the source video. For example, segment average bitrate determination module205as implemented via logic circuitry630may receive a segment encoded using a local codec (e.g., the first video codec) and segment average bitrate determination module205as implemented via logic circuitry630may determine an average bitrate based on the received encoded segment as the second candidate bitrate.

Processing may continue at operation503, “Determine a Third Candidate Bitrate for Encoding the Segment of the Source Video, Using the First Video Codec, as an Encoding Bitrate Prediction for the Segment or the Previous Segment Encoded Using the First Video Codec”, where a third candidate bitrate for encoding the segment of the source video, using the first video codec, may be determined such that the third candidate bitrate is an encoding bitrate prediction for at least one of the segment encoded using the first video codec or the previous segment encoded using the first video codec. For example, encoding bitrate prediction module204as implemented via logic circuitry630may receive a segment encoded using a local codec (e.g., the first video codec) and encoding bitrate prediction module204as implemented via logic circuitry630may determine a bitrate prediction based on the encoded segment and/or other data to determine the third candidate bitrate as the encoding bitrate predication. For example, the encoding bitrate prediction may be based at least in part on one of a predetermined mean opinion score, a predetermined maximum bitrate, a predetermined minimum bitrate, or a display quality coefficient associated with a receiving device of the wireless transmission as discussed herein.

In some examples, determining the encoding bitrate prediction may include analyzing a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determining a temporal complexity based on the segment bitstream parameters, and generating a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model. In an embodiment, the segment bitstream parameters include at least one of an average bits per pixel of the segment, an average quantization parameter of the segment, an encoding frame rate of the segment, or an encoding video height of the segment. In some examples, the bitrate prediction is further based on a predetermined mean opinion score, a predetermined maximum bitrate, a predetermined minimum bitrate, and a display quality coefficient associated with a receiving device of the wireless transmission as discussed herein. For example, the display quality coefficient associated with the receiving device may be determined using a look up table based on resolution information received from the receiving device.

Processing may continue at operation504, “Select an Encoding Bitrate for the Segment as a Minimum of the First, Second, and Third Candidate Bitrates”, where an encoding bitrate for the segment of the source video may be selected as a minimum of the first, second, and third candidate bitrates. For example, bitrate selection module207as implemented via logic circuitry630may receive the first, second, and third candidate bitrates and select a minimum of them as a selected encoding bitrate. As discussed, in some examples, bitrate selection module207as implemented via logic circuitry630may receive three candidate bitrates. In other examples, either the second or third candidate bitrates may be bypassed and bitrate selection module207as implemented via logic circuitry630may select a minimum of the first candidate bitrate and either the second or third candidate bitrates for providing the selected encoding bitrate.

Processing may continue at operation505, “Encode, Using the First Video Codec, the Segment based on the Selected Encoding Bitrate”, where the segment of the source video may be encoded using the first video codec and based on the selected encoding bitrate. For example, decoder202as implemented via logic circuitry630may encode a segment of a source video based on the selected encoding bitrate.

Furthermore, the bitstream of the encoded segment may be provided to a receiving device, which may decode the bitstream and present video to a user. For example, decoder202as implemented via logic circuitry630may provide the encoded bitstream (e.g., encoded base don the selected encoding bitrate) to antenna602for wireless transmission to a receiving device.

The operations of process500may be repeated any number of times either in series or in parallel for any number of segments of a source video and/or for any number of source videos.

Various components of the systems described herein may be implemented in software, firmware, and/or hardware and/or any combination thereof. For example, various components of devices101or800or systems200,300,600, or700may be provided, at least in part, by hardware of a computing System-on-a-Chip (SoC) such as may be found in a computing system such as, for example, a smart phone. Those skilled in the art may recognize that systems described herein may include additional components that have not been depicted in the corresponding figures. For example, the systems discussed herein may include additional components such as bit stream multiplexer or de-multiplexer modules and the like that have not been depicted in the interest of clarity.

FIG. 7is an illustrative diagram of an example system700, arranged in accordance with at least some implementations of the present disclosure. In various implementations, system700may be a media system although system700is not limited to this context. For example, system700may be incorporated into a personal computer (PC), laptop computer, ultra-laptop computer, tablet, touch pad, portable computer, handheld computer, palmtop computer, personal digital assistant (PDA), cellular telephone, combination cellular telephone/PDA, television, smart device (e.g., smart phone, smart tablet or smart television), mobile internet device (MID), messaging device, data communication device, cameras (e.g. point-and-shoot cameras, super-zoom cameras, digital single-lens reflex (DSLR) cameras), and so forth.

In various implementations, system700includes a platform702coupled to a display720. Platform702may receive content from a content device such as content services device(s)730or content delivery device(s)740or other similar content sources. A navigation controller750including one or more navigation features may be used to interact with, for example, platform702and/or display720. Each of these components is described in greater detail below.

Processor710may be implemented as a Complex Instruction Set Computer (CISC) or Reduced Instruction Set Computer (RISC) processors, x86 instruction set compatible processors, multi-core, or any other microprocessor or central processing unit (CPU). In various implementations, processor710may be dual-core processor(s), dual-core mobile processor(s), and so forth.

Graphics subsystem715may perform processing of images such as still or video for display. Graphics subsystem715may be a graphics processing unit (GPU) or a visual processing unit (VPU), for example. An analog or digital interface may be used to communicatively couple graphics subsystem715and display720. For example, the interface may be any of a High-Definition Multimedia Interface, DisplayPort, wireless HDMI, and/or wireless HD compliant techniques. Graphics subsystem715may be integrated into processor710or chipset705. In some implementations, graphics subsystem715may be a stand-alone device communicatively coupled to chipset705.

In various implementations, display720may include any television type monitor or display. Display720may include, for example, a computer display screen, touch screen display, video monitor, television-like device, and/or a television. Display720may be digital and/or analog. In various implementations, display720may be a holographic display. Also, display720may be a transparent surface that may receive a visual projection. Such projections may convey various forms of information, images, and/or objects. For example, such projections may be a visual overlay for a mobile augmented reality (MAR) application. Under the control of one or more software applications716, platform702may display user interface722on display720.

In various implementations, content services device(s)730may be hosted by any national, international and/or independent service and thus accessible to platform702via the Internet, for example. Content services device(s)730may be coupled to platform702and/or to display720. Platform702and/or content services device(s)730may be coupled to a network760to communicate (e.g., send and/or receive) media information to and from network760. Content delivery device(s)740also may be coupled to platform702and/or to display720.

Movements of the navigation features of controller750may be replicated on a display (e.g., display720) by movements of a pointer, cursor, focus ring, or other visual indicators displayed on the display. For example, under the control of software applications716, the navigation features located on navigation controller750may be mapped to virtual navigation features displayed on user interface722, for example. In various embodiments, controller750may not be a separate component but may be integrated into platform702and/or display720. The present disclosure, however, is not limited to the elements or in the context shown or described herein.

In various implementations, drivers (not shown) may include technology to enable users to instantly turn on and off platform702like a television with the touch of a button after initial boot-up, when enabled, for example. Program logic may allow platform702to stream content to media adaptors or other content services device(s)730or content delivery device(s)740even when the platform is turned “off.” In addition, chipset705may include hardware and/or software support for 5.1 surround sound audio and/or high definition 7.1 surround sound audio, for example. Drivers may include a graphics driver for integrated graphics platforms. In various embodiments, the graphics driver may comprise a peripheral component interconnect (PCI) Express graphics card.

In various implementations, any one or more of the components shown in system700may be integrated. For example, platform702and content services device(s)730may be integrated, or platform702and content delivery device(s)740may be integrated, or platform702, content services device(s)730, and content delivery device(s)740may be integrated, for example. In various embodiments, platform702and display720may be an integrated unit. Display720and content service device(s)730may be integrated, or display720and content delivery device(s)740may be integrated, for example. These examples are not meant to limit the present disclosure.

As described above, system700may be embodied in varying physical styles or form factors.FIG. 8illustrates implementations of a small form factor device800in which system800may be embodied. In various embodiments, for example, device800may be implemented as a mobile computing device a having wireless capabilities. A mobile computing device may refer to any device having a processing system and a mobile power source or supply, such as one or more batteries, for example.

As described above, examples of a mobile computing device may include a personal computer (PC), laptop computer, ultra-laptop computer, tablet, touch pad, portable computer, handheld computer, palmtop computer, personal digital assistant (PDA), cellular telephone, combination cellular telephone/PDA, television, smart device (e.g., smart phone, smart tablet or smart television), mobile internet device (MID), messaging device, data communication device, cameras (e.g. point-and-shoot cameras, super-zoom cameras, digital single-lens reflex (DSLR) cameras), and so forth.

As shown inFIG. 8, device800may include a housing802, a display804, an input/output (I/O) device806, and an antenna808. Device800also may include navigation features812. Display804may include any suitable display unit for displaying information appropriate for a mobile computing device. I/O device806may include any suitable I/O device for entering information into a mobile computing device. Examples for I/O device806may include an alphanumeric keyboard, a numeric keypad, a touch pad, input keys, buttons, switches, rocker switches, microphones, speakers, voice recognition device and software, and so forth. Information also may be entered into device800by way of microphone (not shown). Such information may be digitized by a voice recognition device (not shown). The embodiments are not limited in this context.

The following examples pertain to further embodiments.

In one or more first embodiments, a computer-implemented method for encoding video content for wireless transmission comprises determining a first, a second, and a third candidate bitrate for encoding, using a first video codec, a segment of a source video, wherein the first candidate bitrate comprises a bitrate for the source video encoded using a second video codec modified by a scaling factor, wherein the second candidate bitrate comprises an average bitrate for at least one of the segment of the source video encoded using the first video codec or a previous segment of the source video encoded using the first video codec, and wherein the third candidate bitrate comprises an encoding bitrate prediction for at least one of the segment encoded using the first video codec or the previous segment encoded using the first video codec, selecting an encoding bitrate for the segment of the source video as a minimum of the first, second, and third candidate bitrates, and encoding, using the first video codec, the segment of the source video based on the selected encoding bitrate.

Further to the first embodiments, the method further comprises determining a fourth candidate bitrate for encoding, using the first video codec, a second segment of a second source video, wherein the fourth candidate bitrate comprises a bitrate for the second source video encoded using a third video codec modified by a second scaling factor, and wherein the scaling factor is different than the second scaling factor.

Further to the first embodiments, the first video codec is a local video codec associated with the wireless transmission and wherein the second video codec is associated with a compression of the source video.

Further to the first embodiments, the encoding bitrate prediction is based at least in part on one of a predetermined mean opinion score, a predetermined maximum bitrate, a predetermined minimum bitrate, or a display quality coefficient associated with a receiving device of the wireless transmission.

Further to the first embodiments, determining the third candidate bitrate based on the encoding bitrate prediction comprises analyzing a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determining a temporal complexity based on the segment bitstream parameters, and generating a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model.

Further to the first embodiments, determining the third candidate bitrate based on the encoding bitrate prediction comprises analyzing a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determining a temporal complexity based on the segment bitstream parameters, and generating a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model, wherein the segment bitstream parameters comprise at least one of an average bits per pixel of the segment, an average quantization parameter of the segment, an encoding frame rate of the segment, or an encoding video height of the segment.

Further to the first embodiments, determining the third candidate bitrate based on the encoding bitrate prediction comprises analyzing a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determining a temporal complexity based on the segment bitstream parameters, and generating a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model, wherein generating the bitrate prediction is further based on a predetermined mean opinion score, a predetermined maximum bitrate, a predetermined minimum bitrate, and a display quality coefficient associated with a receiving device of the wireless transmission.

Further to the first embodiments, determining the third candidate bitrate based on the encoding bitrate prediction comprises analyzing a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determining a temporal complexity based on the segment bitstream parameters, and generating a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model, wherein generating the bitrate prediction is further based on a predetermined mean opinion score, a predetermined maximum bitrate, a predetermined minimum bitrate, and a display quality coefficient associated with a receiving device of the wireless transmission, and wherein the display quality coefficient associated with the receiving device is determined using a look up table based on resolution information received from the receiving device.

Further to the first embodiments, the second candidate bitrate and the third candidate bitrate are determined based on the previous segment of the source video, and wherein the previous segment is immediately prior to the segment of the source video.

Further to the first embodiments, the method further comprises wirelessly transmitting a resultant bitstream generated via the encoding of the segment to a receiving device.

In one or more second embodiments, a system for encoding video content for wireless transmission comprises a memory configured to store video data and a processing unit coupled to the memory, wherein the processing unit comprises encoded source video based bitrate determination circuitry configured to determine a first candidate bitrate for encoding, based on a first video codec, a segment of a source video, wherein the first candidate bitrate comprises a bitrate for the source video encoded using a second video codec modified by a scaling factor, segment average bitrate determination circuitry configured to determine a second candidate bitrate for encoding, based on the first video codec, the segment of the source video, wherein the second candidate bitrate comprises an average bitrate for at least one of the segment of the source video encoded using the first video codec or a previous segment of the source video encoded using the first video codec, encoding bitrate prediction circuitry configured to determine a third candidate bitrate for encoding, based on the first video codec, the segment of the source video, wherein the third candidate bitrate comprises an encoding bitrate prediction for at least one of the segment encoded using the first video codec or the previous segment encoded using the first video codec, bitrate selection circuitry configured to select an encoding bitrate for the segment of the source video as a minimum of the first, second, and third candidate bitrates, and encoder circuitry configured to encode, based on the first video codec, the segment of the source video based on the selected encoding bitrate.

Further to the second embodiments, the encoded source video based bitrate determination circuitry is further configured to determine a fourth candidate bitrate for encoding, using the first video codec, a second segment of a second source video, wherein the fourth candidate bitrate comprises a bitrate for the second source video encoded using a third video codec modified by a second scaling factor, and wherein the scaling factor is different than the second scaling factor.

Further to the second embodiments, the first video codec is a local video codec associated with the wireless transmission and wherein the second video codec is associated with a compression of the source video.

Further to the second embodiments, the encoding bitrate prediction is based at least in part on one of a predetermined mean opinion score, a predetermined maximum bitrate, a predetermined minimum bitrate, or a display quality coefficient associated with a receiving device of the wireless transmission.

Further to the second embodiments, the encoding bitrate prediction circuitry being configured to determine the third candidate bitrate comprises the encoding bitrate prediction circuitry being configured to analyze a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determine a temporal complexity based on the segment bitstream parameters, and generate a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model.

Further to the second embodiments, the encoding bitrate prediction circuitry being configured to determine the third candidate bitrate comprises the encoding bitrate prediction circuitry being configured to analyze a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determine a temporal complexity based on the segment bitstream parameters, and generate a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model, wherein the segment bitstream parameters comprise at least one of an average bits per pixel of the segment, an average quantization parameter of the segment, an encoding frame rate of the segment, or an encoding video height of the segment.

Further to the second embodiments, the encoding bitrate prediction circuitry being configured to determine the third candidate bitrate comprises the encoding bitrate prediction circuitry being configured to analyze a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determine a temporal complexity based on the segment bitstream parameters, and generate a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model, wherein the generated bitrate prediction is further based on a predetermined mean opinion score, a predetermined maximum bitrate, a predetermined minimum bitrate, and a display quality coefficient associated with a receiving device of the wireless transmission.

Further to the second embodiments, the encoding bitrate prediction circuitry being configured to determine the third candidate bitrate comprises the encoding bitrate prediction circuitry being configured to analyze a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determine a temporal complexity based on the segment bitstream parameters, and generate a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model, wherein the generated bitrate prediction is further based on a predetermined mean opinion score, a predetermined maximum bitrate, a predetermined minimum bitrate, and a display quality coefficient associated with a receiving device of the wireless transmission, the system further comprising a look up table comprising the display quality coefficient associated with resolution information of the receiving.

Further to the second embodiments, the second candidate bitrate and the third candidate bitrate are determined based on the previous segment of the source video, and wherein the previous segment is immediately prior to the segment of the source video.

Further to the second embodiments, the second candidate bitrate and the third candidate bitrate are based on the previous segment of the source video, and wherein the previous segment is immediately prior to the segment of the source video.

Further to the second embodiments, the system comprises at least a portion of a computer, a laptop, an ultrabook, a smartphones, or a tablet.

In one or more third embodiments, a system for encoding video content for wireless transmission comprises a memory configured to store video data and a processing unit coupled to the memory, wherein the processing unit comprises means for determining a first, a second, and a third candidate bitrate for encoding, using a first video codec, a segment of a source video, wherein the first candidate bitrate comprises a bitrate for the source video encoded using a second video codec modified by a scaling factor, wherein the second candidate bitrate comprises an average bitrate for at least one of the segment of the source video encoded using the first video codec or a previous segment of the source video encoded using the first video codec, and wherein the third candidate bitrate comprises an encoding bitrate prediction for at least one of the segment encoded using the first video codec or the previous segment encoded using the first video codec, means for selecting an encoding bitrate for the segment of the source video as a minimum of the first, second, and third candidate bitrates, and means for encoding, using the first video codec, the segment of the source video based on the selected encoding bitrate.

Further to the third embodiments, the processing unit further comprises means for determining a fourth candidate bitrate for encoding, using the first video codec, a second segment of a second source video, wherein the fourth candidate bitrate comprises a bitrate for the second source video encoded using a third video codec modified by a second scaling factor, and wherein the scaling factor is different than the second scaling factor.

Further to the third embodiments, the means for determining the first, the second, and the third candidate bitrate comprises means for analyzing a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, means for determining a temporal complexity based on the segment bitstream parameters, and means generating a bitrate prediction as the third candidate bitrate based on the temporal complexity and a pre-trained bitrate prediction model.

Further to the third embodiments, the means for determining the first, the second, and the third candidate bitrate comprises means for analyzing a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, means for determining a temporal complexity based on the segment bitstream parameters, and means generating a bitrate prediction as the third candidate bitrate based on the temporal complexity and a pre-trained bitrate prediction model, wherein the segment bitstream parameters comprise at least one of an average bits per pixel of the segment, an average quantization parameter of the segment, an encoding frame rate of the segment, or an encoding video height of the segment.

In one or more fourth embodiments, a machine readable medium comprises a plurality of instructions that in response to being executed on a computing device, cause the computing device to encode video content for wireless transmission by determining a first, a second, and a third candidate bitrate for encoding, using a first video codec, a segment of a source video, wherein the first candidate bitrate comprises a bitrate for the source video encoded using a second video codec modified by a scaling factor, wherein the second candidate bitrate comprises an average bitrate for at least one of the segment of the source video encoded using the first video codec or a previous segment of the source video encoded using the first video codec, and wherein the third candidate bitrate comprises an encoding bitrate prediction for at least one of the segment encoded using the first video codec or the previous segment encoded using the first video codec, selecting an encoding bitrate for the segment of the source video as a minimum of the first, second, and third candidate bitrates, and encoding, using the first video codec, the segment of the source video based on the selected encoding bitrate.

Further to the fourth embodiments, the machine readable medium comprises further instructions that cause the computing device to encode video content for wireless transmission by determining a fourth candidate bitrate for encoding, using the first video codec, a second segment of a second source video, wherein the fourth candidate bitrate comprises a bitrate for the second source video encoded using a third video codec modified by a second scaling factor, and wherein the scaling factor is different than the second scaling factor.

Further to the fourth embodiments, the encoding bitrate prediction is based at least in part on one of a predetermined mean opinion score, a predetermined maximum bitrate, a predetermined minimum bitrate, or a display quality coefficient associated with a receiving device of the wireless transmission.

Further to the fourth embodiments, determining the third candidate bitrate based on the encoding bitrate prediction comprises analyzing a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determining a temporal complexity based on the segment bitstream parameters, and generating a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model.

Further to the fourth embodiments, determining the third candidate bitrate based on the encoding bitrate prediction comprises analyzing a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determining a temporal complexity based on the segment bitstream parameters, and generating a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model, wherein the segment bitstream parameters comprise at least one of an average bits per pixel of the segment, an average quantization parameter of the segment, an encoding frame rate of the segment, or an encoding video height of the segment.

Further to the fourth embodiments, determining the third candidate bitrate based on the encoding bitrate prediction comprises analyzing a bitstream of the segment encoded using the first video codec or the previous segment encoded using the first video codec to determine segment bitstream parameters, determining a temporal complexity based on the segment bitstream parameters, and generating a bitrate prediction based on the temporal complexity and a pre-trained bitrate prediction model, wherein generating the bitrate prediction is further based on a predetermined mean opinion score, a predetermined maximum bitrate, a predetermined minimum bitrate, and a display quality coefficient associated with a receiving device of the wireless transmission.

In on or more fifth embodiments, at least one machine readable medium may include a plurality of instructions that in response to being executed on a computing device, causes the computing device to perform a method according to any one of the above embodiments.

In on or more sixth embodiments, an apparatus may include means for performing a method according to any one of the above embodiments.