Example #1
0
static YfTaskCore_t *
do_init(int argc, char **argv, const YfTaskCore_t *h0)
{
  YfTask_t *h;
  int c;
  unsigned int flags = ALLMETHODS;
  int min = 4;
  int maxt = 255, maxb = 255, maxi = 255, maxc = 255;
  int errt =  32, errb =  32, erri =  16, errc =  12;

  while ((c = getopt(argc, argv, "tm:S:T:B:I:C:")) != -1) {
    switch (c) {
    case 't':
      flags |= TESTNOISE;
      break;
    case 'm':
      flags &= ~ALLMETHODS;
      for (; *optarg; optarg++)
	switch (*optarg) {
	case 't': flags |= TRIFRAME; break;
	case 'b': flags |= BIFRAME;  break;
	case 'i': flags |= INFIELD;  break;
	case 'c': flags |= CHROMA;   break;
	}
      break;
    case 'S':
      sscanf(optarg, "%d", &min);
    case 'T':
      switch (sscanf(optarg, "%d,%d", &errt, &maxt)) {
      case 0:
	sscanf(optarg, ",%d", &maxt);
	break;
      }
      break;
    case 'B':
      switch (sscanf(optarg, "%d,%d", &errb, &maxb)) {
      case 0:
	sscanf(optarg, ",%d", &maxb);
	break;
      }
      break;
    case 'I':
      switch (sscanf(optarg, "%d,%d", &erri, &maxi)) {
      case 0:
	sscanf(optarg, ",%d", &maxi);
	break;
      }
      break;
    case 'C':
      switch (sscanf(optarg, "%d,%d", &errc, &maxc)) {
      case 0:
	sscanf(optarg, ",%d", &maxc);
	break;
      }
      break;
    }
  }
  if (min < 1 ||
      maxt < min || 255 < maxt ||
      maxb < min || 255 < maxb ||
      maxi < min || 255 < maxi ||
      maxc < min || 255 < maxi) {
    WERROR("illeagal threshold");
    return NULL;
  }
  if (errt < 1 || 255 < errt ||
      errb < 1 || 255 < errb ||
      erri < 1 || 255 < erri ||
      errc < 1 || 255 < errc) {
    WERROR("illeagal error");
    return NULL;
  }
  if (y4m_si_get_interlace(&h0->si) == Y4M_ILACE_BOTTOM_FIRST) {
    WERROR("unsupported field order");
    return NULL;
  }
  if (h0->height != 480 || h0->fpscode != 4)
    WWARN("input doesn't seem NTSC full height / full motion video");
  h = (YfTask_t *)
    YfAllocateTask(&yuvycsnoise,
		   (sizeof *h + DATABYTES(y4m_si_get_chroma(&h0->si), h0->width, h0->height) + /* frame */
		    (DATABYTES(y4m_si_get_chroma(&h0->si), h0->width, h0->height) * 4) + /* frprv, frnow, dfprv, dfnow */
		    ((h0->width / CWDIV(y4m_si_get_chroma(&h0->si))) * (h0->height / CHDIV(y4m_si_get_chroma(&h0->si))) * 2) + /* dfpr2 */
		    (h0->width * h0->height * 2) + (h0->width * 2)), /* dlprv, dlnow */
		   h0);
  if (!h)
    return NULL;
  h->flags = flags;
  h->min   = min;
  h->maxt  = maxt;
  h->maxb  = maxb;
  h->maxi  = maxi;
  h->maxc  = maxc;
  h->errt  = errt;
  h->errb  = errb;
  h->erri  = erri;
  h->errc  = errc;
  YfInitFrame(&h->frame, &h->_);
  return (YfTaskCore_t *)h;
}
Example #2
0
LPWSTR FormatError(DWORD dwError, LPWSTR wszBuffer, LPDWORD lpBufferSize)
{
    INT     iValue;
    DWORD	dwReturn;

    switch (dwError)
    {
    case ERROR_DEV_NOT_EXIST:
    case ERROR_PATH_NOT_FOUND:
    case ERROR_FILE_NOT_FOUND:
    case ERROR_INVALID_DRIVE:
    case IO_NO_ACCESS_PRIVATE:
        WERROR(wszBuffer, dwReturn, L"No such file or directory");
        break;
    case IO_VIRTUAL_DIR:
        WERROR(wszBuffer, dwReturn, L"Modifying virtual directories is not allowed");
        break;
    case ERROR_DIRECTORY:
        WERROR(wszBuffer, dwReturn, L"Not a directory");
        break;
    case ERROR_NOT_EMPTY:
        WERROR(wszBuffer, dwReturn, L"Directory not empty");
        break;
    case ERROR_WRITE_PROTECT:
        WERROR(wszBuffer, dwReturn, L"Permission denied");
        break;
    case ERROR_ALREADY_EXISTS:
        WERROR(wszBuffer, dwReturn, L"Directory/File already exists");
        break;
    case ERROR_HANDLE_DISK_FULL:
        WERROR(wszBuffer, dwReturn, L"Device full, contact system administrator");
        break;
    case ERROR_INVALID_NAME:
        WERROR(wszBuffer, dwReturn, L"Invalid filename");
        break;
    case IO_APPEND_SCRIPT:
    case IO_STORE_SCRIPT:
    case IO_NEWDIR_SCRIPT:
        WERROR(wszBuffer, dwReturn, L"Action blocked by external script");
        break;
    case WSAEWOULDBLOCK:
    case WSAEINPROGRESS:
    case WSAETIMEDOUT:
        WERROR(wszBuffer, dwReturn, L"Connection timed out");
        break;
    case WSAENOTSOCK:
        WERROR(wszBuffer, dwReturn, L"Data socket not connected");
        break;

    case IO_NO_ACCESS:
        WERROR(wszBuffer, dwReturn, L"Permission denied");
        break;
    case IO_NO_ACCESS_VFS:
        WERROR(wszBuffer, dwReturn, L"Permission denied (directory mode)");
        break;
    case IO_NO_ACCESS_INI:
        WERROR(wszBuffer, dwReturn, L"Permission denied (config file)");
        break;
    case IO_INVALID_FILENAME:
        WERROR(wszBuffer, dwReturn, L"Invalid filename");
        break;
    case IO_NO_ACCESS_FXP_IN:
        WERROR(wszBuffer, dwReturn, L"FXP to path is not allowed");
        break;
    case IO_NO_ACCESS_FXP_OUT:
        WERROR(wszBuffer, dwReturn, L"FXP from path is not allowed");
        break;
    case IO_BAD_FXP_ADDR:
        WERROR(wszBuffer, dwReturn, L"Transfer to specified network address is not allowed");
        break;
    case IO_NO_CREDITS:
        WERROR(wszBuffer, dwReturn, L"Insufficient credits left to perform requested action");
        break;
    case IO_SSL_FAIL:
        WERROR(wszBuffer, dwReturn, L"SSL library returned a failure code");
        break;
    case IO_SSL_FAIL2:
        WERROR(wszBuffer, dwReturn, L"SSL failure");
        break;
    case IO_MAX_DOWNLOADS:
        WERROR(wszBuffer, dwReturn, L"Maximum concurrent downloads for account reached");
        break;
    case IO_MAX_UPLOADS:
        WERROR(wszBuffer, dwReturn, L"Maximum concurrent uploads for account reached");
        break;


    case IO_ENCRYPTION_REQUIRED:
        WERROR(wszBuffer, dwReturn, L"Your user class requires you to use secure connections");
        break;
    case IO_TRANSFER_ABORTED:
        WERROR(wszBuffer, dwReturn, L"Transfer aborted");
        break;
    case IO_INVALID_ARGUMENTS:
        WERROR(wszBuffer, dwReturn, L"Invalid arguments");
        break;
    case IO_GADMIN_EMPTY:
        WERROR(wszBuffer, dwReturn, L"No group admin rights found");
        break;
    case IO_NOT_GADMIN:
        WERROR(wszBuffer, dwReturn, L"User is not in your admin groups");
        break;
    case IO_NO_SLOTS:
        WERROR(wszBuffer, dwReturn, L"Group's limit has been reached");
        break;

    case ERROR_GROUP_NOT_EMPTY:
        WERROR(wszBuffer, dwReturn, L"Group is not empty");
        break;
    case ERROR_NO_MATCH:
        WERROR(wszBuffer, dwReturn, L"No results for search term");
        break;
    case ERROR_GROUPNAME:
        WERROR(wszBuffer, dwReturn, L"Invalid name for group");
        break;
    case ERROR_USERNAME:
        WERROR(wszBuffer, dwReturn, L"Invalid name for user");
        break;
    case ERROR_MODULE_CONFLICT:
        WERROR(wszBuffer, dwReturn, L"Module ownership conflict");
        break;
    case ERROR_SERVICE_NAME_NOT_FOUND:
        WERROR(wszBuffer, dwReturn, L"Service name does not exist");
        break;
    case ERROR_DEVICE_NAME_NOT_FOUND:
        WERROR(wszBuffer, dwReturn, L"Device name does not exist");
        break;
    case ERROR_MODULE_NOT_FOUND:
        WERROR(wszBuffer, dwReturn, L"Required module is not loaded");
        break;
    case ERROR_USER_NOT_FOUND:
        WERROR(wszBuffer, dwReturn, L"User does not exist");
        break;
    case ERROR_GROUP_NOT_FOUND:
        WERROR(wszBuffer, dwReturn, L"Group does not exist");
        break;
    case ERROR_GROUP_EXISTS:
        WERROR(wszBuffer, dwReturn, L"Group already exists");
        break;
    case ERROR_USER_EXISTS:
        WERROR(wszBuffer, dwReturn, L"User already exists");
        break;
    case ERROR_USER_LOCK_FAILED:
        WERROR(wszBuffer, dwReturn, L"User locking failed");
        break;
    case ERROR_GROUP_LOCK_FAILED:
        WERROR(wszBuffer, dwReturn, L"Group locking failed");
        break;
    case ERROR_LOCK_FAILED:
        WERROR(wszBuffer, dwReturn, L"File locking failed");
        break;
    case ERROR_INVALID_ARGUMENTS:
        WERROR(wszBuffer, dwReturn, L"Syntax error in parameters or arguments");
        break;
    case ERROR_MISSING_ARGUMENT:
        WERROR(wszBuffer, dwReturn, L"Not enough parameters");
        break;
    case ERROR_NO_ACTIVE_DEVICE:
        WERROR(wszBuffer, dwReturn, L"Service has no active devices");
        break;
    case ERROR_USER_NOT_ONLINE:
        WERROR(wszBuffer, dwReturn, L"User is not online");
        break;
    case ERROR_PASSWORD:
        WERROR(wszBuffer, dwReturn, L"Invalid password");
        break;
    case ERROR_SERVICE_LOGINS:
        WERROR(wszBuffer, dwReturn, L"Service is full, try again later");
        break;
    case ERROR_CLASS_LOGINS:
        WERROR(wszBuffer, dwReturn, L"Maximum concurrent connections for ip-class reached, try again later");
        break;
    case ERROR_IP_LOGINS:
        WERROR(wszBuffer, dwReturn, L"Maximum concurrent connections for single host reached");
        break;
    case ERROR_USER_IP_LOGINS:
        WERROR(wszBuffer, dwReturn, L"Maximum concurrent connections for account from a single host reached");
        break;
    case ERROR_USER_LOGINS:
        WERROR(wszBuffer, dwReturn, L"Maximum concurrent connections for account reached, try again later");
        break;
    case ERROR_MASTER:
        WERROR(wszBuffer, dwReturn, L"Cannot target Master account");
        break;
    case ERROR_SITEOP:
        WERROR(wszBuffer, dwReturn, L"Cannot target Master or SiteOp account");
        break;
    case ERROR_FILESEEK:
        WERROR(wszBuffer, dwReturn, L"Seek offset exceeds end of file");
        break;
    case ERROR_INVALID_FILEMODE:
        WERROR(wszBuffer, dwReturn, L"Invalid filemode");
        break;
    case ERROR_USER_EXPIRED:
        WERROR(wszBuffer, dwReturn, L"Account has expired");
        break;
    case ERROR_USER_BANNED:
        WERROR(wszBuffer, dwReturn, L"Account has been temporarily banned");
        break;
    case ERROR_USER_DELETED:
        WERROR(wszBuffer, dwReturn, L"Account has been deleted");
        break;
    case ERROR_USER_NOT_DELETED:
        WERROR(wszBuffer, dwReturn, L"User not marked for deletion or account hasn't expired");
        break;
    case ERROR_HOME_DIR:
        WERROR(wszBuffer, dwReturn, L"Error with home directory");
        break;
    case ERROR_VFS_FILE:
        WERROR(wszBuffer, dwReturn, L"Error with VFS file");
        break;
    case ERROR_ALREADY_CLOSED:
        WERROR(wszBuffer, dwReturn, L"Server already closed");
        break;
    case ERROR_ALREADY_OPEN:
        WERROR(wszBuffer, dwReturn, L"Server already open");
        break;
    case ERROR_SERVER_CLOSED:
    case ERROR_SERVER_SINGLE:
        WERROR(wszBuffer, dwReturn, L"Server is closed");
        break;
    case ERROR_SHUTTING_DOWN:
        WERROR(wszBuffer, dwReturn, L"Server is shutting down");
        break;
    case ERROR_STARTING_UP:
        WERROR(wszBuffer, dwReturn, L"Server is starting up");
        break;
    case ERROR_COMMAND_FAILED:
        WERROR(wszBuffer, dwReturn, L"Command failed");
        break;
    case ERROR_CLIENT_HOST:
        WERROR(wszBuffer, dwReturn, L"Your IP/hostname is not authorized");
        break;
    case ERROR_IDENT_FAILURE:
        WERROR(wszBuffer, dwReturn, L"Your user ident response did not match");
        break;
    case ERROR_BAD_THEME:
        WERROR(wszBuffer, dwReturn, L"Invalid/Missing theme");
        break;
    case ERROR_NOT_MODIFIED:
        WERROR(wszBuffer, dwReturn, L"Not modified");
        break;
    case ERROR_DIRECTORY_LOCKED:
        WERROR(wszBuffer, dwReturn, L"Directory being moved or deleted");
        break;
    case IO_SCRIPT_FAILURE:
        WERROR(wszBuffer, dwReturn, L"Fatal script error");
        break;
    case ERROR_FILE_MISSING:
        WERROR(wszBuffer, dwReturn, L"File missing");
        break;
    case ERROR_NO_HELP:
        WERROR(wszBuffer, dwReturn, L"No help found");
        break;
    case ERROR_NOGROUP:
        WERROR(wszBuffer, dwReturn, L"Cannot delete default group (GID #1)");
        break;
    case ERROR_SCRIPT_MISSING:
        WERROR(wszBuffer, dwReturn, L"Cannot find script");
        break;
    case ERROR_CLOSED_SOCKET:
        WERROR(wszBuffer, dwReturn, L"Failed send/recv on already closed socket");
        break;
    case ERROR_MATCH_LIST:
        WERROR(wszBuffer, dwReturn, L"No previously saved user matches");
        break;
    case ERROR_TCL_VERSION:
        WERROR(wszBuffer, dwReturn, L"Error with TCL, .dll or /lib version mismatch");
        break;
    case ERROR_TRANSFER_TIMEOUT:
        WERROR(wszBuffer, dwReturn, L"Data transfer timeout");
        break;
    case ERROR_INVALID_FS_TARGET:
        WERROR(wszBuffer, dwReturn, L"Invalid filesystem target");
        break;

    default:
        //	Default error handler
        dwReturn	= FormatMessageW(FORMAT_MESSAGE_IGNORE_INSERTS|FORMAT_MESSAGE_FROM_SYSTEM,
                                     NULL, dwError, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), wszBuffer, lpBufferSize[0]-1, NULL);
        //	Check result
        if (dwReturn)
        {
            //	Remove carriage feed
            if (wszBuffer[dwReturn - 1] == L'\n') dwReturn--;
            if (wszBuffer[dwReturn - 1] == L'\r') dwReturn--;
            if (wszBuffer[dwReturn - 1] == L'.') dwReturn--;
            //	Add zero padding
            wszBuffer[dwReturn]	= L'\0';
            break;
        }

        // ok, no english for the above error, try local language but append (#) to end...
        dwReturn	= FormatMessageW(FORMAT_MESSAGE_IGNORE_INSERTS|FORMAT_MESSAGE_FROM_SYSTEM,
                                     NULL, dwError, 0, wszBuffer, lpBufferSize[0]-1, NULL);
        if (dwReturn)
        {
            //	Remove carriage feed
            if (wszBuffer[dwReturn - 1] == L'\n') dwReturn--;
            if (wszBuffer[dwReturn - 1] == L'\r') dwReturn--;
            if (wszBuffer[dwReturn - 1] == L'.') dwReturn--;
            //	Add zero padding
            wszBuffer[dwReturn]	= L'\0';
            iValue = _snwprintf(&wszBuffer[dwReturn], lpBufferSize[0]-dwReturn-1, L" (#%u)", dwError);
            if (iValue > 0)
            {
                dwReturn += iValue;
            }
            wszBuffer[dwReturn]	= L'\0';
            break;
        }

        dwReturn = 0;
        iValue = _snwprintf(wszBuffer, lpBufferSize[0], L"Unknown error (%u)", dwError);
        if (iValue > 0)
        {
            dwReturn = iValue;
        }
        wszBuffer[dwReturn]	= L'\0';
    }
    lpBufferSize[0]	= dwReturn;
    return wszBuffer;
}