From patchwork Wed Sep 27 13:12:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 43982 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2595107pzh; Wed, 27 Sep 2023 06:14:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFCEYFW0PGbLJi1KKqsLfhMB1RB0NXk4vPYryuiTKPr6vKq8/geF5EUTBerI/OSoE0lb4+t X-Received: by 2002:a05:6512:3ea:b0:500:b8bc:bd9a with SMTP id n10-20020a05651203ea00b00500b8bcbd9amr1557626lfq.49.1695820445199; Wed, 27 Sep 2023 06:14:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695820445; cv=none; d=google.com; s=arc-20160816; b=zFBYu/7bEk9KLrtW053uWPXKD8SlRXfu5I5w8f12a6Jco8aXH/6/KK9A01G472iH16 POYIwls7L+DtnHjKCFG3KujVQyYzKrUjvxEeoNkpi4nCcB6UDrCRQVY0b1ogUw1v9ZkK J2TmOHswbR4KFlXvbKOWnmcMwVKzP/Np9wGWU6M6dy3q97qnIT6VydHnupviOg5+u78J jJjjSli4900Qv3VxQZvltE/wXZ309tUwto/WJi4eMLv33saVdKLz/PM0MiFg4xDOagnW c6ou17o9RyI768f/WhHryoPEJoqxYGvvIPvuC3RFL4dwM0JhS21AYelzLO9Oh9P84rPM h3+w== 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=dmnb434FawgFodU051o6Gpo0CMNA/8X07zPJyZsxsoU=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=cEBnjAhMQRhOaMQsfebW4Bd7D3NYI7sEVec3IBvOtX1D1X+HvfLq+2TUtwmroZc8lI 3FptMlJeWwE0hGGC/9UTDqrGcNUS1S4sm0m6ptOTSUc7SEW3Jna44vEKPTbyQGHf3MCM w36tnUy3hc1ygy3hjnSO/73OQyJV+VrTdqSzmru7xAxJwLWVB+u6aPt47H98lfkqXw4H dkIRfpNMSbm/OPUiCOcctRjkExkWlVfXe47W1tgS9CCsryzsFBMzLM4ZDxOB/64AAwxb 6Yp66YxOtko/l2NrKZKaTTeagM8qi8aBn+iIMb/Yyy7nwp4EBg9KEu4RTaxwPY4FULwK rpJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=kwzme8z3; 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 o5-20020aa7d3c5000000b00534f0f5f71fsi863899edr.272.2023.09.27.06.14.04; Wed, 27 Sep 2023 06:14:05 -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=kwzme8z3; 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 217E168CB15; Wed, 27 Sep 2023 16:13:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 862D868CB0C for ; Wed, 27 Sep 2023 16:13:11 +0300 (EEST) Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-1c44c0f9138so81279005ad.2 for ; Wed, 27 Sep 2023 06:13:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695820389; x=1696425189; 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=IBFNJz8/loI0/6cfvAz3uVX+2JUDotdYqHgK07J4Yxw=; b=kwzme8z3jA/WhMvA5q+2yXR8YTehwdI0SRmztUkWoiiXMxkukftmz8QvHzgnTl9Vzx OE4Sqonl1JxBl7gGjNlMS0IPWgsgE+agvCrYGQOv4asrFq4LDIPs/C3w7kqAtBzCSIdl sr9iK95AgNu27/aar5N94E+uo41UQ26btPSyEM6PjqVYmqYqYXpo87Qvx2kv0bTTSbg8 1DbeuAEmduqCVMBOkgH4Ge6pXdz1+j4Pmajd6Tt718axC/bI28ZuvCFkthrHargyvd/W h/uVGEn2UxrbvsOzUG3IzxHCrPpuo+O/FRAWJZ0W3YVbC65qXX+IPPlShaLtqxElq9D4 ZIrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695820389; x=1696425189; 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=IBFNJz8/loI0/6cfvAz3uVX+2JUDotdYqHgK07J4Yxw=; b=Wrgl3QU9N5OBob+XLoOQ3EgPNXek6bUMjD62BFEoazezquzaULm+96/ax+5llFb96M PsvyhUNkz2KcS4yAXaTcwogPG/Ze2swllo5Dtj0H6OJVMXRQvnCaPeAGxQKbodhU5BDl CfCtnGEWgAYEYCfE/zO9Ox01WrpGPGsM3hl/JYVU01R5R2TgmsCJHO07lP42Jba8/7fJ QfLLp6u0PLaA/QF5YS1az4FZfXPDhLkWIudSCKjbTXFsvjj/bPB+X0O5vIhZsi0JW3YB oy/TnO8kRZXvweNyvGNgC1CWmyqVf9byyIEUiM31VhEO0q+jpFiVBQgFiNmfz30jd1TC 5EJQ== X-Gm-Message-State: AOJu0Yyj7DeuVhQBA7tMxxRZB6I34yrZNnrPMMY1ljp86W095uZhCCof Vue51drxH6c38WUn8CBc4HsvKETKZ18= X-Received: by 2002:a17:903:32c5:b0:1c6:1d3d:b412 with SMTP id i5-20020a17090332c500b001c61d3db412mr1855420plr.30.1695820389331; Wed, 27 Sep 2023 06:13:09 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id v10-20020a1709029a0a00b001b53953f306sm13050600plp.178.2023.09.27.06.13.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Sep 2023 06:13:08 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 10:12:36 -0300 Message-ID: <20230927131242.1950-6-jamrial@gmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20230927131242.1950-1-jamrial@gmail.com> References: <20230927131242.1950-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: dtIlqDF330Ib Signed-off-by: James Almer --- fftools/ffmpeg_demux.c | 12 ++++++++---- fftools/ffmpeg_enc.c | 31 +++++++++---------------------- fftools/ffmpeg_filter.c | 6 +++++- fftools/ffmpeg_mux_init.c | 21 ++++++++++++--------- 4 files changed, 34 insertions(+), 36 deletions(-) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index c01852d4cf..b312ff4922 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_side_data; i++) { + AVPacketSideData *src_sd = &ist->st->codecpar->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,15 @@ 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->side_data, &st->codecpar->nb_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 b40a6211a9..a106399279 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,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->nb_side_data; i++) { + AVPacketSideData *sd_src = &ist->st->codecpar->side_data[i]; + if (sd_src->type != AV_PKT_DATA_CPB_PROPERTIES) { + AVPacketSideData *sd_dst = av_packet_side_data_new(&ost->par_in->side_data, &ost->par_in->nb_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 9bf870b615..4c8e4c2d99 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -1383,11 +1383,15 @@ 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->side_data, ist->st->codecpar->nb_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..201f09e3e2 100644 --- a/fftools/ffmpeg_mux_init.c +++ b/fftools/ffmpeg_mux_init.c @@ -1045,24 +1045,27 @@ 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->nb_side_data; i++) { + const AVPacketSideData *sd_src = &ist->st->codecpar->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_side_data_new(&ost->st->codecpar->side_data, &ost->st->codecpar->nb_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->side_data, + &ost->st->codecpar->nb_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