青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級(jí)工程師 Android高級(jí)軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語(yǔ)言 程序猿
蓋莫音頻引擎1.2.8的上次發(fā)布版本為1.1.2版本
當(dāng)前發(fā)布版本增加功能如下:
1.對(duì)音頻錄入的支持
2.對(duì)xm,mod,it,s3m的支持
3.修改了一些內(nèi)部實(shí)現(xiàn)

總的說來本引擎(API)功能如下:
1.支持ogg,mp3,wav,xm,it,s3m,mod格式
2.基于多線程流式播放音頻
3.真3d音效
4.支持低通,次級(jí)音效

本音頻引擎完全勝任游戲開發(fā),嵌入式設(shè)備等商業(yè)應(yīng)用!
本音頻引擎使用于商業(yè)用途只需要付出少量的維護(hù)費(fèi)即可(遠(yuǎn)低于自主開發(fā)或者購(gòu)買fmod音頻引擎的付出成本)

本版本依然依賴于OpenAL驅(qū)動(dòng)

當(dāng)前編譯版本為win32下的gcc版本
可使用codeblock,devc++

蓋莫音頻引擎(API)發(fā)展方向?yàn)?
 /*!==========================================================================
 * 蓋莫音頻引擎的發(fā)展方向:
 *     1.提供pdf等說明,幫助文檔
 *     2.支持多編譯環(huán)境和操作平臺(tái)
 *     3.支持midi音樂格式
 *     4.支持aiff,acc,ape,flac等音頻格式(基于插件)
 *     5.支持音頻重采樣
 *     6.支持頻譜獲取
 *     7.解除對(duì)OpenAL驅(qū)動(dòng)的依賴
 *     8.提供強(qiáng)健,高效,真實(shí)的音頻特效
 *     9.對(duì)內(nèi)存音頻的支持
 *     10.實(shí)時(shí)音效
 ****************************************************************************/
下個(gè)預(yù)定版本1.4.2預(yù)計(jì)更新:
 /*!==========================================================================
 * 1.4.2版本預(yù)期修改說明
 *     增加PDF說明文檔
 *     對(duì)midi音頻文件的支持
 *     修改音頻接口
 *     解除使用音頻引擎需要安裝OpenAL驅(qū)動(dòng)的問題
 *     支持基于插件的音頻格式支持(aiff,au,flac,ape,acc...)(保持原有支持音頻不變!)
 ****************************************************************************/

當(dāng)前蓋莫音頻引擎(API) sdk
配置簡(jiǎn)表:
c++頭文件一個(gè)
a/lib文件一個(gè) (可選擇使用a或者lib文件)
dll文件-audio.dll一個(gè)
OpenAL驅(qū)動(dòng)一個(gè)

提供頭文件如下:
//! 蓋莫游戲3d音頻引擎是成都蓋莫軟件技術(shù)有限責(zé)任公司推出的一款專門
//! 面向游戲開發(fā)的音頻庫(kù),該庫(kù)具有使用簡(jiǎn)介,功能強(qiáng)大的功能
//! 本音頻庫(kù)使用于非商業(yè)產(chǎn)品不收取任何費(fèi)用
//! 警告:本API不可使用于商業(yè)用途! 
//! websize:www.gaimo.net
//! email:ccsdu2009@sohu.com
//! telephone:+86-028-67607663,
//!           +86-028-67607665

//! 版本更新list.
/*
!==========================================================================
 *  2010.01.22 版本:1.0.0
 *     提供功能:支持wav,ogg,mp3格式
 *              使用多線程流式播放
 *              簡(jiǎn)單易用的程序接口 
 *     使用本版本需要安裝OpenAL驅(qū)動(dòng)     
 ***************************************************************************
*/
/*!==========================================================================
 *  2010.03.20 版本:1.1.0
 *     提供功能:真3d音效,及幾個(gè)音效 
 *     使用本版本需要安裝OpenAL驅(qū)動(dòng)     
 ***************************************************************************
*/
 
/*!==========================================================================
 *  2010.05.05 版本:1.2.8
 *     增加功能:支持音頻錄入到文件(當(dāng)前僅為wav格式) 
 *     增加了對(duì):it,s3m,xm,mod4種音樂文件的支持
 *     修改了幾個(gè)接口
 *     使用本版本需要安裝OpenAL驅(qū)動(dòng)     
 ***************************************************************************
*/
 
/*!==========================================================================
 * 1.4.0版本預(yù)期修改說明 
 *     增加PDF說明文檔
 *     對(duì)midi音頻文件的支持
 *     修改音頻接口
 *     解除使用音頻引擎需要安裝OpenAL驅(qū)動(dòng)的問題
 *     支持基于插件的音頻格式支持(aiff,au,flac,ape,acc)(保持原有支持音頻不變!)
 ***************************************************************************
*/
#ifndef AUDIODEVICE_HPP
#define AUDIODEVICE_HPP

////////////////////////////////////////////////////////////
/// 頭文件包含
////////////////////////////////////////////////////////////
#include <string>

#ifdef G_ENGINE
  
#error 蓋莫游戲引擎內(nèi)置蓋莫音頻引擎! 
#endif 

#if defined(_WIN32) || (defined(__WIN32__)) || defined(WIN32) 
   
#define G_WIN32  
#endif  

#ifndef __cplusplus
    #  error 請(qǐng)使用c
++編譯器
#endif

#ifndef G_CALL
#  ifdef G_WIN32
#    define G_CALL __stdcall
#  
else
#    define G_CALL __stdcall
#  endif
#endif

#if !defined(G_DLL_API) && defined(G_WIN32)
    
#if defined(BUILDING_DLL)
        
#define G_DLL_API __declspec(dllexport)
    
#else
        
#define G_DLL_API __declspec(dllimport)
    
#endif
#endif 

#define G_FUNC(ret) extern "C" G_DLL_API ret 

#ifndef NULL
#define NULL 0
#endif 

typedef unsigned 
char  uchar8;
typedef unsigned 
int   uint;
typedef unsigned 
char  uint8;
typedef signed   
short int16;
typedef unsigned 
short uint16;
typedef signed   
int   int32; 
typedef std::
string    engine_string; 

namespace core 
{
          
////////////////////////////////////////////////////////////
/// 定義引擎引用計(jì)數(shù)類
////////////////////////////////////////////////////////////     
class RefCount
{
public:
    
////////////////////////////////////////////////////////////
    
/// 引用計(jì)數(shù)構(gòu)造函數(shù)
    
////////////////////////////////////////////////////////////
    RefCount(): refcnt(1),auto_del(true){}

    
////////////////////////////////////////////////////////////
    
/// 引用計(jì)數(shù)析構(gòu)函數(shù)
    
////////////////////////////////////////////////////////////
    virtual ~RefCount(){}
    
    
////////////////////////////////////////////////////////////
    
/// 使用自刪除機(jī)制
    
////////////////////////////////////////////////////////////    
    void SetAutoDel(bool able = true){auto_del = able;}
    
    
////////////////////////////////////////////////////////////
    
/// 檢測(cè)是否為自刪除機(jī)制
    
////////////////////////////////////////////////////////////
    const bool GetAutoDel()const{return auto_del;}
    
    
////////////////////////////////////////////////////////////
    
/// 增加對(duì)象引用計(jì)數(shù)
    
////////////////////////////////////////////////////////////
    void Grab()const{++refcnt;}; 
 
    
////////////////////////////////////////////////////////////
    
/// 減少對(duì)象引用計(jì)數(shù)
    
////////////////////////////////////////////////////////////
    bool Drop() const
    {
        
//!ASSERT(refcnt>0 && "bad refcnt number!");

        
--refcnt;
        
if (refcnt == 0 && auto_del == true)
        {
            delete 
this;
            
return true;
        }

        
return false;
    }

    
////////////////////////////////////////////////////////////
    
/// 獲取引用計(jì)數(shù)
    
////////////////////////////////////////////////////////////
    int GetRefCnt()const{return refcnt;}; 
 
private:
    mutable 
int  refcnt;
    
bool    auto_del; 
};

////////////////////////////////////////////////////////
/// 模板RefPtr用于基于計(jì)數(shù)的對(duì)象管理
/// 所有對(duì)象都必須要從RefCount繼承之
////////////////////////////////////////////////////////
template<class T>
class RefPtr
{
public:
    RefPtr(T
* object = NULL)
    {
        
this->object = object;
        
if(this->object)
           
object->Grab();
    }
    
    RefPtr(
const RefPtr<T>& other)
    {
        
object = NULL;
        
*this = other;
    }
    
    
~RefPtr() 
    {
        
if(object)
           
object->Drop();
        
object = NULL;
    }
 
    RefPtr
<T>& operator=(const RefPtr<T>& other)
    {
        
if (other)
           other
->Grab();
        
if (object)
           
object->Drop();
        
object = other.get();
        
return *this;
    }
    
    RefPtr
& operator=(T* other)
    {
        
if (other)
            other
->Grab(); 
         
if (object)
            
object->Drop();
        
object = other;
        
return *this;
    }
    
    
void swap(RefPtr<T>& other)
    {
        T
* tmp = other.get();
        other 
= object
        
object = tmp;
    }
    
    
void reset(T* other){*this = other;}
    
    T
* get() const {return object;}
    
    T
* operator->() const 
    {   
        
//!ASSERT(object && "bad object ptr");
        return object
    }
    
    T
& operator*() const 
    {   
        
//!ASSERT(object && "bad object ptr"); 
        return *object
    }
    
    
bool operator<(const RefPtr<T>& other) const 
    {   
        
return object < other.get(); 
    }
  
    
////////////////////////////////////////////////////////
    
/// 檢測(cè)指針是否為空
    
////////////////////////////////////////////////////////
    operator bool() const {return object != NULL;}

protected:
    T
*   object;
};

namespace math
{
          
template
<class T>
struct Vector3
{
    T x,y,z;
    Vector3():x(
0),y(0),z(0){}  
}; 

}

typedef math::Vector3
<float> Vector3f;

/////////////////////////////////////////////////////////
//! 枚舉音頻文件格式
/////////////////////////////////////////////////////////
enum AudioFileType
{
    AUDIOFILE_TYPE_WAV 
= 0,
    AUDIOFILE_TYPE_OGG,
    AUDIOFILE_TYPE_MP3,
    AUDIOFILE_TYPE_XM,
    AUDIOFILE_TYPE_IT,
    AUDIOFILE_TYPE_MOD,
    AUDIOFILE_TYPE_S3M,
    AUDIOFILE_TYPE_AU,
    AUDIOFILE_TYPE_AIFF,
    AUDIOFILE_TYPE_WMA,
    AUDIOFILE_TYPE_AAC,
    AUDIOFILE_TYPE_APE,
    AUDIOFILE_TYPE_MIDI
};

/////////////////////////////////////////////////////////
//! 枚舉引擎支持音頻格式類型
/////////////////////////////////////////////////////////
enum AudioFormat
{
    AUDIO_8BIT_MONO 
= 0
    AUDIO_8BIT_STEREO,
    ADUIO_16BIT_MONO,
    AUDIO_16BIT_STEREO
};

//! 定義默認(rèn)空間音速
const float AUDIO_SPACE_VELOCITY = 343.0f;

//! 定義默認(rèn)多普勒因子
const float AUDIO_DOPPLER_FACTOR = 1.0f;

////////////////////////////////////////////////////////////
/// 定義音頻聽者基類
////////////////////////////////////////////////////////////
class AudioListener : public RefCount
{
public:
    
/////////////////////////////////////////////////////////
    //! 構(gòu)造,析構(gòu)音頻聽者
    /////////////////////////////////////////////////////////
    AudioListener(){}
    
virtual ~AudioListener(){}

    
/////////////////////////////////////////////////////////
    //! 設(shè)置,獲取音頻聽者當(dāng)前新的位置
    /////////////////////////////////////////////////////////
    virtual void SetPosition(const Vector3f &pos) = 0;
    
virtual Vector3f GetPosition()const = 0
    
    
/////////////////////////////////////////////////////////
    //! 設(shè)置音頻聽者的方向
    /////////////////////////////////////////////////////////
    virtual void SetDirection(const Vector3f& dir) = 0;
    
virtual Vector3f GetDirection()const = 0
    
    
/////////////////////////////////////////////////////////
    //! 設(shè)置音頻聽者的向上位置(一般而言采取類似OpenGL的方向即0,1,0)
    /////////////////////////////////////////////////////////
    virtual void SetUpVector(const Vector3f &updir) = 0;
    
virtual Vector3f GetUpVector()const = 0;
    
    
/////////////////////////////////////////////////////////
    //! 設(shè)置音頻聽者的速度
    /////////////////////////////////////////////////////////
    virtual void SetVelocity(const Vector3f &vel) = 0;
    
virtual Vector3f GetVelocity()const = 0;        
 
    
/////////////////////////////////////////////////////////
    //! 設(shè)置,獲取全局音量(0.0f,1.0f)
    /////////////////////////////////////////////////////////        
    virtual void SetGlobalVolume(float volume) = 0
    
virtual float GetGlobalVolume()const = 0
    
    
/////////////////////////////////////////////////////////
    //! 設(shè)置,獲取音效作用單位
    /////////////////////////////////////////////////////////        
    virtual void  SetMetersPerUnit(float meters) = 0;
    
virtual float GetMetersPerUnit(voidconst = 0;     
   
    
/////////////////////////////////////////////////////////
    //! 移動(dòng)聽者
    /////////////////////////////////////////////////////////       
    virtual void Move(const Vector3f& position) = 0;    
};

/////////////////////////////////////////////////////////
//! 定義蓋莫音頻引擎音源類
/////////////////////////////////////////////////////////
class AudioSource : public RefCount 
{
public:
    
/////////////////////////////////////////////////////////
    //! 構(gòu)造,析構(gòu)音頻源
    /////////////////////////////////////////////////////////
    AudioSource(){}
    
virtual ~AudioSource(){}
    
    
/////////////////////////////////////////////////////////
    //! 播放指定音頻文件,流 
    /////////////////////////////////////////////////////////
    virtual bool Play(const engine_string& audiofile, bool loop) = 0;

    
/////////////////////////////////////////////////////////
    //! 停止播放音頻
    /////////////////////////////////////////////////////////
    virtual bool Stop() = 0;

    
/////////////////////////////////////////////////////////
    //! 暫停音頻播放
    /////////////////////////////////////////////////////////
    virtual bool Pause() = 0;

    
/////////////////////////////////////////////////////////
    //! 檢測(cè)音源狀態(tài)函數(shù) 
    /////////////////////////////////////////////////////////
    virtual bool IsPlay()const = 0;
    
virtual bool IsPause()const = 0;
    
virtual bool IsStop()const = 0
    
    
/////////////////////////////////////////////////////////
    //! 設(shè)置,獲取音頻增益[0.0f,1.0f]
    /////////////////////////////////////////////////////////
    virtual void  SetVolume(float gain) = 0;
    
virtual float GetVolume()const = 0;  
    
virtual void  SetMaxVolume(float gain) = 0;
    
virtual float GetMinVolume()const = 0;
    
virtual void  SetMinVolume(float gain) = 0;
    
virtual float GetMaxVolume()const = 0;    

    
/////////////////////////////////////////////////////////
    
/// 獲取,設(shè)置音源位置(x,y,z)
    
/////////////////////////////////////////////////////////
    virtual Vector3f GetSourcePosition()const = 0;
    
virtual void SetSourcePosition(const Vector3f& position) = 0;
    
    
/////////////////////////////////////////////////////////
    
/// 獲取,設(shè)置音源方向(x,y,z)
    
/////////////////////////////////////////////////////////
    virtual Vector3f GetSourceDirection()const = 0 ;
    
virtual void SetSourceDirection(const Vector3f& direction) = 0;    

    
/////////////////////////////////////////////////////////
    
/// 獲取,設(shè)置音源速度
    
/////////////////////////////////////////////////////////
    virtual Vector3f GetSourceVelocity()const = 0;
    
virtual void SetSourceVelocity(const Vector3f& vel) = 0;

    
/////////////////////////////////////////////////////////
    
/// 設(shè)置,獲取音源最大,最小傳播距離
    
/////////////////////////////////////////////////////////
    virtual void SetMaxDistance(float distance) = 0;
    
virtual void GetMaxDistance(float &distance)= 0;
    
virtual void SetMinDistance(float distance) = 0;
    
virtual void GetMinDistance(float &distance)= 0;
    
    
/////////////////////////////////////////////////////////
    
/// 設(shè)置,獲取音頻扇出值[0.0,1.0]
    
/////////////////////////////////////////////////////////
    virtual void  SetRolloffFactor(float factor) = 0;
    
virtual float GetRolloffFactor()const=0;

    
/////////////////////////////////////////////////////////
    
/// 設(shè)置,獲取音頻音節(jié)值(pitch值每減少50%則音階降低1個(gè)八度音階)(0,+inf)
    
/////////////////////////////////////////////////////////
    virtual void  SetPitch(float pitch) = 0;
    
virtual float GetPitch()const = 0;
    
    
/////////////////////////////////////////////////////////
    
/// 同時(shí)改變音源位置和速度的便利函數(shù) 
    
/////////////////////////////////////////////////////////    
    virtual void  Move(const Vector3f &newpos) = 0
    
    
/////////////////////////////////////////////////////////
    
/// 設(shè)置,獲取音源錐(內(nèi)錐,外錐,外增益) 
    
/////////////////////////////////////////////////////////
    virtual void SetAudioCone(float innerangle, float outerangle, float outergain) = 0;
    
virtual void GetAudioCone(float &innerangle, float &outerangle, float &outergain) = 0;
    
    
/////////////////////////////////////////////////////////
    
/// 設(shè)置,獲取多普勒速度強(qiáng)度 
    
/////////////////////////////////////////////////////////    
    virtual void SetDopplerVelocity(const Vector3f& dvelocity) = 0;
    
virtual Vector3f GetDopplerVelocity()const = 0;   
    
virtual void SetDopplerStrength(float strength) = 0;           
    
virtual float GetDopplerStrength()const = 0
   
    
/////////////////////////////////////////////////////////
    
/// 設(shè)置,獲取音源傳過空間的能力指數(shù)(0-+inf) 
    
/////////////////////////////////////////////////////////    
    virtual void SetStrength(float strength) = 0;            
    
virtual float GetStrength()const = 0
            
    
/////////////////////////////////////////////////////////
    
/// 設(shè)置為環(huán)境音,檢測(cè)是否為環(huán)境音
    
/////////////////////////////////////////////////////////
    virtual void SetAmbient(bool ambient) = 0;
    
virtual bool IsAmbient() = 0;

    
/////////////////////////////////////////////////////////
    
/// 設(shè)置音源位置是否相對(duì)于聽者,檢測(cè)是否相對(duì)于聽者
    
/////////////////////////////////////////////////////////
    virtual void SetRelative(bool relative) = 0;
    
virtual bool IsRelative() = 0;

    
/////////////////////////////////////////////////////////
    
/// 設(shè)置Reverb值([0,1.0])
    
/////////////////////////////////////////////////////////
    virtual bool SetReverbScale(float scale) = 0;
    
/////////////////////////////////////////////////////////
    
/// 設(shè)置Reverb值([0,1.0])
    
/////////////////////////////////////////////////////////
    virtual bool SetReverbDelay(float delay) = 0;
    
public:    
    
/////////////////////////////////////////////////////////
    
/// 加載低通濾波效果器 
    
///////////////////////////////////////////////////////// 
    virtual bool AttachLowPassFiler(float gain = 1.2ffloat gainhf = 0.6f= 0;    
    
    
/////////////////////////////////////////////////////////
    
/// 加載輔助音效 
    
/////////////////////////////////////////////////////////    
    virtual bool AttachAuxiliaryEffect() = 0;         
};

////////////////////////////////////////////////////////////
/// 定義音頻錄入類接口
//////////////////////////////////////////////////////////// 
class AudioCapture : public RefCount 
{
public:
    
/////////////////////////////////////////////////////////
    //! 構(gòu)造,析構(gòu)音頻錄入 
    /////////////////////////////////////////////////////////       
    AudioCapture(){}
    
virtual ~AudioCapture(){}
    
    
/////////////////////////////////////////////////////////
    //! 捕獲,停止捕獲音頻數(shù)據(jù) 
    /////////////////////////////////////////////////////////     
    virtual void CaptureAudio() = 0;    
    
virtual void CaptureStop() = 0;    
};

/////////////////////////////////////////////////////////
//! 定義音頻設(shè)備基類
/////////////////////////////////////////////////////////
class AudioDevice : public RefCount 
{
public:
    
/////////////////////////////////////////////////////////
    //! 構(gòu)造,析構(gòu)音頻設(shè)備
    /////////////////////////////////////////////////////////
    AudioDevice(){}
    
virtual ~AudioDevice(){}
    
    
/////////////////////////////////////////////////////////
    //! 初始化,卸載音頻設(shè)備 
    /////////////////////////////////////////////////////////       
    virtual bool Init(const  engine_string &devicename,
                      uint16 eax_effect_num, 
                      uint16   output_freq) 
= 0
    
virtual bool Deinit() = 0;        
    
/////////////////////////////////////////////////////////
    //! 獲取音頻引擎版本號(hào)
    /////////////////////////////////////////////////////////
    virtual engine_string GetVerson() const = 0;

    
/////////////////////////////////////////////////////////
    //! 獲取音頻引擎作者
    /////////////////////////////////////////////////////////
    virtual engine_string GetMaker() const = 0;

    
/////////////////////////////////////////////////////////
    //! 查詢音頻設(shè)備是否支持指定格式的音頻文件
    /////////////////////////////////////////////////////////
    virtual bool IsSupport(const AudioFileType& type)const = 0;

    
/////////////////////////////////////////////////////////
    //! 抓取音頻音源指針(最大可獲取255個(gè)音源)
    /////////////////////////////////////////////////////////
    virtual RefPtr<AudioSource>  GetAudioSource()const = 0;

    
/////////////////////////////////////////////////////////
    //! 獲取聽者指針 
    /////////////////////////////////////////////////////////
    virtual RefPtr<AudioListener> GetAudioListener()const = 0
    
    
/////////////////////////////////////////////////////////
    //! 獲取音頻捕獲設(shè)備指針(參數(shù)為音頻名字)(當(dāng)前僅僅支持wav格式)(全局唯一) 
    /////////////////////////////////////////////////////////     
    virtual RefPtr<AudioCapture> GetAudioCapture(const engine_string& name = "capture")const = 0;     
    
    
/////////////////////////////////////////////////////////
    //! 獲取音頻設(shè)備列表個(gè)數(shù) 
    /////////////////////////////////////////////////////////
    virtual uint16 GetAudioDeviceNumber() = 0;  
    
virtual engine_string GetDeviceByIndex(uint8 index) = 0;  
    
    
/////////////////////////////////////////////////////////
    //! 獲取默認(rèn)設(shè)備名 
    /////////////////////////////////////////////////////////    
    virtual engine_string GetDefaultDeviceName()const = 0;   
};

/////////////////////////////////////////////////////////
//! 獲取蓋莫音頻設(shè)備指針 
/////////////////////////////////////////////////////////
G_FUNC(RefPtr<AudioDevice>) GetAudioDevice();

}

#endif
//! maker:ccsdu2004

可以看出dll只到處了一個(gè)函數(shù)GetAudioDevice()

本音頻引擎(API)
當(dāng)前提供的下載地址有3個(gè):
1.http://www.libcode.cn/show.php?sid=85
2.http://www.pudn.com/downloads246/sourcecode/windows/multimedia/detail1145892.html
3.http://download.csdn.net/source/2290755
三個(gè)站點(diǎn)只需要注冊(cè)即可下載!
posted on 2010-04-27 14:39 ccsdu2009 閱讀(1372) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Game引擎
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美1级日本1级| 亚洲欧美资源在线| 亚洲日韩视频| 亚洲免费黄色| 一区二区欧美国产| 亚洲视频一区二区| 久久av一区二区| 久久蜜桃av一区精品变态类天堂| 亚洲免费在线看| 久久人人爽人人爽| 亚洲国产欧美一区二区三区丁香婷| 久久久久久精| 欧美成年人在线观看| 欧美电影打屁股sp| 国产精品一区在线观看| 国产一区二区三区在线免费观看| 国产午夜精品在线| 亚洲国产欧美一区二区三区丁香婷| 日韩一区二区高清| 久久爱www| 日韩视频中文字幕| 久久久欧美一区二区| 欧美香蕉视频| 一区二区电影免费观看| 媚黑女一区二区| 久久精品日韩一区二区三区| 欧美日韩你懂的| 99ri日韩精品视频| 欧美激情五月| 欧美黄免费看| 亚洲黄色精品| 欧美激情精品久久久久久变态| 亚洲欧美春色| 国产精品久久97| 欧美一区二区久久久| 9久re热视频在线精品| 欧美黄污视频| 亚洲欧美日韩第一区| 香蕉久久一区二区不卡无毒影院 | 国产精品一区毛片| 亚洲天堂偷拍| 欧美亚洲在线播放| 亚洲第一久久影院| 国产精品每日更新| 欧美亚洲免费| 久久婷婷人人澡人人喊人人爽| 国产热re99久久6国产精品| 久久成人免费网| 欧美国产日韩二区| 亚洲欧美精品在线观看| 欧美亚洲在线观看| 亚洲精品网址在线观看| 国产精品久久国产精品99gif| 久久久久久网| 欧美视频专区一二在线观看| 久久综合伊人77777麻豆| 欧美久久久久久久久久| 久久精品国产久精国产爱| 久久久亚洲成人| 欧美中文字幕在线播放| 欧美日韩国产小视频在线观看| 久久精品在线免费观看| 国产精品成人一区二区艾草| 免费久久99精品国产| 国产一区二区三区久久悠悠色av | 女同一区二区| 国产一区二区成人久久免费影院| 夜夜嗨av一区二区三区免费区 | 久久天堂国产精品| 久久成人精品一区二区三区| 欧美日韩一区二区视频在线观看 | 亚洲国产日韩精品| 久久久不卡网国产精品一区| 国产精品二区二区三区| 亚洲精品乱码久久久久久蜜桃麻豆| 国产日韩av一区二区| 亚洲欧美中文日韩v在线观看| 亚洲欧美一区在线| 国产亚洲免费的视频看| 欧美亚洲在线观看| 蜜臀91精品一区二区三区| 极品中文字幕一区| 欧美巨乳在线观看| 一本色道久久88综合亚洲精品ⅰ| 亚洲色诱最新| 在线观看视频一区二区| 免费欧美电影| 亚洲欧美视频在线观看视频| 麻豆精品网站| 亚洲视频一区二区| 欧美www视频| 亚洲欧美综合| 9久草视频在线视频精品| 国产精品自拍在线| 欧美日韩亚洲高清一区二区| 欧美一二三区精品| 亚洲人成网站999久久久综合| 欧美一区二区精品在线| 国产精品99久久久久久白浆小说| 韩日精品视频一区| 亚洲国产99| 久久免费国产精品| 欧美一级黄色网| 亚洲男人第一av网站| 91久久国产自产拍夜夜嗨| 国产日产欧美精品| 国产精品一级二级三级| 国产精品久久久久久五月尺| 欧美日韩国产免费| 欧美日韩免费在线观看| 欧美激情精品久久久久| 你懂的国产精品| 国产精品欧美在线| 亚洲一区二区在| 六月婷婷久久| 久久全国免费视频| 欧美顶级大胆免费视频| 国产视频观看一区| 欧美成人三级在线| 狂野欧美激情性xxxx| 亚洲亚洲精品在线观看| 欧美精品一区二区三区很污很色的 | 1000部精品久久久久久久久| 亚洲免费在线观看| 欧美激情久久久久久| 亚洲影视九九影院在线观看| 狠狠爱综合网| 国产精品老女人精品视频| 欧美日韩中文另类| 99国产一区二区三精品乱码| 亚洲激精日韩激精欧美精品| 亚洲精品乱码久久久久久久久 | 另类天堂av| 国产欧美欧洲在线观看| 亚洲免费观看视频| 亚洲精选视频免费看| 久久一区二区三区av| 美女性感视频久久久| 韩日精品中文字幕| 欧美一区亚洲| 久久人人爽人人爽爽久久| 国产亚洲精品资源在线26u| 午夜精品999| 久久手机精品视频| 在线观看欧美激情| 免费观看成人www动漫视频| 欧美国产日韩免费| 日韩视频专区| 国产精品每日更新| 欧美一级免费视频| 欧美v亚洲v综合ⅴ国产v| 亚洲国产精品999| 欧美精品综合| 国产精品揄拍500视频| 一区二区三区四区五区精品| 亚洲国产欧美久久| 免费观看久久久4p| 亚洲精品一区在线| 午夜一区二区三区在线观看| 国产婷婷色一区二区三区在线| 久久精品国产久精国产爱| 免费亚洲电影| 亚洲天堂偷拍| 黄色一区二区三区| 欧美区高清在线| 亚洲欧美日韩国产中文| 欧美gay视频| 亚洲自拍偷拍网址| 一区二区三区在线高清| 欧美精品久久久久久久| 亚洲欧美日韩中文视频| 欧美激情在线观看| 午夜精品国产更新| 亚洲国产一区视频| 国产精品一区二区黑丝| 久久综合久久综合久久综合| 99精品福利视频| 美腿丝袜亚洲色图| 亚洲欧美一区二区视频| 黄色成人av网站| 欧美婷婷在线| 久色成人在线| 亚洲欧美日产图| 亚洲精品日日夜夜| 免费一级欧美片在线观看| 亚洲欧美中文字幕| 亚洲美女免费精品视频在线观看| 国产精品区一区二区三区| 欧美成人精品不卡视频在线观看 | 美女在线一区二区| 欧美激情影院| 久久国产精品久久久久久| 日韩视频在线一区二区三区| 牛牛影视久久网| 久久精品国产免费| 亚洲男人影院| 亚洲视频在线观看三级| 亚洲精品一区二区三区蜜桃久| 狠狠色狠狠色综合人人| 国产欧美亚洲日本|