X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpluginfclient.C;h=32c3f4aae9846aa4ac76b8759fd6c4eb536260e7;hb=17304a9fc042d480cca91f04ace7985f98fa28d8;hp=486d73195d0c4605f055638f1aab9ec7adfa24f1;hpb=f5725c7e12def18fec49a295dad688652edaa4b3;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/pluginfclient.C b/cinelerra-5.1/cinelerra/pluginfclient.C index 486d7319..32c3f4aa 100644 --- a/cinelerra-5.1/cinelerra/pluginfclient.C +++ b/cinelerra-5.1/cinelerra/pluginfclient.C @@ -845,7 +845,8 @@ static AVRational best_frame_rate(double frame_rate) static const int m1 = 1001*12, m2 = 1000*12; static const int freqs[] = { 40*m1, 48*m1, 50*m1, 60*m1, 80*m1,120*m1, 240*m1, - 24*m2, 30*m2, 60*m2, 12*m2, 15*m2, 48*m2, 0, + 24*m2, 30*m2, 60*m2, 12*m2, 15*m2, 48*m2, 90*m2, + 100*m2, 120*m2, 144*m2, 72*m2, 0, }; double max_err = 1.; int freq, best_freq = 0; @@ -889,7 +890,7 @@ int PluginFVClient::activate(int width, int height, int color_model) char args[BCTEXTLEN]; snprintf(args, sizeof(args), "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d", - width, height, pix_fmt, best_rate.num, best_rate.den, aspect_w, aspect_h); + width, height, pix_fmt, best_rate.den, best_rate.num, aspect_w, aspect_h); ret = avfilter_graph_create_filter(&fsrc, avfilter_get_by_name("buffer"), "in", args, NULL, graph); } @@ -912,14 +913,22 @@ int PluginFAClient::get_inchannels() { AVFilterContext *fctx = ffilt->fctx; AVFilterLink **links = !fctx->nb_inputs ? 0 : fctx->inputs; +#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,24,100) + return !links ? 0 : links[0]->ch_layout.nb_channels; +#else return !links ? 0 : links[0]->channels; +#endif } int PluginFAClient::get_outchannels() { AVFilterContext *fctx = ffilt->fctx; AVFilterLink **links = !fctx->nb_outputs ? 0 : fctx->outputs; +#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,24,100) + return !links ? 0 : links[0]->ch_layout.nb_channels; +#else return !links ? 0 : links[0]->channels; +#endif } int PluginFAClient::process_buffer(int64_t size, Samples **buffer, int64_t start_position, int sample_rate) @@ -947,7 +956,7 @@ int PluginFAClient::process_buffer(int64_t size, Samples **buffer, int64_t start frame->format = AV_SAMPLE_FMT_FLTP; frame->channel_layout = (1<sample_rate = sample_rate; - frame->pts = local_to_edl(filter_position); + frame->pts = filter_position; } int retry = 10; @@ -1048,11 +1057,11 @@ int PluginFVClient::process_buffer(VFrame **frames, int64_t position, double fra ret = av_buffersink_get_frame(fsink, frame); if( ret >= 0 || ret != AVERROR(EAGAIN) ) break; if( !fsrc ) { ret = AVERROR(EIO); break; } - read_frame(vframe, 0, filter_position++, frame_rate, 0); + read_frame(vframe, 0, filter_position, frame_rate, 0); frame->format = pix_fmt; frame->width = width; frame->height = height; - frame->pts = local_to_edl(position); + frame->pts = filter_position++; ret = av_frame_get_buffer(frame, 32); if( ret < 0 ) break; ret = transfer_pixfmt(vframe, frame);