code: public <T> Future<T> decode(final Transcoder<T> tc,
        final CachedData cachedData) {
  
      assert !pool.isShutdown() : "Pool has already shut down.";
  
      TranscodeService.Task<T> task =
          new TranscodeService.Task<T>(new Callable<T>() {
            public T call() {
              return tc.decode(cachedData);
            }
          });
  
      if (tc.asyncDecode(cachedData)) {
        this.pool.execute(task);
      }
      return task;
    }
docs: Perform a decode.