>>
>> 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

Reply via email to