summaryrefslogtreecommitdiffstats
path: root/debian/transcode/transcode-1.1.7/docs/tech/OPTIMIZERS
diff options
context:
space:
mode:
Diffstat (limited to 'debian/transcode/transcode-1.1.7/docs/tech/OPTIMIZERS')
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/OPTIMIZERS145
1 files changed, 145 insertions, 0 deletions
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/OPTIMIZERS b/debian/transcode/transcode-1.1.7/docs/tech/OPTIMIZERS
new file mode 100644
index 00000000..089c57bf
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/OPTIMIZERS
@@ -0,0 +1,145 @@
+You want to improve you programming skills?
+You cannot stand wasted CPU cycles?
+You know how to write good/fast/efficient code?
+Then this might be for you.
+
+Transcode has a lot of filter plugins which are not optimized. Filters
+in transcode usually get a single video frame and do transformations on
+that frame. The filter API is as simple as efficient it is explained in
+great detail in /docs/filter-API.txt with sample code for a dummy
+filter.
+
+All filters in transcode are in the filter/ directory and are mostly a
+single C file. The variety of filters ranges from very simple filters
+-- like filter_invert.c -- to complex stuff like filter_yuvdenoise.c.
+
+The audio filters are per definition less CPU intensive than the video
+filters because they have to deal with less data.
+
+Here is an overview of filters which would be glad about a speedup
+(lexicographical order)
+
+* filter_32detect.c
+ Is a interlace detection plugin. The detection algorithm could be
+ improved as well as the speed.
+
+* filter_aclip.c
+ Audio filter which generate audio clips from source
+
+* filter_astat.c
+ Audio filter which collects statistics about the audio stream.
+
+* filter_cshift.c
+ A chroma-lag shifter. It shifts the color components of the video to
+ the left or right. For RGB mode, the filter converts the data to YUV and
+ back again.
+
+* filter_dnr.c
+ A denoiser with no SIMD optimizations It uses a different algorithm
+ than the yuvdenoiser.
+
+* filter_fields.c
+ A very efficient and well written filter.
+
+* filter_invert.c
+ Simple filter which inverts the video.
+
+* filter_logo.c
+ renders a logo into the video stream.
+
+* filter_logoaway.c
+ removes a logo from the video stream.
+
+* filter_mask.c
+ Filter through a rectangular mask, everything outside the masked will
+ be blacked out.
+
+* filter_normalize.c
+ Normalizes the audio stream. The filter is based on mplayers volnorm
+ filter.
+
+* filter_resample.c
+ Resamples to audio stream doing conversions from eg. 48000Hz to
+ 44100Hz. The code is based on code from the sox application.
+
+* filter_smartdeinter.c
+ This filter provides a smart, motion-based deinterlacing
+ capability. In static picture areas, interlacing artifacts do
+ not appear, so data from both fields is used to provide full
+ detail. In moving areas, deinterlacing is performed.
+
+ The filter was written for VirtualDub by Donald Graft. It produces
+ very good results. It was written with the RGB colorspace in mind. To
+ use it in transcode with YUV mode enabled a yuv2rgb and rgb2yuv
+ wrapper has been built around this filter. It would speed up a lot, if
+ rewritten for native YUV mode. There are probably other areas in this
+ filter which are a candidate for a speedup.
+
+* filter_smooth.c
+ Is a single-frame smoothing plugin. It is very CPU intensive
+
+* filter_testframe.c
+ It generates stream of testframes. Optimizing this filter is probably
+ not worth it but it is a good testbed for generating problematic
+ testframes.
+
+* filter_xsharpen.c
+ This filter performs a subtle but useful sharpening effect. The
+ result is a sharpening effect that not only avoids amplifying
+ noise, but also tends to reduce it. A welcome side effect is that
+ files processed with this filter tend to compress to smaller files.
+
+ The filter was written for VirtualDub by Donald Graft. It was written
+ with the RGB colorspace in mind. To be useful with transcodes YUV
+ mode, the filter has been partially rewritten.
+
+* filter_yuvdenoise.c
+ This filter comes from the mjpeg tools and denoises the video by doing
+ a motion analyse. There are some SIMD parts in this filter but it could
+ be much faster.
+
+* filter_yuvmedian.c
+ This filter comes from the mjpeg tools and smoothes the video by
+ appying a median algorithm. It is CPU intensive.
+
+
+/* ****************************************************************** */
+
+Colorspaces
+In transcode, the filter gets a char* which points to the raw video
+data. Only two colorspaces are possible in transcode.
+
+* RGB
+This is actually RGB24 meaning there are 24 bits or 3 Bytes available
+for each pixel. It is a packed format, each component is 1 byte large.
+The size of the image is Width*Height*3.
+The memory layout is
+
+ ___________________________________
+|__R__|__G__|__B__|__R__|__G__|__B__| ....
+ \_______________/ \_______________/
+ Pixel(0,0) Pixel(1,0)
+
+* YUV (4:2:0)
+This is actually YUV420P (I420) with 1+1/2 byte per pixel. It is a planar
+format meaning first all Y data then Cb and then Cr.
+The memory layout is
+
+ __________________ ... ______ ... _____
+|__Y__|__Y__|__Y__| ... |__Cb_| ... |__Cr_| ....
+ \___/ \___/ \___/
+ (0,0) (1,0) (2,0)
+
+There are Width*Height Y bytes, Width*Height/4 Cb bytes and
+Width*Height/4 Cr bytes. The size of the image is Width*Height*3/2.
+
+
+* YUV (4:2:2)
+This is YUV422 8-bit planar, with 2 bytes per pixel. The layout is the
+same as for YUV420P, but the Cb and Cr planes are twice as high (double
+vertical resolution).
+
+Size of the image is 2*W*H.
+
+(c) 2003 Tilmann Bitterberg <[email protected]>
+Modified: $Date: 2007-03-21 20:17:10 $