hxplayercontrol.h

来自「Amarok是一款在LINUX或其他类UNIX操作系统中运行的音频播放器软件。 」· C头文件 代码 · 共 222 行

H
222
字号
/*************************************************************************** *   Copyright (C) 2006 Paul Cifarelli <paul@cifarelli.net>                * *                                                                         * *   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.                                   * *                                                                         * ***************************************************************************/#ifndef _HXSPLAY_INCLUDED_#define _HXSPLAY_INCLUDED_#include "helix-sp.h"class PlayerControl{public:   PlayerControl();   virtual ~PlayerControl();   int getError() const { return m_err; }   // init functions   void init(const char *corelibpath, const char *pluginslibpath, const char *codecspath, int numPlayers = 1);   void setOutputSink( HelixSimplePlayer::AUDIOAPI out );   void setDevice( const char *dev );   int  initDirectSS();   void tearDown();   // player functions   int  setURL(const char *url,                int playerIndex,               bool islocal = true);   bool done(int playerIndex);   void start(int playerIndex,               bool fadein = false,               unsigned long fadetime = 0);   void stop(int playerIndex = HelixSimplePlayer::ALL_PLAYERS);   void pause(int playerIndex);   void resume(int playerIndex);   void seek(unsigned long pos, int playerIndex);   unsigned long where(int playerIndex) const;   unsigned long duration(int playerIndex) const;   unsigned long getVolume();   void setVolume(unsigned long vol);   void dispatch();   void cleanUpStream(int playerIndex);   bool isPlaying(int playerIndex) const;   bool isLocal(int playerIndex) const;   int numPlayers() const { return nNumPlayers; }   // crossfade   void setFadeout(bool fadeout, unsigned long fadelength, int playerIndex);   // scope   void addScopeBuf(struct DelayQueue *item, int playerIndex);   DelayQueue *getScopeBuf(int playerIndex);   int getScopeCount(int playerIndex);   int peekScopeTime(unsigned long &t, int playerIndex);   void clearScopeQ(int playerIndex);   // equalizer   void enableEQ(bool enabled);   bool isEQenabled();   void updateEQgains();   // config stuff   int numPlugins() const;   int getPluginInfo(int index,                      const char *&description,                      const char *&copyright,                      const char *&moreinfourl) const;   const MimeList *getMimeList() const;   int getMimeListLen() const;   virtual void play_finished(int /*playerIndex*/) {}   // stream meta data   HelixSimplePlayer::metaData *getMetaData(int playerIndex);   // need to simulate these   virtual void notifyUser(unsigned long/*code*/, const char */*moreinfo*/, const char */*moreinfourl*/) {}   virtual void interruptUser(unsigned long/*code*/, const char */*moreinfo*/, const char */*moreinfourl*/) {}   virtual int print2stdout(const char */*fmt*/, ...) { return 0; }   virtual int print2stderr(const char */*fmt*/, ...) { return 0; }   virtual void onContacting(const char */*host*/) {}   virtual void onBuffering(int /*percentage*/) {}   // children send functions   bool sendnotifyuser(unsigned long code, const char *moreinfo, const char *moreinfourl);   bool sendinterruptuser(unsigned long code, const char *moreinfo, const char *moreinfourl);   bool sendcontacting(const char *host);   bool sendbuffering(int percentage);   protected:   bool                 m_eq_enabled;   int                  m_preamp;   vector<int>          m_equalizerGains;private:   int   m_err;   pid_t iamparent;   int   m_index;    int   nNumPlayers;   bool  m_inited;   // not yet initd when these are set   HelixSimplePlayer::AUDIOAPI m_api;   char                       *m_device;   static const int NUM_SCOPEBUFS = 50;   struct playerChildren   {      int m_pipeA[2];      int m_pipeB[2];      pid_t m_pid;      bool isplaying;      bool islocal;      bool isready;      bool isdead;      HelixSimplePlayer::metaData *md;      int                scopecount;      struct DelayQueue *scopebufhead;      struct DelayQueue *scopebuftail;      unsigned long *current_time;      unsigned long *duration;      DelayQueue *q;      int *m_current;      int *m_consumed;   }  m_children[2];   unsigned long m_volume;   // supported mime type list   MimeList            *mimehead;   int                  mimelistlen;   int m_numPlugins;   struct pluginInfo   {      char *description;       char *copyright;       char *moreinfourl;    } **m_pluginInfo;   // for sharing   struct stateStuff   {      unsigned long current_time;      unsigned long duration;      HelixSimplePlayer::metaData md;      //DelayQueue q[NUM_SCOPEBUFS];      //unsigned char b[NUM_SCOPEBUFS][65535];      int m_current;      int m_consumed;   } statestuff[2], *pmapped;   // msgs are a 1 byte code follows by a 4 byte sz.  sz does NOT include the 5 bytes of this hdr   enum msgid   {      READY,      INIT,      SETURL,      START,      STOP,      PAUSE,      RESUME,      SEEK,      DONE,      SETVOLUME,      VOLUME,      OUTPUTSINK,      DEVICE,      SETFADE,      ENABLEEQ,      UPDATEEQGAINS,      SCOPEBUF,      SCOPECLEAR,      METADATAREQ,      METADATA,      PLUGINS,      MIMETYPES,      CONTACTING,      BUFFERING,      NOTIFYUSER,      INTERRUPTUSER,      TEARDOWN,      ERRORCODE   };   // utility functions      bool sendsetoutputsink();   bool sendsetdevice();   bool sendinit();   bool sendupdateeqgains();   static bool getmessage(int fd, msgid &m, unsigned char *buf, int &sz);   static bool sendmessage(int fd, msgid m, unsigned char *buf, int sz);   static bool sendrequest(int fd, msgid m) { return (sendmessage(fd, m, 0, 0)); }   static bool sendready(int fd) { return (sendrequest(fd, READY)); }   static bool sendsetURL(int fd, const char *url, bool islocal);   static bool sendstart(int fd, bool fadin, unsigned long fadetime);   static bool sendstop(int fd) { return (sendrequest(fd, STOP)); }   static bool sendpause(int fd) { return (sendrequest(fd, PAUSE)); }   static bool sendresume(int fd) { return (sendrequest(fd, RESUME)); }   static bool senddone(int fd) { return (sendrequest(fd, DONE)); }   static bool sendsetvolume(int fd, unsigned long volume);   static bool sendvolume(int fd, unsigned long volume);   static bool sendsetfade(int fd, bool fadeout, unsigned long fadelength);   static bool sendteardown(int fd) { return (sendrequest(fd, TEARDOWN)); }   static bool sendscopeclear(int fd) { return (sendrequest(fd, SCOPECLEAR)); }   static bool sendplugins(int fd, HelixSimplePlayer *player);   static bool sendmimetypes(int fd, HelixSimplePlayer *player);   static bool sendscopebuf(int fd, DelayQueue *item);};#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?