/// <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); }
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 (); }
public ObiNodeFactory(ObiPresentation presentation) { m_Presentation = presentation; }