From patchwork Thu Jul 20 20:34:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 42865 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:672f:b0:130:ccc6:6c4b with SMTP id q47csp77009pzh; Thu, 20 Jul 2023 13:35:10 -0700 (PDT) X-Google-Smtp-Source: APBJJlHTMf5qFaXicmTs62QuYOC/Y2XzhQyKRyrz9JOW2fhEOsPVpSACwZ6/xyHnVVQTqKfGUS9l X-Received: by 2002:a17:907:7888:b0:98d:4ae:8db9 with SMTP id ku8-20020a170907788800b0098d04ae8db9mr18460ejc.19.1689885310375; Thu, 20 Jul 2023 13:35:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689885310; cv=none; d=google.com; s=arc-20160816; b=Uscts18XagZlGgtgqjME+IxlIQlB45Mgaw3BVEj2ZQI2jYsPaknQf+9p5jvtC4W3Wf eiSBTPZux3bVTp2IUZ9xXOtK8CzmZeCI0h/6G+Idz/qCK49gntAZXgfo1Nu0m0mPzPOu jt8e2wRpJCC2A40GeodBxfw8gXWW4GLVmBXMG9xJoeTLDYWOnr5CXg+ck2OATqd7on4c PLt5+YFhMFiFqjV9ILKJVhPUmgTHjaQ1xOb1LIp4+zpMRaPfhkYwSswOiGXxTFbB+nPi rsFY4ERVWYpTXCILdhv4Duq5thQSqCxLsczu4ybAYX/JQghWpBCZStGYKV2h4CNYrk3w BhLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=CuesdfpBTuH9apds0+NNeRMjZfNxGSx+Q9dOb+jHsr8=; fh=J3zlMo7rVW2t2IQYogliBcMNuBh6YQg7NRChcrschf4=; b=VJsWyc1UTasFOSMENB/x5hzdOaWjWcc5ZjPK0+2dbS6PMGvYCsPvuYPIqsETse1gKH ULJUw5DHbFJoKrPHu481NZ25wGC+oGaCpFQQAezDOt0gWcFkrI7OKAeqTvKM4e0GpBN1 HZ5ctwJiPp2/PtuP7I4NNi9ROtT4/yvE3ludf/ufWpjm2idh1BBg5njojXznffDP7791 4+2Obmdjd2lNG5eTIYjECAeFcgV1yYlh7rKG8Cf+ulLdqP4LkU0mxLpppeWny2UM5MSV /MP0yqv8tuA0/QILlI/I8LOry+yXbI4ylReG235i6L2HI5dX7eg0HbaI03uT8MzAbBDc aoxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=OHhjkhvE; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id mj19-20020a170906af9300b009888665e53fsi1173642ejb.190.2023.07.20.13.35.09; Thu, 20 Jul 2023 13:35:10 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=OHhjkhvE; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3F62D68C217; Thu, 20 Jul 2023 23:34:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AE76168C527 for ; Thu, 20 Jul 2023 23:34:29 +0300 (EEST) Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-6b9bf0252f3so1022580a34.2 for ; Thu, 20 Jul 2023 13:34:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689885268; x=1690490068; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=zGDeJvQxNqCgoxOnSm7eX8L+HAVT9sMoNzk6epgmYuU=; b=OHhjkhvEiWKy+qOfAb6cG9xxnHYNFj3jmvDIRpAE4u4EVEZ1unFW6N9AL2mpIhRJLj +t32vesCeCjjLUhu9FUvqt1OZ3/L8OVrrc7w+OGo+2pjtAYRcRzB384zXYGTQ1CBL98S cly6HdwF4by7G4mNokJQmsjmMg2Ug0O2z+x8GiXbE9egpDleUQsTRT11dp+oofkYD1Mf 0bBb+xdNiEETu10DG4c93f7kLJx3lJH/0oAYMhxcThfU39bw2CojxhYbm+7ga4sINIHS D3IdOru0QWj7A8+60iW14zEeY7NC8FgQ1E91NT09EqHBUSdyQ5kRPUIkaf1v7EgGEtWQ MLXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689885268; x=1690490068; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zGDeJvQxNqCgoxOnSm7eX8L+HAVT9sMoNzk6epgmYuU=; b=CVjw4sZc1DxelpqOse3zk76xTIkFzocCgwjBlEn4gfQZ8e/98Vrp/Xujw8Vye9CDJI s/Xkdfp+EAccVzldhKXb+2aNcyQSgHqKSSc9ekrMQzM13lYO2V3A6uhhiXi3ICJ3aEJp WD8IMWnWxbFHASotX62oMez/Ox92q2i2mill5BL9H7p+DiXF8xmGmll8gdfAlTWJTyOD IyD9whjv8g7aVjlvskxZRYM7O2XQXTbEjB75xXWFG4+Bnj8YZy1Q5YSUxnzh/n5bmIm0 iUKKA3uHXNbt00dgD8rmI30eTn/ZH3nWkaLa1zY9hGPO7aNehkCWqZMdah6n9tVozja1 cPLw== X-Gm-Message-State: ABy/qLa58xQXf+nVKxi1m2XbB9GmfFMHQiGMd5yaFAFuEchCGiPSlLx2 jEDR2vkO3Ldv5Z2vZAQBA7DfL/I6i7A= X-Received: by 2002:a9d:730c:0:b0:6b9:9cc0:537f with SMTP id e12-20020a9d730c000000b006b99cc0537fmr3649216otk.33.1689885267925; Thu, 20 Jul 2023 13:34:27 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id m24-20020a0568301e7800b006b95e17fcc7sm800094otr.49.2023.07.20.13.34.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 13:34:27 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 20 Jul 2023 17:34:06 -0300 Message-ID: <20230720203415.41757-4-jamrial@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230720203415.41757-1-jamrial@gmail.com> References: <20230720203415.41757-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/13] fftools/ffmpeg: stop using AVStream.side_data X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: As89XNBm3Dn9 Signed-off-by: James Almer --- fftools/ffmpeg_demux.c | 11 +++++++---- fftools/ffmpeg_enc.c | 25 +++++++++++++------------ fftools/ffmpeg_filter.c | 5 ++++- fftools/ffmpeg_mux_init.c | 16 ++++++++-------- 4 files changed, 32 insertions(+), 25 deletions(-) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 48edbd7f6b..f984df7c95 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -482,8 +482,8 @@ static int input_packet_process(Demuxer *d, DemuxMsg *msg, AVPacket *src) /* add the stream-global side data to the first packet */ if (ds->nb_packets == 1) { - for (int i = 0; i < ist->st->nb_side_data; i++) { - AVPacketSideData *src_sd = &ist->st->side_data[i]; + for (int i = 0; i < ist->st->codecpar->side_data_set.nb_side_data; i++) { + AVPacketSideData *src_sd = &ist->st->codecpar->side_data_set.side_data[i]; uint8_t *dst_data; if (src_sd->type == AV_PKT_DATA_DISPLAYMATRIX) @@ -979,6 +979,7 @@ static int add_display_matrix_to_stream(const OptionsContext *o, AVFormatContext *ctx, InputStream *ist) { AVStream *st = ist->st; + AVPacketSideData *sd; double rotation = DBL_MAX; int hflip = -1, vflip = -1; int hflip_set = 0, vflip_set = 0, rotation_set = 0; @@ -995,12 +996,14 @@ static int add_display_matrix_to_stream(const OptionsContext *o, if (!rotation_set && !hflip_set && !vflip_set) return 0; - buf = (int32_t *)av_stream_new_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, sizeof(int32_t) * 9); - if (!buf) { + sd = av_packet_new_side_data_to_set(&st->codecpar->side_data_set, AV_PKT_DATA_DISPLAYMATRIX, + sizeof(int32_t) * 9); + if (!sd) { av_log(ist, AV_LOG_FATAL, "Failed to generate a display matrix!\n"); return AVERROR(ENOMEM); } + buf = (int32_t *)sd->data; av_display_rotation_set(buf, rotation_set ? -(rotation) : -0.0f); diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c index 96424272bf..f12024dff5 100644 --- a/fftools/ffmpeg_enc.c +++ b/fftools/ffmpeg_enc.c @@ -428,12 +428,12 @@ int enc_open(OutputStream *ost, AVFrame *frame) for (i = 0; i < ost->enc_ctx->nb_coded_side_data; i++) { const AVPacketSideData *sd_src = &ost->enc_ctx->coded_side_data[i]; - uint8_t *dst_data; + AVPacketSideData *sd_dst; - dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size); - if (!dst_data) + sd_dst = av_packet_new_side_data_to_set(&ost->par_in->side_data_set, sd_src->type, sd_src->size); + if (!sd_dst) return AVERROR(ENOMEM); - memcpy(dst_data, sd_src->data, sd_src->size); + memcpy(sd_dst->data, sd_src->data, sd_src->size); } } @@ -446,15 +446,16 @@ int enc_open(OutputStream *ost, AVFrame *frame) */ if (ist) { int i; - for (i = 0; i < ist->st->nb_side_data; i++) { - AVPacketSideData *sd = &ist->st->side_data[i]; - if (sd->type != AV_PKT_DATA_CPB_PROPERTIES) { - uint8_t *dst = av_stream_new_side_data(ost->st, sd->type, sd->size); - if (!dst) + for (i = 0; i < ist->st->codecpar->side_data_set.nb_side_data; i++) { + AVPacketSideData *sd_src = &ist->st->codecpar->side_data_set.side_data[i]; + if (sd_src->type != AV_PKT_DATA_CPB_PROPERTIES) { + AVPacketSideData *sd_dst = av_packet_new_side_data_to_set(&ost->par_in->side_data_set, + sd_src->type, sd_src->size); + if (!sd_dst) return AVERROR(ENOMEM); - memcpy(dst, sd->data, sd->size); - if (ist->autorotate && sd->type == AV_PKT_DATA_DISPLAYMATRIX) - av_display_rotation_set((int32_t *)dst, 0); + memcpy(sd_dst->data, sd_src->data, sd_src->size); + if (ist->autorotate && sd_src->type == AV_PKT_DATA_DISPLAYMATRIX) + av_display_rotation_set((int32_t *)sd_dst->data, 0); } } } diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index 925b5116cc..33bc96c8dd 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -1383,11 +1383,14 @@ static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter, // TODO: insert hwaccel enabled filters like transpose_vaapi into the graph if (ist->autorotate && !(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) { + AVPacketSideData *sd = NULL; int32_t *displaymatrix = ifp->displaymatrix; double theta; if (!ifp->displaymatrix_present) - displaymatrix = (int32_t *)av_stream_get_side_data(ist->st, AV_PKT_DATA_DISPLAYMATRIX, NULL); + sd = av_packet_get_side_data_from_set(&ist->st->codecpar->side_data_set, AV_PKT_DATA_DISPLAYMATRIX); + if (sd) + displaymatrix = (int32_t *)sd->data; theta = get_rotation(displaymatrix); if (fabs(theta - 90) < 1.0) { diff --git a/fftools/ffmpeg_mux_init.c b/fftools/ffmpeg_mux_init.c index 86521417ec..eb5dcf6543 100644 --- a/fftools/ffmpeg_mux_init.c +++ b/fftools/ffmpeg_mux_init.c @@ -1041,24 +1041,24 @@ static int streamcopy_init(const Muxer *mux, OutputStream *ost) } } - for (int i = 0; i < ist->st->nb_side_data; i++) { - const AVPacketSideData *sd_src = &ist->st->side_data[i]; - uint8_t *dst_data; + for (int i = 0; i < ist->st->codecpar->side_data_set.nb_side_data; i++) { + const AVPacketSideData *sd_src = &ist->st->codecpar->side_data_set.side_data[i]; + AVPacketSideData *sd_dst; - dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size); - if (!dst_data) { + sd_dst = av_packet_new_side_data_to_set(&ost->st->codecpar->side_data_set, sd_src->type, sd_src->size); + if (!sd_dst) { ret = AVERROR(ENOMEM); goto fail; } - memcpy(dst_data, sd_src->data, sd_src->size); + memcpy(sd_dst->data, sd_src->data, sd_src->size); } #if FFMPEG_ROTATION_METADATA if (ost->rotate_overridden) { - uint8_t *sd = av_stream_new_side_data(ost->st, AV_PKT_DATA_DISPLAYMATRIX, + AVPacketSideData *sd = av_packet_new_side_data_to_set(&ost->st->codecpar->side_data_set, AV_PKT_DATA_DISPLAYMATRIX, sizeof(int32_t) * 9); if (sd) - av_display_rotation_set((int32_t *)sd, -ost->rotate_override_value); + av_display_rotation_set((int32_t *)sd->data, -ost->rotate_override_value); } #endif