[FFmpeg-devel] [PATCH] QCELP decoder

Michael Niedermayer michaelni
Sat Oct 18 01:30:30 CEST 2008


On Thu, Oct 16, 2008 at 03:38:03PM -0700, Kenan Gillet wrote:
> On Oct 15, 2008, at 3:09 PM, Michael Niedermayer wrote:
> 
> > cOn Tue, Oct 14, 2008 at 06:59:34PM -0700, Kenan Gillet wrote:
[...]
> > [...]
> >> +    case SILENCE:
> >> +        av_log_missing_feature(avctx, "Blank frame", 1);
> >> +    default:
> >> +        q->framerate = I_F_Q;
> >
> > is it intended that SILENCE sets IFQ ?
> 
> The SILENCE handling  is not yet implemented.
> I have no sample to test it on, and was planning to implement it later  
> on.
> Do you want me me to work on it for the next round ?

i guess no, but a //FIXME or more than one may be a good idea to indicate
where something is incomplete


[...]
> > [...]
> >
> >> +    if (q->framerate == I_F_Q) {
> >> +erasure:
> >> +        q->framerate = I_F_Q;
> >> +        q->erasure_count++;
> >> +        decode_scaled_codebook_vector(q, outbuffer);
> >> +        decode_lspf(q, qtzd_lspf);
> >> +        apply_pitch_filters(q, outbuffer);
> >> +    }
> >> +
> >> +    formant_mem = q->formant_mem;
> >> +    for (i = 0; i < 4; i++) {
> >> +        interpolate_lpc(q, qtzd_lspf, lpc, i);
> >> +
> >> +        do_formant(outbuffer + i * 40, lpc, formant_mem);
> >> +
> >> +        // WIP Adaptive postfilter should be here
> >> +
> >> +        formant_mem = outbuffer + i * 40 + 30;
> >> +    }
> >> +    memcpy(q->formant_mem, outbuffer + 150, 10 * sizeof(float));
> >> +
> >
> >> +    if (q->framerate != I_F_Q)
> >> +        q->erasure_count = 0;
> >
> > cant this be a else above?
> 
> it can. done
> 
> 
> >> +
> >> +    for (i = 0; i < 160; i++)
> >> +        outbuffer[i] = av_clipf(outbuffer[i], -8192., 8191.75) /  
> >> 8192.;
> >
> > cant this scale factor be merged into some tables?
> 
> by merging it in qcelp_g12ga and testing on the samples
> from samples.mplayerhq.hu and others:
> 
> I use 'ffmpeg --i sample_file sample_file.wav' to create the output
> I use md5sum to check if the output had changed
>   and run 'tiny_psnr old_file new_file' if it had.
> 
> here are the results:
[...]
> qtaudio-qcelp-problem.3g2: audio mismatchs from previous build
>      stddev:   11.93 PSNR: 26.59 bytes:   208044/   208044
> 
[...]
> zg3dx2d6.3g2: audio mismatchs from previous build
>      stddev:   17.77 PSNR: 23.12 bytes:   486444/   486444
> 
> vidoo_MP4_audio_Qcelp13k.k3g: audio mismatchs from previous build
>      stddev:   10.94 PSNR: 27.34 bytes:   743724/   743724
> 
> 
> does it look reasonable ? is at acceptable?

i think not, question is, why do these differ?
There really should be no difference just from scaling floats differently

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Its not that you shouldnt use gotos but rather that you should write
readable code and code with gotos often but not always is less readable
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20081018/6cec3663/attachment.pgp>



More information about the ffmpeg-devel mailing list