From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 34BA14B6C9 for ; Mon, 12 Aug 2024 12:15:08 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DCDC068D9BB; Mon, 12 Aug 2024 15:15:05 +0300 (EEST) Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9B45568D94F for ; Mon, 12 Aug 2024 15:14:58 +0300 (EEST) Authentication-Results: mail0.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=FVSsxsWG; dkim-atps=neutral Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id A2B83240DB7 for ; Mon, 12 Aug 2024 14:14:57 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavis, port 10024) with ESMTP id 8J-bSTTISwHB for ; Mon, 12 Aug 2024 14:14:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=khirnov.net; s=mail; t=1723464896; bh=qDyvvCaJvbhBAcRKsKCXBkTLz3tdQwUrRJsJSzRltm0=; h=Subject:From:To:In-Reply-To:References:Date:From; b=FVSsxsWG/9dGxZ9RRDQkEks6b+hjljvoNMrIaH4QktyK8JNzGpMzYluI34APTZy4s eGVUBdK/ePrnIkGTfHll0l5zi4gnt5VYWUHr+EEcIagpq42EI5O5qy7YRPcvx6JsJL KOcbPOFRPcLHDm37O190twoUf1MX6RJRQhZPTKl6kPAuVb0xgKpKrXKbQ5sT7XfGkN c3e+v9OG96urzjdKgCBQH59il4z92Gtak3clKVQRtn8hRYDyYNbEZhQ9fdsb89Jcob w52qbp55zEBhdHYdVvodpIAXSIHSqYi2aKeAhAKT00AH3g1Wh5AMHprL/h+6woYVrC Zxdg7K6XFUHIw== Received: from lain.khirnov.net (lain.khirnov.net [IPv6:2001:67c:1138:4306::3]) (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 "lain.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 8FAE4240695 for ; Mon, 12 Aug 2024 14:14:56 +0200 (CEST) Received: by lain.khirnov.net (Postfix, from userid 1000) id 5FD071601B9; Mon, 12 Aug 2024 14:14:50 +0200 (CEST) From: Anton Khirnov To: FFmpeg development discussions and patches In-Reply-To: References: <20240716171155.31838-1-anton@khirnov.net> <20240716171155.31838-36-anton@khirnov.net> Mail-Followup-To: FFmpeg development discussions and patches Date: Mon, 12 Aug 2024 14:14:50 +0200 Message-ID: <172346489036.21344.16668554914182495486@lain.khirnov.net> User-Agent: alot/0.8.1 MIME-Version: 1.0 Subject: Re: [FFmpeg-devel] [PATCH 36/39] lavc: add private container FIFO API 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Quoting Andreas Rheinhardt (2024-08-10 02:09:19) > Anton Khirnov: > > +static int container_fifo_init_entry(FFRefStructOpaque opaque, void *obj) > > +{ > > + ContainerFifo *cf = opaque.nc; > > + void **pobj = obj; > > + > > + *pobj = cf->container_alloc(); > > + if (!*pobj) > > + return AVERROR(ENOMEM); > > + > > + return 0; > > +} > > + > > +static void container_fifo_reset_entry(FFRefStructOpaque opaque, void *obj) > > +{ > > + ContainerFifo *cf = opaque.nc; > > + cf->container_reset(*(void**)obj); > > +} > > + > > +static void container_fifo_free_entry(FFRefStructOpaque opaque, void *obj) > > +{ > > + ContainerFifo *cf = opaque.nc; > > + cf->container_free(*(void**)obj); > > +} > > container_fifo_(init|reset|free)_entry seem unnecessary if you simply > expected the user to already provide a RefStruct-compatible callback. I considered that, but decided against it as it would leak internal implementation details to callers. > > +int ff_container_fifo_write(ContainerFifo *cf, void *obj) > > +{ > > + void **pdst; > > + int ret; > > + > > + pdst = ff_refstruct_pool_get(cf->pool); > > + if (!pdst) > > + return AVERROR(ENOMEM); > > + > > + ret = cf->fifo_write(*pdst, obj); > > This API design presumes that one never one to "move" an object into the > fifo. This need not be true at all (indeed, the reference from the > frame_grain frame could be directly moved; it is not used for the > decoding process). I don't follow, how does the API preclude moving container contents in the fifo_write() callback? Unless you mean moving the actual container? > > + if (ret < 0) > > + goto fail; > > + > > + ret = av_fifo_write(cf->fifo, &pdst, 1); > > + if (ret < 0) > > + goto fail; > > + > > + return 0; > > +fail: > > + ff_refstruct_unref(&pdst); > > + return ret; > > +} > > + > > +size_t ff_container_fifo_can_read(ContainerFifo *cf) > > +{ > > + return av_fifo_can_read(cf->fifo); > > +} > > + > > +static void* frame_alloc(void) > > Inconsistent placement of * Fixed locally. -- Anton Khirnov _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".