GNOME Bugzilla – Bug 753226
decoder: Fix hevc decode issues of specific streams
Last modified: 2015-08-13 09:23:02 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
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
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
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
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..
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.
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.
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:
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
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>
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.
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
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