• Edward Hervey's avatar
    playbin3: Use uridecodebin3 and link/reconfigure immediately · b9e73d05
    Edward Hervey authored
    Apologies for the big commit, but it wasn't really possible to split it
    in anything smaller.
    
    * Switch to uridecodebin3 instead of managing urisourcebin and decodebin3
    ourselves. No major architectural change with this.
    
    * Reconfigure sinks/outputs when needed. This is possible thanks to the
    various streams-related API. Instead of blocking new pads and waiting
    for a (fake) no-more-pads to decide what to connect, we instead reconfigure
    playsink and the combiners to whatever types are currently selected. All of
    this is done in reconfigure_output().
      New pads are immediately connected to (combiners and) sinks, allowing
    immediate negotiation and usage.
    
    * Since elements are always connected, the "cached-duration" feature is gone
    and queries can reach the target elements.
    
    * The auto-plugging related code is currently disabled entirely until
    we get the new proper API.
    
    * Store collections at the GstSourceGroup level and not globally
    
    * And more comments a bit everywhere
    
    NOTE: gapless is still not functional, but this opens the way to be able
    to handle it in a streams-aware fashion (where several uridecodebin3 can
    be active at the same time).
    b9e73d05
gstplaybin3.c 159 KB