File indexing completed on 2024-05-12 04:51:10
0001 /* 0002 SPDX-FileCopyrightText: 2003-2004 Christian Kvasny <chris@k3b.org> 0003 SPDX-FileCopyrightText: 2010 Michal Malek <michalm@jabster.pl> 0004 SPDX-FileCopyrightText: 1998-2010 Sebastian Trueg <trueg@k3b.org> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef K3BVCDTRACK_H 0010 #define K3BVCDTRACK_H 0011 0012 #include "mpeginfo/k3bmpeginfo.h" 0013 #include "k3b_export.h" 0014 0015 #include <KIO/Global> 0016 0017 #include <QString> 0018 #include <QFileInfo> 0019 #include <QFile> 0020 0021 namespace K3b { 0022 class LIBK3B_EXPORT VcdTrack 0023 { 0024 public: 0025 VcdTrack( QList<VcdTrack*>* parent, const QString& filename ); 0026 ~VcdTrack(); 0027 0028 QString fileName() const 0029 { 0030 return QFileInfo( m_file ).fileName(); 0031 } 0032 QString absolutePath() const 0033 { 0034 return QFileInfo( m_file ).absoluteFilePath(); 0035 } 0036 KIO::filesize_t size() const; 0037 int index() const; 0038 0039 const QString& title() const 0040 { 0041 return m_title; 0042 } 0043 void setTitle( const QString& t ) 0044 { 0045 m_title = t; 0046 } 0047 bool isSegment() 0048 { 0049 return mpegType() == 1; 0050 }; 0051 0052 // PBC 0053 enum PbcTracks { PREVIOUS, NEXT, RETURN, DEFAULT, AFTERTIMEOUT }; 0054 enum PbcTypes { DISABLED, VIDEOEND }; 0055 static QList<PbcTracks> trackPlaybackValues(); 0056 0057 void addToRevRefList( VcdTrack* revreftrack ); 0058 void delFromRevRefList( VcdTrack* revreftrack ); 0059 bool hasRevRef(); 0060 void delRefToUs(); 0061 void delRefFromUs(); 0062 0063 void setPbcTrack( PbcTracks which, VcdTrack* pbctrack = 0L ); 0064 void setPbcNonTrack( PbcTracks which, PbcTypes type ); 0065 void setUserDefined( PbcTracks, bool ); 0066 void setPlayTime( int t ) 0067 { 0068 m_pbcplaytime = t; 0069 } 0070 void setWaitTime( int t ) 0071 { 0072 m_pbcwaittime = t; 0073 } 0074 void setReactivity( bool b ) 0075 { 0076 m_reactivity = b; 0077 } 0078 void setPbcNumKeys( const bool& b ) 0079 { 0080 m_pbcnumkeys = b; 0081 } 0082 bool PbcNumKeys() const 0083 { 0084 return m_pbcnumkeys; 0085 }; 0086 void setPbcNumKeysUserdefined( const bool& b ) 0087 { 0088 m_pbcnumkeysuserdefined = b; 0089 }; 0090 bool PbcNumKeysUserdefined() const 0091 { 0092 return m_pbcnumkeysuserdefined; 0093 }; 0094 0095 VcdTrack* getPbcTrack( PbcTracks which ); 0096 int getNonPbcTrack( PbcTracks which ); 0097 bool isPbcUserDefined( PbcTracks which ); 0098 int getPlayTime() 0099 { 0100 return m_pbcplaytime; 0101 } 0102 int getWaitTime() 0103 { 0104 return m_pbcwaittime; 0105 } 0106 bool Reactivity() 0107 { 0108 return m_reactivity; 0109 } 0110 0111 // Numeric keys 0112 void setDefinedNumKey( int key, VcdTrack* track ) 0113 { 0114 m_definedkeysmap.insert( key, track ); 0115 } 0116 void delDefinedNumKey( int key ) 0117 { 0118 m_definedkeysmap.remove( key ); 0119 } 0120 void delDefinedNumKey() 0121 { 0122 m_definedkeysmap.clear(); 0123 } 0124 QMap<int, VcdTrack*> DefinedNumKey() 0125 { 0126 return m_definedkeysmap; 0127 } 0128 0129 // Mpeg Infos 0130 QString resolution(); 0131 QString highresolution(); 0132 QString video_frate(); 0133 QString video_bitrate(); 0134 QString audio_layer(); 0135 QString audio_bitrate(); 0136 QString audio_sampfreq(); 0137 0138 QString duration() 0139 { 0140 return SecsToHMS( mpeg_info->playing_time ); 0141 }; 0142 int version() 0143 { 0144 return mpeg_info->version; 0145 }; 0146 unsigned long muxrate() 0147 { 0148 return mpeg_info->muxrate; 0149 }; 0150 QString video_format( ); 0151 QString video_chroma( ); 0152 QString audio_mode( ); 0153 QString audio_copyright( ); 0154 QString mpegTypeS( bool audio = false ); 0155 int mpegType(); 0156 0157 void PrintInfo(); 0158 0159 Mpeginfo* mpeg_info; 0160 0161 protected: 0162 0163 QString audio_type2str( unsigned int , unsigned int, unsigned int ); 0164 QString SecsToHMS( double ); 0165 0166 QList<VcdTrack*>* m_parent; 0167 0168 // PBC 0169 QList<VcdTrack*> m_revreflist; // List of Tracks which points to us 0170 QMap<PbcTracks, VcdTrack*> m_pbctrackmap; // Pbc Tracks (Previous, Next, ...) 0171 QMap<PbcTracks, PbcTypes> m_pbcnontrackmap; // Pbc NON Track types (Previous, Next, ...) 0172 QMap<PbcTracks, bool> m_pbcusrdefmap; // Pbc is userdefined or defaults (Previous, Next, ...) 0173 QMap<int, VcdTrack*> m_definedkeysmap; 0174 0175 bool m_pbcnumkeys; 0176 bool m_pbcnumkeysuserdefined; 0177 0178 int m_pbcplaytime; 0179 int m_pbcwaittime; 0180 /********************************************************************************/ 0181 0182 bool m_reactivity; 0183 int m_filetype; 0184 QFile m_file; 0185 QString m_title; 0186 }; 0187 } 0188 0189 #endif