vlc | branch: master | Francois Cartegnie <[email protected]> | Tue Mar 28 15:29:51 2017 +0200| [227e02c97251f613100d7257dbab9e7835454003] | committer: Thomas Guillem
codec: hxxx: always use externally specified nal length size Signed-off-by: Thomas Guillem <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=227e02c97251f613100d7257dbab9e7835454003 --- modules/codec/hxxx_helper.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/codec/hxxx_helper.c b/modules/codec/hxxx_helper.c index d36b1d0..efe31fc 100644 --- a/modules/codec/hxxx_helper.c +++ b/modules/codec/hxxx_helper.c @@ -142,17 +142,16 @@ helper_nal_length_valid(struct hxxx_helper *hh) static int h264_helper_parse_nal(struct hxxx_helper *hh, const uint8_t *p_buf, size_t i_buf, - bool b_is_xvcC, bool *p_config_changed) + uint8_t i_nal_length_size, bool *p_config_changed) { const uint8_t *p_nal; size_t i_nal; hxxx_iterator_ctx_t it; - hxxx_iterator_init(&it, p_buf, i_buf, hh->i_nal_length_size); - bool (*pf_iterator)(hxxx_iterator_ctx_t *, const uint8_t **, size_t *) = - b_is_xvcC ? hxxx_iterate_next : hxxx_annexb_iterate_next; + hxxx_iterator_init(&it, p_buf, i_buf, i_nal_length_size); *p_config_changed = false; - while (pf_iterator(&it, &p_nal, &i_nal)) + while ((i_nal_length_size) ? hxxx_iterate_next(&it, &p_nal, &i_nal) + : hxxx_annexb_iterate_next(&it, &p_nal, &i_nal)) { if (i_nal < 2) continue; @@ -270,7 +269,8 @@ h264_helper_set_extra(struct hxxx_helper *hh, const void *p_extra, hh->b_is_xvcC = true; if (hh->b_need_xvcC) - return h264_helper_parse_nal(hh, p_extra, i_extra, true, &b_unused); + return h264_helper_parse_nal(hh, p_extra, i_extra, + hh->i_nal_length_size, &b_unused); size_t i_buf; uint8_t *p_buf = h264_avcC_to_AnnexB_NAL(p_extra, i_extra, &i_buf, @@ -295,7 +295,8 @@ h264_helper_set_extra(struct hxxx_helper *hh, const void *p_extra, return VLC_EGENERIC; } - int i_ret = h264_helper_parse_nal(hh, p_buf, i_buf, false, &b_unused); + int i_ret = h264_helper_parse_nal(hh, p_buf, i_buf, + hh->i_nal_length_size, &b_unused); free(p_buf); return i_ret; } @@ -356,7 +357,7 @@ helper_process_block_h264_annexb(struct hxxx_helper *hh, block_t *p_block, bool *p_config_changed) { int i_ret = h264_helper_parse_nal(hh, p_block->p_buffer, p_block->i_buffer, - false, p_config_changed); + 0, p_config_changed); if (i_ret != VLC_SUCCESS) { block_Release(p_block); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
