Skip to content

va: mpeg2dec: refactor forward and backward references handling

    va: mpeg2dec: refactor the picture reference filling
    
    Add the helper function _get_surface_id() which extracts the
    VASurfaceID from the passed picture. This function gets the surface of
    the next and previous reference picture.
    
    Instead of if-statements, this refactor uses a switch-statement with a
    fall-through, for P-type pictures, making the code a bit more readable.
    
    Also it adds quirks for gallium driver, which cannot handle invalid
    surfaces as forwarding nor backwarding references, so the function fails.
    Also iHD cannot handle them, but to avoid failing, the current picture
    is used as self-reference.
    va: mpeg2dec: set first field either frame or has a first field
    
    Add a helper function _is_frame_start() which check if picture has a
    frame structure or if it has not an interlaced first field yet. This
    function is used with filling is_first_field parameter.
    codecs: mpeg2decoder: decode only if B and not closed gop
    
    Mark as decode only if picture type is B, without previous picture in DBP and
    closed_gop is 0 as might be understood in "6.3.8 Group of pictures header".
    codecs: mpeg2decoder: rename variables
    
    Since prev_picture and next_picture are plain pointers, not pointer to pointers,
    it's misleading to name them with _ptr suffix.

This MR goes above !1938 (merged)

Edited by Víctor Manuel Jáquez Leal

Merge request reports