Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Martijn Otto <martijn@resolume.com>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] Patch: avformat_index_get_entry and avformat_index_get_entry_from_timestamp const correctness
Date: Thu, 15 May 2025 15:11:12 +0200
Message-ID: <a5d12d8dfea1afd9cceda48f9bb51a873a09e5f2.camel@resolume.com> (raw)
In-Reply-To: <GV1P250MB073768F2D367642441EF14E58F90A@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>

[-- Attachment #1: Type: text/plain, Size: 1139 bytes --]

On Thu, 2025-05-15 at 14:44 +0200, Andreas Rheinhardt wrote:
> Martijn Otto:
> >  static av_always_inline const FFStream *cffstream(const AVStream
> > *st)
> >  {
> > -    return (FFStream*)st;
> > +    return (const FFStream*)st;
> >  }
> 
> Your patch should be applied on top of git master, not some old
> version.
> The above change is identical to
> 185d0acdc7a67b7d3d78d4c917334c4c3bf9accd.
> 
> Anyway, I remember that someone (IIRC Anton Khirnov) objected to the
> const when this was introduced.
> 
> - Andreas
> 
> _______________________________________________
> 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".

I've updated the patch to apply to latest master, I've made it quite
some time in the past, and something went wrong with my submission
then.

I'm curious to hear what the arguments against these functions taking a
const-qualified stream are, given that we return a const-value and
don't modify it at all.

[-- Attachment #2: 0001-avformat_index_get_entry-and-_from_timestamp-const-c.patch --]
[-- Type: text/x-patch, Size: 2797 bytes --]

From 0c8f5873366e7721292007bca644ff5cc312df2b Mon Sep 17 00:00:00 2001
From: Martijn Otto <martijn@resolume.com>
Date: Thu, 15 May 2025 15:06:52 +0200
Subject: [PATCH] These functions don't need a mutable pointer to the stream,
 as they don't modify anything, and only return const-qualified pointers
 themselves.

---
 libavformat/avformat.h | 4 ++--
 libavformat/seek.c     | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 498c3020a5..5a0aa3f87d 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -2751,7 +2751,7 @@ int avformat_index_get_entries_count(const AVStream *st);
  *       until any function that takes the stream or the parent AVFormatContext
  *       as input argument is called.
  */
-const AVIndexEntry *avformat_index_get_entry(AVStream *st, int idx);
+const AVIndexEntry *avformat_index_get_entry(const AVStream *st, int idx);
 
 /**
  * Get the AVIndexEntry corresponding to the given timestamp.
@@ -2768,7 +2768,7 @@ const AVIndexEntry *avformat_index_get_entry(AVStream *st, int idx);
  *       until any function that takes the stream or the parent AVFormatContext
  *       as input argument is called.
  */
-const AVIndexEntry *avformat_index_get_entry_from_timestamp(AVStream *st,
+const AVIndexEntry *avformat_index_get_entry_from_timestamp(const AVStream *st,
                                                             int64_t wanted_timestamp,
                                                             int flags);
 /**
diff --git a/libavformat/seek.c b/libavformat/seek.c
index c0d94371e6..2308660638 100644
--- a/libavformat/seek.c
+++ b/libavformat/seek.c
@@ -254,20 +254,20 @@ int avformat_index_get_entries_count(const AVStream *st)
     return cffstream(st)->nb_index_entries;
 }
 
-const AVIndexEntry *avformat_index_get_entry(AVStream *st, int idx)
+const AVIndexEntry *avformat_index_get_entry(const AVStream *st, int idx)
 {
-    const FFStream *const sti = ffstream(st);
+    const FFStream *const sti = cffstream(st);
     if (idx < 0 || idx >= sti->nb_index_entries)
         return NULL;
 
     return &sti->index_entries[idx];
 }
 
-const AVIndexEntry *avformat_index_get_entry_from_timestamp(AVStream *st,
+const AVIndexEntry *avformat_index_get_entry_from_timestamp(const AVStream *st,
                                                             int64_t wanted_timestamp,
                                                             int flags)
 {
-    const FFStream *const sti = ffstream(st);
+    const FFStream *const sti = cffstream(st);
     int idx = ff_index_search_timestamp(sti->index_entries,
                                         sti->nb_index_entries,
                                         wanted_timestamp, flags);
-- 
2.47.2


[-- Attachment #3: Type: text/plain, Size: 251 bytes --]

_______________________________________________
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".

  reply	other threads:[~2025-05-15 13:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-15 11:51 Martijn Otto
2025-05-15 12:44 ` Andreas Rheinhardt
2025-05-15 13:11   ` Martijn Otto [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-02-16  9:21 Martijn Otto
2022-11-07 15:11 Martijn Otto

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a5d12d8dfea1afd9cceda48f9bb51a873a09e5f2.camel@resolume.com \
    --to=martijn@resolume.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git