Hi Lo.

I'm in a bit of a hurry right now, I'll have a look asap, thanks for the fix :-) ...

Sebastien

Lorenzo Pastrana wrote:

Not relying on stream state (stopping on image completion) is actually even better ... :)

bool nglImageJPEGCodec::Feed(nglIStream* pIStream)
{
  while(pIStream->Available() && pIStream->GetState() == eStreamReady)
  {
    switch(mState)
    {
      case jpegReadHeader:
        if(!ReadHeader(pIStream))
        {
          jpeg_finish_decompress(&mCinfo);
          jpeg_destroy_decompress(&mCinfo);
          return false;
        }
        mpBuffer = mpImage->GetBuffer() +
                   mLineSize*(mpImage->GetHeight()-1);
        mState = jpegReadData;
        /*fallthrough*/
      case(jpegReadData):
        ReadData();
        SendData((float)mLine/(float)mpImage->GetHeight());
        if(mCinfo.output_scanline >= mCinfo.output_height)
        {
          return false;
        }
        break;
      case(jpegError):
        return false;
    }
  }
  return (pIStream->GetState()==eStreamWait) ||
         (pIStream->GetState()==eStreamReady);
}

Lo.

_______________________________________________
https://mail.gna.org/listinfo/ngl-devel


_______________________________________________
https://mail.gna.org/listinfo/ngl-devel

Reply via email to