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

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

?? hxaudstr.cpp

?? symbian 下的helix player源代碼
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/* ***** BEGIN LICENSE BLOCK *****
 * Source last modified: $Id: hxaudstr.cpp,v 1.17.2.1.2.1 2005/07/08 18:12:41 gwright Exp $
 * 
 * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
 * 
 * The contents of this file, and the files included with this file,
 * are subject to the current version of the RealNetworks Public
 * Source License (the "RPSL") available at
 * http://www.helixcommunity.org/content/rpsl unless you have licensed
 * the file under the current version of the RealNetworks Community
 * Source License (the "RCSL") available at
 * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
 * will apply. You may also obtain the license terms directly from
 * RealNetworks.  You may not use this file except in compliance with
 * the RPSL or, if you have a valid RCSL with RealNetworks applicable
 * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
 * the rights, obligations and limitations governing use of the
 * contents of the file.
 * 
 * Alternatively, the contents of this file may be used under the
 * terms of the GNU General Public License Version 2 or later (the
 * "GPL") in which case the provisions of the GPL are applicable
 * instead of those above. If you wish to allow use of your version of
 * this file only under the terms of the GPL, and not to allow others
 * to use your version of this file under the terms of either the RPSL
 * or RCSL, indicate your decision by deleting the provisions above
 * and replace them with the notice and other provisions required by
 * the GPL. If you do not delete the provisions above, a recipient may
 * use your version of this file under the terms of any one of the
 * RPSL, the RCSL or the GPL.
 * 
 * This file is part of the Helix DNA Technology. RealNetworks is the
 * developer of the Original Code and owns the copyrights in the
 * portions it created.
 * 
 * This file, and the files included with this file, is distributed
 * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
 * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
 * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
 * ENJOYMENT OR NON-INFRINGEMENT.
 * 
 * Technology Compatibility Kit Test Suite(s) Location:
 *    http://www.helixcommunity.org/content/tck
 * 
 * Contributor(s):
 * 
 * ***** END LICENSE BLOCK ***** */

#include "hlxclib/stdio.h"
#include "hlxclib/string.h"



#include "hxresult.h"
#include "hxtypes.h"

#include "hxcom.h"
#include "hxengin.h"
#include "ihxpckts.h"
#include "hxausvc.h"
#include "hxrasyn.h"
#include "hxprefs.h"
#include "hxerror.h"

#include "errdbg.h"
#include "chxpckts.h"
#include "hxaudply.h"
#include "hxaudstr.h"
#include "hxaudses.h"
#include "hxmixer.h"
#include "hxaudvol.h"   

#include "hxslist.h"
#include "hxmap.h"
#include "auderrs.h"

#include "hxtick.h"

//#include "rmarsmp.h"
#ifdef _WINDOWS
#include "hxrsmp2.h"
#endif /* _WINDOWS */

//#include "resample.h"   
//#include "interp.h"   
#include "crosfade.h"

#include "hxheap.h"
#ifdef _DEBUG
#undef HX_THIS_FILE             
static const char HX_THIS_FILE[] = __FILE__;
#endif

#define CACHE_INCREMENT_SIZE    2

//#define _TESTING    1
#ifdef _TESTING
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>

#if defined (_WINDOWS) || defined (_WIN32)

#include <io.h>

#endif

int g_log = -1;
#endif

/************************************************************************
 *  Method:
 *              IHXAudioStream::CHXAudioStream()
 *      Purpose:
 *              Constructor. 
 */
CHXAudioStream::CHXAudioStream(CHXAudioPlayer* owner, IUnknown* pContext)
:       m_lRefCount(0)
,       m_wLastError(HXR_OK)
,       m_pResampler(NULL)
,       m_pValues(0)
,       m_bDisableWrite(FALSE)
,       m_ulGranularity(0)
,       m_ulInputBytesPerGran(0)
,       m_ulOutputBytesPerGran(0)
,       m_ulExcessInterpBufferSize(0)
,       m_ulPreviousExcessInterpBufferSize(0)
,       m_pDataList(0)
,       m_pInstantaneousList(0)
,       m_pRAByToTsInList(0)
,       m_pRAByToTsAdjustedList(0)
,       m_bFirstWrite(TRUE)
,       m_bHooksInitialized(FALSE)
,       m_bInited(FALSE)
,       m_bSetupDone(FALSE)
,       m_bAudioFormatKnown(FALSE)
,       m_ulMaxBlockSize(0)
,       m_pResampleBuf(0)
,       m_pTmpResBuf(0)
,       m_pCrossFader(0)
,       m_pCrossFadeBuffer(0)
,       m_pExcessInterpBuffer(NULL)
,       m_pTempInterpBuffer(NULL)
,       m_fVolume((float)1.0)
,       m_bChannelConvert(FALSE)
,       m_pStreamVolume(0)
,       m_uVolume(HX_MAX_VOLUME)
,       m_bMute(FALSE)
,       m_bGotHooks(FALSE)
,       m_llLastWriteTime(0)
,       m_ulFudge(5)
,       m_pInDataPtr(0)
,       m_pOutDataPtr(0)
,       m_pVolumeAdviseSink(0)
,       m_bTobeTimed(TRUE)
,       m_bIsFirstPacket(TRUE)
,       m_bIsLive(FALSE)
,       m_ulBaseTime(0)
,       m_ulLiveDelay(0)
,       m_bSetupToBeDone(FALSE)
,       m_bCrossFadingToBeDone(FALSE)
,       m_pCrossFadeStream(NULL)
,       m_llCrossFadeStartTime(0)
,       m_ulCrossFadeDuration(0)
,       m_bFadeToThisStream(FALSE)
,       m_bFadeAlreadyDone(FALSE)
,       m_bRealAudioStream(FALSE)
,       m_ulLastInputStartTime(0)
,       m_ulLastInputEndTime(0)
,       m_llLastStartTimePlayed(0)
,       m_ulTSRollOver(0)
,       m_bLastWriteTimeUpdated(FALSE)
,       m_pCommonClassFactory(NULL)
,       m_pAvailableBuffers(NULL)
,       m_uCacheSize(CACHE_INCREMENT_SIZE)
,       m_bCacheMayBeGrown(FALSE)
,       m_bDeterminedInitialCacheSize(FALSE)
,       m_bLastNMilliSecsToBeSaved(FALSE)
,       m_ulLastNMilliSeconds(MINIMUM_INITIAL_PUSHDOWN)
,       m_pLastNMilliSecsList(NULL)
,       m_ulLastNHeadTime(0)
,       m_ulLastNTailTime(0)
,       m_eState(E_STOPPED)
,       m_bCanBeRewound(FALSE)
,       m_bAudioDeviceReflushHint(FALSE)
,       m_bIsResumed(FALSE)
,       m_bPlayerPause(FALSE)
,       m_pPreferences(NULL)
,       m_bMayNeedToRollbackTimestamp(FALSE)
{
/*
 *  Left around for future debugging
    static int fnum = 0;

    char fname[80];
 
    sprintf(fname, "c:\\temp\\before.%d", fnum);
    fdbefore = fopen(fname, "ab+");

    sprintf(fname, "c:\\temp\\before.%d.txt", fnum);
    fdbeforetxt = fopen(fname, "w+");

    sprintf(fname, "c:\\temp\\after.%d", fnum);
    fdafter = fopen(fname, "ab+");

    sprintf(fname, "c:\\temp\\after.%d.txt", fnum);
    fdaftertxt = fopen(fname, "w+");

    sprintf(fname, "c:\\temp\\in.%d", fnum);
    fdin = fopen(fname, "ab+");
    
    fnum++;
*/

    m_Owner         = owner;
    if (m_Owner)
    {
        m_Owner->AddRef();
    }

    if (pContext)
    {
        HX_VERIFY(HXR_OK == pContext->QueryInterface(IID_IHXCommonClassFactory, 
                                            (void**) &m_pCommonClassFactory));
    }

#if defined(HELIX_FEATURE_PREFERENCES)
    if (pContext)
    {
        HX_VERIFY(HXR_OK == pContext->QueryInterface(IID_IHXPreferences, (void**) &m_pPreferences));
    }
#endif /* HELIX_FEATURE_PREFERENCES */


    m_pInDataPtr    = new HXAudioData;
    m_pOutDataPtr   = new HXAudioData;
};

/************************************************************************
 *  Method:
 *              IHXAudioStream::~CHXAudioStream()
 *      Purpose:
 *              Destructor. Clean up and set free.
 */
CHXAudioStream::~CHXAudioStream()
{
    ResetStream();
/*
 *  Left around for future debugging
    if (fdbefore)
    {
        fclose(fdbefore);
    }
    if (fdbeforetxt)
    {
        fclose(fdbeforetxt);
    }
    if (fdafter)
    {
        fclose(fdafter);
    }
    if (fdaftertxt)
    {
        fclose(fdaftertxt);
    }
    if (fdin)
    {
        fclose(fdin);
    }
*/
}

/////////////////////////////////////////////////////////////////////////
//  Method:
//      IUnknown::QueryInterface
//  Purpose:
//      Implement this to export the interfaces supported by your
//      object.
//
STDMETHODIMP CHXAudioStream::QueryInterface(REFIID riid, void** ppvObj)
{
	QInterfaceList qiList[] =
	{
		{ GET_IIDHANDLE(IID_IHXAudioStream), (IHXAudioStream*) this },
		{ GET_IIDHANDLE(IID_IHXRealAudioSync), (IHXRealAudioSync*) this },
		{ GET_IIDHANDLE(IID_IHXAudioStream2), (IHXAudioStream2*) this },
		{ GET_IIDHANDLE(IID_IHXCommonClassFactory), (IHXCommonClassFactory*) this },
		{ GET_IIDHANDLE(IID_IHXUpdateProperties), (IHXUpdateProperties*) this },
	};	
    return QIFind(qiList, QILISTSIZE(qiList), riid, ppvObj);
}

/////////////////////////////////////////////////////////////////////////
//  Method:
//      IUnknown::AddRef
//  Purpose:
//      Everyone usually implements this the same... feel free to use
//      this implementation.
//
STDMETHODIMP_(ULONG32) CHXAudioStream::AddRef()
{
    return InterlockedIncrement(&m_lRefCount);
}

/////////////////////////////////////////////////////////////////////////
//  Method:
//      IUnknown::Release
//  Purpose:
//      Everyone usually implements this the same... feel free to use
//      this implementation.
//
STDMETHODIMP_(ULONG32) CHXAudioStream::Release()
{
    if (InterlockedDecrement(&m_lRefCount) > 0)
    {
        return m_lRefCount;
    }

    delete this;
    return 0;
}

/*
 *  IHXAudioStream methods
 */

/************************************************************************
 *  Method:
 *              IHXAudioStream::Init
 *      Purpose:
 *              Init the audio stream.
 */
STDMETHODIMP CHXAudioStream::Init
(
    const HXAudioFormat*        pAudioFormat,
          IHXValues*            pValues
)
{
    if (m_bAudioFormatKnown)
    {
        return HXR_OK;
    }

    HX_RESULT theErr = HXR_OK;
    m_pValues = pValues;
    if (m_pValues)
    {
        m_pValues->AddRef();
        UINT32 ulVal = 0;
        m_pValues->GetPropertyULONG32("audioDeviceReflushHint", ulVal);
        if (ulVal == 1)
        {
            SetAudioDeviceReflushHint(TRUE);
            m_Owner->m_Owner->CheckIfLastNMilliSecsToBeStored();
        }
    }

    memcpy( &m_AudioFmt, pAudioFormat, sizeof(HXAudioFormat) ); /* Flawfinder: ignore */

    // Create the audio data list 
    m_pDataList = new CHXSimpleList;
    if ( !m_pDataList )
        theErr = HXR_OUTOFMEMORY;
    if(!theErr) // check if list constructor really succeeded
    {
        if(!m_pDataList->IsPtrListValid())
            theErr = HXR_OUTOFMEMORY;
    }

    m_pInstantaneousList = new CHXSimpleList;
    if ( !m_pInstantaneousList || !m_pInstantaneousList->IsPtrListValid())
        theErr = HXR_OUTOFMEMORY;

    // Reset this so that we init the hooks
    m_bFirstWrite       = TRUE;
    m_bHooksInitialized = FALSE;

#if defined(HELIX_FEATURE_VOLUME)
    // Create a volume object.
    if ( !theErr )
    {
        m_pVolumeAdviseSink = new HXStreamVolumeAdviseSink;
        if (!m_pVolumeAdviseSink)
        {
            theErr = HXR_OUTOFMEMORY;
        }
        else
        {
            m_pVolumeAdviseSink->AddRef();
            m_pVolumeAdviseSink->m_pCHXAudioStream = this;
        }

        m_pStreamVolume = (IHXVolume*) new CHXVolume;
        if ( !m_pStreamVolume )
            theErr = HXR_OUTOFMEMORY;
        else
        {
            m_pStreamVolume->AddRef();
            m_pStreamVolume->AddAdviseSink(m_pVolumeAdviseSink);
            m_pStreamVolume->SetVolume(HX_MAX_VOLUME);
        }
    }
#endif /* HELIX_FEATURE_VOLUME */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品免费电影| 一区二区激情视频| 欧美性受xxxx黑人xyx| 六月丁香综合在线视频| 最新成人av在线| 欧美一级理论片| 色婷婷综合久久久中文一区二区| 久久福利资源站| 亚洲午夜激情网站| 国产精品久久久久久久裸模| 日韩欧美国产小视频| 色婷婷综合久色| 成熟亚洲日本毛茸茸凸凹| 日韩国产欧美在线视频| **欧美大码日韩| 久久久亚洲精品石原莉奈| 欧美日韩mp4| 色婷婷狠狠综合| 成人理论电影网| 国产麻豆精品theporn| 午夜精品一区在线观看| 亚洲另类春色校园小说| 欧美激情一区二区三区在线| 日韩免费视频一区| 欧美精品欧美精品系列| 欧美专区日韩专区| av不卡在线播放| 粉嫩久久99精品久久久久久夜| 六月丁香婷婷久久| 日本aⅴ亚洲精品中文乱码| 一区二区三区91| 亚洲丝袜另类动漫二区| 国产拍揄自揄精品视频麻豆| 精品乱人伦一区二区三区| 91精品国产乱码| 欧美精品久久一区| 欧美日韩久久一区| 欧美片在线播放| 欧美日韩中字一区| 欧美性大战久久久久久久蜜臀| av男人天堂一区| 成人妖精视频yjsp地址| 成人综合婷婷国产精品久久| 国产成人免费在线观看| 国产精品18久久久久久久久久久久 | 99精品在线免费| 成人精品在线视频观看| 成人午夜大片免费观看| 99久久免费视频.com| 91一区二区在线| 在线观看亚洲精品| 欧美日韩一本到| 91精品国模一区二区三区| 7777女厕盗摄久久久| 欧美一区永久视频免费观看| 日韩亚洲欧美成人一区| 337p日本欧洲亚洲大胆色噜噜| 久久影院视频免费| 欧美国产视频在线| 亚洲美女视频一区| 性做久久久久久免费观看| 美洲天堂一区二卡三卡四卡视频| 久久se精品一区二区| 福利一区福利二区| 91视视频在线观看入口直接观看www | 在线观看91精品国产入口| 欧美日韩色一区| 欧美不卡在线视频| 欧美国产视频在线| 亚洲第一精品在线| 美女在线视频一区| 成人午夜视频福利| 欧美亚洲一区二区三区四区| 欧美一区二区三区成人| 国产日韩综合av| 亚洲综合视频网| 久久99久久精品| 不卡的av网站| 在线综合视频播放| 久久精品一区四区| 亚洲一区二区三区在线播放| 免费观看一级特黄欧美大片| 成人丝袜18视频在线观看| 91高清视频在线| 精品久久五月天| 亚洲婷婷综合色高清在线| 喷水一区二区三区| 99久久婷婷国产综合精品电影| 欧美精品在线观看一区二区| 国产欧美综合色| 日韩精品成人一区二区在线| 国产91丝袜在线播放九色| 欧美日韩久久一区二区| 中文在线免费一区三区高中清不卡| 亚洲一区二区三区不卡国产欧美| 国产曰批免费观看久久久| 在线观看国产日韩| 国产女同性恋一区二区| 午夜伊人狠狠久久| av一二三不卡影片| 精品国产露脸精彩对白| 亚洲国产综合91精品麻豆| 国产91精品免费| 日韩美女视频在线| 亚洲一区二区欧美日韩| 粉嫩在线一区二区三区视频| 欧美一区二视频| 一区二区三区高清| 成人毛片在线观看| 精品国产免费久久| 亚洲二区视频在线| 91免费国产在线观看| 久久精品日韩一区二区三区| 日韩av中文在线观看| 日本高清不卡aⅴ免费网站| 国产欧美日韩精品一区| 久久狠狠亚洲综合| 8v天堂国产在线一区二区| 亚洲激情欧美激情| 99精品视频中文字幕| 国产亚洲欧美日韩日本| 蓝色福利精品导航| 91精品国产91久久综合桃花| 亚洲国产日产av| 91国产丝袜在线播放| 亚洲三级在线看| 99精品久久只有精品| 国产精品久久久久久久岛一牛影视| 国产一区二区三区| 亚洲欧美精品午睡沙发| 国产成人免费视频网站高清观看视频| 日韩欧美国产综合一区 | 亚洲成人av福利| 在线观看欧美黄色| 亚洲综合免费观看高清在线观看| 95精品视频在线| 日韩美女久久久| 97aⅴ精品视频一二三区| 亚洲天堂成人在线观看| av电影在线观看完整版一区二区| 国产精品私人影院| 成a人片亚洲日本久久| 国产精品系列在线| 99久久综合狠狠综合久久| 亚洲少妇屁股交4| 色成人在线视频| 亚洲高清免费一级二级三级| 欧美性猛片xxxx免费看久爱| 午夜欧美在线一二页| 欧美一区二区三区婷婷月色| 日韩精彩视频在线观看| 欧美变态口味重另类| 国产麻豆日韩欧美久久| 国产精品久久久久影院老司| av在线不卡电影| 亚洲韩国一区二区三区| 在线播放欧美女士性生活| 麻豆精品一区二区三区| 久久久三级国产网站| kk眼镜猥琐国模调教系列一区二区| 综合分类小说区另类春色亚洲小说欧美| 一道本成人在线| 亚瑟在线精品视频| 日韩欧美二区三区| 国产精品自在在线| 亚洲三级理论片| 欧美色爱综合网| 国内精品不卡在线| 中文字幕一区二区三区视频| 欧美伊人久久大香线蕉综合69| 丝袜亚洲另类欧美| 久久亚洲精华国产精华液 | 91精品国产综合久久精品性色| 麻豆国产精品官网| 中文字幕欧美区| 欧美视频一区二区三区四区| 精品一区免费av| 自拍偷拍欧美激情| 91精品国产91久久久久久一区二区 | 国产精品色呦呦| 欧美日韩精品免费观看视频| 狠狠网亚洲精品| 夜夜精品视频一区二区| 精品国产一区二区三区四区四| www.久久久久久久久| 色婷婷亚洲精品| 黄色日韩网站视频| 亚洲精品美国一| 久久精品人人做人人爽人人 | 精品少妇一区二区三区日产乱码 | 最新高清无码专区| 欧美一区二区大片| 99精品一区二区三区| 激情文学综合丁香| 一区二区三区高清不卡| 精品福利在线导航| 欧美日韩综合色| 97精品视频在线观看自产线路二| 美女视频黄频大全不卡视频在线播放 | 丰满少妇久久久久久久|