From patchwork Tue Jul 23 12:08:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gaullier Nicolas X-Patchwork-Id: 14042 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 2C37E4490EF for ; Tue, 23 Jul 2019 15:09:12 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0C078689AB4; Tue, 23 Jul 2019 15:09:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from smtp-2.arkena.net (smtp-2.arkena.net [95.81.173.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2B2AE6899F2 for ; Tue, 23 Jul 2019 15:09:05 +0300 (EEST) Received: from secu2 (unknown [10.180.103.10]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp-2.arkena.net (Postfix) with ESMTPSA id 45tHMN4nShzHh9G; Tue, 23 Jul 2019 12:09:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arkena.com; s=20150421; t=1563883744; bh=ix6SO3tDC0KY4lQWCPFK6wo0nhasflzqNHs9MDiuYEU=; h=From:To:Cc:Subject:Date:Message-Id; b=U+nmjdyxhIec4Xuztvbx/aM8WNHrTVGbHp3gEv9wpLXvO2cHb78GzQDQ02Pi7D2Cf P4TLSOwAtN+d71MB7cMgRqpOJUg4wvwanhEKkmyZnV1hO6q5Rk2+kdJrsmESiLyeq0 gxdbowWeh1ukXr5P1EbvsPdut0JeP7qS6/kD/ci0= Received: from arkena.com (unknown [172.16.3.159]) by secu2 (Postfix) with ESMTP id 8E8D13FA6D; Tue, 23 Jul 2019 13:47:06 +0200 (CEST) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Tue, 23 Jul 2019 14:08:59 +0200 Message-Id: <20190723120859.3080-2-nicolas.gaullier@arkena.com> X-Mailer: git-send-email 2.14.1.windows.1 In-Reply-To: <20190723120859.3080-1-nicolas.gaullier@arkena.com> References: <20190723120859.3080-1-nicolas.gaullier@arkena.com> Subject: [FFmpeg-devel] [PATCH 1/1] avcodec/h264: Fix poc_lsb in open gop context X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Nicolas Gaullier MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" When no IDR nor mmco_reset is found, prev_poc_lsb is undefined and shall not be assumed to be zero --- libavcodec/h264_parse.c | 2 ++ libavcodec/h264dec.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/h264_parse.c b/libavcodec/h264_parse.c index ac31f54e07..60fff1a549 100644 --- a/libavcodec/h264_parse.c +++ b/libavcodec/h264_parse.c @@ -287,6 +287,8 @@ int ff_h264_init_poc(int pic_field_poc[2], int *pic_poc, if (sps->poc_type == 0) { const int max_poc_lsb = 1 << sps->log2_max_poc_lsb; + if (pc->prev_poc_lsb < 0) + pc->prev_poc_lsb = pc->poc_lsb; if (pc->poc_lsb < pc->prev_poc_lsb && pc->prev_poc_lsb - pc->poc_lsb >= max_poc_lsb / 2) diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index 8d1bd16a8e..f12651fa3d 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -474,7 +474,7 @@ static void idr(H264Context *h) h->poc.prev_frame_num = h->poc.prev_frame_num_offset = 0; h->poc.prev_poc_msb = 1<<16; - h->poc.prev_poc_lsb = 0; + h->poc.prev_poc_lsb = -1; for (i = 0; i < MAX_DELAYED_PIC_COUNT; i++) h->last_pocs[i] = INT_MIN; }