The present application relates generally to multimedia communications performed over the Internet and/or other wired and/or wireless multimedia communications network(s), and more specifically to systems and methods of dynamically adapting video encoding parameters employed by multimedia data senders to available bandwidths of multimedia data receivers participating in such multimedia communications.
In recent years, multimedia communications over the Internet and/or other wired and/or wireless multimedia communications network(s) have gained increased popularity. Such multimedia communications can be performed within the context of video communications systems, such as video conferencing systems, video calling systems, video transcoding systems, video playback systems, interactive voice and video response (IVVR) systems, etc. In video communications, transmissions of video data from video data senders are typically based on the real-time transport protocol (RTP), and deliveries of such video data to video data receivers are typically monitored using the real-time transport control protocol (RTCP). For example, such video data receivers that receive video data in the form of RTP packets from one or more video data senders can provide reception quality feedback information to the respective video data senders in one or more RTCP report packets. Further, such video data senders can estimate available bandwidths of the respective video data receivers using at least the reception quality feedback information provided in the RTCP report packets, and, if desired and/or required, adjust their video data transmit rates so as not to exceed the estimated available bandwidths of the video data receivers.
Such multimedia communications can be problematic, however, particularly when transmissions of multimedia data including video data are performed over multimedia communications networks such as the Internet. For example, while the video data senders transmit video data over the Internet, various participants in the video communications may be subjected to varying levels of network congestion, which can result in changes in the available bandwidths of at least some of the video data receivers. Such network congestion that results in changes in the available bandwidths of the video data receivers can be caused by increases and/or decreases in bandwidths employed by other participants in the video communications, changes in physical locations of mobile participants in the video communications, certain errors occurring within the multimedia communications network, etc. Moreover, if the video data senders transmit video data at transmit rates that exceed the available bandwidths of one or more of the video data receivers, then the respective video data receivers may experience increased packet losses. Alternatively, if the video data senders transmit video data at transmit rates that are below the available bandwidths of one or more of the video data receivers, then reduced video quality may be exhibited at the respective video data receivers. In either case, the video quality of experience (QoE) may be degraded for at least some of the video data receivers participating in the video communications.
It would therefore be desirable to have improved systems and methods of performing multimedia communications over multimedia communications networks, in which video data senders can more reliably maintain high video QoE levels despite changes in available bandwidths of video data receivers.
In accordance with the present application, improved systems and methods of performing multimedia communications over multimedia communications networks are disclosed, in which video data senders can maintain high video quality of experience (QoE) levels with increased reliability despite changes in available bandwidths of video data receivers. In the disclosed systems and methods, video encoding parameters employed by the video data senders, including at least a video frame size and/or a video frame rate, can be dynamically adapted to the available bandwidths of the video data receivers, taking into account possible effects of spatial scaling and/or temporal scaling of video frames on the resulting video QoE.
In one aspect, a system for dynamically adapting video encoding parameters to available bandwidths of video data receivers includes a video data sender communicably coupleable to one or more video data receivers over at least one communications network, such as the Internet. For example, the system may be a video conferencing system, a video calling system, a video transcoding system, a video playback system, an interactive voice and video response (IVVR) system, or any other suitable video communications system. The system is operative to perform transmissions of multimedia data including video data over the communications network based on the real-time transport protocol (RTP) or any other suitable protocol, and to monitor deliveries of such video data using the real-time transport control protocol (RTCP) or any other suitable protocol. For example, the video data sender can send such video data to a respective video data receiver in the form of RTP packets (e.g., video, audio, and/or data RTP packets), and the respective video data receiver can provide reception quality feedback information to the video data sender in the form of RTCP report packets (e.g., RTCP sender report (SR) packets, RTCP receiver report (RR) packets).
The video data sender includes a bandwidth estimator for obtaining estimates of the available bandwidths of the video data receivers, a video encoding parameter adaptation component, and a video encoder. Having sent one or more RTP packets to a respective video data receiver, the video data sender can receive one or more RTCP report packets containing reception quality feedback information from the respective video data receiver. The bandwidth estimator can then (1) calculate, generate, determine, or otherwise obtain one or more bandwidth estimation parameters, such as at least a packet loss ratio and/or a round trip delay, from the reception quality feedback information, (2) calculate, generate, determine, or otherwise obtain an estimate of the available bandwidth of the respective video data receiver using at least the bandwidth estimation parameters, and (3) calculate, generate, determine, or otherwise obtain a target bitrate of encoded video so as not to exceed the estimated available bandwidth of the respective video data receiver.
In an exemplary aspect, the video encoding parameter adaptation component is operative, for each of a plurality of scaled video frame size and scaled video frame rate pairs (also referred to herein as the “scaled frame size/frame rate pair(s)”), to calculate, generate, determine, or otherwise obtain a fair quality bitrate of the encoded video provided by the video data sender, as well as a scaling penalty that takes into account the possible effects of spatial scaling and/or temporal scaling of the video frames on the resulting video QoE. For example, a total of “N” predetermined spatial scaling factors can be provided for scaling a target video frame size, and a total of “M” predetermined temporal scaling factors can be provided for scaling a target video frame rate, resulting in a set of N×M scaled frame size/frame rate pairs. The fair quality bitrate is defined herein as the bitrate at which the video data sender can transmit encoded video to the video data receiver such that an acceptable video quality is exhibited at the video data receiver without significant video quality degradation. The scaling penalty is defined herein to be a function of at least (1) the original video frame resolution (i.e., width×height), (2) the resolution of the last or previous video frame encoded by the video encoder, and (3) the complexity of the content of the video data (also referred to herein as the “video content complexity”), which is further defined herein to include one or more of the spatial complexity, the temporal complexity, and the motion complexity of the video data content.
Having obtained the fair quality bitrate and the scaling penalty for each of the N×M scaled frame size/frame rate pairs, the video encoding parameter adaptation component can calculate, generate, determine, or otherwise obtain a score value for the respective scaled frame size/frame rate pair. Such a score value is defined herein to be a function of at least (1) the absolute value of the difference between the fair quality bitrate and the target bitrate of the encoded video, and (2) the scaling penalty. In a further exemplary aspect, the video encoding parameter adaptation component can obtain the score value by calculating, generating, determining, or otherwise obtaining the reciprocal of the product of the scaling penalty and the absolute value of the difference between the fair quality bitrate and the target bitrate. Further, the video encoding parameter adaptation component can compare the score values for the respective scaled frame size/frame rate pairs to identify the scaled frame size/frame rate pair having the maximum score value, and obtain, from the identified scaled frame size/frame rate pair, scaled frame size/frame rate values that the video data sender can use to provide encoded video having a resolution and bitrate closest to the target resolution and bitrate. The video encoding parameter adaptation component can then provide the scaled frame size/frame rate values specified by the identified scaled frame size/frame rate pair for subsequent reconfiguration of the video encoder.
By dynamically adapting video encoding parameters employed by video data senders, including at least a video frame size and/or a video frame rate, to available bandwidths of video data receivers, taking into account possible effects of spatial scaling and/or temporal scaling of video frames on the resulting video quality of experience (QoE), such video data senders can advantageously maintain high video QoE levels with increased reliability despite changes in the available bandwidths of the video data receivers.
Other features, functions, and aspects of the invention will be evident from the Detailed Description that follows.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate one or more embodiments described herein and, together with the Detailed Description, explain these embodiments. In the drawings:
Improved systems and methods of performing multimedia communications over multimedia communications networks are disclosed, in which video data senders can maintain high video quality of experience (QoE) levels with increased reliability despite changes in available bandwidths of video data receivers. In the disclosed systems and methods, video encoding parameters employed by the video data senders, including at least a video frame size and/or a video frame rate, can be dynamically adapted to the available bandwidths of the video data receivers, taking into account possible effects of spatial scaling and/or temporal scaling of video frames on the resulting video QoE.
As shown in
In the multimedia communications system 100 of
Having obtained the fair quality bitrate and the scaling penalty for each of the N×M scaled frame size/frame rate pairs, the video encoding parameter adaptation component 110 can calculate, generate, determine, or otherwise obtain a score value for the respective scaled frame size/frame rate pair. Such a score value is defined herein to be a function of at least (1) the absolute value of the difference between the fair quality bitrate and the target bitrate of the encoded video, and (2) the scaling penalty. In one embodiment, the video encoding parameter adaptation component 110 can obtain the score value by calculating, generating, determining, or otherwise obtaining the reciprocal of the product of the scaling penalty and the absolute value of the difference between the fair quality bitrate and the target bitrate. Further, the video encoding parameter adaptation component 110 can compare the score values for the respective scaled frame size/frame rate pairs to identify the scaled frame size/frame rate pair having a score value that satisfies a predetermined condition (such as the predetermined condition of being the maximum score value), and obtain, from the identified scaled frame size/frame rate pair, scaled frame size/frame rate values that the video data sender 102 can use to provide encoded video having a resolution and bitrate closest to the target resolution and bitrate. The video encoding parameter adaptation component 110 can then provide the scaled frame size/frame rate values specified by the identified scaled frame size/frame rate pair for subsequent reconfiguration of the video encoder 112.
scaling_factor_set={scaling_factornm|n=0, 1, . . . , N−1; m=0, 1, . . . , M−1}, (1)
in which “N” and “M” can each be set to any suitable positive integer value. For purposes of illustration, N and M are set herein to be equal to 5 and 6, respectively. Further, “scaling_factornm” (see equation (1)) can be defined, as follows:
scaling_factornm=(scaling_factor_sizen, scaling_factor_ratem), (2)
in which “scaling_factor_sizen” corresponds to an nth one of the N predetermined spatial scaling factors for scaling the target video frame size, and “scaling_factor_ratem” corresponds to an mth one of the M predetermined temporal scaling factors for scaling the target video frame rate.
For example, the N (e.g., N=5) predetermined spatial scaling factors for scaling the target video frame size can be 1.000 (i.e., 1:1), 0.750 (i.e., 3:4), 0.500 (i.e., 1:2), 0.375 (i.e., 3:8), and 0.250 (i.e., 1:4), or any other suitable scaling factors. Further, the M (e.g., M=6) predetermined temporal scaling factors for scaling the target video frame rate can be 1.000 (i.e., 1:1), 0.667 (i.e., 2:3), 0.500 (i.e., 1:2), 0.333 (i.e., 1:3), 0.250 (i.e., 1:4), and 0.167 (i.e., 1:6), or any other suitable scaling factors. Such exemplary scaling factors for the target video frame size (n=0, 1, . . . , N−1) and the target video frame rate (m=0, 1, . . . , M−1) are provided in TABLE I below.
To obtain each of the N scaled video frame sizes (also referred to herein as the “scaled_frame_sizen”; see equation (3)), the scaling candidate handler 202 (see
scaled_frame_sizen=target_frame_size*scaling_factor_sizen. (3)
It is noted that the scaling candidate handler 202 can preserve the aspect ratio for a respective video frame by applying the same spatial scaling factor to both the target width (e.g., 1280 pixels) and the target height (e.g., 720 lines) of the respective video frame.
Likewise, to obtain each of the M scaled video frame rates (also referred to herein as the “scaled_frame_ratem”; see equation (4)), the scaling candidate handler 202 can calculate, generate, determine, or otherwise obtain the product of the target video frame rate (also referred to herein as the “target_frame_rate”; see equation (4)) and a corresponding mth one of the M (e.g., M=6) predetermined temporal scaling factors (also referred to herein as the “scaling_factor_ratem”; see equation (4)) for scaling the target video frame rate (e.g., 30 fps), as follows:
scaled_frame_ratem=target_frame_rate*scaling_factor_ratem. (4)
For example, the scaling candidate handler 202 can obtain the product of the target video frame size (e.g., 1280×720) and the 1st one (i.e., 0.750; n=1) of the N (i.e., N=5) predetermined spatial scaling factors for scaling the target video frame size, as follows:
scaled_frame_size1=(1280, 720)*0.750=(960, 540). (5)
It is noted that the scaling candidate handler 202 can obtain the remaining 0th, 2nd, 3rd, and 4th ones of the N predetermined spatial scaling factors for scaling the target video frame size in a similar fashion.
Further, the scaling candidate handler 202 can obtain the product of the target video frame rate (e.g., 30 fps) and the 1st one (i.e. 0.667; m=1) of the M (i.e., M=6) predetermined temporal scaling factors for scaling the target video frame rate, as follows:
scaled_frame_rate1=30 fps*0.667=20 fps. (6)
It is noted that the scaling candidate handler 202 can obtain the remaining 0th, 2nd, 3rd, 4th, and 5th ones of the M predetermined temporal scaling factors for scaling the target video frame rate in a similar fashion. Accordingly, the scaled frame size/frame rate pair corresponding to the scaled_frame_size1 (see equation (5)) and the scaled_frame_rate1 (see equation (6)) contains the scaled video frame size values, 960 pixels (width), 540 lines (height), and the scaled video frame rate value, 20 fps.
A full set of N×M (n=0, 1, . . . , N−1; m=0, 1, . . . , M−1) scaled frame size/frame rate pairs (scaled_frame_sizen, scaled_frame_ratem) for the target video frame size (e.g., 1280×720) and the target video frame rate (e.g., 30 fps) are provided in TABLE II below.
It is noted that the scaling candidate handler 202 (see
As described herein, the video encoding parameter adaptation component 110 is operative, for each of the scaled frame size/frame rate pairs, to calculate, generate, determine, or otherwise obtain a fair quality bitrate of encoded video provided by the video data sender 102. The fair quality bitrate is further defined herein to be a function of at least the scaled_frame_sizen (see equation (3)), the scaled_frame_ratem (see equation (4)), and the number of bits per macroblock (also referred to herein as “R”) of the encoded video, which, in turn, is a function of at least the video content complexity (also referred to herein as “σ2”).
The content complexity estimator 204 (see
σ2=f(frame_size_enc, frame_rate_enc, bitrate_enc, Qstep), (7)
in which “frame_size_enc” is an encoding parameter corresponding to the video frame size (in macroblocks), “frame_rate_enc” is an encoding parameter corresponding to the video frame rate, “bitrate_enc” is the bitrate of the encoded video, and “Qstep” is the quantization step size of the encoded video. The quantization step size, Qstep, is defined herein to be a function of at least the codec type (e.g., H.263, H.264, VP8) and a quantization parameter (also referred to herein as “QP”) employed by the video encoder 112, as follows:
Q
step
=g(codec_type, QP). (8)
In one embodiment, the video content complexity, σ2, as set forth in equation (7), can be defined in terms of a rate-distortion model, as follows:
σ2=αR*Qstep2*h(frame_size_enc)*i(frame_rate_enc), (9)
in which (1) “α” is a constant that can be set to 1.085 or any other suitable value, (2) “R” is the number of bits per macroblock of the encoded video, (3) “Qstep2” is the square of the quantization step size (Qstep), which is representative of distortion in the encoded video, (4) “h(frame_size_enc)” is a predetermined function of the encoding parameter corresponding to the video frame size (in macroblocks), and (5) “i(frame_rate_enc)” is a predetermined function of the encoding parameter corresponding to the video frame rate. Further, the content complexity estimator 204 can calculate, generate, determine, or otherwise obtain the number of bits per macroblock, R, of a current encoded video frame (also referred to herein as “Rcurr_frame”), as follows:
R
curr
_
frame=bitrate_enc/(frame_size_enc*frame_rate_enc). (10a)
The content complexity estimator 204 can also calculate, generate, determine, or otherwise obtain the quantization step size, Qstep, of the encoded video, as well as the number of bits per macroblock, R, of the encoded video, as follows:
Q
step
=ρ*Q
step
+(1−ρ)*Qstep, and (10b)
R=ρ*R
curr
_
frame+(1−ρ)*R, (10c)
in which “Qstep_curr” is the quantization step size of the current encoded video frame, and “ρ” is a predetermined weighting value that can be applied to both the value of Qstep_curr (see equation (10b)) and the value of Rcurr_frame (see equation (10c)). For example, the predetermined weighting value, ρ, can be equal to 1/64, or any other suitable value. Accordingly, the quantization step size, Qstep (see equation (10b)), of the encoded video can be calculated or updated as a weighted average of the quantization step size, Qstep_curr, of the current encoded video frame and the quantization step size, Qstep, of a previous encoded video frame; and, the number of bits per macroblock, R (see equation (10c)), of the encoded video can be calculated or updated as a weighted average of the number of bits per macroblock, Rcurr
In addition, the predetermined function, h(frame_size_enc) (see equation (9)), of the encoding parameter corresponding to the video frame size can be modeled, as follows:
h(frame_size_enc)=1+√(frame_size_enc), (11)
in which “√(frame_size_enc)” represents the square root of frame_size_enc. In addition, the predetermined function, i(frame_rate_enc) (see equation (9)), of the encoding parameter corresponding to the video frame rate can be modeled, as follows:
i(frame_rate_enc)=1+√(frame_rate_enc), (12)
in which “√(frame_rate_enc)” represents the square root of frame_rate_enc. It is noted that a sequence of video frames that is encoded at a video frame resolution (i.e., width×height) less than that of an original video frame sequence typically exhibits a lower correlation among pixels in the video frames compared to pixels in the video frames of the original video frame sequence. Likewise, a video frame sequence that is encoded at a video frame rate less than that of an original video frame sequence typically exhibits a lower correlation between adjacent video frames compared to adjacent video frames of the original video frame sequence. In each case, such reduced correlation among the pixels in the video frames of the scaled video frame sequence can result in an increase in the number of bits per macroblock, R, of the encoded video for the same quantization step size, Qstep, used to encode the video frames. To account for such possible increases in the number of bits per macroblock, R, of the encoded video due to a reduced correlation among the pixels in the video frames of the scaled video frame sequence, the predetermined functions, h(frame_size_enc) (see equation (11)) and i(frame_rate_enc) (see equation (12)), are provided as multiplicative factors in the expression for the video content complexity, σ2, as defined herein in equation (9).
It is further noted that the rate-distortion model used to define the video content complexity, σ2, as set forth in equation (9), may provide complexity information with reduced accuracy for certain upper and/or lower ranges of the number of bits per macroblock, R, of the encoded video, and/or the quantization step size, Qstep, of the encoded video. For this reason, the content complexity estimator 204 can be configured to employ the rate-distortion model set forth in equation (9) to obtain the video content complexity, σ2, for a predetermined region of interest 220 in the R and Qstep domains, and employ one or more modified rate-distortion models to obtain the video content complexity, σ2, outside the predetermined region of interest 220 in the R and Qstep domains.
In one embodiment, the content complexity estimator 204 can calculate, generate, determine, or otherwise obtain the boundary values t1, t2, defining the region of interest 220 (see
t
1=δ*(1+2*j(σ2)), and (13)
t
2=λ*(1+2*j(σ2)), (14)
in which “δ” is a constant that can be set to 12.00 or any other suitable value, “λ” is a constant that can be set to 24.00 or any other suitable value, and “j(σ2)” is a predetermined function of the video content complexity, σ2. In one embodiment, the predetermined function, j(σ2), can be modeled, as follows:
in which “T1” is a constant that can be set to 500,000 or any other suitable value.
The content complexity estimator 204 can further calculate, generate, determine, or otherwise obtain the boundary values t3, t4, defining the region of interest 220 along the Qstep axis (see
t
3=μ*(1+2*k(σ2)), and (16)
t
4=ω*(1+2*k(σ2)), (17)
in which “μ” is a constant that can be set to 8.00 or any other suitable value, “ω” is a constant that can be set to 20.00 or any other suitable value, and “k(σ2)” is a predetermined function of the video content complexity, σ2. In one embodiment, the predetermined function, k(σ2), can be modeled, as follows:
in which “T2” is a constant that can be set to 750,000 or any other suitable value. Within the region of interest 220 (see
To increase the accuracy of video content complexity calculations for such large values of R (e.g., R>t2; see
σ2=(αt2+γ*(R−t2))*Qstep2*h(frame_size_enc)*i(frame_rate_enc), (19)
in which “γ” is a constant that can be set to 0.8 or any other suitable value. As shown in
To increase the accuracy of video content complexity calculations for such small values of R (e.g., R<t1;
σ2=αt1*β(R−t1)*Qstep2*h(frame_size_enc)*i(frame_rate_enc), (20)
in which “β” is a constant that can be set to 1.15, or any other suitable value greater than the value of the constant, α. As shown in
Moreover, to increase the robustness of such video content complexity calculations, the content complexity estimator 204 can detect or otherwise determine whether a scene change has occurred in a sequence of video frames, and, if it is determined that such a scene change has occurred, then increase the weighting value, ρ, applied to the quantization step size, Qstep_curr (see equation (10b)), of the current encoded video frame, as well as the number of bits per macroblock, Rcurr_frame (see equation (10c)), of the current encoded video frame. For example, the weighting value, ρ, can be increased from 1/64 to 0.5, or any other suitable value. By increasing the weighting value, ρ, applied to the quantization step size, Qstep_curr (see equation (10b)), and the number of bits per macroblock, Rcurr_frame (see equation (10c)), the contribution of the quantization step size, Qstep, of the encoded video in the determination of Qstep (see equation (10b)), as well as the contribution of the number of bits per macroblock, R, of the encoded video in the determination of R (see equation (10c)), are each decreased. Further, the contribution of the quantization step size, Qstep curr, of the current encoded video frame in the determination of Qstep (see equation (10b)), as well as the number of bits per macroblock, Rcurr_frame, of the current encoded video frame in the determination of R (see equation (10c)), are each increased. In this way, such contributions of the quantization step size, Qstep, and the number of bits per macroblock, R, of the encoded video from an earlier scene prior to the detected scene change can each be reduced in the determination of the video content complexity, σ2 (see equation (9)).
To further increase the robustness of such video content complexity calculations, if it is determined that a scene change has not occurred, the content complexity estimator 204 can detect or otherwise determine whether the current encoded video frame is an inter-frame (e.g., P-frame, B-frame). If it is determined that the current encoded video frame is an inter-frame, then the content complexity estimator 204 can take into account the video quality of at least one reference frame for the detected inter-frame while determining the video content complexity, σ2. For example, the content complexity estimator 204 can determine the video quality of such a reference frame based at least on the quantization parameter(s) (QP) used to encode the reference frame. If the QP value(s) for the reference frame is/are relatively high, then the video quality of the reference frame can be determined to be “bad”. Otherwise, if the QP value(s) is/are relatively low, then the video quality of the reference frame can be determined to be “good”. It is noted that a reference frame with a bad video quality can lead to increased temporal prediction errors for at least the next few inter-frames in a video frame sequence, resulting in video complexity values for the respective inter-frames that can be larger than the actual video content complexity values.
In one embodiment, the content complexity estimator 204 can determine the average QP used to encode a plurality of macroblocks of a current reference frame (also referred to herein as “QPref_avg”), as well as the average QP used to encode macroblocks of one or more previously used reference frames (also referred to herein as “QPref_avg_prev”). If the value of QPref_avg is different from the value of QPref_avg_prev (e.g., if the value of QPref_avg is greater than the value of QPref_avg_prev by a predetermined amount), then the content complexity estimator 204 can modify the weighting value, ρ, applied to the quantization step size, Qstep_curr (see equation (10b)), and the number of bits per macroblock, Rcurr_frame (see equation (10c)), as follows:
ρ(QPref_diff)=ρ0*η(QPref_diff), (21)
in which “ρ” is defined to be a function of “QPref_diff”, which is equal to the absolute value of the difference between the values of QPref_avg and QPref_avg_prev; “ρ0” is a constant that can be set to 1/64 or any other suitable value; and, “η” is likewise defined to be a function of QPref_diff, as follows:
It is noted that, for the codec type VP8, “T3” and “T4” in equation (22) can be set to 4.0 and 20.0, respectively, or any other suitable values.
It is further noted that the content complexity estimator 204 can employ different values for the encoding parameters (e.g., bitrate_enc, frame_size_enc, frame_rate_enc, Qstep) used to obtain the video content complexity, σ2, based on whether a current video frame is an intra-frame (e.g., I-frame) or an inter-frame (e.g., P-frame, B-frame). In this way, the content complexity estimator 204 can account for increased video content complexity values that can result from the presence of an I-frame in a video sequence, as well as general differences in the frame characteristics of I-frames, P-frames, and/or B-frames.
In a further embodiment, a target quantization step size of encoded video (also referred to herein as “Qstep target”) can be defined to be a function of at least the video content complexity, σ2, and the encoding parameter corresponding to the video frame rate, frame_rate_enc, as follows:
Q
step
_
target
=m(σ2, frame_rate_enc). (23)
In this further embodiment, the function, “m(σ2,frame_rate_enc)” (see equation (23)), can be implemented as a lookup table, which can be determined using a number of standard video test sequences such as those identified as “Mother and Daughter”, “Akiyo”, “Walking”, and “Big Buck Bunny”. For example, the target quantization step size, Qstep_target, of the encoded video can have a value of 15 for each of the standard video test sequences identified as “Mother and Daughter” and “Akiyo”, both of which are known to have relatively low video content complexity. Further, the target quantization step size, Qstep_target, of the encoded video can have values of 24 and 20 for the standard video test sequences identified as “Walking” and “Big Buck Bunny”, respectively, both of which are known to have higher video content complexities. Accordingly, in such a lookup table implementing the function, m(σ2,frame_rate_enc) (see equation (23)), higher video content complexity values can correspond to increased Qstep_target values, while lower video content complexity values can correspond to reduced Qstep target values.
Having obtained the target quantization step size, Qstep_target, of the encoded video, in accordance with equation (23), the content complexity estimator 204 can calculate, generate, determine, or otherwise obtain the number of bits per macroblock, R, of the encoded video, as follows:
R=logα(σ2)−logα(Qstep_target2)−logα(h(frame_size_enc))−logα(i(frame_rate_enc)). (24)
The fair quality bitrate estimator 208 (see
fair_quality_bitratenm=o(scaled_frame_sizen, scaled_frame_ratem, R) . (25)
In one embodiment, the fair quality bitrate estimator 208 can obtain the fair quality bitrate as a piecewise linear function of the video frame size and the video frame rate, having a slope corresponding to the number of bits per macroblock, R, of the encoded video, as follows:
fair_quality_bitratenm=R*scaled_frame_sizen*scaled_frame_ratem. (26)
In accordance with equation (26), the fair quality bitrate estimator 208 can set the slope, R, to different values for different 2-dimensional regions of the video frame size and video frame rate, taking into account that encoded video having a lower spatial or temporal resolution for the same video content generally requires more bits to encode each macroblock at the same video quality level. For example, setting the slope, R, to 30, the fair quality bitrate estimator 208 can calculate, generate, determine, or otherwise obtain a fair quality bitrate equal to about 89.1 kilobits per second (Kbps) for a Quarter Common Intermediate Format (QCIF) video frame at a video frame rate of 30 fps. Further, setting the slope, R, to 19.5, the fair quality bitrate estimator 208 can obtain a fair quality bitrate equal to about 232.1 Kbps for a Common Intermediate Format (CIF) video frame at the video frame rate of 30 fps. Still further, setting the slope, R, to 29.3, the fair quality bitrate estimator 208 can obtain a fair quality bitrate equal to about 174.1 Kbps for a CIF video frame at a video frame rate of 15 fps.
In a further embodiment, the fair quality bitrate estimator 208 can dynamically update the number of bits per macroblock, R, of the encoded video based on certain encoding statistics, and subsequently obtain the fair quality bitrate, as follows:
fair_quality_bitratenm=R*scaled_frame_sizen*(ε*original_frame_rate+(1−ε)*scaled_frame_ratem), (27)
in which “original_frame_rate” is the video frame rate of the video encoder 112 prior to being scaled by the scaling candidate handler 202 (see
As further described herein, the video encoding parameter adaptation component 110 is operative, for each of the scaled frame size/frame rate pairs, to calculate, generate, determine, or otherwise obtain a scaling penalty that takes into account possible effects of spatial scaling and/or temporal scaling of video frames on the resulting video QoE. In one embodiment, the scaling penalty (also referred to herein as the “scaling_penaltynm”; see equation (28)) can be defined to be a function of at least (1) the encoding parameter corresponding to the size of the last or previous video frame encoded by the video encoder 112 (also referred to herein as the “frame_size_enc”; see equation (28)), (2) the encoding parameter corresponding to the rate of the last or previous video frame encoded by the video encoder 112 (also referred to herein as the “frame_rate_enc”; see equation (28)), (3) the original or target video frame size (also referred to herein as the “frame_size_target”; see equation (28)), (4) the original or target video frame rate (also referred to herein as the “frame_rate_target”; see equation (28)), (5) the scaled video frame size (also referred to herein as the “scaled_frame_sizen”; see equation (28)), (6) the scaled video frame rate (also referred to herein as the “scaled_frame_ratem”; see equation (28)), (7) the spatial complexity of the video content, and (8) the motion complexity of the video content, as follows:
scaling_penaltynm=p(frame_size_target, frame_rate_target, frame_size_enc, frame_rate_enc, scaled_frame_sizen, scaled_frame_ratem, spatial complexity, motion complexity). (28)
The motion complexity of the video content can be defined in terms of the average amplitude of the motion vectors for each macroblock of the video content. Such motion vectors are generally defined in video compression standards (such as the H.264/AVC (Advanced Video Coding) video compression standard) as two-dimensional vectors that can be used for inter-prediction, each two-dimensional motion vector providing an offset from the coordinates in a current video frame to the coordinates in a corresponding reference video frame. The spatial complexity of the video content can be obtained by dividing the video content complexity, σ2, by the square root of the motion complexity of the video content.
The scaling penalty estimator 206 (see
scaling_penalty_scalenm={1+ScalingPenaltyConstant*m*n|n=0, 1, . . . , N−1; m=0, 1, . . . , M−1}, (29)
in which “N” is the total number of predetermined spatial scaling factors, “n” corresponds to the nth one of the N predetermined spatial scaling factors, “M” is the total number of predetermined temporal scaling factors, “m” corresponds to the mth one of the M predetermined temporal scaling factors, and “ScalingPenaltyConstant” is a constant that can be determined empirically to be equal to 0.1 or any other suitable value.
In addition, the scaling penalty estimator 206 can calculate, generate, determine, or otherwise obtain different penalties for spatial scaling (also referred to herein as the “scaling_penalty_spatialn”; see equation (30)) and temporal scaling (also referred to herein as the “scaling_penalty_temporalm”; see equation (31)), as follows:
scaling_penalty_spatialn={1.0+30*spatio_temporal_factor*n |n=0, 1, . . . , N−1}, and (30)
scaling_penalty_temporalm={1.0+(m/spatio_temporal_factor)|m=0, 1, . . . , M−1}. (31)
It is noted that the “spatio_temporal_factor” (see equations (30) and (31)) can be defined, as follows:
in which “φ” and “θ” are constants that can be set to 0.25 and 0.5, respectively, or any other suitable values. The “scaling_penalty_scalenm” (see equation (29)) can therefore be further expressed, as follows:
scaling_penalty_scalenm=scaling_penalty_spatialn*scaling_penalty_temporalm, (33)
in which “scaling_penalty_spatialn” and “scaling_penalty_temporalm” are defined as in equations (30) and (31), respectively.
The “spatio_temporal_factor” (see equation (32)) is employed in equations (30) and (31) for the purpose of prioritizing the dimension (spatial, temporal) of scaling based on the target resolution (as defined by the “frame_size_target” and the “frame_rate_target”; see equation (32)); i.e., prioritizing the use of spatial scaling over temporal scaling, or, alternatively, prioritizing the use of temporal scaling over spatial scaling. For example, for smaller video formats, such as the Common Intermediate Format (CIF) that defines video sequences with a reduced resolution of 352×288, the use of temporal scaling can be prioritized over spatial scaling. Further, for video formats such as 720P (1280×720) that have a high level of motion in the video content, the use of spatial scaling can be prioritized over temporal scaling.
The scaling penalty estimator 206 can further calculate, generate, determine, or otherwise obtain lower penalties for each of the N×M scaled frame size/frame rate pairs that are closer to the video frame size and video frame rate used to encode the previous video frame, as follows:
in which “υ” and “ν” are constants that can be set to 0.5 and 0.75, respectively, or any other suitable values. In this way, frequent changes in the video frame size and/or the video frame rate can be avoided by giving a preference to the current resolution.
The scaling penalty estimator 206 can further calculate, generate, determine, or otherwise obtain a higher penalty for a lower scaled frame rate in a video frame sequence that has an increased amount of motion, as follows:
in which “MAX_MOTION_COMPLEXITY” is a constant that can be set to 32 or any suitable value.
Likewise, the scaling penalty estimator 206 can calculate, generate, determine, or otherwise obtain a higher penalty for a lower scaled frame size in a video frame sequence that has an increased amount of spatial complexity (i.e., the video frame sequence contains an increased amount of spatial details), as follows:
in which “MAX_SPATIAL_COMPLEXITY” is a constant that can be set to 200,000 or any suitable value. Taking into account the various penalties derived in equations (33), (34), (35), and/or (36), the scaling penalty estimator 206 (see
scaling_penaltynm=scaling_penalty_scalenm*scaling_penalty_changenm*scaling_penalty_motionm*scaling_penalty_detailsn. (37)
Having obtained the fair quality bitrate and the scaling penalty for each of the N×M scaled frame size/frame rate pairs, the video encoding parameter adaptation component 110 can calculate a score value for the respective scaled frame size/frame rate pair. As described herein, such a score value (also referred to herein as the “scorenm”; see equation 38)) can be a function of at least (1) the absolute value of the difference between the fair quality bitrate (i.e., the “fair_quality_bitratenm”; see equations (25), (26), (27), and (38)) and the target bitrate (also referred to herein as the “target_bitrate”; see equation (38)) obtained from the estimated available bandwidth of the video data receiver 104, and (2) the scaling penalty (i.e., the “scaling_penaltynm”; see equations (28), (37), and (38)), as follows:
scorenm=f(|fair_quality_bitratenm−target_bitrate|, scaling_penaltynm). (38)
In one embodiment, the score value calculator 210 can calculate the score value (i.e., the “scorenm”; see equation (38)) by calculating, generating, determining, or otherwise obtaining the reciprocal of the product of the scaling penalty (i.e., the “scaling_penaltynm”; see equation (38)) and the absolute value of the difference between the fair quality bitrate (i.e., the “fair_quality_bitratenm”; see equation (38)) and the target bitrate (i.e., the “target_bitrate”; see equation (38)), as follows:
scorenm=1/(|fair_quality_bitratenm−target_bitrate|*scaling_penaltynm). (39)
Further, the scaled frame size/frame rate pair identifier 212 (see
It is noted that the multimedia communications system 100 (see
It is noted that the video encoder 112 can be configured to operate in accordance with the H.263 video compression format, the H.264/AVC video compression format, the VP8 video compression format, or any other suitable video compression format that allows the video encoder 112 to dynamically adapt its encoding parameters to specified changes in the video frame size and/or the video frame rate, in accordance with the systems and methods described herein. Moreover, the multimedia communications system 100 can be configured to operate in accordance with the WebRTC API (Application Programming Interface) definition, or any other suitable API definition that supports applications requiring such specified changes in the video frame size/frame rate to be performed at a video data sender (such as the video data sender 102; see
A method of dynamically adapting video encoding parameters including at least a video frame size and/or a video frame rate employed by the video data sender 102 to an available bandwidth of the video data receiver 104 is described herein with reference to
It is noted that the operations herein described are purely exemplary and imply no particular order. Further, the operations can be used in any sequence when appropriate and can be partially used. With the above illustrative embodiments in mind, it should be understood that the above-described systems and methods could employ various computer-implemented operations involving data transferred or stored in computer systems. These operations are those requiring physical manipulation of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic, or optical signals capable of being stored, transferred, combined, compared, and/or otherwise manipulated.
Moreover, any of the operations described herein that form part of the above-described systems and methods are useful machine operations. The above-described systems and methods also relate to a device or an apparatus for performing such operations. The apparatus can be specially constructed for the required purpose, or the apparatus can be a general-purpose computer selectively activated or configured by a software program stored in the computer. In particular, various general-purpose machines employing one or more processors coupled to one or more computer readable media can be used with software programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.
The above-described systems and methods can also be embodied as computer readable code on a computer readable medium. The computer readable medium is any data storage device that can store data, which can be thereafter be read by a computer system. Examples of such computer readable media include hard drives, read-only memory (ROM), random-access memory (RAM), CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, and other optical and non-optical data storage devices. The computer readable media can also be distributed over a network-coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
It will be appreciated by those of ordinary skill in the art that modifications to and variations of the above-described systems and methods may be made without departing from the inventive concepts disclosed herein. Accordingly, the invention should not be viewed as limited except as by the scope and spirit of the appended claims.