Dan Dennedy [Sun, 26 Sep 2010 22:47:35 +0000 (15:47 -0700)]
Rename variables and properties around luma range for clarity.
Frame property "force_full_luma" controls this and can be set via
producer property "set.force_full_luma." However, it is not really ready
for use until libswscale can respect its full_range parameter in a RGB
to YUV conversion.
Dan Dennedy [Tue, 24 Aug 2010 07:24:25 +0000 (00:24 -0700)]
Get initial skipping of luma scaling to work.
When the avformat producer property skip_luma_scale is set to 1, then we
do not scale the luma on the first YCbCr to RGB conversion. This is only
done once because swscale always downscales luma when converting RGB to
YCbCr, and we need to keep the conversions symmetrical to prevent luma
contraction (loss of contrast).
Dan Dennedy [Tue, 21 Sep 2010 05:21:34 +0000 (22:21 -0700)]
Fix field order correction on cached image.
When the avformat producer is using image caching, the field order is
top-field-first, and the consumer is paused then the field order
correction was applied to the cached image. As a result, when repeating
the image due to being paused, the active image would scroll down the
frame. This fixes it by copying to a new image instead of reusing the
cached image.
Dan Dennedy [Sat, 11 Sep 2010 05:04:44 +0000 (22:04 -0700)]
Base alpha channel on width and height.
Removes scaled_width and scaled_height properties, which were typically
redundant with width and height, but less available. Besides, width and
height better reflect the image attributes to help keep the image and
alpha channel in sync.
Dan Dennedy [Tue, 7 Sep 2010 01:35:50 +0000 (18:35 -0700)]
Fix regression in commit f9dbf1.
Sometimes a frame may not have an alpha channel nor "scaled_width" and
"scaled_height" properties thereby yielding a default alpha with size
0x0. The fix is to add a check for valid alpha size. Also, make the
tractor pass a size for the alpha channel instead of just 0.
Dan Dennedy [Sun, 5 Sep 2010 07:05:08 +0000 (00:05 -0700)]
Fix a regression in the yadif deinterlace filter.
Now that it properly checks if the previous frame progressive after getting its image, when progressive, it was returning the previous frame's image for the current frame!
Dan Dennedy [Fri, 3 Sep 2010 18:37:52 +0000 (11:37 -0700)]
Fix channel alignment in sox filter.
This pointer swapping is somehow breaking the stereo imaging even though
I can not see why now. Anyways, it no longer support multiple effects,
so it does not matter.
Dan Dennedy [Sat, 21 Aug 2010 08:44:49 +0000 (01:44 -0700)]
Enhance luma filter to work with animated filters.
Previously, in a slideshow the luma filter would apply the dissolve or
wipe repeatedly over a slide. For example, with a slide duration of 75
frames and a luma period of 25 (expressed as 24), the wipe occurs 3
times. However, since the slides were static, you did not notice it
until the transition at the beginning of a new slide - when you do want
to see it. However, upon adding an affine filter to animate a smooth
pan/zoom, you do notice the extra repetitions - the slides appear to
blend with one another when they are not transitioning.
This change fixes that with new properties 'cycle' and 'duration'. Cycle
is basically a replacement for 'period' that fixes the semantics to
properly represent a duration. Where you would previously express, for
example, period=24, you now say cycle=25. The 'duration' property
prevents the repeating and expresses that the transition should only
occur within the first N frames of the cycle. See demo/mlt_slideshow2
for an example of using it in conjunction with the affine filter!
Dan Dennedy [Thu, 19 Aug 2010 04:45:02 +0000 (21:45 -0700)]
Fix waveform generation.
It was not obtaining a valid fps. Also, changed rendering to something
more expected - negative as negative and channels stacked.
Also, add a Python binding to this call to return 8-bit grayscale image
as a Python string. Finally, add a Python example.
Dan Dennedy [Mon, 16 Aug 2010 09:09:46 +0000 (02:09 -0700)]
Add a panning filter.
This does a simple left/right balance when channel=-1 (default). When
channel >= 0, you can adjust an individual channel's left/right
position. Whereas the simple balance will not cause one channel to
appear in another channel, the individual channel does. The start/end
properties are floats in the range [-1.0, 1.0]. A start property alone
makes it constant over the duration of the filter. There is some
handling for more than 2 channels by providing front/rear fade and
ganging (balance front and rear together or fade left and right
together).
Dan Dennedy [Mon, 16 Aug 2010 08:58:59 +0000 (01:58 -0700)]
Fix ramping the mix level in mix transition.
Without ramping the same mix level is applied across the samples in the
frame. The result is a stair-stepping effect. With ramping, the mix
levels are actually values _between_ frames and the mix factor gradually
changes from one level to the next across all of the samples in the
frame.
Dan Dennedy [Fri, 13 Aug 2010 05:49:36 +0000 (22:49 -0700)]
Cleanup existing native color space conversions.
This change clarifies that the existing conversions are according to the
ITU 601 standard and scaled to and from full gamut RGB. Also, adjust 2
coefficients according to Charles Poynton's matrices. This does not yet
attempt to make any substantial improvements.
Finally, it replaces the verbose logic and redundancy in the image
conversion routine with a concise function dispatch table.
Dan Dennedy [Mon, 9 Aug 2010 04:10:19 +0000 (21:10 -0700)]
Optimize some deinterlace filter logic.
Prevents YADIF from fetching current frame image if previous frame image
is signalled progressive. Also, tells mlt_service to stop decorating
frame with previous and next frames when producer is determined to be
progressive or deinterlace is not requested.