mutex DecoderStack::_global_decode_mutex;
-DecoderStack::DecoderStack(const srd_decoder *const dec)
+DecoderStack::DecoderStack(const srd_decoder *const dec) :
+ _samples_decoded(0)
{
_stack.push_back(shared_ptr<decode::Decoder>(
new decode::Decoder(dec)));
_stack.push_back(decoder);
}
+void DecoderStack::remove(int index)
+{
+ using pv::data::decode::Decoder;
+
+ assert(index >= 0);
+ assert(index < (int)_stack.size());
+
+ // Find the decoder in the stack
+ list< shared_ptr<Decoder> >::iterator iter = _stack.begin();
+ for(int i = 0; i < index; i++, iter++)
+ assert(iter != _stack.end());
+
+ // Delete the element
+ _stack.erase(iter);
+}
+
+int64_t DecoderStack::samples_decoded() const
+{
+ lock_guard<mutex> decode_lock(_mutex);
+ return _samples_decoded;
+}
+
const vector< shared_ptr<view::decode::Annotation> >
DecoderStack::annotations() const
{
_decode_thread.interrupt();
_decode_thread.join();
+ _samples_decoded = 0;
+
_annotations.clear();
// We get the logic data of the first probe in the list.
_error_message = tr("Failed to initialise decoder");
break;
}
+
+ {
+ lock_guard<mutex> lock(_mutex);
+ _samples_decoded = chunk_end;
+ }
}
// Destroy the session