Just occurred to me that we only announced this release via a blog
post[1] and not on the mailing lists, so:
[1]: http://blog.webmproject.org/2010/10/vp8-codec-sdk-aylesbury-release.html
Aylesbury is the first named release of libvpx (v0.9.5). We'll be
making named releases quarterly. If we need to do a bugfix release, it
will be based off the last named release and will not incorporate the
other improvements we've made in our master branch. Here's the
CHANGELOG for Aylesbury:
2010-10-28 v0.9.5 "Aylesbury"
Our first named release, focused on a faster decoder, and a better encoder.
- Upgrading:
This release incorporates backwards-incompatible changes to the
ivfenc and ivfdec tools. These tools are now called vpxenc and vpxdec.
vpxdec
* the -q (quiet) option has been removed, and replaced with
-v (verbose). the output is quiet by default. Use -v to see
the version number of the binary.
* The default behavior is now to write output to a single file
instead of individual frames. The -y option has been removed.
Y4M output is the default.
* For raw I420/YV12 output instead of Y4M, the --i420 or --yv12
options must be specified.
$ ivfdec -o OUTPUT INPUT
$ vpxdec --i420 -o OUTPUT INPUT
* If an output file is not specified, the default is to write
Y4M to stdout. This makes piping more natural.
$ ivfdec -y -o - INPUT | ...
$ vpxdec INPUT | ...
* The output file has additional flexibility for formatting the
filename. It supports escape characters for constructing a
filename from the width, height, and sequence number. This
replaces the -p option. To get the equivalent:
$ ivfdec -p frame INPUT
$ vpxdec --i420 -o frame-%wx%h-%4.i420 INPUT
vpxenc
* The output file must be specified with -o, rather than as the
last argument.
$ ivfenc <options> INPUT OUTPUT
$ vpxenc <options> -o OUTPUT INPUT
* The output defaults to webm. To get IVF output, use the --ivf
option.
$ ivfenc <options> INPUT OUTPUT.ivf
$ vpxenc <options> -o OUTPUT.ivf --ivf INPUT
- Enhancements:
ivfenc and ivfdec have been renamed to vpxenc, vpxdec.
vpxdec supports .webm input
vpxdec writes .y4m by default
vpxenc writes .webm output by default
vpxenc --psnr now shows the average/overall PSNR at the end
ARM platforms now support runtime cpu detection
vpxdec visualizations added for motion vectors, block modes, references
vpxdec now silent by default
vpxdec --progress shows frame-by-frame timing information
vpxenc supports the distinction between --fps and --timebase
NASM is now a supported assembler
configure: enable PIC for shared libs by default
configure: add --enable-small
configure: support for ppc32-linux-gcc
configure: support for sparc-solaris-gcc
- Bugs:
Improve handling of invalid frames
Fix valgrind errors in the NEON loop filters.
Fix loopfilter delta zero transitions
Fix valgrind errors in vp8_sixtap_predict8x4_armv6().
Build fixes for darwin-icc
- Speed:
20-40% (average 28%) improvement in libvpx decoder speed,
including:
Rewrite vp8_short_walsh4x4_sse2()
Optimizations on the loopfilters.
Miscellaneous improvements for Atom
Add 4-tap version of 2nd-pass ARMv6 MC filter.
Improved multithread utilization
Better instruction choices on x86
reorder data to use wider instructions
Update NEON wide idcts
Make block access to frame buffer sequential
Improved subset block search
Bilinear subpixel optimizations for ssse3.
Decrease memory footprint
Encoder speed improvements (percentage gain not measured):
Skip unnecessary search of identical frames
Add SSE2 subtract functions
Improve bounds checking in vp8_diamond_search_sadx4()
Added vp8_fast_quantize_b_sse2
- Quality:
Over 7% overall PSNR improvement (6.3% SSIM) in "best" quality
encoding mode, and up to 60% improvement on very noisy, still
or slow moving source video
Motion compensated temporal filter for Alt-Ref Noise Reduction
Improved use of trellis quantization on 2nd order Y blocks
Tune effect of motion on KF/GF boost in two pass
Allow coefficient optimization for good quality speed 0.
Improved control of active min quantizer for two pass.
Enable ARFs for non-lagged compress
> I noticed it only uses one processor. http://flic.kr/p/8QttG9 I did
> try --cpu-used=4 and it didn't seem to make a difference. :( Have I
> mis-understood? Do I need to use all my processors in some sort of
> `make -j4` way? http://natalian.org/archives/2010/01/08/Parallelized_processes/
You need to use the --threads option or just -t n where 'n' is the
number of maximum threads
Nothing planned. Feel free to file an enhancement request at
http://code.google.com/p/webm/issues. I suspect this is taking extra
long because vpxenc doesn't have the correct resolution for your file.
> I noticed it only uses one processor. http://flic.kr/p/8QttG9 I did
> try --cpu-used=4 and it didn't seem to make a difference. :( Have I
> mis-understood? Do I need to use all my processors in some sort of
> `make -j4` way? http://natalian.org/archives/2010/01/08/Parallelized_processes/
>
You want the --threads option (-t for short).
> Is it possible to Ctrl+C a encoding and then run the previous command
> to resume a long encoding process? Like the behaviour of rsync or
> `wget -c`
>
No, not possible at this time.
>
> Oh incidentally output.webm, I uploaded to http://webm.naovi.com/done.webm
> and I can't play it back. :( `mplayer -demuxer rawvideo -rawvideo
> w=1920:h=1088 output.yuv` does work on the INPUT however.
>
I can play that video as a 320x240 webm file (the vpxenc default for
raw video), though the content is wrong because you didn't tell vpxenc
the size of the raw video. I strongly recommend changing your workflow
to use yuv4mpegpipe format instead of rawvideo, as this will propagate
the correct resolutions for you automatically. Note that you can write
the yuv4mpegpipe data to a file and consume it the same way you're
using the .yuv file now, it doesn't have to be used in a pipe despite
the name.
But 320x240 is the resolution of my favorite raw test clip! :)
Sounds good to me.. I'll put a patch together now.
--
You received this message because you are subscribed to the Google Groups "WebM Discussion" group.
To post to this group, send email to webm-d...@webmproject.org.
To unsubscribe from this group, send email to webm-discuss...@webmproject.org.
For more options, visit this group at http://groups.google.com/a/webmproject.org/group/webm-discuss/?hl=en.
--
You received this message because you are subscribed to the Google Groups "WebM Discussion" group.
To post to this group, send email to webm-d...@webmproject.org.
To unsubscribe from this group, send email to webm-discuss...@webmproject.org.
For more options, visit this group at http://groups.google.com/a/webmproject.org/group/webm-discuss/?hl=en.
Correct. You need to transcode the audio separately and then "remux"
the video and audio into a single file.
> And I was a bit disappointed by the default quality of the video. I
> guess I need to play with the bitrate. Is there a way to interrogate
> the file to see how it was encoded?
>
You can run vpxenc with the -v option to see the values for (almost)
all of the parameters. In this case you'll find that the default
bitrate is 256kbit, which won't give you very good output for 1080p
source.
> Alarmingly I can't playback the video http://webm.naovi.com/video.html
> in Chrome 8.0.552.23 or Opera 10.63.6450.
>
Looking at that page, it appears to be trying to play 'sam.webvm',
which doesn't exist. Changing the html to play sam.webm played ok.
I think he meant to ask if there is a way to look at an existing
webm/vp8 encoded file and see how it was encoded. I would like to know
this too, because when I use ffmpeg to encode a file using libvpx, I
use the preset:
g=120
level=216
profile=0
qmax=42
qmin=10
rc_buf_aggressivity=0.95
vb=2M
And it gives me a decently small file with very high quality video.
But I choose to use vpxenc because it's much faster than ffmpeg's implementation
But I can't get vpxenc to encode with the same quality without
creating a ridiculously huge file. I've tried "translating" those
options in the preset for vpxenc, but still can't achieve the same
quality. Using the "best vbr" encoding example in the vpxenc
documentation doesn't give me the same quality either. There must be
something missing.. Need to see what other options I need in vpxenc
Ahh, I understand now. No, you can't get that data from the encoded
file unfortunately.
> I would like to know
> this too, because when I use ffmpeg to encode a file using libvpx, I
> use the preset:
> g=120
> level=216
> profile=0
> qmax=42
> qmin=10
> rc_buf_aggressivity=0.95
> vb=2M
>
> And it gives me a decently small file with very high quality video.
> But I choose to use vpxenc because it's much faster than ffmpeg's implementation
>
> But I can't get vpxenc to encode with the same quality without
> creating a ridiculously huge file. I've tried "translating" those
> options in the preset for vpxenc, but still can't achieve the same
> quality. Using the "best vbr" encoding example in the vpxenc
> documentation doesn't give me the same quality either. There must be
> something missing.. Need to see what other options I need in vpxenc
>
There's code in ffmpeg to show the parameters it's passing to libvpx.
That should be fairly straightforward to convert to vpxenc command
line. Try increasing the verbosity to see that output. James Zern may
be able to give a little more info here too.
How may I do that? The only thing relating to verbosity is -loglevel
verbose, but that doesn't really tell me anything other than the flags
libvpx was compiled with =\.
>> > And it gives me a decently small file with very high quality video.
>> > But I choose to use vpxenc because it's much faster than ffmpeg's implementation
>> >
>
Odd given that the encoder used is libvpx. The only additional
overhead should be the source decode and any audio encoding being
done.
>> > But I can't get vpxenc to encode with the same quality without
>> > creating a ridiculously huge file. I've tried "translating" those
>> > options in the preset for vpxenc, but still can't achieve the same
>> > quality. Using the "best vbr" encoding example in the vpxenc
>> > documentation doesn't give me the same quality either. There must be
>> > something missing.. Need to see what other options I need in vpxenc
>> >
>>
>> There's code in ffmpeg to show the parameters it's passing to libvpx.
>> That should be fairly straightforward to convert to vpxenc command
>> line. Try increasing the verbosity to see that output. James Zern may
>> be able to give a little more info here too.
>>
>
> How may I do that? The only thing relating to verbosity is -loglevel
> verbose, but that doesn't really tell me anything other than the flags
> libvpx was compiled with =\.
>
At loglevel debug (48) or higher, libvpxenc will print out the SDK
parameters. The first set will be the library defaults followed by the
updated values based on the ffmpeg parameter mapping.
You can do that with mkvmerge (which also has a GUI version), ffmpeg
or GStreamer.
These were two pass encodes
mplayer -ao null -ac dummy -vo yuv4mpeg:file=/dev/stdout -really-quiet
${1} | vpxenc - -o hbcv_ivf --pass=1 -p 2 --fpf=firstpass_ivf --best
--cpu-used=0 -t 1 --ivf \
--auto-alt-ref=1 --lag-in-frames=25 \
--psnr --verbose --static-thresh=0 --sharpness=0 --token-parts=0 \
--min-q=0 --max-q=41 --target-bitrate=2000 \
&& \
mplayer -ao null -ac dummy -vo yuv4mpeg:file=/dev/stdout -really-quiet
${1} | vpxenc - -o hbcv_ivf --pass=2 -p 2 --fpf=firstpass_ivf --best
--cpu-used=0 -t 1 --ivf \
--auto-alt-ref=1 --lag-in-frames=25 \
--psnr --verbose --static-thresh=0 --sharpness=0 --token-parts=0 \
--min-q=0 --max-q=41 --target-bitrate=2000 \
# Encode the audio:
$ ffmpeg -i sintel-1280-stereo.mp4 -vn -acodec libvorbis audio.ogg
# Encode the video:
$ ffmpeg -i sintel-1280-stereo.mp4 -an -f yuv4mpegpipe - 2>/dev/null |
vpxenc --target-bitrate=2000 -o video.webm -
# Mux the audio and video:
$ ffmpeg -i audio.ogg -i video.webm -acodec copy -vcodec copy -f webm
sintel-1280-stereo.webm
Also, why is the number of threads = cpu's - 1?
I have a dual core, and it seems to be a waste with just 1 thread,
although I seemed to have a higher psnr using only one thread in a
simple test I ran.
> To post to this group, send email to webm-d...@webmproject.org.
> To unsubscribe from this group, send email to webm-discuss...@webmproject.org.