On 4/15/20, Mark Filipak <[email protected]> wrote: > On 04/15/2020 05:00 AM, Paul B Mahol wrote: >> On 4/15/20, Mark Filipak <[email protected]> wrote: >>> On 04/15/2020 04:25 AM, Paul B Mahol wrote: >>>> On 4/15/20, Mark Filipak <[email protected]> wrote: >>>>> Request for bug confirmation is included. >>>>> >>>>> Correction: I had datascope in #2 just 1 time. I don't know how it got >>>>> into >>>>> the original post twice. >>>>> Sorry. - M. >>>>> >>>>> On 04/14/2020 10:24 AM, Paul B Mahol wrote: >>>>>> On 4/14/20, Mark Filipak <[email protected]> wrote: >>>>>>> In the command line below, >>>>>>> I will eventually insert a screen maker --+ >>>>>>> ¦ >>>>>>> separatefields,scale=height=2*in_h:sws_flags=neighbor,--HERE--,tblend=normal[D] >>>>>>> >>>>>>> but first, I need to persuade 'tblend' to accept the 2 frames made by >>>>>>> 'separatefields' (and scaled >>>>>>> by 'scale'). >>>>>>> But as you can see in the next section (extracted from the log), >>>>>>> though >>>>>>> the >>>>>>> 'height=2*in_h' >>>>>>> directive works (i.e., the 1920x540 frames from 'separatefields' are >>>>>>> scaled >>>>>>> to 1920x1080), ffmpeg is >>>>>>> not happy. Is it because the SARs don't match? How can I overcome >>>>>>> that? >>>>>>> Thanks! >>>>>> >>>>>> Insert setsar=1 after scale? >>>>> >>>>> Thank you, Paul. It works. I apologize for not finding that solution on >>>>> my >>>>> own ...how embarrassing. >>>>> >>>>> Next problem: 'tblend' appears to be malfunctioning. >>>>> >>>>> "The tblend (time blend) filter takes two consecutive frames from one >>>>> single >>>>> stream, and outputs the >>>>> result obtained by blending the new frame on top of the old frame." >>>>> >>>>> #1 - This works as expected: >>>>> ffmpeg -i IN -filter_complex "telecine=pattern=5, split[A][B], >>>>> [A]select='not(eq(mod(n+1\,5)\,3))'[C], [B]select='eq(mod(n+1\,5)\,3)', >>>>> datascope=size=1920x1080:x=45:y=340:mode=color2[D], [C][D]interleave" >>>>> OUT >>>>> >>>>> #2 - This malfunctions: >>>>> ffmpeg -i IN -filter_complex "telecine=pattern=5, split[A][B], >>>>> [A]select='not(eq(mod(n+1\,5)\,3))'[C], [B]select='eq(mod(n+1\,5)\,3)', >>>>> separatefields, >>>>> scale=height=2*in_h:sws_flags=neighbor, setsar=1, tblend, >>>>> datascope=size=1920x1080:x=45:y=340:mode=color2, [C][D]interleave" OUT >>>>> >>>>> #1 brings up datascope in frames (n, zero-based): 2 7 12 17 etc., as >>>>> expected. >>>>> #2 brings up datascope in frames (n, zero-based): 4 7 10 13 etc. >>>>> >>>>> Another clue is: >>>>> #1 OUT has 598 frames. >>>>> #2 OUT has 716 frames. >>>>> >>>>> Would someone who has the latest nightly build kindly confirm this. I >>>>> can >>>>> supply the test video -- >>>>> contact me off-list. >>>> >>>> You still can not read documentation? Why? >>>> >>>> interleave filter simply picks frames from several streams. >>>> This is obviously explained in documentation. >>>> tblend filter blend successive frames, this is obviously different >>>> from interlace filter as that will not drop any frame like interlace >>>> does. >>> >>> Look at my command lines again. Here, I'll give you filtergraphs: >>> >>> #1 >>> telecine -> split -> select (n+1%5!=3) ----------------------------> >>> interleave >>> -> select (n+1%5==3) ----------------------------> >>> 598 frames (correct) >>> >>> #2 >>> telecine -> split -> select (n+1%5!=3) ----------------------------> >>> interleave >>> -> select (n+1%5==3) -> separatefields...tblend -> >>> 716 frames (malfunction) >>> >>> 598*4/5 = 478 frames (upper 'select') >>> 598*1/5 = 119 frames (lower 'select') >>> 119*2 = 238 frames (output of 'separatefields') >>> 238/2 = 119 frames (what output of 'tblend' is supposed to be) >>> 238 frames (what output of 'tblend' actually is) >>> 478+238 = 716 frames (output of 'interleave' showing that 'tblend' >>> malfunctions) >>> >> >> tblend works fine, you obviously do not know what you doing. >> >> Given frames: A B C D E F G: >> >> tblend gives this output: AB BC CD DE EF FG, so original number of >> frames in input minus one. > > Are you even looking at the command lines? > > #2 > telecine -> split -> select (n+1%5!=3) ----------------------------> > interleave > -> select (n+1%5==3) -> separatefields...tblend -> > > 'telecine' input (IN) is A B C... > 'telecine' output is A A AB B B ... (modulo 5) ...frame 2 is combed > upper 'select' output is A A __ B B (n+1%5!=3) ...progressive > frames > lower 'select' output is _ _ AB _ _ (n+1%5==3) ...combed frame > 'separatefields' output is AB AB ...2 frames (1/2 > height) > 'scale=height=2*in_h' output is AB AB ...2 frames (full > height) > 'tblend' output is supposed to be AB ...1 frame > OUT is supposed to be A A AB B B ...598 frames > OUT is A A AB AB B B ...716 frames > Conclusion: 'tblend' is outputting 2 frames instead of 1 frame.
And that is completely correct for filter to do. If you not happy with that, write own code instead. > > Of course, since I can't read and I'm always wrong... > > _______________________________________________ > ffmpeg-user mailing list > [email protected] > https://ffmpeg.org/mailman/listinfo/ffmpeg-user > > To unsubscribe, visit link above, or email > [email protected] with subject "unsubscribe". _______________________________________________ ffmpeg-user mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
