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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mpmediatasktest.cpp

?? 著名開源軟件sipX中的sipXPortLib,和其它組件一起工作
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// 
//
// Copyright (C) 2004 SIPfoundry Inc.
// Licensed by SIPfoundry under the LGPL license.
//
// Copyright (C) 2004 Pingtel Corp.
// Licensed to SIPfoundry under a Contributor Agreement.
//
// $$
//////////////////////////////////////////////////////////////////////////////

#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/TestCase.h>
#include <sipxunit/TestUtilities.h>

#include <mp/MpMediaTask.h>
#include <mp/MpFlowGraphBase.h>

/**
 * Unittest for MpMediaTask
 */
class MpMediaTaskTest : public CppUnit::TestCase
{
    //
    // All commented out test cases are broken or surfacing real issues
    //
    CPPUNIT_TEST_SUITE(MpMediaTaskTest);
    CPPUNIT_TEST(testCreators);
    CPPUNIT_TEST(testManagedAndUnmanagedFlowGraph);
    CPPUNIT_TEST(testDebugMode);
    CPPUNIT_TEST(testFocus);
    CPPUNIT_TEST(testStartAndStopFlowGraph);
    CPPUNIT_TEST(testTimeLimitAndTimeout);
    CPPUNIT_TEST(testMultipleManagedAndUnmanagedFlowgraph);
    CPPUNIT_TEST_SUITE_END();

public:
    void testCreators()
    {
        MpMediaTask* pMediaTask = 0;
        OsStatus     res;

        int          numFramesAlready;

        // Call getMediaTask() which causes the task to get instantiated
        pMediaTask = MpMediaTask::getMediaTask(10);
        CPPUNIT_ASSERT(pMediaTask != NULL);

        // Check the initial state of the MpMediaTask object
 // ****************************************************************************
 // **** This is NOT THE INITIAL STATE UNLESS THE ABOVE CALL to getMediaTask()
 // **** is the very first call to that function.  The problem with these
 // **** tests is that they were meant to be run separately, but that is not
 // **** the case with our self-starting singleton tasks.  This one has been
 // **** around the track a few times already, we get whatever we get.
 // ****************************************************************************
        // Not anymore... CPPUNIT_ASSERT(pMediaTask->getDebugMode() == FALSE);
        // Good luck with the rest!
        CPPUNIT_ASSERT(pMediaTask->getFocus() == NULL);
        // Not anymore... CPPUNIT_ASSERT_EQUAL(0, pMediaTask->getLimitExceededCnt());
        CPPUNIT_ASSERT(pMediaTask->getTimeLimit() == MpMediaTask::DEF_TIME_LIMIT_USECS);
        CPPUNIT_ASSERT(pMediaTask->getWaitTimeout() == MpMediaTask::DEF_SEM_WAIT_MSECS);
        // Not anymore... CPPUNIT_ASSERT_EQUAL(0, pMediaTask->getWaitTimeoutCnt());
        CPPUNIT_ASSERT_EQUAL(0, pMediaTask->numManagedFlowGraphs());
        // Not anymore... CPPUNIT_ASSERT_EQUAL(0, pMediaTask->numProcessedFrames());
        numFramesAlready = pMediaTask->numProcessedFrames();
        CPPUNIT_ASSERT_EQUAL(0, pMediaTask->numStartedFlowGraphs());

        // Verify that the task is actually running by:
        //   enabling debug mode
        //   calling signalFrameStart()
        //   checking the processed frame count
        res = pMediaTask->setDebug(TRUE);
        CPPUNIT_ASSERT(res == OS_SUCCESS);

        res = MpMediaTask::signalFrameStart();  // send a signal to the task
        CPPUNIT_ASSERT(res == OS_SUCCESS);      // and give it a chance to run
        OsTask::delay(20);

        // Not anymore... CPPUNIT_ASSERT_EQUAL(1, pMediaTask->numProcessedFrames());
        CPPUNIT_ASSERT_EQUAL((numFramesAlready+1), pMediaTask->numProcessedFrames());
    }

    void testManagedAndUnmanagedFlowGraph()
    {

        MpFlowGraphBase* pFlowGraph = 0;
        MpMediaTask*     pMediaTask = 0;
        OsStatus         res;

        // Test 1: Create an empty flow graph and manage it
        pMediaTask = MpMediaTask::getMediaTask(10);
        pFlowGraph = new MpFlowGraphBase(30, 30);
        res = pMediaTask->manageFlowGraph(*pFlowGraph);
        CPPUNIT_ASSERT(res == OS_SUCCESS);

        res = MpMediaTask::signalFrameStart();  // send a signal to the task
        CPPUNIT_ASSERT(res == OS_SUCCESS);      // and give it a chance to run

        // NOTE: original delay of 20 was tempermental, I increased
        // this to 100 to reduce the chance of this happening to
        // hopefully 0% - DLH
        OsTask::delay(100);

        CPPUNIT_ASSERT_EQUAL(1, pMediaTask->numManagedFlowGraphs());

        // Test 2: Invoke manageFlowGraph() with the same flow graph
        //         (will increment the numHandledMsgErrs() count for that
        //         frame processing interval but should otherwise have no
        //         effect)
        res = pMediaTask->manageFlowGraph(*pFlowGraph);
        CPPUNIT_ASSERT(res == OS_SUCCESS);

        res = MpMediaTask::signalFrameStart();  // send a signal to the task
        CPPUNIT_ASSERT(res == OS_SUCCESS);      // and give it a chance to run
        OsTask::delay(20);

        CPPUNIT_ASSERT_EQUAL(1, pMediaTask->numManagedFlowGraphs());
        CPPUNIT_ASSERT_EQUAL(1, pMediaTask->numHandledMsgErrs());

        // Test 3: Unmanage the flow graph
        res = pMediaTask->unmanageFlowGraph(*pFlowGraph);
        CPPUNIT_ASSERT(res == OS_SUCCESS);

        res = MpMediaTask::signalFrameStart();  // send a signal to the task
        CPPUNIT_ASSERT(res == OS_SUCCESS);      // and give it a chance to run
        OsTask::delay(20);

        CPPUNIT_ASSERT_EQUAL(0, pMediaTask->numManagedFlowGraphs());
        // Test 4: Unmanage a flow graph which is not currently managed
        //         (will increment the numHandledMsgErrs() count for that
        //         frame processing interval but should otherwise have no
        //         effect)
        res = pMediaTask->unmanageFlowGraph(*pFlowGraph);
        CPPUNIT_ASSERT(res == OS_SUCCESS);

        res = MpMediaTask::signalFrameStart();  // send a signal to the task
        CPPUNIT_ASSERT(res == OS_SUCCESS);      // and give it a chance to run
        OsTask::delay(20);

        CPPUNIT_ASSERT_EQUAL(0, pMediaTask->numManagedFlowGraphs());
        CPPUNIT_ASSERT_EQUAL(1, pMediaTask->numHandledMsgErrs());

        // Test 5: Attempt to manage a flow graph that is not in the
        //         MpFlowGraphBase::STOPPED state
        res = pFlowGraph->start();              // send the flow graph a start
        CPPUNIT_ASSERT(res == OS_SUCCESS);      // command and a signal to
        res = pFlowGraph->processNextFrame();   // process its messages
        CPPUNIT_ASSERT(res == OS_SUCCESS);

        res = pMediaTask->manageFlowGraph(*pFlowGraph);
        CPPUNIT_ASSERT(res == OS_INVALID_ARGUMENT);

        res = pFlowGraph->stop();               // send the flow graph a stop
        CPPUNIT_ASSERT(res == OS_SUCCESS);      // command and a signal to
        res = pFlowGraph->processNextFrame();   // process its messages
        CPPUNIT_ASSERT(res == OS_SUCCESS);

        // Test 6: Unmanage a flow graph that is "started"
        res = pMediaTask->manageFlowGraph(*pFlowGraph);
        CPPUNIT_ASSERT(res == OS_SUCCESS);

        res = pMediaTask->startFlowGraph(*pFlowGraph); // start the flow graph
        CPPUNIT_ASSERT(res == OS_SUCCESS);

        res = MpMediaTask::signalFrameStart();  // send a signal to the task
        CPPUNIT_ASSERT(res == OS_SUCCESS);      // and give it a chance to run
        OsTask::delay(20);

        res = pMediaTask->unmanageFlowGraph(*pFlowGraph);
        CPPUNIT_ASSERT(res == OS_SUCCESS);

        res = MpMediaTask::signalFrameStart();  // send a signal to the task
        CPPUNIT_ASSERT(res == OS_SUCCESS);              // and give it a chance to run
        OsTask::delay(20);

        // verify that the flow graph has been stopped and is unmanaged
        CPPUNIT_ASSERT(pFlowGraph->getState() == MpFlowGraphBase::STOPPED);
        CPPUNIT_ASSERT_EQUAL(0, pMediaTask->numManagedFlowGraphs());
        CPPUNIT_ASSERT_EQUAL(0, pMediaTask->numStartedFlowGraphs());

        delete pFlowGraph;
    }

    void testDebugMode()
    {

        MpMediaTask*     pMediaTask = 0;
        OsStatus         res;
        int              waitTimeoutCnt;

        // Test 1: Verify that wait for "frame start" timeouts are noticed
        //         only when the media task is not in debug mode
        pMediaTask = MpMediaTask::getMediaTask(10);
        res = pMediaTask->setDebug(FALSE);      // turn debug mode off
        CPPUNIT_ASSERT(res == OS_SUCCESS);
        CPPUNIT_ASSERT(pMediaTask->getDebugMode() == FALSE);

        waitTimeoutCnt = pMediaTask->getWaitTimeoutCnt();
        res = MpMediaTask::signalFrameStart();  // send a signal to the task
        CPPUNIT_ASSERT(res == OS_SUCCESS);
        OsTask::delay(1000);                    // and wait 1 second

        // $$$ Need to understand why the following test fails on vxWorks
        // WHAT THE #(*$&#(*&???  CPPUNIT_ASSERT(pMediaTask->getWaitTimeoutCnt() > waitTimeoutCnt);

        res = pMediaTask->setDebug(TRUE);       // turn debug mode on
        CPPUNIT_ASSERT(res == OS_SUCCESS);
        CPPUNIT_ASSERT(pMediaTask->getDebugMode() == TRUE);

        res = MpMediaTask::signalFrameStart();  // send a signal to the task
        CPPUNIT_ASSERT(res == OS_SUCCESS);      // and give it a chance to run
        OsTask::delay(20);

        waitTimeoutCnt = pMediaTask->getWaitTimeoutCnt();
        OsTask::delay(1000);                     // wait 1 second
        CPPUNIT_ASSERT_EQUAL(waitTimeoutCnt, pMediaTask->getWaitTimeoutCnt());
    }


    void testFocus()
    {
        MpFlowGraphBase* pFlowGraph = 0;
        MpMediaTask*     pMediaTask = 0;
        OsStatus         res;

        // Test 1: Attempt to setFocus to a flow graph that the media task
        //         is not managing
        pMediaTask = MpMediaTask::getMediaTask(10);
        pFlowGraph = new MpFlowGraphBase(30, 30);
        res = pMediaTask->setFocus(pFlowGraph); // send the media task a
        CPPUNIT_ASSERT(res == OS_SUCCESS);      // set_focus command and

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产美女一区二区| 免费观看日韩av| 99re热视频精品| 亚洲欧美乱综合| 日本福利一区二区| 日韩av电影免费观看高清完整版| 制服.丝袜.亚洲.另类.中文| 三级在线观看一区二区| 精品久久久网站| 国产乱子伦一区二区三区国色天香| 久久久久久久久久美女| av在线不卡免费看| 亚洲va国产va欧美va观看| 欧美videos大乳护士334| 国产福利不卡视频| 亚洲永久精品大片| 中文字幕在线观看一区| 欧美影片第一页| 国内精品视频一区二区三区八戒| 中文久久乱码一区二区| 欧美日韩精品是欧美日韩精品| 久久99久久精品欧美| 国产精品乱码人人做人人爱| 在线视频国内一区二区| 国内精品第一页| 一区二区三区电影在线播| 日韩欧美一区中文| 99riav久久精品riav| 美腿丝袜在线亚洲一区| 中文字幕一区二区日韩精品绯色| 欧美裸体一区二区三区| 成人av先锋影音| 理论片日本一区| 一区二区三区在线观看欧美 | 亚洲国产精品ⅴa在线观看| 91久久精品网| 国产成人自拍在线| 日韩激情视频在线观看| 亚洲视频免费在线| 精品欧美乱码久久久久久 | 风间由美一区二区av101| 一区二区在线看| 久久久久久久电影| 欧美电影一区二区| 色婷婷综合久色| 国产成a人亚洲| 免费成人深夜小野草| 亚洲欧美区自拍先锋| 久久综合九色综合97婷婷| 欧美中文一区二区三区| 成人精品国产一区二区4080| 美国十次了思思久久精品导航| 亚洲免费观看高清完整版在线观看| 精品久久国产97色综合| 欧美伦理视频网站| 欧美亚洲国产bt| 91同城在线观看| 国产91在线看| 国产美女精品人人做人人爽| 日产精品久久久久久久性色| 亚洲一区二区高清| 一区二区三区色| 亚洲三级小视频| 亚洲国产精品黑人久久久| 2020国产精品| 26uuu久久天堂性欧美| 日韩欧美精品在线视频| 91精品一区二区三区久久久久久| 欧美在线视频你懂得| 在线观看视频欧美| 日本韩国欧美在线| 色婷婷国产精品久久包臀 | 一区二区免费看| 樱花草国产18久久久久| 亚洲男女毛片无遮挡| 国产精品久久久久一区| 国产精品情趣视频| 国产精品嫩草99a| 亚洲特级片在线| 亚洲一区免费在线观看| 亚洲成人免费视| 免费在线观看日韩欧美| 蜜桃视频一区二区| 激情五月播播久久久精品| 精品一区二区成人精品| 国产麻豆精品视频| 不卡视频在线看| 色av成人天堂桃色av| 欧美日韩在线免费视频| 3d动漫精品啪啪1区2区免费| 欧美第一区第二区| 国产亚洲精品免费| 亚洲欧美在线aaa| 亚洲一区二区美女| 免费成人在线影院| 丁香六月久久综合狠狠色| av成人动漫在线观看| 在线免费观看一区| 欧美一级日韩免费不卡| 久久色成人在线| 中文字幕亚洲一区二区va在线| 亚洲欧美日韩国产综合| 婷婷久久综合九色综合伊人色| 精品一区二区综合| av一区二区不卡| 欧美蜜桃一区二区三区| ww久久中文字幕| 亚洲色图第一区| 日韩va亚洲va欧美va久久| 国产精品91xxx| 色综合色综合色综合色综合色综合| 欧美理论在线播放| 久久久99久久| 亚洲成人一区在线| 国产馆精品极品| 欧美日韩大陆一区二区| 国产视频一区二区在线观看| 亚洲午夜影视影院在线观看| 精品一区二区三区视频在线观看 | 91蜜桃传媒精品久久久一区二区| 欧美视频中文字幕| 精品福利一二区| 一区二区三区久久| 国产成人免费视频一区| 欧美日韩在线亚洲一区蜜芽| 久久九九国产精品| 日韩成人dvd| 色女孩综合影院| 国产三级一区二区| 日本视频中文字幕一区二区三区| 99久久久精品免费观看国产蜜| 欧美一级片在线看| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美日韩精品系列| 亚洲国产精品黑人久久久| 免费看欧美美女黄的网站| 91久久精品日日躁夜夜躁欧美| 欧美mv日韩mv国产网站| 亚欧色一区w666天堂| 99精品视频在线免费观看| 精品国产a毛片| 日韩国产精品久久久| 在线视频你懂得一区| 国产精品国产三级国产普通话蜜臀| 日本v片在线高清不卡在线观看| 91在线无精精品入口| 国产婷婷色一区二区三区在线| 日韩精品免费视频人成| 欧美丝袜自拍制服另类| 亚洲精品国产一区二区精华液| 高清shemale亚洲人妖| 欧美videos大乳护士334| 日韩在线一二三区| 精品视频在线免费| 一区二区三区欧美视频| 色综合天天综合网天天看片| 中文字幕一区二区在线观看| 国产传媒久久文化传媒| 2024国产精品| 国精品**一区二区三区在线蜜桃| 欧美一级日韩一级| 看片的网站亚洲| 精品91自产拍在线观看一区| 蜜臀av亚洲一区中文字幕| 337p亚洲精品色噜噜噜| 日韩在线播放一区二区| 欧美一区在线视频| 免费看精品久久片| 精品久久久影院| 精品一区二区精品| 久久精品网站免费观看| 国产一区二区女| 国产精品久久久久影院老司 | 在线免费观看日韩欧美| 一区二区三区久久| 欧美日韩国产区一| 日韩电影在线一区二区| 欧美一级久久久| 国产精品538一区二区在线| 久久久久久久精| 色综合久久88色综合天天免费| 有码一区二区三区| 欧美一区二区黄| 国产成人免费视频网站| 亚洲视频在线一区观看| 精品视频1区2区| 久久不见久久见中文字幕免费| 久久精品一区蜜桃臀影院| 成人免费三级在线| 亚洲综合一区在线| 欧美一区二区三区四区五区| 国产一区二区三区四| 亚洲欧美国产三级| 欧美精品1区2区3区| 国产精品资源网站| 亚洲同性同志一二三专区| 欧美精品日韩一本| 国产不卡在线播放| 亚洲va欧美va人人爽| 久久午夜国产精品|