From patchwork Mon Jul 29 19:56:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 14131 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 DBDC7448FA9 for ; Mon, 29 Jul 2019 23:09:24 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C79A068A7A4; Mon, 29 Jul 2019 23:09:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B92E0680687 for ; Mon, 29 Jul 2019 23:09:18 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id f9so63179037wre.12 for ; Mon, 29 Jul 2019 13:09:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KSFZWaw5PAbzMokVwNX0+Knikh6jB1C963cXNyeqaEc=; b=p5jEvnxwdrxImlIoko7o1liF2opRR49TFW1JZGSQ8IxIYHc7auaWt9ljunkBCzqRTi JwvZTOC36ZmLH2uhXroxeVOMb5Wg19d9TC62HmUNtZotePfpRnyGUP5MaWEb+YkY1ofn KZXidcgw+gbHrrz9TM9xvBqePFs3axTyX0Atdy01rDsYOtOeDZKfGJcJpKPpXbw1lKNs PUAfSxSAyGOlNRGc1N8IUWmQuVLvQvRRyICgIohr+3KhoyZEb7Sea486I5L6Vj8D89YJ S0y6kZv6tHMVxnkUFjqzmf7IVFzsgckAOBRr6xcGPaX5Kyir2XTkXLgjA/0t9BwNVXWG GfJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KSFZWaw5PAbzMokVwNX0+Knikh6jB1C963cXNyeqaEc=; b=bjtTneb/t42Vzq3mzbho9R2jPhvRKzBBJ5xNmb0kBlJb9HKk+l4WhjTXvuFH4j5ZYB JIZ/+GfjT1Na2X156Ur2XizUqzouHmc9B+2xCLYpQgF3/d1p1zp7OEzVbU8PjBL3p8tc ZhLhV1MjM22ZPY9GXqY4drUItne24qRow20zCR/2qIx6cD19FgsyDoLce+oUF7FqDT1M xxVL5q/zJCcdQxGYdElfbHKLr8os4uzTFCzDWIyneMwYpfeBM91jpu9/PSefQeqNqBeC FWf1AbBRDUFnfZ2Jvm8pV8DTz/5xPciadXhQLHS+uDj0s0rQ0flrcgPCocfQ0CsLDcf3 5/MA== X-Gm-Message-State: APjAAAVqc1cGUJIbGu7XvWnAa28jK3CR9905UuY1XMgTImLbKPAFnU78 NqiMPhnZWBB9aVdN6h7Ee3/5Qhuu X-Google-Smtp-Source: APXvYqzpnJuLEv5S25TKTp+Xy6Z9iGcx72pF5m5s7a1xr8LQpbmRp8FhHwOLeNEhaQNfc9tCwn4WDA== X-Received: by 2002:a5d:5507:: with SMTP id b7mr7368173wrv.35.1564430613069; Mon, 29 Jul 2019 13:03:33 -0700 (PDT) Received: from localhost.localdomain (ipbcc08b8f.dynamic.kabel-deutschland.de. [188.192.139.143]) by smtp.gmail.com with ESMTPSA id t24sm56602211wmj.14.2019.07.29.13.03.32 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Mon, 29 Jul 2019 13:03:32 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 29 Jul 2019 21:56:53 +0200 Message-Id: <20190729195658.56078-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190729195658.56078-1-andreas.rheinhardt@gmail.com> References: <20190729195658.56078-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/7] cbs_h264: Improve adding SEI messages 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Up until now, if an SEI messages was to be added to a fragment, it was tried to add said SEI message to the first SEI NAL unit of the fragment and if this SEI NAL unit already contained H264_NAL_SEI SEI messages (an arbitrary limit imposed by cbs_h264), adding failed; if there was no SEI NAL unit, a new one has been added. With this commit, the fragment is searched for further NAL units to add the SEI messages to. If all of them are full, a new SEI NAL unit is added. Signed-off-by: Andreas Rheinhardt --- libavcodec/cbs_h2645.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c index 1c35be51e7..69ea6dc6bb 100644 --- a/libavcodec/cbs_h2645.c +++ b/libavcodec/cbs_h2645.c @@ -1588,21 +1588,21 @@ int ff_cbs_h264_add_sei_message(CodedBitstreamContext *ctx, CodedBitstreamFragment *au, const H264RawSEIPayload *payload) { - H264RawSEI *sei; - CodedBitstreamUnit *nal = NULL; + H264RawSEI *sei = NULL; int err, i; // Find an existing SEI NAL unit to add to. for (i = 0; i < au->nb_units; i++) { if (au->units[i].type == H264_NAL_SEI) { - nal = &au->units[i]; - break; + sei = au->units[i].content; + if (sei->payload_count < H264_MAX_SEI_PAYLOADS) + break; + + sei = NULL; } } - if (nal) { - sei = nal->content; - } else { + if (!sei) { // Need to make a new SEI NAL unit. Insert it before the first // slice data NAL unit; if no slice data, add at the end. AVBufferRef *sei_ref; @@ -1634,12 +1634,6 @@ int ff_cbs_h264_add_sei_message(CodedBitstreamContext *ctx, return err; } - if (sei->payload_count >= H264_MAX_SEI_PAYLOADS) { - av_log(ctx->log_ctx, AV_LOG_ERROR, "Too many payloads in " - "SEI NAL unit.\n"); - return AVERROR(EINVAL); - } - memcpy(&sei->payload[sei->payload_count], payload, sizeof(*payload)); ++sei->payload_count;