channel_get_name(e->channel),
running);
LIST_FOREACH(de, &e->channel->ch_dvrs, de_channel_link) {
- if (!dvr_entry_get_epg_running(de)) {
- atomic_set_time_t(&de->de_running_start, 0);
- atomic_set_time_t(&de->de_running_stop, 0);
- atomic_set_time_t(&de->de_running_pause, 0);
- continue;
- }
if (running == EPG_RUNNING_NOW && de->de_dvb_eid == e->dvb_eid) {
if (de->de_running_pause) {
tvhdebug(LS_DVR, "dvr entry %s event %s on %s - EPG unpause",
epg_broadcast_get_title(e, NULL),
channel_get_name(e->channel));
atomic_set_time_t(&de->de_running_pause, 0);
+ atomic_add(&de->de_running_change, 1);
}
if (!de->de_running_start) {
tvhdebug(LS_DVR, "dvr entry %s event %s on %s - EPG marking start",
epg_broadcast_get_title(e, NULL),
channel_get_name(e->channel));
atomic_set_time_t(&de->de_running_start, gclk());
+ atomic_add(&de->de_running_change, 1);
}
if (dvr_entry_get_start_time(de, 1) > gclk()) {
atomic_set_time_t(&de->de_start, gclk());
+ atomic_add(&de->de_running_change, 1);
dvr_entry_set_timer(de);
tvhdebug(LS_DVR, "dvr entry %s event %s on %s - EPG start",
idnode_uuid_as_str(&de->de_id, ubuf),
srcname = de->de_dvb_eid == e->dvb_eid ? "event" : "other running event";
if (!de->de_running_stop ||
de->de_running_start > de->de_running_stop) {
+ atomic_add(&de->de_running_change, 1);
tvhdebug(LS_DVR, "dvr entry %s %s %s on %s - EPG marking stop",
idnode_uuid_as_str(&de->de_id, ubuf), srcname,
epg_broadcast_get_title(e, NULL),
epg_broadcast_get_title(e, NULL),
channel_get_name(e->channel));
atomic_set_time_t(&de->de_running_pause, gclk());
+ atomic_add(&de->de_running_change, 1);
}
}
}
if (epg_pause != (epg_running == 2)) {
epg_pause = epg_running == 2;
- muxer_add_marker(prch->prch_muxer);
+ if (muxing) muxer_add_marker(prch->prch_muxer);
} else if (commercial != pkt->pkt_commercial) {
- muxer_add_marker(prch->prch_muxer);
+ commercial = pkt->pkt_commercial;
+ if (muxing) muxer_add_marker(prch->prch_muxer);
+ } else if (atomic_exchange(&de->de_running_change, 0)) {
+ if (muxing) muxer_add_marker(prch->prch_muxer);
}
- commercial = pkt->pkt_commercial;
-
if (ss == NULL)
break;
break;
}
+ if (epg_pause != (epg_running == 2)) {
+ epg_pause = epg_running == 2;
+ if (muxing) muxer_add_marker(prch->prch_muxer);
+ } else if (atomic_exchange(&de->de_running_change, 0)) {
+ if (muxing) muxer_add_marker(prch->prch_muxer);
+ }
+
if (muxing == 0 &&
!dvr_thread_rec_start(&de, ss, &run, &started, &dts_offset, postproc))
break;