From: Jaroslav Kysela Date: Wed, 2 Nov 2016 08:37:30 +0000 (+0100) Subject: parser hevc: fix for FunBox 4K, fixes #3853 X-Git-Tag: v4.2.1~239 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=95e20e27c8f44f3d1471332c6034a1358f5b7469;p=thirdparty%2Ftvheadend.git parser hevc: fix for FunBox 4K, fixes #3853 --- diff --git a/src/parsers/parser_hevc.c b/src/parsers/parser_hevc.c index 901523314..5fa1b86b5 100644 --- a/src/parsers/parser_hevc.c +++ b/src/parsers/parser_hevc.c @@ -1677,6 +1677,7 @@ hevc_decode_slice_header(struct elementary_stream *st, bitstream_t *bs, u = ilog2((v - 1) << 1); if (u >= v) return -1; + skip_bits(bs, u); } if (dependent_slice_segment) diff --git a/src/parsers/parsers.c b/src/parsers/parsers.c index f73bd3e22..2924d8750 100644 --- a/src/parsers/parsers.c +++ b/src/parsers/parsers.c @@ -1596,8 +1596,11 @@ parse_hevc(service_t *t, elementary_stream_t *st, size_t len, case HEVC_NAL_IDR_W_RADL: case HEVC_NAL_IDR_N_LP: case HEVC_NAL_CRA_NUT: + if (st->es_curpkt != NULL) + break; + l2 = len - 3 > 64 ? 64 : len - 3; - void *f = h264_nal_deescape(&bs, buf + 3, len - 3); + void *f = h264_nal_deescape(&bs, buf + 3, l2); r = hevc_decode_slice_header(st, &bs, &pkttype); free(f); if (r < 0) @@ -1658,7 +1661,7 @@ parse_hevc(service_t *t, elementary_stream_t *st, size_t len, } if(is_ssc(next_startcode) || - ((next_startcode >> 1) & 0x3f) == HEVC_NAL_TRAIL_R) { + ((next_startcode >> 1) & 0x3f) == HEVC_NAL_AUD) { /* Complete frame - new start code or delimiter */ if (st->es_incomplete) return PARSER_HEADER;