X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fvrender.C;h=c59c3fec0be0c4d185f71f6bb4b64c2e0c78c350;hb=3ac72077bee819333ea9e8c3c3307b529ecf3647;hp=4c3011622a01e0514c3ca20b05e11a77dbc2cded;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/vrender.C b/cinelerra-5.1/cinelerra/vrender.C index 4c301162..c59c3fec 100644 --- a/cinelerra-5.1/cinelerra/vrender.C +++ b/cinelerra-5.1/cinelerra/vrender.C @@ -29,7 +29,6 @@ #include "edl.h" #include "edlsession.h" #include "file.h" -#include "interlacemodes.h" #include "localsession.h" #include "mainsession.h" #include "mwindow.h" @@ -144,28 +143,13 @@ int VRender::process_buffer(int64_t input_position, use_vconsole = get_use_vconsole(&playable_edit, input_position, use_brender); if(debug) printf("VRender::process_buffer %d use_vconsole=%d\n", __LINE__, use_vconsole); - if( playable_edit ) { -// Asset and output device must have same resulting de-interlacing method - Indexable *source = playable_edit->get_source(); - if( source->is_asset ) { - Asset *asset = (Asset *)source; - if( ilaceautofixmethod2(renderengine->edl->session->interlace_mode, - asset->interlace_autofixoption, asset->interlace_mode, - asset->interlace_fixmethod) != BC_ILACE_FIXMETHOD_NONE ) - return 1; - } - } - // Negotiate color model colormodel = get_colormodel(playable_edit, use_vconsole, use_brender); if(debug) printf("VRender::process_buffer %d\n", __LINE__); - - // Get output buffer from device - if(renderengine->command->realtime && - !renderengine->is_nested) + if(renderengine->command->realtime && !renderengine->is_nested) { renderengine->video->new_output_buffer(&video_out, colormodel); } @@ -223,11 +207,6 @@ int VRender::process_buffer(int64_t input_position, 1, use_cache, use_asynchronous); -/* Insert timecode */ - if(renderengine->show_tc) - insert_timecode(playable_edit, - input_position, - video_out); if(debug) printf("VRender::process_buffer %d\n", __LINE__); } @@ -260,85 +239,11 @@ int VRender::get_use_vconsole(VEdit **playable_edit, // Descend into EDL nest return renderengine->get_edl()->get_use_vconsole(playable_edit, - position, - renderengine->command->get_direction(), + position, renderengine->command->get_direction(), vconsole->playable_tracks); } -int VRender::insert_timecode(Edit* playable_edit, - int64_t position, - VFrame *output) -{ -#if 0 - EDLSession *session = renderengine->edl->session; - /* Create a vframe with TC and SRC timecode in white - * with a black border */ - VFrame *input = new VFrame(0, - output->get_w(), MIN(output->get_h(), 50), - output->get_color_model(), output->get_bytes_per_line()); - char etc[12]; - char srctc[12]; - int src_position = 0; - -TRACE("VRender::insert_timecode 10") - - /* Edited TC */ - Units::totext(etc, - (renderengine->vrender->current_position + - session->get_frame_offset()) / session->frame_rate, - session->time_format, - session->sample_rate, - session->frame_rate, - session->frames_per_foot); - -TRACE("VRender::insert_timecode 20") - - if(playable_edit) - { -TRACE("VRender::insert_timecode 30") - src_position = renderengine->vrender->current_position - - playable_edit->startproject + - playable_edit->startsource + - playable_edit->asset->tcstart; -TRACE("VRender::insert_timecode 40") - Units::totext(srctc, - src_position / playable_edit->asset->frame_rate, - session->time_format, - session->sample_rate, - playable_edit->asset->frame_rate, - session->frames_per_foot); - } - else - { -TRACE("VRender::insert_timecode 50") - Units::totext(srctc, - 0.0, -// (renderengine->vrender->current_position - position) / session->frame_rate, - session->time_format, - session->sample_rate, - session->frame_rate, - session->frames_per_foot); - } -TRACE("VRender::insert_timecode 60") - -//printf("re position %i position %i\n", -// renderengine->vrender->current_position, position); -//printf("SRC %s TC %s\n", srctc, etc); - - /* Insert the timecode data onto the input frame */ - - vrender->overlayer->overlay(output, input, - input->x, input->y, input->width, input->height, - output->x, output->y, output->width, output->height, - 1, TRANSFER_REPLACE, - renderengine->edl->session->interpolation_type); - delete(input); -UNTRACE -#endif - return 0; -} - int VRender::get_colormodel(VEdit *playable_edit, int use_vconsole, int use_brender) { @@ -362,8 +267,8 @@ int VRender::get_colormodel(VEdit *playable_edit, current_position, renderengine->command->get_direction()); } - - if(asset) +// ffmpeg files are side effected by color_model, affects colorspace,color_range + if( asset && asset->format != FILE_FFMPEG ) { file = renderengine->get_vcache()->check_out(asset, renderengine->get_edl()); @@ -396,7 +301,7 @@ void VRender::run() // before we start dropping. int64_t current_sample, start_sample, end_sample; // Absolute counts. int64_t skip_countdown = VRENDER_THRESHOLD; // frames remaining until drop - int64_t delay_countdown = VRENDER_THRESHOLD; // Frames remaining until delay + int64_t delay_countdown = 0; // Frames remaining until delay // Number of frames before next reconfigure int64_t current_input_length; // Number of frames to skip. @@ -449,11 +354,11 @@ void VRender::run() current_sample = (int64_t)(renderengine->sync_position() * renderengine->command->get_speed()); // latest sample at which the frame can be shown. - end_sample = Units::tosamples(session_frame, + end_sample = Units::tosamples(session_frame + 1, renderengine->get_edl()->session->sample_rate, renderengine->get_edl()->session->frame_rate); // earliest sample by which the frame needs to be shown. - start_sample = Units::tosamples(session_frame - 1, + start_sample = Units::tosamples(session_frame, renderengine->get_edl()->session->sample_rate, renderengine->get_edl()->session->frame_rate);