+ const int frame_ended = devc->limit_samples && (devc->sent_samples >= devc->limit_samples);
+ const int final_frame = devc->limit_frames && (devc->num_frames >= (devc->limit_frames - 1));
+
+ if (frame_ended) {
+ devc->num_frames++;
+ devc->sent_samples = 0;
+ devc->trigger_fired = FALSE;
+ std_session_send_df_frame_end(sdi);
+
+ /* There may be another trigger in the remaining data, go back and check for it */
+ if (processed_samples < cur_sample_count) {
+ /* Reset the trigger stage */
+ if (devc->stl)
+ devc->stl->cur_stage = 0;
+ else {
+ std_session_send_df_frame_begin(sdi);
+ devc->trigger_fired = TRUE;
+ }
+ if (!final_frame)
+ goto check_trigger;
+ }
+ }
+ if (frame_ended && final_frame) {