>>
>> Does the Dirac decoder compile standalone?
>
> It should, I'll follow the checklist in webpage carefully.
It compiles but when configured with arguments --disable-everything
--enable-decoder=dirac --enable-demuxer=dirac the drc files aren't
opened
./avconv -formats | grep dirac
avconv version v9_beta2-360-g51fa974, Copyright (c) 2000-2012 the
Libav developers
built on Nov 27 2012 23:43:15 with gcc 4.7.2 (GCC)
DE dirac raw Dirac
./avconv -codecs | grep dirac
avconv version v9_beta2-360-g51fa974, Copyright (c) 2000-2012 the
Libav developers
built on Nov 27 2012 23:43:15 with gcc 4.7.2 (GCC)
D.V.LS dirac Dirac
./avprobe ../TESTS/SAMPLESDIRAC/vts.10dB.drc
avprobe version v9_beta2-360-g51fa974, Copyright (c) 2007-2012 the
Libav developers
built on Nov 27 2012 23:43:15 with gcc 4.7.2 (GCC)
../TESTS/SAMPLESDIRAC/vts.10dB.drc: No such file or directory
I really can't imagine what I'm missing in the configure to be able to
feed dirac.
>
>>
>> BTW, have you benchmarked our decoder against libdirac or libschroedinger?
>>
>
> No. But libschroedinger is faster and libdirac is considered as not
> maintained (I don't use it at all). I have some code that isn't in
> this patch with some asm enhancements made by David, then this version
> should be faster.
I have done some benchmarking using avconv -benchmark option using as
a reference libschroedinger 1.0.11-1. The results are quite promising.
Following you can find some of them.
--- vts.40dB.drc ---
Decoding with libschroedinger
bench: utime=0.100s maxrss=16088kB
Decoding with dirac
bench: utime=0.070s maxrss=6416kB
Finished testing vts.40dB.drc
--- vts.CBR-2Mb.drc ---
Decoding with libschroedinger
bench: utime=0.110s maxrss=15432kB
Decoding with dirac
bench: utime=0.073s maxrss=6408kB
Finished testing vts.CBR-2Mb.drc
--- vts.inter-wavelet-6.drc ---
Decoding with libschroedinger
bench: utime=0.100s maxrss=17056kB
Decoding with dirac
bench: utime=0.070s maxrss=6412kB
Finished testing vts.inter-wavelet-6.drc
--- vts.intra-only.drc ---
Decoding with libschroedinger
bench: utime=0.087s maxrss=11904kB
Decoding with dirac
bench: utime=0.063s maxrss=5624kB
Finished testing vts.intra-only.drc
--- vts.intra-wavelet-6.drc ---
Decoding with libschroedinger
bench: utime=0.127s maxrss=12736kB
Decoding with dirac
bench: utime=0.070s maxrss=5620kB
Finished testing vts.intra-wavelet-6.drc
--- vts.LD-8Mb.drc ---
Decoding with libschroedinger
bench: utime=0.070s maxrss=12812kB
Decoding with dirac
bench: utime=0.043s maxrss=5408kB
Finished testing vts.LD-8Mb.drc
--- vts.lossless.drc ---
Decoding with libschroedinger
bench: utime=0.110s maxrss=13416kB
Decoding with dirac
bench: utime=0.057s maxrss=6416kB
Finished testing vts.lossless.drc
--- vts.profile-vc2-low-delay.drc ---
Decoding with libschroedinger
bench: utime=0.063s maxrss=11380kB
Decoding with dirac
bench: utime=0.043s maxrss=5648kB
Finished testing vts.profile-vc2-low-delay.drc
--- vts.profile-vc2-main.drc ---
Decoding with libschroedinger
bench: utime=0.083s maxrss=11320kB
Decoding with dirac
bench: utime=0.060s maxrss=5624kB
Finished testing vts.profile-vc2-main.drc
--- vts.profile-vc2-main-lossless.drc ---
Decoding with libschroedinger
bench: utime=0.097s maxrss=11568kB
Decoding with dirac
bench: utime=0.063s maxrss=5628kB
Finished testing vts.profile-vc2-main-lossless.drc
--- vts.profile-vc2-simple.drc ---
Decoding with libschroedinger
bench: utime=0.063s maxrss=11924kB
Decoding with dirac
bench: utime=0.030s maxrss=5612kB
Finished testing vts.profile-vc2-simple.drc
--- vts.profile-vc2-simple-lossless.drc ---
Decoding with libschroedinger
bench: utime=0.037s maxrss=12584kB
Decoding with dirac
bench: utime=0.017s maxrss=5368kB
Finished testing vts.profile-vc2-simple-lossless.drc
The machine is a i7-3612qm with 4GB ram running arch64 Linux version
3.6.6-1-ARCH
The vc2 ones are diracpro, I point it out as there is some interest in
the irc channel for this precise part of the codec.
>
>>> +static int dirac_unpack_prediction_parameters(DiracContext *s)
>>> +{
>>> + if (idx == 0) {
>>> + s->plane[0].xblen = svq3_get_ue_golomb(gb);
>>> + s->plane[0].yblen = svq3_get_ue_golomb(gb);
>>> + s->plane[0].xbsep = svq3_get_ue_golomb(gb);
>>> + s->plane[0].ybsep = svq3_get_ue_golomb(gb);
>>
>> unrelated: I keep wondering why this function has a "svq3_" prefix.
>
> I'll try to check this on the standard and answer soon =)
I have checked on the standard of dirac and found nothing in relation
to svq3. The reason is imho that the Unsigned interleaved exp-Golomb
codes from dirac are equally/equivalently calculated as
svq3_get_ue_golomb and thus code is reused from golomb.h . On the
other hand there is an if else inside that might be a candidate to
separate into functions if the else path is only used by dirac.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel