📄 hmedia.h
字号:
/********************************************************************
*
* =-----------------------------------------------------------------=
* = ____ _________ =
* = / _ \ \___ __/ =
* = / /_/ / ____ / / =
* = / _ \ ● / _ \ / / =
* = / /_/ // // / / // / =
* = \______//_//_/ /_//_/ =
* = =
* = Copyright (c) BIN Technology studio,2004 =
* = LET'Z BT =
* =-----------------------------------------------------------------=
*
* FileName : hMedia.h
* Description : 视频和声音的接口定义
* 视频主要支持avi格式,mpeg也可以
* 2D音频支持mp3
* 3D音频支持wav
*
* Author : 风间苍月(TuQbasic)
* Email : tuqbasic@sohu.com
*
* Create : 2003.08.07
* LastChange : 2004.02.03
*
* History :
********************************************************************/
#pragma once
#include "hXFile.h"
#include "hPackage.h"
#include "ddraw.h"
// 播放CD上的nTrack音轨
SAM_API void PlayCD(int nTrack);
// 停止播放
SAM_API void StopCD(void);
// *************************************************************************
// *-----------------------视频播放,需要自己处理帧的显示-------------------
class IAVIPlayer : public ITUnknown
{
public:
virtual ~IAVIPlayer(void) {}
// 渲染文件,失败返回false
virtual bool RenderFile(const char * szFileName/*被渲染的文件*/,
LPDIRECTDRAW7 pDD/*渲染需要的DirectDraw*/) = 0;
// 设置被绘制的图面和目标矩形,视频图像将会写入于此
//
// 失败返回false
virtual bool SetRenderTarget(LPDIRECTDRAWSURFACE7 pDS/*被绘制的图面*/,
RECT * rect= NULL/*被绘制到的目标矩形*/,
bool bLockScale= false/*是否保持比例*/) = 0;
// 停止渲染,关闭文件
virtual void CloseRender(void) = 0;
// 从头开始播放
virtual bool Play(void) = 0;
// 绘制下一帧到目标图面,返回false表明视频结束或有错误发生
virtual bool UpdateFrame(void) = 0;
// 停止播放,并定位到起始位置
virtual void Stop(void) = 0;
// 暂停
virtual bool Pause(void) = 0;
// 继续从最新的Pause点或Seek点播放
virtual bool Continue(void) = 0;
// 设置播放速度倍数
virtual bool SetRate(double fRate) = 0;
// 定位媒体,lTime为毫秒计时
virtual bool Seek(long lTime) = 0;
// 设置音量volumne= 0...1增强
virtual bool SetVolume(float volume) = 0;
// 设置声音平衡balance= -1...1
virtual bool SetBalance(float balance) = 0;
// 或得视频的宽和高,失败返回-1
virtual long GetVideoWidth(void) = 0;
virtual long GetVideoHeight(void) = 0;
};
typedef IAVIPlayer * LPI_AVIPLAYER;
// *************************************************************************
// -------------------------MP3音频播放接口---------------------------------
class IMP3Player : public ITUnknown
{
public:
virtual ~IMP3Player(void) {}
// 加载MP3,指定其id,加载文件失败或id已存在则返回false
virtual bool LoadMP3(const char *szFileName, long id) = 0;
// 释放指定id的音乐资源
virtual bool ReleaseMusic(long id) = 0;
// 从头开始播放
virtual bool PlayMusic(long id) = 0;
// 停止播放,并定位到起始位置
virtual bool StopMusic(long id) = 0;
// 暂停
virtual bool Pause(long id) = 0;
// 继续从最新的Pause点或Seek点播放
virtual bool Continue(long id) = 0;
// 获取音乐的时间长度,毫秒计数
virtual unsigned long GetLength(long id) = 0;
// 设置播放速度倍数
virtual bool SetRate(double fRate, long id) = 0;
// 定位音乐时间,lTime为毫秒计时
virtual bool Seek(long lTime, long id) = 0;
// 设置音量volume= 0...1增强
virtual bool SetMusicVolume(float volumne, long id) = 0;
// 设置左右平衡balance= -1...1
virtual bool SetMusicBalance(float balance, long id) = 0;
};
typedef IMP3Player * LPI_MP3PLAYER;
// *************************************************************************
// *--------------------------3D音效播放接口--------------------------------
class IWAVPlayer : public ITUnknown
{
public:
virtual ~IWAVPlayer(void) {}
// 加载WAV,pPackFile指定压缩包,加载文件按失败或id已存在则返回false
virtual bool LoadWAV(const char *szFileName, long id, LPI_PACKAGE pPackFile= NULL) = 0;
// 释放音乐资源
virtual bool ReleaseAudio(long id) = 0;
// 设置循环播放次数,-1为无穷
virtual bool SetRepeats(long lRepeats, long id) = 0;
// 从头开始播放
virtual bool PlayAudio(long id) = 0;
// 停止播放,并定位到起始位置
virtual bool StopAudio(long id) = 0;
// 获取音乐的时间长度,毫秒计数
virtual unsigned long GetLength(long id) = 0;
// 设置声音在世界的位置
virtual bool SetAudioPos(float x, float y, float z, long id) = 0;
// 设置音量,volume= 0...1增强
virtual bool SetAudioVolume(float volume, long id) = 0;
// 设置和获取听者在世界中的坐标,面向和头顶指向
virtual void SetListenerPos(float x, float y, float z) = 0;
virtual void GetListenerPos(float *x, float *y, float *z) = 0;
virtual void SetListenerFace(float x, float y, float z) = 0;
virtual void GetListenerFace(float *x, float *y, float *z) = 0;
virtual void SetListenerUp(float x, float y, float z) = 0;
virtual void GetListenerUp(float *x, float *y, float *z) = 0;
// 激活对听者的设置,在SetListener之后调用该函数使设置生效
virtual bool SetListener(void) = 0;
};
typedef IWAVPlayer * LPI_WAVPLAYER;
// *************************************************************************
// *-----------------------创建播放器对象-----------------------------------
SAM_API LPI_AVIPLAYER CreateAVIPlayer(void);
SAM_API LPI_MP3PLAYER CreateMP3Player(void);
SAM_API LPI_WAVPLAYER CreateWAVPlayer(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -