-void Decoder::decode_proc(shared_ptr<data::Logic> data)
-{
- uint8_t chunk[DecodeChunkLength];
-
- assert(data);
-
- _annotations.clear();
-
- const deque< shared_ptr<pv::data::LogicSnapshot> > &snapshots =
- data->get_snapshots();
- if (snapshots.empty())
- return;
-
- const shared_ptr<pv::data::LogicSnapshot> &snapshot =
- snapshots.front();
- const int64_t sample_count = snapshot->get_sample_count() - 1;
- double samplerate = data->get_samplerate();
-
- // Show sample rate as 1Hz when it is unknown
- if (samplerate == 0.0)
- samplerate = 1.0;
-
- srd_session_config_set(_session, SRD_CONF_NUM_PROBES,
- g_variant_new_uint64(_probes.size()));
- srd_session_config_set(_session, SRD_CONF_UNITSIZE,
- g_variant_new_uint64(snapshot->unit_size()));
- srd_session_config_set(_session, SRD_CONF_SAMPLERATE,
- g_variant_new_uint64((uint64_t)samplerate));
-
- srd_session_start(_session);
-
- srd_pd_output_callback_add(_session, SRD_OUTPUT_ANN,
- Decoder::annotation_callback, this);