humble-video-noarch/src/main/java/io/humble/video/customio/URLProtocolManager.java
public IURLProtocolHandlerFactory registerFactory(String protocol,
      IURLProtocolHandlerFactory factory)
  {
    if (protocol == null)
      throw new IllegalArgumentException("protocol required");
    
    IURLProtocolHandlerFactory oldFactory;
    if (factory == null)
      oldFactory = mProtocols.remove(protocol);
    else
      oldFactory = mProtocols.put(protocol, factory);
    
    log.trace("Registering factory for URLProtocol: {}", protocol);

    if (oldFactory == null)
    {
      // we previously didn't have something registered for this factory
      // so tell FFMPEG we're now the protocol manager for this protocol.
      log.trace("Letting FFMPEG know about an additional protocol: {}",
          protocol);
      FfmpegIO.registerProtocolHandler(protocol, this);
    }
    return oldFactory;
  }
public IURLProtocolHandlerFactory registerFactory(String protocol,
      IURLProtocolHandlerFactory factory)
  {
    if (protocol == null)
      throw new IllegalArgumentException("protocol required");
    
    IURLProtocolHandlerFactory oldFactory;
    if (factory == null)
      oldFactory = mProtocols.remove(protocol);
    else
      oldFactory = mProtocols.put(protocol, factory);
    
    log.trace("Registering factory for URLProtocol: {}", protocol);

    if (oldFactory == null)
    {
      // we previously didn't have something registered for this factory
      // so tell FFMPEG we're now the protocol manager for this protocol.
      log.trace("Letting FFMPEG know about an additional protocol: {}",
          protocol);
      FfmpegIO.registerProtocolHandler(protocol, this);
    }
    return oldFactory;
  }
Register a new factory for IURLProtocolHandlers for a given protocol.
<p>
FFMPEG is very picky; protocols must be only alpha characters (no numbers).
</p>
@param protocol The protocol, without colon, this factory is to be used for.
@param factory The factory for the manager to use whenever a handler is requested for a registered protocol;
null means disable handling for this factory.
@return The factory that was previously used for that protocol (or null if none).