Re: [tvcontrol-api] Why retrieve a list of tuners instead of just one tuner?

@JPEvain I don't think that there is a good mapping between the 
objects in the API at the moment and DVB-SI (apart from DVB Service ->
 TVChannel and DVB Event -> TVProgram).

I think we need to clarify the definitions used in the API - I'm not 
sure that the descriptions of those objects are precise enough at the 
moment for us to have a shared understanding of the API.  Based on the
 interface posted by @chrisn  above that was discussed at TPAC, here 
are the descriptions that I've been working with in my head:


- **TVSource**:  a logical source of TV/Radio channels.  This may 
represent a physical tuner or a "virtual" tuner for IP multicast.  The
 TVSource exposes the list of TVChannel objects available through that
 source.  For devices with more than one type of tuner (e.g. cable and
 terrestrial), each tuner type may be represented by a different 
TVSource.  A TVSource is **not** a physical tuner - it is a way of 
discovering channels, getting the corresponding TVChannel objects and 
obtaining the resources to present them. Because there is not a 
one-to-one mapping between a TVSource and a tuner, more than one 
channel from a given TVSource may be presented at the same time if the
 device has enough resources.
- **TVChannel**: represents a single TV or radio channel and provides 
metadata about it.  Each TVChannel object represents a single channel 
that is available through one TVSource.  If the same channel (e.g. 
VH1) is available through two different sources (e.g. over cable and 
terrestrial) then each TVSource will return a different TVChannel 
object.
- **TVMediaStream**: represents the stream data for all components 
within a channel.  This can be passed to an HTML5 media element to 
play the channel.  Obtaining a TVMediaStream object means that all of 
the resources needed to receive and present that channel have been 
allocated. I'm not sure how closely this aligns with your view, 
@JPEvain.
- **TVTuner**: I'm really not sure about this.  The obvious solution 
is for this to represent a physical tuner, where a TVSource object may
 have one or more TVTuner instances associated with it (one per 
physical tuner).  However, this has a number of problems.  First, it 
doesn't accurately represent modern tuner hardware that supports 
full-band capture, where a single tuner can act as the source for 
multiple streams and you're no longer limited to one transport stream 
per physical tuner.  Second, it also fails to represent cases such as 
channels delivered via IP. Third, it doesn't represent all of the 
other resources that are needed to decode and present a stream.  While
 we could change the semantics of this object to represent "the end to
 end decoder chain", I'm not sure that's appropriate.  That would be a
 way of exposing what we discussed at TPAC (and which @paulhiggs 
mentioned elsewhere) about exposing the capabilities of a device in 
terms of the number and type of services that it can decode 
simultaneously.

Thoughts and comments on this are welcome.

-- 
GitHub Notification of comment by stevem-tw
Please view or discuss this issue at 
https://github.com/w3c/tvcontrol-api/issues/4#issuecomment-259369602 
using your GitHub account

Received on Wednesday, 9 November 2016 09:30:03 UTC