From patchwork Sun Nov 1 21:05:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matthias Neugebauer X-Patchwork-Id: 23312 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 5BDD244A751 for ; Sun, 1 Nov 2020 23:05:30 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2E58968AA9C; Sun, 1 Nov 2020 23:05:30 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [80.241.56.151]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5D2CC68A646 for ; Sun, 1 Nov 2020 23:05:23 +0200 (EET) Received: from smtp1.mailbox.org (smtp1.mailbox.org [80.241.60.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4CPT8f5FG1zQlJF for ; Sun, 1 Nov 2020 22:05:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mailbox.org; h= date:date:message-id:subject:subject:mime-version :content-transfer-encoding:content-type:content-type:from:from :received; s=mail20150812; t=1604264716; bh=uwqnQJ6m7lhVkgoSBILO 1MjeeSjxxP+L+a8mMoRSo8w=; b=wTKW3L59PeqtHIxm2vaBDAXnAaYZ9S1DF2Ei txUJQxOXEPBfRJmP/E3Xy7qK4yw4eUjsnMqWKTQxzB8AFP+ineKw5S9AWYIiU854 F/5IYJCHkJhe3AQQlss17j651sERhHtvwufqKDeQgnIGClVWD/MLwDxOmZm2nb6H xfp1wvalg+yBF79ZKBdDivvSm6HWjs0lTax75cGkkIjIOvmGjMddX7asCzRvf18v FvxYwXsZ4O/R38BDxUMe6lhDDB5FXjylUVgAjZlOtpYpyI066I1LB7ZUHBCtQtmw MmR59eH81npbTVPi6rjQDweOvYohpnIr7DQ4L3THA2JJZ7OjHw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org; s=mail20150812; t=1604264720; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+xxcjgxnWzLVA6GdriRz//j9hSjcDz1kY3xFj9Dlrv4=; b=DG6W7MxtMShE7vzShvBiL81Ifk6BEKfqkaY8R50THbIy0wY+AnTLtQvmdhlWVC5PE0ijBV KMcX74N093wEb8mA4hRLzKbG35oFCGo8FBx4cqs7xUvXPI55e14nVDGIdH1abE3/Dgi+2v f3Bru2/NDPno2sL13wGGl1zsp8ZpXYihLt4WJeRK779lyHEcVW4MG0cvk26JYdBdStYYdj p7jRX85B5Y8zD5VGpaUwyHqdxEKGwl6cM1P+ukwZV7jCQ5xTfrPXafUT+zzm1k0UnS6r0a IaxhSHg6yT3mIvhbnd//qF3+7GMd59KtkPtR9RMJ006i16RLicowxsWwbV+j2g== X-Virus-Scanned: amavisd-new at heinlein-support.de Received: from smtp1.mailbox.org ([80.241.60.240]) by hefe.heinlein-support.de (hefe.heinlein-support.de [91.198.250.172]) (amavisd-new, port 10030) with ESMTP id mxTqSzAEXVmS for ; Sun, 1 Nov 2020 22:05:16 +0100 (CET) From: Matthias Neugebauer Mime-Version: 1.0 Message-Id: Date: Sun, 1 Nov 2020 22:05:16 +0100 To: ffmpeg-devel@ffmpeg.org X-MBO-SPAM-Probability: X-Rspamd-Score: -5.02 / 15.00 / 15.00 X-Rspamd-Queue-Id: B91AC17DF X-Rspamd-UID: d16112 Subject: [FFmpeg-devel] [PATCH] avformat/nut: Store display matrix side 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Stream side data such as display matrix is currently lost when using NUT. Signed-off-by: Matthias Neugebauer Signed-off-by: Matthias Neugebauer --- libavformat/nutdec.c | 9 +++++++++ libavformat/nutenc.c | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c index 53a052503e..9ac484f9bc 100644 --- a/libavformat/nutdec.c +++ b/libavformat/nutdec.c @@ -589,6 +589,15 @@ static int decode_info_header(NUTContext *nut) continue; } + if (stream_id_plus1 && !strcmp(name, "st_sd_displaymatrix")) { + uint32_t *display_matrix = (uint32_t *)av_stream_new_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, 9 * sizeof(uint32_t)); + sscanf(str_value, "%u:%u:%u:%u:%u:%u:%u:%u:%u", + &display_matrix[0], &display_matrix[1], &display_matrix[2], + &display_matrix[3], &display_matrix[4], &display_matrix[5], + &display_matrix[6], &display_matrix[7], &display_matrix[8]); + continue; + } + if (metadata && av_strcasecmp(name, "Uses") && av_strcasecmp(name, "Depends") && av_strcasecmp(name, "Replaces")) { if (event_flags) diff --git a/libavformat/nutenc.c b/libavformat/nutenc.c index 1dcb2be1b1..0a14a400d1 100644 --- a/libavformat/nutenc.c +++ b/libavformat/nutenc.c @@ -524,6 +524,7 @@ static int write_streaminfo(NUTContext *nut, AVIOContext *bc, int stream_id) { AVStream* st = s->streams[stream_id]; AVDictionaryEntry *t = NULL; AVIOContext *dyn_bc; + AVPacketSideData *sd; uint8_t *dyn_buf=NULL; int count=0, dyn_size, i; int ret = avio_open_dyn_buf(&dyn_bc); @@ -536,6 +537,23 @@ static int write_streaminfo(NUTContext *nut, AVIOContext *bc, int stream_id) { if (st->disposition & ff_nut_dispositions[i].flag) count += add_info(dyn_bc, "Disposition", ff_nut_dispositions[i].str); } + + for (i = 0; i < st->nb_side_data; i++) { + sd = &st->side_data[i]; + + switch (sd->type) { + case AV_PKT_DATA_DISPLAYMATRIX:; + uint8_t buf[128]; + uint32_t *display_matrix = (uint32_t *)sd->data; + snprintf(buf, sizeof(buf), "%u:%u:%u:%u:%u:%u:%u:%u:%u", + display_matrix[0], display_matrix[1], display_matrix[2], + display_matrix[3], display_matrix[4], display_matrix[5], + display_matrix[6], display_matrix[7], display_matrix[8]); + count += add_info(dyn_bc, "st_sd_displaymatrix", buf); + break; + } + } + if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) { uint8_t buf[256]; if (st->r_frame_rate.num>0 && st->r_frame_rate.den>0)