private Stream getNextAudioStream(string basename) { if (getAudioStream() != null && getCurrentPCMFormat() != null) { FileStream fs = new FileStream(Path.Combine(getOutputFolder(), getCurrentAudioFileName()), FileMode.Create, FileAccess.Write); urakawa.media.data.audio.PCMDataInfo dataInfo = new urakawa.media.data.audio.PCMDataInfo(getCurrentPCMFormat()); Stream curAS = getAudioStream(); curAS.Position = 0; dataInfo.setDataLength((uint)curAS.Length); dataInfo.writeRiffWaveHeader(fs); copyData(curAS, fs, dataInfo.getDataLength()); fs.Close(); } mAudioMemoryStream = new MemoryStream(); mPCMFormat = null; return(getAudioStream()); }
/// <summary> /// Create a new audio node by importing data from a file. /// </summary> public urakawa.core.TreeNode CreateAudioNode(string filename) { urakawa.Presentation p = getPresentation(0); urakawa.core.TreeNode node = p.getTreeNodeFactory().createNode(typeof(AudioNode).Name, DataModelFactory.NS); // Update the media data manager to accept this type of file if (!p.getMediaDataManager().getEnforceSinglePCMFormat()) { System.IO.FileStream audioStream = System.IO.File.OpenRead(filename); urakawa.media.data.audio.PCMDataInfo info = urakawa.media.data.audio.PCMDataInfo.parseRiffWaveHeader(audioStream); audioStream.Close(); p.getMediaDataManager().setDefaultPCMFormat(info); p.getMediaDataManager().setEnforceSinglePCMFormat(true); } // I'll go ahead and not comment this part urakawa.media.data.audio.AudioMediaData audio = p.getMediaDataFactory().createAudioMediaData(); audio.appendAudioDataFromRiffWave(filename); urakawa.media.data.audio.ManagedAudioMedia media = (urakawa.media.data.audio.ManagedAudioMedia)p.getMediaFactory().createAudioMedia(); media.setMediaData(audio); urakawa.property.channel.ChannelsProperty prop = p.getPropertyFactory().createChannelsProperty(); prop.setMedia(FindChannel("bobi.audio"), media); node.addProperty(prop); return(node); }