Esempio n. 1
0
 Module::Holder::Ptr CreateModule(const Parameters::Accessor& params, const Binary::Container& rawData, Parameters::Container::Ptr properties) const override
 {
   try
   {
     PropertiesHelper props(*properties);
     DataBuilder dataBuilder(props);
     if (const Formats::Chiptune::Container::Ptr container = Formats::Chiptune::SPC::Parse(rawData, dataBuilder))
     {
       const SPC::Ptr tune = MakePtr<SPC>(rawData);
       props.SetSource(*container);
       props.SetFramesFrequency(50);
       const Time::Milliseconds duration = dataBuilder.GetDuration(params);
       const Time::Milliseconds period = Time::Milliseconds(20);
       const uint_t frames = duration.Get() / period.Get();
       const Information::Ptr info = CreateStreamInfo(frames);
       return MakePtr<Holder>(tune, info, properties);
     }
   }
   catch (const std::exception& e)
   {
     Dbg("Failed to create SPC: %s", e.what());
   }
   return Module::Holder::Ptr();
 }
Esempio n. 2
0
 Holder(Model::Ptr data, Parameters::Accessor::Ptr props)
   : Data(std::move(data))
   , Info(CreateStreamInfo(Data->FramesCount))
   , Properties(std::move(props))
 {
 }