[vlc-commits] [Git][videolan/vlc][master] 2 commits: demux: adaptive: add macro to enforce inits/copy/move/assign

Felix Paul Kühne (@fkuehne) gitlab at videolan.org
Sun Jul 20 10:19:30 UTC 2025



Felix Paul Kühne pushed to branch master at VideoLAN / VLC


Commits:
d9b75dc5 by François Cartegnie at 2025-07-20T09:47:16+00:00
demux: adaptive: add macro to enforce inits/copy/move/assign

- - - - -
05ce49cd by François Cartegnie at 2025-07-20T09:47:16+00:00
demux: adaptive: rename AbstractSource to BlockStreamInterface

- - - - -


28 changed files:

- modules/demux/Makefile.am
- modules/demux/adaptive/AbstractSource.hpp → modules/demux/adaptive/BlockStreamInterface.hpp
- modules/demux/adaptive/PlaylistManager.h
- modules/demux/adaptive/SegmentTracker.hpp
- modules/demux/adaptive/Streams.hpp
- modules/demux/adaptive/http/Chunk.h
- modules/demux/adaptive/http/Downloader.hpp
- modules/demux/adaptive/http/HTTPConnection.cpp
- modules/demux/adaptive/http/HTTPConnection.hpp
- modules/demux/adaptive/http/HTTPConnectionManager.h
- modules/demux/adaptive/logic/IDownloadRateObserver.h
- modules/demux/adaptive/playlist/CodecDescription.hpp
- modules/demux/adaptive/playlist/CommonAttributesElements.h
- modules/demux/adaptive/playlist/ICanonicalUrl.hpp
- modules/demux/adaptive/playlist/Inheritables.hpp
- modules/demux/adaptive/playlist/Segment.h
- modules/demux/adaptive/playlist/SegmentBaseType.hpp
- modules/demux/adaptive/playlist/SegmentInformation.hpp
- modules/demux/adaptive/plumbing/CommandsQueue.cpp
- modules/demux/adaptive/plumbing/CommandsQueue.hpp
- modules/demux/adaptive/plumbing/Demuxer.cpp
- modules/demux/adaptive/plumbing/Demuxer.hpp
- modules/demux/adaptive/plumbing/FakeESOut.hpp
- modules/demux/adaptive/plumbing/FakeESOutID.hpp
- modules/demux/adaptive/plumbing/SourceStream.cpp
- modules/demux/adaptive/plumbing/SourceStream.hpp
- + modules/demux/adaptive/tools/Macros.hpp
- modules/demux/meson.build


Changes:

=====================================
modules/demux/Makefile.am
=====================================
@@ -393,7 +393,7 @@ libvlc_adaptive_la_SOURCES = \
     demux/adaptive/plumbing/FakeESOutID.hpp \
     demux/adaptive/plumbing/SourceStream.cpp \
     demux/adaptive/plumbing/SourceStream.hpp \
-    demux/adaptive/AbstractSource.hpp \
+    demux/adaptive/BlockStreamInterface.hpp \
     demux/adaptive/ID.hpp \
     demux/adaptive/ID.cpp \
     demux/adaptive/PlaylistManager.cpp \
@@ -415,6 +415,7 @@ libvlc_adaptive_la_SOURCES = \
     demux/adaptive/tools/FormatNamespace.hpp \
     demux/adaptive/tools/Helper.cpp \
     demux/adaptive/tools/Helper.h \
+    demux/adaptive/tools/Macros.hpp \
     demux/adaptive/tools/MovingAverage.hpp \
     demux/adaptive/tools/Properties.hpp \
     demux/adaptive/tools/Retrieve.cpp \


=====================================
modules/demux/adaptive/AbstractSource.hpp → modules/demux/adaptive/BlockStreamInterface.hpp
=====================================
@@ -1,5 +1,5 @@
 /*
- * AbstractSource.hpp
+ * BlockStreamInterface.hpp
  *****************************************************************************
  * Copyright © 2015-2019 - VideoLabs, VideoLAN and VLC Authors
  *
@@ -17,20 +17,22 @@
  * along with this program; if not, write to the Free Software Foundation,
  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
-#ifndef ABSTRACTSOURCE_HPP
-#define ABSTRACTSOURCE_HPP
+#ifndef BLOCKSTREAMINTERFACE_HPP
+#define BLOCKSTREAMINTERFACE_HPP
 
 #include <vlc_common.h>
+#include "tools/Macros.hpp"
 
 namespace adaptive
 {
-    class AbstractSource
+    class BlockStreamInterface
     {
+        PREREQ_INTERFACE(BlockStreamInterface);
+
         public:
-            virtual ~AbstractSource() {}
             virtual block_t *readNextBlock() = 0;
     };
 }
 
-#endif // ABSTRACTSOURCE_HPP
+#endif // BLOCKSTREAMINTERFACE_HPP
 


=====================================
modules/demux/adaptive/PlaylistManager.h
=====================================
@@ -23,6 +23,7 @@
 #define PLAYLISTMANAGER_H_
 
 #include "logic/AbstractAdaptationLogic.h"
+#include "tools/Macros.hpp"
 #include "Streams.hpp"
 #include <vector>
 
@@ -49,6 +50,8 @@ namespace adaptive
 
     class PlaylistManager
     {
+        PREREQ_VIRTUAL(PlaylistManager);
+
         public:
             PlaylistManager( demux_t *,
                              SharedResources *,


=====================================
modules/demux/adaptive/SegmentTracker.hpp
=====================================
@@ -24,6 +24,7 @@
 #include "Time.hpp"
 #include "playlist/CodecDescription.hpp"
 #include "playlist/Role.hpp"
+#include "tools/Macros.hpp"
 
 #include <vlc_common.h>
 #include <list>
@@ -58,6 +59,8 @@ namespace adaptive
 
     class TrackerEvent
     {
+        PREREQ_VIRTUAL(TrackerEvent);
+
         public:
             enum class Type
             {
@@ -190,9 +193,10 @@ namespace adaptive
 
     class SegmentTrackerListenerInterface
     {
+        PREREQ_INTERFACE(SegmentTrackerListenerInterface);
+
         public:
             virtual void trackerEvent(const TrackerEvent &) = 0;
-            virtual ~SegmentTrackerListenerInterface() = default;
     };
 
     class SegmentTracker


=====================================
modules/demux/adaptive/Streams.hpp
=====================================
@@ -22,7 +22,7 @@
 
 #include <vlc_common.h>
 #include "StreamFormat.hpp"
-#include "AbstractSource.hpp"
+#include "BlockStreamInterface.hpp"
 #include "SegmentTracker.hpp"
 
 #include "plumbing/CommandsQueue.hpp"
@@ -50,14 +50,17 @@ namespace adaptive
     using namespace http;
     using namespace playlist;
 
-    class AbstractStream : public AbstractSource,
+    class AbstractStream : public BlockStreamInterface,
                            public ExtraFMTInfoInterface,
                            public SegmentTrackerListenerInterface,
                            public DemuxerFactoryInterface
     {
+        PREREQ_VIRTUAL(AbstractStream);
+
     public:
         AbstractStream(demux_t *);
         virtual ~AbstractStream();
+
         bool init(const StreamFormat &, SegmentTracker *);
 
         void setLanguage(const std::string &);


=====================================
modules/demux/adaptive/http/Chunk.h
=====================================
@@ -31,6 +31,7 @@
 #include "BytesRange.hpp"
 #include "ConnectionParams.hpp"
 #include "../ID.hpp"
+#include "../tools/Macros.hpp"
 #include <vlc_threads.h>
 #include <vlc_cxx_helpers.hpp>
 
@@ -55,8 +56,9 @@ namespace adaptive
 
         class ChunkInterface
         {
+            PREREQ_INTERFACE(ChunkInterface);
+
             public:
-                virtual ~ChunkInterface() {}
                 virtual const std::string & getContentType  () const = 0;
                 virtual RequestStatus getRequestStatus() const = 0;
 
@@ -71,6 +73,7 @@ namespace adaptive
         class AbstractChunkSource : public ChunkInterface
         {
             friend class AbstractConnectionManager;
+            PREREQ_VIRTUAL(AbstractChunkSource);
 
             public:
                 const BytesRange &  getBytesRange   () const;
@@ -92,6 +95,8 @@ namespace adaptive
 
         class AbstractChunk : public ChunkInterface
         {
+            PREREQ_VIRTUAL(AbstractChunk);
+
             public:
                 virtual ~AbstractChunk();
 


=====================================
modules/demux/adaptive/http/Downloader.hpp
=====================================
@@ -38,6 +38,9 @@ namespace adaptive
             public:
                 Downloader();
                 ~Downloader();
+                Downloader(Downloader&&) = delete;
+                Downloader& operator=(const Downloader&) = delete;
+                Downloader& operator=(Downloader&&) = delete;
                 bool start();
                 void schedule(HTTPChunkBufferedSource *);
                 void cancel(HTTPChunkBufferedSource *);


=====================================
modules/demux/adaptive/http/HTTPConnection.cpp
=====================================
@@ -24,7 +24,7 @@
 #include "HTTPConnection.hpp"
 #include "ConnectionParams.hpp"
 #include "AuthStorage.hpp"
-#include "../AbstractSource.hpp"
+#include "../BlockStreamInterface.hpp"
 #include "../plumbing/SourceStream.hpp"
 #include "../tools/Compatibility.hpp"
 
@@ -84,7 +84,7 @@ const ConnectionParams & AbstractConnection::getRedirection() const
     return locationparams;
 }
 
-class adaptive::http::LibVLCHTTPSource : public adaptive::AbstractSource
+class adaptive::http::LibVLCHTTPSource : public adaptive::BlockStreamInterface
 {
      public:
         LibVLCHTTPSource(vlc_object_t *p_object_, struct vlc_http_cookie_jar_t *jar)


=====================================
modules/demux/adaptive/http/HTTPConnection.hpp
=====================================
@@ -45,6 +45,9 @@ namespace adaptive
             public:
                 AbstractConnection(vlc_object_t *);
                 virtual ~AbstractConnection();
+                AbstractConnection(AbstractConnection&&) = delete;
+                AbstractConnection& operator=(const AbstractConnection&) = delete;
+                AbstractConnection& operator=(AbstractConnection&&) = delete;
 
                 virtual bool    prepare     (const ConnectionParams &);
                 virtual bool    canReuse     (const ConnectionParams &) const = 0;


=====================================
modules/demux/adaptive/http/HTTPConnectionManager.h
=====================================
@@ -52,6 +52,9 @@ namespace adaptive
             public:
                 AbstractConnectionManager(vlc_object_t *);
                 ~AbstractConnectionManager();
+                AbstractConnectionManager(AbstractConnectionManager&&) = delete;
+                AbstractConnectionManager& operator=(const AbstractConnectionManager&) = delete;
+                AbstractConnectionManager& operator=(AbstractConnectionManager&&) = delete;
                 virtual void    closeAllConnections () = 0;
                 virtual AbstractConnection * getConnection(ConnectionParams &) = 0;
                 virtual AbstractChunkSource *makeSource(const std::string &,


=====================================
modules/demux/adaptive/logic/IDownloadRateObserver.h
=====================================
@@ -25,6 +25,8 @@
 #ifndef IDOWNLOADRATEOBSERVER_H_
 #define IDOWNLOADRATEOBSERVER_H_
 
+#include "../tools/Macros.hpp"
+
 #include <vlc_common.h>
 #include <vlc_tick.h>
 
@@ -34,10 +36,11 @@ namespace adaptive
 
     class IDownloadRateObserver
     {
+        PREREQ_INTERFACE(IDownloadRateObserver);
+
         public:
             virtual void updateDownloadRate(const ID &, size_t,
                                             vlc_tick_t, vlc_tick_t) = 0;
-            virtual ~IDownloadRateObserver(){}
     };
 }
 


=====================================
modules/demux/adaptive/playlist/CodecDescription.hpp
=====================================
@@ -21,6 +21,7 @@
 #define CODECDESCRIPTION_HPP
 
 #include "../tools/Properties.hpp"
+#include "../tools/Macros.hpp"
 #include <vlc_es.h>
 #include <string>
 #include <list>
@@ -31,11 +32,11 @@ namespace adaptive
     {
         class CodecDescription
         {
+            PREREQ_VIRTUAL(CodecDescription);
+
             public:
                 CodecDescription();
                 CodecDescription(const std::string &);
-                CodecDescription(const CodecDescription &) = delete;
-                void operator=(const CodecDescription&) = delete;
                 virtual ~CodecDescription();
                 const es_format_t *getFmt() const;
                 void setDimensions(unsigned, unsigned);


=====================================
modules/demux/adaptive/playlist/CommonAttributesElements.h
=====================================
@@ -26,6 +26,7 @@
 
 #include "../tools/Compatibility.hpp"
 #include "../tools/Properties.hpp"
+#include "../tools/Macros.hpp"
 #include <string>
 
 namespace adaptive
@@ -34,6 +35,8 @@ namespace adaptive
     {
         class CommonAttributesElements
         {
+            PREREQ_VIRTUAL(CommonAttributesElements);
+
             public:
                 CommonAttributesElements(CommonAttributesElements * = nullptr);
                 virtual ~CommonAttributesElements();


=====================================
modules/demux/adaptive/playlist/ICanonicalUrl.hpp
=====================================
@@ -21,6 +21,7 @@
 #define CANONICALURL_HPP
 
 #include "Url.hpp"
+#include "../tools/Macros.hpp"
 
 namespace adaptive
 {
@@ -28,6 +29,8 @@ namespace adaptive
     {
         class ICanonicalUrl
         {
+            PREREQ_VIRTUAL(ICanonicalUrl);
+
             public:
                 ICanonicalUrl( const ICanonicalUrl *parent = nullptr ) { setParent(parent); }
                 virtual ~ICanonicalUrl() = default;


=====================================
modules/demux/adaptive/playlist/Inheritables.hpp
=====================================
@@ -24,6 +24,7 @@
 #include <limits>
 #include <stdint.h>
 #include "../Time.hpp"
+#include "../tools/Macros.hpp"
 
 namespace adaptive
 {
@@ -37,6 +38,8 @@ namespace adaptive
 
         class AbstractAttr
         {
+            PREREQ_VIRTUAL(AbstractAttr);
+
             public:
                 enum class Type
                 {
@@ -55,8 +58,6 @@ namespace adaptive
                 };
                 AbstractAttr(enum Type);
                 virtual ~AbstractAttr();
-                AbstractAttr(const AbstractAttr &) = delete;
-                AbstractAttr & operator=(const AbstractAttr &) = delete;
                 Type getType() const;
                 bool operator ==(const AbstractAttr &t) const { return type == t.getType(); }
                 bool operator !=(const AbstractAttr &t) const { return type != t.getType(); }


=====================================
modules/demux/adaptive/playlist/Segment.h
=====================================
@@ -49,9 +49,12 @@ namespace adaptive
 
         class ISegment : public ICanonicalUrl
         {
+            PREREQ_VIRTUAL(ISegment);
+
             public:
                 ISegment(const ICanonicalUrl *parent);
                 virtual ~ISegment();
+
                 /**
                  *  @return true if the segment should be dropped after being read.
                  *          That is basically true when using an Url, and false


=====================================
modules/demux/adaptive/playlist/SegmentBaseType.hpp
=====================================
@@ -34,6 +34,8 @@ namespace adaptive
                                         public Indexable<IndexSegment>,
                                         public AttrsNode
         {
+            PREREQ_VIRTUAL(AbstractSegmentBaseType);
+
             public:
                 AbstractSegmentBaseType( SegmentInformation *, AttrsNode::Type );
                 virtual ~AbstractSegmentBaseType();


=====================================
modules/demux/adaptive/playlist/SegmentInformation.hpp
=====================================
@@ -23,6 +23,7 @@
 #include "ICanonicalUrl.hpp"
 #include "Inheritables.hpp"
 #include "Segment.h"
+#include "../tools/Macros.hpp"
 #include "../encryption/CommonEncryption.hpp"
 #include <vlc_common.h>
 #include <vector>
@@ -47,6 +48,7 @@ namespace adaptive
                                    public AttrsNode
         {
             friend class AbstractMultipleSegmentBaseType;
+            PREREQ_VIRTUAL(SegmentInformation);
 
             public:
                 SegmentInformation( SegmentInformation * = 0 );


=====================================
modules/demux/adaptive/plumbing/CommandsQueue.cpp
=====================================
@@ -48,11 +48,6 @@ AbstractCommand::AbstractCommand( int type_ )
     type = type_;
 }
 
-AbstractCommand::~AbstractCommand()
-{
-
-}
-
 const Times & AbstractCommand::getTimes() const
 {
     return times;


=====================================
modules/demux/adaptive/plumbing/CommandsQueue.hpp
=====================================
@@ -22,6 +22,7 @@
 
 #include "FakeESOutID.hpp"
 #include "../Time.hpp"
+#include "../tools/Macros.hpp"
 
 #include <vlc_common.h>
 #include <vlc_es.h>
@@ -36,8 +37,11 @@ namespace adaptive
     class AbstractCommand
     {
         friend class CommandsFactory;
+        PREREQ_VIRTUAL(AbstractCommand);
+
         public:
-            virtual ~AbstractCommand();
+            AbstractCommand() = delete;
+            virtual ~AbstractCommand() = default;
             virtual void Execute( ) = 0;
             virtual const Times & getTimes() const;
             int getType() const;
@@ -181,6 +185,8 @@ namespace adaptive
 
     class AbstractCommandsQueue
     {
+        PREREQ_VIRTUAL(AbstractCommandsQueue);
+
         public:
             AbstractCommandsQueue();
             virtual ~AbstractCommandsQueue() = default;


=====================================
modules/demux/adaptive/plumbing/Demuxer.cpp
=====================================
@@ -29,7 +29,7 @@
 #include "SourceStream.hpp"
 #include "../StreamFormat.hpp"
 #include "CommandsQueue.hpp"
-#include "../AbstractSource.hpp"
+#include "../BlockStreamInterface.hpp"
 
 using namespace adaptive;
 


=====================================
modules/demux/adaptive/plumbing/Demuxer.hpp
=====================================
@@ -20,6 +20,8 @@
 #ifndef DEMUXER_HPP
 #define DEMUXER_HPP
 
+#include "../tools/Macros.hpp"
+
 #include <vlc_common.h>
 #include <vlc_tick.h>
 #include <string>
@@ -32,6 +34,8 @@ namespace adaptive
 
     class AbstractDemuxer
     {
+        PREREQ_VIRTUAL(AbstractDemuxer);
+
         public:
             enum class Status
             {
@@ -93,10 +97,11 @@ namespace adaptive
 
     class DemuxerFactoryInterface
     {
+        PREREQ_INTERFACE(DemuxerFactoryInterface);
+
         public:
             virtual AbstractDemuxer * newDemux(vlc_object_t *, const StreamFormat &,
                                                es_out_t *, AbstractSourceStream *) const = 0;
-            virtual ~DemuxerFactoryInterface() = default;
     };
 }
 


=====================================
modules/demux/adaptive/plumbing/FakeESOut.hpp
=====================================
@@ -22,6 +22,7 @@
 
 #include <vlc_common.h>
 #include <list>
+#include "../tools/Macros.hpp"
 #include "../Time.hpp"
 #include "../ID.hpp"
 #include <vlc_threads.h>
@@ -30,9 +31,10 @@ namespace adaptive
 {
     class ExtraFMTInfoInterface
     {
+        PREREQ_INTERFACE(ExtraFMTInfoInterface);
+
         public:
             virtual void fillExtraFMTInfo( es_format_t * ) const = 0;
-            virtual ~ExtraFMTInfoInterface() = default;
     };
 
     class AbstractCommandsQueue;
@@ -43,6 +45,8 @@ namespace adaptive
     class AbstractFakeEsOut
     {
         friend class EsOutCallbacks;
+        PREREQ_VIRTUAL(AbstractFakeEsOut);
+
         public:
             AbstractFakeEsOut();
             virtual ~AbstractFakeEsOut();


=====================================
modules/demux/adaptive/plumbing/FakeESOutID.hpp
=====================================
@@ -21,6 +21,7 @@
 #define FAKEESOUTID_HPP
 
 #include "../ID.hpp"
+#include "../tools/Macros.hpp"
 
 #include <vlc_common.h>
 #include <vlc_es.h>
@@ -38,8 +39,9 @@ namespace adaptive
 
     class AbstractFakeESOutID
     {
+        PREREQ_INTERFACE(AbstractFakeESOutID);
+
         public:
-            virtual ~AbstractFakeESOutID() = default;
             virtual es_out_id_t * realESID() const = 0;
             virtual void create() = 0;
             virtual void release() = 0;
@@ -49,6 +51,8 @@ namespace adaptive
 
     class FakeESOutID : public AbstractFakeESOutID
     {
+        PREREQ_VIRTUAL(FakeESOutID);
+
         public:
             FakeESOutID( FakeESOut *, const es_format_t * );
             FakeESOutID( FakeESOut *, const es_format_t *, const SrcID & );


=====================================
modules/demux/adaptive/plumbing/SourceStream.cpp
=====================================
@@ -24,14 +24,14 @@
 
 #include "SourceStream.hpp"
 
-#include "../AbstractSource.hpp"
+#include "../BlockStreamInterface.hpp"
 #include "../http/Chunk.h"
 #include <vlc_stream.h>
 #include <vlc_demux.h>
 
 using namespace adaptive;
 
-AbstractChunksSourceStream::AbstractChunksSourceStream(vlc_object_t *p_obj_, AbstractSource *source_)
+AbstractChunksSourceStream::AbstractChunksSourceStream(vlc_object_t *p_obj_, BlockStreamInterface *source_)
     : b_eof( false )
     , p_obj( p_obj_ )
     , source( source_ )
@@ -102,7 +102,7 @@ stream_t * AbstractChunksSourceStream::makeStream()
     return p_stream;
 }
 
-ChunksSourceStream::ChunksSourceStream(vlc_object_t *p_obj_, AbstractSource *source_)
+ChunksSourceStream::ChunksSourceStream(vlc_object_t *p_obj_, BlockStreamInterface *source_)
     : AbstractChunksSourceStream(p_obj_, source_)
 {
     p_block = nullptr;
@@ -176,7 +176,7 @@ int ChunksSourceStream::Seek(uint64_t)
     return VLC_EGENERIC;
 }
 
-BufferedChunksSourceStream::BufferedChunksSourceStream(vlc_object_t *p_obj_, AbstractSource *source_)
+BufferedChunksSourceStream::BufferedChunksSourceStream(vlc_object_t *p_obj_, BlockStreamInterface *source_)
     : AbstractChunksSourceStream( p_obj_, source_ )
 {
     i_global_offset = 0;


=====================================
modules/demux/adaptive/plumbing/SourceStream.hpp
=====================================
@@ -20,17 +20,20 @@
 #ifndef SOURCESTREAM_HPP
 #define SOURCESTREAM_HPP
 
+#include "../tools/Macros.hpp"
+
 #include <vlc_common.h>
 #include <vlc_block_helper.h>
 
 namespace adaptive
 {
-    class AbstractSource;
+    class BlockStreamInterface;
 
     class AbstractSourceStream
     {
+        PREREQ_INTERFACE(AbstractSourceStream);
+
         public:
-            virtual ~AbstractSourceStream() {}
             virtual stream_t *makeStream() = 0;
             virtual void Reset() = 0;
             virtual size_t Peek(const uint8_t **, size_t) = 0;
@@ -38,8 +41,10 @@ namespace adaptive
 
     class AbstractChunksSourceStream : public AbstractSourceStream
     {
+        PREREQ_VIRTUAL(AbstractChunksSourceStream);
+
         public:
-            AbstractChunksSourceStream(vlc_object_t *, AbstractSource *);
+            AbstractChunksSourceStream(vlc_object_t *, BlockStreamInterface *);
             virtual ~AbstractChunksSourceStream();
             void Reset() override;
             stream_t *makeStream() override;
@@ -49,7 +54,7 @@ namespace adaptive
             virtual int     Seek(uint64_t) = 0;
             bool b_eof;
             vlc_object_t *p_obj;
-            AbstractSource *source;
+            BlockStreamInterface *source;
 
         private:
             static ssize_t read_Callback(stream_t *, void *, size_t);
@@ -61,7 +66,7 @@ namespace adaptive
     class ChunksSourceStream : public AbstractChunksSourceStream
     {
         public:
-            ChunksSourceStream(vlc_object_t *, AbstractSource *);
+            ChunksSourceStream(vlc_object_t *, BlockStreamInterface *);
             virtual ~ChunksSourceStream();
             void Reset() override;
 
@@ -77,7 +82,7 @@ namespace adaptive
     class BufferedChunksSourceStream : public AbstractChunksSourceStream
     {
         public:
-            BufferedChunksSourceStream(vlc_object_t *, AbstractSource *);
+            BufferedChunksSourceStream(vlc_object_t *, BlockStreamInterface *);
             virtual ~BufferedChunksSourceStream();
             void Reset() override;
 


=====================================
modules/demux/adaptive/tools/Macros.hpp
=====================================
@@ -0,0 +1,39 @@
+/*
+ * Macros.hpp
+ *****************************************************************************
+ * Copyright (C) 2025 VideoLabs, VideoLAN and VLC Authors
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#ifndef MACROS_HPP
+#define MACROS_HPP
+
+#define PREREQ_COPYMOVEASSIGN(classname, op)\
+public:\
+    classname(classname&&) = op;\
+    classname(const classname&) = op;\
+    classname& operator=(classname&&) = op;\
+    classname& operator=(const classname&) = op
+
+#define PREREQ_VIRTUAL(classname)\
+    PREREQ_COPYMOVEASSIGN(classname, delete)
+
+#define PREREQ_INTERFACE(classname)\
+public:\
+    classname() = default;\
+    virtual ~classname() = default;\
+    PREREQ_COPYMOVEASSIGN(classname, default)
+
+#endif // MACROS_HPP


=====================================
modules/demux/meson.build
=====================================
@@ -614,7 +614,7 @@ vlc_modules += {
         'adaptive/plumbing/FakeESOutID.hpp',
         'adaptive/plumbing/SourceStream.cpp',
         'adaptive/plumbing/SourceStream.hpp',
-        'adaptive/AbstractSource.hpp',
+        'adaptive/BlockStreamInterface.hpp',
         'adaptive/ID.hpp',
         'adaptive/ID.cpp',
         'adaptive/PlaylistManager.cpp',
@@ -635,6 +635,7 @@ vlc_modules += {
         'adaptive/tools/FormatNamespace.hpp',
         'adaptive/tools/Helper.cpp',
         'adaptive/tools/Helper.h',
+        'adaptive/tools/Macros.hpp',
         'adaptive/tools/MovingAverage.hpp',
         'adaptive/tools/Properties.hpp',
         'adaptive/tools/Retrieve.cpp',



View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/53ded076a8af0d0168b6c85f88f7389401b48136...05ce49cd1de59eb170769764beb842cb8cf7574f

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/53ded076a8af0d0168b6c85f88f7389401b48136...05ce49cd1de59eb170769764beb842cb8cf7574f
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list