⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 movfile.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 5 页
字号:

            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 + -