Jetzt, habe ich dich wohl richtig verstanden, Joe_D ...
Damit scheint es jetzt zu funktionieren:
Diff
diff --git a/kernel/vtunerc_ctrldev.c b/kernel/vtunerc_ctrldev.c
index dc997b2..4d4d2d6 100644
--- a/kernel/vtunerc_ctrldev.c
+++ b/kernel/vtunerc_ctrldev.c
@@ -93,6 +93,10 @@ static ssize_t vtunerc_ctrldev_write(struct file *filp, const char *buff, size_t
ctx->stat_fe_data += 188; // external filler
} else {
sendfiller=1;
+ if (!(ctx->status & FE_HAS_LOCK)) {
+ dprintk(ctx, "set signal LOCK\n");
+ ctx->status = FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK; // no filler, ts stream -> we have a lock!
+ }
idx = feedtab_find_pid(ctx, pid);
if (idx > -1) {
fi = (struct vtunerc_feedinfo *) ctx->demux.feed[idx].priv;
diff --git a/kernel/vtunerc_main.c b/kernel/vtunerc_main.c
index b35c438..68f0d80 100644
--- a/kernel/vtunerc_main.c
+++ b/kernel/vtunerc_main.c
@@ -76,7 +76,7 @@ void send_pidlist(struct vtunerc_ctx *ctx, bool retune)
dprintk(ctx,"MSG_PIDLIST%s", retune ? " (DTV_TUNE)" : "");
- has_ts=0;
+ has_ts=1;
memset(&msg.body.pidlist,0xff,sizeof(msg.body.pidlist));
list_for_each_entry(entry, &ctx->demux.feed_list, list_head) {
if (entry->state == DMX_STATE_GO || entry->state == DMX_STATE_READY) {
@@ -89,7 +89,7 @@ void send_pidlist(struct vtunerc_ctx *ctx, bool retune)
if (entry->pid==20) stdpids[5]=PID_UNKNOWN;
dprintk_cont(ctx," %i%s", entry->pid, (entry->type == DMX_TYPE_SEC) ? "s" : "t");
if (retune) entry->pusi_seen=0;
- if (entry->type == DMX_TYPE_TS) has_ts=1;
+// if (entry->type == DMX_TYPE_TS) has_ts=1;
}
}
if (has_ts) {
Display More
has_ts in Zeile 92 ohne Abfrage auf 1 zu setzen, hilft nicht.
Ob das richtig ist oder Nebenwirkungen hat, darfst du entscheiden