public RetrievePixelDataResult RetrievePixelData()
        {
            try
            {
                if (_useBulkLoading)
                {
                    //FrameStreamingResultMetaData result = new FrameStreamingResultMetaData();

                    string[] uriSplit = Regex.Split(_baseUri.ToString(), "/");
                    //Console.WriteLine("URI: " + _baseUri);
                    //Console.WriteLine("binary item no: " + uriSplit[uriSplit.Length - 1]);

                    //byte[] binaryData = new byte[1000000];
                    //_binaryItems.TryGetValue(1, out binaryData);
                    int binaryItemNumber = Int32.Parse(uriSplit[uriSplit.Length - 1]);
                    //byte[] binaryData = _binaryStream.GetBinaryData(binaryItemNumber);
                    //result = _binaryStream.GetMetadata(binaryItemNumber);

                    RetrievePixelDataResult pixelDataResult = new RetrievePixelDataResult(_binaryStream.GetBinaryData(binaryItemNumber), _binaryStream.GetMetadata(binaryItemNumber));
                    return(pixelDataResult);
                }
                else
                {
                    CodeClock clock = new CodeClock();
                    clock.Start();

                    FrameStreamingResultMetaData result = new FrameStreamingResultMetaData();

                    result.Speed.Start();

                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_baseUri);
                    request.Timeout   = 30000;
                    request.KeepAlive = false;

                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        throw new StreamingClientException(response.StatusCode, HttpUtility.HtmlDecode(response.StatusDescription));
                    }

                    Stream       responseStream = response.GetResponseStream();
                    BinaryReader reader         = new BinaryReader(responseStream);
                    byte[]       buffer         = reader.ReadBytes((int)response.ContentLength);
                    reader.Close();
                    responseStream.Close();
                    response.Close();

                    result.Speed.SetData(buffer.Length);
                    result.Speed.End();

                    result.ResponseMimeType  = response.ContentType;
                    result.Status            = response.StatusCode;
                    result.StatusDescription = response.StatusDescription;
                    result.Uri           = response.ResponseUri;
                    result.ContentLength = buffer.Length;
                    result.IsLast        = (response.Headers["IsLast"] != null && bool.Parse(response.Headers["IsLast"]));

                    clock.Stop();
                    PerformanceReportBroker.PublishReport("MINT", "RetrievePixelData", clock.Seconds);

                    RetrievePixelDataResult pixelDataResult;
                    if (response.Headers["Compressed"] != null && bool.Parse(response.Headers["Compressed"]))
                    {
                        pixelDataResult = new RetrievePixelDataResult(CreateCompressedPixelData(response, buffer), result);
                    }
                    else
                    {
                        pixelDataResult = new RetrievePixelDataResult(buffer, result);
                    }

                    return(pixelDataResult);
                }
            }
            catch (WebException ex)
            {
                if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response is HttpWebResponse)
                {
                    HttpWebResponse response = (HttpWebResponse)ex.Response;
                    throw new StreamingClientException(response.StatusCode, HttpUtility.HtmlDecode(response.StatusDescription));
                }
                throw new StreamingClientException(StreamingClientExceptionType.Network, ex);
            }
        }