• Pawel Osciak's avatar
    [media] s5p-mfc: Don't try to resubmit VP8 bitstream buffer for decode · f49f3ed5
    Pawel Osciak authored
    Currently, for formats that are not H264, MFC driver will check
    the consumed stream size returned by the firmware and, based on that,
    will try to decide whether the bitstream buffer contained more than
    one frame. If the size of the buffer is larger than the consumed
    stream, it assumes that there are more frames in the buffer and that the
    buffer should be resubmitted for decode. This rarely works though and
    actually introduces problems, because:
    
    - v7 firmware will always return consumed stream size equal to whatever
    the driver passed to it when running decode (which is the size of the whole
    buffer), which means we will never try to resubmit, because the firmware
    will always tell us that it consumed all the data we passed to it;
    
    - v6 firmware will return the number of consumed bytes, but will not
    include the padding ("stuffing") bytes that are allowed after the frame
    in VP8. Since there is no way of figuring out how many of those bytes
    follow the frame without getting the frame size from IVF headers (or
    somewhere else, but not from the stream itself), the driver tries to guess that
    padding size is not larger than 4 bytes, which is not always true;
    
    The only way to make it work is to queue only one frame per buffer from
    userspace and the check in the kernel is useless and wrong for VP8.
    So adding VP8 also along with H264 to disallow re-submitting of buffer
    back to hardware for decode.
    Signed-off-by: default avatarPawel Osciak <posciak@chromium.org>
    Signed-off-by: default avatarArun Kumar K <arun.kk@samsung.com>
    Signed-off-by: default avatarKamil Debski <k.debski@samsung.com>
    Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
    f49f3ed5
s5p_mfc.c 39.7 KB