clarify some confusion about how "raw" port buffer sizes are defined
authorPaul Davis <paul@linuxaudiosystems.com>
Sun, 29 May 2011 17:33:41 +0000 (17:33 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Sun, 29 May 2011 17:33:41 +0000 (17:33 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@9628 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/audio_port.h
libs/ardour/ardour/midi_port.h
libs/ardour/ardour/port.h
libs/ardour/audio_port.cc
libs/ardour/audioengine.cc
libs/ardour/midi_port.cc

index 1d107dfe73b59c1e1529c408aecc8dd6305e8740..6b534afe621f43f9447667adae157cdd2820b303 100644 (file)
@@ -39,8 +39,6 @@ class AudioPort : public Port
        void cycle_end (pframes_t);
        void cycle_split ();
 
-       size_t raw_buffer_size (pframes_t nframes) const;
-
        Buffer& get_buffer (pframes_t nframes) {
                return get_audio_buffer (nframes);
        }
index d95296ef76aa803dd6b6a48e7fe5db29c8babc24..9a685be4e44b6810c566c765028a7d267b5fb0b8 100644 (file)
@@ -43,8 +43,7 @@ class MidiPort : public Port {
 
        void flush_buffers (pframes_t nframes, framepos_t time);
        void transport_stopped ();
-
-       size_t raw_buffer_size (pframes_t nframes) const;
+       void reset ();
 
        Buffer& get_buffer (pframes_t nframes) {
                return get_midi_buffer (nframes);
index fe6fc9139db887d6edd1be095bf212e96b96cf4b..15085ec47ba970c2caad3586a4fc882910f57ea4 100644 (file)
@@ -111,9 +111,6 @@ public:
 
        virtual void reset ();
 
-       /** @return the size of the raw buffer (bytes) for duration @a nframes (audio frames) */
-       virtual size_t raw_buffer_size (pframes_t nframes) const = 0;
-
        virtual DataType type () const = 0;
        virtual void cycle_start (pframes_t);
        virtual void cycle_end (pframes_t) = 0;
index 987d99e25ae66d4a2a2c6527073f30b5b7d2a589..b0c8d452210a0a22169c7650210137fc875a6f0f 100644 (file)
@@ -79,9 +79,5 @@ AudioPort::get_audio_buffer (pframes_t nframes)
        return *_buffer;
 }
 
-size_t
-AudioPort::raw_buffer_size (pframes_t nframes) const
-{
-       return nframes * sizeof (Sample);
-}
+
 
index 4a17bd6f4cadd3edc88f17db811a929bcb212cbc..d6d3b45d18260d847864bd09df24144b5f402794 100644 (file)
@@ -815,12 +815,6 @@ AudioEngine::register_port (DataType dtype, const string& portname, bool input)
                        throw PortRegistrationFailure("unable to create port (unknown type)");
                }
 
-               size_t& old_buffer_size  = _raw_buffer_sizes[newport->type()];
-               size_t  port_buffer_size = newport->raw_buffer_size(0);
-               if (port_buffer_size > old_buffer_size) {
-                       old_buffer_size = port_buffer_size;
-               }
-
                RCUWriter<Ports> writer (ports);
                boost::shared_ptr<Ports> ps = writer.get_copy ();
                ps->insert (ps->begin(), newport);
index 1ebc1de3fa7d65620d1f2011e61b38b692ae8a8b..39f43eeef90b6195604dab8eefe552af6a76d9c0 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "ardour/midi_port.h"
 #include "ardour/data_type.h"
+#include "ardour/audioengine.h"
 
 using namespace ARDOUR;
 using namespace std;
@@ -30,7 +31,7 @@ MidiPort::MidiPort (const std::string& name, Flags flags)
        , _has_been_mixed_down (false)
        , _resolve_in_process (false)
 {
-       _buffer = new MidiBuffer (raw_buffer_size(0));
+       _buffer = new MidiBuffer (AudioEngine::instance()->raw_buffer_size (DataType::MIDI));
 }
 
 MidiPort::~MidiPort()
@@ -162,9 +163,10 @@ MidiPort::transport_stopped ()
        _resolve_in_process = true;
 }
 
-size_t
-MidiPort::raw_buffer_size (pframes_t nframes) const
+void
+MidiPort::reset ()
 {
-       return jack_midi_max_event_size (jack_port_get_buffer (_jack_port, nframes));
+       Port::reset ();
+       delete _buffer;
+       _buffer = new MidiBuffer (AudioEngine::instance()->raw_buffer_size (DataType::MIDI));
 }
-