MediaPlayer: Add _CalculateDuration and archivable protocol
This commit is contained in:
@@ -7,6 +7,7 @@
|
|||||||
#include "UrlPlaylistItem.h"
|
#include "UrlPlaylistItem.h"
|
||||||
|
|
||||||
#include <MediaFile.h>
|
#include <MediaFile.h>
|
||||||
|
#include <MediaTrack.h>
|
||||||
|
|
||||||
#include "MediaFileTrackSupplier.h"
|
#include "MediaFileTrackSupplier.h"
|
||||||
|
|
||||||
@@ -26,6 +27,9 @@ UrlPlaylistItem::UrlPlaylistItem(const UrlPlaylistItem& item)
|
|||||||
|
|
||||||
UrlPlaylistItem::UrlPlaylistItem(const BMessage* archive)
|
UrlPlaylistItem::UrlPlaylistItem(const BMessage* archive)
|
||||||
{
|
{
|
||||||
|
const char* url = NULL;
|
||||||
|
if (archive->FindString("mediaplayer:url", &url) == B_OK)
|
||||||
|
fUrl = BUrl(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -44,14 +48,17 @@ UrlPlaylistItem::Clone() const
|
|||||||
BArchivable*
|
BArchivable*
|
||||||
UrlPlaylistItem::Instantiate(BMessage* archive)
|
UrlPlaylistItem::Instantiate(BMessage* archive)
|
||||||
{
|
{
|
||||||
return new UrlPlaylistItem(archive);
|
if (validate_instantiation(archive, "UrlPlaylistItem"))
|
||||||
|
return new (std::nothrow) UrlPlaylistItem(archive);
|
||||||
|
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
UrlPlaylistItem::Archive(BMessage* into, bool deep) const
|
UrlPlaylistItem::Archive(BMessage* into, bool deep) const
|
||||||
{
|
{
|
||||||
return B_NOT_SUPPORTED;
|
return into->AddString("mediaplayer:url", fUrl.UrlString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -130,6 +137,18 @@ UrlPlaylistItem::RestoreFromTrash()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bigtime_t
|
||||||
|
UrlPlaylistItem::_CalculateDuration()
|
||||||
|
{
|
||||||
|
BMediaFile mediaFile(fUrl);
|
||||||
|
|
||||||
|
if (mediaFile.InitCheck() != B_OK || mediaFile.CountTracks() < 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return mediaFile.TrackAt(0)->Duration();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TrackSupplier*
|
TrackSupplier*
|
||||||
UrlPlaylistItem::_CreateTrackSupplier() const
|
UrlPlaylistItem::_CreateTrackSupplier() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -48,6 +48,8 @@ public:
|
|||||||
BUrl Url() const;
|
BUrl Url() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual bigtime_t _CalculateDuration();
|
||||||
|
|
||||||
virtual TrackSupplier* _CreateTrackSupplier() const;
|
virtual TrackSupplier* _CreateTrackSupplier() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user