context->seek_ts = -2;
if (context->has_video) {
+ void *pop;
+
context->video_st.next_pts = 0;
context->video_start_time = 0;
avcodec_flush_buffers(context->video_st.st->codec);
+
+ while(switch_queue_trypop(context->eh.video_queue, &pop) == SWITCH_STATUS_SUCCESS) {
+ switch_image_t *img;
+ if (!pop) break;
+ img = (switch_image_t *) pop;
+ switch_img_free(&img);
+ }
}
}
return SWITCH_STATUS_FALSE;
}
- if (context->read_paused) {
+ if (context->read_paused || context->seek_ts == -2) {
int sanity = 10;
if (context->seek_ts == -2) { // just seeked, try read a new img
}
context->vid_ready = 1;
}
- if (!frame->img) context->closed = 1;
- return frame->img ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE;
+
+ if ((flags & SVR_BLOCK)) {
+ if (!frame->img) context->closed = 1;
+ return frame->img ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE;
+ } else {
+ return frame->img ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_BREAK;
+ }
}
#endif