From patchwork Fri Mar 22 20:28:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47334 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163761pzb; Fri, 22 Mar 2024 13:30:35 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVSYotPBx5FQOT/eDP9qgpGDhN26mlkKqTngnM2DL3bbkNPegN9WhlCpmzQFN6y13SrpJY+TlU6ifV/Z3wN8x6wAsE0kwKWBfdB6w== X-Google-Smtp-Source: AGHT+IGL0JGEeg/B1DD8Tjgu4ItmAaDqZnFpgwPJ5hF1zL2VipPqihO+mr0PShHyi6fJGskjvdcn X-Received: by 2002:a2e:860a:0:b0:2d2:c7ab:6396 with SMTP id a10-20020a2e860a000000b002d2c7ab6396mr413032lji.37.1711139434797; Fri, 22 Mar 2024 13:30:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139434; cv=none; d=google.com; s=arc-20160816; b=aC8Pa9vmMOIpopXdSSAWONj7UtcF81hqvf9W6BrU6V/ChJOeO3RfrFYYnmsMok1vvS IZQD+YVD/y6ThQf6DSrYkrCg+9JbkuC8tYltThwb/47K7IO8fctZWWgdno+2QftOaSda +sOPaIzjJVC/pmHFGPJG7k33n5NBEsYVkdpvuThFyWFvCXqDbE47dYs+XRPx1ksOdHTb GCbO+Xtist7KnN+/8TrT6EW7q+1/sN4lea747vGtQK0xzBr1BFs/HYvesB2upOgGOdtz vJBEja/bflSNy8rCpkSPWejdO84LMu3ZYQiuRdoF/0EMax+KEGug8x+hkJvkoG70oQeA rd0Q== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=iV+9K1a4ZsYdsQBzDEWiWnRQZ5QLkYoU7VmLEGAMu2M=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=ghXOsLOdE3FfYxFJYpWeWJPYAsQ2eCORepMaseh2uWND0AUf93jlOLp0lx2xwN+eSX 0YFZ0FSomco+XbfxGbvaTcH0RBG973bRF0VsAkzV/8Calf3hGHbeDVp0WajcIBf6rFBQ 0lc35yslwIbNYqFzQbmsTWsuD0foLISUPPdnjVlN6kySOwZly7T2yUa0LjglfseNLWRM QlfK4VjaO3OhMbosbxXV9MmNo+MCKcOTPaiwmUtRmGtcjB4i51HVzQlfExCx3FEGsPCv FzF+HAJce+eKbGxpBF1OyGaiezRvuQb7+foo+siD4cSI3WLwLzyTha8EWuO0dbCxfILv QayA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=GPZaLhgP; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q1-20020a056402248100b005687db78a96si169609eda.147.2024.03.22.13.30.34; Fri, 22 Mar 2024 13:30:34 -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=@khirnov.net header.s=mail header.b=GPZaLhgP; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EDFDD68D5E2; Fri, 22 Mar 2024 22:29:13 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D0DED68D4CE for ; Fri, 22 Mar 2024 22:29:01 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=GPZaLhgP; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id B039D4D58 for ; Fri, 22 Mar 2024 21:28:57 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id MCTk98_W-Y6N for ; Fri, 22 Mar 2024 21:28:57 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139335; bh=OCqo1CT7P+rOIQ21aCpzF2DL2XFYc95QIBKd773IQzI=; h=From:To:Subject:Date:From; b=GPZaLhgP0ReytULuY5j1o+CN9Ax3SkLrA2AC0GWB2703Vmz0FFfmJDoNVuAKgOQ20 yWnSyKuRTyqxR5YeRObl3K+gGKeWS3a/C43wBpIh3sUrWi3l7rTRkM1QiNg0FysKgT TZURR+1pciMOxfpdWw9A4V6MIJ46Io200dBpY9fsaWR8vJkXabS7p4z4tX2tp4+Rng +j6Z2NWaS2EGPT7wxBcvV7r3OKeDzR2Wtc/s2ZSgkK7+asfXGfMuiOrN3RNEek+zOu /uXv/ZWJ8DwSbG6ba9njJ8bCOlXd185UKpdJ2e5Dh1PE1YTSG+it0W33godr1vXJ/6 mOhK87tBGER6A== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id B384B4D6C for ; Fri, 22 Mar 2024 21:28:55 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 272FC3A0219 for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:30 +0100 Message-ID: <20240322202841.31730-1-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/12] tests/fate/ffmpeg: evaluate thread count in fate-run.sh rather than make 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: zGWNMlO31kqx Fixes fate-ffmpeg-loopback-decoding with THREADS=random* --- tests/fate/ffmpeg.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fate/ffmpeg.mak b/tests/fate/ffmpeg.mak index 9cf05ead68..3c549b265e 100644 --- a/tests/fate/ffmpeg.mak +++ b/tests/fate/ffmpeg.mak @@ -259,5 +259,5 @@ FATE_FFMPEG-$(call REMUX, RAWVIDEO) += fate-ffmpeg-streamcopy-t fate-ffmpeg-loopback-decoding: tests/data/vsynth_lena.yuv fate-ffmpeg-loopback-decoding: CMD = transcode \ "rawvideo -s 352x288 -pix_fmt yuv420p" $(TARGET_PATH)/tests/data/vsynth_lena.yuv nut \ - "-map 0:v:0 -c:v mpeg2video -f null - -flags +bitexact -idct simple -threads $(THREADS) -dec 0:0 -filter_complex '[0:v][dec:0]hstack[stack]' -map '[stack]' -c:v ffv1" "" + "-map 0:v:0 -c:v mpeg2video -f null - -flags +bitexact -idct simple -threads $$threads -dec 0:0 -filter_complex '[0:v][dec:0]hstack[stack]' -map '[stack]' -c:v ffv1" "" FATE_FFMPEG-$(call ENCDEC2, MPEG2VIDEO, FFV1, NUT, HSTACK_FILTER PIPE_PROTOCOL FRAMECRC_MUXER) += fate-ffmpeg-loopback-decoding From patchwork Fri Mar 22 20:28:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47324 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163013pzb; Fri, 22 Mar 2024 13:29:06 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW6uzAthOuMQYcQTF26RJDeYinx3oizZ2/VImEqIWgo09plXhncep/kkLu/m12Cea+fx0WgOqTk3yYl7kzY6UQmvvwXn0xffFLYqw== X-Google-Smtp-Source: AGHT+IGptViUnKUKXlIGyFkaid+XUqbQIpbkbaVRpNHxSI5CzXHvJqF1fLf7pZ8rIFff4MPJO4Iz X-Received: by 2002:a17:906:2a42:b0:a47:3526:81a3 with SMTP id k2-20020a1709062a4200b00a47352681a3mr482513eje.48.1711139346129; Fri, 22 Mar 2024 13:29:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139346; cv=none; d=google.com; s=arc-20160816; b=Pyoyl82ZTMi4SCkQOc9LQvl2raQmbxpgKL8oxrkkGUR/fbzG2X1XzHQ0+cBjIPkT3K uLvPxf62lTDEg4Zo8ubI9f03QSJqPf54o989dlFTBwpurxyP3AmFMhrM5935k8us9KgU 88fAcdmfsrKb3VeZpi3VW/yh3OaeElU/O/a87zVXcGultZ8dh16QGULVFRj0vLYxr9Fe s3sPCK1Bzc0eFmiePI32rJ9l1Z76G0vWt88C1clgzauX1pWCDZI7KgP2DnEfe4eymlzD uHw29FBBwTBR1/qQltJXXpFM5YyRiABSIogRl5+kZj30UT+39srTtSfwdj9AmC3WL5mb sTIQ== 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=yNl+zSRg01QfjPzl7fWmoKDkOHBM2QHhUKaslisuF0Y=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=oVRjrNmi6iGFeLEj9GmRsG2/e6jfAI3Rm1GRjdSntRBghm4JxNlW7EoHMVcsswm3tf fu7jSqelTrtJjFv6/jvliQb7LDgv4L2HepK9s+6MDDvLOPsRecG9xa9VCqUzRDyqcGF2 CC26WN7Q1szNCBSg6gyGUgSyQKgnOcuGY8ns2ykmO12J1i1gHqHA1lPf+Mp7bU2RK0q6 XoQEzUbN6MRwytc6Oc13EE29Y8cQ8Mbro82keQOxyNz2Ht/my8P5Byp/MPlOUpnpgV0I tlsZlr3RHWWNsxRTLoAdetTuR+AMoVn31HeYfBGCeFKJq6Rc1+1ma4ONpRB8QWx3HO4p oQ1A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=RXjHh4jr; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w26-20020a1709064a1a00b00a46d368ecedsi150895eju.974.2024.03.22.13.29.05; Fri, 22 Mar 2024 13:29:06 -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=@khirnov.net header.s=mail header.b=RXjHh4jr; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 373C768D4CE; Fri, 22 Mar 2024 22:29:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 41DFE68D1FB for ; Fri, 22 Mar 2024 22:28:56 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=RXjHh4jr; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id ABD764496 for ; Fri, 22 Mar 2024 21:28:55 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id pzgLVI9HLm8K for ; Fri, 22 Mar 2024 21:28:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=+vkyPUmys4q4otDcZyYPHOkWs+C5hx0I2745UxYOgC0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=RXjHh4jrBrDetXFKsrpBz66x4/idtnUP31HoGeVT711nyWjv3hEM1iYSWacpWYfTY t3rFwoE3Nitk7YHzbZktryyrlZ7Knc/tLLaPE+BVg4fzOOQVAqwMyi7d9g1bJEHfaw aRL0+s9N0Ac5fD3n/KM4vEbZQk19gSXOH2U9vH4apySPsIv+USWsPyYIGCL4wZ8noc qNGzZp0ENlokjRDfBDHCLfL0vSAnfWU9v/CVqCJSIEtVuJYtgJPxOPd78YdFwJUDzr bFORogrRhinVdtkr+MaoH/tkaO99eRyOWUUNDo9PZXKcCBGktmVKWklhNNFu9qPtFm M+y5mwg6DCY3g== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 3BC1C4D4D for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 346073A0582 for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:31 +0100 Message-ID: <20240322202841.31730-2-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 02/12] fftools/ffmpeg_demux: only call filter_codec_opts() when we have a decoder 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: q5UfTM+PrLIH It is pointless otherwise, as decoder options will not be used. --- fftools/ffmpeg_demux.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 47312c9fe1..73b0eb0da1 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -1329,10 +1329,12 @@ static int ist_add(const OptionsContext *o, Demuxer *d, AVStream *st) if (ret < 0) return ret; - ret = filter_codec_opts(o->g->codec_opts, ist->st->codecpar->codec_id, - ic, st, ist->dec, &ds->decoder_opts); - if (ret < 0) - return ret; + if (ist->dec) { + ret = filter_codec_opts(o->g->codec_opts, ist->st->codecpar->codec_id, + ic, st, ist->dec, &ds->decoder_opts); + if (ret < 0) + return ret; + } ds->reinit_filters = -1; MATCH_PER_STREAM_OPT(reinit_filters, i, ds->reinit_filters, ic, st); From patchwork Fri Mar 22 20:28:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47329 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163371pzb; Fri, 22 Mar 2024 13:29:53 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWvXPy2PcrlK/fKsGSjm1mE/WX+3PDMTOOMwZfzTovDoTeThTdi9latGW9XcwSAVh/2eO/bGwqIur0T+5l7NvdB4tK7eL7+iRGh3Q== X-Google-Smtp-Source: AGHT+IHf+2PCAeS/cxu+rhPAF9M/upKARX4l5QuCVdSzBrsjyvjmJQGayKYk/4h2f1jI8v0iMT5i X-Received: by 2002:a19:4350:0:b0:513:e677:7909 with SMTP id m16-20020a194350000000b00513e6777909mr291071lfj.5.1711139392927; Fri, 22 Mar 2024 13:29:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139392; cv=none; d=google.com; s=arc-20160816; b=rADW5Y0C72i/hl/fvMUnOUzv4E4nC8KCv8rsojlQ+fdKsQ9o/yJN+B5yHgHXR7MPtn 6SEVOOCw+UD6PpfyF0LQbKwehYCzdv0keN2yWlDo6p1s7rWsjBilgr7w37NG2PT+mpqW wiSEXB38OphjDntRAqcyOTHeymxpKpSA0qq0R/1Nn7KTNyAHSBeOFcIw8JuU8TKMFIcs UpoftvZWU5iohmoxhcuNrEcy9377ki7be2SzU3m5hLf9kP9roSElXDiGDEfxA0CJGys2 WBlFbYYKCpMfrqySNOeK7cbNeEK0ku87fbPag/vNp3+GwBWM+ogvVldjbCj61wD5M5ne 3XZw== 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=2H0z4S6m4mOY3RgvSHFNnw+37ln+UaU1PfJMg8TnXvU=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=Wm+4/KdaIM5pcOU3A6W+I7s0G2jzyfyOK8dn3j1kJoa891O66SUDEcnilOJndwUlDl /Ihnayls1irk+N3Qg0X1D6fGRjE+RSwegjXEF6ZLZGren9QnEVnsOPUhT0gkWg5/8OXX 1TTiZnkeET8sMIL6lWKOlqQ2CIGD9h0YdQJCq8b5f/zBgJgpoHuW8QNEMQpN/R4Zf//h mqs99VI0ZNOSTCXtGYCVZw7+ypsUK7v2vu9OBlNTM71unbnI0bH5eDd4LLLz8+25LNGG QN/qpVslMVvTDfZyTNf1IHx5B6YH8gvyS3xwS9juFlDjr9QwftM2OKIBcakIv8Lp/KFF Tl6Q==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=din87Rpk; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y12-20020a50eb0c000000b0056bced776a1si160558edp.539.2024.03.22.13.29.52; Fri, 22 Mar 2024 13:29:52 -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=@khirnov.net header.s=mail header.b=din87Rpk; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 992AF68D4DB; Fri, 22 Mar 2024 22:29:08 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AD91768D4CE for ; Fri, 22 Mar 2024 22:29:01 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=din87Rpk; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id E99E44D62 for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id wkJPD4eisHRE for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=ftt+9fIfb5RE1YhJoLr+5sjmzEce37aH51ty2kvNADk=; h=From:To:Subject:Date:In-Reply-To:References:From; b=din87RpkQeou1/NVHs3UbfgKaIdKgezdO2rfs3+BnctWHUn/G4OYhljQX33W4pJzY FfFLlddP7g2VYBxQm+EH800N4s6gTL/i5OKOe+ZuBn3Ymhf+8gsSGzJDeBt+LIyWxs WUsiP56CVvcUtiIQfaWuKIEqURDBcsA9Um1paMKcB1Mi+LJZ3rVqDn/sp6CFJ8yJVt YQXr3xHTTjNLaTWTg/a9Kmz4LmgK/gjD3fbwJZwzhuzAhozLVE2khKE3GPvVf/CB17 Q3sx1vevBdCP+FZqDgj9NJgLB1VL+w7qChnSY1J4KeRWSIVKTjj/RT8x0EIBe9f5QQ zj0bzVicS89wg== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 380454D44 for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 410423A076E for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:32 +0100 Message-ID: <20240322202841.31730-3-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/12] fftools/cmdutils: do not use a random codec's private options 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: WdPjhDkVETfY There is only a single caller of filter_codec_opts() that passes a NULL codec to it, which is streamcopy in ffmpeg CLI. In that case we only want generic AVCodecContext options, not private options of any specific encoder. --- fftools/cmdutils.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c index f3c258bb99..1bb26f44f4 100644 --- a/fftools/cmdutils.c +++ b/fftools/cmdutils.c @@ -998,10 +998,6 @@ int filter_codec_opts(const AVDictionary *opts, enum AVCodecID codec_id, char prefix = 0; const AVClass *cc = avcodec_get_class(); - if (!codec) - codec = s->oformat ? avcodec_find_encoder(codec_id) - : avcodec_find_decoder(codec_id); - switch (st->codecpar->codec_type) { case AVMEDIA_TYPE_VIDEO: prefix = 'v'; From patchwork Fri Mar 22 20:28:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47325 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163088pzb; Fri, 22 Mar 2024 13:29:16 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWSPw6o53LMNOIb95zqjB6E68R5uZzYCwhCzp/usbKIsoo1pCNzKsENvBA6OxP9mBaIr/4kI3cLCf23XBQOZHHmvcfQ4il3KZlJEQ== X-Google-Smtp-Source: AGHT+IHh6HpnZaJUJj3C6R17oau89ZzXM7VcJO+PCn2J3aEOw+O62ozhQUCkpPMXIWF7Z9nKpOp7 X-Received: by 2002:ac2:5468:0:b0:513:d3c2:f094 with SMTP id e8-20020ac25468000000b00513d3c2f094mr325164lfn.29.1711139356045; Fri, 22 Mar 2024 13:29:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139356; cv=none; d=google.com; s=arc-20160816; b=L/G7D+ajzjPzgsRKxYIaxdfNBjFkI+YeQpCkkNytnV5E46SSCmPJLO03fjja2YFEpn E4huzocr813KnHs/72IH/tce4V4Oj5W2KlVY1CFZHIEIKibCgaVxr3u3gExMANFeIfsh wseE+u6pCEQyfSroKm1ODKy7DaaB/GilH1jffnpMrEp0ismIsPK0J+xePBD4sJ0gu8O4 dpkJqb19oTbFCsITR+OU1ckhV3wlOdZbNtNvl4T1jjQoJdujz+K4phAHo/n4gOZ1TD91 cBztKMYz1sVkckLcVSZ7GrPRZVL8e3LQBIxszOnWZlI06N/3yyyjI7qOevUUJQXbC/I8 Ra5g== 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=5MInblQXpELsqxSfamhMDw4NJDKyONceQ3YyBBZndRY=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=atJrOY+KQHdSA1fWaxqS4A/w/5SFjv+KartcaXz4ZXu3r+0DQv7u8SeWk8hXzeZjSr SmQGkH2IdHUVyulXWLiCKIxFI1fNT/1uVYH1L5HJfl/YaAiAAGszbbMdntGU+f5svT78 qvK8rS6S1jU4Oh16yx5ZoFOl/PBXm2u9l2tLJxdy3V3/3qtTeUd0V46om8FpPhfArLLT QGoIWr7EVyUACmALfdEEFfkVchJoUCWznKNoaBg706F/Fa1Wgb3egf3c5I0/MadSNNxG zn+F/rDLVSJ4vhw+LB6Ap+HeEczxm2LfWiuNr4tEPkvoMypBsaXLFrNG0e2BLjQQpjSy o/9g==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=ovVtMkH3; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id uz11-20020a170907118b00b00a46bb76421dsi171224ejb.353.2024.03.22.13.29.15; Fri, 22 Mar 2024 13:29:16 -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=@khirnov.net header.s=mail header.b=ovVtMkH3; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 29D5868D3F1; Fri, 22 Mar 2024 22:29:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4847568D3F1 for ; Fri, 22 Mar 2024 22:28:56 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=ovVtMkH3; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 4784A4D66 for ; Fri, 22 Mar 2024 21:28:55 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id 0GIoyABnnfw1 for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=xVgDMwcys9ZONkICqIM8eOcRnR8zJGmEF0g6cbQTg6o=; h=From:To:Subject:Date:In-Reply-To:References:From; b=ovVtMkH3QlZ0VZhKozZNYlvkfQMZlwAnUpIrHrHb1Zq/Vs7BAWB4FQ8Jiq5SYYCVl ezhfaTODRgATrP2cAv3jRmRlElGy5j1q/+vNUngzlxLgIg3es0KFKu8C6FoQYlB+pR brJ9Gq/t83Io58SU/Mn2MeW97l3J9W2KVNelWlV3nuFlHsH5pVrfJlUQQhTO720FBB OXUooI15TxW0WBlkpoABq3SUNGADhuFxLl8Kh7z1SCkAbnqrf0sjj2mib4UMWOk9gI RSoPi5jiKnI5PdUq8CU67joDbaQp67puZRndL13OEsLEi6TW14UjJcnDK9FnQQsOQf x+Sg/zC7ZNMvg== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 126CA4496 for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 4C6AA3A0A6B for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:33 +0100 Message-ID: <20240322202841.31730-4-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/12] fftools/ffmpeg_dec: apply decoder options manually 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: kswOfWVLIsFa Do not pass an options dictionary to avcodec_open2(). This should be equivalent to current behaviour, but will allow overriding caller-supplied options in a cleaner and more robust manner. We can now set the COPY_OPAQUE flag directly rather going through dec_opts. --- fftools/ffmpeg_dec.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/fftools/ffmpeg_dec.c b/fftools/ffmpeg_dec.c index ed411b6bf8..ad02a64b60 100644 --- a/fftools/ffmpeg_dec.c +++ b/fftools/ffmpeg_dec.c @@ -21,6 +21,7 @@ #include "libavutil/dict.h" #include "libavutil/error.h" #include "libavutil/log.h" +#include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/pixfmt.h" #include "libavutil/time.h" @@ -1191,8 +1192,6 @@ static int dec_open(DecoderPriv *dp, AVDictionary **dec_opts, if (!av_dict_get(*dec_opts, "threads", NULL, 0)) av_dict_set(dec_opts, "threads", "auto", 0); - av_dict_set(dec_opts, "flags", "+copy_opaque", AV_DICT_MULTIKEY); - ret = hw_device_setup_for_decode(dp, codec, o->hwaccel_device); if (ret < 0) { av_log(dp, AV_LOG_ERROR, @@ -1201,7 +1200,19 @@ static int dec_open(DecoderPriv *dp, AVDictionary **dec_opts, return ret; } - if ((ret = avcodec_open2(dp->dec_ctx, codec, dec_opts)) < 0) { + ret = av_opt_set_dict2(dp->dec_ctx, dec_opts, AV_OPT_SEARCH_CHILDREN); + if (ret < 0) { + av_log(dp, AV_LOG_ERROR, "Error applying decoder options: %s\n", + av_err2str(ret)); + return ret; + } + ret = check_avoptions(*dec_opts); + if (ret < 0) + return ret; + + dp->dec_ctx->flags |= AV_CODEC_FLAG_COPY_OPAQUE; + + if ((ret = avcodec_open2(dp->dec_ctx, codec, NULL)) < 0) { av_log(dp, AV_LOG_ERROR, "Error while opening decoder: %s\n", av_err2str(ret)); return ret; @@ -1220,10 +1231,6 @@ static int dec_open(DecoderPriv *dp, AVDictionary **dec_opts, dp->dec_ctx->extra_hw_frames = extra_frames; } - ret = check_avoptions(*dec_opts); - if (ret < 0) - return ret; - dp->dec.subtitle_header = dp->dec_ctx->subtitle_header; dp->dec.subtitle_header_size = dp->dec_ctx->subtitle_header_size; From patchwork Fri Mar 22 20:28:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47326 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163150pzb; Fri, 22 Mar 2024 13:29:24 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWOj1x+YYY7IdL/MKBGo+/dMf+oDpX/XcuN2/ZOiudXP+j+IsklzUPs1k7RPTbRw+OW6f8hbkgeMaeuMgjyIhNYx7laeVjhispPUw== X-Google-Smtp-Source: AGHT+IHMUwAMdSiX/QKNhQigMLMB6LHtd2oAmE+gLdQ35utqlxuZTN8t6PbJOPBJM+iHwfO2Qr9S X-Received: by 2002:a50:d517:0:b0:56b:b0f9:b7fa with SMTP id u23-20020a50d517000000b0056bb0f9b7famr374260edi.2.1711139364667; Fri, 22 Mar 2024 13:29:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139364; cv=none; d=google.com; s=arc-20160816; b=UxMiej8Dhl85PUDpagC6hDNlVK/ojPha8mheijhJoYsl1N8HUTE4Zlde0MdRGushSC sresnizi7/QcKaujBux14vhwVLSD0qRT06tPnehnc2m24ismnG+eQV5hkarm3Uduuk/L P4xUq7uk94mp1k1DDRqUjQ3grYn1BGL+wW3T/InZz5MkxF/Ui8+VzctyXPsCSeuVdH4D zM3LsrR66xY3K641U7TGhkgoT7Zyx1z51SLvJvHJ5ao0W0/gF0UmnLbn+zQYHt2MBLOE NVJr1wAjGn/NH180SZIWZ3iIP6mD4c3BfoJFTu59/4JvSlLqa8jFY7XNhTECcuLOmkLM BSaQ== 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=KMH6WeRp6ctUpqsJZCKTSLT2/vtE8pVRkDa757ZMZkA=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=IkuJXWHm4MiLIY/8SsSHKywfwnAPXeVkChERD7467grVoqhC2btIIFvpGeOmkGK03Q MbaUpsvKjW916ipb0MIkiUxhhLxp1KPSzMR5VGhQou9DwBJa4YF/cNrzfpCYcjC3nZrs a5ioqycWg0x0QDgqbkL1TsarkbIrb02Ie2ln77/nTKAI6u4Vhtc6R7UjMXMPSoA11lnb YX/ffgJKK5bBBDpOsgAW9T6SwQJNG45LGJrglcpeSjanzfWshArArZoPcMmt2Q8hwAp/ P3/zmSbu0jDEYzXjqCjhj3j0L3za8TOwRzLcr/GxEp4Hp/k1tNJc+ZsBm0P8Eqy1odU3 A8DQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=Rx14rwEA; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q17-20020a056402249100b005689f90706esi177181eda.79.2024.03.22.13.29.24; Fri, 22 Mar 2024 13:29:24 -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=@khirnov.net header.s=mail header.b=Rx14rwEA; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 386B768D588; Fri, 22 Mar 2024 22:29:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4A55D68D42B for ; Fri, 22 Mar 2024 22:28:56 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=Rx14rwEA; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 437C24D64 for ; Fri, 22 Mar 2024 21:28:55 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id V3nSGwq1OFyD for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=spOVD7KsJnwQV4SNRguNakUXeB2ycZujH8hf5lEP7EI=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Rx14rwEAhwnH5imlGzR06QLJDOMtiV1TLji2cfpGyskGps9HVhm9gALe1ZVIkG4km YGCoryv/Z4+nBLSq14FoWClZMCZsvybRrT08kvlQKScHNpV56l4aGBstpSM0dEKr9O Nyji8O4uZLZyuaaZj+UqgFz41H9rg/GUebDW1Sy8AAHCsLCYBiQrCxJJTlaec8bzI0 WubL27cuR537rmw8iuipGIYd+hd8FEiYjOfZe19odnCYb0JFu03/MD6cmFDHLJWuqc HYDA8MSozJX2h3SrG7eEGu4En0mQoEKr31V268wWHLn+7WCPPpyDaKi61NQLbQxLJr RTVq0LNcl2hpQ== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 36B214D42 for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 576CC3A0B9C for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:34 +0100 Message-ID: <20240322202841.31730-5-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/12] fftools/ffmpeg_{demux, dec}: pass -bitexact through DecoderFlags 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: kwq/RJbyDby4 Avoids abusing AV_DICT_MULTIKEY and relying on undocumented AVDictionary ordering behaviour. --- fftools/ffmpeg.h | 2 ++ fftools/ffmpeg_dec.c | 2 ++ fftools/ffmpeg_demux.c | 11 +++++------ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index 7454089c2d..1437b36b0d 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -304,6 +304,8 @@ enum DecoderFlags { DECODER_FLAG_TOP_FIELD_FIRST = (1 << 3), #endif DECODER_FLAG_SEND_END_TS = (1 << 4), + // force bitexact decoding + DECODER_FLAG_BITEXACT = (1 << 5), }; typedef struct DecoderOpts { diff --git a/fftools/ffmpeg_dec.c b/fftools/ffmpeg_dec.c index ad02a64b60..b8bfae469f 100644 --- a/fftools/ffmpeg_dec.c +++ b/fftools/ffmpeg_dec.c @@ -1211,6 +1211,8 @@ static int dec_open(DecoderPriv *dp, AVDictionary **dec_opts, return ret; dp->dec_ctx->flags |= AV_CODEC_FLAG_COPY_OPAQUE; + if (o->flags & DECODER_FLAG_BITEXACT) + dp->dec_ctx->flags |= AV_CODEC_FLAG_BITEXACT; if ((ret = avcodec_open2(dp->dec_ctx, codec, NULL)) < 0) { av_log(dp, AV_LOG_ERROR, "Error while opening decoder: %s\n", diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 73b0eb0da1..af4b4cfd1e 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -908,11 +908,11 @@ static int ist_use(InputStream *ist, int decoding_needed) if (decoding_needed && ds->sch_idx_dec < 0) { int is_audio = ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO; - ds->dec_opts.flags = (!!ist->fix_sub_duration * DECODER_FLAG_FIX_SUB_DURATION) | - (!!(d->f.ctx->iformat->flags & AVFMT_NOTIMESTAMPS) * DECODER_FLAG_TS_UNRELIABLE) | - (!!(d->loop && is_audio) * DECODER_FLAG_SEND_END_TS) + ds->dec_opts.flags |= (!!ist->fix_sub_duration * DECODER_FLAG_FIX_SUB_DURATION) | + (!!(d->f.ctx->iformat->flags & AVFMT_NOTIMESTAMPS) * DECODER_FLAG_TS_UNRELIABLE) | + (!!(d->loop && is_audio) * DECODER_FLAG_SEND_END_TS) #if FFMPEG_OPT_TOP - | ((ist->top_field_first >= 0) * DECODER_FLAG_TOP_FIELD_FIRST) + | ((ist->top_field_first >= 0) * DECODER_FLAG_TOP_FIELD_FIRST) #endif ; @@ -1357,8 +1357,7 @@ static int ist_add(const OptionsContext *o, Demuxer *d, AVStream *st) ist->user_set_discard = ist->st->discard; } - if (o->bitexact) - av_dict_set(&ds->decoder_opts, "flags", "+bitexact", AV_DICT_MULTIKEY); + ds->dec_opts.flags |= DECODER_FLAG_BITEXACT * !!o->bitexact; /* Attached pics are sparse, therefore we would not want to delay their decoding * till EOF. */ From patchwork Fri Mar 22 20:28:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47333 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163716pzb; Fri, 22 Mar 2024 13:30:28 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUDnF0mcmJJ2zQclmUR4xIv7PSLaRYH+NYZmumTtSS1g0X0Hkqb8cs0S72+7CGYmqXG9M7//e5KwAKq/V5/P/pHcTkb/ixjV2hsyg== X-Google-Smtp-Source: AGHT+IFTtQ2v3oOT8M8nomAtyi6Rx5MkgYXp/B2IDDCOeUgFlMQMYjkpSyQoSTTLiLT2hfEdbetQ X-Received: by 2002:a19:5e41:0:b0:515:9b0f:1235 with SMTP id z1-20020a195e41000000b005159b0f1235mr277338lfi.67.1711139426432; Fri, 22 Mar 2024 13:30:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139426; cv=none; d=google.com; s=arc-20160816; b=fZ7sz/sbRwc6/bkpt9TraJRMFjtwSHFEOtiGFWnAyyBPTTjpr+vxqQHXPVTHUNnMqN yneuaWyjxU8BPcJ4YODlVRH0PR61LM0PsGiDfrZKUo1VrVvKvLtiodd3UnHMOqx0Udv0 LUfJvrSqcCIWVyiZ8H8Ddi4jFNBEXacjN0tkuUXl6oKlHiHGbBBCW7BIjE8DijPoIBOJ TLFw74CoZ/XfkHxunpa4Ksj7Bjf/sOsb9tdHncjh+8cKLBunfUtp140E1lH7qPE5RX6F EJbBMxIt9R8vexO5xI2TGxvAqvMCCfPkVO3jQyat5wWgtF3OYHXQ54i98Nj7hs7IKIVR 9tIA== 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=FOfEOgjnR75/6gOjeM7EKHNhzP0OlybMdyzHbGEs79M=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=jCebkj5hDyMaHrZCAuCHxgwOIoLAncgGy885bFkcnnFLiH/m6l0VrRAV6ury0z6y7K JZsu7AY8LO0mnq2gBD2u3Q9FloxUq8P++ngzJupSTrv689rXjESuQlVFUnGKNsrFHmjf z5d78PWlhrQ8w2DW0yZSFj/LGtsZofn+EkL29u9joISC38nDnmWVi6IvnMWTx7pWAyex RrBSxwyuP1M1btM2XtkbON7oWl4pkzXFuVNLeqn/Y+HdkmTrsaxFQHb0MY0OB8HQND3p rO6pqRc2/8oix+RP7Imep/KK69BgyOnt8NlwP6LQNJcCqhgmGNPDRXwdPvFLWKvfd99L CgQw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=JvqOgqDk; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id n25-20020a170906841900b00a46f6bf64bbsi165335ejx.140.2024.03.22.13.30.25; Fri, 22 Mar 2024 13:30:26 -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=@khirnov.net header.s=mail header.b=JvqOgqDk; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D0BF868D5C9; Fri, 22 Mar 2024 22:29:12 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B143068D4D8 for ; Fri, 22 Mar 2024 22:29:01 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=JvqOgqDk; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 51AAE4D44 for ; Fri, 22 Mar 2024 21:28:57 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id WxldBx_5hxLp for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=+yrryuV46k/zsrc/PtmVxgKygpsj5MCd+bWBOg4r9YY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=JvqOgqDk6zjwivIS/vHqEIzFFf2LWwWG8aJPANYcfRigyATgA5JBkPwT+YR3pUL1+ 1p5NAUsF2vGwB/JW1XmBPQnWaaFDbmJyeVtcTgpgDj5NZzarmiZGZMp/RxnIY5IJRA u6RsG/f9g2/qDzzZ7cppV/W+bCsLXVdPLWyXWLU3xhTfllSI9kSnpij83KPaFl98A5 G99XaAM8NP11O2jGVlnvzJJXDHy/jyKPbTHfABW43lm2Xq5B2Le1etdzjYgl++XyCP mN/vBf8FEvQSNHRhOZAmADBjGOaNapWHcZHRNzHMIwIkj+eJo0RtKTe6dIV2QQsI8B 1vPSHRalPXAEw== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 6895F4D58 for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 632333A0C79 for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:35 +0100 Message-ID: <20240322202841.31730-6-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/12] fftools/ffmpeg_dec: apply cropping manually 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: XmhoCAFLKSDm lavfi does not require aligned buffers, so we can safely apply top/left cropping by any amount, without passing any special flags to lavc. Longer term, an even better solution would probably be auto-inserting the crop filter (or its hwaccel versions) as needed. Multiple FATE tests no longer need -flags unaligned. --- fftools/ffmpeg_dec.c | 14 ++++++++++++++ tests/fate/h264.mak | 2 +- tests/fate/hevc.mak | 8 ++++---- tests/fate/vvc.mak | 2 +- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/fftools/ffmpeg_dec.c b/fftools/ffmpeg_dec.c index b8bfae469f..e3ed0b3978 100644 --- a/fftools/ffmpeg_dec.c +++ b/fftools/ffmpeg_dec.c @@ -51,6 +51,7 @@ typedef struct DecoderPriv { // a combination of DECODER_FLAG_*, provided to dec_open() int flags; + int apply_cropping; enum AVPixelFormat hwaccel_pix_fmt; enum HWAccelID hwaccel_id; @@ -404,6 +405,15 @@ static int video_frame_process(DecoderPriv *dp, AVFrame *frame) if (dp->sar_override.num) frame->sample_aspect_ratio = dp->sar_override; + if (dp->apply_cropping) { + // lavfi does not require aligned frame data + int ret = av_frame_apply_cropping(frame, AV_FRAME_CROP_UNALIGNED); + if (ret < 0) { + av_log(dp, AV_LOG_ERROR, "Error applying decoder cropping\n"); + return ret; + } + } + return 0; } @@ -1214,6 +1224,10 @@ static int dec_open(DecoderPriv *dp, AVDictionary **dec_opts, if (o->flags & DECODER_FLAG_BITEXACT) dp->dec_ctx->flags |= AV_CODEC_FLAG_BITEXACT; + // we apply cropping outselves + dp->apply_cropping = dp->dec_ctx->apply_cropping; + dp->dec_ctx->apply_cropping = 0; + if ((ret = avcodec_open2(dp->dec_ctx, codec, NULL)) < 0) { av_log(dp, AV_LOG_ERROR, "Error while opening decoder: %s\n", av_err2str(ret)); diff --git a/tests/fate/h264.mak b/tests/fate/h264.mak index 674054560b..88f06d7b15 100644 --- a/tests/fate/h264.mak +++ b/tests/fate/h264.mak @@ -312,7 +312,7 @@ fate-h264-conformance-ci1_ft_b: CMD = framecrc -i $(TARGET_SAM fate-h264-conformance-ci_mw_d: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CI_MW_D.264 fate-h264-conformance-cvbs3_sony_c: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CVBS3_Sony_C.jsv fate-h264-conformance-cvcanlma2_sony_c: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CVCANLMA2_Sony_C.jsv -fate-h264-conformance-cvfc1_sony_c: CMD = framecrc -flags unaligned -i $(TARGET_SAMPLES)/h264-conformance/CVFC1_Sony_C.jsv +fate-h264-conformance-cvfc1_sony_c: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CVFC1_Sony_C.jsv fate-h264-conformance-cvfi1_sony_d: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CVFI1_Sony_D.jsv fate-h264-conformance-cvfi1_sva_c: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CVFI1_SVA_C.264 fate-h264-conformance-cvfi2_sony_h: CMD = framecrc -i $(TARGET_SAMPLES)/h264-conformance/CVFI2_Sony_H.jsv diff --git a/tests/fate/hevc.mak b/tests/fate/hevc.mak index 4889ee8237..720603c112 100644 --- a/tests/fate/hevc.mak +++ b/tests/fate/hevc.mak @@ -200,8 +200,8 @@ $(HEVC_TESTS_444_8BIT): SCALE_OPTS := -pix_fmt yuv444p $(HEVC_TESTS_10BIT): SCALE_OPTS := -pix_fmt yuv420p10le -vf scale $(HEVC_TESTS_422_10BIT) $(HEVC_TESTS_422_10BIN): SCALE_OPTS := -pix_fmt yuv422p10le -vf scale $(HEVC_TESTS_444_12BIT): SCALE_OPTS := -pix_fmt yuv444p12le -vf scale -fate-hevc-conformance-%: CMD = framecrc -flags unaligned -i $(TARGET_SAMPLES)/hevc-conformance/$(subst fate-hevc-conformance-,,$(@)).bit $(SCALE_OPTS) -$(HEVC_TESTS_422_10BIN): CMD = framecrc -flags unaligned -i $(TARGET_SAMPLES)/hevc-conformance/$(subst fate-hevc-conformance-,,$(@)).bin $(SCALE_OPTS) +fate-hevc-conformance-%: CMD = framecrc -i $(TARGET_SAMPLES)/hevc-conformance/$(subst fate-hevc-conformance-,,$(@)).bit $(SCALE_OPTS) +$(HEVC_TESTS_422_10BIN): CMD = framecrc -i $(TARGET_SAMPLES)/hevc-conformance/$(subst fate-hevc-conformance-,,$(@)).bin $(SCALE_OPTS) FATE_HEVC-$(call FRAMECRC, HEVC, HEVC, HEVC_PARSER) += $(HEVC_TESTS_8BIT) $(HEVC_TESTS_444_8BIT) FATE_HEVC-$(call FRAMECRC, HEVC, HEVC, HEVC_PARSER SCALE_FILTER) += \ @@ -252,10 +252,10 @@ FATE_HEVC_FFPROBE-$(call DEMDEC, MOV, HEVC) += fate-hevc-dv-rpu fate-hevc-two-first-slice: CMD = threads=2 framemd5 -i $(TARGET_SAMPLES)/hevc/two_first_slice.mp4 -sws_flags bitexact -t 00:02.00 -an FATE_HEVC-$(call FRAMEMD5, MOV, HEVC) += fate-hevc-two-first-slice -fate-hevc-cabac-tudepth: CMD = framecrc -flags unaligned -i $(TARGET_SAMPLES)/hevc/cbf_cr_cb_TUDepth_4_circle.h265 -pix_fmt yuv444p +fate-hevc-cabac-tudepth: CMD = framecrc -i $(TARGET_SAMPLES)/hevc/cbf_cr_cb_TUDepth_4_circle.h265 -pix_fmt yuv444p FATE_HEVC-$(call FRAMECRC, HEVC, HEVC) += fate-hevc-cabac-tudepth -fate-hevc-small422chroma: CMD = framecrc -flags unaligned -i $(TARGET_SAMPLES)/hevc/food.hevc -pix_fmt yuv422p10le -vf scale +fate-hevc-small422chroma: CMD = framecrc -i $(TARGET_SAMPLES)/hevc/food.hevc -pix_fmt yuv422p10le -vf scale FATE_HEVC-$(call FRAMECRC, HEVC, HEVC, HEVC_PARSER SCALE_FILTER) += fate-hevc-small422chroma FATE_SAMPLES_AVCONV += $(FATE_HEVC-yes) diff --git a/tests/fate/vvc.mak b/tests/fate/vvc.mak index f5a45cc4ca..6cb3471b55 100644 --- a/tests/fate/vvc.mak +++ b/tests/fate/vvc.mak @@ -38,7 +38,7 @@ $(foreach VAR,$(FATE_VVC_VARS), $(eval VVC_TESTS_$(VAR) := $(addprefix fate-vvc- $(VVC_TESTS_8BIT): SCALE_OPTS := -pix_fmt yuv420p $(VVC_TESTS_10BIT): SCALE_OPTS := -pix_fmt yuv420p10le -vf scale $(VVC_TESTS_444_10BIT): SCALE_OPTS := -pix_fmt yuv444p10le -vf scale -fate-vvc-conformance-%: CMD = framecrc -flags unaligned -c:v vvc -strict experimental -i $(TARGET_SAMPLES)/vvc-conformance/$(subst fate-vvc-conformance-,,$(@)).bit $(SCALE_OPTS) +fate-vvc-conformance-%: CMD = framecrc -c:v vvc -strict experimental -i $(TARGET_SAMPLES)/vvc-conformance/$(subst fate-vvc-conformance-,,$(@)).bit $(SCALE_OPTS) FATE_VVC-$(call FRAMECRC, VVC, VVC, VVC_PARSER) += $(VVC_TESTS_8BIT) FATE_VVC-$(call FRAMECRC, VVC, VVC, VVC_PARSER SCALE_FILTER) += \ From patchwork Fri Mar 22 20:28:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47327 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163227pzb; Fri, 22 Mar 2024 13:29:33 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV9qRpV8/T4ids4N5mIoNpocq1ZE5dGFVX6G77/Qwp1bNJNN7xB1jZfhWscJ/+/PxIy5v/HQ62O/iUscZ/YDLb80ipwLRg2VSQ8kQ== X-Google-Smtp-Source: AGHT+IEjNKfGrMLREEdPuIslAGEO8Lu7W4+QjMU73M+VcD/Hlp0gKUBkqztwYynNccPCDMUtKUen X-Received: by 2002:a50:9341:0:b0:568:aa14:37a9 with SMTP id n1-20020a509341000000b00568aa1437a9mr519827eda.24.1711139373353; Fri, 22 Mar 2024 13:29:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139373; cv=none; d=google.com; s=arc-20160816; b=amewrPvYjYrFgFgUGlmA7sSrmzniY3uG8KRRvI/Huq9D9kL6EbQhLYH1gBn5vQCuCi KQ0ypKNnM8oBpZww/BUJ5t/rE4gdJhi1p409CBgXo8l/UlSSt9XC8vTTOSX4GEnGKkAX wS5zrdoKK8qB4/19oxzcQvZiWzqTutSMsjqfP9EwqVJuF5B1K5y7ooNiBU+5SyVtZGfd XxV89J0PWWQpu3ss8s4LjC3pJqLrx6jOAZkTo+WaFTo6m9vSEgyVX+077fqNvhvHwGQw db2fyBkZTVG6ZpzU0kwNelILKecSQ5VfrTAzA2vMp+6Cp2jabt7O+YbLi5j6s+fl7p4j dLDQ== 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=lUkOP89+84si/NYfzE1HhBi6hOAHD/XSTbHvVYWTZfw=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=e1mvOoJTObWcrXMnPQKeDg4eRjlKXYo7epJoZ5kccJftzrFrxv5zFNEXvlYVw6Z/Za 9pAwbCqL5XOWsp3YCSLDC5fu3p5PlLiMjNTlBuM0Uun17XmNlmouRuOZOgSzhNYote82 xvCDzPDCYR0ENaw6wemaGiKC3vcSE8SBVjEUf1Yq3BB1bAtJWkKDu43QG8QA8X003wdj MJ/r4n+8he3aO7+lk6yIyWsBXYK4lH81R0kxrnNBFfLrJK7RzvwSGuWGm/y9Ir5VLruz 92Wl30Xs/uJkRwqFTBPYvW+ebHBXopge7Hgwd2Jz0vGV4llfX4DxQvxYD2xFUP1PuWJQ h+wg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=IfuWodh3; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v9-20020a056402348900b0056be8a30586si160536edc.228.2024.03.22.13.29.32; Fri, 22 Mar 2024 13:29:33 -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=@khirnov.net header.s=mail header.b=IfuWodh3; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4631A68D5C4; Fri, 22 Mar 2024 22:29:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 458BA68D1FE for ; Fri, 22 Mar 2024 22:28:56 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=IfuWodh3; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id AD06E4D5E for ; Fri, 22 Mar 2024 21:28:55 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id zF67vpMGSppz for ; Fri, 22 Mar 2024 21:28:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=7sUnHy2MPIevvfSpJRhpPdDRcgA7SH/3cgWpZDsTf40=; h=From:To:Subject:Date:In-Reply-To:References:From; b=IfuWodh3WPS+5IixAy0VQL9jLe2TrtcfNqJ44HXePbiTvS/vnQa9fGBu2LeMDAgxc qJE0u/FPUx6CnrwDrnEA7gKawRiEs+NXr4Qq9JJ3h4uCfItY9/i3FJ5fgrqqcwkBHs UPDJ3rH9kSjOCQVBqft8UaOFcLUIVwd9lB0zq25M0V/c1nuuDbYDlGiDBoGG7u/knm ojMmetKlWzCJBRinLHF2hLbRT01mzAywLmrgr9EdmMmjXIIqNQbFPaU2A0uGK120kS 6mNhGntYSfnwGmKBveLgcR4/qidvalUdbJ5bZCNt+Ztew63hb3+TyoC8pFSdctv27y 7AQomMgucmp5A== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 6532D4D56 for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 6ECCC3A0C7C for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:36 +0100 Message-ID: <20240322202841.31730-7-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/12] fftools/ffmpeg_filter: remove display matrix if we have applied it 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: b2VGc/BYfvgu --- fftools/ffmpeg_filter.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index 3d88482d07..9aa499a89e 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -143,6 +143,7 @@ typedef struct InputFilterPriv { AVBufferRef *hw_frames_ctx; int displaymatrix_present; + int displaymatrix_applied; int32_t displaymatrix[9]; // fallback parameters to use when no input is ever sent @@ -1568,6 +1569,7 @@ static int configure_input_video_filter(FilterGraph *fg, AVFilterGraph *graph, av_assert0(desc); // TODO: insert hwaccel enabled filters like transpose_vaapi into the graph + ifp->displaymatrix_applied = 0; if ((ifp->opts.flags & IFILTER_FLAG_AUTOROTATE) && !(desc->flags & AV_PIX_FMT_FLAG_HWACCEL)) { int32_t *displaymatrix = ifp->displaymatrix; @@ -1601,6 +1603,8 @@ static int configure_input_video_filter(FilterGraph *fg, AVFilterGraph *graph, } if (ret < 0) return ret; + + ifp->displaymatrix_applied = 1; } snprintf(name, sizeof(name), "trim_in_%s", ifp->opts.name); @@ -2697,6 +2701,9 @@ static int send_frame(FilterGraph *fg, FilterGraphThread *fgt, frame->duration = av_rescale_q(frame->duration, frame->time_base, ifp->time_base); frame->time_base = ifp->time_base; + if (ifp->displaymatrix_applied) + av_frame_remove_side_data(frame, AV_FRAME_DATA_DISPLAYMATRIX); + fd = frame_data(frame); if (!fd) return AVERROR(ENOMEM); From patchwork Fri Mar 22 20:28:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47328 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163290pzb; Fri, 22 Mar 2024 13:29:43 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXsUNrpfVYmP8kTMt0zhBSPJYCYWPdTp/KHH3EsHSxAepoLqWShdinEauzRM6PcaddCnsSTUvdbiJmmx7vVUj4+8GiSe/Nh6zwjqA== X-Google-Smtp-Source: AGHT+IGWm5SoSEmO5T7WsFxJAOdz+tBSY/CNryaVG0v+tmsB7Qybc89HC3rLSf/66EsrUscMy9K2 X-Received: by 2002:a17:906:3c01:b0:a46:b79e:d8d with SMTP id h1-20020a1709063c0100b00a46b79e0d8dmr514253ejg.29.1711139382891; Fri, 22 Mar 2024 13:29:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139382; cv=none; d=google.com; s=arc-20160816; b=YiGvRZWMSCSvAMHLf7aDr8UkrHzT6AevuhfpdhHwMgfrAKx9fJI7PVIbDdLG/LrjY5 rkfokUfAz+lQ32T3Hd268Afq3VJl2VDHl9/UYx0ORVciHlQfj8QyMtMOwgIORiHL/Mm2 r0uc/o1gN0P05TGwOIUd/TfFQ1YYRrB+2j1Mf4hm/2y3ZmYuIJIRhiEtA7+XfHOZURnn XakudB3PNGjpEWmOW1vUBA1TMC6QJsoQEDK4dM5hoIKIRvlOaPeBrVXZVSK4lPY1NuBC eq3mo8isSBuZzsAN9K0YLUvf8hqzQyQ4qDjhQacQpg3flrl5xbUOaHZAchDaIhApU7aK y93w== 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=/OCG1RIipI3ogpPcUOgXmr/ouXFTZQ49bXXpWYI3PwU=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=ZdZLeDp6RtrywjknzPy07MG5ZrHHBQ5vlpIhAjHq1eGdIzrudXAtUR6/Z67srO1T3G T2PQqAdUoAmm/GH07bP+SC+WiQHm5q8un4tG2b8YhyiOnQbXWf18JUG5kwELWeAWuN3E KeSSXEKJsZ7GHxHtanMS+IpWnlr22efIoQNn8g7t3++UWJImp8OD4udy2gRBp/bhV3PD KI656u2j9ick+D4VKh1Pa5zb/r7L7pAzG6By4Bz1pGz4whGcyKEed+8XGRZq7SNCtYPg AYqdnpjzH/nVqdgJInge5gJqEkf9otTBZZVefhSrgah2oCAeMzN7EKPvvuYbuam06eqQ To2w==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=FokwoanO; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gr20-20020a170906e2d400b00a46d2e3fdcdsi143806ejb.721.2024.03.22.13.29.42; Fri, 22 Mar 2024 13:29:42 -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=@khirnov.net header.s=mail header.b=FokwoanO; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 730B868D5CB; Fri, 22 Mar 2024 22:29:07 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8CCD968D2E4 for ; Fri, 22 Mar 2024 22:28:56 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=FokwoanO; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 211194D5C for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id MrymBsTPyN8R for ; Fri, 22 Mar 2024 21:28:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=m/4lB+stHg00YezoLOn2Wb5aAp1R52+gOmT/7yYedZs=; h=From:To:Subject:Date:In-Reply-To:References:From; b=FokwoanOyVSpSn6hH22km/rMctFmeInrCmVeaW2wRPLc27XNqu0MtKptYK5H2DMYs +YaE4O02H9qtQzrBcIYJDLEWUP2Wgaeesi5zK5AcnaQAsjZ1UlESBeX2D8WdM2JaEi qw8WsMP/+2o2LzCiwQPyGNAaEKGzLOG/kEn159vbxFMk3ao/D7wUyZdyAEgzWSJWB5 6kXHHCXZM+W/LKegek0pYyHPbr5E+alaxT+nWLzXUdlotWi1kyykbd+0VzB0qSeZWp XKCwSvUyXc9s7lg8SxQr0RxAa1t9Ifc+XLUrbE2owa9BHS+878rQWeVnvxev0D61/+ qzV1PnplggJoA== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 718924D5D for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 7A9033A0DA6 for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:37 +0100 Message-ID: <20240322202841.31730-8-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/12] lavc/frame_thread_encoder: avoid assigning a whole AVCodecContext 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: mHishgZosR2i It is highly unsafe, as AVCodecContext contains many allocated fields. Copying information via AVCodecParameters and with av_opt_copy() should handle everything needed by thread workers. --- libavcodec/frame_thread_encoder.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/libavcodec/frame_thread_encoder.c b/libavcodec/frame_thread_encoder.c index cda5158117..744062b776 100644 --- a/libavcodec/frame_thread_encoder.c +++ b/libavcodec/frame_thread_encoder.c @@ -28,6 +28,7 @@ #include "libavutil/thread.h" #include "avcodec.h" #include "avcodec_internal.h" +#include "codec_par.h" #include "encode.h" #include "internal.h" #include "pthread_internal.h" @@ -121,6 +122,7 @@ av_cold int ff_frame_thread_encoder_init(AVCodecContext *avctx) int i=0; ThreadContext *c; AVCodecContext *thread_avctx = NULL; + AVCodecParameters *par = NULL; int ret; if( !(avctx->thread_type & FF_THREAD_FRAME) @@ -194,18 +196,27 @@ av_cold int ff_frame_thread_encoder_init(AVCodecContext *avctx) } } + par = avcodec_parameters_alloc(); + if (!par) { + ret = AVERROR(ENOMEM); + goto fail; + } + + ret = avcodec_parameters_from_context(par, avctx); + if (ret < 0) + goto fail; + for(i=0; ithread_count ; i++){ - void *tmpv; thread_avctx = avcodec_alloc_context3(avctx->codec); if (!thread_avctx) { ret = AVERROR(ENOMEM); goto fail; } - tmpv = thread_avctx->priv_data; - *thread_avctx = *avctx; - thread_avctx->priv_data = tmpv; - thread_avctx->internal = NULL; - thread_avctx->hw_frames_ctx = NULL; + + ret = avcodec_parameters_to_context(thread_avctx, par); + if (ret < 0) + goto fail; + ret = av_opt_copy(thread_avctx, avctx); if (ret < 0) goto fail; @@ -227,10 +238,13 @@ av_cold int ff_frame_thread_encoder_init(AVCodecContext *avctx) } } + avcodec_parameters_free(&par); + avctx->active_thread_type = FF_THREAD_FRAME; return 0; fail: + avcodec_parameters_free(&par); ff_codec_close(thread_avctx); av_freep(&thread_avctx); avctx->thread_count = i; From patchwork Fri Mar 22 20:28:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47335 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163838pzb; Fri, 22 Mar 2024 13:30:43 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWkIpkqjk8AqIJQuKhxYJNwNNSqXlLsMIdjGHq2LvocwR4B2xUslTCUzn4yWNyEfzilMJgwWkcsvGjr3QuqbHeWqohy/DRwvruERg== X-Google-Smtp-Source: AGHT+IFxzketrONR4Gsamd8LwjP665e138DkiltKNF9usUEBX14q3AnPaO/n4pCS/0n8RRqZwgqK X-Received: by 2002:a17:906:c44b:b0:a47:357c:2d58 with SMTP id ck11-20020a170906c44b00b00a47357c2d58mr512857ejb.27.1711139443348; Fri, 22 Mar 2024 13:30:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139443; cv=none; d=google.com; s=arc-20160816; b=qYfxHS5gq7bTGbq03q+vP0Wc7TLAzv20KU2wYW5ztVVfx8EBgxVEHt5hALkKu0nVmF mJjTee1b/GnVc2m1IA6onPBf7OdTQZ/aTbgSAu58qT+ZePuRvxT05eyH47iAPz9I6i1i vYcYp/zYcqFOtGjl7EQwgM31nrBoejYanSmJ1/zE9YjX5695A6r/8FafjyoZSd5/FPSj ljuL+5myDpdGBhAtq3OkJF0E+1Xnwb/uYd2sTvVyJ93LlnGfMP4loZg5mGGwQmLbG+oT 2jRwfpti0lLk8aIUPrD+tvbBvGGONakqpV4PKP3Mx3bzg0PGnJVIo9ay356xoWv+9PRz Zm4A== 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=F3CAaLSgGxkJui3ZOD6FP9KzEkgr2QDwkunyjCXVrJ8=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=HGHMiFAm/0AVBwpfZDD5ye5H70tV9g+4q6KuimAeHYO1qxluZZTvnP530dRg72sCCT 5BRks4dC35siO17QeIKkIFeQsgwNc1xE9JzW58x/P5EaTIs1KaxncF8pVnJEUd+mpF1r rPsMgWaKHIeWbYuFs/noh50AXoFXn2WQoK8p18LpVyFT9YP1Ujysd0sJbjoln3BKsKut koRWCqGOLlEqnqj7krvEFTJkzSdY3z1o09Knk5pm2l2A+CGvX4ATeoCNDfjCXbsjXCvy eCvBwkEibcKSNz7ydkDSRdYc/+heaaq3j4DMPZHkrWbA2b2sMx4OSvZR1l0QSv+zWges TvGQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=VHlYSTAa; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id lv27-20020a170906bc9b00b00a46ee3c4a03si155582ejb.988.2024.03.22.13.30.43; Fri, 22 Mar 2024 13:30:43 -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=@khirnov.net header.s=mail header.b=VHlYSTAa; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E301368D5EC; Fri, 22 Mar 2024 22:29:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8977D68D5C6 for ; Fri, 22 Mar 2024 22:29:01 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=VHlYSTAa; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 307C64D42 for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id wh-HSEggJzIa for ; Fri, 22 Mar 2024 21:28:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=djShET+ojDEM3fpXVmIGIysP3wK5Y2zTievHhRyMGNc=; h=From:To:Subject:Date:In-Reply-To:References:From; b=VHlYSTAaMwC3X+5jYJrhgzgflxtXMDF/N69rze8eC4zzvRbcnZE+G6uJORPWdEwst +hghAcUcum8GhscAIaZPeNmharnpKFL0erfPVbVLg2lo1q5hJvV1kcjNuVGU+lJ+KZ Fjvc+XdtZWLo8EzBobscNnqq23X9YVVdE0RflzOcrPYPjUqRAffMB/br3XY8zoAPaz u8SL8BTOGytp95Tln4R+yMNZ9g3bm/W/PnBX1MT8YjO9GCQCjEh+nAd3bJ4oDUXqp7 l8HC1841Pw6Luo46snZruo1X6MMx1sjIQY1Dcxy4lQh7snbSvuomKaWD6F8jxcD/Tn o8h3PbqR/LHRQ== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 73D204D61 for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 867DE3A0F49 for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:38 +0100 Message-ID: <20240322202841.31730-9-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/12] lavc/decode: move sd_global_map to avcodec 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: rCef0rEuJzLU It will be shared with encoding code. --- libavcodec/avcodec.c | 14 ++++++++++++++ libavcodec/avcodec_internal.h | 16 +++++++++++++++- libavcodec/decode.c | 33 +++++++++------------------------ 3 files changed, 38 insertions(+), 25 deletions(-) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index a9a87bb58c..525fe516bd 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -54,6 +54,20 @@ */ #define FF_MAX_EXTRADATA_SIZE ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE) +const SideDataMap ff_sd_global_map[] = { + { AV_PKT_DATA_REPLAYGAIN , AV_FRAME_DATA_REPLAYGAIN }, + { AV_PKT_DATA_DISPLAYMATRIX, AV_FRAME_DATA_DISPLAYMATRIX }, + { AV_PKT_DATA_SPHERICAL, AV_FRAME_DATA_SPHERICAL }, + { AV_PKT_DATA_STEREO3D, AV_FRAME_DATA_STEREO3D }, + { AV_PKT_DATA_AUDIO_SERVICE_TYPE, AV_FRAME_DATA_AUDIO_SERVICE_TYPE }, + { AV_PKT_DATA_MASTERING_DISPLAY_METADATA, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA }, + { AV_PKT_DATA_CONTENT_LIGHT_LEVEL, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL }, + { AV_PKT_DATA_ICC_PROFILE, AV_FRAME_DATA_ICC_PROFILE }, + { AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT,AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT }, + { AV_PKT_DATA_NB }, +}; + + int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2), void *arg, int *ret, int count, int size) { size_t i; diff --git a/libavcodec/avcodec_internal.h b/libavcodec/avcodec_internal.h index 4d1cb3a314..0a024378ae 100644 --- a/libavcodec/avcodec_internal.h +++ b/libavcodec/avcodec_internal.h @@ -25,8 +25,22 @@ #ifndef AVCODEC_AVCODEC_INTERNAL_H #define AVCODEC_AVCODEC_INTERNAL_H +#include "libavutil/frame.h" + +#include "packet.h" + struct AVCodecContext; -struct AVFrame; + +typedef struct SideDataMap { + enum AVPacketSideDataType packet; + enum AVFrameSideDataType frame; +} SideDataMap; + +/** + * A map between packet and frame side data types. + * Terminated with an entry where packet=AV_PKT_DATA_NB. + */ +extern const SideDataMap ff_sd_global_map[]; /** * avcodec_receive_frame() implementation for decoders. diff --git a/libavcodec/decode.c b/libavcodec/decode.c index 34bcb7cc64..ddb73b6934 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -1376,21 +1376,6 @@ static int add_metadata_from_side_data(const AVPacket *avpkt, AVFrame *frame) return av_packet_unpack_dictionary(side_metadata, size, frame_md); } -static const struct { - enum AVPacketSideDataType packet; - enum AVFrameSideDataType frame; -} sd_global_map[] = { - { AV_PKT_DATA_REPLAYGAIN , AV_FRAME_DATA_REPLAYGAIN }, - { AV_PKT_DATA_DISPLAYMATRIX, AV_FRAME_DATA_DISPLAYMATRIX }, - { AV_PKT_DATA_SPHERICAL, AV_FRAME_DATA_SPHERICAL }, - { AV_PKT_DATA_STEREO3D, AV_FRAME_DATA_STEREO3D }, - { AV_PKT_DATA_AUDIO_SERVICE_TYPE, AV_FRAME_DATA_AUDIO_SERVICE_TYPE }, - { AV_PKT_DATA_MASTERING_DISPLAY_METADATA, AV_FRAME_DATA_MASTERING_DISPLAY_METADATA }, - { AV_PKT_DATA_CONTENT_LIGHT_LEVEL, AV_FRAME_DATA_CONTENT_LIGHT_LEVEL }, - { AV_PKT_DATA_ICC_PROFILE, AV_FRAME_DATA_ICC_PROFILE }, - { AV_PKT_DATA_AMBIENT_VIEWING_ENVIRONMENT,AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT }, -}; - int ff_decode_frame_props_from_pkt(const AVCodecContext *avctx, AVFrame *frame, const AVPacket *pkt) { @@ -1414,13 +1399,13 @@ FF_DISABLE_DEPRECATION_WARNINGS FF_ENABLE_DEPRECATION_WARNINGS #endif - for (int i = 0; i < FF_ARRAY_ELEMS(sd_global_map); i++) { + for (int i = 0; ff_sd_global_map[i].packet < AV_PKT_DATA_NB; i++) { size_t size; - const uint8_t *packet_sd = av_packet_get_side_data(pkt, sd_global_map[i].packet, &size); + const uint8_t *packet_sd = av_packet_get_side_data(pkt, ff_sd_global_map[i].packet, &size); if (packet_sd) { AVFrameSideData *frame_sd; - frame_sd = av_frame_new_side_data(frame, sd_global_map[i].frame, size); + frame_sd = av_frame_new_side_data(frame, ff_sd_global_map[i].frame, size); if (!frame_sd) return AVERROR(ENOMEM); memcpy(frame_sd->data, packet_sd, size); @@ -1461,12 +1446,12 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame) { int ret; - for (int i = 0; i < FF_ARRAY_ELEMS(sd_global_map); i++) { + for (int i = 0; ff_sd_global_map[i].packet < AV_PKT_DATA_NB; i++) { const AVPacketSideData *packet_sd = ff_get_coded_side_data(avctx, - sd_global_map[i].packet); + ff_sd_global_map[i].packet); if (packet_sd) { AVFrameSideData *frame_sd = av_frame_new_side_data(frame, - sd_global_map[i].frame, + ff_sd_global_map[i].frame, packet_sd->size); if (!frame_sd) return AVERROR(ENOMEM); @@ -1758,9 +1743,9 @@ int ff_decode_preinit(AVCodecContext *avctx) return AVERROR(EINVAL); } - for (unsigned j = 0; j < FF_ARRAY_ELEMS(sd_global_map); j++) { - if (sd_global_map[j].packet == val) { - val = sd_global_map[j].frame; + for (unsigned j = 0; ff_sd_global_map[j].packet < AV_PKT_DATA_NB; j++) { + if (ff_sd_global_map[j].packet == val) { + val = ff_sd_global_map[j].frame; // this code will need to be changed when we have more than // 64 frame side data types From patchwork Fri Mar 22 20:28:39 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47332 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163615pzb; Fri, 22 Mar 2024 13:30:17 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWSjos4zrZHYZk9ilN7JLqnJy3gfL3YNpaLmX7mS4a3vODpoPHVHzWE+rpy8p6dul94QcTkSKV/9c4S/5+N9MXW+vrNy8XtMcAwyw== X-Google-Smtp-Source: AGHT+IGzLF7kKnPU6QdtKpZm4Lp9PqiVSeFbmQTYeRGvTil7+Ejj3lnu96FykHEIRVovi4MlG3Rq X-Received: by 2002:a50:bb62:0:b0:566:95e3:1759 with SMTP id y89-20020a50bb62000000b0056695e31759mr456081ede.26.1711139417561; Fri, 22 Mar 2024 13:30:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139417; cv=none; d=google.com; s=arc-20160816; b=xCPJrfeDGMdz2YZTMOEE3vuqP1LBVoE1YehITBTyYnHUWZhEq/Iw9V11Z2yGkS+9nN odF1KWxhVEjk7YJY6qwtnJ4oAAykEAMU07AaMJWElQqm2B0/tNRQjqctfAbhZIRDHroy PBRxBV3/aJhMoPtaYgp9DTYMEuxZH9a6CHtDqZhGCbazeDyRnef9/x5fsleRY9nq5aMZ c5uPyJBgvGGJGG9g8pTaJLERzFu8rgjKJah8duwqD18EzPZhoFvZ+nodJcUZbdDVK6Ae reSteABFN25aPpK3dHymTEYPxnf35c71QKTRMplpwYpAYsBdmLWFJLUyJ0kd8kd89+y2 M85Q== 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=CsMHAxffGV7xlDLOnFFqjbTycbX0LOLC4E69tze2VGE=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=IAMi90iwrjYjm0m+x1YGsAoe2nP8WDjnOH6GTlrBetuSy441PZf1VuwyaBpYHjD8aa 6Ln4Rgh24zzS7Bbn+rVX+9dRZz5nKSUQVrPZZR9hxkMw3jD7kGooc60vt9t/ROXxFVeV ZxGbdl4A8my+OJ3YE8xupsP+q4ymgXvpDE9bjtfmnrIESU/bf6v4Z8s8Azzawm7/pVyL LIrqLFe+VRP3uYV6iRnC05KbD4cj8CDCt4WVr00Th5g/ipCdkaSu/R6aeaNWUE5Q6fZ2 rpa0psARqswx5g7qW8lHpdE80z/UNreXJ504i/l3mRdLEinBjRy4yJoG77fSUSuzckBN HCAw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=cHrxmcXI; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c4-20020a0564021f8400b00568d7a08306si159641edc.384.2024.03.22.13.30.17; Fri, 22 Mar 2024 13:30:17 -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=@khirnov.net header.s=mail header.b=cHrxmcXI; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E0FDF68D4D5; Fri, 22 Mar 2024 22:29:11 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ADBE768D4D5 for ; Fri, 22 Mar 2024 22:29:01 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=cHrxmcXI; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 97B5D4D4D for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id lfAAdjI0cIcW for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=wVbSnOa7hip0R4QaKAnBAEJQFgbPp4OzxeuSxS4qDQ8=; h=From:To:Subject:Date:In-Reply-To:References:From; b=cHrxmcXIFxF1ZzzkpT1vRAO1619jL1XfpIQyko/ACjzOkk4y0VP9BD2zQx9SMRX6C +Xn3Tca4aX/L0JTPIwR9mYhAnA/7T1oVf1GbYPjdqeAprw3q7X7QnGtq0YH7avYhYs CGFV1P1W9x2a4g1xKL5IGW1O2mGroQP9D7iVFcNWGCz+qqmz8P8kIjLCielQcmzGwG 2Hc1YW9cb4iVL/vUX+2OKg6XOa7nYfsUMPFUawBVWlXtQHHwuP7ABY71o2jSw5S7Lu vF+DsvcYoRbstS9veeLd2S4b/TionqZR3spXYvZVOEtDrq/4i/I55czMGOtWeJBDA3 oIakMlK3uMz9w== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 7CFBA4D62 for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 920F03A0F55 for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:39 +0100 Message-ID: <20240322202841.31730-10-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/12] lavc/encode: map AVCodecContext.decoded_side_data to coded_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: 0s9+JPwe7pcM This way it can be automagically propagated through the encoder to muxing. --- libavcodec/encode.c | 23 +++++++++++++++++++++++ tests/ref/fate/libx265-hdr10 | 24 ++++++++++++------------ 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/libavcodec/encode.c b/libavcodec/encode.c index 7fc9737e93..46e46a055e 100644 --- a/libavcodec/encode.c +++ b/libavcodec/encode.c @@ -782,6 +782,29 @@ int ff_encode_preinit(AVCodecContext *avctx) return AVERROR(ENOMEM); } + for (int i = 0; ff_sd_global_map[i].packet < AV_PKT_DATA_NB; i++) { + const enum AVPacketSideDataType type_packet = ff_sd_global_map[i].packet; + const enum AVFrameSideDataType type_frame = ff_sd_global_map[i].frame; + const AVFrameSideData *sd_frame; + AVPacketSideData *sd_packet; + + sd_frame = av_frame_side_data_get(avctx->decoded_side_data, + avctx->nb_decoded_side_data, + type_frame); + if (!sd_frame || + av_packet_side_data_get(avctx->coded_side_data, avctx->nb_coded_side_data, + type_packet)) + + continue; + + sd_packet = av_packet_side_data_new(&avctx->coded_side_data, &avctx->nb_coded_side_data, + type_packet, sd_frame->size, 0); + if (!sd_packet) + return AVERROR(ENOMEM); + + memcpy(sd_packet->data, sd_frame->data, sd_frame->size); + } + if (CONFIG_FRAME_THREAD_ENCODER) { ret = ff_frame_thread_encoder_init(avctx); if (ret < 0) diff --git a/tests/ref/fate/libx265-hdr10 b/tests/ref/fate/libx265-hdr10 index 571c837cac..68511202a5 100644 --- a/tests/ref/fate/libx265-hdr10 +++ b/tests/ref/fate/libx265-hdr10 @@ -1,16 +1,16 @@ frames.frame.0.side_data_list.side_data.0.side_data_type="H.26[45] User Data Unregistered SEI message" -frames.frame.0.side_data_list.side_data.1.side_data_type="H.26[45] User Data Unregistered SEI message" -frames.frame.0.side_data_list.side_data.2.side_data_type="Mastering display metadata" -frames.frame.0.side_data_list.side_data.2.red_x="13250/50000" -frames.frame.0.side_data_list.side_data.2.red_y="34500/50000" -frames.frame.0.side_data_list.side_data.2.green_x="7500/50000" -frames.frame.0.side_data_list.side_data.2.green_y="3000/50000" -frames.frame.0.side_data_list.side_data.2.blue_x="34000/50000" -frames.frame.0.side_data_list.side_data.2.blue_y="16000/50000" -frames.frame.0.side_data_list.side_data.2.white_point_x="15635/50000" -frames.frame.0.side_data_list.side_data.2.white_point_y="16450/50000" -frames.frame.0.side_data_list.side_data.2.min_luminance="50/10000" -frames.frame.0.side_data_list.side_data.2.max_luminance="10000000/10000" +frames.frame.0.side_data_list.side_data.1.side_data_type="Mastering display metadata" +frames.frame.0.side_data_list.side_data.1.red_x="13250/50000" +frames.frame.0.side_data_list.side_data.1.red_y="34500/50000" +frames.frame.0.side_data_list.side_data.1.green_x="7500/50000" +frames.frame.0.side_data_list.side_data.1.green_y="3000/50000" +frames.frame.0.side_data_list.side_data.1.blue_x="34000/50000" +frames.frame.0.side_data_list.side_data.1.blue_y="16000/50000" +frames.frame.0.side_data_list.side_data.1.white_point_x="15635/50000" +frames.frame.0.side_data_list.side_data.1.white_point_y="16450/50000" +frames.frame.0.side_data_list.side_data.1.min_luminance="50/10000" +frames.frame.0.side_data_list.side_data.1.max_luminance="10000000/10000" +frames.frame.0.side_data_list.side_data.2.side_data_type="H.26[45] User Data Unregistered SEI message" frames.frame.0.side_data_list.side_data.3.side_data_type="Content light level metadata" frames.frame.0.side_data_list.side_data.3.max_content=1000 frames.frame.0.side_data_list.side_data.3.max_average=200 From patchwork Fri Mar 22 20:28:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47330 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163437pzb; Fri, 22 Mar 2024 13:30:01 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCV4ouxj8QNQW9zRKJcCMcQRTOSNCCSMu8uDNofdHXsmBfF0brbfrsAKE7OBsY2gWemwRu9RHEDSTl4eIDMsNX4VHMriDpooHy3Jvw== X-Google-Smtp-Source: AGHT+IFk4I9cHlIZDWm+Fmi7/yTZcuOpDhB5DzSfxcFWj7STB6MhLuSNCiJZKRoLzH+J9zj8FnjA X-Received: by 2002:a17:906:34d3:b0:a46:f018:3f1d with SMTP id h19-20020a17090634d300b00a46f0183f1dmr506131ejb.73.1711139401030; Fri, 22 Mar 2024 13:30:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139401; cv=none; d=google.com; s=arc-20160816; b=LRAv4Ma1EGgnvpaj8Q7d0GdFWc1a7tZlKmNvccLOqP2x5hRZCPwE9caOwSh1odG3n0 pKHI+D/e9z0LUHnIAQvuf64KyMOCz0QzQ5a8S/C+5DeJD2E9CEydgWgX0ZSNfXlmcK3k ZROAvGtTxH0VwS0j4iGmLZ4ievrDgQWO2TuDoUmmBYkLENFHN1wJHaEXckUqvXEdL/Gd ujYw870yb4NB6v31f505n+IYQteKqPGJGSIcAy0YWcJxUJfF+JapbO6vIipiemHjmKpr BFE+g7sJb3Q7/zrV6DhLI6Z3Px91UHXnErTPNXozUdCMQbTvWI3GLNSeyEo70+Nph+as etWw== 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=y69v1CrRTuWwDUW7XQzBKjYZTTbkpKKzqhmMM4LaiwY=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=W0+WBkJiTS0LHmU/GfHd5mJ/JzsNPjEyXFM5sfhIrZZsp3qk1KohirzSpCORkYD9xh esPrXE9o4aJrQ0A3mEcxWDY7sW6z0qtu7euubf9jfKXsK2swZrj4cBDn80L6SyQjNsGd h5HckszdPb4VDmGqhZuSSfGilFhhg7CVyLSK4NTPtJl+yHKQrwW6GotK0ZPvTPEfB5dX eXM4VLv82vKkvm5LEWRffUB87ix0AVnk6zmccEtdYDT9yYOXP5+oTIc3EsimI6T/xwjv IQsOCXy+0+cEMyM9R32/+NoN4J/rtHwfDdTDu2dbZQa6zQ54J87Hly8YOCJZzNKGLCHk RnDA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=d+1moNbp; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d16-20020a170906c21000b00a46a90e7afesi160479ejz.96.2024.03.22.13.30.00; Fri, 22 Mar 2024 13:30:01 -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=@khirnov.net header.s=mail header.b=d+1moNbp; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A967E68D5D5; Fri, 22 Mar 2024 22:29:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AD56F68D4BA for ; Fri, 22 Mar 2024 22:29:01 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=d+1moNbp; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id DF0F14D56 for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id 4bI8zh3GzUoe for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=YsDYxbdd+ZonA5uiv5TZknOkEiZ07VYN1ynYm0BZkgQ=; h=From:To:Subject:Date:In-Reply-To:References:From; b=d+1moNbpQ5v5oc5ga0ltnL1bUP2QVtOAIBgTpMcT90QB6jgGXdb4GkC7We6Qb5cZg dIOmUHF3Qge9D/QNqniBhkZJpbcE0xkyIw7CASj9SOAA63VsSVZsiA/XhcTtIL9Gxs l8D8Ib3FHYBK9djRktvk+PTeH2B1yyK9aZlGM39Xz0NgdEws+SWwZIjBevz4xAvVDh tUXzqtmb3lw9GYWN12tM4gnFcPqSbuXyCe7pZMOBw7M+YkpndjFxX9t+wsqMrTkGUY qp9MlURS74zXv9N7oJqTbB6QdKCfdSetDCI1WpcHeyvqrrBryW0vlqEY7KW4gyJ+cN QT8JDQWszZX3w== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 8314A4D68 for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 9DB763A0FB8 for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:40 +0100 Message-ID: <20240322202841.31730-11-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 11/12] fftools/ffmpeg_enc: stop copying demuxer side data to the muxer 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: 08oQgmzsNKKp All side data should be propagated through the trancoding pipeline. --- fftools/ffmpeg_enc.c | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/fftools/ffmpeg_enc.c b/fftools/ffmpeg_enc.c index f01be1c22f..138044da24 100644 --- a/fftools/ffmpeg_enc.c +++ b/fftools/ffmpeg_enc.c @@ -360,29 +360,6 @@ int enc_open(void *opaque, const AVFrame *frame) return ret; } - /* - * 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 - * really be funneled over AVFrame and libavfilter, then added back to - * packet side data, and then potentially using the first packet for - * global side data. - */ - if (ist) { - for (int 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(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); - } - } - } - // copy timebase while removing common factors if (ost->st->time_base.num <= 0 || ost->st->time_base.den <= 0) ost->st->time_base = av_add_q(ost->enc_ctx->time_base, (AVRational){0, 1}); From patchwork Fri Mar 22 20:28:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 47331 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1014:b0:1a3:ac71:9534 with SMTP id nk20csp163530pzb; Fri, 22 Mar 2024 13:30:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCX81nkMYXSkWAtEhjyo8kofVsubZaYlPrMwNyzD5xvr/S/bPWcZIXWMAMFKFGx5ZEikfSOp9o1XNRd042LZ1iNtfz2kFD7V+Th7lA== X-Google-Smtp-Source: AGHT+IGdjQ4eoSZKl4KSYLnDFwIOglw5d/H4MwUxZ0HtY4vMBygh5uANRhK8WZh2sj6xjswqMw8L X-Received: by 2002:a50:d717:0:b0:568:1eee:5e23 with SMTP id t23-20020a50d717000000b005681eee5e23mr459161edi.21.1711139409557; Fri, 22 Mar 2024 13:30:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1711139409; cv=none; d=google.com; s=arc-20160816; b=WYQrvslbybV4wU9ZQyp35q0n/OK/p48Nt812rJHIsrzhUEWGDa0Yt31JCUihQ/eOEi dezzm4ZxYffoCHpjpCiimBvS3/nmkx4gzhH5SpTQ3pe3aUKnYPYTk+CioKrN50JdB9vi rjd012hYXr1UeO+VP/QfKSvxgjJuatkc5DyafVfSelBKcbcISDsKdI+rCqH8rOt2XeXm hSefaQ1RwhARbKWO4fDV8cYu7nnNLdJ1lM4cJx5IzxHzf5OK46u6UPuLgwYTi//BXivg sDNfF2vBRx0na1NMofFEmumQ/EomOh1lZCOHYWtNmkZwzdo/wZ2KPZkQY3eCuqH7Ex2h QrAQ== 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=CdjHECrafJt4inRJPWHuT2j8haU+ExrHgh1oXGnOFrs=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=LgzC7M2u44arFhuu5dv1Sna/nrt3r2n9izLqRMIleUdDVBRf+VBHtQ6FhnM9wVUveH P08iJZ7BhmXPOTBO6Gv6iChtM4Wm3DGk5RdBldiJTeMscLGAJHmHPawUXVCIr3sEpcEJ aWzZUCghDowFbcE4sOQo3XlASFIqdor8UiIU4zUuz1BzOvJwMWeOsgMPcx1PMNolAb7q o30fHllw8au4BZAC1zI8Kw6pg0BStwWYUOlnOkwLAs31MrwyQkfKAphVTA5AEhigizTS dijfmMm6SHhMZo9KDmT8mG/1Yc7XWzNnbP79xB51iy6MZ/1LJ64zvogy2QS9xj0ytGZy Hkog==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@khirnov.net header.s=mail header.b=q4zg+p9u; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w5-20020a50d785000000b00567e1287325si150697edi.445.2024.03.22.13.30.09; Fri, 22 Mar 2024 13:30:09 -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=@khirnov.net header.s=mail header.b=q4zg+p9u; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CDC0968D5DA; Fri, 22 Mar 2024 22:29:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail1.khirnov.net (quelana.khirnov.net [94.230.150.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AD4A068D1FE for ; Fri, 22 Mar 2024 22:29:01 +0200 (EET) Authentication-Results: mail1.khirnov.net; dkim=pass (2048-bit key; unprotected) header.d=khirnov.net header.i=@khirnov.net header.a=rsa-sha256 header.s=mail header.b=q4zg+p9u; dkim-atps=neutral Received: from localhost (mail1.khirnov.net [IPv6:::1]) by mail1.khirnov.net (Postfix) with ESMTP id 8ADA04D61 for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) Received: from mail1.khirnov.net ([IPv6:::1]) by localhost (mail1.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id RyONO4xI1IgS for ; Fri, 22 Mar 2024 21:28:56 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1711139334; bh=v/tt7KaoieX5YgwZoDkdYJJ/pDysB0YcTpN8XtrA3DY=; h=From:To:Subject:Date:In-Reply-To:References:From; b=q4zg+p9uA6Y9yvH3aG1gmOqjjE7EbDAarptEm4g7AoMwFMpouFJMNzpSSxPD9rw/0 fJJvKcIiXolvIbudJWBL3ytYl7WTX8DIXB8J4NXQIuTa9bmvA4KvsYS5BV1sau6ifr QfR06Nlwz05ux3xFa8j5KRM6E1ekgcwAnf8xcUUv1oJWumOF/sV+pDRJUVJ5r4fFmr sW9iMmKyXrFD5yv60bZ+YqrPkesWYhA18ENsMwCtEV9t6t2ReFg+PtsOI3yUY7X6ay snxuKCL1MwCKK9OFV0tYrtGb3R1/dKOvfl9G7T1Ty1OO0H2UH2o5Jzq1zKpJvugu5k hkTf6LNgd3Iag== Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail1.khirnov.net (Postfix) with ESMTPS id 880CE4D69 for ; Fri, 22 Mar 2024 21:28:54 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id A99753A1050 for ; Fri, 22 Mar 2024 21:28:45 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Mar 2024 21:28:41 +0100 Message-ID: <20240322202841.31730-12-anton@khirnov.net> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240322202841.31730-1-anton@khirnov.net> References: <20240322202841.31730-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/12] fftools/ffmpeg_demux: make InputStream.autorotate private 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: FaaMimKmBQAZ It is no longer accessed outside of ffmpeg_demux. --- fftools/ffmpeg.h | 2 -- fftools/ffmpeg_demux.c | 8 +++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index 1437b36b0d..84475434f3 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -370,8 +370,6 @@ typedef struct InputStream { int top_field_first; #endif - int autorotate; - int fix_sub_duration; /* decoded data from this stream goes into all those filters diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index af4b4cfd1e..d815dd3696 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -64,6 +64,8 @@ typedef struct DemuxStream { int streamcopy_needed; int have_sub2video; int reinit_filters; + int autorotate; + int wrap_correction_done; int saw_first_ts; @@ -1055,7 +1057,7 @@ int ist_filter_add(InputStream *ist, InputFilter *ifilter, int is_simple, if (!opts->name) return AVERROR(ENOMEM); - opts->flags |= IFILTER_FLAG_AUTOROTATE * !!(ist->autorotate) | + opts->flags |= IFILTER_FLAG_AUTOROTATE * !!(ds->autorotate) | IFILTER_FLAG_REINIT * !!(ds->reinit_filters); return ds->sch_idx_dec; @@ -1235,8 +1237,8 @@ static int ist_add(const OptionsContext *o, Demuxer *d, AVStream *st) ds->ts_scale = 1.0; MATCH_PER_STREAM_OPT(ts_scale, dbl, ds->ts_scale, ic, st); - ist->autorotate = 1; - MATCH_PER_STREAM_OPT(autorotate, i, ist->autorotate, ic, st); + ds->autorotate = 1; + MATCH_PER_STREAM_OPT(autorotate, i, ds->autorotate, ic, st); MATCH_PER_STREAM_OPT(codec_tags, str, codec_tag, ic, st); if (codec_tag) {