📄 movfile.c
字号:
break;
default:
MovFseek(videoFile, boxSize - FOURBYTE * 5, SEEK_CUR);
break;
}
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadStz2()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadStz2(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:
* MovReadStco()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadStco(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
uint32 length = 0x0;
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
MovFseek(videoFile, FOURBYTE, SEEK_CUR);
MovFread(&length, sizeof(uint32), 1, videoFile);
length = BYTESWAP(length);
switch (IsTheTrackVideo)
{
case SIGN_VIDEO:
pFileinf->videoChunkNum = length;
sVideoChunkOffsetIndex = (uint32 *)MALLOC(sizeof(uint32) * length);
if (sVideoChunkOffsetIndex == NULL)
{
return MALLOC_FAILED;
}
MovFread(sVideoChunkOffsetIndex, sizeof(uint32), length, videoFile);
break;
case SIGN_AUDIO:
pFileinf->audioChunkNum = length;
sAudioChunkOffsetIndex = (uint32 *)MALLOC(sizeof(uint32) * length);
if (sAudioChunkOffsetIndex == NULL)
{
return MALLOC_FAILED;
}
MovFread(sAudioChunkOffsetIndex, sizeof(uint32), length, videoFile);
break;
default:
MovFseek(videoFile, boxSize - (FOURBYTE << 2), SEEK_CUR);
break;
}
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadCo64()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadCo64(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:
* MovReadStss()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadStss(MOV_FILE *videoFile, MovFileinf *pFileinf, LONG boxSize)
{
uint32 entryCount = 0x0;
ASSERT((videoFile != NULL)
&& (pFileinf != NULL));
switch (IsTheTrackVideo)
{
case SIGN_VIDEO:
MovFseek(videoFile, FOURBYTE, SEEK_CUR);
/* read the number of random access video samples */
MovFread(&entryCount, sizeof(uint32), 1, videoFile);
entryCount = BYTESWAP(entryCount);
pFileinf->videoSyncSampleNo = entryCount;
if (pFileinf->videoSyncSampleNo > 0x0)
{
sVideoSyncSampleIndex = (uint32 *)MALLOC(sizeof(uint32) * pFileinf->videoSyncSampleNo);
if (sVideoSyncSampleIndex == NULL)
{
return MALLOC_FAILED;
}
MovFread(sVideoSyncSampleIndex, sizeof(uint32), pFileinf->videoSyncSampleNo, videoFile);
}
break;
default:
MovFseek(videoFile, boxSize - (FOURBYTE << 1), SEEK_CUR);
break;
}
return MOV_FILE_BOX_PARSE_SUCCESS;
}
/********************************************************************************************
* Func:
* MovReadStsh()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadStsh(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:
* MovReadPadb()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadPadb(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:
* MovReadStdp()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadStdp(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:
* MovReadSgpd()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadSgpd(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:
* MovReadSdtp()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadSdtp(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:
* MovReadSbgp()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadSbgp(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:
* MovReadSubs()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadSubs(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:
* MovReadVmhd()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadVmhd(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:
* MovReadSmhd()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadSmhd(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:
* MovReadHmhd()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadHmhd(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:
* MovReadNmhd()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadNmhd(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:
* MovReadDinf()
* Description:
*
* Param:
*
* Return:
* 0: OK.
* -1: Error.
* Author:
* guosl
* Date:
* 2008-5-16 10:30
* Log:
*
********************************************************************************************/
STATIC int MovReadDinf(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_DREF :
if (MovReadDref(videoFile, pFileinf, length))
{
return MOV_FILE_BOX_PARSE_ERR;
}
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -