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

John P Poet jppoet at gmail.com
Thu Jul 7 23:13:12 UTC 2022


On Thu, Jul 7, 2022 at 5:02 PM David Engel <david at istwok.net> wrote:

> 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


My first thought was that  CardUtil::UnlinkInputGroup(0, 0) should be added
to the bottom of CardUtil::CreateCardInput, but that would be *slightly*
inefficient.

Apparently there is an issue with the ServicesAPI and a limit to the
maximum number of arguments. With V2, long argument lists are being passed
as JSON to get around that issue. I will take a look at merging the
capturecard and cardinput API calls for V2.

John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mythtv.org/pipermail/mythtv-dev/attachments/20220707/afbb7d7d/attachment.htm>


More information about the mythtv-dev mailing list