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; }
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()); } }
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; }