MediaFactory now using MediaAccessFacade to determine media Duration

This commit is contained in:
Fischlurch 2011-05-20 02:59:29 +02:00
parent 12f43078a2
commit 51fa9fe735
12 changed files with 82 additions and 35 deletions

View file

@ -165,7 +165,7 @@ namespace asset {
if (isnil (key.name)) key.name=extractName(file);
MediaAccessFacade& maf = MediaAccessFacade::instance();
MediaDesc& handle = maf.queryFile(file);
MediaDesc& handle = maf.queryFile(key.name);
Duration length = handle.length;
TODO ("detecting and wiring multichannel compound media!");

View file

@ -106,6 +106,11 @@ namespace test {
(*this)["test-2"].globalLength(LENGTH_TestClip).channel("video","H264")
.channel("audio-L","PCM")
.channel("audio-R","PCM");
(*this)["test-3"].globalLength(LENGTH_TestClip).channel("audio","PCM");
(*this)["test-4"].globalLength(LENGTH_TestClip).channel("audio-W","PCM")
.channel("audio-X","PCM")
.channel("audio-Y","PCM")
.channel("audio-Z","PCM");
// ----------------------------------------------------------------------TESTCASES
}

View file

@ -26,6 +26,7 @@
#include "backend/media-access-facade.hpp"
#include "lib/test/mock-injector.hpp"

View file

@ -30,7 +30,9 @@
#include "proc/asset/proc.hpp"
#include "proc/asset/asset-diagnostics.hpp"
#include "backend/media-access-mock.hpp"
using lib::test::Use4Test;
using util::isnil;
using std::string;
@ -49,6 +51,8 @@ namespace test {
{
virtual void run(Arg arg)
{
Use4Test<backend::test::MediaAccessMock> within_this_scope;
createMedia();
factoryVariants();
@ -70,10 +74,10 @@ namespace test {
void createMedia()
{
Category cat(VIDEO,"bin1");
Asset::Ident key("Name-1", cat, "ichthyo", 5);
Asset::Ident key("test-1", cat, "ichthyo", 5);
PM mm1 = asset::Media::create(key,"testfile.mov");
PM mm2 = asset::Media::create("testfile1.mov", cat);
PM mm3 = asset::Media::create("testfile2.mov", VIDEO);
PM mm2 = asset::Media::create("test-1.mov", cat);
PM mm3 = asset::Media::create("test-2.mov", VIDEO);
// Assets have been registered and can be retrieved by ID
AssetManager& aMang = AssetManager::instance();
@ -124,9 +128,9 @@ namespace test {
// checking the Ident-Fields
CHECK (mm1->ident.name == "Name-1");
CHECK (mm2->ident.name == "testfile1");
CHECK (mm3->ident.name == "testfile2");
CHECK (mm1->ident.name == "test-1");
CHECK (mm2->ident.name == "test-1");
CHECK (mm3->ident.name == "test-2");
CHECK (cat == Category (VIDEO,"bin1"));
CHECK (mm1->ident.category == Category (VIDEO,"bin1"));
@ -142,8 +146,8 @@ namespace test {
CHECK (mm3->ident.version == 1);
CHECK (mm1->getFilename() == "testfile.mov");
CHECK (mm2->getFilename() == "testfile1.mov");
CHECK (mm3->getFilename() == "testfile2.mov");
CHECK (mm2->getFilename() == "test-1.mov");
CHECK (mm3->getFilename() == "test-2.mov");
TRACE (asset_mem, "leaving test method scope");
@ -159,25 +163,25 @@ namespace test {
{
PM candi;
Asset::Ident key1("Au-1", Category(AUDIO), "ichthyo", 5);
Asset::Ident key1("test-1", Category(AUDIO), "ichthyo", 5);
candi = asset::Media::create(key1);
CHECK ( checkProperties (candi, key1, ""));
candi = asset::Media::create(key1, string("testfile.wav"));
CHECK ( checkProperties (candi, key1, "testfile.wav"));
candi = asset::Media::create(key1, string("test-1.wav"));
CHECK ( checkProperties (candi, key1, "test-1.wav"));
Asset::Ident key2("", Category(AUDIO), "ichthyo", 5);
candi = asset::Media::create(key2, string("testfile2.wav"));
CHECK ( checkProperties (candi, key2, "testfile2.wav"));
CHECK (key2.name == "testfile2"); // name filled in automatically
candi = asset::Media::create(key2, string("test-2.wav"));
CHECK ( checkProperties (candi, key2, "test-2.wav"));
CHECK (key2.name == "test-2"); // name filled in automatically
candi = asset::Media::create(string("testfile3.wav"), Category(AUDIO));
CHECK ( checkProperties (candi, Asset::Ident("testfile3", Category(AUDIO), "lumi", 1)
, "testfile3.wav"));
candi = asset::Media::create(string("test-3.wav"), Category(AUDIO));
CHECK ( checkProperties (candi, Asset::Ident("test-3", Category(AUDIO), "lumi", 1)
, "test-3.wav"));
candi = asset::Media::create("some/path/testfile4.wav", Category(AUDIO));
CHECK ( checkProperties (candi, Asset::Ident("testfile4", Category(AUDIO), "lumi", 1)
, "some/path/testfile4.wav"));
candi = asset::Media::create("some/path/test-4.wav", Category(AUDIO));
CHECK ( checkProperties (candi, Asset::Ident("test-4", Category(AUDIO), "lumi", 1)
, "some/path/test-4.wav"));
candi = asset::Media::create("", Category(AUDIO,"sub/bin"));
CHECK ( checkProperties (candi, Asset::Ident("nil", Category(AUDIO,"sub/bin"), "lumi", 1)

View file

@ -24,10 +24,12 @@
#include "lib/test/run.hpp"
#include "proc/asset/testasset.hpp"
#include "proc/asset/asset-diagnostics.hpp"
#include "backend/media-access-mock.hpp"
#include "proc/asset/media.hpp"
#include "proc/asset/clip.hpp"
#include "lib/util.hpp"
using lib::test::Use4Test;
using util::contains;
using util::isnil;
@ -186,11 +188,13 @@ namespace test {
/** @test each real world asset subclass has to care
* for registering and deregistering any additional
* dependencies. Here we collect some more prominent
* examples (and hopfully don't fail to cover any
* examples (and hopefully don't fail to cover any
* important special cases...)
*/
void checkRealAssetDependencyRegistration ()
{
Use4Test<backend::test::MediaAccessMock> within_this_scope;
// -----Media and Clip--------------------------------
typedef P<Media> PM;
typedef P<Clip> PC;

View file

@ -30,7 +30,9 @@
#include "proc/asset/proc.hpp"
#include "proc/asset/asset-diagnostics.hpp"
#include "backend/media-access-mock.hpp"
using lib::test::Use4Test;
using util::isnil;
using std::string;
@ -68,13 +70,15 @@ namespace test {
*/
void createDuplicate()
{
PM mm1 = asset::Media::create ("testfile1.mov", VIDEO);
Use4Test<backend::test::MediaAccessMock> within_this_scope;
PM mm1 = asset::Media::create ("test-1.mov", VIDEO);
Asset::Ident idi (mm1->ident); // duplicate Ident record
PM mm1X = asset::Media::create (idi); // note: we actually don't call any ctor
CHECK (mm1 == mm1X); // instead, we got mm1 back.
PM mm2 = asset::Media::create (idi,"testfile2.mov");
PM mm2 = asset::Media::create (idi,"test-2.mov");
CHECK (mm1->getID() == mm2->getID()); // different object, same hash
@ -84,10 +88,10 @@ namespace test {
CHECK (aMang.known (mm1->getID()));
CHECK (aMang.known (mm2->getID()));
CHECK (mm1->ident.name == "testfile1");
CHECK (mm2->ident.name == "testfile1");
CHECK (mm1->getFilename() == "testfile1.mov");
CHECK (mm2->getFilename() == "testfile2.mov");
CHECK (mm1->ident.name == "test-1");
CHECK (mm2->ident.name == "test-1");
CHECK (mm1->getFilename() == "test-1.mov");
CHECK (mm2->getFilename() == "test-2.mov");
TRACE (asset_mem, "leaving test method scope");

View file

@ -30,7 +30,9 @@
#include "proc/asset/media.hpp"
#include "proc/mobject/session/clip.hpp"
#include "proc/asset/asset-diagnostics.hpp"
#include "backend/media-access-mock.hpp"
using lib::test::Use4Test;
using util::contains;
using util::isnil;
using std::string;
@ -56,6 +58,8 @@ namespace asset {
virtual void run (Arg)
{
Use4Test<backend::test::MediaAccessMock> within_this_scope;
PM mm = asset::Media::create("test-1", VIDEO);
PC cc = mm->createClip();

View file

@ -29,7 +29,9 @@
#include "proc/asset/proc.hpp"
#include "proc/asset/asset-diagnostics.hpp"
#include "backend/media-access-mock.hpp"
using lib::test::Use4Test;
using util::isnil;
using std::string;
@ -57,19 +59,22 @@ namespace asset {
{
virtual void run(Arg)
{
Asset::Ident key1("Au-1", Category(AUDIO), "ichthyo", 5);
Use4Test<backend::test::MediaAccessMock> within_this_scope;
Asset::Ident key1("test-1", Category(AUDIO), "ichthyo", 5);
PAsset mm1 = asset::Media::create(key1, "Name-1");
Asset::Ident key2("Au-1", Category(AUDIO), "ichthyo", 7);
Asset::Ident key2("test-1", Category(AUDIO), "ichthyo", 7);
PAsset mm2 = asset::Media::create(key2, "Name-2");
Asset::Ident key3("Au-2", Category(AUDIO), "ichthyo", 5);
Asset::Ident key3("test-2", Category(AUDIO), "ichthyo", 5);
PAsset mm3 = asset::Media::create(key3, "Name-3");
Asset::Ident key4("Au-2", Category(AUDIO), "stega", 5);
Asset::Ident key4("test-2", Category(AUDIO), "stega", 5);
PAsset mm4 = asset::Media::create(key4, "Name-4");
Asset::Ident key5("Au-1", Category(VIDEO), "ichthyo", 5);
Asset::Ident key5("test-1", Category(VIDEO), "ichthyo", 5);
PAsset mm5 = asset::Media::create(key5, "Name-5");

View file

@ -29,6 +29,7 @@
#include "proc/asset/media.hpp"
#include "proc/mobject/session/clip.hpp"
#include "proc/mobject/test-dummy-mobject.hpp"
#include "backend/media-access-mock.hpp"
#include "lib/util.hpp"
#include <iostream>
@ -45,6 +46,7 @@ namespace test {
using session::Clip;
using session::AbstractMO;
using lib::test::Use4Test;
using namespace mobject::test;
@ -106,9 +108,12 @@ namespace test {
*/
class BuilderTool_test : public Test
{
virtual void run(Arg)
virtual void
run(Arg)
{
Use4Test<backend::test::MediaAccessMock> within_this_scope;
TestTool t1;
BuilderTool& tool = t1;

View file

@ -35,6 +35,7 @@
//#include "proc/mobject/session/clip.hpp"
//#include "proc/mobject/explicitplacement.hpp"
#include "proc/mobject/test-dummy-mobject.hpp"
#include "backend/media-access-mock.hpp"
//#include "lib/test/test-helper.hpp"
#include "lib/time/timevalue.hpp"
@ -42,6 +43,7 @@
namespace mobject {
namespace test {
@ -51,6 +53,7 @@ namespace test {
using std::endl;
using lib::Symbol;
using lib::test::Use4Test;
using lib::time::Duration;
using lib::time::FSecs;
using lib::time::Time;
@ -80,6 +83,9 @@ namespace test {
virtual void
run (Arg)
{
Use4Test<backend::test::MediaAccessMock> within_this_scope;
PMO testClip1 = asset::Media::create("test-1", asset::VIDEO)->createClip();
PMO testClip2 = asset::Media::create("test-2", asset::VIDEO)->createClip();

View file

@ -32,12 +32,14 @@
#include "proc/mobject/session/clip.hpp"
#include "proc/mobject/explicitplacement.hpp"
#include "proc/mobject/test-dummy-mobject.hpp"
#include "backend/media-access-mock.hpp"
#include "lib/test/test-helper.hpp"
#include "lib/time/timevalue.hpp"
#include "lib/util.hpp"
#include <iostream>
using lib::test::Use4Test;
using lib::test::showSizeof;
using lib::time::Duration;
using lib::time::FSecs;
@ -101,6 +103,8 @@ namespace test {
virtual void
run (Arg)
{
Use4Test<backend::test::MediaAccessMock> within_this_scope;
// create data simulating a "Session"
PMObj testClip1 = asset::Media::create("test-1", asset::VIDEO)->createClip();

View file

@ -23,6 +23,7 @@
#include "lib/test/run.hpp"
#include "lib/test/test-helper.hpp"
#include "backend/media-access-mock.hpp"
#include "proc/mobject/test-dummy-mobject.hpp"
#include "proc/mobject/session/clip.hpp"
#include "proc/mobject/placement.hpp"
@ -34,6 +35,7 @@
#include <iostream>
using lib::HashIndexed;
using lib::test::Use4Test;
using std::tr1::shared_ptr;
using std::string;
@ -65,6 +67,9 @@ namespace test {
virtual void
run (Arg)
{
Use4Test<backend::test::MediaAccessMock> within_this_scope;
typedef Placement<MObject> PMObj;
typedef TestPlacement<> PDummy;
typedef TestPlacement<TestSubMO1> PSub1;