Changeset accc4e29fe98666273602d217bdcd0316cfb2ec5

Show
Ignore:
Timestamp:
11/12/07 04:42:17 (1 year ago)
Author:
Jean-Baptiste Kempf <jb@videolan.org>
git-committer:
Jean-Baptiste Kempf <jb@videolan.org> 1197344537 +0000
git-parent:

[8d153467fcb776744c6c4c91b5c6a5b5f68dcd9d]

git-author:
Jean-Baptiste Kempf <jb@videolan.org> 1197344537 +0000
Message:

Real Demuxer: Code factorisation after previous commit.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • modules/demux/real.c

    r8d15346 raccc4e2  
    496496    else if( tk->fmt.i_cat == AUDIO_ES && b_selected ) 
    497497    { 
    498         if( tk->fmt.i_codec == VLC_FOURCC( 'm','p','4','a' ) ) 
    499         { 
    500             int     i_sub = (p_sys->buffer[1] >> 4)&0x0f; 
    501             uint8_t *p_sub = &p_sys->buffer[2+2*i_sub]; 
    502  
    503              /* Set PCR */ 
    504              if( p_sys->i_pcr < i_pts ) 
    505              { 
    506                     p_sys->i_pcr = i_pts; 
    507                     es_out_Control( p_demux->out, ES_OUT_SET_PCR, 
    508                                                      (int64_t)p_sys->i_pcr ); 
    509              } 
    510  
    511             int i; 
    512             for( i = 0; i < i_sub; i++ ) 
    513             { 
    514                 int i_sub_size = GetWBE( &p_sys->buffer[2+i*2]); 
    515                 block_t *p_block = block_New( p_demux, i_sub_size ); 
    516                 if( p_block ) 
    517                 { 
    518                     memcpy( p_block->p_buffer, p_sub, i_sub_size ); 
    519                     p_sub += i_sub_size; 
    520  
    521                     p_block->i_dts = 
    522                     p_block->i_pts = ( i == 0 ? i_pts : 0 ); 
    523  
    524                     es_out_Send( p_demux->out, tk->p_es, p_block ); 
    525                 } 
    526             } 
    527         } 
    528         else if( tk->fmt.i_codec == VLC_FOURCC( 'c', 'o', 'o', 'k' ) || 
    529                  tk->fmt.i_codec == VLC_FOURCC( 'a', 't', 'r', 'c') || 
    530                  tk->fmt.i_codec == VLC_FOURCC( 's', 'i', 'p', 'r') || 
    531                  tk->fmt.i_codec == VLC_FOURCC( '2', '8', '_', '8') ) 
     498        if( tk->fmt.i_codec == VLC_FOURCC( 'c', 'o', 'o', 'k' ) || 
     499            tk->fmt.i_codec == VLC_FOURCC( 'a', 't', 'r', 'c') || 
     500            tk->fmt.i_codec == VLC_FOURCC( 's', 'i', 'p', 'r') || 
     501            tk->fmt.i_codec == VLC_FOURCC( '2', '8', '_', '8') ) 
    532502        { 
    533503            uint8_t *p_buf = p_sys->buffer; 
     
    605575        else 
    606576        { 
    607             block_t *p_block = block_New( p_demux, i_size ); 
    608  
    609             /* Set the PCR */ 
     577            /* Set PCR */ 
    610578            if( p_sys->i_pcr < i_pts ) 
    611579            { 
     
    615583            } 
    616584 
    617             if( tk->fmt.i_codec == VLC_FOURCC( 'a', '5', '2', ' ' ) ) 
    618             { 
    619                 uint8_t *src = p_sys->buffer; 
    620                 uint8_t *dst = p_block->p_buffer; 
    621  
    622                 /* byte swap data */ 
    623                 while( dst < &p_block->p_buffer[i_size- 1]) 
    624                 { 
    625                     *dst++ = src[1]; 
    626                     *dst++ = src[0]; 
    627  
    628                     src += 2; 
     585            if( tk->fmt.i_codec == VLC_FOURCC( 'm','p','4','a' ) ) 
     586            { 
     587                int     i_sub = (p_sys->buffer[1] >> 4)&0x0f; 
     588                uint8_t *p_sub = &p_sys->buffer[2+2*i_sub]; 
     589 
     590                int i; 
     591                for( i = 0; i < i_sub; i++ ) 
     592                { 
     593                    int i_sub_size = GetWBE( &p_sys->buffer[2+i*2]); 
     594                    block_t *p_block = block_New( p_demux, i_sub_size ); 
     595                    if( p_block ) 
     596                    { 
     597                        memcpy( p_block->p_buffer, p_sub, i_sub_size ); 
     598                        p_sub += i_sub_size; 
     599 
     600                        p_block->i_dts = 
     601                            p_block->i_pts = ( i == 0 ? i_pts : 0 ); 
     602 
     603                        es_out_Send( p_demux->out, tk->p_es, p_block ); 
     604                    } 
    629605                } 
    630606            } 
    631607            else 
    632608            { 
    633                 memcpy( p_block->p_buffer, p_sys->buffer, i_size ); 
    634             } 
    635             p_block->i_dts = p_block->i_pts = i_pts; 
    636             es_out_Send( p_demux->out, tk->p_es, p_block ); 
     609                block_t *p_block = block_New( p_demux, i_size ); 
     610 
     611                if( tk->fmt.i_codec == VLC_FOURCC( 'a', '5', '2', ' ' ) ) 
     612                { 
     613                    uint8_t *src = p_sys->buffer; 
     614                    uint8_t *dst = p_block->p_buffer; 
     615 
     616                    /* byte swap data */ 
     617                    while( dst < &p_block->p_buffer[i_size- 1]) 
     618                    { 
     619                        *dst++ = src[1]; 
     620                        *dst++ = src[0]; 
     621 
     622                        src += 2; 
     623                    } 
     624                } 
     625                else 
     626                { 
     627                    memcpy( p_block->p_buffer, p_sys->buffer, i_size ); 
     628                } 
     629                p_block->i_dts = p_block->i_pts = i_pts; 
     630                es_out_Send( p_demux->out, tk->p_es, p_block ); 
     631            } 
    637632        } 
    638633    }