• Connor Worley's avatar
    lavc/dxv: align to 4x4 blocks instead of 16x16 · d5aaed9d
    Connor Worley authored
    The previous assumption that DXV needs to be aligned to 16x16 was
    erroneous. 4x4 works just as well, and FATE decoder tests pass for all
    texture formats.
    
    On the encoder side, we should reject input that isn't 4x4 aligned,
    like the HAP encoder does, and stop aligning to 16x16. This both solves
    the uninitialized reads causing current FATE tests to fail and produces
    smaller encoded outputs.
    
    With regard to correctness, I've checked the decoding path by encoding a
    real-world sample with git master, and decoding it with
      ffmpeg -i dxt1-master.mov -c:v rawvideo -f framecrc -
    The results are exactly the same between master and this patch.
    
    On the encoding side, I've encoded a real-world sample with both master
    and this patch, and decoded both versions with
      ffmpeg -i dxt1-{master,patch}.mov -c:v rawvideo -f framecrc -
    Under this patch, results for both inputs are exactly the same.
    
    In other words, the extra padding gained by 16x16 alignment over 4x4
    alignment has no impact on decoded video.
    Signed-off-by: 's avatarConnor Worley <connorbworley@gmail.com>
    Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
    d5aaed9d
dxv3enc-dxt1 144 Bytes