docs: function (plugin, stream) {
      var Proto = function VideoContainer () {},
          api = new Proto();
  
      api.domElement = plugin._;
      api.$ = $(plugin._);
      api.parentElement = plugin._.parentNode;
  
      plugin.addRef(api);
  
      api.appendTo = function (parentDomElement) {
        if (parentDomElement && plugin._.parentNode !== parentDomElement) {
          OTPlugin.debug('VideoContainer appendTo', parentDomElement);
          parentDomElement.appendChild(plugin._);
          api.parentElement = parentDomElement;
        }
      };
  
      api.show = function (completion) {
        OTPlugin.debug('VideoContainer show');
        plugin._.removeAttribute('width');
        plugin._.removeAttribute('height');
        plugin.setStream(stream, completion);
        $.show(plugin._);
        return api;
      };
  
      api.setSize = function(width, height) {
        plugin._.setAttribute('width', width);
        plugin._.setAttribute('height', height);
        return api;
      };
  
      api.width = function (newWidth) {
        if (newWidth !== void 0) {
          OTPlugin.debug('VideoContainer set width to ' + newWidth);
          plugin._.setAttribute('width', newWidth);
        }
  
        return plugin._.getAttribute('width');
      };
  
      api.height = function (newHeight) {
        if (newHeight !== void 0) {
          OTPlugin.debug('VideoContainer set height to ' + newHeight);
          plugin._.setAttribute('height', newHeight);
        }
  
        return plugin._.getAttribute('height');
      };
  
      api.volume = function (newVolume) {
        if (newVolume !== void 0) {
          // TODO
          OTPlugin.debug('VideoContainer setVolume not implemented: called with ' + newVolume);
        }
        else {
          OTPlugin.debug('VideoContainer getVolume not implemented');
        }
  
        return 0.5;
      };
  
      api.getImgData = function () {
        return plugin._.getImgData('image/png');
      };
  
      api.videoWidth = function () {
        return plugin._.videoWidth;
      };
  
      api.videoHeight = function () {
        return plugin._.videoHeight;
      };
  
      api.destroy = function () {
        plugin._.setStream(null);
        plugin.removeRef(api);
      };
  
      return api;
    }