📄 mpstreamplayertest.cpp
字号:
//// Copyright (C) 2004, 2005 Pingtel Corp.// //// $$////////////////////////////////////////////////////////////////////////#include <cppunit/extensions/HelperMacros.h>#include <cppunit/TestCase.h>#include "test/mp/MpTestConfig.h"#include "test/mp/MyPlayerListenerPoller.h"#include "test/mp/MyPlayerListenerHistoryKeeper.h"#include "test/mp/MyStreamQueueHistoryKeeper.h"#include "mp/MpMisc.h"#include "mp/MpStreamPlayer.h"#include "mp/MpStreamQueuePlayer.h"#include "os/OsDefs.h"#include "mp/StreamDefs.h"#include "net/Url.h"class MpStreamPlayerTest : public CppUnit::TestCase{ CPPUNIT_TEST_SUITE(MpStreamPlayerTest); CPPUNIT_TEST(testRawSynchronousNonCache); CPPUNIT_TEST(testRawSynchronousCache); CPPUNIT_TEST(testRawSynchronousListener); CPPUNIT_TEST(testRawAsynchronousNonCache); CPPUNIT_TEST(testRawAsynchronousCache); CPPUNIT_TEST(testRawAsynchronousAbortNonCache); CPPUNIT_TEST(testRawAsynchronousPauseNonCache); CPPUNIT_TEST(testRawAsynchronousAbortCache); CPPUNIT_TEST(testWavSynchronousNonCache); CPPUNIT_TEST(testRawASynchronousLoop); CPPUNIT_TEST_SUITE_END(); public: void setUp() { mCfg = MpTestConfig::getTestInstance(); } void testRawSynchronousNonCache() { PlayerState state ; OsStatus status ; char szUrl[128] ; int i ; osPrintf("testRawSynchronousNonCache\n") ; // // Without Caching; play 0, 1, 2, 3 // for (i=0; i<4; i++) { sprintf(szUrl, "http://%s/nums/%d.raw", BASE_URL, i) ; osPrintf("Playing %s\n", szUrl) ; Url url(szUrl) ; MpStreamPlayer* pPlayer = new MpStreamPlayer(mCfg->getFlowGraph()->getMsgQ(), url, STREAM_SOUND_LOCAL | STREAM_FORMAT_RAW) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerUnrealized) ; status = pPlayer->realize() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerRealized) ; status = pPlayer->prefetch() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerPrefetched) ; status = pPlayer->play() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerStopped) ; status = pPlayer->stop() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerStopped) ; delete pPlayer ; } } void testRawSynchronousCache() { osPrintf("testRawSynchronousCache\n") ; PlayerState state ; OsStatus status ; char szUrl[128] ; int i ; // // With Caching, play 0, 0, 1, 1, 2, 2, 3, 3 // for (i=0; i<4; i++) { sprintf(szUrl, "http://%s/nums/%d.raw", BASE_URL, i) ; osPrintf("Playing %s\n", szUrl) ; Url url(szUrl) ; MpStreamPlayer* pPlayer = new MpStreamPlayer(mCfg->getFlowGraph()->getMsgQ(), url, STREAM_SOUND_LOCAL | STREAM_FORMAT_RAW | STREAM_HINT_CACHE) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerUnrealized) ; status = pPlayer->realize() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerRealized) ; status = pPlayer->prefetch() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerPrefetched) ; status = pPlayer->play() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerStopped) ; status = pPlayer->rewind() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerPrefetched) ; status = pPlayer->play() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerStopped) ; status = pPlayer->stop() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerStopped) ; delete pPlayer ; } } void testRawSynchronousListener() { PlayerState state ; OsStatus status ; char szUrl[128] ; int i ; osPrintf("testRawSynchronousListener\n") ; // // With Caching and listener, play 0, 0, 1, 1, 2, 2, 3, 3 // for (i=0; i<4; i++) { sprintf(szUrl, "http://%s/nums/%d.raw", BASE_URL, i) ; osPrintf("Playing %s\n", szUrl) ; Url url(szUrl) ; MpStreamPlayer* pPlayer = new MpStreamPlayer(mCfg->getFlowGraph()->getMsgQ(), url, STREAM_SOUND_LOCAL | STREAM_FORMAT_RAW | STREAM_HINT_CACHE) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerUnrealized) ; MyPlayerListenerHistoryKeeper* pListener = new MyPlayerListenerHistoryKeeper() ; status = pPlayer->addListener(pListener, (void*) i) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->realize() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerRealized) ; status = pPlayer->prefetch() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerPrefetched) ; status = pPlayer->play() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerStopped) ; status = pPlayer->rewind() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerPrefetched) ; status = pPlayer->play() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerStopped) ; status = pPlayer->stop() ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerStopped) ; int expectedHistory[] = { PlayerRealized, PlayerPrefetched, PlayerPlaying, PlayerStopped, PlayerPrefetched, PlayerPlaying, PlayerStopped, -1, } ; UtlBoolean bMatches = pListener->matchesHistory((void*) i, expectedHistory) ; CPPUNIT_ASSERT(bMatches) ; status = pPlayer->removeListener(pListener) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->removeListener(pListener) ; CPPUNIT_ASSERT(status == OS_NOT_FOUND) ; delete pPlayer ; delete pListener ; } } void testRawAsynchronousNonCache() { PlayerState state ; UtlBoolean bRC ; OsStatus status ; char szUrl[128] ; int i ; osPrintf("testRawAsynchronousNonCache\n") ; // // Without Caching; play 0, 1, 2, 3 // for (i=0; i<4; i++) { sprintf(szUrl, "http://%s/nums/%d.raw", BASE_URL, i) ; osPrintf("Playing %s\n", szUrl) ; Url url(szUrl) ; MpStreamPlayer* pPlayer = new MpStreamPlayer(mCfg->getFlowGraph()->getMsgQ(), url, STREAM_SOUND_LOCAL | STREAM_FORMAT_RAW) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; CPPUNIT_ASSERT(state == PlayerUnrealized) ; MyPlayerListenerPoller* pPoller = new MyPlayerListenerPoller() ; status = pPlayer->addListener(pPoller, (void*) i) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; MyPlayerListenerHistoryKeeper* pVerifier = new MyPlayerListenerHistoryKeeper() ; status = pPlayer->addListener(pVerifier, (void*) i) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; status = pPlayer->realize(FALSE) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ; bRC = pPoller->waitForState(PlayerRealized); CPPUNIT_ASSERT(bRC ) ; status = pPlayer->getState(state) ; CPPUNIT_ASSERT(status == OS_SUCCESS) ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -