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

📄 movfile.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -