Ejemplo n.º 1
0
/*
 * close the file muxer
 * args:
 *   encoder_ctx - pointer to encoder context
 *
 * asserts:
 *   none
 *
 * returns: none
 */
void encoder_muxer_close(encoder_context_t *encoder_ctx)
{
	switch (encoder_ctx->muxer_id)
	{
		case ENCODER_MUX_AVI:
			if (avi_ctx)
			{
				/*last frame pts*/
				float tottime = (float) ((int64_t) (encoder_ctx->enc_video_ctx->pts) / 1000000); // convert to miliseconds

				if (verbosity > 0)
					printf("ENCODER: (avi) time = %f\n", tottime);

				if (tottime > 0)
				{
					/*try to find the real frame rate*/
					avi_ctx->fps = (double) (encoder_ctx->enc_video_ctx->framecount * 1000) / tottime;
				}

				if (verbosity > 0)
					printf("ENCODER: (avi) %"PRId64" frames in %f ms [ %f fps]\n",
						encoder_ctx->enc_video_ctx->framecount, tottime, avi_ctx->fps);

				//close sound ??

				avi_close(avi_ctx);

				avi_destroy_context(avi_ctx);
				avi_ctx = NULL;
			}
			break;

		default:
		case ENCODER_MUX_MKV:
		case ENCODER_MUX_WEBM:
			if(mkv_ctx != NULL)
			{
				mkv_close(mkv_ctx);

				mkv_destroy_context(mkv_ctx);
				mkv_ctx = NULL;
			}
			break;
	}
}
Ejemplo n.º 2
0
static void
mkvClose(struct ALL_DATA *all_data)
{
	float tottime = 0;

	struct GLOBAL *global = all_data->global;
	//struct vdIn *videoIn = all_data->videoIn;
	struct VideoFormatData *videoF = all_data->videoF;
	struct paRecordData *pdata = all_data->pdata;

	if (videoF->mkv)
	{
		tottime = (float) ((int64_t) (global->Vidstoptime - global->Vidstarttime) / 1000000); // convert to miliseconds

		if (global->debug) g_print("stop= %llu start=%llu \n",
			(unsigned long long) global->Vidstoptime, (unsigned long long) global->Vidstarttime);

		if (global->debug) g_print("VIDEO: %d frames in %f ms \n",global->framecount,tottime);
		/*------------------- close audio stream and clean up -------------------*/
		if (global->Sound_enable > 0)
		{
			if (close_sound (pdata)) g_printerr("Sound Close error\n");
		}
		mkv_close(videoF->mkv);

		global->framecount = 0;
		global->Vidstarttime = 0;
		if (global->debug) g_print ("close mkv\n");
	}

	mkv_destroy_context(videoF->mkv);
	pdata = NULL;
	global = NULL;
	//videoIn = NULL;
	videoF->mkv = NULL;
}