- /* */
- if (vout->p->displayed.decoded)
- picture_Release(vout->p->displayed.decoded);
- picture_Hold(decoded);
- vout->p->displayed.decoded = decoded;
+ vout->p->displayed.is_interlaced = !decoded->b_progressive;
+ vout->p->displayed.qtype = decoded->i_qtype;
+ }
+ vout->p->displayed.timestamp = decoded->date;
+
+ /* */
+ if (vout->p->displayed.decoded)
+ picture_Release(vout->p->displayed.decoded);
+ picture_Hold(decoded);
+ vout->p->displayed.decoded = decoded;
+
+ return decoded;
+}
+
+static int ThreadDisplayPicture(vout_thread_t *vout,
+ bool now, mtime_t *deadline)
+{
+ vout_display_t *vd = vout->p->display.vd;
+ int displayed_count = 0;
+ int lost_count = 0;
+
+ for (;;) {
+ bool is_forced;
+ picture_t *decoded = ThreadDisplayGetDecodedPicture(vout,
+ &lost_count, &is_forced,
+ now, deadline);
+ if (!decoded)
+ break;