⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hmedia.h

📁 通过使机器人进行简单的图像识别
💻 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 + -