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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hsphook.cpp

?? Amarok是一款在LINUX或其他類UNIX操作系統中運行的音頻播放器軟件。 經過兩年開發后
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/* ********** * * This software is released under the provisions of the GPL version 2. * see file "COPYING".  If that file is not available, the full statement * of the license can be found at * * http://www.fsf.org/licensing/licenses/gpl.txt * * Copyright (c) Paul Cifarelli 2005 * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. * PCM time-domain equalizer: *    (c) 2002 Felipe Rivera <liebremx at users sourceforge net> *    (c) 2004 Mark Kretschmann <markey@web.de> * * ********** */#include <math.h>#include <stdlib.h>#include "hxcomm.h"#include "hxcore.h"#include "hxprefs.h"#include "hxstrutl.h"#include "hxvsrc.h"#include "hxresult.h"#include "hxausvc.h"#include "helix-sp.h"#ifndef HELIX_SW_VOLUME_INTERFACE#include "gain.h"#endif#include "hsphook.h"#include "iir_cf.h"         // IIR filter coefficients#include "hspalsadevice.h"#define SCOPESIZE 512HSPPreMixAudioHook::HSPPreMixAudioHook(HelixSimplePlayer *player, int playerIndex, IHXAudioStream *pAudioStream,                                       bool fadein, unsigned long fadelength) :   m_Player(player), m_lRefCount(0), m_index(playerIndex), m_stream(pAudioStream), m_count(0),   m_gaintool(0), m_gaindb(0), m_fadein(fadein), m_fadeout(false), m_fadelength(fadelength){   AddRef();}HSPPreMixAudioHook::~HSPPreMixAudioHook(){   if (m_gaintool)      gainFree(m_gaintool);}STDMETHODIMPHSPPreMixAudioHook::QueryInterface(REFIID riid, void**ppvObj){    if(IsEqualIID(riid, IID_IUnknown))    {        AddRef();        *ppvObj = (IUnknown*)(IHXAudioHook *)this;        return HXR_OK;    }    else if(IsEqualIID(riid, IID_IHXAudioHook))    {        AddRef();        *ppvObj = (IHXAudioHook *)this;        return HXR_OK;    }    *ppvObj = NULL;    return HXR_NOINTERFACE;}STDMETHODIMP_(UINT32)HSPPreMixAudioHook::AddRef(){    return InterlockedIncrement(&m_lRefCount);}STDMETHODIMP_(UINT32)HSPPreMixAudioHook::Release(){    if (InterlockedDecrement(&m_lRefCount) > 0)    {        return m_lRefCount;    }    delete this;    return 0;}int HSPPreMixAudioHook::volumeize(unsigned char *data, unsigned char *outbuf, size_t len){   gainFeed(data, outbuf, len, m_gaintool);   return len;}void HSPPreMixAudioHook::setFadeout(bool fadeout){   m_fadeout = fadeout;   if (m_fadeout)   {      // the "time constant" (ms) is the time it takes to reach +/- 6db of the original      gainSetTimeConstant((float) m_fadelength / 8.0, m_gaintool);      gainSetSmoothdB(FADE_MIN_dB, m_gaintool);   }}STDMETHODIMP HSPPreMixAudioHook::OnBuffer(HXAudioData *pAudioInData, HXAudioData *pAudioOutData){   m_count++;#ifdef DEBUG_PURPOSES_ONLY   if (!(m_count % 100))   {      m_Player->print2stderr("PRE: time: %d  ", pAudioInData->ulAudioTime);      switch (pAudioInData->uAudioStreamType)      {         case INSTANTANEOUS_AUDIO:            m_Player->print2stderr(" INSTANTANEOUS_AUDIO ");            break;         case STREAMING_AUDIO:            m_Player->print2stderr(" STREAMING_AUDIO ");            break;         case TIMED_AUDIO:            m_Player->print2stderr(" TIMED_AUDIO ");            break;         case STREAMING_INSTANTANEOUS_AUDIO:            m_Player->print2stderr(" STREAMING_INSTANTANEOUS_AUDIO ");            break;      }      m_Player->print2stderr("pAudioOutData %lx, data %lx\n", pAudioOutData, pAudioOutData->pData);   }#endif   unsigned char *outbuf;   IHXBuffer *ibuf;   unsigned long len;   unsigned char *data;   pAudioInData->pData->Get(data, len);   // provide a little margin to prevent a slight but noticeable jump in vol when the fadein ends   if ((m_fadein && pAudioInData->ulAudioTime < 2*m_fadelength) || m_fadeout)   {      m_Player->pCommonClassFactory->CreateInstance(CLSID_IHXBuffer, (void **) &ibuf);      if (ibuf)      {         ibuf->SetSize(len);         outbuf = ibuf->GetBuffer();         len = volumeize(data, outbuf, len);         pAudioOutData->pData = ibuf;         pAudioOutData->ulAudioTime = pAudioInData->ulAudioTime;         pAudioOutData->uAudioStreamType = pAudioInData->uAudioStreamType;      }   }   return 0;}STDMETHODIMP HSPPreMixAudioHook::OnInit(HXAudioFormat *pFormat){   m_Player->print2stderr("PRE MIX HOOK OnInit AudioFormat: ch %d, bps %d, sps %ld, mbs %d\n", pFormat->uChannels,          pFormat->uBitsPerSample,          pFormat->ulSamplesPerSec,          pFormat->uMaxBlockSize);   m_format = *pFormat;   int bps = pFormat->uBitsPerSample / 8;   m_gaintool = gainInit(pFormat->ulSamplesPerSec, pFormat->uChannels, bps);   gainSetImmediatedB(0, m_gaintool);   if (m_fadein)   {      gainSetImmediatedB(FADE_MIN_dB, m_gaintool);      // the "time constant" (ms) is the time it takes to reach -6db of the target      gainSetTimeConstant((float) m_fadelength / 2.0, m_gaintool);      gainSetSmoothdB(0, m_gaintool);   }   return 0;}///////////////////////////////////////////////////////////////////////////////////////////////////HSPPostProcessor::HSPPostProcessor(HelixSimplePlayer *player, int playerIndex) :   m_Player(player), m_lRefCount(0), m_index(playerIndex), m_count(0), m_item(0),   m_current(0), m_prevtime(0), m_i(0), m_j(2), m_k(1)#ifndef HELIX_SW_VOLUME_INTERFACE   , m_gaintool(0), m_gaindB(0.0)#endif{   AddRef();   memset(&m_format, 0, sizeof(m_format));   // zero the data_history, to eliminate the buzz on playing the first track after enabling the equalizer   memset(&data_history, 0, sizeof(data_history));}HSPPostProcessor::~HSPPostProcessor(){#ifndef HELIX_SW_VOLUME_INTERFACE   if (m_gaintool)      gainFree(m_gaintool);#endif}STDMETHODIMPHSPPostProcessor::QueryInterface(REFIID riid, void**ppvObj){    if(IsEqualIID(riid, IID_IUnknown))    {        AddRef();        *ppvObj = (IUnknown*)(IHXAudioHook *)this;        return HXR_OK;    }    else if(IsEqualIID(riid, IID_IHXAudioHook))    {        AddRef();        *ppvObj = (IHXAudioHook *)this;        return HXR_OK;    }    *ppvObj = NULL;    return HXR_NOINTERFACE;}STDMETHODIMP_(UINT32)HSPPostProcessor::AddRef(){    return InterlockedIncrement(&m_lRefCount);}STDMETHODIMP_(UINT32)HSPPostProcessor::Release(){    if (InterlockedDecrement(&m_lRefCount) > 0)    {        return m_lRefCount;    }    delete this;    return 0;}STDMETHODIMP HSPPostProcessor::OnBuffer(HXAudioData *pAudioInData, HXAudioData *pAudioOutData){   unsigned long len;   unsigned char *data;   pAudioInData->pData->Get(data, len);   m_count++;#ifdef DEBUG_PURPOSES_ONLY   if (!(m_count % 100))   {      m_Player->print2stderr("POST: time: %d  ", pAudioInData->ulAudioTime);      switch (pAudioInData->uAudioStreamType)      {         case INSTANTANEOUS_AUDIO:            m_Player->print2stderr(" INSTANTANEOUS_AUDIO ");            break;         case STREAMING_AUDIO:            m_Player->print2stderr(" STREAMING_AUDIO ");            break;         case TIMED_AUDIO:            m_Player->print2stderr(" TIMED_AUDIO ");            break;         case STREAMING_INSTANTANEOUS_AUDIO:            m_Player->print2stderr(" STREAMING_INSTANTANEOUS_AUDIO ");            break;      }      m_Player->print2stderr("len %d\n", len);      m_Player->print2stderr("pAudioOutData %lx, data %lx\n", pAudioOutData, pAudioOutData->pData);      m_Player->print2stderr("Volume is %d\n",m_Player->getDirectHWVolume());   }#endif#ifndef HELIX_SW_VOLUME_INTERFACE   unsigned char *outbuf;   IHXBuffer *ibuf;   m_Player->pCommonClassFactory->CreateInstance(CLSID_IHXBuffer, (void **) &ibuf);   if (ibuf)   {      ibuf->SetSize(len);      outbuf = ibuf->GetBuffer();      // equalize      if (m_Player->ppctrl[m_index]->volume && m_Player->isEQenabled() && m_format.uBitsPerSample == 16)      {         equalize(data, outbuf, len);         // finally adjust the volume         len = volumeize(outbuf, len);      }      else         // finally adjust the volume         len = volumeize(data, outbuf, len);      pAudioOutData->pData = ibuf;      pAudioOutData->ulAudioTime = pAudioInData->ulAudioTime;      pAudioOutData->uAudioStreamType = pAudioInData->uAudioStreamType;   }#else   // equalize   if (m_Player->ppctrl[m_index]->volume && m_Player->isEQenabled() && m_format.uBitsPerSample == 16)   {      unsigned char *outbuf;      IHXBuffer *ibuf;      m_Player->pCommonClassFactory->CreateInstance(CLSID_IHXBuffer, (void **) &ibuf);      if (ibuf)      {         ibuf->SetSize(len);         outbuf = ibuf->GetBuffer();         equalize(data, outbuf, len);         pAudioOutData->pData = ibuf;         pAudioOutData->ulAudioTime = pAudioInData->ulAudioTime;         pAudioOutData->uAudioStreamType = pAudioInData->uAudioStreamType;         pAudioInData->pData->Release();      }   }#endif   return 0;}STDMETHODIMP HSPPostProcessor::OnInit(HXAudioFormat *pFormat){   m_format = *pFormat;   m_count = 0;   m_prevtime = 0;   // set the filter coefficients, in case we need to use the equalizer   switch(pFormat->ulSamplesPerSec)   {      case 8000:         //iir_cf = iir_cf10_8000;  <-- doesn't work         iir_cf = iir_cf10_11k_11025; // works         break;      case 11025:         //iir_cf = iir_cf10_11025; <-- not tested (cant get an encoder to give me this sfreq)         iir_cf = iir_cf10_11k_11025; // not tested, but works for 8k         break;      case 16000:         //iir_cf = iir_cf10_16000; <-- doesn't work         iir_cf = iir_cf10_22k_22050; // works         break;      case 22050:         //iir_cf = iir_cf10_22050;         iir_cf = iir_cf10_22k_22050; // this set actually works...         break;      case 32000:         iir_cf = iir_cf10_32000; // works         break;      case 48000:         iir_cf = iir_cf10_48000;  // not tested         break;      case 44100:      default:         iir_cf = iir_cf10_44100; // works         break;   }   m_i = 0;   m_j = 2;   m_k = 1;   memset(&data_history, 0, sizeof(data_history));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级二级三级乱码| 丁香婷婷综合五月| 欧美日韩一区二区电影| 亚洲国产综合91精品麻豆 | 日韩电影一区二区三区| 欧美高清视频一二三区 | jizzjizzjizz欧美| 国产精品久久久久久久久果冻传媒| 菠萝蜜视频在线观看一区| 亚洲视频精选在线| 欧美日韩另类国产亚洲欧美一级| 婷婷开心激情综合| 精品国精品国产尤物美女| 国产成人av电影在线观看| 自拍偷拍亚洲激情| 欧美精品三级日韩久久| 国产米奇在线777精品观看| 国产精品久久久久影视| 欧美人动与zoxxxx乱| 久久激情五月激情| 成人欧美一区二区三区黑人麻豆 | 午夜久久久久久久久久一区二区| 69堂精品视频| 国产精品1024| 亚洲国产视频网站| 久久综合成人精品亚洲另类欧美| 91在线观看免费视频| 免费成人在线观看| 中文字幕亚洲欧美在线不卡| 69av一区二区三区| 成人久久18免费网站麻豆| 性感美女极品91精品| 国产日韩视频一区二区三区| 欧美性色黄大片手机版| 国产一区三区三区| 亚洲国产一区在线观看| 久久先锋影音av| 欧美色手机在线观看| 大陆成人av片| 看片的网站亚洲| 亚洲一二三四区不卡| 日本一区免费视频| 日韩精品专区在线影院重磅| 99精品在线免费| 国产主播一区二区| 日本aⅴ免费视频一区二区三区| 亚洲欧美在线另类| 久久综合色鬼综合色| 精品视频一区二区不卡| 99免费精品在线观看| 国产在线视频一区二区三区| 五月天欧美精品| 亚洲精品福利视频网站| 国产精品理论在线观看| 国产午夜亚洲精品午夜鲁丝片| 宅男在线国产精品| 欧美日韩国产免费一区二区| 99re这里都是精品| 波多野结衣一区二区三区| 狠狠网亚洲精品| 久久国产日韩欧美精品| 日韩av一级片| 视频一区中文字幕国产| 亚洲图片欧美视频| 亚洲午夜在线电影| 亚洲制服丝袜一区| 亚洲精品美国一| 自拍偷自拍亚洲精品播放| 国产精品久久久一本精品 | 欧美浪妇xxxx高跟鞋交| 91麻豆swag| 91视频观看视频| www.成人在线| 91一区在线观看| 色香蕉久久蜜桃| 欧美性受xxxx黑人xyx性爽| 色综合色狠狠天天综合色| 91捆绑美女网站| 91高清视频在线| 欧美色爱综合网| 亚洲精品精品亚洲| 一区二区在线观看不卡| 亚洲综合男人的天堂| 亚洲大片在线观看| 喷白浆一区二区| 国产一区不卡在线| 懂色av中文一区二区三区| 99在线精品视频| 色哟哟一区二区| 欧美巨大另类极品videosbest | 蜜桃精品在线观看| 美女一区二区久久| 国模无码大尺度一区二区三区| 精品一区二区三区久久| 国产成人亚洲综合色影视| 成人av第一页| 欧美日韩激情在线| 欧美va亚洲va在线观看蝴蝶网| 国产亚洲精品福利| 一片黄亚洲嫩模| 日本不卡免费在线视频| 国产精品一区久久久久| 色综合久久综合网97色综合| 欧美日韩国产影片| 久久蜜桃av一区精品变态类天堂| 中文字幕在线观看不卡视频| 有码一区二区三区| 久久99精品久久久久| 成人性生交大片免费看中文| 色菇凉天天综合网| 欧美一区二区三区公司| 国产精品婷婷午夜在线观看| 亚洲一区在线观看网站| 韩国精品在线观看| 欧美亚洲国产一区二区三区| 精品88久久久久88久久久| 亚洲精品国产第一综合99久久| 亚洲18色成人| 成人亚洲一区二区一| 欧美精品乱人伦久久久久久| 国产日产欧产精品推荐色| 亚洲一区二区三区自拍| 韩国三级电影一区二区| 欧美三级视频在线观看| 国产精品理论在线观看| 日本午夜一区二区| 91在线视频免费91| 久久综合成人精品亚洲另类欧美| 亚洲一区在线视频观看| 粉嫩欧美一区二区三区高清影视| 在线不卡中文字幕播放| 亚洲欧美日韩久久| 国产高清无密码一区二区三区| 欧美丰满少妇xxxbbb| 亚洲色图制服诱惑| 国产剧情一区在线| 7777精品伊人久久久大香线蕉经典版下载 | 日韩欧美中文字幕制服| 《视频一区视频二区| 国产在线播精品第三| 欧美日韩国产影片| 亚洲柠檬福利资源导航| 国产成人免费9x9x人网站视频| 666欧美在线视频| 一区二区三区视频在线观看| 高清成人免费视频| 久久网站热最新地址| 人人狠狠综合久久亚洲| 欧美日韩国产bt| 一区二区欧美国产| 色综合久久综合中文综合网| 国产精品剧情在线亚洲| 国产成人精品免费| 久久这里只有精品首页| 蜜桃久久精品一区二区| 4438成人网| 日韩制服丝袜av| 欧美日韩国产另类一区| 亚洲免费资源在线播放| a4yy欧美一区二区三区| 国产丝袜在线精品| 国产成人免费网站| 久久久久99精品国产片| 精品午夜久久福利影院 | 26uuu精品一区二区| 日韩高清在线不卡| 91精品国产欧美一区二区成人| 午夜婷婷国产麻豆精品| 欧美日韩高清在线播放| 亚洲成人激情综合网| 欧美日韩国产影片| 日韩高清欧美激情| 日韩精品中文字幕一区| 久久99久久99小草精品免视看| 欧美tk—视频vk| 国产精品一区二区在线观看不卡| 久久中文字幕电影| 成人中文字幕电影| 中文字幕在线观看一区| 91蜜桃在线免费视频| 一级做a爱片久久| 欧美日韩亚洲综合在线 | 国产一区二区三区日韩| 久久久91精品国产一区二区三区| 国产在线乱码一区二区三区| 国产欧美视频一区二区三区| 色网综合在线观看| 亚洲成人久久影院| 久久欧美一区二区| 不卡一区二区三区四区| 亚洲福利视频三区| 精品久久久久久最新网址| 丁香亚洲综合激情啪啪综合| 亚洲乱码日产精品bd| 91精品国产美女浴室洗澡无遮挡| 国模套图日韩精品一区二区| 亚洲欧洲精品一区二区三区不卡| 在线视频一区二区三| 久久精品国产精品亚洲红杏| 国产精品日产欧美久久久久|