This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Error Concealment on TI H.264 HP Decoder on c66x

The user guide for the c66x H.264 High Profile Decoder mentions support for basic error concealment.  Can you provide details of the type of concealment that is done and under what conditions?

Would the decoder provide concealment if parts of a video frame are missing due to packet loss? Does the concealment use spatial or temporal techniques or both? Are there any test clips that show the improvement with and without concealment?

  • Hi Neil,

    The decoder does both spatial and temporal error concealment in case of corrupted or missing MBs. In case of spatial concealment, it uses the neighboring MB pixel data and if there are no valid neighbors, then it fills that MB with 0x80. In case of temporal concealment, the neighboring MB MV is used.

    Further, in case of field decoding, if either the top or bottom field is missing, then it simply copies the available field to conceal the missing field.

     

    Thanks,

    Praveen

  • Hi Neil,

    I have already shared the details on error concealment through e-mail, here I am explaining for  the benefit of other users.

    Below are the details of spatial and temporal error concealment that decoder does in case of corrupted or missing MBs.

    1.If decoder finds a corrupted MB while decoding a slice then it skips decoding the total slice from that point and then continue with next slice.

    2.For the corrupted MBs in a I-Slice the spatial concealment  is applied, it uses the neighboring MB pixel data and if there are no valid neighbors, then it fills that MB with 0x80.

    3.For the corrupted MBs in a P-Slice the temporal concealment is applied, it uses the collocated MB from the reference frame if available and then copy that MB pixel data to conceal the corrupted MB.

    We have explained concealment in this demo, we used a 704x480 resolution progressive test case with 4 GOPs and each GOP having 30 frames, so total 120 frames in the test vector. Further this test vector is having 6 slices in each frame and 220 MBs in each slice.The decoded yuv files can be downloaded from the attachments, please note that decoded files are encoded and attached due to lager size to share here.

    case 1 : football_704x480_original.yuv (5078.football_704x480_original.zip )
        - Is a decoded yuv file without any corruption of MBs and without any concealment.

    case 2 : football_704x480_spatial.yuv (8321.football_704x480_spatial.zip)
        - We corrupted 3rd slice in first I-frame (frame no 1) and 4th slice in 3rd I-frame (frame no 61) and then decoded to see the behavior of spatial concealment.

    case 3 : football_704x480_temporal.yuv ( 2514.football_704x480_temporal.zip)
        - We corrupted 2nd slice in P- frames of 2nd GOP (i.e between frame no 31 to 60) and 5th slice in P- frames of 4th GOP (i.e between frame no 91 to 120 ) and then decoded to see the behavior of temporal concealment.

    case 4 : football_704x480_conceal_both.yuv ( 7563.football_704x480_conceal_both.zip)
        - We corrupted both I-Frames and P-frames together (i.e case 2 and case 3 together) and then decoded to see the behavior of both spatial and temporal concealment

    case 5 : football_704x480_wo_conceal.yuv ( 8507.football_704x480_wo_conceal.zip)
        - Case 4 without concealment (Commented out the conceal function calls) then decoded to see the behavior of decoder without concealment.

    Please let us know for any questions.

    Thanks,
    Praveen.