亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? hxplayercontrol.cpp

?? Amarok是一款在LINUX或其他類UNIX操作系統(tǒng)中運(yùn)行的音頻播放器軟件。 經(jīng)過(guò)兩年開(kāi)發(fā)后
?? CPP
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/*************************************************************************** *   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.                                   * *                                                                         * ***************************************************************************//*************************************************************************** basically this implements a rudamentary rpc mechanism so the we can have each player in a separate process.  this is solely done to implement a  reliable crossfade (or more precicely, put the crossfade in the hands of  the alsa guys ***************************************************************************/#include <sys/time.h>#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>#include <iostream>#include <sys/mman.h>using namespace std;#include "hxplayercontrol.h"class HSPPlayerControlled : public HelixSimplePlayer{public:   HSPPlayerControlled(PlayerControl *pcntl, int index) : m_pcntl(pcntl), m_index(index) {}   virtual ~HSPPlayerControlled() {}   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 void onContacting(const char *host);   virtual void onBuffering(int percentage);private:   PlayerControl *m_pcntl;   int            m_index;};void HSPPlayerControlled::notifyUser(unsigned long code, const char *moreinfo, const char *moreinfourl){   m_pcntl->sendnotifyuser(code, moreinfo, moreinfourl);}void HSPPlayerControlled::interruptUser(unsigned long code, const char *moreinfo, const char *moreinfourl){   m_pcntl->sendinterruptuser(code, moreinfo, moreinfourl);}void HSPPlayerControlled::onContacting(const char *host){   m_pcntl->sendcontacting(host);}void HSPPlayerControlled::onBuffering(int percentage){   m_pcntl->sendbuffering(percentage);}PlayerControl::PlayerControl() : m_eq_enabled(false), m_preamp(0), m_err(0), iamparent(0), m_index(0), nNumPlayers(0),                                 m_inited(false), m_api( HelixSimplePlayer::OSS ), m_device(0), mimehead(0), mimelistlen(0),                                 m_numPlugins(0), m_pluginInfo(0){   memset(m_children, 0, sizeof(m_children));}PlayerControl::~PlayerControl(){   tearDown();   print2stderr("In PlayerControl::~PlayerControl(), m_index=%d\n", m_index);   delete m_device;   if (pmapped)      munmap(pmapped, sizeof(stateStuff) * 2);}// init functionsvoid PlayerControl::init(const char *corelibpath, const char *pluginslibpath, const char *codecspath, int numPlayers){   int err;   iamparent = 0;   nNumPlayers = numPlayers;   m_err = 0;   print2stderr("In PlayerControl::init(), m_api=%d, m_device=%s\n", m_api, m_device ? m_device : "DEVICE NOT SET");   if (numPlayers > 2) // it's impossible   {      m_err = -1;      return;   }   memset(&m_children, 0, numPlayers * sizeof(struct playerChildren));   m_inited = false;   // create a shared memory region for state like stuff   if ( MAP_FAILED == (pmapped = (stateStuff *) mmap( (void *) statestuff,                                                       sizeof(stateStuff) * 2,                                                       PROT_READ | PROT_WRITE,#ifdef __linux__                                                      MAP_SHARED | MAP_ANONYMOUS,#else                                                      MAP_SHARED | MAP_ANON,#endif                                                      -1, 0)) )      pmapped = 0;         // we do this the old fashioned way, so that we don't have to include an executable with our plugin...   for (int i = 0; i < numPlayers; i++)   {      if (pmapped)      {         m_children[i].current_time = &(pmapped[i].current_time);         m_children[i].duration = &(pmapped[i].duration);         m_children[i].md = &(pmapped[i].md);         m_children[i].m_current = &(pmapped[i].m_current);         m_children[i].m_consumed = &(pmapped[i].m_consumed);         //m_children[i].q = pmapped[i].q;         //for (int j=0; j<NUM_SCOPEBUFS; j++)         //{         //   m_children[i].q[j].allocd = false;         //   m_children[i].q[j].buf = pmapped[i].b[j];         //}      }      err = pipe(m_children[i].m_pipeA);      err |= pipe(m_children[i].m_pipeB);      if ( !err && (iamparent = fork()) )      {         // parent         print2stderr("%%%%%% parent initializes player %d\n", i);         // parent's m_pid remains 0         m_children[i].m_pid = iamparent;         close(m_children[i].m_pipeA[1]); // parent uses A for reading         close(m_children[i].m_pipeB[0]); // and B for writing      }      else if (!err)      {         // child         cerr << "%%%%%% child initializes as player " << i << endl;;         m_index = i; // child's index is saved         close(m_children[i].m_pipeA[0]); // child uses A for writing         close(m_children[i].m_pipeB[1]); // and B for reading         break;      }   }   if (!iamparent) // children stay here, parents return   {      int rfd = m_children[m_index].m_pipeB[0];      int wfd = m_children[m_index].m_pipeA[1];      int n;      struct timeval timeout;      HSPPlayerControlled *player = 0;      bool playing = false;      player = new HSPPlayerControlled(this, m_index);      timeout.tv_sec = 0;      timeout.tv_usec = 10000;      fd_set rdset, wrset;      FD_ZERO(&rdset);      FD_ZERO(&wrset);      FD_SET(rfd, &rdset);      FD_SET(wfd, &wrset); // really should check to see if we can write, but not gonna      while ( 1 )      {         FD_SET(rfd, &rdset);         n = select(rfd + 1, &rdset, 0, 0, &timeout);         if ( FD_ISSET(rfd, &rdset) )         {            msgid m;            unsigned char buf[65536];            int sz = 0;            if (getmessage(rfd, m, buf, sz) && player)            {               switch (m)               {                  case INIT:                     cerr << "INIT\n";                     if (!sz)                     {                        player->setOutputSink(m_api);                        if (m_device)                           player->setDevice(m_device);                        player->init(corelibpath, pluginslibpath, codecspath, 1);                        m_inited = true;                        if (!m_index) // only player 0 need send the mime and plugin stuff                        {                           sendplugins(wfd, player);                           sendmimetypes(wfd, player);                        }                        cerr << "%%%%%% player " << m_index << " child sends ready\n";                        sendready(wfd);                     }                     else                        cerr << "CHILD " << m_index << " sz not right in INIT, sz=" << sz << endl;                     break;                  case SETURL:                  {                     bool islocal = (bool) buf[0];                     int len = strlen((const char *)&buf[1]); // not that this would prevent a crash...                     if (m_inited)                     {                        cerr << "CHILD " << m_index << " setURL for " << (const char *)&buf[1] <<                            ",islocal=" << islocal << ",len=" << len << endl;                        if (sz == len + 2)                            player->setURL((const char *)&buf[1], 0, islocal); // remember, we sent the null...                        else                           cerr << "CHILD " << m_index << " sz not right in SETURL, sz=" << sz << endl;                     }                  }                  break;                  case START:                  {                     bool fadein = (bool) buf[0];                     unsigned long fadetime;                     if (m_inited)                     {                        if (pmapped)                           *m_children[m_index].current_time = 0;                        if (sz == sizeof(unsigned long) + 1)                        {                           cerr << "CHILD " << m_index << " gets START\n";                           memcpy((void *)&fadetime, (void *)&buf[1], sizeof(unsigned long));                           playing = true;                           player->start(0, fadein, fadetime);                        }                        else                           cerr << "CHILD " << m_index << " sz not right in START, sz=" << sz << endl;                     }                  }                  break;                  case STOP:                     if (m_inited)                        if (!sz)                        {                           player->stop();                           playing = false;                           cerr << "CHILD " << m_index << " gets STOP\n";                        }                        else                           cerr << "CHILD " << m_index << " sz not right in STOP, sz=" << sz << endl;                     break;                  case PAUSE:                     if (m_inited)                        if (!sz)                           player->pause();                        else                           cerr << "CHILD " << m_index << " sz not right in PAUSE, sz=" << sz << endl;                     break;                  case RESUME:                     if (m_inited)                        if (!sz)                           player->resume();                        else                           cerr << "CHILD " << m_index << " sz not right in RESUME, sz=" << sz << endl;                     break;                  case SEEK:                     if (m_inited)                        if (sz == sizeof(unsigned long))                        {                           unsigned long pos;                           memcpy( (void *) &pos, (void *) buf, sizeof(unsigned long) );                           if (pos < player->duration(0))                              player->seek(pos, 0);                        }                        else                           cerr << "CHILD " << m_index << " sz not right in SEEK, sz=" << sz << endl;                     break;                  case SETVOLUME:                  {                     if (m_inited)                        if (sz == sizeof(unsigned long))                        {                           memcpy( (void *) &m_volume, (void *) buf, sizeof(unsigned long));                           cerr << "CHILD: received setvolume request " << m_volume <<endl;;                           player->setVolume(m_volume);                        }                        else                           cerr << "CHILD " << m_index << " sz not right in SETVOLUME, sz=" << sz << endl;                  }                  break;                  case OUTPUTSINK:                     if (m_inited)                        if (sz == 1)                        {                           m_api = (HelixSimplePlayer::AUDIOAPI) buf[0];                           cerr << "CHILD: received OUTPUTSINK: " << m_api <<endl;;                        }                        else                           cerr << "CHILD " << m_index << " sz not right in OUTPUTSINK, sz=" << sz << endl;                     break;                  case DEVICE:                  {                     char* dev = strdup((const char*) buf);                     if (m_inited)                        if ((unsigned)sz == strlen(dev) + 1)                        {                           cerr << "CHILD " << m_index << " gets device " << dev << endl;                           setDevice( dev );                        }                        else                           cerr << "CHILD " << m_index << " sz not right in DEVICE, sz=" << sz << endl;                     free(dev);                  }                  break;                  case SETFADE:                  {                     if (m_inited)                        if (sz == sizeof(unsigned long) + 1)                        {                           bool fadeout;                           unsigned long fadelength;                           fadeout = (bool) buf[0];                           memcpy((void *) &fadelength, (void *) &buf[1], sizeof(unsigned long));                           player->setFadeout(fadeout, fadelength, 0);                        }                        else                           cerr << "CHILD " << m_index << " sz not right in SETFADE, sz=" << sz << endl;                  }                  break;                  case ENABLEEQ:                  {                     if (m_inited)                        if (sz == 1)                        {                           m_eq_enabled = (bool) buf[0];                           player->enableEQ(m_eq_enabled);                           cerr << "CHILD " << m_index << " enables EQ\n";                        }                        else                           cerr << "CHILD " << m_index << " sz not right in ENABLEEQ, sz=" << sz << endl;                  }                  break;                  case UPDATEEQGAINS:                  {                     int i, n, k;                     cerr << "UPDATEGAINS\n";                     if (m_inited)                     {                        if (sz >= 2)                        {                           memcpy( (void *) &m_preamp, (void *) buf, sizeof(m_preamp) );                           memcpy( (void *) &n, (void *) &buf[ sizeof(m_preamp) ], sizeof(int) );                           player->m_preamp = m_preamp;                        }                        else                           cerr << "CHILD " << m_index << " sz not right in UPDATEEQGAINS, sz=" << sz << endl;                        if ((unsigned)sz == sizeof(m_preamp) + sizeof(int) + n * sizeof(int))                        {                           if (n > 0)                           {                              m_equalizerGains.resize(n);                              cerr << "CHILD " << m_index << " receives " << n << " equalizer gains\n";                              for (i=0; i<n; i++)                              {                                 memcpy( (void *) &k, (void *) &buf[ sizeof(m_preamp) + (i+1)*sizeof(int) ], sizeof(int) );                                 m_equalizerGains[i] = k;                              }                              player->m_equalizerGains = m_equalizerGains;                              if (!m_eq_enabled)                                 player->enableEQ(true);                              player->updateEQgains();                              player->enableEQ(m_eq_enabled);                           }                        }                        else                           cerr << "CHILD " << m_index << " sz not right in UPDATEEQGAINS, sz=" << sz << endl;                     }                  }                  break;                  case SCOPECLEAR:                     if (m_inited)                     {                        player->clearScopeQ(0);                        if (pmapped)                           *m_children[m_index].m_consumed = *m_children[m_index].m_current = 0;                     }                     break;                  case TEARDOWN:                     if (!sz)                     {                        cerr << "CHILD: " << m_index << " received shutdown request\n";                        player->stop(0);                        delete player;                        raise(15);                        exit(0);                     }                     else                        cerr << "CHILD " << m_index << " sz not right in TEARDOWN, sz=" << sz << endl;                     break;                  default: // send an error to the parent                        cerr << "CHILD " << m_index << " received unhandled message, sz=" << sz << endl;                     break;               }            }            else            {               cerr << "CHILD " << m_index << " gets EOD\n";               break;            }         }         if (m_inited)         {            player->dispatch();            if (playing && player->done(0))            {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利一区二区三区视频在线 | av电影一区二区| 日韩经典中文字幕一区| 亚洲天堂成人网| 国产视频在线观看一区二区三区 | 婷婷激情综合网| 亚洲成人av资源| 亚洲一区二区av在线| 一区二区不卡在线播放| 亚洲免费高清视频在线| 亚洲女同一区二区| 男人的j进女人的j一区| 日韩激情一二三区| 成人综合在线网站| 99视频精品免费视频| 欧美精品三级日韩久久| 欧美三级电影网| 欧美伦理电影网| 欧美激情一区二区三区全黄| 国产精品无人区| 亚洲乱码精品一二三四区日韩在线| 亚洲免费观看高清完整版在线观看 | 亚洲人123区| 日韩电影一二三区| 久久精品国产在热久久| 91精品国产欧美一区二区18| 欧洲日韩一区二区三区| 欧美人牲a欧美精品| 欧美电影免费观看高清完整版 | 亚洲成人一区在线| 国产69精品久久久久毛片| 不卡的av在线播放| 欧美亚洲动漫精品| 日韩精品中文字幕一区 | 欧美日韩在线不卡| 国产精品天干天干在线综合| 青青草国产精品亚洲专区无| 91农村精品一区二区在线| 在线视频国内自拍亚洲视频| 久久久另类综合| 亚洲另类春色国产| 成人免费毛片片v| 亚洲精品在线免费播放| 国产精品久久久久精k8| 午夜精品福利一区二区三区av | 亚洲欧洲色图综合| 天天色综合天天| 91免费版在线看| 国产婷婷一区二区| 国产中文字幕精品| 色婷婷精品大视频在线蜜桃视频 | 久久精品国产色蜜蜜麻豆| 欧美三级乱人伦电影| 亚洲天堂a在线| 成人精品视频一区二区三区| 久久久久九九视频| 久久不见久久见免费视频1| 欧美日韩久久一区二区| 一区二区三区日韩欧美精品| 99re这里只有精品视频首页| 日韩欧美亚洲另类制服综合在线| 亚洲成人激情社区| 欧美日韩一区二区三区四区| 亚洲免费在线视频一区 二区| 成人av综合在线| 国产精品丝袜91| 成人午夜激情片| 中文成人av在线| 成人免费视频国产在线观看| 日本一区二区成人在线| 成人在线综合网| 中文字幕精品一区| 成人免费观看视频| 国产精品护士白丝一区av| 成人av网站在线观看| 国产精品久久久久久久岛一牛影视| 国产成人精品午夜视频免费| 日本一区二区在线不卡| 久久电影国产免费久久电影| 日韩精品一区二区三区蜜臀| 黄色资源网久久资源365| 欧美成人国产一区二区| 午夜精品aaa| 91精品欧美福利在线观看| 亚洲免费资源在线播放| 欧美性猛片aaaaaaa做受| 亚洲大型综合色站| 欧美一级高清大全免费观看| 亚洲一级二级三级在线免费观看| 欧美日韩美少妇| 日韩av一区二区三区| 精品国产1区二区| 国产成都精品91一区二区三| 中文字幕在线观看一区| 在线观看精品一区| 日日骚欧美日韩| 欧美精品一区二区三区在线播放| 国产宾馆实践打屁股91| 亚洲日本免费电影| 欧美另类久久久品| 国产综合久久久久久鬼色| 国产精品蜜臀av| 在线观看一区二区精品视频| 奇米一区二区三区| 日本一区二区三级电影在线观看 | 亚洲国产欧美另类丝袜| 色婷婷av一区二区三区gif| 偷拍一区二区三区四区| 欧美精品一区二区三区视频| 97久久精品人人爽人人爽蜜臀| 亚洲国产一区二区三区青草影视| 日韩免费一区二区三区在线播放| 懂色av一区二区在线播放| 一区二区三区在线视频播放| 欧美一级二级在线观看| av男人天堂一区| 日本欧美大码aⅴ在线播放| 久久久国际精品| 在线观看日产精品| 国产一区在线视频| 中文一区在线播放| 欧美三级视频在线观看| 国产精品1区2区3区在线观看| 久久精品一区二区三区av| 在线精品视频免费播放| 国产精品资源站在线| 一级特黄大欧美久久久| 久久综合成人精品亚洲另类欧美| 国产精品一区二区三区乱码| 亚洲一区二区影院| 久久人人爽人人爽| 欧美日韩国产小视频| 成人午夜激情片| 蜜臀国产一区二区三区在线播放| 精品国产99国产精品| 在线欧美小视频| 国产高清精品网站| 奇米影视7777精品一区二区| 中文字幕在线不卡| 久久综合九色综合97婷婷| 欧美无人高清视频在线观看| 粉嫩一区二区三区性色av| 日韩精品电影在线| 一区二区三区四区在线免费观看| 欧美精品一区二区精品网| 在线观看亚洲一区| 不卡在线视频中文字幕| 玖玖九九国产精品| 91丝袜呻吟高潮美腿白嫩在线观看| 极品少妇xxxx精品少妇偷拍| 中文字幕第一区| 欧美tickle裸体挠脚心vk| 欧美色区777第一页| 99精品久久久久久| 成人性视频网站| 国产原创一区二区| 久久aⅴ国产欧美74aaa| 爽好多水快深点欧美视频| 一区二区三区鲁丝不卡| 国产精品成人免费在线| 国产欧美日韩在线| 精品国产乱码久久久久久闺蜜| 欧美日韩国产在线观看| 91福利小视频| 国产一区二区三区免费播放| 奇米777欧美一区二区| 亚洲 欧美综合在线网络| 亚洲黄色免费电影| 综合欧美一区二区三区| 日本一区二区动态图| 久久久久国产成人精品亚洲午夜| 精品成人佐山爱一区二区| 欧美一区三区四区| 欧美肥妇毛茸茸| 欧美日韩不卡一区二区| 欧美日韩中文精品| 欧美日韩中字一区| 欧美嫩在线观看| 欧美精品在线观看一区二区| 欧美日韩一区二区在线观看视频| 欧美亚洲国产一区在线观看网站| 91麻豆国产福利精品| 一本大道综合伊人精品热热| 色综合久久久久综合体| 在线观看成人小视频| 在线观看精品一区| 欧美日韩国产综合久久 | 麻豆国产91在线播放| 91精品国产日韩91久久久久久| 欧美日韩mp4| 日韩网站在线看片你懂的| 精品理论电影在线| 久久精品视频一区| 中文幕一区二区三区久久蜜桃| 中文字幕亚洲精品在线观看| 亚洲婷婷综合久久一本伊一区| 一区二区三区鲁丝不卡| 亚洲五月六月丁香激情| 欧美a一区二区| 国产一区二区日韩精品|