shshankjain / webm

Automatically exported from code.google.com/p/webm
0 stars 0 forks source link

Features not tested by the test suite #151

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
The test suite should ideally cover all codepaths in a decoder.

Stuff I've found not to be tested:

1. ref_frame_sign_bias of 1, and by extension, any situation where mv_bias 
modifies the motion vector.
http://samples.mplayerhq.hu/fate-suite/vp8/sintel-signbias.ivf is an example of 
this.

2. Refresh golden with altref and altref with golden, i.e. the values read for 
the first 4 elements section 9.7 are 1,1,2,2. Not terribly important, but 
noting here so it doesn't get lost.

Original issue reported on code.google.com by lesse...@gmail.com on 25 Jul 2010 at 7:02

GoogleCodeExporter commented 9 years ago
The lack of test vectors for altref and golden refresh appear to be leading to 
diverging implementations already.

ffvp8:

    // check if golden and altref are swapped
    if (s->update_altref == VP56_FRAME_GOLDEN &&
        s->update_golden == VP56_FRAME_GOLDEN2)
        FFSWAP(AVFrame *, s->framep[VP56_FRAME_GOLDEN], s->framep[VP56_FRAME_GOLDEN2]);
    else {
        if (s->update_altref != VP56_FRAME_NONE)
            s->framep[VP56_FRAME_GOLDEN2] = s->framep[s->update_altref];

        if (s->update_golden != VP56_FRAME_NONE)
            s->framep[VP56_FRAME_GOLDEN] = s->framep[s->update_golden];
    }

This looks like swapping goldref and altref is supported.

libvpx:

    if (cm->copy_buffer_to_arf)
    {
        int new_fb = 0;

        if (cm->copy_buffer_to_arf == 1)
            new_fb = fb_to_update_with;
        else if (cm->copy_buffer_to_arf == 2)
            new_fb = cm->gld_fb_idx;             // (1)
        else
            err = -1;

        ref_cnt_fb (cm->fb_idx_ref_cnt, &cm->alt_fb_idx, new_fb);
    }

    if (cm->copy_buffer_to_gf)
    {
        int new_fb = 0;

        if (cm->copy_buffer_to_gf == 1)
            new_fb = fb_to_update_with;
        else if (cm->copy_buffer_to_gf == 2)
            new_fb = cm->alt_fb_idx;              // (2)
        else
            err = -1;

        ref_cnt_fb (cm->fb_idx_ref_cnt, &cm->gld_fb_idx, new_fb);
    }

This looks like e.g. cm->alt_fb_idx can be set to cm->gld_fb_idx (line (1)), 
then cm->gld_fb_idx can be set to cm->alt_fb_idx (line (2)) (which was set to 
gld_fb_idx already). This would lead to both buffers having the same content, 
which smells like a libvpx bug.

Test vectors would be really helpful there.

Original comment by maikmer...@googlemail.com on 27 Jul 2010 at 9:42

GoogleCodeExporter commented 9 years ago
Note that issue 146 was raised to address the incomplete specification on 
buffer swapping.
http://code.google.com/p/webm/issues/detail?id=146

Original comment by frkoe...@google.com on 27 Jul 2010 at 12:51

GoogleCodeExporter commented 9 years ago

Original comment by iss...@webmproject.org on 16 Mar 2011 at 2:51

GoogleCodeExporter commented 9 years ago

Original comment by johannkoenig@google.com on 24 Mar 2011 at 2:32

GoogleCodeExporter commented 9 years ago

Original comment by albe...@google.com on 2 Feb 2012 at 6:54

GoogleCodeExporter commented 9 years ago

Original comment by albe...@google.com on 8 Mar 2012 at 12:08

GoogleCodeExporter commented 9 years ago

Original comment by albe...@google.com on 8 Mar 2012 at 12:26

GoogleCodeExporter commented 9 years ago

Original comment by johannkoenig@google.com on 6 Nov 2014 at 1:38