1 /* 2 SPDX-FileCopyrightText: 2003-2004 Christian Kvasny <chris@k3b.org> 3 SPDX-FileCopyrightText: 2010 Michal Malek <michalm@jabster.pl> 4 SPDX-FileCopyrightText: 1998-2010 Sebastian Trueg <trueg@k3b.org> 5 6 SPDX-License-Identifier: GPL-2.0-or-later 7 */ 8 9 #ifndef K3BVCDTRACK_H 10 #define K3BVCDTRACK_H 11 12 #include "mpeginfo/k3bmpeginfo.h" 13 #include "k3b_export.h" 14 15 #include <KIO/Global> 16 17 #include <QString> 18 #include <QFileInfo> 19 #include <QFile> 20 21 namespace K3b { 22 class LIBK3B_EXPORT VcdTrack 23 { 24 public: 25 VcdTrack( QList<VcdTrack*>* parent, const QString& filename ); 26 ~VcdTrack(); 27 fileName()28 QString fileName() const 29 { 30 return QFileInfo( m_file ).fileName(); 31 } absolutePath()32 QString absolutePath() const 33 { 34 return QFileInfo( m_file ).absoluteFilePath(); 35 } 36 KIO::filesize_t size() const; 37 int index() const; 38 title()39 const QString& title() const 40 { 41 return m_title; 42 } setTitle(const QString & t)43 void setTitle( const QString& t ) 44 { 45 m_title = t; 46 } isSegment()47 bool isSegment() 48 { 49 return mpegType() == 1; 50 }; 51 52 // PBC 53 enum PbcTracks { PREVIOUS, NEXT, RETURN, DEFAULT, AFTERTIMEOUT }; 54 enum PbcTypes { DISABLED, VIDEOEND }; 55 static QList<PbcTracks> trackPlaybackValues(); 56 57 void addToRevRefList( VcdTrack* revreftrack ); 58 void delFromRevRefList( VcdTrack* revreftrack ); 59 bool hasRevRef(); 60 void delRefToUs(); 61 void delRefFromUs(); 62 63 void setPbcTrack( PbcTracks which, VcdTrack* pbctrack = 0L ); 64 void setPbcNonTrack( PbcTracks which, PbcTypes type ); 65 void setUserDefined( PbcTracks, bool ); setPlayTime(int t)66 void setPlayTime( int t ) 67 { 68 m_pbcplaytime = t; 69 } setWaitTime(int t)70 void setWaitTime( int t ) 71 { 72 m_pbcwaittime = t; 73 } setReactivity(bool b)74 void setReactivity( bool b ) 75 { 76 m_reactivity = b; 77 } setPbcNumKeys(const bool & b)78 void setPbcNumKeys( const bool& b ) 79 { 80 m_pbcnumkeys = b; 81 } PbcNumKeys()82 bool PbcNumKeys() const 83 { 84 return m_pbcnumkeys; 85 }; setPbcNumKeysUserdefined(const bool & b)86 void setPbcNumKeysUserdefined( const bool& b ) 87 { 88 m_pbcnumkeysuserdefined = b; 89 }; PbcNumKeysUserdefined()90 bool PbcNumKeysUserdefined() const 91 { 92 return m_pbcnumkeysuserdefined; 93 }; 94 95 VcdTrack* getPbcTrack( PbcTracks which ); 96 int getNonPbcTrack( PbcTracks which ); 97 bool isPbcUserDefined( PbcTracks which ); getPlayTime()98 int getPlayTime() 99 { 100 return m_pbcplaytime; 101 } getWaitTime()102 int getWaitTime() 103 { 104 return m_pbcwaittime; 105 } Reactivity()106 bool Reactivity() 107 { 108 return m_reactivity; 109 } 110 111 // Numeric keys setDefinedNumKey(int key,VcdTrack * track)112 void setDefinedNumKey( int key, VcdTrack* track ) 113 { 114 m_definedkeysmap.insert( key, track ); 115 } delDefinedNumKey(int key)116 void delDefinedNumKey( int key ) 117 { 118 m_definedkeysmap.remove( key ); 119 } delDefinedNumKey()120 void delDefinedNumKey() 121 { 122 m_definedkeysmap.clear(); 123 } DefinedNumKey()124 QMap<int, VcdTrack*> DefinedNumKey() 125 { 126 return m_definedkeysmap; 127 } 128 129 // Mpeg Infos 130 QString resolution(); 131 QString highresolution(); 132 QString video_frate(); 133 QString video_bitrate(); 134 QString audio_layer(); 135 QString audio_bitrate(); 136 QString audio_sampfreq(); 137 duration()138 QString duration() 139 { 140 return SecsToHMS( mpeg_info->playing_time ); 141 }; version()142 int version() 143 { 144 return mpeg_info->version; 145 }; muxrate()146 unsigned long muxrate() 147 { 148 return mpeg_info->muxrate; 149 }; 150 QString video_format( ); 151 QString video_chroma( ); 152 QString audio_mode( ); 153 QString audio_copyright( ); 154 QString mpegTypeS( bool audio = false ); 155 int mpegType(); 156 157 void PrintInfo(); 158 159 Mpeginfo* mpeg_info; 160 161 protected: 162 163 QString audio_type2str( unsigned int , unsigned int, unsigned int ); 164 QString SecsToHMS( double ); 165 166 QList<VcdTrack*>* m_parent; 167 168 // PBC 169 QList<VcdTrack*> m_revreflist; // List of Tracks which points to us 170 QMap<PbcTracks, VcdTrack*> m_pbctrackmap; // Pbc Tracks (Previous, Next, ...) 171 QMap<PbcTracks, PbcTypes> m_pbcnontrackmap; // Pbc NON Track types (Previous, Next, ...) 172 QMap<PbcTracks, bool> m_pbcusrdefmap; // Pbc is userdefined or defaults (Previous, Next, ...) 173 QMap<int, VcdTrack*> m_definedkeysmap; 174 175 bool m_pbcnumkeys; 176 bool m_pbcnumkeysuserdefined; 177 178 int m_pbcplaytime; 179 int m_pbcwaittime; 180 /********************************************************************************/ 181 182 bool m_reactivity; 183 int m_filetype; 184 QFile m_file; 185 QString m_title; 186 }; 187 } 188 189 #endif 190