From b70fa32a716a8700f65a7a7ff1b2141b212f21a8 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 19 Nov 2014 16:45:35 +0100 Subject: [PATCH] Partial revert "htsp: another fix for H264 - headers merge" This reverts commit 33792bf6012c2913b346efa88c7a7c60116d4268. --- src/parsers/parsers.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/parsers/parsers.c b/src/parsers/parsers.c index 1a590f98..a637941a 100644 --- a/src/parsers/parsers.c +++ b/src/parsers/parsers.c @@ -1230,18 +1230,27 @@ parse_h264(service_t *t, elementary_stream_t *st, size_t len, if (st->es_incomplete) return 4; th_pkt_t *pkt = st->es_curpkt; + size_t metalen = 0; if(pkt != NULL) { if(st->es_global_data) { pkt->pkt_meta = pktbuf_make(st->es_global_data, - st->es_global_data_len); + metalen = st->es_global_data_len); st->es_global_data = NULL; st->es_global_data_len = 0; } - pkt->pkt_payload = pktbuf_make(st->es_buf.sb_data, - st->es_buf.sb_ptr - 4); - sbuf_steal_data(&st->es_buf); + if (metalen) { + pkt->pkt_payload = pktbuf_alloc(NULL, metalen + st->es_buf.sb_ptr - 4); + memcpy(pktbuf_ptr(pkt->pkt_payload), pktbuf_ptr(pkt->pkt_meta), metalen); + memcpy(pktbuf_ptr(pkt->pkt_payload) + metalen, st->es_buf.sb_data, st->es_buf.sb_ptr - 4); + sbuf_reset(&st->es_buf, 16000); + } else { + pkt->pkt_payload = pktbuf_make(st->es_buf.sb_data, + st->es_buf.sb_ptr - 4); + sbuf_steal_data(&st->es_buf); + } + parser_deliver(t, st, pkt, st->es_buf.sb_err); st->es_curpkt = NULL;