From patchwork Wed Oct 4 12:28:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 44142 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4f21:b0:15d:8365:d4b8 with SMTP id gi33csp477237pzb; Wed, 4 Oct 2023 05:29:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHSi5kqr3xQZws3Oq5k47oW2PVg+Kq3ed4gVGOlykWWN8LOmpnTzUzNYMt8PCk6BhtKFM7l X-Received: by 2002:a17:906:cc0d:b0:9a5:874a:9745 with SMTP id ml13-20020a170906cc0d00b009a5874a9745mr1850591ejb.26.1696422594472; Wed, 04 Oct 2023 05:29:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696422594; cv=none; d=google.com; s=arc-20160816; b=m6f6Bpx9ZzIqdCShmccAY7XvU/kLmILmrWoDdUPEgijO2aLeeO1HpoZ/0vhePsXfwu Wig9/fHASH7x+Y15ATCjfuO/H4Y+4eiLw2MMq+zIqPp8hAJ2YtmR1y6PAH1T2cuIrI49 RovtZaiW7UOPB1CQODu39byuMKpKe0e00Wv0uVoDgzSOnPBs9adDuT/94QCPj0JUUPxj dXS3YX2q/udEchSiOfnA/Mm/p2riUBdVjq913sURsuicSH8WJ6Z3aN7s/XmeC1Z9ReQZ E+zJ4egtRX3y8m/fsoe3p/PA+2uVrgt9KBieV1vKDjqzprWrld7brS1FCiZu43sP2Z3n 4V0w== 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=yPdLud4JErA4GH8CzMSvJD7p9hLi2ma7opCNBVlDg0k=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=RfgAqgHvqcLhM3eCFHYgn122Gva8+fiv4epykjj9SXzsfEH31FBtDIO7QSj6lqOKKo IBJutayH+VHMs5MWC9iEZ38YSONoHVWsn5XavWMFxJWzP5cqXdWnPEPaurvv/2WlWxUV u5xFUbmUa7NooumeZ3bPi3t3yNlNGhSA4kppZckS7D3jiRrHWum8t3ONIng+v236UQjS I1cPLHH7c7TuvrHf0lrGNR3CDi5dbBVc/dn2l+mgsRRWie3PqwUUo3gaOylfllY8TeQ/ glMgwPd7g99c3Oa4YmpZ/iepDuFYNIybeHelR6YewcWV9H3WG/eCmx9re+5cS+++mLdL +u5w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=H3EVPsPO; 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 jx16-20020a170906ca5000b009ad8da45ed7si1549278ejb.861.2023.10.04.05.29.54; Wed, 04 Oct 2023 05:29:54 -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=20230601 header.b=H3EVPsPO; 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 ACEC968C919; Wed, 4 Oct 2023 15:29:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C433A68CC47 for ; Wed, 4 Oct 2023 15:28:59 +0300 (EEST) Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-6969b391791so443513b3a.3 for ; Wed, 04 Oct 2023 05:28:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696422537; x=1697027337; darn=ffmpeg.org; 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=4BxLK5xFSG0yJq0JaOaOOyVmZuzXan0xm9OD+fsdCgk=; b=H3EVPsPOFOW3T3VjFa6+q7jtvS/9FvoJ4q9H0LeqgRbnF4w9CFtOaeLzY2iJdYx8Xi RyrrkZMLL7Ngb3U9rFKu2HeISwkq7Jcr3dtDJD6QxTS/wVlhbPrvaSffBH/oc8h/9inM vZFcOWR27+2MWrLxeYxXrfiByieQGC6sR/syrcUcyvbkbh7+Qsyf98qJ/nSEQ3gUCD3b E8sENrmIqDtQD4KEptfF8Z6xsqGqpE4rgZa1qyZMfNyFuJp+5Tykz8i9Pv+1m9pvxk8B xukvdcdKW2nwO7f9ypUiDVRhz/6r47scffh3c7xP1/UTpNmMYLy6qVPFPhsyi0BsXpG8 mruA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696422537; x=1697027337; 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=4BxLK5xFSG0yJq0JaOaOOyVmZuzXan0xm9OD+fsdCgk=; b=ltIQQXbMUNfm4TQrV+6u9kBdTr2sI84L8vLVonjtFbNQz95AYoto43+qPMrmEZdeIQ /e4ye3aSxrEkZkRn+/A1I+HW4AGoSyQnyYBrg+8V7d9+cSgAazdd3lMBEDCpbkKpq+/U +njjQ3HcUvlQIEPNByXen0RcY+FYm6yjvlwok9wlAFrQ8SFwWrVf+4/UwCxVL+bpi3fc zk6jghR48PaM3Q6Huyh4TylqZhcKB6Aezaqzg2gPsOYHqO86fvrWvvQN7sGeQOveF64i ADZja3Jnj2z6GkphAdng6z0C8wJuM81dTEkWPFwbMNBe8RI8FfWGc5KYiVtj9RpJymrI vMFQ== X-Gm-Message-State: AOJu0YxrcMkJEeNb1498TGd0rt/gf5csUOEDwm5gCR8TBJ2Pn+WwzAdX ecJAlliXohUwJ3XvBQwDjGCRO+DI87I= X-Received: by 2002:a05:6a20:a11a:b0:13d:ee19:7727 with SMTP id q26-20020a056a20a11a00b0013dee197727mr2459907pzk.18.1696422537429; Wed, 04 Oct 2023 05:28:57 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id h11-20020a170902748b00b001c57aac6e5esm3551831pll.23.2023.10.04.05.28.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Oct 2023 05:28:57 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 4 Oct 2023 09:28:43 -0300 Message-ID: <20231004122849.56604-6-jamrial@gmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231004122849.56604-1-jamrial@gmail.com> References: <20231004122849.56604-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/11] 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: UMhfWn2kEPay Signed-off-by: James Almer --- fftools/ffmpeg_demux.c | 13 +++++++++---- fftools/ffmpeg_enc.c | 32 ++++++++++---------------------- fftools/ffmpeg_filter.c | 7 ++++++- fftools/ffmpeg_mux_init.c | 24 ++++++++++++++---------- 4 files changed, 39 insertions(+), 37 deletions(-) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index c01852d4cf..296a66cd11 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->nb_coded_side_data; i++) { + AVPacketSideData *src_sd = &ist->st->codecpar->coded_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,16 @@ 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_side_data_new(&st->codecpar->coded_side_data, + &st->codecpar->nb_coded_side_data, + AV_PKT_DATA_DISPLAYMATRIX, + sizeof(int32_t) * 9, 0); + 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 ec9cebbd96..be35465c28 100644 --- a/fftools/ffmpeg_enc.c +++ b/fftools/ffmpeg_enc.c @@ -457,20 +457,6 @@ int enc_open(OutputStream *ost, AVFrame *frame) return ret; } - if (ost->enc_ctx->nb_coded_side_data) { - int i; - - 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; - - dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size); - if (!dst_data) - return AVERROR(ENOMEM); - memcpy(dst_data, sd_src->data, sd_src->size); - } - } - /* * Add global input side data. For now this is naive, and copies it * from the input stream's global side data. All side data should @@ -480,15 +466,17 @@ 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->nb_coded_side_data; i++) { + AVPacketSideData *sd_src = &ist->st->codecpar->coded_side_data[i]; + if (sd_src->type != AV_PKT_DATA_CPB_PROPERTIES) { + AVPacketSideData *sd_dst = av_packet_side_data_new(&ost->par_in->coded_side_data, + &ost->par_in->nb_coded_side_data, + sd_src->type, sd_src->size, 0); + 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 b6348d7f87..b71a84185a 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -1383,11 +1383,16 @@ 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)) { + const 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_side_data_get(ist->st->codecpar->coded_side_data, + ist->st->codecpar->nb_coded_side_data, + 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 9d6f442068..899edc9892 100644 --- a/fftools/ffmpeg_mux_init.c +++ b/fftools/ffmpeg_mux_init.c @@ -1045,24 +1045,28 @@ 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; - - dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size); - if (!dst_data) { + for (int i = 0; i < ist->st->codecpar->nb_coded_side_data; i++) { + const AVPacketSideData *sd_src = &ist->st->codecpar->coded_side_data[i]; + AVPacketSideData *sd_dst; + + sd_dst = av_packet_side_data_new(&ost->st->codecpar->coded_side_data, + &ost->st->codecpar->nb_coded_side_data, + sd_src->type, sd_src->size, 0); + 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, - sizeof(int32_t) * 9); + AVPacketSideData *sd = av_packet_side_data_new(&ost->st->codecpar->coded_side_data, + &ost->st->codecpar->nb_coded_side_data, + AV_PKT_DATA_DISPLAYMATRIX, + sizeof(int32_t) * 9, 0); 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