Opened 13 years ago

Closed 13 years ago

#1847 closed patch (fixed)

DVB - Backend fails to tune to a channel on a different input

Reported by: Mark.Buechler@… Owned by: danielk
Priority: minor Milestone: 0.20
Component: mythtv Version: head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

This is a bug introduced with the mythtv-eit merge. When I attempt to change channels from one input to another on the same cardid it fails. I've been doing a bit of debugging and can't figure out what is what. It looks like when the tuning request is enqueue()'ed, request.program() is 0 and seems to never get a value which causes in TVRec::TuningGetChanNum?() to never call request.program->GetChannel?(), which I believe does the setting of request.input. I am attempting to tune from cardinputid 3 to cardinputid 4. Tuning to the same cardinputid succeeds, however. The input the old channel is on is "DiSEqC v1.3 Input 1", DiSEqC position -110, and the new channel is on input "DiSEqC v1.3 Input 2", DiSEqC position -119. Backend log attached.

Attachments (4)

log10.txt (6.9 KB) - added by Mark.Buechler@… 13 years ago.
backend log
inputs.diff (2.4 KB) - added by Mark.Buechler@… 13 years ago.
Patch to fix
inputs.2.diff (2.1 KB) - added by Mark.Buechler@… 13 years ago.
The real patch..
dvbchannel_input.diff (805 bytes) - added by gnome42@… 13 years ago.
Alternate patch :)

Download all attachments as: .zip

Change History (9)

Changed 13 years ago by Mark.Buechler@…

Attachment: log10.txt added

backend log

comment:1 Changed 13 years ago by danielk

Owner: changed from Isaac Richards to danielk
Priority: majorminor

comment:2 Changed 13 years ago by Mark.Buechler@…

After some more research and speaking with Janne Grunau, this seems to be related to the changes wrt channelutil.cpp and TVRec::TuningGetChanNum?() which didn't exist in trunk prior to the mythtv-eit merge.

Changed 13 years ago by Mark.Buechler@…

Attachment: inputs.diff added

Patch to fix

Changed 13 years ago by Mark.Buechler@…

Attachment: inputs.2.diff added

The real patch..

comment:3 Changed 13 years ago by Mark.Buechler@…

Type: defectpatch

Here's a patch to fix this issue. Thanks to Daniel for pointing me in the right direction. I'm not entirely happy with this though. It seems SetChannelByString?() is called more than once before the HandleTuning?() does its job. Since the solution is to add ChannelBase::CheckChannel?() to SetChannelByString?(), that means it gets called more than once is well which means the same query is run against the database. I could somehow fix it so CheckChannel?() is only called on the first run on SetChannelByString?() but I think we need to figure out why SetChannelByString?() is being called more than once.

comment:4 Changed 13 years ago by danielk

Hmm, do you need nextInputName?

Also, please strip the \r characters from your patches in future. :)

Changed 13 years ago by gnome42@…

Attachment: dvbchannel_input.diff added

Alternate patch :)

comment:5 Changed 13 years ago by danielk

Resolution: fixed
Status: newclosed

(In [10023]) Fixes #1847. Make automatic input switching (based on channel number) work with DVB cards w/patch from Mark Buechler.

When we made DVBChannel input aware a few months we forgot aspect of this required so that you could switch to a channel on another input without explicitly switch inputs using the "C" key first. It actually worked as a side effect of the full retuning we were doing on each DTV channel change, but this broke when I added the quick intra-multiplex channel changing code.

Note: See TracTickets for help on using tickets.