File indexing completed on 2024-05-05 04:51:26

0001 /*
0002     SPDX-FileCopyrightText: 1998-2007 Sebastian Trueg <trueg@k3b.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef _K3B_VIDEODVD_TITLE_H_
0007 #define _K3B_VIDEODVD_TITLE_H_
0008 
0009 #include "k3b_export.h"
0010 
0011 #include "k3bvideodvdtime.h"
0012 #include "k3bvideodvdvideostream.h"
0013 #include "k3bvideodvdaudiostream.h"
0014 #include "k3bvideodvdsubpicturestream.h"
0015 #include "k3bvideodvdptt.h"
0016 
0017 #include <QVector>
0018 
0019 
0020 namespace K3b {
0021     namespace VideoDVD
0022     {
0023         class LIBK3B_EXPORT Title
0024         {
0025         public:
0026             Title() {}
0027 
0028             unsigned int titleNumber() const { return m_titleNum; }
0029 
0030             /**
0031              * \return The number of PTTs (Part of Title), commonly known
0032              *         as chapters
0033              */
0034             unsigned int numPTTs() const { return m_numPTTs; }
0035 
0036             /**
0037              * This method is just here for convenience. It returns the same as the above.
0038              */
0039             unsigned int numChapters() const { return m_numPTTs; }
0040             unsigned int numAngles() const { return m_numAngles; }
0041 
0042             /**
0043              * \return The number of the titleset this title is a part of.
0044              */
0045             unsigned int titleSet() const { return m_titleSet; }
0046 
0047             /**
0048              * \return Number of the title in it's titleset.
0049              */
0050             unsigned int ttn() const { return m_ttn; }
0051 
0052             unsigned int numAudioStreams() const { return m_audioStreams.count(); }
0053             unsigned int numSubPictureStreams() const { return m_subPictureStreams.count(); }
0054 
0055             const VideoStream& videoStream() const { return m_videoStream; }
0056             const AudioStream& audioStream( unsigned int i ) const { return m_audioStreams[i]; }
0057             const SubPictureStream& subPictureStream( unsigned int i ) const { return m_subPictureStreams[i]; }
0058 
0059             /**
0060              * Access to the PTTs of the title
0061              */
0062             const PTT& operator[]( int i ) const { return ptt( i ); }
0063 
0064             /**
0065              * Access to the PTTs of the title
0066              */
0067             const PTT& ptt( int i ) const { return m_ptts[i]; }
0068 
0069             /**
0070              * Access to the PTTs (chapters) of the title
0071              */
0072             const PTT& chapter( int i ) const { return ptt( i ); }
0073 
0074             const Time& playbackTime() const { return m_playbackTime; }
0075 
0076             /**
0077              * \return A video capture
0078              */
0079             //      QBitmap videoCapture( const Time& ) const;
0080 
0081         private:
0082             unsigned int m_titleNum;
0083             unsigned int m_numPTTs;
0084             unsigned int m_titleSet;
0085             // FIXME: find a proper name for ttn
0086             unsigned int m_ttn;
0087             unsigned int m_numAngles;
0088 
0089             Time m_playbackTime;
0090 
0091             VideoStream m_videoStream;
0092             QVector<AudioStream> m_audioStreams;
0093             QVector<SubPictureStream> m_subPictureStreams;
0094 
0095             QVector<PTT> m_ptts;
0096 
0097             //      VideoDVD* m_videoDVD;
0098 
0099             friend class VideoDVD;
0100         };
0101     }
0102 }
0103 
0104 #endif