static bool video_start_post;
static bool videopeek;
static bool nopostvideostart;
+static int hold_property_changed;
static struct video_frame_detect_s video_frame_detect;
static struct timeval time_setomxpts = {
.tv_sec = 0,
systime = timestamp_pcrscr_get();
pts = next_vf->pts;
- if (((pts == 0) && (cur_dispbuf != &vf_local))
+ if (((pts == 0) && ((cur_dispbuf != &vf_local)
+ || (hold_property_changed == 1)))
|| (freerun_mode == FREERUN_DUR)) {
pts =
timestamp_vpts_get() +
(cur_vf ? DUR2PTS(cur_vf->duration) : 0);
+ if (hold_property_changed == 1)
+ hold_property_changed = 0;
}
/* check video PTS discontinuity */
else if ((enable_video_discontinue_report) &&
first_frame_toggled = 0;
videopeek = 0;
nopostvideostart = false;
+ hold_property_changed = 0;
atomic_set(&video_unreg_flag, 1);
while (atomic_read(&video_inirq_flag) > 0)
const char *buf, size_t count)
{
int r;
+ unsigned int value;
+
cur_width = 0;
cur_height = 0;
if (debug_flag & DEBUG_FLAG_BLACKOUT)
pr_info("%s(%s)\n", __func__, buf);
- r = kstrtoint(buf, 0, &hold_video);
+ r = kstrtoint(buf, 0, &value);
if (r < 0)
return -EINVAL;
+ if (value == 0 && hold_video == 1)
+ hold_property_changed = 1;
+
+ hold_video = value;
return count;
}