/*****************************************************************************/
/* tpkMpegInfo.h */
/* */
/* Includes FileInfo structures definition and functions declaration */
/* */
/*****************************************************************************/#ifndef _TPK_MPEGINFO_H_
#define _TPK_MPEGINFO_H_
#if defined(__cplusplus)
extern "C"
{
#endif#include <windows.h>#ifndef TPKRTDAPI
#define TPKRTDAPI __stdcall
#endif#ifdef _WIN32
#define far
#endif /***********************Error List********************************/
#define NO_SUCH_FILE 0x1
#define MEMORY_ALLOC_ERR 0x2
#define FILE_NOT_SUPPORT 0x3
/*********************End Error List******************************/typedef enum {
VP_VF_MPEG_I=1,
VP_VF_MPEG_II
}VIDEO_TYPE;typedef enum {
VP_ST_VIDEO=0,//mpeg video
VP_ST_AUDIO,//mpeg audio or uncompressed wav
VP_ST_PES,//mpeg pes
VP_ST_SYSTEM,//mpeg1
VP_ST_PROGRAM,//mpeg2 program stream
VP_ST_TRANSPORT_188,//mpeg2 transport stream,包长188
VP_ST_TRANSPORT_204 //mpeg2 transport stream,包长204
}SYSTEM_TYPE;/* structures definition *//*-- AUDIO_INFO struct ----*/
typedef struct
{
unsigned char ucStereo:4; /* 0= mono 1= stereo */
unsigned char ucLayer:4; /* 0= AC-3 1= Layer-I 2= Layer-II
3= Layer-III 4 = wav 15:NOT SUPPORTRF*/
unsigned char ucBitRateIndex:4 ;
unsigned char ucFreqIndex:4; /* 0 - 44100, 1 - 48000, 2 - 32000 Hz */
unsigned short unBitRate; /* Bit Rate (in K bits per second). */
unsigned char ucMode;
unsigned char ucModeExt;
unsigned short unSampFreq;
char szAudioMode[16];
} AUDIO_INFO , far *LP_AUDIO_INFO;/*-- TIME_CODE struct : from GOP */
typedef struct
{
unsigned char isDrop:1; /* drop frame flag */
unsigned char ucPic:7;
unsigned char ucSec;
unsigned char ucMin;
unsigned char ucHours;
} TIME_CODE, far *LP_TIME_CODE ; /* Sequence header info */
typedef struct
{
int dwOffSet; /* OffSet of Video Packet (Sequence Header for ES) from begining of file */
unsigned short unHorizSize;
unsigned short unVertSize;
unsigned char ucPelAspectRatio;
unsigned char ucChromaFormat;
unsigned char ucVideoFormat;
unsigned char ucFrameRate;
float fPicturePerSecond;
unsigned int dwBitRate;
}SEQ_INFO, far* LP_SEQ_INFO;/*--MAIN_VIDEO_INFO--*/
typedef struct tagMAIN_VIDEO_INFO
{
unsigned short unVPID;
unsigned char ucStreamID;
unsigned char fGetInfo:3;
unsigned char fSecondField:1;
unsigned char fGetPTS:3;
unsigned char fTimecode:1;//时码是否正常
VIDEO_TYPE VideoType;
SEQ_INFO SeqInfo;
__int64 qwFirstVPTS;
__int64 qwLastVPTS;
TIME_CODE FirstTimeCode;
TIME_CODE LastTimeCode;
unsigned char ucReserved[8];
struct tagMAIN_VIDEO_INFO *pNext;
}MAIN_VIDEO_INFO, far *LP_MAIN_VIDEO_INFO;/*--MAIN_AUDIO_INFO--*/
typedef struct tagMAIN_AUDIO_INFO
{
unsigned short unAPID;
unsigned char ucStreamID;
unsigned char fGetInfo:4;
unsigned char fGetPTS:4;
AUDIO_INFO AudioInfo;
__int64 qwFirstAPTS;
__int64 qwLastAPTS;
unsigned char ucReserved[8];
char szLanguage[20];
struct tagMAIN_AUDIO_INFO * pNext;
}MAIN_AUDIO_INFO, far *LP_MAIN_AUDIO_INFO;/*--SCR_INFO--*/
typedef struct
{
__int64 qwFirstSCRB;
__int64 qwLastSCRB;
}SCR_INFO, far *LP_SCR_INFO;/*-- SUBTITLE(DVD字幕) INFO struct --*/
typedef struct tagMAIN_SUBT_INFO
{
unsigned short unSubID;
char szLanguage[20];
struct tagMAIN_SUBT_INFO *pNext;
}MAIN_SUBT_INFO, far *LP_MAIN_SUBT_INFO;/*-- PROGRAM_TABLE struct --*/
typedef struct tagPROGRAM_TABLE
{
unsigned short unProgramNo;
unsigned short ucNumVideoStream:4;
unsigned short ucNumAudioStream:6;
unsigned short ucNumSubTitle:6;
unsigned int unMAPPID:13;
unsigned int unPCRPID:13;
unsigned int ucVerNum:6;
LP_SCR_INFO lpSCRInfo;
LP_MAIN_AUDIO_INFO lpMainAudio;
LP_MAIN_VIDEO_INFO lpMainVideo;
LP_MAIN_SUBT_INFO lpSubInfo;
unsigned char *pSubClut;
struct tagPROGRAM_TABLE *pNext;
}PROGRAM_TABLE,far *LP_PROGRAM_TABLE;
/*--STREAM_INFO--*/
typedef struct
{
int iOffset;
SYSTEM_TYPE StreamType;
unsigned short unVersion;
unsigned short unNumberofProgram;
PROGRAM_TABLE *lpProgramTable;
unsigned int dwMuxRate;
}STREAM_INFO,far *LP_STREAM_INFO;/* FileInfo function */
short TPKRTDAPI tpkFileInfo(LPCCH strFileName,LP_STREAM_INFO *lpInfo);
LP_STREAM_INFO TPKRTDAPI tpkFileInfoA(LPCCH strFileName);short TPKRTDAPI tpkFreeInfo(LP_STREAM_INFO lpInfo);unsigned int TPKRTDAPI tpkGetDuration(LPCCH strFileName);
float TPKRTDAPI tpkGetFrameRate(LPCCH strFileName);#if defined(__cplusplus)
}
#endif
#endif
*******上面是完整的H文件,里面有位段操作,如:
/*-- TIME_CODE struct : from GOP */
typedef struct
{
unsigned char isDrop:1; /* drop frame flag */
unsigned char ucPic:7;
unsigned char ucSec;
unsigned char ucMin;
unsigned char ucHours;
} TIME_CODE, far *LP_TIME_CODE ; 中的 unsigned char isDrop:1; /* drop frame flag */
unsigned char ucPic:7;
做过的朋友希望能帮忙翻译下,十分感谢,能全部翻译更好,可加分,因为我翻译的其他语句自己不知道是否正确!!! 真有点想现金求教了啊!!!
/* tpkMpegInfo.h */
/* */
/* Includes FileInfo structures definition and functions declaration */
/* */
/*****************************************************************************/#ifndef _TPK_MPEGINFO_H_
#define _TPK_MPEGINFO_H_
#if defined(__cplusplus)
extern "C"
{
#endif#include <windows.h>#ifndef TPKRTDAPI
#define TPKRTDAPI __stdcall
#endif#ifdef _WIN32
#define far
#endif /***********************Error List********************************/
#define NO_SUCH_FILE 0x1
#define MEMORY_ALLOC_ERR 0x2
#define FILE_NOT_SUPPORT 0x3
/*********************End Error List******************************/typedef enum {
VP_VF_MPEG_I=1,
VP_VF_MPEG_II
}VIDEO_TYPE;typedef enum {
VP_ST_VIDEO=0,//mpeg video
VP_ST_AUDIO,//mpeg audio or uncompressed wav
VP_ST_PES,//mpeg pes
VP_ST_SYSTEM,//mpeg1
VP_ST_PROGRAM,//mpeg2 program stream
VP_ST_TRANSPORT_188,//mpeg2 transport stream,包长188
VP_ST_TRANSPORT_204 //mpeg2 transport stream,包长204
}SYSTEM_TYPE;/* structures definition *//*-- AUDIO_INFO struct ----*/
typedef struct
{
unsigned char ucStereo:4; /* 0= mono 1= stereo */
unsigned char ucLayer:4; /* 0= AC-3 1= Layer-I 2= Layer-II
3= Layer-III 4 = wav 15:NOT SUPPORTRF*/
unsigned char ucBitRateIndex:4 ;
unsigned char ucFreqIndex:4; /* 0 - 44100, 1 - 48000, 2 - 32000 Hz */
unsigned short unBitRate; /* Bit Rate (in K bits per second). */
unsigned char ucMode;
unsigned char ucModeExt;
unsigned short unSampFreq;
char szAudioMode[16];
} AUDIO_INFO , far *LP_AUDIO_INFO;/*-- TIME_CODE struct : from GOP */
typedef struct
{
unsigned char isDrop:1; /* drop frame flag */
unsigned char ucPic:7;
unsigned char ucSec;
unsigned char ucMin;
unsigned char ucHours;
} TIME_CODE, far *LP_TIME_CODE ; /* Sequence header info */
typedef struct
{
int dwOffSet; /* OffSet of Video Packet (Sequence Header for ES) from begining of file */
unsigned short unHorizSize;
unsigned short unVertSize;
unsigned char ucPelAspectRatio;
unsigned char ucChromaFormat;
unsigned char ucVideoFormat;
unsigned char ucFrameRate;
float fPicturePerSecond;
unsigned int dwBitRate;
}SEQ_INFO, far* LP_SEQ_INFO;/*--MAIN_VIDEO_INFO--*/
typedef struct tagMAIN_VIDEO_INFO
{
unsigned short unVPID;
unsigned char ucStreamID;
unsigned char fGetInfo:3;
unsigned char fSecondField:1;
unsigned char fGetPTS:3;
unsigned char fTimecode:1;//时码是否正常
VIDEO_TYPE VideoType;
SEQ_INFO SeqInfo;
__int64 qwFirstVPTS;
__int64 qwLastVPTS;
TIME_CODE FirstTimeCode;
TIME_CODE LastTimeCode;
unsigned char ucReserved[8];
struct tagMAIN_VIDEO_INFO *pNext;
}MAIN_VIDEO_INFO, far *LP_MAIN_VIDEO_INFO;/*--MAIN_AUDIO_INFO--*/
typedef struct tagMAIN_AUDIO_INFO
{
unsigned short unAPID;
unsigned char ucStreamID;
unsigned char fGetInfo:4;
unsigned char fGetPTS:4;
AUDIO_INFO AudioInfo;
__int64 qwFirstAPTS;
__int64 qwLastAPTS;
unsigned char ucReserved[8];
char szLanguage[20];
struct tagMAIN_AUDIO_INFO * pNext;
}MAIN_AUDIO_INFO, far *LP_MAIN_AUDIO_INFO;/*--SCR_INFO--*/
typedef struct
{
__int64 qwFirstSCRB;
__int64 qwLastSCRB;
}SCR_INFO, far *LP_SCR_INFO;/*-- SUBTITLE(DVD字幕) INFO struct --*/
typedef struct tagMAIN_SUBT_INFO
{
unsigned short unSubID;
char szLanguage[20];
struct tagMAIN_SUBT_INFO *pNext;
}MAIN_SUBT_INFO, far *LP_MAIN_SUBT_INFO;/*-- PROGRAM_TABLE struct --*/
typedef struct tagPROGRAM_TABLE
{
unsigned short unProgramNo;
unsigned short ucNumVideoStream:4;
unsigned short ucNumAudioStream:6;
unsigned short ucNumSubTitle:6;
unsigned int unMAPPID:13;
unsigned int unPCRPID:13;
unsigned int ucVerNum:6;
LP_SCR_INFO lpSCRInfo;
LP_MAIN_AUDIO_INFO lpMainAudio;
LP_MAIN_VIDEO_INFO lpMainVideo;
LP_MAIN_SUBT_INFO lpSubInfo;
unsigned char *pSubClut;
struct tagPROGRAM_TABLE *pNext;
}PROGRAM_TABLE,far *LP_PROGRAM_TABLE;
/*--STREAM_INFO--*/
typedef struct
{
int iOffset;
SYSTEM_TYPE StreamType;
unsigned short unVersion;
unsigned short unNumberofProgram;
PROGRAM_TABLE *lpProgramTable;
unsigned int dwMuxRate;
}STREAM_INFO,far *LP_STREAM_INFO;/* FileInfo function */
short TPKRTDAPI tpkFileInfo(LPCCH strFileName,LP_STREAM_INFO *lpInfo);
LP_STREAM_INFO TPKRTDAPI tpkFileInfoA(LPCCH strFileName);short TPKRTDAPI tpkFreeInfo(LP_STREAM_INFO lpInfo);unsigned int TPKRTDAPI tpkGetDuration(LPCCH strFileName);
float TPKRTDAPI tpkGetFrameRate(LPCCH strFileName);#if defined(__cplusplus)
}
#endif
#endif
*******上面是完整的H文件,里面有位段操作,如:
/*-- TIME_CODE struct : from GOP */
typedef struct
{
unsigned char isDrop:1; /* drop frame flag */
unsigned char ucPic:7;
unsigned char ucSec;
unsigned char ucMin;
unsigned char ucHours;
} TIME_CODE, far *LP_TIME_CODE ; 中的 unsigned char isDrop:1; /* drop frame flag */
unsigned char ucPic:7;
做过的朋友希望能帮忙翻译下,十分感谢,能全部翻译更好,可加分,因为我翻译的其他语句自己不知道是否正确!!! 真有点想现金求教了啊!!!
解决方案 »
- 瞧一瞧,看一看,小弟有个问题,没有解决,请各位高手帮忙,已经困扰几天了。。。。。
- 如何实现端口的映射,请帮帮忙
- 请问Raize中的TOOLBUTTON的DrowDownMenu怎么用呀?
- 链表节点之间的访问的问题
- 怎样控制在Delphi中取数据集中的任意的数据。。。
- [求助]delphi internet控件与jquery mobile开发
- 今天过节,放点分,呵呵
- 兄弟们!帮我出出主意﹐我感觉自己受骗了上担了!!
- 非高手勿看,挑战高手
- 我不想用BDE、ADO使用程序能对一个数据表中读取数据
- Delphi 如何在文本文件中删除指定的文本内容(需要保存原来文本文件内容)
- 请教如何去字符串中引号的值啊!?
typedef short (*tpkCALLBACK)(short, LPVOID, LPDWORD);把这个也帮忙翻译下
type
TMyBit=0..7;
TMyBits=set of TMyBit;
...
var
Mybits:TMyBits;
f:File;
i:Integer;
...
MyBits:=[]; //b00000000
i:=0;
MyBits:=MyBits+[i]; //b00000001
MyBits:=MyBits+[1]; //b00000011
MyBits:=MyBits+[7]; //b10000011
MyBits:=MyBits-[7]; //b00000011
MyBits:=[0..7]; //b11111111
AssignFile(f,'c:\test.data');
Rewrite(f,1);
BlockWrite(f,MyBits,1);
CloseFile(f);
一个函数指针的类型
akirya(坏[其实偶不是什么所谓的坏人])
------------
谢谢,我看的不大懂,能否帮忙翻译下,又要出差了,郁闷,带着问题上路,,,小公司,做技术还要做市场,请继续支持,万分感谢!!!!!!!!!!
{
....具体实现
}
tpkCALLBACK xxx = func;
tpkCALLBACK( ... );这个时候就等价与func( ... );
------------------
大哥,我还真不会,概念都忘了,以前的忘完了,说下什么书有介绍,去图书馆做一天,,我现在手上没有这方面的书,,,大学都时在星级中过来的,基础没打好啊,看着你们的方法来自责, 哎,悔时已晚,已经折腾了两个礼拜了
typedef struct
{
unsigned char isDrop:1; /* drop frame flag */
unsigned char ucPic:7;
unsigned char ucSec;
unsigned char ucMin;
unsigned char ucHours;
} TIME_CODE, far *LP_TIME_CODE ;
在C中可以写xx.isProp = 1;xx.ucPic = 48等,而在Delphi中只能这样定义:
PTime_Code = ^TTime_Code;
LPTime_Code = PTime_Code;
TTime_Code = packed record
isDrop_ucPic: Byte; // 2个位段刚好8字节
ucSec: Byte;
....
end;
操作时如上面的C代码可以写成:xx.isDrop_ucPic := 1;xx.isDrop_ucPic := 48 shl 1;
set替代最好适用位段全为1的字段,否则也很麻烦。至于
typedef short (*tpkCALLBACK)(short, LPVOID, LPDWORD);
可以写成:type
tpkCALLBACK = function(p1: SmallInt; p2: Pointer; p3: PLongWord): SmallInt;
应该是个回调函数,可以写成:type
tpkCALLBACK = function(p1: SmallInt; p2: Pointer; p3: PLongWord): SmallInt; stdcall;
{
unsigned char isDrop:1; /* drop frame flag */
unsigned char ucPic:7;
unsigned char ucSec;
unsigned char ucMin;
unsigned char ucHours;
} TIME_CODE, far *LP_TIME_CODE ;
在C中可以写xx.isProp = 1;xx.ucPic = 48等,而在Delphi中只能这样定义:
PTime_Code = ^TTime_Code;
LPTime_Code = PTime_Code;
TTime_Code = packed record
isDrop_ucPic: Byte; // 2个位段刚好8字节
ucSec: Byte;
....
end;
操作时如上面的C代码可以写成:xx.isDrop_ucPic := 1;xx.isDrop_ucPic := 48 shl 1;
----------------------------
xx.isDrop_ucPic := 1;xx.isDrop_ucPic := 48 shl 1;
这里xx.isDrop_ucPic := 1;中的1是表示 unsigned char isDrop:1; 中的1 吗?
xx.isDrop_ucPic := 48 shl 1;------这语句怎么介绍啊?为什么要用48 shl 1呢?
我对这方面的基础不熟悉,多说下啊,QQ有朋友给我发了一个翻译,但我看不懂每个语句的意思,所以不能对其他语句进行操作,,,谢谢对解释下语句的意思!!!
typedef struct
{
unsigned char isDrop:1; /* 这里的1不是初值,而是定义这个变量为二进制的1个位 */
unsigned char ucPic:7; /* 同样,定义这个变量为二进制的7个位 */
unsigned char ucSec;
unsigned char ucMin;
unsigned char ucHours;
} TIME_CODE, far *LP_TIME_CODE ;C代码举例:xx.isProp = 1;因为isProp只有一个位,其值只能是1或0
xx.ucPic = 48;upPic有7个位,最大值为127,例子赋值48在Delphi中
TTime_Code = packed record
isDrop_ucPic: Byte; // 2个位段刚好8字节,所以合并为一个字节
ucSec: Byte;
....
end;将上面C例子翻译过来,原isDrop在isDrop_ucPic中占据第一个位,即0位,所以可直接写xx.isDrop_ucPic := 1;(反复强调,原来的unsigned char isDrop:1;不是给的初值,而是C位域字段的定义形式)
而原upPic占据isDrop_ucPic的1-7位,要将原来ucPic赋值48,必须左移1个位,即让过isDrop占据的0位,所以表达式变为了xx.isDrop_ucPic := 48 shl 1;这样才和上面C例子中的赋值过程相符。不知道我上面解释明白没有,如果你听不明白,证明你对二进制和C的位域概念不清楚,请先搞清楚这些概念就明白了,否则,再怎么解释你也不会明白!
----------
你也在啊,我现在明白些了,非常谢你的回复!!!我再好好看下,看来我还是概念太陌生了,我已经怕解决这个问题了。再次谢谢你的热情指教!
原结构中unsigned char isDrop:1;表示占据一个位,因这个变量在最前面,所以占据了0位;unsigned char ucPic:7;占7个位只能占据1 - 7位的位置了,和起来就是delphi记录的isDrop_ucPic,见下图。
isDrop_ucPic: x xxxxxxx
isDrop ucPic如果给isDrop=1相当于isDrop_ucPic=1,但是如果ucPic=1,相对IsDrop_ucPic来说,其实是2,加起来为3,所以Delphi中写为isDrop_ucPic := 1 shl 1,前面unPic = 48也是一个道理,相当于isDrop_ucPic = 96,写成Delphi的isDrop_ucPic := 48 shl 1,图示如下:isDrop_ucPic=99: 1 0000110
isDrop=1 ucPic=48
原结构中unsigned char isDrop:1;表示占据一个位,因这个变量在最前面,所以占据了0位;unsigned char ucPic:7;占7个位只能占据1 - 7位的位置了,和起来就是delphi记录的isDrop_ucPic,见下图。
isDrop_ucPic: xxxxxxx x
ucPic isDrop如果给isDrop=1相当于isDrop_ucPic=1,但是如果ucPic=1,相对IsDrop_ucPic来说,其实是2,加起来为3,所以Delphi中写为isDrop_ucPic := 1 shl 1,前面unPic = 48也是一个道理,相当于isDrop_ucPic = 96,写成Delphi的isDrop_ucPic := 48 shl 1,图示如下:isDrop_ucPic=97: 0110000 1
ucPic=48 isDrop=1