From patchwork Mon Apr 20 11:01:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 19103 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 651E544ACBD for ; Mon, 20 Apr 2020 14:01:22 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3F2BA68B73A; Mon, 20 Apr 2020 14:01:22 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f65.google.com (mail-pj1-f65.google.com [209.85.216.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4BA3368B651 for ; Mon, 20 Apr 2020 14:01:15 +0300 (EEST) Received: by mail-pj1-f65.google.com with SMTP id nu11so4272746pjb.1 for ; Mon, 20 Apr 2020 04:01:15 -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; bh=yk2v9J0zaqcLqX/D8AHJYvTwzPOwg++GFQTYmrWDXvs=; b=fRK5oMV8Q4XcuB0migK1LhIRKDkgejAPWRRGws5LS2T5nq5vvpFlkOVkJ1ynR9klPF L+1+9FwSv8X9fo/Qyugo+t7L2IZcS2+Avl91PWToTRQCPRSJnmDwnPwfUqrLJa2dw4pY PIP9KU8D59xWZTxUdThpxZWZctuACRjQDgYmZ0jKzzxX9y+x1RbQkWYrOCyfV7IiWhIm yXKDl6eb1kzt2nmjryJsrAWSr/NgWm7XduIrIwwQy1RWlHvVY/CwDuiqkZjwIuRUdNlk HIlPQVp/ClGfERYbGDKqSF1zGvTuVa9p+ZkzTh9nwH0VS2OJTvX1E8PuT2qVh/yn6+uj MkXw== 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; bh=yk2v9J0zaqcLqX/D8AHJYvTwzPOwg++GFQTYmrWDXvs=; b=hVj+nxStrSK0Z3m0G47/0Faw6DRL225UYPBep+KBhHHWk32sG/53Y/rJ7y/zUyBMLi GglBsHm+k/64gHE946WC3KXEv32OAWnHk/ldpKVoz2fctLGvXHfGEzN8icrVp9p8c+ek bhKBmI2kd0wV5U+9nk/m76kuSq0ZSI+yuzCpXeRI7rDm5m89BvcOGvbpM2zoSSlE8Z8d CK/2pS44SPcfnTzRYrBzHzB5ZBzxy06/bxck7rpt5hgUWk8uV76Mv065gHKcN9A4Bdbn BhaT+I1Gk9PdIH/72s6o/TesC854YH6RKQU2xXKHv64c5XzZljsQnEY8sLQ19NMlc+Mm heQw== X-Gm-Message-State: AGi0PubmScG4tnz3ZXc/fs1sYUferURlXzvVSxUglvWvXFrK65ZP+BhA Ht/omGMY3YiWTH8aq/2vS62KYMBG X-Google-Smtp-Source: APiQypKxFdFjr7CEsIWE7xDbMGXmeJmSnyvKlNis45z4hzb9ZeU8FmitCj63d44XXEfH1f33R1gasw== X-Received: by 2002:a17:90b:378d:: with SMTP id mz13mr7553551pjb.192.1587380473329; Mon, 20 Apr 2020 04:01:13 -0700 (PDT) Received: from vpn.localdomain ([47.90.99.151]) by smtp.gmail.com with ESMTPSA id y184sm793236pfg.127.2020.04.20.04.01.12 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 20 Apr 2020 04:01:12 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Mon, 20 Apr 2020 19:01:09 +0800 Message-Id: <20200420110109.5188-1-lance.lmwang@gmail.com> X-Mailer: git-send-email 2.9.5 Subject: [FFmpeg-devel] [PATCH v1] avcodec/h264_metadata_bsf: add option to delete SEI user data 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Limin Wang Signed-off-by: Limin Wang --- doc/bitstream_filters.texi | 3 +++ libavcodec/h264_metadata_bsf.c | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/doc/bitstream_filters.texi b/doc/bitstream_filters.texi index 8fe5b3ad75..652eb4620f 100644 --- a/doc/bitstream_filters.texi +++ b/doc/bitstream_filters.texi @@ -273,6 +273,9 @@ possibly separated by hyphens, and the string can be anything. For example, @samp{086f3693-b7b3-4f2c-9653-21492feee5b8+hello} will insert the string ``hello'' associated with the given UUID. +@item delete_user_data +Deletes all SEI user data messages. + @item delete_filler Deletes both filler NAL units and filler SEI messages. diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c index d96a50dbf7..8b42faff1b 100644 --- a/libavcodec/h264_metadata_bsf.c +++ b/libavcodec/h264_metadata_bsf.c @@ -76,6 +76,7 @@ typedef struct H264MetadataContext { int crop_bottom; const char *sei_user_data; + int delete_user_data; int delete_filler; @@ -361,6 +362,21 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *pkt) } } + if (ctx->delete_user_data) { + for (i = au->nb_units - 1; i >= 0; i--) { + if (au->units[i].type == H264_NAL_SEI) { + H264RawSEI *sei = au->units[i].content; + + for (j = sei->payload_count - 1; j >= 0; j--) { + if (sei->payload[j].payload_type == + H264_SEI_TYPE_USER_DATA_UNREGISTERED) + ff_cbs_h264_delete_sei_message(ctx->cbc, au, + &au->units[i], j); + } + } + } + } + // Only insert the SEI in access units containing SPSs, and also // unconditionally in the first access unit we ever see. if (ctx->sei_user_data && (has_sps || !ctx->done_first_au)) { @@ -684,6 +700,9 @@ static const AVOption h264_metadata_options[] = { { "sei_user_data", "Insert SEI user data (UUID+string)", OFFSET(sei_user_data), AV_OPT_TYPE_STRING, { .str = NULL }, .flags = FLAGS }, + { "delete_user_data", "Delete all SEI user data", + OFFSET(delete_user_data), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS}, + { "delete_filler", "Delete all filler (both NAL and SEI)", OFFSET(delete_filler), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS},