コード例 #1
0
 /// <summary>
 /// Parse an E-AC-3 decoder to a renderer.
 /// </summary>
 public EnhancedAC3Renderer(EnhancedAC3Decoder stream) : base(stream)
 {
     // Object-based rendering
     if (HasObjects = stream.Extensions.HasObjects)
     {
         ObjectAudioMetadata oamd = stream.Extensions.OAMD;
         JointObjectCoding   joc  = stream.Extensions.JOC;
         DynamicObjects = joc.ObjectCount;
         finalResult    = new float[joc.ObjectCount][];
         applier        = new JointObjectCodingApplier(joc.ObjectCount, stream.FrameSize);
         SetupObjects(oamd.ObjectCount);
     }
     // Channel-based rendering
     else
     {
         ReferenceChannel[] channels = stream.GetChannels();
         for (int channel = 0; channel < channels.Length; ++channel)
         {
             Source source = new StreamMasterSource(reader, channel)
             {
                 Position = channelPositions[(int)channels[channel]] * Listener.EnvironmentSize
             };
             objects.Add(source);
         }
         finalResult = new float[channels.Length][];
         FinishSetup(channels.Length);
     }
 }
コード例 #2
0
ファイル: Renderer.cs プロジェクト: VoidXH/Cavern
 /// <summary>
 /// Set up the renderer for a number of standard channels.
 /// </summary>
 protected void SetupChannels(int count)
 {
     ReferenceChannel[] matrix = ChannelPrototype.GetStandardMatrix(count);
     for (int channel = 0; channel < count; ++channel)
     {
         Source source = new StreamMasterSource(reader, channel)
         {
             Position = channelPositions[(int)matrix[channel]] * Listener.EnvironmentSize
         };
         objects.Add(source);
     }
     FinishSetup(count);
 }