After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 753226 - decoder: Fix hevc decode issues of specific streams
decoder: Fix hevc decode issues of specific streams
Status: RESOLVED FIXED
Product: gstreamer-vaapi
Classification: Other
Component: general
git master
Other Linux
: Normal major
: ---
Assigned To: gstreamer-vaapi maintainer(s)
gstreamer-vaapi maintainer(s)
Depends on:
Blocks: 750547
 
 
Reported: 2015-08-04 09:36 UTC by sreerenj
Modified: 2015-08-13 09:23 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description sreerenj 2015-08-04 09:36:17 UTC
List of Unplayable streams:

CAINIT_G_SHARP_3.bin
CAINIT_H_SHARP_3.bin
DBLK_D_VIXS_2.bin
DSLICE_A_HHI_5.bin
DSLICE_B_HHI_5.bin
DSLICE_C_HHI_5.bin
ENTP_C_LG_3.bin
IPRED_B_Nokia_3.bin
MVDL1ZERO_A_docomo_3.bin
PICSIZE_A_Bossen_1.bin
PICSIZE_B_Bossen_1.bin
PICSIZE_C_Bossen_1.bin
PICSIZE_D_Bossen_1.bin
RAP_B_Bossen_1.bin
RPS_B_qualcomm_5.bin
RPS_E_qualcomm_5.bin
SLIST_B_Sony_8.bin
TSCL_A_VIDYO_5.bin
TSCL_B_VIDYO_4.bin
Comment 1 sreerenj 2015-08-05 09:49:46 UTC
commit cb8b2af5f0fb7c0d5579e2c3e39e33b79ce60431
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Wed Aug 5 05:23:20 2015 +0300

    decoder: hevc: Fix the decoding of dependent slice segment
    
    Decoding process for reference picture list construction needs to be
    invoked only for P and B slice and the value for slice_type of dependent slice
    segment should be taken from the previous independent slice segment header
    of the same pic.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=753226
    
    Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>


This will make the following list of stream playable:
CAINIT_G_SHARP_3.bin
CAINIT_H_SHARP_3.bin
DBLK_D_VIXS_2.bin
DSLICE_A_HHI_5.bin
DSLICE_B_HHI_5.bin
DSLICE_C_HHI_5.bin
MVDL1ZERO_A_docomo_3.bin
RAP_B_Bossen_1.bin
RPS_B_qualcomm_5.bin
RPS_E_qualcomm_5.bin
SLIST_B_Sony_8.bin
Comment 2 sreerenj 2015-08-05 09:50:47 UTC
Still unplayable streams:

ENTP_C_LG_3.bin
IPRED_B_Nokia_3.bin
PICSIZE_A_Bossen_1.bin
PICSIZE_B_Bossen_1.bin
PICSIZE_C_Bossen_1.bin
PICSIZE_D_Bossen_1.bin
TSCL_A_VIDYO_5.bin
TSCL_B_VIDYO_4.bin
Comment 3 sreerenj 2015-08-06 09:47:31 UTC
commit 696b446f097a3a00e19307a1106c950a170b80a1
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Thu Aug 6 04:01:24 2015 +0300

    decoder: hevc: Fix decoding of stream when it has temporal sublayers
    
    We are calculating the dpb size based on max_dec_pic_buffering.
    But if there are more than one temporal sublayers, we are supposed
    to use the max_dec_pic_buffering[max_sub_layers_minus] for dpb
    size calculation (Assuming HighestTid as max_sub_layers_minus).
    
    Sample streams: TSCL_A_VIDYO_5.bin, TSCL_B_VIDYO_4.bin
    
    https://bugzilla.gnome.org/show_bug.cgi?id=753226
    
    Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>

This will make the following list of streams playable:
TSCL_A_VIDYO_5.bin
TSCL_B_VIDYO_4.bin
Comment 4 sreerenj 2015-08-06 12:56:45 UTC
These four stream,

PICSIZE_A_Bossen_1.bin (1056x8440)
PICSIZE_B_Bossen_1.bin (8440x1056)
PICSIZE_C_Bossen_1.bin (518x4216)
PICSIZE_D_Bossen_1.bin (4216x518) 

are unplayable due to driver limitation. The max_width/max_height has been set as 4096..
Comment 5 sreerenj 2015-08-06 12:59:01 UTC
ENTP_C_LG_3.bin:

This stream has been wrongly encoded with a profile_idc zero which shouldn't have happened. I will try to provide some workarounds in hevc video parser plugin and gstreamer-vaapi too.
Comment 6 sreerenj 2015-08-06 13:01:35 UTC
IPRED_B_Nokia_3.bin:

This has a profile of "main-still-picture" which is not supported by VA, but should be decodeable by bypassing the profile as "main" since it is the superset.
A patch needed for that.
Comment 7 sreerenj 2015-08-07 12:55:13 UTC
commit 682fbb414652a36f3aa53f6ac9d4ca6966228ce8
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Fri Aug 7 08:34:55 2015 +0300

    codecparsers: Update to gst-vaapi-branch commit b8d8be4
    
    ee7e81b: h264parse: Don't discard first AU delimiter
    3690fb9: h264parse: Add more NAL types for debugging output
    108d368: h265parse: Avoid checking for Non Mandatory VPS NAL
    ace61048: h265parse: expose compatible profiles to downstream
    
    Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>

This will make the following streams playable:
IPRED_B_Nokia_3.bin:
Comment 8 sreerenj 2015-08-07 12:55:57 UTC
commit 95b8ca0cda7e34b9e9c1f033f176ab24f4d5ba34
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Fri Aug 7 08:43:44 2015 +0300

    decoder: hevc: Workaround to recognize wrongly encoded main profile streams
    
    HACK: This is a work-around to identify some main profile streams having wrong profile_idc.
    There are some wrongly encoded main profile streams(eg: ENTP_C_LG_3.bin) which doesn't
    have any of the profile_idc values mentioned in Annex-A, instead general_profile_idc
    has been set as zero and having general_profile_compatibility_flag[general_profile_idc]
    is TRUE. Assuming them as MAIN profile for now.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=753226
    
    Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>

This will make the following streams playable:
ENTP_C_LG_3.bin
Comment 9 sreerenj 2015-08-11 12:31:15 UTC
Two more patches and thats it!
commit d357e3a15f2ca2570ca66bc1b4ef9e78e22fcddb
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Tue Aug 11 08:09:10 2015 +0300

    codecparsers: Update to gst-vaapi-branch commit c18b8ad
    
    8a03e67: videoparsers: h265: Avoid skipping of EOS and EOB nals
    a033083: videoparsers: h265: Fix the frame start detection code
    
    Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>

commit f7ce9a33d53d2c270d465c4389f0930e0654fbda
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Mon Aug 10 05:50:50 2015 +0300

    decoder: hevc: Add SEI parsing
    
    Signed-off-by: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Comment 10 sreerenj 2015-08-11 12:36:17 UTC
Focus,

All the sample media streams(under JVT10 folder) except the four
PICSIZE_A_Bossen_1.bin,  PICSIZE_B_Bossen_1.bin,  PICSIZE_C_Bossen_1.bin  and PICSIZE_D_Bossen_1.bin should be playable now.

The streams PICSIZE_A_Bossen_1.bin and PICSIZE_B_Bossen_1.bin are not going to be decoded anyways because of HW limitation. So please remove them from your test cases..

PICSIZE_C_Bossen_1.bin and PICSIZE_D_Bossen_1.bin are not playable because of a driver bug, I have already provided the patch to driver team but not yet committed.
Comment 11 sreerenj 2015-08-11 14:49:19 UTC
There are few more un-playable samples(parsing fail in the middle):

RPLM_A_qualcomm_4.bin
RPLM_B_qualcomm_4.bin
WP_A_Toshiba_3.bin
WP_B_Toshiba_3.bin
Comment 12 sreerenj 2015-08-13 09:22:35 UTC
Fixed....

commit 53a0e78948bb43b2d7e21130de14744b0272b126
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Thu Aug 13 05:07:52 2015 +0300
    decoder: hevc: Add calculation of WpOffsetHalfRangeC

commit 1f287dc71c104b30050379a4558ba007d02446ed
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Thu Aug 13 04:09:44 2015 +0300

    decoder: hevc: Fix ChromaOffsetL0/ChromaOffsetL1 calculation

commit 666900058064eec911103ca928416613e5b03874
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Thu Aug 13 04:08:03 2015 +0300

    decoder: hevc: Fix default value assignment of pred_weight_table

commit 8939674a367a22de94dcf92f2e0c7fe5f03d3005
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Thu Aug 13 03:48:43 2015 +0300

    decoder: hevc: Fix the value assigning for delta_chroma_log2_weight_denom

commit a57f294ed3bb18ee8d8bf87ee4110fbff547a82e
Author: Sreerenj Balachandran <sreerenj.balachandran@intel.com>
Date:   Thu Aug 13 03:06:32 2015 +0300

    codecparsers: Update to gst-vaapi-branch commit 1c70432