示例#1
0
 /// <summary>
 /// Create a recording session for a project starting from a given node.
 /// </summary>
 /// <param name="project">The project in which we are recording.</param>
 /// <param name="recorder">The audio recorder from the project.</param>
 public RecordingSession(ObiPresentation presentation, AudioRecorder recorder, Settings settings)
 {
     mPresentation = presentation;
     mRecorder     = recorder;
     if (!string.IsNullOrEmpty(settings.Audio_LocalRecordingDirectory))
     {
         mRecorder.RecordingDirectory = settings.Audio_LocalRecordingDirectory;
     }
     else
     {
         mRecorder.RecordingDirectory =
             presentation.DataProviderManager.DataFileDirectoryFullPath;
     }
     if (!Directory.Exists(mRecorder.RecordingDirectory))
     {
         Directory.CreateDirectory(mRecorder.RecordingDirectory);
     }
     mSessionOffset                    = 0;
     mPhraseMarks                      = null;
     mSectionMarks                     = null;
     mAudioList                        = new List <ManagedAudioMedia>();
     mRecordingUpdateTimer             = new Timer();
     mRecordingUpdateTimer.Tick       += new System.EventHandler(mRecordingUpdateTimer_tick);
     mRecordingUpdateTimer.Interval    = 1000;
     m_Settings                        = settings;
     m_PhraseIndexesToDelete           = new List <int>();
     mRecorder.PcmDataBufferAvailable += new AudioLib.AudioRecorder.PcmDataBufferAvailableHandler(DetectPhrasesOnTheFly);
 }
示例#2
0
        internal void CreateNewPresentationInBackend(string path, string title, bool createTitleSection, string id, Settings settings, bool isStubProjectForImport, int audioChannels, int audioSampleRate)
        {
            mProject = new Project();
#if false //(DEBUG)
            mProject.PrettyFormat = true;
#else
            mProject.PrettyFormat = false;
#endif
            string parentDirectory     = System.IO.Path.GetDirectoryName(path);
            Uri    obiProjectDirectory = new Uri(parentDirectory);

            //Presentation presentation = mProject.AddNewPresentation(obiProjectDirectory, System.IO.Path.GetFileName(path));
            //ObiPresentation newPres = mProject.PresentationFactory.Create(mProject, obiProjectDirectory, System.IO.Path.GetFileName(path));

            ObiPresentation newPres = mProject.PresentationFactory.Create <ObiPresentation>();
            newPres.Project = mProject;
            newPres.RootUri = obiProjectDirectory;

            //TODO: it would be good for Obi to separate Data folder based on project file name,
            //TODO: otherwise collision of Data folder may happen if several project files are in same directory.
            //newPres.DataProviderManager.SetDataFileDirectoryWithPrefix(System.IO.Path.GetFileName(path));

#if DEBUG
            newPres.WarmUpAllFactories();
#endif


            mProject.Presentations.Insert(mProject.Presentations.Count, newPres);


            PCMFormatInfo pcmFormat = new PCMFormatInfo((ushort)audioChannels, (uint)audioSampleRate, (ushort)settings.Audio_BitDepth);
            newPres.MediaDataManager.DefaultPCMFormat       = pcmFormat;
            newPres.MediaDataManager.EnforceSinglePCMFormat = true;

            newPres.ChannelsManager.GetOrCreateTextChannel();
            //m_textChannel = presentation.ChannelFactory.CreateTextChannel();
            //m_textChannel.Name = "The Text Channel";

            newPres.ChannelsManager.GetOrCreateAudioChannel();
            //m_audioChannel = presentation.ChannelFactory.CreateAudioChannel();
            //m_audioChannel.Name = "The Audio Channel";

            ObiRootNode rootNode = newPres.TreeNodeFactory.Create <ObiRootNode>();
            newPres.RootNode = rootNode;

            //sdk2
            //mProject.setDataModelFactory ( mDataModelFactory );
            //mProject.setPresentation ( mDataModelFactory.createPresentation (), 0 );

            mPath = path;
            GetLock(mPath);
            mChangesCount = 0;
            newPres.Initialize(this, title, createTitleSection, id, settings, isStubProjectForImport);

            //sdk2
            //Presentation.setRootUri ( new Uri ( path ) );

            //sdk2
            // create data directory if it is not created
            //string dataDirectory = ((urakawa.media.data.FileDataProviderManager)Presentation.getDataProviderManager ()).getDataFileDirectoryFullPath ();
            //if ( !Directory.Exists (dataDirectory ) )
            //    {
            //    Directory.CreateDirectory ( dataDirectory );
            //    }

            //if (ProjectCreated != null) ProjectCreated ( this, null );

            SetupBackupFilesForNewSession(path);
            ShouldDisableDiskSpaceCheck();
            Save(mPath);
            //ForceSave ();
        }
示例#3
0
 public ObiNodeFactory(ObiPresentation presentation)
 {
     m_Presentation = presentation;
 }