Dan Dennedy [Sun, 29 Aug 2010 06:10:34 +0000 (23:10 -0700)]
Add an automatic profile feature to melt.
Here are the main use cases this feature provides:
- Given a regular (non-mlt-xml) media file, melt reads the media
attributes and generates an equivalent MLT profile. This makes it easier
to transcode without changing or specifying resolution, aspect, and
framerate.
- Given a MLT XML file containing a profile attribute or element, melt
loads the specified profile. A composition typically contains profile-
without you having to remember.
- Given a MLT XML containing a profile but also specifying a -profile
option, melt automatically uses the 'consumer' producer with the
requested profiles. This is similar to the above case, but when
explicitly choosing a profile different than the composition one should
use the consumer producer. This just makes melt smarter and more
automatic.
Dan Dennedy [Sun, 29 Aug 2010 05:59:35 +0000 (22:59 -0700)]
Add immutable meta.media-prefixed properties.
I am deprecating real_width, real_height, and source_fps in favor of new
properties prefixed by "meta.media." These are different than the
"meta.media.N.stream" and "meta.media.N.codec" properties because they
represent the selected tracks as well as some interpretation of the raw
AVFormat and AVCodec attributes in addition to reflecting "force_"
overrides.
There is still many changes to make throughout to full remove real_width
and real_height. This change just adds what melt's new auto-profile
feature needs for most use cases.
Handle --avformat-svn-version=0.5.
Fix building without swscale.
Fix compiling new colorspace stuff against FFmpeg <= v0.5.
FFmpeg libs are increasing; only support contemporary header layout.
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.