I operate apps in the UK and have a interesting problem. The channel I work with operates as a TV channel during some of the day, but switches to a Data channel at other times.
So it makes sense to ask the device the channelType, at launch. So I can opt for streaming in Data mode. What I'm finding is that some devices report the service as a TV service even if the channel is in Data mode, and in Data mode when it's in TV mode.
I've tried an alternative method of Binding to the channel what ever mode the channel is in, this has shown up other issues when in Data mode. Some devices remain in playState 0, when there no Video, while others will return playState 2. But I can ask if a video pid is present with getCurrentActiveComponents, even this returns different result formats.
How would you overcome this issue? Am I missing a trick?
The getCurrentActiveComponents may in fact, according to spec, return undefined when playState is not in state Presenting (value: 2). Otherwise, it should return a collection of AVComponent values representing the currently active components of the specified type that are being rendered. Excerpt from the spec:
"If the set of components is known, returns a collection of AVComponent values representing the currently active components of the specified type that are being rendered. Otherwise returns undefined. For a video/broadcast object, the set of components SHALL be known if the video/broadcast object is in the presenting state and MAY be known if the object is in other states. For an A/V Control object, the set of components SHALL be known if the A/V Control object is in the playing state and MAY be known if the object is in other states."
So, when playState is in state Presenting (value: 2) getCurrentActiveComponent should return a collection of AVComponent values representing the currently active components of the specified type that are being rendered.