From e8ae3343cc46aa7fabb562f86e20c1d49757fde0 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu <randrianasulu@gmail.com>
Date: Mon, 21 Jun 2021 02:22:08 +0300
Subject: [PATCH 7/7] Add timecode to output mov/mxf

---
 cinelerra-5.1/cinelerra/ffmpeg.C | 8 ++++++++
 cinelerra-5.1/cinelerra/render.C | 6 ++++++
 2 files changed, 14 insertions(+)

diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C
index b8f2d1af..ec0640a5 100644
--- a/cinelerra-5.1/cinelerra/ffmpeg.C
+++ b/cinelerra-5.1/cinelerra/ffmpeg.C
@@ -2886,6 +2886,14 @@ int FFMPEG::open_encoder(const char *type, const char *spec)
 			vid->width = asset->width;
 			vid->height = asset->height;
 			vid->frame_rate = asset->frame_rate;
+			
+			char tc_str[20] = "00:00:00:00";
+			double tc_offset;
+			if(asset->timecode > 0)
+			Units::totext(tc_str, asset->timecode, TIME_HMSF, 0, asset->frame_rate, 0);
+			//printf("tc: %s \n", tc_str);
+			av_dict_set(&st->metadata, "timecode", tc_str, 0);
+			
 			if( (vid->color_range = asset->ff_color_range) < 0 )
 				vid->color_range = file_base->file->preferences->yuv_color_range;
 			switch( vid->color_range ) {
diff --git a/cinelerra-5.1/cinelerra/render.C b/cinelerra-5.1/cinelerra/render.C
index a7456717..0ee987e8 100644
--- a/cinelerra-5.1/cinelerra/render.C
+++ b/cinelerra-5.1/cinelerra/render.C
@@ -419,6 +419,7 @@ int Render::check_asset(EDL *edl, Asset &asset)
 		File::renders_video(&asset) ) {
 		asset.video_data = 1;
 		asset.layers = 1;
+
 		asset.width = edl->session->output_w;
 		asset.height = edl->session->output_h;
 		asset.interlace_mode = edl->session->interlace_mode;
@@ -726,6 +727,11 @@ void RenderThread::render_single(int test_overwrite, Asset *asset, EDL *edl,
 	if( !render->result ) {
 // Get total range to render
 		render->total_start = command->start_position;
+		
+		render->default_asset->timecode = command->start_position;
+		printf("tc: %f \n", render->default_asset->timecode);
+		render->default_asset->timecode += edl->session->timecode_offset;
+		
 		render->total_end = command->end_position;
 		total_length = render->total_end - render->total_start;
 
-- 
2.32.0

