Beispiel #1
0
/* 韻律情報の読み込み */
void setProsFile( char *rel, char *filename )
{
	int error;

	strcpy( slot_Speak_stat, "PROCESSING" );
	if( prop_Speak_stat == AutoOutput )  inqSpeakStat();

	if( strcmp(rel,"=")==0 )  {
		strcpy( slot_Pros_file, filename );
		if( prop_ProsFile == AutoOutput )  inqProsFile();

		refresh();
		/* prosBuf に各種パラメータを読み込む */
		error = read_pros_file( filename );
		if( ! error )  {

			text_analysis( input_text );	/* テキスト解析 */
			if( prop_Text_text == AutoOutput )  inqTextText();
			if( prop_Speak_text == AutoOutput )  inqSpeakText();

/*		parameter_generation();		*/

			init_parameter(); /* パラメータ生成の準備 */
			make_duration(); /* 素のテキストから状態継続長を生成 */
			modify_duration(); /* 継続長の修正(タグ処理) */

			/* 音素継続長が修正されている場合は、状態継続長を
			   計算しなおす */
			update_duration();
			
			/* ここで、prosBuf のデータで音素時間長を設定する。 */

			make_cumul_time(); /* 音素時間長の累積を計算 */
			modify_voice(); /* 話者のスイッチ、αパラメータの変更(タグ処理) */

			if( prop_Text_pho == AutoOutput )  inqTextPho();
			if( prop_Speak_pho == AutoOutput )  inqSpeakPho();
			if( prop_Text_dur == AutoOutput )  inqTextDur();
			if( prop_Speak_dur == AutoOutput )  inqSpeakDur();

			make_parameter(); /* パラメータ生成を実行 */

			modify_f0(); /* F0の修正(タグ処理) */
			modify_power(); /* パワーの修正(タグ処理) */

/*		parameter_generation();	 ここまで	*/

			/* 生成されたパラメータに対してF0とc0を更新 */
			error = set_f0_and_power( filename );
			if( ! error )  {
				do_synthesis();		/* 合成波形の生成 */
			}
		}
	} else {
		unknown_com();
	}
	strcpy( slot_Speak_stat, "READY" );
	if( prop_Speak_stat == AutoOutput )  inqSpeakStat();
}
Beispiel #2
0
void clip_info::update_moov_durations()
{
	size_t time_scale = ::mvhd_get_time_scale( new_moov_->mvhd_ );

	double audio_duration = audio_track_->update_duration( new_moov_->traks_[ audio_track_index_ ], time_scale );
	double video_duration = video_track_->update_duration( new_moov_->traks_[ video_track_index_ ], time_scale );

	double duration = audio_duration;
	if( duration < video_duration )
	{
		duration = video_duration;
	}

	update_duration( duration );
}
void CircularAnimation::update(){
    update_duration();
    update_circle_size();
}