File indexing completed on 2024-05-12 04:52:08
0001 /* 0002 * vlcmediawidget.h 0003 * 0004 * Copyright (C) 2010-2012 Christoph Pfister <christophpfister@gmail.com> 0005 * 0006 * This program is free software; you can redistribute it and/or modify 0007 * it under the terms of the GNU General Public License as published by 0008 * the Free Software Foundation; either version 2 of the License, or 0009 * (at your option) any later version. 0010 * 0011 * This program is distributed in the hope that it will be useful, 0012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0014 * GNU General Public License for more details. 0015 * 0016 * You should have received a copy of the GNU General Public License along 0017 * with this program; if not, write to the Free Software Foundation, Inc., 0018 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 0019 */ 0020 0021 #ifndef VLCMEDIAWIDGET_H 0022 #define VLCMEDIAWIDGET_H 0023 0024 #include <vlc/vlc.h> 0025 0026 #include "../abstractmediawidget.h" 0027 0028 class QTimer; 0029 0030 class VlcMediaWidget : public AbstractMediaWidget 0031 { 0032 Q_OBJECT 0033 private: 0034 explicit VlcMediaWidget(QWidget *parent); 0035 bool init(); 0036 0037 private slots: 0038 void hideMouse(); 0039 0040 public: 0041 ~VlcMediaWidget(); 0042 0043 static VlcMediaWidget *createVlcMediaWidget(QWidget *parent); // returns NULL if init fails 0044 0045 // zero-based numbering is used everywhere (e.g. first audio channel = 0) 0046 0047 QStringList getAudioDevices() override; 0048 void setAudioDevice(QString device) override; 0049 void setMuted(bool muted) override; 0050 void setVolume(int volume) override; // [0 - 200] 0051 void setAspectRatio(MediaWidget::AspectRatio aspectRatio) override; 0052 void resizeToVideo(float resizeFactor) override; 0053 void setDeinterlacing(MediaWidget::DeinterlaceMode deinterlacing) override; 0054 void play(const MediaSource &source) override; 0055 void stop() override; 0056 void setPaused(bool paused) override; 0057 void seek(int time) override; // milliseconds 0058 void setCurrentAudioStream(int currentAudioStream) override; 0059 void setCurrentSubtitle(int currentSubtitle) override; 0060 void setExternalSubtitle(const QUrl &subtitleUrl) override; 0061 void setCurrentTitle(int currentTitle) override; 0062 void setCurrentChapter(int currentChapter) override; 0063 void setCurrentAngle(int currentAngle) override; 0064 bool jumpToPreviousChapter() override; 0065 bool jumpToNextChapter() override; 0066 void showDvdMenu() override; 0067 void dvdNavigate(int key) override; 0068 void playDirection(int direction); 0069 int makePlay(); 0070 0071 int updatePlaybackStatus() override; 0072 void updateCurrentTotalTime() override; 0073 void updateSeekable() override; 0074 void updateMetadata() override; 0075 void updateAudioStreams() override; 0076 void updateSubtitles() override; 0077 void updateTitles() override; 0078 void updateChapters() override; 0079 void updateAngles() override; 0080 void updateDvdMenu() override; 0081 void updateVideoSize() override; 0082 void unregisterEvents(); 0083 bool registerEvents(); 0084 0085 private: 0086 void mousePressEvent(QMouseEvent *event) override; 0087 void mouseMoveEvent(QMouseEvent *event) override; 0088 0089 void vlcEvent(const libvlc_event_t *event); 0090 0091 static void vlcEventHandler(const libvlc_event_t *event, void *instance); 0092 0093 QTimer *timer; 0094 libvlc_instance_t *vlcInstance; 0095 libvlc_media_t *vlcMedia; 0096 libvlc_media_player_t *vlcMediaPlayer; 0097 libvlc_event_manager_t *eventManager; 0098 bool isPaused; 0099 bool playingDvd; 0100 bool urlIsAudioCd; 0101 QMap<int, int> subtitleId; 0102 QByteArray typeOfDevice; 0103 int trackNumber, numTracks; 0104 QVector<libvlc_event_e> eventType; 0105 }; 0106 0107 #endif /* VLCMEDIAWIDGET_H */