作者vivimice (麦斯◎我的奶酪在哪里﹖)
看板Visual_Basic
标题[API] Stream Buffer Format
时间Wed Jul 27 15:24:11 2005
来源﹕mk:@MSITStore:E:\Microsoft%20Visual%20Studio\MSDN98\98VS\2052\
MultiMed.chm::/devdoc/live/pdgrmm/midi_67xw.htm
翻译﹕vivimice 智慧权所有
定位﹕平台SDK/Graphics and MultiMedia Services/MultiMedia Audio/
Musical Intrument Device Interface/About MIDI/Stream Buffers
原载﹕缥缈水云间 (bbs.freecity.cn)
Stream Buffer Format
流缓冲格式
The lpData member of the MIDIHDR structure points to a stream buffer, and the
dwBufferLength member specifies the actual size of this buffer. The
dwBytesRecorded member of MIDIHDR specifies the number of bytes in the buffer
that are actually used by the MIDI events; this value must be less than or
equal to the value specified by dwBufferLength.
MIDIHDR结构的lpData成员指向一个流缓冲﹔dwBufferLength成员指定这个缓冲的实际大
小﹔dwByteRecorded成员指定实际被MIDI事件使用的字节数﹐这个值必须小於等於在
dwBufferLength成员中指定的值。
Each of the MIDI events in the stream buffer is specified by a MIDIEVENT
structure, which contains the time for the event, a stream identifier, an
event code, and, when appropriate, parameters for the event. Each of these
MIDIEVENT structures must begin on a doubleword boundary. If necessary, pad
bytes must be added to the end of the structure to ensure that the next one
starts on a doubleword boundary.
在流缓冲之中﹐每个MIDI事件都是由MIDIEVENT定义的﹐MIDIEVENT包含了该事件的时间、
流标识符、该事件的事件码和该事件的参数(如果需要的话)。每个MIDIEVENT都必须放在
一个双字边界处(译者注﹕即每个MIDIEVENT在流缓冲中的位置都必须能被双字的长度
『一般为4』整除)。如果有必要的话﹐填充字节必须添加到前一个MIDIEVENT的结尾﹐使
得下一个MIDIEVENT正好位於一个双字边界。
译者注﹕
好像系统读取流缓冲中的事件是以一个DWORD为最小单位的﹐所以每个事件都必须以DWORD
的长度为最小单位对齐。一般情况下短事件的长度都是DWORD的整数倍﹐所以不用考虑对
齐的问题。长事件则必须在有效数据的後面填充一些无关数据(一般是0x00)使得整个事件
的长度是DWORD长度的整数倍。这样才能保证下一个事件的起始位置位於双字边界处。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.108.88.250