📄 movfile.c
字号:
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
MovFread(&vsfl,sizeof(DWORD), 1, videoFile);
vsfl = BYTESWAP(vsfl);
if (vsfl&0xff000000)
{
MovFseek(videoFile, FOURBYTE * 11, SEEK_CUR);
}
else
{
MovFseek(videoFile, FOURBYTE << 3, SEEK_CUR);
}
MovFread(&tag,sizeof(WORD),1, videoFile);
if (tag == SIGN_AUDIO)
{
IsTheTrackVideo = SIGN_AUDIO;
}
else
{
IsTheTrackVideo = SIGN_OTHER;
}
MovFseek(videoFile, 46, SEEK_CUR);
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadTref()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadTref(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
MovFseek(videoFile, boxSize - (FOURBYTE << 1), SEEK_CUR);
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadEdts()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadEdts(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
MovFseek(videoFile, boxSize - (FOURBYTE << 1), SEEK_CUR);
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadMdia()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadMdia(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
uint32 length = 0x0;
DWORD tag = 0x0;
uint32 sumLength = 0x0;
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
if (boxSize <= 8)
{
return MOV_FILE_BOX_PARSE_SUCCESS;
}
else
{
for (; ;)
{
MovFread(&length, sizeof(uint32), 1, videoFile);
length = BYTESWAP(length);
sumLength += length;
MovFread(&tag, sizeof(DWORD), 1, videoFile);
switch(tag)
{
case SIGN_MDHD :
if (MovReadMdhd(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
case SIGN_HDLR :
if (MovReadHdlr(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
case SIGN_MINF :
if (MovReadMinf(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
default :
MovFseek(videoFile, length - (FOURBYTE << 1), SEEK_CUR);
break;
}
if ((sumLength + (FOURBYTE << 1)) >= boxSize)
{
return MOV_FILE_BOX_PARSE_SUCCESS;
}
}//for
}//else
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadMvhd()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadMvhd(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
MovFseek(videoFile, boxSize - (FOURBYTE << 1), SEEK_CUR);
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadMvex()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadMvex(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
MovFseek(videoFile, boxSize - (FOURBYTE << 1), SEEK_CUR);
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadUdta()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadUdta(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
MovFseek(videoFile, boxSize - (FOURBYTE << 1), SEEK_CUR);
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadIpmc()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadIpmc(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
MovFseek(videoFile, boxSize - (FOURBYTE << 1), SEEK_CUR);
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadMeta()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadMeta(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
MovFseek(videoFile, boxSize - (FOURBYTE << 1), SEEK_CUR);
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadIpmc()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadTrak(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
uint32 length = 0x0;
DWORD tag = 0x0;
uint32 sumLength = 0x0;
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
IsTheTrackVideo = -1;
sUint32VideoDuration = 0x0;
sUint64VideoDuration = 0x0;
sVideoTimeScale = 0x1;
if (boxSize <= 8)
{
return MOV_FILE_BOX_PARSE_SUCCESS;
}
else
{
for (; ;)
{
/*read the size of the box */
MovFread(&length, sizeof(uint32), 1, videoFile);
length = BYTESWAP(length);
sumLength += length;
MovFread(&tag, sizeof(DWORD), 1, videoFile);
switch(tag)
{
case SIGN_TKHD :
if (MovReadTkhd(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
/*case SIGN_TREF :
if (MovReadTref(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
case SIGN_EDTS :
if (MovReadEdts(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;*/
case SIGN_MDIA :
if (MovReadMdia(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
/*case SIGN_UDTA :
if (MovReadUdta(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
case SIGN_META :
if (MovReadMeta(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;*/
default :
MovFseek(videoFile, length - (FOURBYTE << 1), SEEK_CUR);
break;
}
if ((sumLength + (FOURBYTE << 1)) >= boxSize)
{
return MOV_FILE_BOX_PARSE_SUCCESS;
}
}//for
}
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadFtyp()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadFtyp(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
MovFseek(videoFile, boxSize - (FOURBYTE << 1), SEEK_CUR);
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadMoov()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadMoov(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
uint32 length = 0x0;
DWORD tag = 0x0;
uint32 sumLength = 0x0;
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
if (boxSize <= 8)
{
return MOV_FILE_BOX_PARSE_SUCCESS;
}
else
{
for (; ;)
{
MovFread(&length, sizeof(uint32), 1, videoFile);
length = BYTESWAP(length);
sumLength += length;
MovFread(&tag, sizeof(DWORD), 1, videoFile);
switch(tag)
{
/*case SIGN_MVHD :
if (MovReadMvhd(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
case SIGN_MVEX :
if (MovReadMvex(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;*/
case SIGN_TRAK :
if (MovReadTrak(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
/*case SIGN_IPMC :
if (MovReadIpmc(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
case SIGN_UDTA :
if (MovReadUdta(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
case SIGN_META :
if (MovReadMeta(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;*/
default:
MovFseek(videoFile, length - (FOURBYTE << 1), SEEK_CUR);
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -