[mythtv] CardUtil::CreateCaptureCard / CardUtil::CreateCardInput and mythconverg.inputgroup

David Engel david at istwok.net
Thu Jul 7 23:00:58 UTC 2022


On Thu, Jul 07, 2022 at 01:33:49PM -0600, John P Poet wrote:
> Hi David,
> 
> After a call to
> CardUtil::CreateCaptureCard()
> and
> CardUtil::CreateCardInput()
> 
> The resulting capturecard and inputgroup tables look like:
> 
> select * from capturecard;
> +--------+----------+------------------------------------------------------------------------+-------------+-----------+----------+--------------+----------------+----------------+--------------+--------------+-----------------------+-------------+---------------+-----------------+----------------+----------------+---------------------+----------------+-----------------+------------------+----------+------------+--------+-----+----------+-------------+-----------+----------+-----------------+----------------+---------------+----------+-----------+-------------+-------------+-------------+-----------+------------+-------------+----------+------------+
> | cardid | parentid | videodevice
>                  | audiodevice | vbidevice | cardtype | defaultinput |
> audioratelimit | hostname       | dvb_swfilter | dvb_sat_type |
> dvb_wait_for_seqstart | skipbtaudio | dvb_on_demand | dvb_diseqc_type |
> firewire_speed | firewire_model | firewire_connection | signal_timeout |
> channel_timeout | dvb_tuning_delay | contrast | brightness | colour | hue |
> diseqcid | dvb_eitscan | inputname | sourceid | externalcommand |
> changer_device | changer_model | tunechan | startchan | displayname |
> dishnet_eit | recpriority | quicktune | schedorder | livetvorder | reclimit
> | schedgroup |
> +--------+----------+------------------------------------------------------------------------+-------------+-----------+----------+--------------+----------------+----------------+--------------+--------------+-----------------------+-------------+---------------+-----------------+----------------+----------------+---------------------+----------------+-----------------+------------------+----------+------------+--------+-----+----------+-------------+-----------+----------+-----------------+----------------+---------------+----------+-----------+-------------+-------------+-------------+-----------+------------+-------------+----------+------------+
> |      1 |        0 | /usr/local/bin/mythexternrecorder --conf
> /home/mythtv/etc/mag-1-2.conf | NULL        | NULL      | EXTERNAL |
> Television   |           NULL | cubic.sobie.us |            0 |
>  0 |                     1 |           0 |             1 |               0
> |              0 | NULL           |                   0 |              0 |
>            4000 |                0 |        0 |          0 |      0 |   0 |
>     NULL |           0 | MPEG2TS   |        2 |                 |
>      |               |          |           | mag/1-2     |           0 |
>         1 |         0 |          1 |           0 |        1 |          1 |
> +--------+----------+------------------------------------------------------------------------+-------------+-----------+----------+--------------+----------------+----------------+--------------+--------------+-----------------------+-------------+---------------+-----------------+----------------+----------------+---------------------+----------------+-----------------+------------------+----------+------------+--------+-----+----------+-------------+-----------+----------+-----------------+----------------+---------------+----------+-----------+-------------+-------------+-------------+-----------+------------+-------------+----------+------------+
> 1 row in set (0.001 sec)
> 
> select * from inputgroup;
> +-------------+--------------+-----------------------------------------------------------------------------------------+
> | cardinputid | inputgroupid | inputgroupname
>                                            |
> +-------------+--------------+-----------------------------------------------------------------------------------------+
> |           0 |            1 | cubic.sobie.us|/usr/local/bin/mythexternrecorder
> --conf /home/mythtv/etc/mag-1-2.conf|1 |
> |           1 |            1 | cubic.sobie.us|/usr/local/bin/mythexternrecorder
> --conf /home/mythtv/etc/mag-1-2.conf|1 |
> +-------------+--------------+-----------------------------------------------------------------------------------------+
> 2 rows in set (0.001 sec)
> 
> I am curious about the entry in inputgroup with a cardinputid of zero (0).
> Is that what you would expect to see or is something amiss?
> 
> I know you did some magic to make "multirec" work without having to create
> a bunch of inputs. Does this happen automatically with a call
> CardUtil::CreateCaptureCard() and/or CardUtil::CreateCardInput(), or are
> extra steps necessary? I see that the default "reclimit" is 1, but did not
> dig enough to see if that is still relevant. Does the multirec magic happen
> when schedgroup is 1?
> 
> To be clear, I am making these calls via the ServicesAPI and want to make
> sure I am not missing any steps. I do want multirec to work.

Okay.  I've refreshed my memory and remember what a mess is still left
over.

The inputgroup entry with cardinputid = 0 is a hold over from Daniel
K's bad design of that table.  Basically, that entry is a placeholder
for the mythtv-setup GUI to see the group name.  It's eventually
cleaned up when CardUtil::UnlinkInputGroup(0, 0) is called.  The
services API or whatever it ultimately calls also needs to make sure
that cleanup occurs.  It's harmless as there can never be an inputid =
0 but still should be cleaned up.

The separate CardUtil::CreateCaptureCard() and
CardUtil::CreateCardInput() methods are a holdover from the very, old
days when they were truly separate.  The intent that was never
finished was to combine the mythtv-setup screens for capture cards and
inputs together.  The new services API should not perpetuate that
split card/input interface.  IOW, the new API should have a single
CreateInput() method exposed to API users. (*) (**).  As I've stated
before the old, services API for cards and inputs was so bad, it
should simple be deleted and never spoken of again.

David

(*)At the time card/input was refactored, "input" was chosen as the
perferred name for tuner thingies.  I think all user-facing code
except mythtv-setup tries to follow that naming.

(**)Unless you are feeling really enegetic and want to rewrite much of
CardUtil and it's callers to fully eradicate the remaining vestiges of
separete cards and inputs, the API will need to call the separate,
lower, level methods in the right way.  See CaptureCard::Save() and
CardInput::Save() in videosource.cpp for examples.

-- 
David Engel
david at istwok.net


More information about the mythtv-dev mailing list