mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-02 06:06:10 -04:00
added for plugins own dir
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@1850 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
97d8640f3a
commit
87344de7d4
809 changed files with 790 additions and 722 deletions
433
plugins/smplayer_plugin/core.h
Normal file
433
plugins/smplayer_plugin/core.h
Normal file
|
@ -0,0 +1,433 @@
|
|||
/* smplayer, GUI front-end for mplayer.
|
||||
Copyright (C) 2006-2008 Ricardo Villalba <rvm@escomposlinux.org>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 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 General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef _CORE_H_
|
||||
#define _CORE_H_
|
||||
|
||||
#include <QObject>
|
||||
#include <QProcess> // For QProcess::ProcessError
|
||||
#include "mediadata.h"
|
||||
#include "mediasettings.h"
|
||||
#include "mplayerprocess.h"
|
||||
#include "config.h"
|
||||
|
||||
#define NEW_SETTINGS_MANAGEMENT 1
|
||||
|
||||
#ifndef NO_USE_INI_FILES
|
||||
#if NEW_SETTINGS_MANAGEMENT
|
||||
class FileSettingsBase;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
class MplayerProcess;
|
||||
class MplayerWindow;
|
||||
class QSettings;
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
class WinScreenSaver;
|
||||
#endif
|
||||
|
||||
class Core : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum State { Stopped = 0, Playing = 1, Paused = 2 };
|
||||
|
||||
Core( MplayerWindow *mpw, QWidget* parent = 0 );
|
||||
~Core();
|
||||
|
||||
MediaData mdat;
|
||||
MediaSettings mset;
|
||||
|
||||
//! Return the current state
|
||||
State state() { return _state; };
|
||||
|
||||
//! Return a string with the name of the current state,
|
||||
//! so it can be printed on debugging messages.
|
||||
QString stateToString();
|
||||
|
||||
protected:
|
||||
//! Change the current state (Stopped, Playing or Paused)
|
||||
//! And sends the stateChanged() signal.
|
||||
void setState(State s);
|
||||
|
||||
public slots:
|
||||
//! Generic open, with autodetection of type
|
||||
void open(QString file, int seek=-1);
|
||||
void openFile(QString filename, int seek=-1);
|
||||
void openStream(QString name);
|
||||
/*
|
||||
void openDVD( bool from_folder, QString directory = "");
|
||||
void openDVD(); // Plays title 1
|
||||
void openDVD(int title = 1);
|
||||
*/
|
||||
void openDVD(QString dvd_url);
|
||||
void openVCD(int title = -1);
|
||||
void openAudioCD(int title = -1);
|
||||
|
||||
void loadSub(const QString & sub);
|
||||
void unloadSub();
|
||||
|
||||
//! Forces to use the specified subtitle file. It's not loaded immediately but stored
|
||||
//! and will be used for the next video. After that the variable is cleared.
|
||||
void setInitialSubtitle(const QString & subtitle_file) { initial_subtitle = subtitle_file; };
|
||||
|
||||
void loadAudioFile(const QString & audiofile);
|
||||
void unloadAudioFile();
|
||||
|
||||
void stop();
|
||||
void play();
|
||||
void play_or_pause();
|
||||
void pause_and_frame_step();
|
||||
void pause();
|
||||
void frameStep();
|
||||
void screenshot();
|
||||
|
||||
//! Public restart, for the GUI.
|
||||
void restart();
|
||||
|
||||
//! Reopens the file (no restart)
|
||||
void reload();
|
||||
|
||||
#ifdef SEEKBAR_RESOLUTION
|
||||
void goToPosition( int value );
|
||||
#else
|
||||
void goToPos( int perc );
|
||||
#endif
|
||||
void goToSec( double sec );
|
||||
|
||||
void toggleRepeat();
|
||||
void toggleRepeat(bool b);
|
||||
|
||||
void toggleFlip();
|
||||
void toggleFlip(bool b);
|
||||
|
||||
void toggleMirror();
|
||||
void toggleMirror(bool b);
|
||||
|
||||
// Audio filters
|
||||
void toggleKaraoke();
|
||||
void toggleKaraoke(bool b);
|
||||
void toggleExtrastereo();
|
||||
void toggleExtrastereo(bool b);
|
||||
void toggleVolnorm();
|
||||
void toggleVolnorm(bool b);
|
||||
|
||||
void setAudioChannels(int channels);
|
||||
void setStereoMode(int mode);
|
||||
|
||||
// Video filters
|
||||
void toggleAutophase();
|
||||
void toggleAutophase(bool b);
|
||||
void toggleDeblock();
|
||||
void toggleDeblock(bool b);
|
||||
void toggleDering();
|
||||
void toggleDering(bool b);
|
||||
void toggleNoise();
|
||||
void toggleNoise(bool b);
|
||||
void togglePostprocessing();
|
||||
void togglePostprocessing(bool b);
|
||||
void changeDenoise(int);
|
||||
#if NEW_ASPECT_CODE
|
||||
void changeLetterbox(bool);
|
||||
#endif
|
||||
void changeUpscale(bool);
|
||||
|
||||
void seek(int secs);
|
||||
void sforward(); // + 10 seconds
|
||||
void srewind(); // - 10 seconds
|
||||
void forward(); // + 1 minute
|
||||
void rewind(); // -1 minute
|
||||
void fastforward(); // + 10 minutes
|
||||
void fastrewind(); // - 10 minutes
|
||||
void forward(int secs);
|
||||
void rewind(int secs);
|
||||
void wheelUp();
|
||||
void wheelDown();
|
||||
|
||||
void setSpeed( double value );
|
||||
void incSpeed10(); //!< Inc speed 10%
|
||||
void decSpeed10(); //!< Dec speed 10%
|
||||
void incSpeed4(); //!< Inc speed 4%
|
||||
void decSpeed4(); //!< Dec speed 4%
|
||||
void incSpeed1(); //!< Inc speed 1%
|
||||
void decSpeed1(); //!< Dec speed 1%
|
||||
void doubleSpeed();
|
||||
void halveSpeed();
|
||||
void normalSpeed();
|
||||
|
||||
void setVolume(int volume, bool force = false);
|
||||
void switchMute();
|
||||
void mute(bool b);
|
||||
void incVolume();
|
||||
void decVolume();
|
||||
|
||||
void setBrightness(int value);
|
||||
void setContrast(int value);
|
||||
void setGamma(int value);
|
||||
void setHue(int value);
|
||||
void setSaturation(int value);
|
||||
|
||||
void incBrightness();
|
||||
void decBrightness();
|
||||
void incContrast();
|
||||
void decContrast();
|
||||
void incGamma();
|
||||
void decGamma();
|
||||
void incHue();
|
||||
void decHue();
|
||||
void incSaturation();
|
||||
void decSaturation();
|
||||
|
||||
void incSubDelay();
|
||||
void decSubDelay();
|
||||
|
||||
void incAudioDelay();
|
||||
void decAudioDelay();
|
||||
|
||||
void incSubPos();
|
||||
void decSubPos();
|
||||
|
||||
void changeSubScale(double value);
|
||||
void incSubScale();
|
||||
void decSubScale();
|
||||
|
||||
//! Select next line in subtitle file
|
||||
void incSubStep();
|
||||
//! Select previous line in subtitle file
|
||||
void decSubStep();
|
||||
|
||||
//! Audio equalizer
|
||||
void setAudioEqualizer(AudioEqualizerList values, bool restart = false);
|
||||
void setAudioAudioEqualizerRestart(AudioEqualizerList values) { setAudioEqualizer(values, true); };
|
||||
void updateAudioEqualizer();
|
||||
|
||||
void setAudioEq0(int value);
|
||||
void setAudioEq1(int value);
|
||||
void setAudioEq2(int value);
|
||||
void setAudioEq3(int value);
|
||||
void setAudioEq4(int value);
|
||||
void setAudioEq5(int value);
|
||||
void setAudioEq6(int value);
|
||||
void setAudioEq7(int value);
|
||||
void setAudioEq8(int value);
|
||||
void setAudioEq9(int value);
|
||||
|
||||
void changeDeinterlace(int);
|
||||
void changeSubtitle(int);
|
||||
void nextSubtitle();
|
||||
void changeAudio(int ID, bool allow_restart = true);
|
||||
void nextAudio();
|
||||
void changeVideo(int ID, bool allow_restart = true);
|
||||
void nextVideo();
|
||||
void changeTitle(int);
|
||||
void changeChapter(int);
|
||||
void prevChapter();
|
||||
void nextChapter();
|
||||
void changeAngle(int);
|
||||
void changeAspectRatio(int);
|
||||
#if NEW_ASPECT_CODE
|
||||
void nextAspectRatio();
|
||||
#endif
|
||||
void changeOSD(int);
|
||||
void nextOSD();
|
||||
|
||||
void changeSize(int); // Size of the window
|
||||
void toggleDoubleSize();
|
||||
void changePanscan(double); // Zoom on mplayerwindow
|
||||
|
||||
void changeRotate(int r);
|
||||
|
||||
#if USE_ADAPTER
|
||||
void changeAdapter(int n);
|
||||
#endif
|
||||
|
||||
void incPanscan();
|
||||
void decPanscan();
|
||||
void resetPanscan();
|
||||
void autoPanscan();
|
||||
void autoPanscanFromLetterbox(double video_aspect);
|
||||
void autoPanscanFor169();
|
||||
void autoPanscanFor235();
|
||||
|
||||
void changeUseAss(bool);
|
||||
void toggleClosedCaption(bool);
|
||||
void toggleForcedSubsOnly(bool);
|
||||
|
||||
void visualizeMotionVectors(bool);
|
||||
|
||||
#if DVDNAV_SUPPORT
|
||||
// dvdnav buttons
|
||||
void dvdnavUp();
|
||||
void dvdnavDown();
|
||||
void dvdnavLeft();
|
||||
void dvdnavRight();
|
||||
void dvdnavMenu();
|
||||
void dvdnavSelect();
|
||||
void dvdnavPrev();
|
||||
void dvdnavMouse();
|
||||
#endif
|
||||
|
||||
// Pass a command to mplayer by stdin:
|
||||
void tellmp(const QString & command);
|
||||
|
||||
public:
|
||||
//! Returns the number of the first chapter in
|
||||
//! files. In some versions of mplayer is 0, in others 1
|
||||
static int firstChapter();
|
||||
#if !GENERIC_CHAPTER_SUPPORT
|
||||
static int dvdFirstChapter();
|
||||
#endif
|
||||
|
||||
#ifndef NO_USE_INI_FILES
|
||||
void changeFileSettingsMethod(QString method);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
//! Returns the prefix to keep pausing on slave commands
|
||||
QString pausing_prefix();
|
||||
|
||||
protected slots:
|
||||
void changeCurrentSec(double sec);
|
||||
void changePause();
|
||||
void gotWindowResolution( int w, int h );
|
||||
void gotNoVideo();
|
||||
void gotVO(QString);
|
||||
void gotAO(QString);
|
||||
void gotStartingTime(double);
|
||||
|
||||
void finishRestart();
|
||||
void processFinished();
|
||||
void fileReachedEnd();
|
||||
|
||||
void displayMessage(QString text);
|
||||
void displayScreenshotName(QString filename);
|
||||
void displayUpdatingFontCache();
|
||||
|
||||
void streamTitleAndUrlChanged(QString,QString);
|
||||
|
||||
void watchState(Core::State state);
|
||||
|
||||
//! Called when a video has just started to play.
|
||||
//! This function checks if the codec of video is ffh264 and if
|
||||
//! the resolution is HD
|
||||
void checkIfVideoIsHD();
|
||||
|
||||
#if DELAYED_AUDIO_SETUP_ON_STARTUP
|
||||
void initAudioTrack();
|
||||
#endif
|
||||
#if NOTIFY_AUDIO_CHANGES
|
||||
void initAudioTrack(const Tracks &);
|
||||
#endif
|
||||
#if NOTIFY_SUB_CHANGES
|
||||
void initSubtitleTrack(const SubTracks &);
|
||||
void setSubtitleTrackAgain(const SubTracks &);
|
||||
#endif
|
||||
|
||||
protected:
|
||||
void playNewFile(QString file, int seek=-1);
|
||||
void restartPlay();
|
||||
void initPlaying(int seek=-1);
|
||||
void newMediaPlaying();
|
||||
|
||||
void startMplayer(QString file, double seek = -1 );
|
||||
void stopMplayer();
|
||||
|
||||
#ifndef NO_USE_INI_FILES
|
||||
#if !NEW_SETTINGS_MANAGEMENT
|
||||
bool checkHaveSettingsSaved(QString filename);
|
||||
void loadMediaInfo(QString filename);
|
||||
#endif
|
||||
void saveMediaInfo();
|
||||
#endif
|
||||
|
||||
void initializeMenus();
|
||||
void updateWidgets();
|
||||
|
||||
//! Returns true if changing the subscale requires to restart mplayer
|
||||
bool subscale_need_restart();
|
||||
|
||||
signals:
|
||||
void aboutToStartPlaying(); // Signal emited just before to start mplayer
|
||||
void mediaLoaded();
|
||||
void mediaInfoChanged();
|
||||
void stateChanged(Core::State state);
|
||||
void mediaStartPlay();
|
||||
void mediaFinished(); // Media has arrived to the end.
|
||||
void mediaStoppedByUser();
|
||||
void showMessage(QString text);
|
||||
void menusNeedInitialize();
|
||||
void widgetsNeedUpdate();
|
||||
void videoEqualizerNeedsUpdate();
|
||||
void audioEqualizerNeedsUpdate();
|
||||
void showTime(double sec);
|
||||
#ifdef SEEKBAR_RESOLUTION
|
||||
void positionChanged(int); // To connect a slider
|
||||
#else
|
||||
void posChanged(int); // To connect a slider
|
||||
#endif
|
||||
void showFrame(int frame);
|
||||
void needResize(int w, int h);
|
||||
void noVideo();
|
||||
void volumeChanged(int);
|
||||
#if NOTIFY_SUB_CHANGES
|
||||
void audioTracksChanged();
|
||||
#endif
|
||||
|
||||
//! MPlayer started but finished with exit code != 0
|
||||
void mplayerFinishedWithError(int exitCode);
|
||||
|
||||
//! MPlayer didn't started or crashed
|
||||
void mplayerFailed(QProcess::ProcessError error);
|
||||
|
||||
// Resend signal from mplayerprocess:
|
||||
void failedToParseMplayerVersion(QString line_with_mplayer_version);
|
||||
|
||||
//! A new line from the mplayer output is available
|
||||
void logLineAvailable(QString);
|
||||
|
||||
protected:
|
||||
MplayerProcess * proc;
|
||||
MplayerWindow * mplayerwindow;
|
||||
|
||||
#ifndef NO_USE_INI_FILES
|
||||
#if NEW_SETTINGS_MANAGEMENT
|
||||
FileSettingsBase * file_settings;
|
||||
#else
|
||||
QSettings * file_settings;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
WinScreenSaver * win_screensaver;
|
||||
#endif
|
||||
|
||||
private:
|
||||
// Some variables to proper restart
|
||||
bool we_are_restarting;
|
||||
|
||||
bool just_loaded_external_subs;
|
||||
bool just_unloaded_external_subs;
|
||||
State _state;
|
||||
bool change_volume_after_unpause;
|
||||
|
||||
QString initial_subtitle;
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue