Пример #1
0
void makeLexDic(JKArgs& args)
{
	if(!args.is_set("src")||!args.is_set("tar")||!args.is_set("align"))
		usage();
	string srcfilename=args.value("src");
	string tarfilename=args.value("tar");
	string alignfilename=args.value("align");
	string s2tDicName="s2t.lex";
	string t2sDicName="t2s.lex";
	string weightFilename="";
	if(args.is_set("w"))weightFilename=args.value("w");
	if(args.is_set("s2t"))
		s2tDicName=args.value("s2t");
	if(args.is_set("t2s"))
		t2sDicName=args.value("t2s");

	ofstream s2t(s2tDicName.c_str());
	ofstream t2s(t2sDicName.c_str());
	Dic<double> s2tLexDic;
	Dic<double> t2sLexDic;
	makeLexDic(srcfilename,tarfilename,alignfilename,weightFilename,s2tLexDic,t2sLexDic);
	s2tLexDic.print(s2t);
	t2sLexDic.print(t2s);
	s2t.close();
	t2s.close();
}
Пример #2
0
/* Debug: Ensure all registry calls do succeed and have valid parameters. 
 * Shows a details message box otherwise. */
static __inline LONG regchk(LONG res, const char *pszFunc, const void *pszInfo, BOOL fInfoUnicode, const char *pszFile, unsigned int nLine)
{
	if (res != ERROR_SUCCESS && res != ERROR_FILE_NOT_FOUND && res != ERROR_NO_MORE_ITEMS) {
		TCHAR szMsg[1024], *pszInfo2;
		char *pszErr;
		pszErr = GetWinErrorDescription(res);
		pszInfo2 = s2t(pszInfo, fInfoUnicode, FALSE);  /* does NULL check */
		mir_sntprintf(szMsg, TranslateT("Access failed:\n%.64hs(%.128s)\n%.250hs(%u)\n%.256hs (%u)"), pszFunc, pszInfo2, pszFile, nLine, pszErr, res);
		MessageBox(NULL, szMsg, TranslateT("Registry warning"), MB_OK | MB_ICONINFORMATION | MB_SETFOREGROUND | MB_TOPMOST | MB_TASKMODAL);
		if (pszErr != NULL) LocalFree(pszErr);
		mir_free(pszInfo2);  /* does NULL check */
	}
	return res;
}
Пример #3
0
void MidiTest::testMTCWriter()
{
	PhMidiTimeCodeWriter mtcWriter(PhTimeCodeType30);
	PhMidiInput midiIn;

	int quarterFrameCount = 0;
	unsigned char quarterFrameData = 255;

	connect(&midiIn, &PhMidiInput::quarterFrame, [&](unsigned char data) {
	            quarterFrameCount++;
	            quarterFrameData = data;
			});

	QVERIFY(midiIn.open("testMTCWriter"));
	QVERIFY(mtcWriter.open("testMTCWriter"));

	mtcWriter.clock()->setTime(s2t("23:40:19:16", PhTimeCodeType30));
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 0);

	mtcWriter.clock()->setRate(1);
	PhFrame freq = PhTimeCode::getFps(PhTimeCodeType30) * 4; // => one quarter frame frequency
	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 1);
	QCOMPARE((int)quarterFrameData, 0x02);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 2);
	QCOMPARE((int)quarterFrameData, 0x11);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 3);
	QCOMPARE((int)quarterFrameData, 0x23);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 4);
	QCOMPARE((int)quarterFrameData, 0x31);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 5);
	QCOMPARE((int)quarterFrameData, 0x48);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 6);
	QCOMPARE((int)quarterFrameData, 0x52);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 7);
	QCOMPARE((int)quarterFrameData, 0x67);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(mtcWriter.clock()->time(), s2t("23:40:19:18", PhTimeCodeType30));
	QCOMPARE(quarterFrameCount, 8);
	QCOMPARE((int)quarterFrameData, 0x70 | (0x03 << 1) | 0x01); // timecode type info + hour high digit

	// Test changing the writer timecode type:
	mtcWriter.setTimeCodeType(PhTimeCodeType25);
	freq = PhTimeCode::getFps(PhTimeCodeType25) * 4; // => one quarter frame frequency

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 9);
	QCOMPARE((int)quarterFrameData, 0x01); // With 25 fps, the next timecode will be 23:40:19:17

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 10);
	QCOMPARE((int)quarterFrameData, 0x11);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 11);
	QCOMPARE((int)quarterFrameData, 0x23);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 12);
	QCOMPARE((int)quarterFrameData, 0x31);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 13);
	QCOMPARE((int)quarterFrameData, 0x48);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 14);
	QCOMPARE((int)quarterFrameData, 0x52);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(quarterFrameCount, 15);
	QCOMPARE((int)quarterFrameData, 0x67);

	mtcWriter.clock()->tick(freq);
	QThread::msleep(10);

	QCOMPARE(mtcWriter.clock()->time(), s2t("23:40:19:17", PhTimeCodeType25));
	QCOMPARE(quarterFrameCount, 16);
	QCOMPARE((int)quarterFrameData, 0x70 | (0x01 << 1) | 0x01); // timecode type info + hour high digit

	// Test changing speed to 0
	mtcWriter.clock()->setRate(0);

	// No quarter frame message shall be sent anymore
	QThread::msleep(10);
	QCOMPARE(quarterFrameCount, 16);
	QThread::msleep(10);
	QCOMPARE(quarterFrameCount, 16);
	QThread::msleep(10);
	QCOMPARE(quarterFrameCount, 16);
	QThread::msleep(10);
	QCOMPARE(quarterFrameCount, 16);


}