[vlc-devel] [PATCH] codec: hxxx_helper: don't parse hevc streams with h264 parser

Pierre Lamot pierre at videolabs.io
Fri Mar 19 18:03:57 UTC 2021


---
 modules/codec/hxxx_helper.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/modules/codec/hxxx_helper.c b/modules/codec/hxxx_helper.c
index 33df5f6bce..dae1838a4e 100644
--- a/modules/codec/hxxx_helper.c
+++ b/modules/codec/hxxx_helper.c
@@ -556,7 +556,7 @@ helper_process_block_hevc_annexb(struct hxxx_helper *hh, block_t *p_block,
 }
 
 static block_t *
-helper_process_block_xvcc2annexb(struct hxxx_helper *hh, block_t *p_block,
+helper_process_block_h264_xvcc2annexb(struct hxxx_helper *hh, block_t *p_block,
                                  bool *p_config_changed)
 {
     assert(helper_nal_length_valid(hh));
@@ -565,6 +565,16 @@ helper_process_block_xvcc2annexb(struct hxxx_helper *hh, block_t *p_block,
     return helper_process_block_h264_annexb(hh, p_block, p_config_changed);
 }
 
+static block_t *
+helper_process_block_hevc_xvcc2annexb(struct hxxx_helper *hh, block_t *p_block,
+                                 bool *p_config_changed)
+{
+    assert(helper_nal_length_valid(hh));
+    h264_AVC_to_AnnexB(p_block->p_buffer, p_block->i_buffer,
+                       hh->i_nal_length_size);
+    return helper_process_block_hevc_annexb(hh, p_block, p_config_changed);
+}
+
 static block_t *
 helper_process_block_h264_annexb2avcc(struct hxxx_helper *hh, block_t *p_block,
                                       bool *p_config_changed)
@@ -646,7 +656,7 @@ hxxx_helper_set_extra(struct hxxx_helper *hh, const void *p_extra,
                 if (hh->b_need_xvcC)
                     hh->pf_process_block = helper_process_block_h264_avcc;
                 else
-                    hh->pf_process_block = helper_process_block_xvcc2annexb;
+                    hh->pf_process_block = helper_process_block_h264_xvcc2annexb;
             }
             else /* AnnexB */
             {
@@ -662,7 +672,7 @@ hxxx_helper_set_extra(struct hxxx_helper *hh, const void *p_extra,
                 if (hh->b_need_xvcC)
                     hh->pf_process_block = helper_process_block_hevc_hvcc;
                 else
-                    hh->pf_process_block = helper_process_block_xvcc2annexb;
+                    hh->pf_process_block = helper_process_block_hevc_xvcc2annexb;
             }
             else /* AnnexB */
             {
-- 
GitLab



More information about the vlc-devel mailing list