Exemplo n.º 1
0
bool DXVA2Decoder::Init(MythRenderD3D9* render)
{
    bool ok = true;
    CREATE_CHECK(m_width > 0,  "Invalid width.")
    CREATE_CHECK(m_height > 0, "Invalid height.")
    CREATE_CHECK(CreateVideoService(render), "Failed to create video service.")
    CREATE_CHECK(GetInputOutput(), "Failed to find input/output combination.")
    InitFormat();
    CREATE_CHECK(GetDecoderConfig(), "Failed to find a raw input bitstream.")
    CREATE_CHECK(CreateSurfaces(), "Failed to create surfaces.")
    CREATE_CHECK(CreateDecoder(), "Failed to create decoder.")
    return ok;
}
Exemplo n.º 2
0
void WebAppInputLine::BufferSizeExceeded() const
{
  if (GetFormatIdent() == 0)
  {
    LogError("buffer size exceeded");
    throw new C4P::Exception9999;
  }
  else
  {
    IInputOutput* inputOutput = GetInputOutput();
    inputOutput->loc() = inputOutput->first();
    inputOutput->limit() = inputOutput->last() - 1;
    inputOutput->overflow(256, inputOutput->bufsize());
  }
}
Exemplo n.º 3
0
bool WebAppInputLine::InputLine(C4P_text& f, C4P_boolean bypassEndOfLine) const
{
  f.AssertValid();

  if (AmI("xetex"))
  {
    MIKTEX_UNEXPECTED();
  }

#if defined(PASCAL_TEXT_IO)
  MIKTEX_UNEXPECTED();
#endif

  if (feof(f) != 0)
  {
    return false;
  }

  IInputOutput* inputOutput = GetInputOutput();

  const C4P_signed32 first = inputOutput->first();
  C4P_signed32& last = inputOutput->last();
  const C4P_signed32 bufsize = inputOutput->bufsize();

  const char* xord = nullptr;
#if defined(WITH_OMEGA)
  if (!AmI("omega"))
#endif
  {
    xord = GetCharacterConverter()->xord();
  }

  char *buffer = nullptr;
#if defined(WITH_OMEGA)
  char16_t* buffer16 = nullptr;
  if (AmI("omega"))
  {
    buffer16 = inputOutput->buffer16();
  }
  else
#endif
  {
    buffer = inputOutput->buffer();
  }

  last = first;

  int ch = GetCharacter(f);
  if (ch == EOF)
  {
    return false;
  }
  if (ch == '\r')
  {
    ch = GetCharacter(f);
    if (ch == EOF)
    {
      return false;
    }
    if (ch != '\n')
    {
      ungetc(ch, f);
      ch = '\n';
    }
  }

  if (ch == '\n')
  {
    return true;
  }

#if defined(WITH_OMEGA)
  if (AmI("omega"))
  {
    buffer16[last] = ch;
  }
  else
#endif
  {
    buffer[last] = xord[ch & 0xff];
  }
  last += 1;

  while ((ch = GetCharacter(f)) != EOF && last < bufsize)
  {
    if (ch == '\r')
    {
      ch = GetCharacter(f);
      if (ch == EOF)
      {
        break;
      }
      if (ch != '\n')
      {
        ungetc(ch, f);
        ch = '\n';
      }
    }
    if (ch == '\n')
    {
      break;
    }
#if defined(WITH_OMEGA)
    if (AmI("omega"))
    {
      buffer16[last] = ch;
    }
    else
#endif
    {
      buffer[last] = xord[ch & 0xff];
    }
    last += 1;
  }

  if (ch != '\n' && ch != EOF)
  {
    BufferSizeExceeded();
  }

  if (!AmI("bibtex") && last >= inputOutput->maxbufstack())
  {
    inputOutput->maxbufstack() = last + 1;
    if (inputOutput->maxbufstack() >= bufsize)
    {
      BufferSizeExceeded();
    }
  }

#if defined(WITH_OMEGA)
  if (AmI("omega"))
  {
    while (last > first && (buffer16[last - 1] == u' ' || buffer16[last - 1] == u'\r'))
    {
      last -= 1;
    }
  }
  else
#endif
  {
    while (last > first && (buffer[last - 1] == ' ' || buffer[last - 1] == '\r'))
    {
      last -= 1;
    }
  }

  return true;
}