RE: tvapi-ACTION-39: Look into parental control

Paul,

Thank you for your great analysis and insight.

Sean,

Do you have any comments on:

-          Constraints of MediaStream as Paul analyzed, and the suggestion to completely drop MediaStream approach. Instead, finding a way of setting the videoTracks, audioTracks and textTracks of the HTMLMediaElement<http://www.w3.org/TR/html5/single-page.html#media-element> to satisfy “channel.tracks” requirement.

-          Suggestion of defining “dictionary TVVideoChannelData” to satisfy “program.data.video” requirement.

Thanks
Bin

From: Paul Higgs [mailto:paul.higgs@ericsson.com]
Sent: Monday, September 14, 2015 6:58 AM
To: HU, BIN; Sean Lin
Cc: TV Control API Community Group
Subject: RE: tvapi-ACTION-39: Look into parental control

Hi Bin

Here are some comments on the two remaining requirements….

channel.tracks : The API SHALL be able to enable the webapps to switch the video/audio/text tracks of a channel.

·         As we have discussed on several occasions the method we use to “output” from the TVTuner to the HTML5 <video> element is the MediaStream [1], which only supports video (through a camera stream) and audio (through a microphone stream) [2], see also MediaStreamTrack.kind [3]

o   Because of this, I do not see how we can meet the requirement (or indeed the minimum usability requirement) for subtitle/caption support.

o   Since there is only one video stream in the MediaStream, we will not be able to do video subtitles (such as the sign language subtitles used in the UK)

o   Unless we overcome this constraint in MediaStream, we have an unusable API.

§  It would be unreasonable to expect the UA to “mix” in the subtitle information into the video plane.

·         Perhaps we need to drop the MediaStream approach completely

o   This would mean finding a way of setting the videoTracks, audioTracks and textTracks of the HTMLMediaElement<http://www.w3.org/TR/html5/single-page.html#media-element>, - not sure if the <source> elements can be “streams”, they seem to just be files!



·         If the received transport stream supports multiple video and audio elements then the TV Control API needs some way to present these to the WebApp and allow the WebApp to select which one should be sent via the MediaStream

o   OIPF describes this as “component selection” in DAE 7.16.5 Extensions for Playback of selected media components [4].

o   A similar method could be described, i.e. an array of transport stream components and a selection method

§  It could be that a simple “selected” boolean is added to each component, which when set to true causes the others to be set to false. There are some limitations to this approach.


program.data.video : For video stream: such as quality, codec used, etc.

·         What do we have to satisfy the “[program.data.audio] For audio: such as language supported, codec used, etc.”  requirement? The current implementation just shows language – omits codec, channels, audio type (main, commentary…)

·         As we are completely unsure what the full makeup of this video related program data, all we can really define is a string attribute that contains a JSON representation of the received video program data. The WebApp can then provide this to some network/cloud application along with channel identification information (from channel.name, channel.type) and hope to get back some usable information.

·         There are probably two types of program video data

o   Some which is generally well known and can be determined when the program is received/decoded

o   Some which is region specific – this could be put into the JSON representation (with UUencoded binary values etc)

·         Thus a TVTideoChannelData type could be defined and added as an attribute to TVTuner (I pick this because it is probably only known when the channel is tuned to, not when the channel is scanned or queried through metadata)
dictionary TVVideoChannelData {
      readonly attribute DOMstring? codec;
      readonly attribute unsigned long? width;
      readonly attribute unsigned long? height;
      readonly attribute DOMstring? otherInfo;
}




[1] https://w3c.github.io/tvapi/spec/#dfn-mediastream

[2] http://www.w3.org/TR/mediacapture-streams/#track-source-types

[3] http://www.w3.org/TR/mediacapture-streams/#widl-MediaStreamTrack-kind

[4] http://www.oipf.tv/web-spec/volume5.html#extensions-for-playback-of-selected-media-components



Paul

From: HU, BIN [mailto:bh526r@att.com]
Sent: Friday, September 11, 2015 1:13 PM
To: Sean Lin; Paul Higgs
Cc: TV Control API Community Group
Subject: RE: tvapi-ACTION-39: Look into parental control

Great work and thank you Sean.

I also would like to thank Paul, Chris and Sung Hei for the great work, and we had a great achievement in the past 3 weeks. Now we only have 7 gaps [5] as follows. I captured the original table from Paul’s original analysis [6], and only keep current remaining gaps in the following table.

It seems to me that:

-          The first 4 gaps, i.e.” channel.search”, “channel.filter”, “channel.sort” and “channel.sequential” are actually addressed according to Notes.

-          CAS is being address by “ACTION-38” which is discussed at another thread [7].

So we only have 2 gaps here – “channel.tracks” and “program.data.video”.

Sean and Paul,

Can we address those 2 gaps “channel.tracks” and “program.data.video” in the next update of spec?



Req.ID


Requirement


Notes


channel.search


The API SHALL be able to provide the webapps with the functions of sorting, searching, and filtering the channel/program list, including but not limited to:


The current TVSource.getChannels()<http://w3c.github.io/tvapi/spec/#widl-TVSource-getChannels-Promise-sequence-TVChannel> API provides a sequence of TVChannel<http://w3c.github.io/tvapi/spec/#idl-def-TVChannel> objects. Assuming an idl <sequence> maps to a Javascript Array, then the application has access to all channels and can query as necessary with suitable iterators


channel.filter


filtered based on rating information for Parental Control


The current TVSource.getChannels()<http://w3c.github.io/tvapi/spec/#widl-TVSource-getChannels-Promise-sequence-TVChannel> API provides a sequence of TVChannel<http://w3c.github.io/tvapi/spec/#idl-def-TVChannel> objects. If an approach as outlined in the follow up to ACTION-39 is implemented, then this API can provide a subset of channels if Parental Control is currently active on the device

-          This can help stop unrated viewers reading descriptions and viewing poster art of rated programs


channel.sort


sorted based on program start time, name etc


The current TVSource.getChannels()<http://w3c.github.io/tvapi/spec/#widl-TVSource-getChannels-Promise-sequence-TVChannel> API provides a sequence of TVChannel<http://w3c.github.io/tvapi/spec/#idl-def-TVChannel> objects. Assuming an idl <sequence> maps to a Javascript Array, then the application has access to all channels and can query as necessary with suitable iterators


channel.sequential


The API SHALL be able to provide the webapps with the functions of getting the previous channel and next channel (channel up and down)


The current TVSource.getChannels()<http://w3c.github.io/tvapi/spec/#widl-TVSource-getChannels-Promise-sequence-TVChannel> API provides a sequence of TVChannel<http://w3c.github.io/tvapi/spec/#idl-def-TVChannel> objects. This could be assumed to be “sequential” so that TVChannel[i+1] is the ‘next channel’ from TVChannel[i]


channel.tracks


The API SHALL be able to enable the webapps to switch the video/audio/text tracks of a channel.


Q: When the currentChannel is played though the TVSource to MediaStream, are all tracks from the source (video, all audio, all info/subtitle) given? The MediaStream<http://www.w3.org/TR/mediacapture-streams/> specification only suggests a microphone (audio) and camera (video) track, TVSource would need some API to map received transport stream components onto these (OIPF DAE does this through the selectCompoent/unSelectComponent methods<http://www.oipf.tv/web-spec/volume5.html#extensions-for-playback-of-selected-media-components> for the video/broadcast object)


program.data.video


For video stream: such as quality, codec used, etc.


See the OIPF DAE specification for information on how various properties/attributes are populated for AVComponent<http://www.oipf.tv/web-spec/volume5.html#mapping-apis-to-content-formats-avcomponent>s, Channel<http://www.oipf.tv/web-spec/volume5.html#mapping-apis-to-content-formats-channel>s, Program<http://www.oipf.tv/web-spec/volume5.html#programme-scheduled-recording-recording-and-download>s (including recorded programs)


cas*





Q: Is Sung Hei looking at this area? (Action- 38)



Thank you and have a great weekend



Bin

[5] https://www.w3.org/community/tvapi/wiki/Main_Page/Progress_Measurement

[6] http://lists.w3.org/Archives/Public/public-tvapi/2015Aug/0011.html

[7] http://lists.w3.org/Archives/Public/public-tvapi/2015Sep/0008.html


From: Sean Lin [mailto:selin@mozilla.com]
Sent: Friday, September 11, 2015 1:05 AM
To: Paul Higgs
Cc: TV Control API Community Group
Subject: Re: tvapi-ACTION-39: Look into parental control

Hi all,

I just updated the draft to support Parental Control [1][2][3][4] based on previous analysis. The progress measurement [5] is also updated accordingly.

Please feel free to chime in with your comments/concerns/questions.

[1] https://w3c.github.io/tvapi/spec/#tvmanager-interface

[2] https://w3c.github.io/tvapi/spec/#tvchannel-interface

[3] https://w3c.github.io/tvapi/spec/#widl-TVSource-setCurrentChannel-Promise-void--DOMString-channelNumber

[4] https://w3c.github.io/tvapi/spec/#widl-TVRecording-getStream-Promise-TVBufferedMediaStream

[5] https://www.w3.org/community/tvapi/wiki/Main_Page/Progress_Measurement


Thanks,
Sean Lin
Mozilla Taiwan
selin@mozilla.com<mailto:selin@mozilla.com>


On Sat, Aug 15, 2015 at 12:37 AM, Paul Higgs <paul.higgs@ericsson.com<mailto:paul.higgs@ericsson.com>> wrote:

Hi all

Parental rating observation and control by an application is quite a complex beast, but based on our requirements and discussions I believe we need the following.

This is based on the OIPF Parental rating and parental control APIs which are the only known APIs to be implemented in the industry.



1.       We need to set a parental control code that can used by "adults" to unlock programs/channels/recordings and also administer permitted levels.
OIPF does this through setParentalControlPIN()<http://www.oipf.tv/web-spec/volume5.html#setparentalcontrolpin>. Functionality to set/reset the parental control code should added to the TVManager<http://w3c.github.io/tvapi/spec/#tvmanager-interface> since it is likely to apply in many areas. A computer based UA may also use system or UA setting to set/reset the code.  While any “phrase” could be used as a parental control code, typically a numeric PIN of at least 4 digits is used as this is the simplest user-interaction with a TV based device.



2.       Parental control enforcement is activated “system wide” and in the OIPF this is through the setParentalControlStatus<http://www.oipf.tv/web-spec/volume5.html#setparentalcontrolstatus>() method. TVManager<http://w3c.github.io/tvapi/spec/#tvmanager-interface> should provide functions to enable/disable parental control enforcement in a similar manner (an application dialog can ask for a PIN and call setParentalControlStatus(pin, false).



3.       Given the API is required to be deployed in different regions, each of whom are likely to have different parental rating schemes (see https://en.wikipedia.org/wiki/Television_content_rating_systems for global program rating schemes and the diversity). OIPF allows the application to define (via the addParentalRatingScheme<http://www.oipf.tv/web-spec/volume5.html#parentalratingschemecollection-addparentalratingscheme>() method) the parental control items that are permitted when parental control is enabled.



•         HbbTV 2.0<http://www.hbbtv.org/pages/about_hbbtv/specification-2.php> profiles (in A.1) the ratings to  “A scheme supporting DVB-SI age based rating shall be supported.”



4.       The setBlockUnrated<http://www.oipf.tv/web-spec/volume5.html#setblockunrated>() method can be used to block presentation of programs which do not contain any parental rating information



5.       OIPF does not define a method to explicitly identify a given channel and block all of its contents (from the 2015-08-04 minutes “Sean: As far as I know, the parent configures channels with an access code to unlock them”). To achieve this we would need a setParentalControlChannelStatus(pin:string, enable:boolean) against the TVChannel<http://w3c.github.io/tvapi/spec/#idl-def-TVChannel>.
There is a read-only Boolean locked<http://www.oipf.tv/web-spec/volume5.html#channel-locked> for the channel which indicates if playback is currently disabled due to parental control enforcement being in effect.



6.       If an attempt is made to “tune” to a channel using via one of the approaches supported in the OIPF video/broadcast<http://www.oipf.tv/web-spec/volume5.html#video-broadcast> element and parental rating enforcement is active and the current program on that channel is outside the permitted rating, then the onChannelChangeError<http://www.oipf.tv/web-spec/volume5.html#video-broadcast-onchannelchangeerror>(channel, error) event handler is invoked with error=3 “parental lock on channel”. A PIN can be entered and



7.       While tuned to a channel, if the parental rating changes to a value outside the permitted range the onParentalRatingChange<http://www.oipf.tv/web-spec/volume5.html#video-broadcast-onparentalratingchange>() event handler is called, the block argument to this indicates whether parental control enforcement is in effect.



8.       If the parental rating information is not available or not decodable then the onParentalRatingError<http://www.oipf.tv/web-spec/volume5.html#video-broadcast-onparentalratingerror>() event handler is called. It is then up to the application to determine what action to take,





The OIPF specification also defines “blocked” and “locked” properties/attributes  on Recordings<http://www.oipf.tv/web-spec/volume5.html#recording-class>, Programme<http://www.oipf.tv/web-spec/volume5.html#programme-class> and CODAsset<http://www.oipf.tv/web-spec/volume5.html#codasset-class>



Paul



-----Original Message-----
From: TV Control API Community Group Issue Tracker [mailto:sysbot+tracker@w3.org<mailto:sysbot%2Btracker@w3.org>]
Sent: Tuesday, August 04, 2015 9:50 AM
To: public-tvapi@w3.org<mailto:public-tvapi@w3.org>
Subject: tvapi-ACTION-39: Look into parental control



tvapi-ACTION-39: Look into parental control



http://www.w3.org/community/tvapi/track/actions/39




Assigned to: Paul Higgs

Received on Tuesday, 15 September 2015 05:24:30 UTC