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

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

?? isma.cpp

?? 6410BSP1
?? CPP
?? 第 1 頁 / 共 2 頁
字號(hào):
        CreateESD(            pEsProperty,            201,                // esid            MP4SystemsV2ObjectType,            MP4SceneDescriptionStreamType,            numBytes,            // bufferSize            numBytes * 8,        // bitrate            BifsV2Config,            sizeof(BifsV2Config),            urlBuf);    MP4Free(sceneCmdBase64);    sceneCmdBase64 = NULL;    MP4Free(urlBuf);    urlBuf = NULL;    MP4Free(pBytes);    pBytes = NULL;    // OD        // Video    MP4DescriptorProperty* pVideoEsdProperty =        new MP4DescriptorProperty();    pVideoEsdProperty->SetTags(MP4ESDescrTag);    /* MP4Descriptor* pVideoEsd = */        CreateESD(            pVideoEsdProperty,            20,                    // esid            MP4_MPEG4_VIDEO_TYPE,            MP4VisualStreamType,            videoBitrate / 8,    // bufferSize            videoBitrate,            videoConfig,            videoConfigLength,            NULL);    // Audio    MP4DescriptorProperty* pAudioEsdProperty =        new MP4DescriptorProperty();    pAudioEsdProperty->SetTags(MP4ESDescrTag);            /* MP4Descriptor* pAudioEsd = */        CreateESD(            pAudioEsdProperty,            10,                    // esid            MP4_MPEG4_AUDIO_TYPE,            MP4AudioStreamType,            audioBitrate / 8,     // bufferSize            audioBitrate,            audioConfig,            audioConfigLength,            NULL);        CreateIsmaODUpdateCommandForStream(        pAudioEsdProperty,        pVideoEsdProperty,         &pBytes,        &numBytes);    // cleanup temporary descriptor properties    delete pAudioEsdProperty;    delete pVideoEsdProperty;    VERBOSE_ISMA(GetVerbosity(),        printf("OD data = "U64" bytes\n", numBytes); MP4HexDump(pBytes, numBytes));    char* odCmdBase64 = MP4ToBase64(pBytes, numBytes);    urlBuf = (char*)MP4Malloc(strlen(odCmdBase64) + 64);    sprintf(urlBuf,         "data:application/mpeg4-od-au;base64,%s",        odCmdBase64);    VERBOSE_ISMA(GetVerbosity(),        printf("OD data URL = \042%s\042\n", urlBuf));    /* MP4Descriptor* pOdEsd = */        CreateESD(            pEsProperty,            101,            MP4SystemsV1ObjectType,            MP4ObjectDescriptionStreamType,            numBytes,        // bufferSize            numBytes * 8,    // bitrate            NULL,            // config            0,                // configLength            urlBuf);    MP4Free(odCmdBase64);    odCmdBase64 = NULL;    MP4Free(pBytes);    pBytes = NULL;    MP4Free(urlBuf);    urlBuf = NULL;    // finally get the whole thing written to a memory     pIod->WriteToMemory(this, ppIodBytes, pIodNumBytes);    delete pIod;    VERBOSE_ISMA(GetVerbosity(),        printf("IOD data =\n"); MP4HexDump(*ppIodBytes, *pIodNumBytes));}MP4Descriptor* MP4File::CreateESD(    MP4DescriptorProperty* pEsProperty,    u_int32_t esid,    u_int8_t objectType,    u_int8_t streamType,    u_int32_t bufferSize,    u_int32_t bitrate,    const u_int8_t* pConfig,    u_int32_t configLength,    char* url){    MP4IntegerProperty* pInt;    MP4StringProperty* pString;    MP4BytesProperty* pBytes;    MP4BitfieldProperty* pBits;    MP4Descriptor* pEsd =        pEsProperty->AddDescriptor(MP4ESDescrTag);    pEsd->Generate();    pEsd->FindProperty("ESID",         (MP4Property**)&pInt);    pInt->SetValue(esid);    pEsd->FindProperty("decConfigDescr.objectTypeId",         (MP4Property**)&pInt);    pInt->SetValue(objectType);    pEsd->FindProperty("decConfigDescr.streamType",         (MP4Property**)&pInt);    pInt->SetValue(streamType);    pEsd->FindProperty("decConfigDescr.bufferSizeDB",         (MP4Property**)&pInt);    pInt->SetValue(bufferSize);    pEsd->FindProperty("decConfigDescr.maxBitrate",         (MP4Property**)&pInt);    pInt->SetValue(bitrate);    pEsd->FindProperty("decConfigDescr.avgBitrate",         (MP4Property**)&pInt);    pInt->SetValue(bitrate);        MP4DescriptorProperty* pConfigDescrProperty;    pEsd->FindProperty("decConfigDescr.decSpecificInfo",        (MP4Property**)&pConfigDescrProperty);    MP4Descriptor* pConfigDescr =        pConfigDescrProperty->AddDescriptor(MP4DecSpecificDescrTag);    pConfigDescr->Generate();    pConfigDescrProperty->FindProperty("decSpecificInfo[0].info",        (MP4Property**)&pBytes);    pBytes->SetValue(pConfig, configLength);    pEsd->FindProperty("slConfigDescr.predefined",         (MP4Property**)&pInt);    // changed 12/5/02 from plugfest to value 0    pInt->SetValue(0);    pEsd->FindProperty("slConfig.useAccessUnitEndFlag",               (MP4Property **)&pBits);    pBits->SetValue(1);    if (url) {        pEsd->FindProperty("URLFlag",             (MP4Property**)&pInt);        pInt->SetValue(1);        pEsd->FindProperty("URL",             (MP4Property**)&pString);        pString->SetValue(url);    }    return pEsd;}void MP4File::CreateIsmaODUpdateCommandFromFileForFile(    MP4TrackId odTrackId,    MP4TrackId audioTrackId,     MP4TrackId videoTrackId,    u_int8_t** ppBytes,    u_int64_t* pNumBytes){    MP4Descriptor* pCommand = CreateODCommand(MP4ODUpdateODCommandTag);    pCommand->Generate();    for (u_int8_t i = 0; i < 2; i++) {        MP4TrackId trackId;        u_int16_t odId;        if (i == 0) {            trackId = audioTrackId;            odId = 10;        } else {            trackId = videoTrackId;            odId = 20;        }        if (trackId == MP4_INVALID_TRACK_ID) {            continue;        }        MP4DescriptorProperty* pOdDescrProperty =                (MP4DescriptorProperty*)(pCommand->GetProperty(0));        pOdDescrProperty->SetTags(MP4FileODescrTag);        MP4Descriptor* pOd =            pOdDescrProperty->AddDescriptor(MP4FileODescrTag);        pOd->Generate();        MP4BitfieldProperty* pOdIdProperty = NULL;        pOd->FindProperty("objectDescriptorId",             (MP4Property**)&pOdIdProperty);        pOdIdProperty->SetValue(odId);        MP4DescriptorProperty* pEsIdsDescriptorProperty = NULL;        pOd->FindProperty("esIds",             (MP4Property**)&pEsIdsDescriptorProperty);        ASSERT(pEsIdsDescriptorProperty);        pEsIdsDescriptorProperty->SetTags(MP4ESIDRefDescrTag);        MP4Descriptor *pRefDescriptor =            pEsIdsDescriptorProperty->AddDescriptor(MP4ESIDRefDescrTag);        pRefDescriptor->Generate();        MP4Integer16Property* pRefIndexProperty = NULL;        pRefDescriptor->FindProperty("refIndex",             (MP4Property**)&pRefIndexProperty);        ASSERT(pRefIndexProperty);        u_int32_t mpodIndex = FindTrackReference(            MakeTrackName(odTrackId, "tref.mpod"), trackId);        ASSERT(mpodIndex != 0);        pRefIndexProperty->SetValue(mpodIndex);    }    pCommand->WriteToMemory(this, ppBytes, pNumBytes);    delete pCommand;}void MP4File::CreateIsmaODUpdateCommandFromFileForStream(    MP4TrackId audioTrackId,     MP4TrackId videoTrackId,    u_int8_t** ppBytes,    u_int64_t* pNumBytes){    MP4DescriptorProperty* pAudioEsd = NULL;    MP4Integer8Property* pAudioSLConfigPredef = NULL;    MP4BitfieldProperty* pAudioAccessUnitEndFlag = NULL;    int oldAudioUnitEndFlagValue = 0;    MP4DescriptorProperty* pVideoEsd = NULL;    MP4Integer8Property* pVideoSLConfigPredef = NULL;    MP4BitfieldProperty* pVideoAccessUnitEndFlag = NULL;    int oldVideoUnitEndFlagValue = 0;    MP4IntegerProperty* pAudioEsdId = NULL;    MP4IntegerProperty* pVideoEsdId = NULL;    if (audioTrackId != MP4_INVALID_TRACK_ID) {        // changed mp4a to * to handle enca case        MP4Atom* pEsdsAtom =             FindAtom(MakeTrackName(audioTrackId,                 "mdia.minf.stbl.stsd.*.esds"));        ASSERT(pEsdsAtom);        pAudioEsd = (MP4DescriptorProperty*)(pEsdsAtom->GetProperty(2));        // ESID is 0 for file, stream needs to be non-ze        pAudioEsd->FindProperty("ESID",                     (MP4Property**)&pAudioEsdId);        ASSERT(pAudioEsdId);        pAudioEsdId->SetValue(audioTrackId);        // SL config needs to change from 2 (file) to 1 (null)        pAudioEsd->FindProperty("slConfigDescr.predefined",             (MP4Property**)&pAudioSLConfigPredef);        ASSERT(pAudioSLConfigPredef);        pAudioSLConfigPredef->SetValue(0);        pAudioEsd->FindProperty("slConfigDescr.useAccessUnitEndFlag",                    (MP4Property **)&pAudioAccessUnitEndFlag);        oldAudioUnitEndFlagValue =           pAudioAccessUnitEndFlag->GetValue();        pAudioAccessUnitEndFlag->SetValue(1);    }    if (videoTrackId != MP4_INVALID_TRACK_ID) {      // changed mp4v to * to handle encv case        MP4Atom* pEsdsAtom =             FindAtom(MakeTrackName(videoTrackId,                 "mdia.minf.stbl.stsd.*.esds"));        ASSERT(pEsdsAtom);        pVideoEsd = (MP4DescriptorProperty*)(pEsdsAtom->GetProperty(2));        pVideoEsd->FindProperty("ESID",                     (MP4Property**)&pVideoEsdId);        ASSERT(pVideoEsdId);        pVideoEsdId->SetValue(videoTrackId);        // SL config needs to change from 2 (file) to 1 (null)        pVideoEsd->FindProperty("slConfigDescr.predefined",             (MP4Property**)&pVideoSLConfigPredef);        ASSERT(pVideoSLConfigPredef);        pVideoSLConfigPredef->SetValue(0);        pVideoEsd->FindProperty("slConfigDescr.useAccessUnitEndFlag",                    (MP4Property **)&pVideoAccessUnitEndFlag);        oldVideoUnitEndFlagValue =           pVideoAccessUnitEndFlag->GetValue();        pVideoAccessUnitEndFlag->SetValue(1);    }    CreateIsmaODUpdateCommandForStream(        pAudioEsd, pVideoEsd, ppBytes, pNumBytes);    VERBOSE_ISMA(GetVerbosity(),        printf("After CreateImsaODUpdateCommandForStream len "U64" =\n", *pNumBytes); MP4HexDump(*ppBytes, *pNumBytes));    // return SL config values to 2 (file)    // return ESID values to 0    if (pAudioSLConfigPredef) {        pAudioSLConfigPredef->SetValue(2);    }    if (pAudioEsdId) {      pAudioEsdId->SetValue(0);    }    if (pAudioAccessUnitEndFlag) {      pAudioAccessUnitEndFlag->SetValue(oldAudioUnitEndFlagValue );    }    if (pVideoEsdId) {      pVideoEsdId->SetValue(0);    }    if (pVideoSLConfigPredef) {        pVideoSLConfigPredef->SetValue(2);    }    if (pVideoAccessUnitEndFlag) {      pVideoAccessUnitEndFlag->SetValue(oldVideoUnitEndFlagValue );    }}void MP4File::CreateIsmaODUpdateCommandForStream(    MP4DescriptorProperty* pAudioEsdProperty,     MP4DescriptorProperty* pVideoEsdProperty,    u_int8_t** ppBytes,    u_int64_t* pNumBytes){    MP4Descriptor* pAudioOd = NULL;    MP4Descriptor* pVideoOd = NULL;    MP4Descriptor* pCommand =         CreateODCommand(MP4ODUpdateODCommandTag);    pCommand->Generate();    for (u_int8_t i = 0; i < 2; i++) {        u_int16_t odId;        MP4DescriptorProperty* pEsdProperty = NULL;        if (i == 0) {            odId = 10;            pEsdProperty = pAudioEsdProperty;        } else {            odId = 20;            pEsdProperty = pVideoEsdProperty;        }        if (pEsdProperty == NULL) {            continue;        }        MP4DescriptorProperty* pOdDescrProperty =            (MP4DescriptorProperty*)(pCommand->GetProperty(0));        pOdDescrProperty->SetTags(MP4ODescrTag);        MP4Descriptor* pOd =            pOdDescrProperty->AddDescriptor(MP4ODescrTag);        pOd->Generate();        if (i == 0) {            pAudioOd = pOd;        } else {            pVideoOd = pOd;        }        MP4BitfieldProperty* pOdIdProperty = NULL;        pOd->FindProperty("objectDescriptorId",             (MP4Property**)&pOdIdProperty);        pOdIdProperty->SetValue(odId);        delete (MP4DescriptorProperty*)pOd->GetProperty(4);        pOd->SetProperty(4, pEsdProperty);    }    // serialize OD command    pCommand->WriteToMemory(this, ppBytes, pNumBytes);    // detach from esd descriptor params    if (pAudioOd) {        pAudioOd->SetProperty(4, NULL);    }    if (pVideoOd) {        pVideoOd->SetProperty(4, NULL);    }    // then destroy    delete pCommand;}void MP4File::CreateIsmaSceneCommand(    bool hasAudio,    bool hasVideo,    u_int8_t** ppBytes,    u_int64_t* pNumBytes){    // from ISMA 1.0 Tech Spec Appendix E    static const u_int8_t bifsAudioOnly[] = {        0xC0, 0x10, 0x12,         0x81, 0x30, 0x2A, 0x05, 0x6D, 0xC0    };    static const u_int8_t bifsVideoOnly[] = {        0xC0, 0x10, 0x12,         0x61, 0x04,             0x1F, 0xC0, 0x00, 0x00,             0x1F, 0xC0, 0x00, 0x00,        0x44, 0x28, 0x22, 0x82, 0x9F, 0x80    };    static const u_int8_t bifsAudioVideo[] = {        0xC0, 0x10, 0x12,         0x81, 0x30, 0x2A, 0x05, 0x6D, 0x26,        0x10, 0x41, 0xFC, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00,        0x04, 0x42, 0x82, 0x28, 0x29, 0xF8    };    if (hasAudio && hasVideo) {        *pNumBytes = sizeof(bifsAudioVideo);        *ppBytes = (u_int8_t*)MP4Malloc(*pNumBytes);        memcpy(*ppBytes, bifsAudioVideo, sizeof(bifsAudioVideo));    } else if (hasAudio) {        *pNumBytes = sizeof(bifsAudioOnly);        *ppBytes = (u_int8_t*)MP4Malloc(*pNumBytes);        memcpy(*ppBytes, bifsAudioOnly, sizeof(bifsAudioOnly));    } else if (hasVideo) {        *pNumBytes = sizeof(bifsVideoOnly);        *ppBytes = (u_int8_t*)MP4Malloc(*pNumBytes);        memcpy(*ppBytes, bifsVideoOnly, sizeof(bifsVideoOnly));    } else {        *pNumBytes = 0;        *ppBytes = NULL;    }}    

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久永久免费观看| 国产999精品久久久久久| 色婷婷久久久综合中文字幕| 久久久久久黄色| 国产成人自拍网| 中文字幕第一区综合| av不卡在线观看| 亚洲色欲色欲www在线观看| 色美美综合视频| 亚洲国产欧美在线| 日韩一区二区三区四区五区六区| 蜜桃精品在线观看| 国产亚洲欧洲一区高清在线观看| 成人a区在线观看| 亚洲主播在线观看| 欧美乱妇23p| 国产麻豆9l精品三级站| 国产精品电影一区二区三区| 日本丶国产丶欧美色综合| 一区二区理论电影在线观看| 在线成人免费观看| 国产麻豆91精品| 一级特黄大欧美久久久| 欧美一卡在线观看| 丁香啪啪综合成人亚洲小说| 一区二区三区精品久久久| 日韩精品中文字幕一区二区三区| 懂色av一区二区夜夜嗨| 婷婷国产在线综合| 国产精品网曝门| 欧美三级中文字幕在线观看| 国产在线麻豆精品观看| 国产精品久久久久久妇女6080| 91久久精品一区二区三| 久久精品国产久精国产| 自拍偷拍欧美精品| 欧美不卡视频一区| 一本高清dvd不卡在线观看| 蜜臀久久久久久久| 亚洲日本va午夜在线影院| 欧美电影免费提供在线观看| 99re这里只有精品视频首页| 蜜桃视频一区二区三区| 亚洲午夜羞羞片| 中文字幕制服丝袜一区二区三区 | 欧美日本韩国一区二区三区视频| 激情综合色播激情啊| 亚洲精品老司机| 久久一夜天堂av一区二区三区| 色激情天天射综合网| 国产又粗又猛又爽又黄91精品| 亚洲国产精品视频| 亚洲三级在线免费| 国产视频在线观看一区二区三区 | 国产高清亚洲一区| 视频在线观看91| 国产精品天天看| 久久精品免视看| 精品国产一区二区三区不卡| 欧美日韩不卡一区二区| 成人涩涩免费视频| 国产精品乡下勾搭老头1| 自拍视频在线观看一区二区| 欧美激情一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 国产一区二区0| 久久激情五月激情| 午夜激情综合网| 一区二区三区四区精品在线视频| 中文字幕在线不卡视频| 精品盗摄一区二区三区| 日韩欧美aaaaaa| 欧美精品一区二区久久婷婷| 日韩精品一区二区三区中文不卡 | 亚洲国产成人私人影院tom | 欧美性色综合网| 91在线看国产| 不卡的电视剧免费网站有什么| 国精品**一区二区三区在线蜜桃| 久久国产生活片100| 五月婷婷激情综合| 亚洲成人资源在线| 香蕉久久一区二区不卡无毒影院| 香蕉久久夜色精品国产使用方法 | 日本精品一级二级| 色综合色综合色综合| 欧美中文字幕不卡| 欧美日韩在线播放三区| 欧美一区二区三区男人的天堂| 日韩欧美另类在线| 久久女同性恋中文字幕| 最新国产成人在线观看| 亚洲一区在线观看免费| 亚洲国产美女搞黄色| 亚洲综合久久av| 理论片日本一区| 精品亚洲aⅴ乱码一区二区三区| 国产在线精品一区在线观看麻豆| 成人精品免费看| 欧美三级蜜桃2在线观看| 91精品国产入口| 国产亚洲一区二区三区在线观看| 亚洲欧美在线视频观看| 午夜精品久久久久影视| 狂野欧美性猛交blacked| 国产成人亚洲综合a∨婷婷 | 免费欧美在线视频| 粉嫩嫩av羞羞动漫久久久| 99久久99久久精品免费看蜜桃 | eeuss影院一区二区三区 | 色综合天天综合网国产成人综合天 | 欧美日韩精品福利| 精品国产1区2区3区| 亚洲另类春色国产| 久久精品国产色蜜蜜麻豆| 99re8在线精品视频免费播放| 欧美电影影音先锋| 日韩美女久久久| 麻豆专区一区二区三区四区五区| jlzzjlzz亚洲日本少妇| 日韩精品资源二区在线| 亚洲激情网站免费观看| 国产一区美女在线| 欧美猛男超大videosgay| 国产三级精品三级在线专区| 亚洲精品国产无天堂网2021| 日韩电影在线一区二区| 91视频在线看| 国产亚洲一区字幕| 免费在线观看一区| 99re热视频精品| 精品噜噜噜噜久久久久久久久试看| 亚洲女人****多毛耸耸8| 国产乱人伦精品一区二区在线观看| 精品视频在线看| 中文字幕一区二区三区不卡| 精彩视频一区二区三区| 欧美日韩免费视频| 自拍偷自拍亚洲精品播放| 国产一区福利在线| 制服丝袜av成人在线看| 一区二区三区欧美久久| 国产不卡免费视频| 日韩一区二区在线免费观看| 亚洲午夜精品在线| 91啪亚洲精品| 日本一区二区成人| 麻豆精品蜜桃视频网站| 99久久精品免费| 欧美高清在线视频| 懂色av中文字幕一区二区三区| 精品成人一区二区三区四区| 日韩电影在线免费看| 欧美日本国产视频| 亚洲一区二区三区影院| 日本高清成人免费播放| 亚洲免费观看高清完整版在线| 国产不卡视频一区| 国产精品视频在线看| 国产成人综合网| 国产精品拍天天在线| 从欧美一区二区三区| 中文字幕 久热精品 视频在线 | 精品理论电影在线观看| 国内精品久久久久影院薰衣草| 日韩视频一区在线观看| 免费一区二区视频| 日韩精品一区二区在线| 国产精品一二三| 国产日韩欧美亚洲| 风间由美一区二区av101| 中文字幕一区二区三区乱码在线| 成人黄色av网站在线| 亚洲欧美综合网| 欧美视频在线一区二区三区| 亚洲一区二区三区精品在线| 欧美日韩亚洲综合| 热久久免费视频| 国产亚洲精品中文字幕| 成人午夜电影小说| 亚洲精品日日夜夜| 欧美日韩国产成人在线免费| 美女精品一区二区| 国产欧美日韩亚州综合| 91官网在线免费观看| 日本伊人午夜精品| 国产性天天综合网| 91官网在线免费观看| 麻豆成人免费电影| 中文av一区二区| 欧美性猛片aaaaaaa做受| 免费成人av在线| 国产精品色婷婷| 欧美日韩精品一区二区在线播放| 日本成人在线视频网站| 久久久久久久精| 欧美中文字幕久久| 国产米奇在线777精品观看| 国产精品久久久久久一区二区三区| 91在线一区二区三区|