• Chih-Yu Huang's avatar
    media/gpu/linux: Make VideoDecoderPipeline delegate VD tasks to decoder thread. · a35c28a4
    Chih-Yu Huang authored
    Originally, VideoDecoderPipeline delegates VD tasks to the client
    thread. Each VD implementation then post the tasks to decoder thread.
    Then VD implementations post the callback back to the client thread
    when the task is done. In the future, ImageProcessor will also operate
    on the decoder thread. We will pass the task and output frames by:
    
      VDPipeline (client)
      -> VD (client -> decoder -> client)
      -> VDPipeline (client)
      -> IP (client -> decoder -> client)
      -> VDPipeline (client)
      -> Converter (client -> GPU -> client)
      -> VDPipeline (client)
      Total 6 thread hopping.
    
    This CL now posts the VD task on the decoder thread. We don't need to
    hop thread inside each VD implementation. With this CL, we could save
    2 thread hopping.
    
      VDPipeline (client -> decoder)
      -> VD (decoder)
      -> VDPipeline (decoder)
      -> IP (decoder)
      -> VDPipeline (decoder)
      -> Converter (decoder -> GPU -> decoder)
      -> VDPipeline (decoder -> client)
      Total 4 thread hopping.
    
    BUG=chromium:998413
    TEST=run video_decode_accelerator_tests on Eve and Kevin
         with dcheck_always_on = true
    
    Change-Id: I7367663258adfd0f46ddca25493faff4633ae034
    Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1777449
    Commit-Queue: Chih-Yu Huang <akahuang@chromium.org>
    Reviewed-by: default avatarDavid Staessens <dstaessens@chromium.org>
    Reviewed-by: default avatarHirokazu Honda <hiroh@chromium.org>
    Reviewed-by: default avatarAlexandre Courbot <acourbot@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#707704}
    a35c28a4
video_decoder_pipeline.h 8.33 KB