From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 4A1444CCFD
	for <ffmpegdev@gitmailbox.com>; Sun, 13 Apr 2025 16:09:47 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8168E687C65;
	Sun, 13 Apr 2025 19:09:42 +0300 (EEST)
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10olkn2034.outbound.protection.outlook.com [40.92.41.34])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EACDD687BC4
 for <ffmpeg-devel@ffmpeg.org>; Sun, 13 Apr 2025 19:09:35 +0300 (EEST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=N/UuTm8M/fKrRD1DULRkYoYgB7aU2uHuU1pc2PjGZ23tp4dClJ9VSN1i4PaM2+B3xbXBXYolYUSJ808OlYx5R/gVAIQYqgG6aB1TlNzOlyeVslGJMIF2cFa/hqiyuHzhziga7eu9RoA2YaAlofhly2q3savi4WMb6jJUVprO6VO5psiTYGw2oJWrI8CpP7p+bgeihqMOxZQmJNd08r4m/ysEFY8rlHBHevsN5Y0+kd/bcKCF4HXmrAwBfpUpATO8S2BtFNj3N2vZRUSKmnc0Qptdmz4OpbbgWk+IlDZkbiznNajRX9xGlSJhH5MqrsiB5e2zKIdaGKyjRiFBj1JUgg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=AyuldgjWH4mjOzo2zi79uE7YvSy7yHDRbSsXEzlioQ4=;
 b=giz02ECx43QOVnILdjeQ5XdZfE+1yw2+LpqiRisuheEolpGgzd/GF8EkSKfcdmdf8KI8qpvFKIl5ZKNO9dXz5vcO/7m95ojx8wI8LmyPbKQrwP0nnS0F+zLPMMbWC2a6lfSX+piArtb+BlrnUsReoy+aR3lOJ4AmZLL+KZMGzCvSPfhYDcgDuXOqFWn0hMci5KDk2njSMHfvSb6wMWCo3VK2kRAaLpcIb1JpWtQLXBqu+DoNTDAgOQ4Tfm+x0X5s+5eMlgaq2jmPQ1KHHdPA456BvdJW5KFs5hhcrWr0A18NThmfAnvhVvwx2xDNxFmSN7uhOYYIw+fiISpJ0pGhUQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
 dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=AyuldgjWH4mjOzo2zi79uE7YvSy7yHDRbSsXEzlioQ4=;
 b=oGGy4FylUZ6fvcWx3T2p/k6yLOItzXtGwhN2gc9qRFUqYh0hgCsCSKEDCBZGw3795aitZSiqVXlWHELF/x9afxE8MPsun7yZ85SdIXbMUc1y4NNVtDRg/NfBIJLk6qS/p4Oo/ZqUx2oXpeysDb1D0/tBQXNPbl9yesKII8NPMGMIOlQYQRVz/6YAllgELnZffcy/VQGx34V8Ie1tIkzt+V/Z9buSDa47u4JYO3Nw8CFdCAiw+P3IGCVexxwmN2de48COLuS5DIUaHjFXwTQWVOMgd6Lq80HQSpBMplqJRq8Sfte9NsPYhh0KpNcvYuoQddo+r9PbBzvA0KNFu5fyvA==
Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by
 BN0P223MB0309.NAMP223.PROD.OUTLOOK.COM (2603:10b6:408:15e::6) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8632.22; Sun, 13 Apr 2025 16:09:32 +0000
Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM
 ([fe80::bf09:8e9:b07f:98a7]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM
 ([fe80::bf09:8e9:b07f:98a7%4]) with mapi id 15.20.8632.030; Sun, 13 Apr 2025
 16:09:32 +0000
From: "softworkz ." <softworkz-at-hotmail.com@ffmpeg.org>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Thread-Topic: [FFmpeg-devel] [PATCH 1/2] avformat: add avformat_query_seekable
Thread-Index: AQHbrGV7l4srECZ9QkWsqF0Up15de7Ohs8uw
Date: Sun, 13 Apr 2025 16:09:31 +0000
Message-ID: <DM8P223MB03651EDCA0D837A06C6B7C62BAB02@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>
References: <20250413111545.4619-1-ffmpeg@gyani.pro>
In-Reply-To: <20250413111545.4619-1-ffmpeg@gyani.pro>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DM8P223MB0365:EE_|BN0P223MB0309:EE_
x-ms-office365-filtering-correlation-id: 2bb23057-0335-43bb-b724-08dd7aa5937e
x-microsoft-antispam: BCL:0;
 ARA:14566002|8062599003|461199028|19110799003|8060799006|7092599003|15080799006|440099028|3412199025|41001999003|102099032;
x-microsoft-antispam-message-info: =?us-ascii?Q?sAkrV4bp9iBx+ygHGQnY5TKwMYnT/7Pp0+VckijtCO8YE9n3apthQzDDiKaD?=
 =?us-ascii?Q?L/L8qGR9GOjiugJ8mTh3Nybe5J8m6NSZTEAaVLBpO2T8jdyOlPesxWvyWcl+?=
 =?us-ascii?Q?w9v4XeaNYD2xRW03MxfqXYsLZUd9NO1ZAVZxwzSoDs/SYi/kT06eqpgbwKRe?=
 =?us-ascii?Q?VJNxjHkwVL368NTVOgNVNW6HZzYNv+eWusTOWdBXQ04gMlDmh8y9ZJhSFmiR?=
 =?us-ascii?Q?CMDfRgF1etjlY92WHYhslKd2Ubx5XxqUXDEF5mSIu2bA+iBzo3VN/sKz2HpH?=
 =?us-ascii?Q?38Vlgg2XidPJMG0ZgTrFwF2B1gn94jkgsJbdkC8zS3n88W/Z6I+hmEC23VCz?=
 =?us-ascii?Q?iay87WaGAzy/tYSf14vaaueIlBbRH8qHr0gG6betiz8o7D8GZcPJMGT2P4ZC?=
 =?us-ascii?Q?9WjW4/nC+EqJqbSFk2HGBB0nx1hjBrDvJtcJ+O+IPRk+bSPXRbcx2cpH6twa?=
 =?us-ascii?Q?4kSkVJJmH1KkVaVPHgEYo9DaVuFNtY+EnT83IT/hTBVvK+bHCMoW215nnLzB?=
 =?us-ascii?Q?76q1BCtkQnT997gm0oThgO7ec6mYZXw+2SFbts7Kc+wQU4oYWRZJa4HwyioB?=
 =?us-ascii?Q?/QK2NtU7A+WErAELu/I4UDjCCjeDvLSF9pn/ylqQhdGelIK47sVLBS+ao1np?=
 =?us-ascii?Q?ORTTzvCBKXHgUley/MyvD0Qi9LTPfF/Z2qG4bWh9MDF2bD23V2Uj/XIdqoTE?=
 =?us-ascii?Q?fTkWLIseyrwgA/Zh8qPHasxZvtT21c2+r00VmfEixGMlzoCf9DRJ5z998ZJQ?=
 =?us-ascii?Q?CzlNPT8a4lyo4UmIdl0pRNz068wHPawRIkrAH+GWjyeSWKfvvjt4Sc2f4PbI?=
 =?us-ascii?Q?Rs+VQDjRcPYAGt0bAVc03qQQ+2F1bkdXUDRAtgaYTAkMahZdJXgRJsLx/YOo?=
 =?us-ascii?Q?/tdtameezGrx/JwPiFPfzBh7WVxJ1dbGBvktocHgZv8ZKnHoxjSHd/tMHrsI?=
 =?us-ascii?Q?HliRA1oAISEXYOv+MlXqSOMK8cFhfrf/VG7pDuH3cYGejDHB4Yh2aCJHTlRy?=
 =?us-ascii?Q?c5cwyXtgYJrgnkuSRNJed35JMhPOd6G3TLEV5g2lvq/b05JXUG+MrdLwDEAV?=
 =?us-ascii?Q?g/gYfoel9z+w3hmzjPCvQFBVILvijqOkZ6oKKZ/7cAnR/iYefJkz6yTTJxix?=
 =?us-ascii?Q?J0U0Pvc+7nhNqnyhT31YEeU0gdELDzKOcQ=3D=3D?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?hrTVvAHwGK17yWCwRNb0CwiIZ5fm5fCpyY8V7MboUh+yYvt+9ie8Ff7AbfZh?=
 =?us-ascii?Q?TXy4aK6vJUTQGTF0swJOPoFz4Qj3XmNCmMvic1MW/wmU2pTcLJlQtm+SosWj?=
 =?us-ascii?Q?YNlnBaSKW20vLOKbLPTLv17Aire20/9pbOSGsvlyvUGK4+vFQ0WLs+y/3R7Q?=
 =?us-ascii?Q?m1f9f65srG8bcnJG7B0lVCI7HsHR14ME6wVG3r7OPl4aKIW9ZOybtTCrPFHf?=
 =?us-ascii?Q?Ojw+wgCo4alKBSZBp90wURvw5iGUpPHlvvBuunAHa0QeDSUNPFgoxOvud212?=
 =?us-ascii?Q?ZyeKOVsMgla7J3rsJu3R3E2I4g30UWUGI7NYJo9bjHrGHcJ3FzCauUOf/CB2?=
 =?us-ascii?Q?+Iz/24pr660sVdVGQnItMUkRB/Z8OGSUPGk3CHYL7iT4PGoM3H1Z6uVK/UvA?=
 =?us-ascii?Q?Bj1o1hdu8JjiJZsdgT7TPkMEN8OwnRjhR8mASTcDLwunHt1mgygCYRgY8IWO?=
 =?us-ascii?Q?2U+xGMhM3Q/oFGGhVkBAs3kZo8WNkFd/CY8ovvnPnRPZWXoYXmIS7b/E27Tq?=
 =?us-ascii?Q?+Gel9GPt5/craDt2ig01pwtWwv27lFHq+0g1/e8jC3qpe3RfzWEa7hJKbGSt?=
 =?us-ascii?Q?7lQlEWBKdAqVJKP/OCdL01dZx5BGjNZ4QS8bwMjxsdw/PhAqjB6NUcJdjxX1?=
 =?us-ascii?Q?nyfg0o0Kf5flyax7A3kKDoBDT3uVxOHm2maob33+eEmZfRJArIVhw+nv3lH+?=
 =?us-ascii?Q?vykLWMDvCMXLRHzNFjHDDvnwugHUurxSFF+y8H44eaiRoaHQRD91T7uVBRpq?=
 =?us-ascii?Q?UIlFLRldd6fa2jOvN3vd9g/Z172TEPQ68dKWYwrZdp/Rb6sCrjT2TvqBs+xI?=
 =?us-ascii?Q?FIe9LL/qew4QY86l9Ob9Y+1gwbMSy6CJvE5k4X9iB4X+/sZA9pswwuIv5gct?=
 =?us-ascii?Q?boS0Q469aWzN9CQ2Xr09NYN9wSiqe9Np37Um3qK7lymAXGp2LyOwKTnqN0cV?=
 =?us-ascii?Q?JO07/8zBhPcjF4zn42arVh0HQp5ArHaq38c6YtJZ+wELoH89lP4ArKP/4ALf?=
 =?us-ascii?Q?wEhHJn3Z2KKXxOpEzy+btOcDIRu0DqNezSJUaOrJiEa1jtGCrPLGXpEjfgud?=
 =?us-ascii?Q?pSEYLHSMQfF62E5AzLAxASyoX+375Oyqk3NvOR6Xit4Uq5T0fclw4kkhkrWB?=
 =?us-ascii?Q?6G/Vsd7rR2qPZGJnTnwXGzZQdyJeY3ttRNhblm4GQ9T9YAlA1Mq0CLXoUP35?=
 =?us-ascii?Q?QHKh7+AlRAvp6KNtJfY3KoFqoTLpHxqFMs0KMW4pyhTwPlhgt2qI2v0rDcw?=
 =?us-ascii?Q?=3D?=
MIME-Version: 1.0
X-OriginatorOrg: sct-15-20-7719-20-msonline-outlook-92255.templateTenant
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-Network-Message-Id: 2bb23057-0335-43bb-b724-08dd7aa5937e
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Apr 2025 16:09:31.8908 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN0P223MB0309
Subject: Re: [FFmpeg-devel] [PATCH 1/2] avformat: add avformat_query_seekable
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/DM8P223MB03651EDCA0D837A06C6B7C62BAB02@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>



> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Gyan
> Doshi
> Sent: Sonntag, 13. April 2025 13:16
> To: ffmpeg-devel@ffmpeg.org
> Subject: [FFmpeg-devel] [PATCH 1/2] avformat: add
> avformat_query_seekable
> 
> Utility function to report seekability features for a given input.
> 
> Useful for ffprobe and to extend seek possibilities in fftools.
> ---
>  doc/APIchanges         |  3 +++
>  libavformat/avformat.h | 22 ++++++++++++++++++
>  libavformat/seek.c     | 53 ++++++++++++++++++++++++++++++++++++++++++
>  libavformat/version.h  |  2 +-
>  4 files changed, 79 insertions(+), 1 deletion(-)
> 
> diff --git a/doc/APIchanges b/doc/APIchanges
> index 65bf5a9419..879f56b572 100644
> --- a/doc/APIchanges
> +++ b/doc/APIchanges
> @@ -2,6 +2,9 @@ The last version increases of all libraries were on
> 2025-03-28
> 
>  API changes, most recent first:
> 
> +2025-04-xx - xxxxxxxxxx - lavf 62.1.100 - avformat.h
> +  Add avformat_query_seekable().
> +
>  2025-04-07 - 19e9a203b7 - lavu 60.01.100 - dict.h
>    Add AV_DICT_DEDUP.
> 
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index 498c3020a5..e00f1ed0d9 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -2338,6 +2338,28 @@ int av_seek_frame(AVFormatContext *s, int
> stream_index, int64_t timestamp,
>   */
>  int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t
> min_ts, int64_t ts, int64_t max_ts, int flags);

Hi Gyan,

I like the idea of showing seekability in FFprobe output!

As far as I understand, these flags are expressing three different things:


1. Seek method

> +#define AVSEEKABLE_NORMAL     0x01 ///< I/O is seekable like a local
> file
> +#define AVSEEKABLE_PROTOCOL   0x02 ///< I/O seek is through protocol
> request via avio_seek_time
> +#define AVSEEKABLE_DEMUXER    0x04 ///< demuxer has a seek function
> +#define AVSEEKABLE_PKTSCAN    0x08 ///< seek is performed by consuming

2. Seek parameter type

> and scanning packet timestamps
> +#define AVSEEKABLE_TIME       0x10 ///< seek target can be a timestamp
> +#define AVSEEKABLE_BYTE       0x20 ///< seek target can be in bytes
> +#define AVSEEKABLE_FRAME      0x40 ///< seek target can be a frame
> index

3. Additional seek behavior

> +#define AVSEEKABLE_PTS       0x100 ///< seek target timestamp is
> expected to be PTS
> +#define AVSEEKABLE_FAST      0x200 ///< demuxer allows fast but
> inaccurate seeking
> +#define AVSEEKABLE_FWDONLY   0x400 ///< set seek will be equal or
> forward of specified seek point


Wouldn't it be better for clarity when this differentiation would be 
reflected in the naming?

Maybe something like this:

AVSEEKABLE_VIA_DEMUXER

AVSEEKABLE_BY_TIME

AVSEEKABLE_BEHAVIOR_FAST


Another note:

> +#define AVSEEKABLE_NORMAL     0x01 ///< I/O is seekable like a local
> +#define AVSEEKABLE_PROTOCOL   0x02 ///< I/O seek is through protocol
> +#define AVSEEKABLE_DEMUXER    0x04 ///< demuxer has a seek function
> +#define AVSEEKABLE_PKTSCAN    0x08 ///< seek is performed by consuming

There's no (numeric) room for extending the first block

> +#define AVSEEKABLE_TIME       0x10 ///< seek target can be a timestamp
> +#define AVSEEKABLE_BYTE       0x20 ///< seek target can be in bytes
> +#define AVSEEKABLE_FRAME      0x40 ///< seek target can be a frame


> +    // TODO: no flag for frame seeking. Add flag and update this check
> +    if (s->iformat->flags & 0)
> +        ret |= AVSEEKABLE_FRAME;
> +
> +    if (s->iformat->flags & AVFMT_SEEK_TO_PTS)
> +        ret |= AVSEEKABLE_PTS;

Maybe add a check for AVSEEKABLE_TIME - for sanity?

> +    // TODO: flag exists but not added to the demuxers which support it
> +    if (s->iformat->flags & AVFMT_FLAG_FAST_SEEK)
> +        ret |= AVSEEKABLE_FAST;



Another idea would be to return a struct (like AVSeekability) with a clear
separation of those three types of information, maybe that would provide
better clarity?


Best,
sw
_______________________________________________
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".