| 项目搜索 |
| |
|
代码片段库:
查看代码片段
浏览
| 提交新的代码片段
| 创建代码包
mms协议中的快进快退
|
类型:
Sample Code (HOWTO) |
类别:
File Management
|
许可证:
GNU General Public License |
语言:
C
|
描述:
补充mplayer的mms协议部分([email protected] />
)
|
该代码片段的版本系列:
片段ID |
下载版本 |
提交时间 |
提交人 |
删除 |
4862 | 0.1 | 2005-09-19 10:13 | zhaott | |
点击"下载版本"来下载该代码片段.
最新版本的代码片段: 0.1
[email protected]
数字转换:
static double internalEndianMagic = 7.949928895127363e-275;//
#define TRIO_DOUBLE_INDEX(x) (((unsigned char *)&internalEndianMagic)[7-(x)])
double decimal64_to_number(unsigned char *values)
{
double result = 0;
int i = 0;
if(values != NULL)
{
for (i = 0; i < (int)sizeof(double); i++)
{
((unsigned char *)&result)[TRIO_DOUBLE_INDEX(i)] = values[i];
}
}
return result;
}
unsigned char* number_to_decimal64(double values,unsigned char* result)
{
int i = 0;
result[8]= 0;
for (i = 0; i < (int)sizeof(double); i++)
{
result[i] = ((unsigned char *)&values)[TRIO_DOUBLE_INDEX(i)];
}
return result;
}
快进快退
int asf_mmst_streaming_speed(stream_t *stream,int nspeed)
{
char data[40+1];
int i = 0;
unsigned char result[8+1];
char* s = 0;
memset (data, 0, 40);
memset (result, 0, 8+1);
net_empty(stream->fd);
memset(&asf_audio_packet,0,sizeof(demux_packet_t));
asf_audio_packet.len = 0;
memset(&asf_video_packet,0,sizeof(demux_packet_t));
asf_video_packet.len = 0;
s = number_to_decimal64(asf_frametime,result);
data[0]= s[7];
data[1]= s[6];
data[2]= s[5];
data[3]= s[4];
data[4]= s[3];
data[5]= s[2];
data[6]= s[1];
data[7]= s[0];
for(i = 8; i < 16; i ++)
{
data[i] = 0xFF;
}
data[20] = 0x04;
data[30] = 0x14;
if(nspeed > 0)
{
data[31] = 0x40;
}else{
data[31] = 0xC0;
}
asf_send_command (stream->fd, 0x28, 1, 0x0001FFFF, 32, data);
}
如果您修改了一个代码片段并且觉得很应该让别人共享,您可以把这作为这个代码片段的最新版本提交上来. |
|