亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? qt_parse.c

?? dm270 source code
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*-----------------------------------------------------------------------------\
@ModuleName  :: qt.c

@Description :: Quick Time Wrapper for MJPEG , H263, MPEG-4 bitstream

                For info about Quick Time File Format see QTFF reference at
                http://developer.apple.com/techpubs/quicktime/qtdevdocs/QTFF/qtff.html

@Copyright   :: Copyright 2001- Texas Instruments, Inc.

@History     ::
-------------------------------------------------------------------------------

    Dec.  26, 2001  Kedar C (kedarc@ti.com) Start


\-----------------------------------------------------------------------------*/


/* include files    */

#include <string.h>
#include <qtff/qt.h>
#include <qtff/qt_parse.h>


/* Module Routines  */

/*-----------------------------------------------------------------------------\
@RoutineName :: QTShowParams

@Description ::
    Display the MOOV_Info struct on stdout


@Parameters  ::
    MOOV_Info *moov     ::  QT Configuration structure to be displayed

@Return      ::
    E_PASS,     success
    E_DEVICE,  failure
\-----------------------------------------------------------------------------*/
STATUS  QTShowParams(QTParams *prmQT) {
    printf("\n");
    printf("\n  QuickTime File Format Parameters :");
    printf("\n  ==================================");
    printf("\n");
	#if QT_DEBUG
    printf("\n  Videosize           : %ld", prmQT->Videosize        );
	#endif
    printf("\n  DataFormat          : %c%c%c%c",
                (char)( prmQT->DataFormat >> 24) , (char)( prmQT->DataFormat >> 16 ) & 0xFF ,
                (char)( prmQT->DataFormat >> 8 ) & 0xFF, (char)prmQT->DataFormat  & 0xFF  );

    printf("\n  Duration            : %ld.%ld secs", prmQT->Scount / prmQT->FrameRate,
                                    (prmQT->Scount % prmQT->FrameRate)*( 60 / prmQT->FrameRate )         );
    printf("\n  Sample Count        : %ld", prmQT->Scount           );
    printf("\n  SampleDuration      : %ld", prmQT->SampleDuration   );
    printf("\n  Timescale           : %ld", prmQT->Timescale        );
    printf("\n  FrameRate           : %ld", prmQT->FrameRate        );
    printf("\n  Width               : %d", prmQT->Width            );
    printf("\n  Height              : %d", prmQT->Height           );
	#if QT_DEBUG
    printf("\n  MediaTime           : %ld", prmQT->MediaTime        );
    printf("\n  MediaRate           : %d.%d", (Uint16)(prmQT->MediaRate >> 16), (Uint16)(prmQT->MediaRate & 0xFFFF ));
    printf("\n  GraphicsMode        : 0x%x", prmQT->GraphicsMode     );

    printf("\n  TemporalQuality     : %ld", prmQT->TemporalQuality  );
    printf("\n  SpatialQuality      : %ld", prmQT->SpatialQuality   );
    printf("\n  Hres (pixels/inch)  : %d.0", prmQT->Hres );
    printf("\n  Vres (pixels/inch)  : %d.0", prmQT->Vres );
    printf("\n  FramePerSample      : %d", prmQT->FramePerSample   );
    printf("\n  ColorDepth          : %d-bit", prmQT->ColorDepth       );
    printf("\n  FieldCount          : %d", prmQT->FieldCount       );
    printf("\n  FieldOrdering       : %d", prmQT->FieldOrdering    );
    printf("\n  KeyFrameInterval    : %d", prmQT->KeyFrameInterval );
	#endif
	printf("\n  Video Chunk Offset  : %ld", prmQT->ChunkOffset);
    if( prmQT->SsizeConst == FALSE ) {
        #if QT_DEBUG
        Uint32 i;

        printf("\n  Sample size Array ( hex ):");

        for( i=0; i<prmQT->Scount; i++) {
            if( i%10 == 0 )
                printf("\n    ");
            printf("%6lx ", prmQT->Ssize[i]);

        } 
        #endif
    } else {
        printf("\n  Const SampleSize     : 0x%lx", prmQT->Ssize[0]    );
    }
    if( prmQT->audioPrmQT.IncludeAudio) {
		#if QT_DEBUG
        printf("\n  Audio data size     : %d", prmQT->audioPrmQT.AudioDataSize);
        printf("\n  Audio Sampling Rate : %d", prmQT->audioPrmQT.SamplingRate);
        printf("\n  Audio Channels      : %d", prmQT->audioPrmQT.AudioChannels);
		#endif
		printf("\n  Audio Chunk Offset  : %ld", prmQT->audioPrmQT.ChunkOffset);
    }
    printf("\n");
    printf("\n");

    return E_PASS;
}

/*-----------------------------------------------------------------------------\

    QT Parser Routines

\-----------------------------------------------------------------------------*/

static MOOV_Info moov;	

/*-----------------------------------------------------------------------------\
@RoutineName :: QTParseMOOVAtom

@Description ::
    Parse the Movie Atom

@Parameters  ::
    Uint8 *start        ::  Pointer to start of MOOV Atom
    Uint32 size          ::  Size of MOOV Atom
    MOOV_Info *moov     ::  QT Configuration structure


@Return      ::
    E_PASS,     success
    E_DEVICE,  failure
\-----------------------------------------------------------------------------*/
STATUS QTParseMOOVAtom(Uint8 *start, Uint32 size, QTParams *prmQT) {
    Uint32 tag;
    Uint8 *cur;
    Uint8 *end;
	Uint8 i;

    size = get_word32( start );
    tag  = get_word32( start + 4 );

    if( tag != QT_MOOV_TAG )
        return E_DEVICE;

    end = start + size;
    cur = start + 8;
	i   = 0;

	moov.trak[0].mdia.minf.stbl.stsz.sampleSizeTable = prmQT->Ssize;
	moov.trak[1].mdia.minf.stbl.stsz.sampleSizeTable = prmQT->Ssize;

    while(cur < end) {
        size = get_word32( cur );
        tag  = get_word32( cur + 4 );

        switch( tag ) {
            case QT_MVHD_TAG :
                QTParseMVHDAtom( cur , size, &moov.mvhd );
                break;
            case QT_TRAK_TAG :
				if(i<MAX_TRAK_ATOMS) {
					QTParseTRAKAtom( cur , size, &moov.trak[i]);
					i++;
				}	
                break;
            default :
                /* tag not supported or no useful info in tag   */
                break;
        }
        cur += size;
    }

    // fill prmQT based on MOOV_Info data
	prmQT->audioPrmQT.IncludeAudio = FALSE;
	{
		Uint8 j;

		prmQT->Timescale = moov.mvhd.timescale;
		prmQT->Duration  = moov.mvhd.duration;

		for(j=0; j<i; j++) {
			TRAK_Info *trak;
			STBL_Info *stbl;

			trak = &moov.trak[j];
			stbl = &trak->mdia.minf.stbl;
			
			if(trak->mdia.hdlr.compSubType==COMP_SUB_TYPE_VIDE)	{
				prmQT->Width = trak->tkhd.width;
				prmQT->Height= trak->tkhd.height;
				prmQT->DataFormat = stbl->stsd.dataformat;
				prmQT->Scount = stbl->stsz.sampleCount;
				prmQT->SsizeConst = (BOOL)stbl->stsz.sampleSizeConst;
				prmQT->ChunkOffset = stbl->stco.chunkOffset;
			}
			if(trak->mdia.hdlr.compSubType==COMP_SUB_TYPE_SOUN)	{
				prmQT->audioPrmQT.IncludeAudio = TRUE;
				prmQT->audioPrmQT.ChunkOffset  = stbl->stco.chunkOffset;
			}	
		}
	}
	if(prmQT->Scount==0)
		prmQT->Scount=1;
	
	prmQT->SampleDuration = prmQT->Duration/prmQT->Scount;
	
	if(prmQT->SampleDuration==0)
		prmQT->SampleDuration=1;

	prmQT->FrameRate      = prmQT->Timescale/prmQT->SampleDuration;

	if(prmQT->FrameRate==0)  
		prmQT->FrameRate=1;
	
    return E_PASS;
}


/*-----------------------------------------------------------------------------\
@RoutineName :: QTParseMVHDAtom

@Description ::
    Parse the Movie Header Atom

@Parameters  ::
    Uint8     *start        ::  Pointer to start of Atom
    Uint32    size          ::  Size of Atom
    MVHD_Info *mvhd         ::  MVHD Info


@Return      ::
    E_PASS,     success
    E_DEVICE,  failure
\-----------------------------------------------------------------------------*/
STATUS QTParseMVHDAtom( Uint8 *start , Uint32 size, MVHD_Info *mvhd) {
    mvhd->timescale = get_word32( start + QT_TIMESCALE_OFFSET );
    mvhd->duration  = get_word32( start + QT_DURATION_OFFSET  );
    return E_PASS;
}

/*-----------------------------------------------------------------------------\
@RoutineName :: QTParseTRAKAtom

@Description ::
    Parse the Track Atom

@Parameters  ::
    Uint8 *start        ::  Pointer to start of Atom
    Uint32 size         ::  Size of Atom
    TRAK_Info *trak     ::  TRAK Info


@Return      ::
    E_PASS,     success
    E_DEVICE,  failure
\-----------------------------------------------------------------------------*/
STATUS QTParseTRAKAtom( Uint8 *start , Uint32 size, TRAK_Info *trak) {
    Uint32 tag;
    Uint8 *cur;
    Uint8 *end;

    end = start + size;
    cur = start + 8;

    while(cur < end) {
        size = get_word32( cur );
        tag  = get_word32( cur + 4 );

        switch( tag ) {
            case QT_TKHD_TAG :
                QTParseTKHDAtom( cur , size, &trak->tkhd);
                break;
            case QT_MDIA_TAG :
                QTParseMDIAAtom( cur , size, &trak->mdia);
                break;
            default :
                /* tag not supported or no useful info in tag   */
                break;
        }
        cur += size;
    }

    return E_PASS;
}

/*-----------------------------------------------------------------------------\
@RoutineName :: QTParseTKHDAtom

@Description ::
    Parse the Track Header Atom

@Parameters  ::
    Uint8 *start        ::  Pointer to start of Atom

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区免费在线观看| 国产午夜精品理论片a级大结局 | 黑人精品欧美一区二区蜜桃| 国产99久久久久久免费看农村| 欧美色倩网站大全免费| 国产目拍亚洲精品99久久精品| 亚洲电影在线播放| 99国产精品一区| 26uuu国产电影一区二区| 亚洲永久免费av| 99re这里都是精品| 国产欧美综合在线观看第十页| 成人丝袜高跟foot| av不卡一区二区三区| 欧美视频在线一区| 中文字幕不卡在线播放| 国内精品视频666| 欧美一卡2卡3卡4卡| 一区二区三区在线播放| 成人午夜激情视频| 欧美精品一区二区三区很污很色的 | 国产91清纯白嫩初高中在线观看| 欧美日韩一区中文字幕| 中文字幕中文字幕在线一区 | 大白屁股一区二区视频| 色一区在线观看| 97久久精品人人澡人人爽| 久久久亚洲欧洲日产国码αv| 日本视频一区二区三区| 欧美日韩国产片| 亚洲一区二区视频在线观看| 色婷婷激情综合| 亚洲免费观看在线观看| av欧美精品.com| 亚洲私人影院在线观看| 不卡的电影网站| 国产精品麻豆网站| 成人久久视频在线观看| 国产精品毛片久久久久久| 成人不卡免费av| 国产精品久久久久久亚洲毛片 | 91成人免费电影| 精品无人码麻豆乱码1区2区| 在线播放日韩导航| 日韩高清一级片| 91精品国产综合久久久久久久 | 欧美午夜不卡视频| 天天av天天翘天天综合网| 欧美精品 国产精品| 日韩高清一区二区| 欧美精品一区二区久久婷婷| 国产精品69毛片高清亚洲| 国产精品久久一卡二卡| 欧美午夜精品一区二区蜜桃| 美女精品一区二区| 国产偷国产偷精品高清尤物| 91在线porny国产在线看| 亚洲在线视频免费观看| 精品国产免费一区二区三区四区 | 日韩中文字幕区一区有砖一区| 欧美日韩精品二区第二页| 日精品一区二区三区| 欧美精品一级二级三级| 国内成人自拍视频| 亚洲一区二三区| 精品久久久三级丝袜| jvid福利写真一区二区三区| 亚洲444eee在线观看| 久久综合久久综合久久综合| kk眼镜猥琐国模调教系列一区二区| 亚洲最大成人综合| 久久综合成人精品亚洲另类欧美| 不卡一卡二卡三乱码免费网站| 亚洲成av人片www| 国产精品欧美经典| 日韩精品一区二区三区中文不卡| 精品免费国产二区三区 | 亚洲免费看黄网站| 欧美va亚洲va在线观看蝴蝶网| 成人国产电影网| 久久精品av麻豆的观看方式| 亚洲美女视频在线观看| 久久久久99精品一区| 欧美日韩国产成人在线91| 成人免费毛片高清视频| 精品一区二区三区欧美| 亚洲第一激情av| 亚洲女人小视频在线观看| 久久久国产精华| 日韩欧美中文一区| 欧美日韩一级黄| 91黄视频在线| 成人丝袜高跟foot| 国产成人自拍网| 久久不见久久见免费视频7| 亚洲一区二区精品视频| 亚洲欧美成人一区二区三区| 国产拍揄自揄精品视频麻豆| 欧美大片一区二区| 欧美一区二区三区在线观看| 成人av在线资源网站| 欧美一区二区三区思思人| 色综合久久精品| av电影天堂一区二区在线观看| 久久97超碰色| 另类的小说在线视频另类成人小视频在线| 一区二区三区视频在线观看| 国产精品二三区| 欧美高清一级片在线观看| 久久久久久久久久久久电影 | 欧美色涩在线第一页| 色吧成人激情小说| 色综合久久88色综合天天免费| 国产a级毛片一区| 成人免费视频国产在线观看| 国产91丝袜在线播放九色| 国产高清成人在线| 国产成人av网站| 成人一区二区三区视频在线观看 | 理论电影国产精品| 精油按摩中文字幕久久| 久久精品国产99国产| 国产伦精品一区二区三区免费迷 | 久久精品国产亚洲一区二区三区| 日韩制服丝袜先锋影音| 久久精品国产免费| 国产精品亚洲第一区在线暖暖韩国| 国产美女娇喘av呻吟久久| 成人综合婷婷国产精品久久| 91免费精品国自产拍在线不卡| 色猫猫国产区一区二在线视频| 欧美在线免费观看亚洲| 欧美军同video69gay| 日韩欧美精品在线视频| 中文字幕高清不卡| 亚洲最快最全在线视频| 奇米影视在线99精品| 韩国精品在线观看| 99精品视频免费在线观看| 欧美亚洲日本一区| www亚洲一区| 亚洲日本免费电影| 亚洲成av人片在www色猫咪| 久久99久久久久久久久久久| 国产成人三级在线观看| 91蝌蚪porny九色| 欧美一区二区三区免费在线看 | 久久精品一区四区| 亚洲女同一区二区| 麻豆精品在线播放| 91丨porny丨蝌蚪视频| 欧美一区二区三区色| 中国色在线观看另类| 亚洲午夜免费电影| 高清成人免费视频| 欧美丝袜丝交足nylons图片| 久久久久久久久岛国免费| 一区二区久久久久久| 麻豆精品精品国产自在97香蕉| 从欧美一区二区三区| 在线不卡欧美精品一区二区三区| 国产网站一区二区三区| 婷婷久久综合九色综合绿巨人| 国产aⅴ综合色| 91精品欧美福利在线观看| 最好看的中文字幕久久| 乱中年女人伦av一区二区| 色综合一区二区| 国产日韩欧美不卡在线| 免费黄网站欧美| 欧美午夜理伦三级在线观看| 久久午夜免费电影| 午夜av一区二区三区| 91在线一区二区三区| 久久精品一区二区三区不卡| 免费人成在线不卡| 一本在线高清不卡dvd| 欧美不卡视频一区| 午夜精品久久久久久久久久| 99国产精品久| 久久精品男人的天堂| 美洲天堂一区二卡三卡四卡视频| 欧美在线视频日韩| 亚洲免费观看高清完整版在线| 国产一区二区美女| 欧美成人精品二区三区99精品| 亚洲曰韩产成在线| 在线看国产日韩| 亚洲人吸女人奶水| av中文字幕不卡| 国产欧美一区二区精品性色| 国产麻豆精品95视频| 精品国产乱码久久久久久夜甘婷婷| 天堂久久一区二区三区| 欧美精品一二三四| 亚洲成人av福利| 欧美日韩在线观看一区二区| 亚洲一区二区三区影院| 色94色欧美sute亚洲13| 亚洲精品久久嫩草网站秘色|