Skip to content

d3d11decoder: Refactor for more unified decoding flow

    d3d11decoder: Refactor for more unified decoding flow

    ... and various code cleanup.

    * Move spreaded decoding API calls into one method
    Previously, decoding flow of most codecs are
    - Call DecoderBeginFrame() on start_picture()
    - Call {Get,Release}DecoderBuffer() on decode_slice()
    - Call SubmitDecoderBuffers() and DecoderEndFrame() on end_picture()
    Such spreaded API calls make it hard to keep track of status
    of decoding. Now it will be done at once in a new method.

    * Drop a code for non-zero wBadSliceChopping
    When bitstream buffer provided by driver is not sufficient
    to write compressed bitstream data, host decoder needs to make use
    of wBadSliceChopping so that driver can understand there are
    multiple bitstream buffer. But it's a bit unrealistic and
    not tested. Since FFMpeg's DXVA implemetaion doesn't support it,
    we might be able to ignore the case for now.

    * Make code more portable
    Consider common logic of GstCodecs -> DXVA translation for all D3D APIs
    (i,e., D3D9, D3D11, and D3D12).
    d3d11decoder: Remove duplicated class_init and property related code

    Move them into the decoder helper code to remove duplication
    d3d11: Get rid of "extern "C"" wrapping for GST_DEBUG_CATEGORY_EXTERN

    Instead, change the file defining debug category to cpp

Merge request reports

Loading