Changeset 5a419c9120ba68ccc00a1c035f6fd6b2917b4bae
- 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
| r626e56b |
r5a419c9 |
|
| 105 | 105 | /* bitrate */ |
|---|
| 106 | 106 | int i_bitrate; |
|---|
| 107 | | |
|---|
| 108 | | /* meta data */ |
|---|
| 109 | | vlc_meta_t *meta; |
|---|
| 110 | | |
|---|
| 111 | | /* attachments */ |
|---|
| 112 | | int i_attachments; |
|---|
| 113 | | input_attachment_t **attachments; |
|---|
| 114 | 107 | }; |
|---|
| 115 | 108 | |
|---|
| … | … | |
| 211 | 204 | p_sys->i_eos = 0; |
|---|
| 212 | 205 | |
|---|
| 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 | | |
|---|
| 230 | 206 | /* Initialize the Ogg physical bitstream parser */ |
|---|
| 231 | 207 | ogg_sync_init( &p_sys->oy ); |
|---|
| … | … | |
| 246 | 222 | |
|---|
| 247 | 223 | 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); |
|---|
| 256 | 224 | |
|---|
| 257 | 225 | free( p_sys ); |
|---|
| … | … | |
| 399 | 367 | demux_sys_t *p_sys = p_demux->p_sys; |
|---|
| 400 | 368 | int64_t *pi64; |
|---|
| | 369 | vlc_bool_t *pb_bool; |
|---|
| 401 | 370 | int i; |
|---|
| 402 | | input_attachment_t ***ppp_attach; |
|---|
| 403 | | int *pi_int; |
|---|
| 404 | | vlc_meta_t *p_meta; |
|---|
| 405 | 371 | |
|---|
| 406 | 372 | switch( i_query ) |
|---|
| 407 | 373 | { |
|---|
| 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; |
|---|
| 411 | 377 | return VLC_SUCCESS; |
|---|
| 412 | 378 | |
|---|
| … | … | |
| 431 | 397 | } |
|---|
| 432 | 398 | 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; |
|---|
| 447 | 399 | |
|---|
| 448 | 400 | default: |
|---|