The present invention generally relates to systems and methods of estimating and determining causes of video artifacts and video source delivery issues in a packetized video stream. More particularly, the present invention relates to detecting video artifacts and causes of video artifacts and video source delivery issues in a packet-based video broadcast system, using coding layer with GPU-assisted image analysis.
In a typical broadcast systems, such as in IPTV (Internet Protocol Television) and direct broadcast satellite (DBS) applications, multiple video programs are encoded in parallel, and the digitally compressed bit streams are multiplexed onto a single, constant or variable bit rate channel. The video coding layer, such as MPEG2/H.264-AVC, is typically packetized into small fixed-size packets, such as MPEG2 Transport Stream, before transmission to an IP (Internet Protocol) network.
When video is transmitted over a packet-switched network, the coded sequence of video can suffer impairments from packet losses. Several other factors influence the overall picture quality as well. Picture distortion can be caused by quantization process in compression as well as quality degradation due to packet loss and error, propagation and temporal effects of the human visual system.
Video artifacts are introduced by the system due to packet loss that can cause loss of slices and macroblocks at the coding layer, network jitter that causes frame freezes or jerkiness, as well as blockiness and blur due to AC (non-zero frequencies) coefficients loss in the coded stream due to compression. These distortions can manifest as visual artifacts in the form of blockiness, blur, freeze, black screen or jerkiness.
Estimating the extent of packet loss and its error propagation to finally determine a quality score requires analyzing the effects of these distortions. Estimating distortions in pixel domain requires video to be uncompressed and applying frequency domain transformation (FFT) to separate high and low frequency components and perform analysis.
However, this process is computationally prohibitive as the number of channels that needs to be analyzed grows. Computation cost to run image analysis based artifact detection algorithms on a CPU can also be prohibitive.
Accordingly, there is a continuing need for a system and process for estimating and determining causes of video artifacts and video source delivery issues in a packet-based video broadcast system. The system and process should not be computationally or cost prohibitive. Further, a system and process is needed which determines physical network level elements which cause the video service degradation. The present invention fulfills these needs, and provides other related advantages.
The present invention resides in a system and process for estimating and determining causes of video artifacts and video source delivery issues in a packet-based video broadcast system. The present invention is a hybrid approach, utilizing both video coding layer with DCT (Discrete Cosine Domain) information as well as pixel domain information, to detect artifacts and determine the root cause of the anomaly.
More particularly, the present invention provides a way to estimate video artifacts using a hybrid approach—information from the video coding layer in real time by the analysis of coded syntax elements and their data, as well as sample information in compressed frequency domain, as well as performing parallel image analysis algorithms on pixel samples. It is desirable to create parallel algorithms that can run on GPU (Graphics Processing Unit) cores, thereby offloading the main CPU (Central Processing Unit).
The process of the present invention generally comprises the steps of analyzing video coding layer information of a compressed video stream. Values of degradation of a video coding layer are computed. An image algorithm is run in a GPU that compute values of video artifacts at an image layer. The computed values from the video coding layer and the image layer are combined to deduce the cause of the video artifact and video source delivery issues.
Sample values of spatial predicted pixel values are extracted and sent to the GPU for image analysis. Typically, parallel image algorithms are run in the GPU. Parallel GUP threads may be run to compute image blockiness. Parallel GPU threads may also be run to compute image blur.
Discrete sections and information of the compressed video stream are analyzed. The discreet sections and information may comprise quantizer, slices, macroblocks, DC coefficients and AC coefficients. Loss blockiness is determined by analyzing and counting macroblock and slice losses. Blackout is determined by analyzing DC values. Video freeze is determined by analyzing DC values. Compression blockiness is determined by analyzing quantizer computations.
The physical network level elements which cause the video service degradation are determined. It may be determined that an encoder peak bandwidth setting needs to be increased when it is determined that a compression blockiness is high, a source blockiness is high, and a mean opinion score of the video is low and degraded. It may also be determined that an encoder peak bandwidth setting needs to be increased when it is determined that a compression blockiness is high, a loss blockiness is normal, a source blockiness is normal, and a mean opinion score of the video is low and degraded.
Alternatively, it may be determined that an upstream encoder rate setting and/or an upstream content provider need to be inspected when it is determined that a compression blockiness is normal, a source blockiness is high, and a mean opinion score of the video is low and degraded. It may also be determined that an upstream encoder rate setting and/or an upstream content provider need to be inspected when it is determined that blurriness is high, a compression blockiness is normal, a loss blockiness is normal, a source blockiness is normal, and a mean opinion score of the video is low and degraded.
It may be determined that a router queue or schedule and/or streaming encoder buffers need to be inspected when it is determined that freeze delivery is high, video freeze is high, blurriness is normal, a compression blockiness is normal, a loss blockiness is normal, a source blockiness is normal, and a mean opinion score of the video is low and degraded. It may also be determined that a router queue and/or streaming encoder buffers need to be inspected when it is determined that a loss blockiness is high, a source blockiness is normal, and a mean opinion score of the video is low and degraded.
The present invention can be used to provide a distributed system to estimate perceived video quality. The invention can be used to determine cost of IP packet loss, macroblock and slice losses. The present invention can be used to quickly determine video artifacts such as black screen, freeze, ghosting, jerkiness, blur and blocking.
The present invention can help a video service provider to determine the cause of video service degradation due to video content impairments, network jitter, losses, compression issues or service availability. The invention can also be used to perform root cause analysis to determine the cause of the video artifact in a service provider network.
Other features and advantages of the present invention will become apparent from the following more detailed description, taken in conjunction with the accompanying drawings, which illustrate, by way of example, the principles of the invention.
The accompanying drawings illustrate the invention. In such drawings:
The present invention, as shown in the accompanying drawings for purposes of illustration, relates to a system and process for estimating and determining causes of video artifacts and video source delivery issues in a packet-based video broadcast system. As will be more fully described herein, the present invention analyzes the video coding layer information of a compressed video stream and computes values of degradation of the video coding layer, and also computes values of video artifacts at an image layer, preferably utilizing the GPU, and combines the computed values to deduce the cause of the video artifact and video source delivery issues. The present invention can also be used to determine physical network level elements which are causing the video service degradation.
The present invention can be used in an IPTV (Internet Protocol Television) delivery system.
As outlined above,
An IPTV network will also consist of a variety of management, provisioning and service assurance elements. Typically it could include an Operation Support System (OSS) and/or Broadcast Support System (BSS) 118, subscriber management system 120 and application servers 122 to create new value added services.
At the edge 124 of the server, the content could be stored in a VOD server 126 or a broadcast server 128 that is located close to the consumer 106. It is typically located at an edge 124 of the network. A consumer has access to their broadband access line 130, which could be a Cable/DSL line 132. A television is typically connected to a setop box 134 that decodes the video stream to component output.
It will be appreciated by those skilled in the art that there are many places along the network where errors, artifacts and the like can be introduced or delivery issues experienced with the video packet and stream. These errors can occur during encoding, packetization, compression, etc. The implementation of new hardware or software or the communication links within the network can also contribute to the video source delivery issues and video artifacts.
A protocol stack for a packetized video stream is illustrated in
The pixel values and their block structure are passed through the CPU/GPU shared Random Access Memory (RAM) 420 and onto the GPU 402 for further processing and computation. At the CPU/GPU shared RAM 420, the pixel value is passed through a YUV frame buffer queue and macroblock mask. Pixel values have Y (luminance) and Cb and Cr (color) components. These values and macroblock mask are sent to the shared memory between CPU and GPU for computation.
The GPU process of the image has functions like the luma frame sample read 422, the L1 norm operation on pixel data 424, which measures the absolute distance between the pixels and FFT (Fast Fourier Transform) to convert from sample domain to frequency domain 426. Blockiness computation block 428 computes the level of blockiness in the image, likewise Bluriness computation block 430 computes blurriness in the image. After the computations, thresholding is performed 432, to allow certain values that meet or exceed a certain value to be considered in final computation. Each operation can be assigned to a GPU local memory register thread 434 that will allow the computations to execute in parallel.
From
Detailed pseudocode for detecting blackout can be implemented as follows:
With reference now to
After decoding the video to the transform values in the macroblock, DC values at each INTRA predicted macroblock are read. All DC values from all the blocks in the frame are stored in memory. These values are compared with DC values from all subsequent frames using RMSE. Frames that show similarity are counted as frozen frames.
Detailed pseudocode for the procedure to detect freeze can be implemented as follows:
To detect jerkiness, the actual frame rate at which the frame needs to be rendered is read from the compressed bitstream. Received frame arrival time is noted. Deviation from the original frame rate is computed and the value obtained is treated as jerkiness.
More particularly, with reference to
Detailed pseudocode to detect jerkiness can be implemented as follows:
Block-based video compression involves block partitioning of the image prior to several other processing steps. The image being encoded is partitioned into 8×8 blocks, and DCT (Discrete Cosine Transform) applied to the pixels in each block. The lowest frequency component (DC) maps to the index 0 transform coefficient, while the highest frequency component maps to index 7 transform coefficient, which is the order of human visual systems sensitivity. Each DCT coefficient in each block is independently quantized prior to an entropy coding procedure. At low bit rates blocking artifacts appear at the block boundaries due to the loss of AC (high frequency) coefficients in quantization process. Reason for the blocking artifacts is due to the independent quantization of each block. Blockiness is detected by analyzing the quantizer at the macroblock.
In MPEG2, the two dimensional array of coefficients is inverse quantized to produce the reconstructed DCT coefficients. This process is essentially a multiplication by the quantizer step size. The quantizer step size is modified by two mechanisms: 1) a weighting matrix is used to modify the step size within a block; and 2) a quantizer scale factor is used in order that the step size can be modified at the cost of only a few bits (as compared to encoding an entire new weighting matrix). The cumulative quantization in a picture is determined using quantizer matrix and quantizer scale factor in each of the macroblock. Average quantization per macroblock is computed. The model knows the level of quantization that constitutes 100% blockiness on an average block basis. The percentage of blockiness from this level is computed for each picture. Maximum blockiness gives the picture with highest blockiness level among a series of pictures as computed by the quantizer model.
In a compressed bitstream, quantization parameter specifies the level of compression i.e the amount of high frequency component (AC) value loss that cause blocky artifact. This parameter is compared against a predefined threshold derived from the deblocking filter values in compressed bitstream. If the quantization parameter exceeds the threshold value, it is treated as level of blockiness being high.
With reference now to
Pseudocode to compute AC coefficient loss and blockiness is as follows:
Video decoding up to the transform values are performed according to the standard. Packet encapsulation de-multiplexing, VCL (Video Coding Layer) syntax element processing and macroblock processing are scheduled on CPU threads as illustrated in
Frame buffer is transferred to global shared CPU/GPU memory and assigned to a thread from thread block in GPU core.
With reference now to
Detailed pseudocode to compute blockiness is as follows:
If (stream_type==H264) Compute Source_Blockiness using following high level pseudocode,
In order to compute blur, in accordance with the present invention, each row of images are read. The pixels are traversed from left to right. The current pixel difference is calculated and compared with previous, and assigned the operation on a per-GPU-thread basis. If there is a sudden opposite gradient, trait as a blurry edge based on a threshold value. Both positive and negative gradients are looked for. From the above, the total blurriness is estimated.
With reference to
Blur is computed using following parallel algorithm:
With reference again to
If freeze related to content as seen by RMSE (Root Mean Square Error) procedure described in above sections, check to see, if encoder SDI (Serial Digital Interface) sync loss caused the video frame repetition. If not, check to see if the video content has repeated frames embedded in it, by replaying alarmed event video snapshot.
If the blurriness 808 is high and exceeds the predetermined threshold, the upstream encoder rate settings and content provider are inspected 820.
If it is determined that the compression blockiness 806 is high and exceeds the predetermined threshold, the encoder peak bandwidth setting is increased 822.
If the loss blockiness 804 is determined to be high and exceeding the predetermined threshold, the router queue and network schedule may be inspected and/or the streaming encoder buffers/in-out (IO) may require inspection 824.
If the source blockiness 802 is determined to be high and exceeding the predetermined threshold, it is then determined whether the compression is blocky at node 826. If it is normal, the upstream encoder rate setting may be inspected and/or the upstream content provider may be inspected 828. However, if the compression blockiness is deemed to be high and exceeding predetermined thresholds, the encoder peak bandwidth setting may need to be increased 830.
Blockiness cause can be diagnosed using following method—source can be transcoding, prior source, compression or block damage:
Although several embodiments have been described in detail for purposes of illustration, various modifications may be made without departing from the scope and spirit of the invention. Accordingly, the invention is not to be limited, except as by the appended claims.
Number | Date | Country | |
---|---|---|---|
61710368 | Oct 2012 | US |