[vlc-devel] [PATCH] sout crop and padd
Udo Richter
udo_richter at gmx.de
Thu Sep 15 00:21:23 CEST 2005
Hi list,
Back in february I suggested a patch to VLC that repaired cropping and
added padding to the transcode features.
(See: http://www.via.ecp.fr/via/ml/vlc-devel/2005-02/msg00117.html )
Time has passed, and again I'll offer an improved version of the patch,
currently ported to 0.8.2.
Overview:
- Repairs cropping which is broken since 0.8.0
- Introduces padding
- Introduces 'canvas' (automatic crop/padd to target size/aspect)
- Add several mod-2 checks for widths and heights.
- Properly handle aspect in all cases
Internals:
- Work is done by ffmpeg img_resample()
- ffmpeg "video filter2" internally extended for crop/padd
- New filter "crop padd" to access this extension while keeping
compatibility.
- Uses i_visible_width / i_visible_height and i_x_offset / i_y_offset
fields of the input/output format to pass cropping and padding information
- Workaround for old libavcodec versions that cannot handle padd
The current diff:
http://www.mathematik.uni-kassel.de/~urichter/temp/croppadd-2-vlc-0.8.2.diff
To explain the canvas feature, take a look at this example:
--sout "#transcode{vcodec=mpgv,vb=3000,acodec=mpga,ab=192,
width=720,height=576,canvas-width=720,canvas-height=576,
canvas-aspect=4:3,fps=25}:std{...}"
What happens: The video source (whatever it is) is scaled up (or down)
to 720x576. Next, aspect correction shrinks the video so it matches the
canvas target. For example, if the source is 16:9, then the result will
now be 720x432. Finally, the video is letterboxed to 720x576 again. With
fps=25 finally, the video is ready for DVD or streaming to TV boxes. All
this uses only one pass of scaling of course.
If width and height is not specified, the canvas feature will try to
display the video 1:1, either by padding up or by cropping down. Using
canvas just horizontally or just vertically works too. Specifying
canvas-aspect=1:1 without canvas-width and canvas-height will produce
square pixel video, as needed for AVI output. There are probably some
more hidden tricks that need to be discovered. ;)
Todo:
- Port to trunk
- Extend "video filter2" directly?
Integrating crop and padd directly into "video filter2" would be nice,
but I guess that requires changes to all other filter2 implementations
and maybe even to filter2 calls. I'm open for suggestions though.
Cheers,
Udo
--
This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://developers.videolan.org/lists.html
More information about the vlc-devel
mailing list