Some problems with UA and SMIL alternative presentations

Marja-Riitta Koivunen

$Date: 1999/05/07 15:06:54 $

Background

I'm drafting some multimedia related techniques to UA WG and at the same time writing a note of the SMIL accessibility features. When thinking from the user and UA point of view I have some difficulties to understand how the SMIL accessibility testing flags can be used. I hope the examples in the last chapter explains the problem.

Definitions of Variables from SMIL 1.0 spec

system-captions

This attribute allows authors to distinguish between a redundant text equivalent of the audio portion of the presentation (intended for a audiences such as those with hearing disabilities or those learning to read who want or need this information) and text intended for a wide audience. The attribute can has the value "on" if the user has indicated a desire to see closed-captioning information, and it has the value "off" if the user has indicated that they don't wish to see such information. Evaluates to "true" if the value is "on", and evaluates to "false" if the value is "off".

system-overdub-or-caption

This attribute is a setting which determines if users prefer overdubbing or captioning when the option is available. The attribute can have the values "caption" and "overdub". Evaluates to "true" if the user preference matches this attribute value. Evaluates to "false" if they do not match.

Sample SMIL Code

The following SMIL code is extracted from the SMIL 1.0 Specs

6) Choosing the language of overdub and caption tracks

In the following example, a French-language movie is available with English, German, and Dutch overdub and caption tracks. The following SMIL segment expresses this, and switches on the alternatives that the user prefers.

...
<par>
  <switch>
    <audio src="movie-aud-en.rm" system-language="en"
                system-overdub-or-caption="overdub"/>
    <audio src="movie-aud-de.rm" system-language="de"
                system-overdub-or-caption="overdub"/>
    <audio src="movie-aud-nl.rm" system-language="nl"
                system-overdub-or-caption="overdub"/>
     <!-- French for everyone else -->
     <audio src="movie-aud-fr.rm"/>
   </switch>
   <video src="movie-vid.rm"/>
   <switch>
     <textstream src="movie-caps-en.rtx" system-language="en"
                 system-overdub-or-caption="caption"/>
     <textstream src="movie-caps-de.rtx" system-language="de"
                system-overdub-or-caption="caption"/>
     <textstream src="movie-caps-nl.rtx" system-language="nl"
                 system-overdub-or-caption="caption"/>
     <!-- French captions for those that really want them -->
     <textstream src="movie-caps-fr.rtx" system-captions="on"/>
   </switch>
</par>
...

Use of Variables with Sample Code

The UI provided by the user agent lets the user to turn system variables, such as captions or language, on or off or to some other value. First the user indicates with these variables that she prefers captions ON and Dutch as the language. The user agent needs then turn or give some value to some SMIL specific variables to get the effect.

1) If it gives the following values to the variables

system-captions="on"

system-language="nl"

And applies these values to the SMIL code example presented previously the result is:

French audio, video and French textstream (captions) are played.

So in this case it seems to the user that the language selection did not have any effect.

One question is naturally what is the default value of system-overdub-or-caption? Can it be undefined or must it be "caption" or "overdub".

2) With values

system-captions="on"

system-overdub-or-caption="caption"

system-language="nl"

Result is:

French audio, video and Dutch textstream (captions) are played.

This is probably quite right from the user point of view, although it is hard to know if the user would have preferred also the Dutch audio as that is available as a dubbing (can be used e.g. when learning a language or with a group of Dutch viewers where only some are deaf). However, there is no way to see both the overdubbing and the captions in a certain language. Furthermore, in this case the UA needs to know to turn both system_captions and system_overdub_or_captions when user wants to see captions in a certain language and this is not very intuitive.

3) With values

system-captions="off"

system-overdub-or-caption="caption"

system-language="nl"

Result is:

French audio, video and Dutch textstream (captions) are played.

This is odd as I would have thought that when turning the captions off they are not shown anymore.

4) If the user wants to have both overdubs and captions in english it is not possible with any variable values when using the sample example from the SMIL 1.0 spec.

Phillip's Suggestion to Correct 4)

If the SMIL code is changed it is possible to have both overdubs and captions in English. It looks a bit peculiar but works in this case. It also makes the case 3) to sound like a feature rather than a problem i.e. captions are turned off, but foreign subtitles are on. Only problem is that from user's point of view it would be nice to be able to turn the subtitles off without getting the dubbings but with only two possible values overdub and caption this is not possible.

The following variable values and code where the media objects are dublicated do the trick:

system-captions="on"

system-overdub-or-caption="overdub"

system-language="en"

...
<par>
  <switch>
    <audio src="movie-aud-en.rm" system-language="en"
                system-overdub-or-caption="overdub"/>
    <audio src="movie-aud-de.rm" system-language="de"
                system-overdub-or-caption="overdub"/>
    <audio src="movie-aud-nl.rm" system-language="nl"
                system-overdub-or-caption="overdub"/>
     <!-- French for everyone else -->
     <audio src="movie-aud-fr.rm"/>
   </switch>
   <video src="movie-vid.rm"/>
   <switch>
     <textstream src="movie-caps-en.rtx" system-language="en"
                 system-captions="on"/>
     <textstream src="movie-caps-en.rtx" system-language="en"
                 system-overdub-or-caption="caption"/>
     <textstream src="movie-caps-de.rtx" system-language="de"
                system-captions="on"/>
     <textstream src="movie-caps-de.rtx" system-language="de"
                system-overdub-or-caption="caption"/>
     <textstream src="movie-caps-nl.rtx" system-language="nl"
                 system-captions="on"/>
     <textstream src="movie-caps-nl.rtx" system-language="nl"
                 system-overdub-or-caption="caption"/>
     <!-- French captions for those that really want them -->
     <textstream src="movie-caps-fr.rtx" system-captions="on"/>
   </switch>
</par>
...

The idea here is that the two variables are independent controlling captions and subtitles in foreign language. So the the system-overdub-or-caption="caption" is used only when controlling the subtitles in foreign language. So now when captions are turned off, the user could still see the subtitles in foreign languages but not on the orinal language French. The subtitles media object happens to be the same media object as the captions.

Other Concerns

One problem from the UA point of view is that there is no metadata that would tell explicitly that some media object is caption, description or whatever (and also the language) and which object it is related to so that the UA could then use this information when trying to satisfy the different needs of the users.