From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 4FB1D4E60A for ; Sun, 25 Jan 2026 14:03:33 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'EoB/sGkG/3hI8pMCIwWjdp8QmuDZ+YZV7t0c3oxr7Qg=', expected b'EES8nZTih6z7tboHV16gYzazp1hy//I3dM0lMetT5o4=')) header.d=niedermayer.cc header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1769349794; h=date : to : message-id : references : mime-version : in-reply-to : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : from; bh=nOwJHmp5RhjGrczDhBKHuNoGd3hE3kKUN59I+OfMloY=; b=ub9DyGU7Ae4+rqQUFtd+MSxSRI5pB++l/aqTsNzlH8g08WEgKe8tuvVPGcweA+8teHfrE sCSUxJdorj11VoSU/U9KSBkkM/B+bq/+5WjX6Nrgvd5Yy15+vDzI0dDRKQ/e/65TYPUbkZJ +ocr2AtNReAbPDsTGpFnizaCTPi/3Ggkyx6NT7997bkA7WXk45pZOCoW7KXDOkW5xelDV90 grSGvfEZJeRVM+gw6sJb3d+huXOhsUUwEo+EfXi56lhV3KneKqtKlnI0oATiaZCs7JTapnN uvSzfBtBH88YuqwE3x13ZNBpPE4G9mn0UT3iAF6p74EArMgs8Vu/LNsBpK4Q== Received: from [172.20.0.4] (unknown [172.20.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 63F666910B0; Sun, 25 Jan 2026 16:03:14 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1769349778; b=d1V718It84PyVFEqej/2mdPCovui/GScj6vAOTltnf7qiQzA1Dk7bs40i9W1ucLXQkOiu 28aL2KQs/gzhPHHzhci+qn+l3O3TtyFakVIVigWVC6p0+WiH/CfuvPjFyGEdG0QmemRF1k9 hhUYE5doZqCCATM0XaJsW8lV7AtMhqweQRAh4GLsUpiDs819Ivo3hp8jfrqGsxX2bOOMisV EEGF87Nrb6tZzeN3hK8hJGJme5iDo7sXjsPDYhlaVMgcFYsxQwthyaVKUB/VTFdaQJ0/9lI Xis155Dsrvbi9QJ62oPT2nnQo3N/pSuuUfU6cAMxVGSQ3gRaP8yu9mrPAXSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1769349778; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=EoB/sGkG/3hI8pMCIwWjdp8QmuDZ+YZV7t0c3oxr7Qg=; b=omMSV3L6WnwovyEJpJNpVznJ4Lz5IbZ4ZLxXcvE9rwpbkq5Fe0kKFqHgKSwvFRvLaTfsP HgcYimIUEBYX7L81hWImWFRAe4o38MAYQlKWCAPUBI2zWcwzHTAkIwW89lzfTYfizzrs4xi OLuIj2rkNWO5ZKgcdBrben6UXyJzMD/k0zCUGfy8wyJWKGbsccxnvkKzdUCWeFcVM5XnRBc 6BYI7bosKQvub8ZarqgC8LhZzM8tmM+8R1CVQS4Am4fJ1uPN3bUlUITvjWgQxxAP4ejs/DM YqNg8J7tvB0uEmtJ4RG9gDV7iWegjlIaDA/J/YRRIPZwQBo7qDYjVZn84ddg== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=niedermayer.cc; arc=none; dmarc=none Authentication-Results: ffmpeg.org; dkim=pass header.d=niedermayer.cc; arc=none (Message is not ARC signed); dmarc=none Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [217.70.183.200]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id C92D7691006 for ; Sun, 25 Jan 2026 16:02:46 +0200 (EET) Received: by mail.gandi.net (Postfix) with ESMTPSA id E356643DE7 for ; Sun, 25 Jan 2026 14:02:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=niedermayer.cc; s=gm1; t=1769349766; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=EES8nZTih6z7tboHV16gYzazp1hy//I3dM0lMetT5o4=; b=U/uNw/v50cCE7Fc1ZLOAfv6nDI2JGAIRpiYNSbxhz0ENGekD4qrSFltUlJITfftjoNo0NH s1U0QO+TNTQUWF4Rn2SezvlS/ZZgcMKzPTV1pDomUjA9pF6I4aHaB3/RqBXTTZXwFroFaD T+RgLlABhMP+4M+JtiHrsdoT0tXhd/U4QtCuxjFR7npfD+l2YVkIio8jj0Uq3zQ3cCPp3j RHUuXYePechgx8D+jS+tcTIAkLBRxW+RiGkWgUdH6N1SobyM93B9kqk20gEB/nf9fxqNg6 Iuo5OjQPLwMiVU0nAEeINcKtQbFvUfC2F4hY+uIdEdba5PpE/PkLgOBQBg6AqQ== Date: Sun, 25 Jan 2026 15:02:44 +0100 To: FFmpeg development discussions and patches Message-ID: References: <20260123123529.6896-1-9mmilly@0x3f4f3e.org> MIME-Version: 1.0 In-Reply-To: <20260123123529.6896-1-9mmilly@0x3f4f3e.org> X-GND-Sasl: michael@niedermayer.cc X-GND-State: clean X-GND-Score: -70 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdduheegleekucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenfghrlhcuvffnffculdeftddmnecujfgurhepfffhvffukfhfgggtuggjsehgtderredttddvnecuhfhrohhmpefoihgthhgrvghlucfpihgvuggvrhhmrgihvghruceomhhitghhrggvlhesnhhivgguvghrmhgrhigvrhdrtggtqeenucggtffrrghtthgvrhhnpeeigeektdejudffjefhteegjedtgeettefggedthfejgfevhfetgeekjedtvdfhveenucfkphepgedurdeiiedrieeirdehtdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeeguddrieeirdeiiedrhedtpdhhvghloheplhhotggrlhhhohhsthdpmhgrihhlfhhrohhmpehmihgthhgrvghlsehnihgvuggvrhhmrgihvghrrdgttgdpqhhiugepgfefheeiieegfeffgfejpdhmohguvgepshhmthhpohhuthdpnhgspghrtghpthhtohepuddprhgtphhtthhopehffhhmphgvghdquggvvhgvlhesfhhfmhhpvghgrdhorhhg Message-ID-Hash: K62RMHQQJ6SQAPYCNJHHREJBUHFTDC76 X-Message-ID-Hash: K62RMHQQJ6SQAPYCNJHHREJBUHFTDC76 X-MailFrom: SRS0=laGZ=76=niedermayer.cc=michael@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] Re: [PATCH] libavformat/rot: added rot pcm header support List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michael Niedermayer via ffmpeg-devel Cc: Michael Niedermayer Content-Type: multipart/mixed; boundary="===============7384084820908920773==" Archived-At: List-Archive: List-Post: --===============7384084820908920773== Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="m/5gPQwBLPmwyUYV" Content-Disposition: inline --m/5gPQwBLPmwyUYV Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi On Fri, Jan 23, 2026 at 01:35:29PM +0100, 9mmilly via ffmpeg-devel wrote: [...] > diff --git a/libavformat/rot.c b/libavformat/rot.c > new file mode 100644 > index 0000000000..520f038f8b > --- /dev/null > +++ b/libavformat/rot.c > @@ -0,0 +1,230 @@ > +/* > +* Copyright (c) 2014 9mmilly > +* > +* This file is part of FFmpeg. > +* > +* Permission to use, copy, modify, and/or distribute this software for a= ny > +* purpose with or without fee is hereby granted, provided that the above > +* copyright notice and this permission notice appear in all copies. > +* > +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTI= ES > +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR > +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES > +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > +*/ > + > +#include > +#include > + > +#include "avformat.h" > +#include "demux.h" > +#include "internal.h" > +#include "libavcodec/codec_id.h" > +#include "mux.h" > +#include "pcm.h" > +#include "rawenc.h" > + > +#define ROT_IDENTIFIER "frot" > + > +typedef enum { > + ROT_FORMAT_S8, > + ROT_FORMAT_S16, > + ROT_FORMAT_S24, > + ROT_FORMAT_S32, > + ROT_FORMAT_FLOAT, > + ROT_FORMAT_DOUBLE > +} rot_format; > + > +/* demuxer */ > + > +static int rot_probe(const AVProbeData *probe) { > + if (probe->buf_size <=3D 32) > + return 0; > + > + if (probe->buf_size >=3D 36) { > + if (memcmp(probe->buf, ROT_IDENTIFIER, 4) =3D=3D 0) > + return AVPROBE_SCORE_MAX; > + } > + return 0; > +} the probe->buf_size <=3D 32 block is redundant > + > +static int rot_read_header(AVFormatContext *context) { > + uint8_t header_buffer[8]; > + > + if (avio_read(context->pb, header_buffer, sizeof(header_buffer)) != =3D 8) > + return AVERROR_INVALIDDATA; > + > + uint16_t sample_rate; > + memcpy(&sample_rate, (header_buffer + 4), 2); will fail on big endian > + > + uint8_t channels; > + memcpy(&channels, (header_buffer + 6), 1); > + > + uint8_t format; > + memcpy(&format, (header_buffer + 7), 1); > + > + if (sample_rate <=3D 0 || channels <=3D 0) > + return AVERROR_INVALIDDATA; > + > + AVStream *stream =3D avformat_new_stream(context, NULL); > + if (!stream) { > + av_log(stream, AV_LOG_ERROR, "invalid audio parameters\n"); > + return AVERROR(ENOMEM); > + } > + > + stream->codecpar->codec_type =3D AVMEDIA_TYPE_AUDIO; > + stream->codecpar->ch_layout.nb_channels =3D channels; > + stream->codecpar->sample_rate =3D sample_rate; > + > + switch (format) { > + case ROT_FORMAT_S8: > + stream->codecpar->codec_id =3D AV_CODEC_ID_PCM_S8; > + stream->codecpar->bits_per_coded_sample =3D 8; > + stream->codecpar->block_align =3D 8 * channels / 8; > + stream->codecpar->bit_rate =3D (int64_t)sample_rate * channels *= 8; > + break; > + > + case ROT_FORMAT_S16: > + stream->codecpar->codec_id =3D AV_CODEC_ID_PCM_S16LE; > + stream->codecpar->bits_per_coded_sample =3D 16; > + stream->codecpar->block_align =3D 16 * channels / 8; > + stream->codecpar->bit_rate =3D (int64_t)sample_rate * channels *= 16; > + break; > + > + case ROT_FORMAT_S24: > + stream->codecpar->codec_id =3D AV_CODEC_ID_PCM_S24LE; > + stream->codecpar->bits_per_coded_sample =3D 24; > + stream->codecpar->block_align =3D 24 * channels / 8; > + stream->codecpar->bit_rate =3D (int64_t)sample_rate * channels *= 24; > + break; > + > + case ROT_FORMAT_S32: > + stream->codecpar->codec_id =3D AV_CODEC_ID_PCM_S32LE; > + stream->codecpar->bits_per_coded_sample =3D 32; > + stream->codecpar->block_align =3D 32 * channels / 8; > + stream->codecpar->bit_rate =3D (int64_t)sample_rate * channels *= 32; > + break; > + > + case ROT_FORMAT_FLOAT: > + stream->codecpar->codec_id =3D AV_CODEC_ID_PCM_F32LE; > + stream->codecpar->bits_per_coded_sample =3D 32; > + stream->codecpar->block_align =3D 32 * channels / 8; > + stream->codecpar->bit_rate =3D (int64_t)sample_rate * channels *= 32; > + break; > + > + case ROT_FORMAT_DOUBLE: > + stream->codecpar->codec_id =3D AV_CODEC_ID_PCM_F64LE; > + stream->codecpar->bits_per_coded_sample =3D 64; > + stream->codecpar->block_align =3D 64 * channels / 8; > + stream->codecpar->bit_rate =3D (int64_t)sample_rate * channels *= 64; > + break; the computation of block_align and bit_rate can be factored out using bits_per_coded_sample > + > + default: > + return AVERROR_INVALIDDATA; > + } > + avpriv_set_pts_info(stream, 64, 1, sample_rate); > + > + return 0; > +} > + > +const FFInputFormat ff_rot_demuxer =3D { > + .p.name =3D "rot", > + .p.long_name =3D NULL_IF_CONFIG_SMALL("rot pcm header"), > + .priv_data_size =3D 0, > + .p.extensions =3D "rot", > + .read_probe =3D rot_probe, > + .read_header =3D rot_read_header, > + .read_packet =3D ff_pcm_read_packet}; > + > +/* muxer */ > + > +static int rot_write_header(AVFormatContext *context) { its probably cleaner to have this in a seperate file thx [...] --=20 Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Those who are too smart to engage in politics are punished by being governed by those who are dumber. -- Plato=20 --m/5gPQwBLPmwyUYV Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iF0EABEKAB0WIQSf8hKLFH72cwut8TNhHseHBAsPqwUCaXYigQAKCRBhHseHBAsP q76vAJwK+X9dGqV9A7hQsZ6xtARqsomwyQCfSTYu/kMfvyQi2d/C2GJuwjxvBlc= =/DPf -----END PGP SIGNATURE----- --m/5gPQwBLPmwyUYV-- --===============7384084820908920773== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org --===============7384084820908920773==--