Show
Ignore:
Timestamp:
04/09/08 15:49:03 (3 months ago)
Author:
Antoine Cellerier <dionoea@videolan.org>
git-committer:
Antoine Cellerier <dionoea@videolan.org> 1220536143 +0200
git-parent:

[dfa6af95dd38071980576b6ab24c1027b6729bf5]

git-author:
Antoine Cellerier <dionoea@videolan.org> 1220536143 +0200
Message:

Fix placeholder mode. UDP streaming now works.

Make sure that we don't add the briged elementary streams to the next
stream output chain element when in placeholder mode. Maybe I should
split normal bridge-in and placeholder mode because the code is
begining to be filled with quite a few if( p_sys->b_placeholder ).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/stream_out/bridge.c

    rdfa6af9 r09cffd8  
    602602 
    603603                p_bridge->pp_es[i]->fmt.i_id += p_sys->i_id_offset; 
    604                 p_bridge->pp_es[i]->id = p_sys->p_out->pf_add( 
    605                             p_sys->p_out, &p_bridge->pp_es[i]->fmt ); 
    606                 if ( p_bridge->pp_es[i]->id == NULL ) 
     604                if( !p_sys->b_placeholder ) 
    607605                { 
    608                     msg_Warn( p_stream, "couldn't create chain for id %d", 
    609                               p_bridge->pp_es[i]->fmt.i_id ); 
     606                    p_bridge->pp_es[i]->id = p_sys->p_out->pf_add( 
     607                                p_sys->p_out, &p_bridge->pp_es[i]->fmt ); 
     608                    if ( p_bridge->pp_es[i]->id == NULL ) 
     609                    { 
     610                        msg_Warn( p_stream, "couldn't create chain for id %d", 
     611                                  p_bridge->pp_es[i]->fmt.i_id ); 
     612                    } 
    610613                } 
    611614                msg_Dbg( p_stream, "bridging in input codec=%4.4s id=%d pos=%d", 
     
    624627                  && p_bridge->pp_es[i]->i_last < i_date ) 
    625628            { 
    626                 p_sys->p_out->pf_del( p_sys->p_out, p_bridge->pp_es[i]->id ); 
     629                if( !p_sys->b_placeholder ) 
     630                    p_sys->p_out->pf_del( p_sys->p_out, 
     631                                          p_bridge->pp_es[i]->id ); 
    627632                p_bridge->pp_es[i]->fmt.i_id -= p_sys->i_id_offset; 
    628633                p_bridge->pp_es[i]->b_changed = true; 
     
    632637        } 
    633638 
    634         if ( p_bridge->pp_es[i]->id != NULL
     639        if ( p_bridge->pp_es[i]->id != NULL || p_sys->b_placeholder
    635640        { 
    636641            block_t *p_block = p_bridge->pp_es[i]->p_block; 
     
    650655                        p_sys->i_last_video = i_date; 
    651656                        newid = p_sys->id_video; 
     657                        if( !newid ) 
     658                            break; 
    652659                        if( !p_sys->b_switch_on_iframe || 
    653660                            p_sys->i_state == placeholder_off || 
     
    656663                        { 
    657664                            p_sys->p_out->pf_send( p_sys->p_out, 
    658                                        newid?newid:p_bridge->pp_es[i]->id
     665                                       newid
    659666                                       p_bridge->pp_es[i]->p_block ); 
    660667                            p_sys->i_state = placeholder_off; 
     
    663670                    case AUDIO_ES: 
    664671                        newid = p_sys->id_audio; 
     672                        if( !newid ) 
     673                            break; 
    665674                        p_sys->i_last_audio = i_date; 
    666675                    default: