- From: David Dorwin <ddorwin@google.com>
- Date: Sun, 30 Sep 2012 22:00:26 -0700
- To: public-html-media@w3.org
- Message-ID: <CAHD2rsgKET3aVn10mheFCWVGk6e2VqdV_NCnsOHU7x41C7yOWw@mail.gmail.com>
I filed the following as https://www.w3.org/Bugs/Public/show_bug.cgi?id=19156. I'd like to start a discussion on the issue, possibly continuing during the teleconference Tuesday. Both v0.1 and the current version of the OO API allow the key system to be specified at any point after loading has started. They even require that the key system not be chosen or associated, respectively, until after loading has started. As a result, it is very likely that the key system will be set AFTER some frames have been decoded. For key systems/CDMs that include a decoder (or entire video pipeline), this means that the decoder may change when the key system is selected. This is primarily (only?) a problem if there is some clear content being decoded/played before the encrypted content so decoding could start before a key system was specified. Supporting decoder changes may be very difficult to implement, especially without restrictions on the content. For example, the switch might occur in the middle of a group of frames that depend on previous frames to decode subsequent frames. While this could be worked around, it might be better to avoid this situation completely. Some options: 1. Require the key system to be specified before loading and/or decoding starts. If it is not specified by this time, it cannot be set later, meaning decryption would not be possible. This would likely reduce the utility of the needkey event. 2. Allow switching decoders whenever Media Source Extensions allow changing codecs/decoders. 3. Switch decoders when the first encrypted frame is encountered, possibly requiring the next item. 4. Establish limitations on which frames can be encrypted. For example, P-and B-frames may not be encrypted if the I-frame is not. Due to seeking, this would apply throughout a stream and not just to the beginning. 5. Switch immediately and drop frames if necessary. 6. Suggest the above to applications and make it a quality of implementation issue for applications. 7. Leave the behavior undefined, making it a quality of implementation issue for user agents.
Received on Monday, 1 October 2012 05:01:20 UTC