private IProducer <CloseableReference <IPooledByteBuffer> > GetBasicEncodedImageSequence(
            ImageRequest imageRequest)
        {
            Preconditions.CheckNotNull(imageRequest);

            Uri uri = imageRequest.SourceUri;

            Preconditions.CheckNotNull(uri, "Uri is null.");
            if (UriUtil.IsNetworkUri(uri))
            {
                lock (_gate)
                {
                    if (_encodedImageProducerSequence == null)
                    {
                        _encodedImageProducerSequence = new RemoveImageTransformMetaDataProducer(
                            GetBackgroundNetworkFetchToEncodedMemorySequence());
                    }
                }

                return(_encodedImageProducerSequence);
            }
            else if (UriUtil.IsAppDataUri(uri))
            {
                return(GetEncodedLocalImageFileFetchSequence());
            }
            else if (UriUtil.IsAppPackageUri(uri))
            {
                return(GetEncodedLocalAssetFetchSequence());
            }
            else if (UriUtil.IsAppResourceUri(uri))
            {
                return(GetEncodedLocalResourceFetchSequence());
            }
            else if (UriUtil.IsDataUri(uri))
            {
                return(GetEncodedDataFetchSequence());
            }
            else if (UriUtil.IsFileUri(uri))
            {
                return(GetEncodedLocalImageFileFetchSequence());
            }
            else if (UriUtil.IsFutureAccessListUri(uri))
            {
                return(GetEncodedFutureAccessListFetchSequence());
            }
            else
            {
                string uriString = uri.ToString();
                if (uriString.Length > 30)
                {
                    uriString = uriString.Substring(0, 30) + "...";
                }

                throw new Exception("Unsupported uri scheme! Uri is: " + uriString);
            }
        }
        private IProducer <CloseableReference <CloseableImage> > GetBasicDecodedImageSequence(
            ImageRequest imageRequest)
        {
            Preconditions.CheckNotNull(imageRequest);

            Uri uri = imageRequest.SourceUri;

            Preconditions.CheckNotNull(uri, "Uri is null.");
            if (UriUtil.IsNetworkUri(uri))
            {
                return(GetNetworkFetchSequence());
            }
            else if (UriUtil.IsAppDataUri(uri))
            {
                if (MediaUtils.IsVideo(MediaUtils.ExtractMime(uri.ToString())))
                {
                    return(GetLocalVideoFileFetchSequence());
                }
                else
                {
                    return(GetLocalImageFileFetchSequence());
                }
            }
            else if (UriUtil.IsAppPackageUri(uri))
            {
                return(GetLocalAssetFetchSequence());
            }
            else if (UriUtil.IsAppResourceUri(uri))
            {
                return(GetLocalResourceFetchSequence());
            }
            else if (UriUtil.IsDataUri(uri))
            {
                return(GetDataFetchSequence());
            }
            else if (UriUtil.IsFileUri(uri))
            {
                return(GetLocalImageFileFetchSequence());
            }
            else if (UriUtil.IsFutureAccessListUri(uri))
            {
                return(GetFutureAccessListFetchSequence());
            }
            else
            {
                string uriString = uri.ToString();
                if (uriString.Length > 30)
                {
                    uriString = uriString.Substring(0, 30) + "...";
                }

                throw new Exception("Unsupported uri scheme! Uri is: " + uriString);
            }
        }