Changeset 5a419c9120ba68ccc00a1c035f6fd6b2917b4bae

Show
Ignore:
Timestamp:
08/10/07 20:46:12 (1 year ago)
Author:
Laurent Aimar <fenrir@videolan.org>
git-committer:
Laurent Aimar <fenrir@videolan.org> 1191869172 +0000
git-parent:

[30dcf59a18a1d1d9ce0c1b8ef30f1a7e11d0466e]

git-author:
Laurent Aimar <fenrir@videolan.org> 1191869172 +0000
Message:

Let the input handle meta data and attachments for ogg files.

Files:

Legend:

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

    r626e56b r5a419c9  
    105105    /* bitrate */ 
    106106    int     i_bitrate; 
    107  
    108     /* meta data */ 
    109     vlc_meta_t *meta; 
    110  
    111     /* attachments */ 
    112     int                i_attachments; 
    113     input_attachment_t **attachments; 
    114107}; 
    115108 
     
    211204    p_sys->i_eos = 0; 
    212205 
    213     if( !var_CreateGetBool( p_demux, "meta-preparsed" ) ) 
    214     { 
    215         p_demux->p_private = malloc( sizeof( demux_meta_t ) ); 
    216         if( !p_demux->p_private ) 
    217             return VLC_ENOMEM; 
    218         module_t *p_meta = module_Need( p_demux, "meta reader", NULL, 0 ); 
    219         if( p_meta ) 
    220         { 
    221             module_Unneed( p_demux, p_meta ); 
    222             demux_meta_t *p_demux_meta = (demux_meta_t *)p_demux->p_private; 
    223             p_sys->meta = p_demux_meta->p_meta; 
    224             p_sys->i_attachments = p_demux_meta->i_attachments; 
    225             p_sys->attachments = p_demux_meta->attachments; 
    226         } 
    227         free( p_demux->p_private ); 
    228     } 
    229  
    230206    /* Initialize the Ogg physical bitstream parser */ 
    231207    ogg_sync_init( &p_sys->oy ); 
     
    246222 
    247223    Ogg_EndOfStream( p_demux ); 
    248  
    249     var_Destroy( p_demux, "meta-preparsed" ); 
    250     if( p_sys->meta ) vlc_meta_Delete( p_sys->meta ); 
    251  
    252     int i; 
    253     for( i = 0; i < p_sys->i_attachments; i++ ) 
    254         free( p_sys->attachments[i] ); 
    255     TAB_CLEAN( p_sys->i_attachments, p_sys->attachments); 
    256224 
    257225    free( p_sys ); 
     
    399367    demux_sys_t *p_sys  = p_demux->p_sys; 
    400368    int64_t *pi64; 
     369    vlc_bool_t *pb_bool; 
    401370    int i; 
    402     input_attachment_t ***ppp_attach; 
    403     int *pi_int; 
    404     vlc_meta_t *p_meta; 
    405371 
    406372    switch( i_query ) 
    407373    { 
    408         case DEMUX_GET_META: 
    409             p_meta = (vlc_meta_t *)va_arg( args, vlc_meta_t* ); 
    410             vlc_meta_Merge( p_meta, p_sys->meta )
     374        case DEMUX_HAS_UNSUPPORTED_META: 
     375            pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t* ); 
     376            *pb_bool = VLC_TRUE
    411377            return VLC_SUCCESS; 
    412378 
     
    431397            } 
    432398            ogg_sync_reset( &p_sys->oy ); 
    433  
    434         case DEMUX_GET_ATTACHMENTS: 
    435             ppp_attach = 
    436                 (input_attachment_t***)va_arg( args, input_attachment_t*** ); 
    437             pi_int = (int*)va_arg( args, int * ); 
    438  
    439             if( p_sys->i_attachments <= 0 ) 
    440                 return VLC_EGENERIC; 
    441  
    442             *pi_int = p_sys->i_attachments; 
    443             *ppp_attach = malloc( sizeof(input_attachment_t**) * p_sys->i_attachments ); 
    444             for( i = 0; i < p_sys->i_attachments; i++ ) 
    445                 (*ppp_attach)[i] = vlc_input_attachment_Duplicate( p_sys->attachments[i] ); 
    446             return VLC_SUCCESS; 
    447399 
    448400        default: