added new addPlaylength() method to the Playlist class
This commit is contained in:
parent
e80e1e301d
commit
64a9cca523
4 changed files with 111 additions and 29 deletions
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
|
|
||||||
Author : $Author: fgerlits $
|
Author : $Author: fgerlits $
|
||||||
Version : $Revision: 1.36 $
|
Version : $Revision: 1.37 $
|
||||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/core/include/LiveSupport/Core/Playlist.h,v $
|
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/core/include/LiveSupport/Core/Playlist.h,v $
|
||||||
|
|
||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
|
@ -128,7 +128,7 @@ using namespace boost::posix_time;
|
||||||
* </code></pre>
|
* </code></pre>
|
||||||
*
|
*
|
||||||
* @author $Author: fgerlits $
|
* @author $Author: fgerlits $
|
||||||
* @version $Revision: 1.36 $
|
* @version $Revision: 1.37 $
|
||||||
*/
|
*/
|
||||||
class Playlist : public Configurable,
|
class Playlist : public Configurable,
|
||||||
public Playable
|
public Playable
|
||||||
|
@ -573,6 +573,27 @@ class Playlist : public Configurable,
|
||||||
return elementList->size();
|
return elementList->size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a new audio clip or sub-playlist to the playlist.
|
||||||
|
*
|
||||||
|
* Checks the type of the playlist, and calls either addAudioClip()
|
||||||
|
* or addPlaylist().
|
||||||
|
*
|
||||||
|
* @param audioClip the new playable item to be added
|
||||||
|
* @param relativeOffset the start of the playable item, relative
|
||||||
|
* to the start of the playlist
|
||||||
|
* @param fadeInfo the fade in / fade out info (optional)
|
||||||
|
* @return the ID of the new PlaylistElement
|
||||||
|
* @exception std::invalid_argument if playable is neither an AudioClip
|
||||||
|
* nor a Playlist
|
||||||
|
*/
|
||||||
|
Ptr<UniqueId>::Ref
|
||||||
|
addPlayable(Ptr<Playable>::Ref playable,
|
||||||
|
Ptr<time_duration>::Ref relativeOffset,
|
||||||
|
Ptr<FadeInfo>::Ref fadeInfo
|
||||||
|
= Ptr<FadeInfo>::Ref())
|
||||||
|
throw (std::invalid_argument);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a new audio clip to the playlist.
|
* Add a new audio clip to the playlist.
|
||||||
*
|
*
|
||||||
|
@ -585,15 +606,13 @@ class Playlist : public Configurable,
|
||||||
* to the start of the playlist
|
* to the start of the playlist
|
||||||
* @param fadeInfo the fade in / fade out info (optional)
|
* @param fadeInfo the fade in / fade out info (optional)
|
||||||
* @return the ID of the new PlaylistElement
|
* @return the ID of the new PlaylistElement
|
||||||
* @exception std::invalid_argument if the playlist already contains
|
|
||||||
* a playlist element with the same relative offset
|
|
||||||
*/
|
*/
|
||||||
Ptr<UniqueId>::Ref
|
Ptr<UniqueId>::Ref
|
||||||
addAudioClip(Ptr<AudioClip>::Ref audioClip,
|
addAudioClip(Ptr<AudioClip>::Ref audioClip,
|
||||||
Ptr<time_duration>::Ref relativeOffset,
|
Ptr<time_duration>::Ref relativeOffset,
|
||||||
Ptr<FadeInfo>::Ref fadeInfo
|
Ptr<FadeInfo>::Ref fadeInfo
|
||||||
= Ptr<FadeInfo>::Ref())
|
= Ptr<FadeInfo>::Ref())
|
||||||
throw (std::invalid_argument);
|
throw ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a new sub-playlist to the playlist.
|
* Add a new sub-playlist to the playlist.
|
||||||
|
@ -607,15 +626,13 @@ class Playlist : public Configurable,
|
||||||
* to the start of the containing playlist
|
* to the start of the containing playlist
|
||||||
* @param fadeInfo the fade in / fade out info (optional)
|
* @param fadeInfo the fade in / fade out info (optional)
|
||||||
* @return the ID of the new PlaylistElement
|
* @return the ID of the new PlaylistElement
|
||||||
* @exception std::invalid_argument if the playlist already contains
|
|
||||||
* a playlist element with the same relative offset
|
|
||||||
*/
|
*/
|
||||||
Ptr<UniqueId>::Ref
|
Ptr<UniqueId>::Ref
|
||||||
addPlaylist(Ptr<Playlist>::Ref playlist,
|
addPlaylist(Ptr<Playlist>::Ref playlist,
|
||||||
Ptr<time_duration>::Ref relativeOffset,
|
Ptr<time_duration>::Ref relativeOffset,
|
||||||
Ptr<FadeInfo>::Ref fadeInfo
|
Ptr<FadeInfo>::Ref fadeInfo
|
||||||
= Ptr<FadeInfo>::Ref())
|
= Ptr<FadeInfo>::Ref())
|
||||||
throw (std::invalid_argument);
|
throw ();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the fade in / fade out info for a playlist element.
|
* Set the fade in / fade out info for a playlist element.
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
|
|
||||||
Author : $Author: fgerlits $
|
Author : $Author: fgerlits $
|
||||||
Version : $Revision: 1.36 $
|
Version : $Revision: 1.37 $
|
||||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/core/src/Playlist.cxx,v $
|
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/core/src/Playlist.cxx,v $
|
||||||
|
|
||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
|
@ -438,6 +438,34 @@ Playlist::addPlaylistElement(Ptr<PlaylistElement>::Ref playlistElement)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
* Add a new audio clip or sub-playlist to the playlist.
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
Ptr<UniqueId>::Ref
|
||||||
|
Playlist::addPlayable(Ptr<Playable>::Ref playable,
|
||||||
|
Ptr<time_duration>::Ref relativeOffset,
|
||||||
|
Ptr<FadeInfo>::Ref fadeInfo)
|
||||||
|
throw (std::invalid_argument)
|
||||||
|
{
|
||||||
|
Ptr<AudioClip>::Ref audioClip;
|
||||||
|
Ptr<Playlist>::Ref playlist;
|
||||||
|
|
||||||
|
switch (playable->getType()) {
|
||||||
|
case Playable::AudioClipType :
|
||||||
|
audioClip = boost::dynamic_pointer_cast<AudioClip>(playable);
|
||||||
|
return addAudioClip(audioClip, relativeOffset, fadeInfo);
|
||||||
|
|
||||||
|
case Playable::PlaylistType :
|
||||||
|
playlist = boost::dynamic_pointer_cast<Playlist>(playable);
|
||||||
|
return addPlaylist(playlist, relativeOffset, fadeInfo);
|
||||||
|
|
||||||
|
default :
|
||||||
|
throw std::invalid_argument("Playable object is neither AudioClip"
|
||||||
|
" nor Playlist?!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
* Add a new audio clip to the playlist.
|
* Add a new audio clip to the playlist.
|
||||||
*----------------------------------------------------------------------------*/
|
*----------------------------------------------------------------------------*/
|
||||||
|
@ -445,7 +473,7 @@ Ptr<UniqueId>::Ref
|
||||||
Playlist::addAudioClip(Ptr<AudioClip>::Ref audioClip,
|
Playlist::addAudioClip(Ptr<AudioClip>::Ref audioClip,
|
||||||
Ptr<time_duration>::Ref relativeOffset,
|
Ptr<time_duration>::Ref relativeOffset,
|
||||||
Ptr<FadeInfo>::Ref fadeInfo)
|
Ptr<FadeInfo>::Ref fadeInfo)
|
||||||
throw (std::invalid_argument)
|
throw ()
|
||||||
{
|
{
|
||||||
Ptr<PlaylistElement>::Ref playlistElement(new PlaylistElement(
|
Ptr<PlaylistElement>::Ref playlistElement(new PlaylistElement(
|
||||||
relativeOffset, audioClip, fadeInfo));
|
relativeOffset, audioClip, fadeInfo));
|
||||||
|
@ -469,7 +497,7 @@ Ptr<UniqueId>::Ref
|
||||||
Playlist::addPlaylist(Ptr<Playlist>::Ref playlist,
|
Playlist::addPlaylist(Ptr<Playlist>::Ref playlist,
|
||||||
Ptr<time_duration>::Ref relativeOffset,
|
Ptr<time_duration>::Ref relativeOffset,
|
||||||
Ptr<FadeInfo>::Ref fadeInfo)
|
Ptr<FadeInfo>::Ref fadeInfo)
|
||||||
throw (std::invalid_argument)
|
throw ()
|
||||||
{
|
{
|
||||||
Ptr<PlaylistElement>::Ref playlistElement(new PlaylistElement(
|
Ptr<PlaylistElement>::Ref playlistElement(new PlaylistElement(
|
||||||
relativeOffset, playlist, fadeInfo));
|
relativeOffset, playlist, fadeInfo));
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
|
|
||||||
Author : $Author: fgerlits $
|
Author : $Author: fgerlits $
|
||||||
Version : $Revision: 1.23 $
|
Version : $Revision: 1.24 $
|
||||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/core/src/PlaylistTest.cxx,v $
|
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/core/src/PlaylistTest.cxx,v $
|
||||||
|
|
||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
|
@ -381,21 +381,6 @@ void
|
||||||
PlaylistTest :: marshallingTest(void)
|
PlaylistTest :: marshallingTest(void)
|
||||||
throw (CPPUNIT_NS::Exception)
|
throw (CPPUNIT_NS::Exception)
|
||||||
{
|
{
|
||||||
Ptr<Playlist>::Ref playlist(new Playlist());
|
|
||||||
try {
|
|
||||||
Ptr<xmlpp::DomParser>::Ref parser(
|
|
||||||
new xmlpp::DomParser(configFileName, false));
|
|
||||||
const xmlpp::Document * document = parser->get_document();
|
|
||||||
const xmlpp::Element * root = document->get_root_node();
|
|
||||||
|
|
||||||
playlist->configure(*root);
|
|
||||||
|
|
||||||
} catch (std::invalid_argument &e) {
|
|
||||||
CPPUNIT_FAIL(e.what());
|
|
||||||
} catch (xmlpp::exception &e) {
|
|
||||||
CPPUNIT_FAIL(e.what());
|
|
||||||
}
|
|
||||||
|
|
||||||
XmlRpc::XmlRpcValue xmlRpcValue = *playlist;
|
XmlRpc::XmlRpcValue xmlRpcValue = *playlist;
|
||||||
CPPUNIT_ASSERT(xmlRpcValue.hasMember("playlist"));
|
CPPUNIT_ASSERT(xmlRpcValue.hasMember("playlist"));
|
||||||
|
|
||||||
|
@ -409,3 +394,46 @@ PlaylistTest :: marshallingTest(void)
|
||||||
== *otherPlaylist->getPlaylength());
|
== *otherPlaylist->getPlaylength());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*------------------------------------------------------------------------------
|
||||||
|
* Testing the addPlayable() method
|
||||||
|
*----------------------------------------------------------------------------*/
|
||||||
|
void
|
||||||
|
PlaylistTest :: addPlayableTest(void)
|
||||||
|
throw (CPPUNIT_NS::Exception)
|
||||||
|
{
|
||||||
|
Ptr<Playlist>::Ref newPlaylist(new Playlist(*playlist));
|
||||||
|
// make a copy
|
||||||
|
|
||||||
|
Ptr<UniqueId>::Ref clipId(new UniqueId("20001"));
|
||||||
|
Ptr<time_duration>::Ref clipLength(new time_duration(0,0,10,0));
|
||||||
|
Ptr<AudioClip>::Ref audioClip(new AudioClip(clipId, clipLength));
|
||||||
|
|
||||||
|
Ptr<time_duration>::Ref firstOffset(new time_duration(0,0,30,0));
|
||||||
|
// hour, min, sec, frac_sec
|
||||||
|
try {
|
||||||
|
newPlaylist->addPlayable(audioClip, firstOffset);
|
||||||
|
} catch (std::invalid_argument &e) {
|
||||||
|
string eMsg = "addPlayable returned with error: ";
|
||||||
|
eMsg += e.what();
|
||||||
|
CPPUNIT_FAIL(eMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT(newPlaylist->getPlaylength());
|
||||||
|
CPPUNIT_ASSERT(*newPlaylist->getPlaylength() == *firstOffset
|
||||||
|
+ *audioClip->getPlaylength());
|
||||||
|
|
||||||
|
Ptr<time_duration>::Ref secondOffset(new time_duration(0,0,40,0));
|
||||||
|
try {
|
||||||
|
newPlaylist->addPlayable(playlist, secondOffset);
|
||||||
|
} catch (std::invalid_argument &e) {
|
||||||
|
string eMsg = "addPlayable returned with error: ";
|
||||||
|
eMsg += e.what();
|
||||||
|
CPPUNIT_FAIL(eMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT(newPlaylist->getPlaylength());
|
||||||
|
CPPUNIT_ASSERT(*newPlaylist->getPlaylength() == *secondOffset
|
||||||
|
+ *playlist->getPlaylength());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
|
|
||||||
Author : $Author: fgerlits $
|
Author : $Author: fgerlits $
|
||||||
Version : $Revision: 1.11 $
|
Version : $Revision: 1.12 $
|
||||||
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/core/src/PlaylistTest.h,v $
|
Location : $Source: /home/paul/cvs2svn-livesupport/newcvsrepo/livesupport/modules/core/src/PlaylistTest.h,v $
|
||||||
|
|
||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
|
@ -58,7 +58,7 @@ namespace Core {
|
||||||
* Unit test for the UploadPlaylistMetohd class.
|
* Unit test for the UploadPlaylistMetohd class.
|
||||||
*
|
*
|
||||||
* @author $Author: fgerlits $
|
* @author $Author: fgerlits $
|
||||||
* @version $Revision: 1.11 $
|
* @version $Revision: 1.12 $
|
||||||
* @see Playlist
|
* @see Playlist
|
||||||
*/
|
*/
|
||||||
class PlaylistTest : public CPPUNIT_NS::TestFixture
|
class PlaylistTest : public CPPUNIT_NS::TestFixture
|
||||||
|
@ -70,6 +70,7 @@ class PlaylistTest : public CPPUNIT_NS::TestFixture
|
||||||
CPPUNIT_TEST(fadeInfoTest);
|
CPPUNIT_TEST(fadeInfoTest);
|
||||||
CPPUNIT_TEST(conversionTest);
|
CPPUNIT_TEST(conversionTest);
|
||||||
CPPUNIT_TEST(marshallingTest);
|
CPPUNIT_TEST(marshallingTest);
|
||||||
|
CPPUNIT_TEST(addPlayableTest);
|
||||||
CPPUNIT_TEST_SUITE_END();
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -129,6 +130,14 @@ class PlaylistTest : public CPPUNIT_NS::TestFixture
|
||||||
void
|
void
|
||||||
marshallingTest(void) throw (CPPUNIT_NS::Exception);
|
marshallingTest(void) throw (CPPUNIT_NS::Exception);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Testing the addPlayable() method.
|
||||||
|
*
|
||||||
|
* @exception CPPUNIT_NS::Exception on test failures.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
addPlayableTest(void) throw (CPPUNIT_NS::Exception);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue