Changeset 25ad0cdef1cfe031218aae58017a5124335f55d0
- Timestamp:
- 01/29/08 14:55:19
(7 months ago)
- Author:
- Rafaël Carré <funman@videolan.org>
- git-committer:
- Rafaël Carré <funman@videolan.org> 1201614919 +0000
- git-parent:
[51bc0c4a0c7875d64cacce29d057a0dd600d7620]
- git-author:
- Rafaël Carré <funman@videolan.org> 1201614919 +0000
- Message:
mux: fix warnings, fix Control() indentation
avi/avi_HeaderAdd_str{h,f}(): removes unused parameter
mp4/Convert{SUBT,AVC1}() GetD263Tag() Get{Text,Vide}Box(): same
mpeg/ts/BufferChainClean(): same
ogg/OggCreate{Header,Footer}(): same
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r99fab90 |
r25ad0cd |
|
| 272 | 272 | |
|---|
| 273 | 273 | /* rewrite header */ |
|---|
| 274 | | if( !sout_AccessOutSeek( p_mux->p_access, 0 ) ) |
|---|
| | 274 | if( sout_AccessOutSeek( p_mux->p_access, 0 ) == VLC_SUCCESS ) |
|---|
| 275 | 275 | { |
|---|
| 276 | 276 | out = asf_header_create( p_mux, VLC_FALSE ); |
|---|
| … | … | |
| 582 | 582 | static int DelStream( sout_mux_t *p_mux, sout_input_t *p_input ) |
|---|
| 583 | 583 | { |
|---|
| | 584 | VLC_UNUSED(p_input); |
|---|
| 584 | 585 | msg_Dbg( p_mux, "removing input" ); |
|---|
| 585 | 586 | return VLC_SUCCESS; |
|---|
| r99fab90 |
r25ad0cd |
|
| 219 | 219 | static int Control( sout_mux_t *p_mux, int i_query, va_list args ) |
|---|
| 220 | 220 | { |
|---|
| | 221 | VLC_UNUSED(p_mux); |
|---|
| 221 | 222 | vlc_bool_t *pb_bool; |
|---|
| 222 | 223 | char **ppsz; |
|---|
| … | … | |
| 405 | 406 | sout_mux_sys_t *p_sys = p_mux->p_sys; |
|---|
| 406 | 407 | avi_stream_t *p_stream; |
|---|
| 407 | | int i_stream; |
|---|
| 408 | | int i; |
|---|
| | 408 | int i_stream, i; |
|---|
| 409 | 409 | |
|---|
| 410 | 410 | if( p_sys->b_write_header ) |
|---|
| … | … | |
| 661 | 661 | AVI_BOX_EXIT( 0 ); |
|---|
| 662 | 662 | } |
|---|
| 663 | | static int avi_HeaderAdd_strh( sout_mux_t *p_mux, |
|---|
| 664 | | buffer_out_t *p_bo, |
|---|
| 665 | | avi_stream_t *p_stream ) |
|---|
| | 663 | static int avi_HeaderAdd_strh( buffer_out_t *p_bo, avi_stream_t *p_stream ) |
|---|
| 666 | 664 | { |
|---|
| 667 | 665 | AVI_BOX_ENTER( "strh" ); |
|---|
| … | … | |
| 730 | 728 | } |
|---|
| 731 | 729 | |
|---|
| 732 | | static int avi_HeaderAdd_strf( sout_mux_t *p_mux, |
|---|
| 733 | | buffer_out_t *p_bo, |
|---|
| 734 | | avi_stream_t *p_stream ) |
|---|
| | 730 | static int avi_HeaderAdd_strf( buffer_out_t *p_bo, avi_stream_t *p_stream ) |
|---|
| 735 | 731 | { |
|---|
| 736 | 732 | AVI_BOX_ENTER( "strf" ); |
|---|
| … | … | |
| 776 | 772 | } |
|---|
| 777 | 773 | |
|---|
| 778 | | static int avi_HeaderAdd_strl( sout_mux_t *p_mux, |
|---|
| 779 | | buffer_out_t *p_bo, |
|---|
| 780 | | avi_stream_t *p_stream ) |
|---|
| | 774 | static int avi_HeaderAdd_strl( buffer_out_t *p_bo, avi_stream_t *p_stream ) |
|---|
| 781 | 775 | { |
|---|
| 782 | 776 | AVI_BOX_ENTER_LIST( "strl" ); |
|---|
| 783 | 777 | |
|---|
| 784 | | avi_HeaderAdd_strh( p_mux, p_bo, p_stream ); |
|---|
| 785 | | avi_HeaderAdd_strf( p_mux, p_bo, p_stream ); |
|---|
| | 778 | avi_HeaderAdd_strh( p_bo, p_stream ); |
|---|
| | 779 | avi_HeaderAdd_strf( p_bo, p_stream ); |
|---|
| 786 | 780 | |
|---|
| 787 | 781 | AVI_BOX_EXIT( 0 ); |
|---|
| … | … | |
| 813 | 807 | for( i_stream = 0,i_maxbytespersec = 0; i_stream < p_sys->i_streams; i_stream++ ) |
|---|
| 814 | 808 | { |
|---|
| 815 | | avi_HeaderAdd_strl( p_mux, &bo, &p_sys->stream[i_stream] ); |
|---|
| | 809 | avi_HeaderAdd_strl( &bo, &p_sys->stream[i_stream] ); |
|---|
| 816 | 810 | } |
|---|
| 817 | 811 | |
|---|
| r99fab90 |
r25ad0cd |
|
| 104 | 104 | static int Control( sout_mux_t *p_mux, int i_query, va_list args ) |
|---|
| 105 | 105 | { |
|---|
| | 106 | VLC_UNUSED(p_mux); |
|---|
| 106 | 107 | vlc_bool_t *pb_bool; |
|---|
| 107 | 108 | |
|---|
| 108 | | switch( i_query ) |
|---|
| 109 | | { |
|---|
| 110 | | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| 111 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 112 | | *pb_bool = VLC_TRUE; |
|---|
| 113 | | return VLC_SUCCESS; |
|---|
| | 109 | switch( i_query ) |
|---|
| | 110 | { |
|---|
| | 111 | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| | 112 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 113 | *pb_bool = VLC_TRUE; |
|---|
| | 114 | return VLC_SUCCESS; |
|---|
| 114 | 115 | |
|---|
| 115 | | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| 116 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 117 | | *pb_bool = VLC_FALSE; |
|---|
| 118 | | return VLC_SUCCESS; |
|---|
| | 116 | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| | 117 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 118 | *pb_bool = VLC_FALSE; |
|---|
| | 119 | return VLC_SUCCESS; |
|---|
| 119 | 120 | |
|---|
| 120 | | case MUX_GET_MIME: /* Unknown */ |
|---|
| | 121 | case MUX_GET_MIME: /* Unknown */ |
|---|
| 121 | 122 | default: |
|---|
| 122 | 123 | return VLC_EGENERIC; |
|---|
| … | … | |
| 126 | 127 | static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) |
|---|
| 127 | 128 | { |
|---|
| | 129 | VLC_UNUSED(p_input); |
|---|
| 128 | 130 | msg_Dbg( p_mux, "adding input" ); |
|---|
| 129 | 131 | return VLC_SUCCESS; |
|---|
| … | … | |
| 132 | 134 | static int DelStream( sout_mux_t *p_mux, sout_input_t *p_input ) |
|---|
| 133 | 135 | { |
|---|
| | 136 | VLC_UNUSED(p_input); |
|---|
| 134 | 137 | msg_Dbg( p_mux, "removing input" ); |
|---|
| 135 | 138 | return VLC_SUCCESS; |
|---|
| r99fab90 |
r25ad0cd |
|
| 174 | 174 | static bo_t *GetMoovBox( sout_mux_t *p_mux ); |
|---|
| 175 | 175 | |
|---|
| 176 | | static block_t *ConvertSUBT( sout_mux_t *, mp4_stream_t *, block_t *); |
|---|
| 177 | | static block_t *ConvertAVC1( sout_mux_t *, mp4_stream_t *, block_t * ); |
|---|
| | 176 | static block_t *ConvertSUBT( block_t *); |
|---|
| | 177 | static block_t *ConvertAVC1( block_t * ); |
|---|
| 178 | 178 | |
|---|
| 179 | 179 | /***************************************************************************** |
|---|
| … | … | |
| 367 | 367 | static int Control( sout_mux_t *p_mux, int i_query, va_list args ) |
|---|
| 368 | 368 | { |
|---|
| | 369 | VLC_UNUSED(p_mux); |
|---|
| 369 | 370 | vlc_bool_t *pb_bool; |
|---|
| 370 | 371 | |
|---|
| 371 | | switch( i_query ) |
|---|
| 372 | | { |
|---|
| 373 | | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| 374 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 375 | | *pb_bool = VLC_FALSE; |
|---|
| 376 | | return VLC_SUCCESS; |
|---|
| 377 | | |
|---|
| 378 | | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| 379 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 380 | | *pb_bool = VLC_TRUE; |
|---|
| 381 | | return VLC_SUCCESS; |
|---|
| 382 | | |
|---|
| 383 | | case MUX_GET_MIME: /* Not needed, as not streamable */ |
|---|
| | 372 | switch( i_query ) |
|---|
| | 373 | { |
|---|
| | 374 | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| | 375 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 376 | *pb_bool = VLC_FALSE; |
|---|
| | 377 | return VLC_SUCCESS; |
|---|
| | 378 | |
|---|
| | 379 | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| | 380 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 381 | *pb_bool = VLC_TRUE; |
|---|
| | 382 | return VLC_SUCCESS; |
|---|
| | 383 | |
|---|
| | 384 | case MUX_GET_MIME: /* Not needed, as not streamable */ |
|---|
| 384 | 385 | default: |
|---|
| 385 | 386 | return VLC_EGENERIC; |
|---|
| 386 | | } |
|---|
| | 387 | } |
|---|
| 387 | 388 | } |
|---|
| 388 | 389 | |
|---|
| … | … | |
| 445 | 446 | static int DelStream( sout_mux_t *p_mux, sout_input_t *p_input ) |
|---|
| 446 | 447 | { |
|---|
| | 448 | VLC_UNUSED(p_input); |
|---|
| 447 | 449 | msg_Dbg( p_mux, "removing input" ); |
|---|
| 448 | 450 | return VLC_SUCCESS; |
|---|
| … | … | |
| 452 | 454 | { |
|---|
| 453 | 455 | mtime_t i_dts; |
|---|
| 454 | | int i_stream; |
|---|
| 455 | | int i; |
|---|
| | 456 | int i_stream, i; |
|---|
| 456 | 457 | |
|---|
| 457 | 458 | for( i = 0, i_dts = 0, i_stream = -1; i < p_mux->i_nb_inputs; i++ ) |
|---|
| … | … | |
| 515 | 516 | if( p_stream->fmt.i_codec == VLC_FOURCC( 'h', '2', '6', '4' ) ) |
|---|
| 516 | 517 | { |
|---|
| 517 | | p_data = ConvertAVC1( p_mux, p_stream, p_data ); |
|---|
| | 518 | p_data = ConvertAVC1( p_data ); |
|---|
| 518 | 519 | } |
|---|
| 519 | 520 | else if( p_stream->fmt.i_codec == VLC_FOURCC( 's', 'u', 'b', 't' ) ) |
|---|
| 520 | 521 | { |
|---|
| 521 | | p_data = ConvertSUBT( p_mux, p_stream, p_data ); |
|---|
| | 522 | p_data = ConvertSUBT( p_data ); |
|---|
| 522 | 523 | } |
|---|
| 523 | 524 | if( p_data == NULL ) goto again; |
|---|
| … | … | |
| 654 | 655 | * |
|---|
| 655 | 656 | *****************************************************************************/ |
|---|
| 656 | | static block_t *ConvertSUBT( sout_mux_t *p_mux, mp4_stream_t *tk, block_t *p_block ) |
|---|
| | 657 | static block_t *ConvertSUBT( block_t *p_block ) |
|---|
| 657 | 658 | { |
|---|
| 658 | 659 | p_block = block_Realloc( p_block, 2, p_block->i_buffer ); |
|---|
| … | … | |
| 668 | 669 | } |
|---|
| 669 | 670 | |
|---|
| 670 | | static block_t *ConvertAVC1( sout_mux_t *p_mux, mp4_stream_t *tk, block_t *p_block ) |
|---|
| | 671 | static block_t *ConvertAVC1( block_t *p_block ) |
|---|
| 671 | 672 | { |
|---|
| 672 | 673 | uint8_t *last = p_block->p_buffer; /* Assume it starts with 0x00000001 */ |
|---|
| … | … | |
| 883 | 884 | } |
|---|
| 884 | 885 | |
|---|
| 885 | | static bo_t *GetD263Tag( mp4_stream_t *p_stream ) |
|---|
| | 886 | static bo_t *GetD263Tag( void ) |
|---|
| 886 | 887 | { |
|---|
| 887 | 888 | bo_t *d263; |
|---|
| … | … | |
| 1185 | 1186 | } |
|---|
| 1186 | 1187 | |
|---|
| 1187 | | static bo_t *GetVideBox( sout_mux_t *p_mux, mp4_stream_t *p_stream ) |
|---|
| | 1188 | static bo_t *GetVideBox( mp4_stream_t *p_stream ) |
|---|
| 1188 | 1189 | { |
|---|
| 1189 | 1190 | |
|---|
| … | … | |
| 1279 | 1280 | case VLC_FOURCC('H','2','6','3'): |
|---|
| 1280 | 1281 | { |
|---|
| 1281 | | bo_t *d263 = GetD263Tag( p_stream ); |
|---|
| | 1282 | bo_t *d263 = GetD263Tag(); |
|---|
| 1282 | 1283 | |
|---|
| 1283 | 1284 | box_fix( d263 ); |
|---|
| … | … | |
| 1308 | 1309 | } |
|---|
| 1309 | 1310 | |
|---|
| 1310 | | static bo_t *GetTextBox( sout_mux_t *p_mux, mp4_stream_t *p_stream ) |
|---|
| | 1311 | static bo_t *GetTextBox( void ) |
|---|
| 1311 | 1312 | { |
|---|
| 1312 | 1313 | |
|---|
| … | … | |
| 1366 | 1367 | else if( p_stream->fmt.i_cat == VIDEO_ES ) |
|---|
| 1367 | 1368 | { |
|---|
| 1368 | | bo_t *vide = GetVideBox( p_mux, p_stream ); |
|---|
| | 1369 | bo_t *vide = GetVideBox( p_stream ); |
|---|
| 1369 | 1370 | box_gather( stsd, vide ); |
|---|
| 1370 | 1371 | } |
|---|
| 1371 | 1372 | else if( p_stream->fmt.i_cat == SPU_ES ) |
|---|
| 1372 | 1373 | { |
|---|
| 1373 | | box_gather( stsd, GetTextBox( p_mux, p_stream ) ); |
|---|
| | 1374 | box_gather( stsd, GetTextBox() ); |
|---|
| 1374 | 1375 | } |
|---|
| 1375 | 1376 | box_fix( stsd ); |
|---|
| r99fab90 |
r25ad0cd |
|
| 232 | 232 | static int Control( sout_mux_t *p_mux, int i_query, va_list args ) |
|---|
| 233 | 233 | { |
|---|
| | 234 | VLC_UNUSED(p_mux); |
|---|
| 234 | 235 | vlc_bool_t *pb_bool; |
|---|
| 235 | 236 | char **ppsz; |
|---|
| 236 | 237 | |
|---|
| 237 | | switch( i_query ) |
|---|
| 238 | | { |
|---|
| 239 | | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| 240 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 241 | | *pb_bool = VLC_TRUE; |
|---|
| 242 | | return VLC_SUCCESS; |
|---|
| 243 | | |
|---|
| 244 | | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| 245 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 246 | | *pb_bool = VLC_FALSE; |
|---|
| 247 | | return VLC_SUCCESS; |
|---|
| 248 | | |
|---|
| 249 | | case MUX_GET_MIME: |
|---|
| 250 | | ppsz = (char**)va_arg( args, char ** ); |
|---|
| 251 | | *ppsz = strdup( "video/mpeg" ); |
|---|
| 252 | | return VLC_SUCCESS; |
|---|
| | 238 | switch( i_query ) |
|---|
| | 239 | { |
|---|
| | 240 | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| | 241 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 242 | *pb_bool = VLC_TRUE; |
|---|
| | 243 | return VLC_SUCCESS; |
|---|
| | 244 | |
|---|
| | 245 | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| | 246 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 247 | *pb_bool = VLC_FALSE; |
|---|
| | 248 | return VLC_SUCCESS; |
|---|
| | 249 | |
|---|
| | 250 | case MUX_GET_MIME: |
|---|
| | 251 | ppsz = (char**)va_arg( args, char ** ); |
|---|
| | 252 | *ppsz = strdup( "video/mpeg" ); |
|---|
| | 253 | return VLC_SUCCESS; |
|---|
| 253 | 254 | |
|---|
| 254 | 255 | default: |
|---|
| 255 | 256 | return VLC_EGENERIC; |
|---|
| 256 | | } |
|---|
| | 257 | } |
|---|
| 257 | 258 | } |
|---|
| 258 | 259 | |
|---|
| … | … | |
| 795 | 796 | { |
|---|
| 796 | 797 | uint32_t i_crc = 0xffffffff; |
|---|
| 797 | | for( i = 0; i < p_hdr->i_buffer; i++ ) |
|---|
| | 798 | for( i = 0; (size_t)i < p_hdr->i_buffer; i++ ) |
|---|
| 798 | 799 | i_crc = (i_crc << 8) ^ |
|---|
| 799 | 800 | p_sys->crc32_table[((i_crc >> 24) ^ p_hdr->p_buffer[i]) & 0xff]; |
|---|
| … | … | |
| 811 | 812 | { |
|---|
| 812 | 813 | mtime_t i_dts; |
|---|
| 813 | | int i_stream; |
|---|
| 814 | | int i; |
|---|
| | 814 | int i_stream, i; |
|---|
| 815 | 815 | |
|---|
| 816 | 816 | for( i = 0, i_dts = 0, i_stream = -1; i < p_mux->i_nb_inputs; i++ ) |
|---|
| r99fab90 |
r25ad0cd |
|
| 308 | 308 | } |
|---|
| 309 | 309 | |
|---|
| 310 | | static inline void BufferChainClean( sout_instance_t *p_sout, |
|---|
| 311 | | sout_buffer_chain_t *c ) |
|---|
| | 310 | static inline void BufferChainClean( sout_buffer_chain_t *c ) |
|---|
| 312 | 311 | { |
|---|
| 313 | 312 | block_t *b; |
|---|
| … | … | |
| 858 | 857 | static int Control( sout_mux_t *p_mux, int i_query, va_list args ) |
|---|
| 859 | 858 | { |
|---|
| | 859 | VLC_UNUSED(p_mux); |
|---|
| 860 | 860 | vlc_bool_t *pb_bool; |
|---|
| 861 | 861 | char **ppsz; |
|---|
| 862 | 862 | |
|---|
| 863 | | switch( i_query ) |
|---|
| 864 | | { |
|---|
| 865 | | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| 866 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 867 | | *pb_bool = VLC_TRUE; |
|---|
| 868 | | return VLC_SUCCESS; |
|---|
| 869 | | |
|---|
| 870 | | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| 871 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 872 | | *pb_bool = VLC_FALSE; |
|---|
| 873 | | return VLC_SUCCESS; |
|---|
| 874 | | |
|---|
| 875 | | case MUX_GET_MIME: |
|---|
| 876 | | ppsz = (char**)va_arg( args, char ** ); |
|---|
| 877 | | *ppsz = strdup( "video/mpeg" ); /* FIXME not sure */ |
|---|
| 878 | | return VLC_SUCCESS; |
|---|
| | 863 | switch( i_query ) |
|---|
| | 864 | { |
|---|
| | 865 | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| | 866 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 867 | *pb_bool = VLC_TRUE; |
|---|
| | 868 | return VLC_SUCCESS; |
|---|
| | 869 | |
|---|
| | 870 | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| | 871 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 872 | *pb_bool = VLC_FALSE; |
|---|
| | 873 | return VLC_SUCCESS; |
|---|
| | 874 | |
|---|
| | 875 | case MUX_GET_MIME: |
|---|
| | 876 | ppsz = (char**)va_arg( args, char ** ); |
|---|
| | 877 | *ppsz = strdup( "video/mpeg" ); /* FIXME not sure */ |
|---|
| | 878 | return VLC_SUCCESS; |
|---|
| 879 | 879 | |
|---|
| 880 | 880 | default: |
|---|
| 881 | 881 | return VLC_EGENERIC; |
|---|
| 882 | | } |
|---|
| | 882 | } |
|---|
| 883 | 883 | } |
|---|
| 884 | 884 | |
|---|
| … | … | |
| 1222 | 1222 | |
|---|
| 1223 | 1223 | /* Empty all data in chain_pes */ |
|---|
| 1224 | | BufferChainClean( p_mux->p_sout, &p_stream->chain_pes ); |
|---|
| | 1224 | BufferChainClean( &p_stream->chain_pes ); |
|---|
| 1225 | 1225 | |
|---|
| 1226 | 1226 | if( p_stream->lang ) |
|---|
| … | … | |
| 1375 | 1375 | ( i_spu_delay < I64C(10000) ) ) |
|---|
| 1376 | 1376 | { |
|---|
| 1377 | | BufferChainClean( p_mux->p_sout, |
|---|
| 1378 | | &p_stream->chain_pes ); |
|---|
| | 1377 | BufferChainClean( &p_stream->chain_pes ); |
|---|
| 1379 | 1378 | p_stream->i_pes_dts = 0; |
|---|
| 1380 | 1379 | p_stream->i_pes_used = 0; |
|---|
| … | … | |
| 1418 | 1417 | block_Release( p_data ); |
|---|
| 1419 | 1418 | |
|---|
| 1420 | | BufferChainClean( p_mux->p_sout, |
|---|
| 1421 | | &p_stream->chain_pes ); |
|---|
| | 1419 | BufferChainClean( &p_stream->chain_pes ); |
|---|
| 1422 | 1420 | p_stream->i_pes_dts = 0; |
|---|
| 1423 | 1421 | p_stream->i_pes_used = 0; |
|---|
| … | … | |
| 1426 | 1424 | if( p_input->p_fmt->i_cat != SPU_ES ) |
|---|
| 1427 | 1425 | { |
|---|
| 1428 | | BufferChainClean( p_mux->p_sout, |
|---|
| 1429 | | &p_pcr_stream->chain_pes ); |
|---|
| | 1426 | BufferChainClean( &p_pcr_stream->chain_pes ); |
|---|
| 1430 | 1427 | p_pcr_stream->i_pes_dts = 0; |
|---|
| 1431 | 1428 | p_pcr_stream->i_pes_used = 0; |
|---|
| r99fab90 |
r25ad0cd |
|
| 96 | 96 | static int Control( sout_mux_t *p_mux, int i_query, va_list args ) |
|---|
| 97 | 97 | { |
|---|
| | 98 | VLC_UNUSED(p_mux); |
|---|
| 98 | 99 | vlc_bool_t *pb_bool; |
|---|
| 99 | 100 | char **ppsz; |
|---|
| 100 | 101 | |
|---|
| 101 | | switch( i_query ) |
|---|
| 102 | | { |
|---|
| 103 | | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| 104 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 105 | | *pb_bool = VLC_TRUE; |
|---|
| 106 | | return VLC_SUCCESS; |
|---|
| | 102 | switch( i_query ) |
|---|
| | 103 | { |
|---|
| | 104 | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| | 105 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 106 | *pb_bool = VLC_TRUE; |
|---|
| | 107 | return VLC_SUCCESS; |
|---|
| 107 | 108 | |
|---|
| 108 | | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| 109 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 110 | | *pb_bool = VLC_TRUE; |
|---|
| 111 | | return VLC_SUCCESS; |
|---|
| | 109 | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| | 110 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 111 | *pb_bool = VLC_TRUE; |
|---|
| | 112 | return VLC_SUCCESS; |
|---|
| 112 | 113 | |
|---|
| 113 | | case MUX_GET_MIME: |
|---|
| 114 | | ppsz = (char**)va_arg( args, char ** ); |
|---|
| 115 | | *ppsz = strdup( "multipart/x-mixed-replace; boundary="BOUNDARY ); |
|---|
| 116 | | return VLC_SUCCESS; |
|---|
| | 114 | case MUX_GET_MIME: |
|---|
| | 115 | ppsz = (char**)va_arg( args, char ** ); |
|---|
| | 116 | *ppsz = strdup( "multipart/x-mixed-replace; boundary="BOUNDARY ); |
|---|
| | 117 | return VLC_SUCCESS; |
|---|
| 117 | 118 | |
|---|
| 118 | 119 | default: |
|---|
| 119 | 120 | return VLC_EGENERIC; |
|---|
| 120 | | } |
|---|
| | 121 | } |
|---|
| 121 | 122 | } |
|---|
| 122 | 123 | |
|---|
| … | … | |
| 146 | 147 | static int DelStream( sout_mux_t *p_mux, sout_input_t *p_input ) |
|---|
| 147 | 148 | { |
|---|
| | 149 | VLC_UNUSED(p_input); |
|---|
| 148 | 150 | msg_Dbg( p_mux, "removing input" ); |
|---|
| 149 | 151 | return VLC_SUCCESS; |
|---|
| r99fab90 |
r25ad0cd |
|
| 68 | 68 | static int MuxBlock ( sout_mux_t *, sout_input_t * ); |
|---|
| 69 | 69 | |
|---|
| 70 | | static block_t *OggCreateHeader( sout_mux_t *, mtime_t ); |
|---|
| 71 | | static block_t *OggCreateFooter( sout_mux_t *, mtime_t ); |
|---|
| | 70 | static block_t *OggCreateHeader( sout_mux_t * ); |
|---|
| | 71 | static block_t *OggCreateFooter( sout_mux_t * ); |
|---|
| 72 | 72 | |
|---|
| 73 | 73 | /***************************************************************************** |
|---|
| … | … | |
| 137 | 137 | { |
|---|
| 138 | 138 | mtime_t i_dts; |
|---|
| 139 | | int i_stream; |
|---|
| 140 | | int i; |
|---|
| | 139 | int i_stream, i; |
|---|
| 141 | 140 | |
|---|
| 142 | 141 | for( i = 0, i_dts = 0, i_stream = -1; i < p_mux->i_nb_inputs; i++ ) |
|---|
| … | … | |
| 257 | 256 | /* Close the current ogg stream */ |
|---|
| 258 | 257 | msg_Dbg( p_mux, "writing footer" ); |
|---|
| 259 | | block_ChainAppend( &p_og, OggCreateFooter( p_mux, 0 ) ); |
|---|
| | 258 | block_ChainAppend( &p_og, OggCreateFooter( p_mux ) ); |
|---|
| 260 | 259 | |
|---|
| 261 | 260 | /* Remove deleted logical streams */ |
|---|
| … | … | |
| 283 | 282 | static int Control( sout_mux_t *p_mux, int i_query, va_list args ) |
|---|
| 284 | 283 | { |
|---|
| | 284 | VLC_UNUSED(p_mux); |
|---|
| 285 | 285 | vlc_bool_t *pb_bool; |
|---|
| 286 | 286 | char **ppsz; |
|---|
| … | … | |
| 584 | 584 | } |
|---|
| 585 | 585 | |
|---|
| 586 | | static block_t *OggCreateHeader( sout_mux_t *p_mux, mtime_t i_dts ) |
|---|
| | 586 | static block_t *OggCreateHeader( sout_mux_t *p_mux ) |
|---|
| 587 | 587 | { |
|---|
| 588 | 588 | block_t *p_hdr = NULL; |
|---|
| … | … | |
| 779 | 779 | } |
|---|
| 780 | 780 | |
|---|
| 781 | | static block_t *OggCreateFooter( sout_mux_t *p_mux, mtime_t i_dts ) |
|---|
| | 781 | static block_t *OggCreateFooter( sout_mux_t *p_mux ) |
|---|
| 782 | 782 | { |
|---|
| 783 | 783 | sout_mux_sys_t *p_sys = p_mux->p_sys; |
|---|
| … | … | |
| 785 | 785 | block_t *p_og; |
|---|
| 786 | 786 | ogg_packet op; |
|---|
| 787 | | int i; |
|---|
| | 787 | int i; |
|---|
| 788 | 788 | |
|---|
| 789 | 789 | /* flush all remaining data */ |
|---|
| … | … | |
| 887 | 887 | |
|---|
| 888 | 888 | msg_Dbg( p_mux, "writing footer" ); |
|---|
| 889 | | block_ChainAppend( &p_og, OggCreateFooter( p_mux, 0 ) ); |
|---|
| | 889 | block_ChainAppend( &p_og, OggCreateFooter( p_mux ) ); |
|---|
| 890 | 890 | |
|---|
| 891 | 891 | /* Remove deleted logical streams */ |
|---|
| … | … | |
| 904 | 904 | p_sys->i_del_streams = 0; |
|---|
| 905 | 905 | p_sys->i_add_streams = 0; |
|---|
| 906 | | block_ChainAppend( &p_og, OggCreateHeader( p_mux, i_dts ) ); |
|---|
| | 906 | block_ChainAppend( &p_og, OggCreateHeader( p_mux ) ); |
|---|
| 907 | 907 | |
|---|
| 908 | 908 | /* Write header and/or footer */ |
|---|
| r99fab90 |
r25ad0cd |
|
| 131 | 131 | static int Control( sout_mux_t *p_mux, int i_query, va_list args ) |
|---|
| 132 | 132 | { |
|---|
| | 133 | VLC_UNUSED(p_mux); |
|---|
| 133 | 134 | vlc_bool_t *pb_bool; |
|---|
| 134 | 135 | char **ppsz; |
|---|
| 135 | 136 | |
|---|
| 136 | | switch( i_query ) |
|---|
| 137 | | { |
|---|
| 138 | | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| 139 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 140 | | *pb_bool = VLC_FALSE; |
|---|
| 141 | | return VLC_SUCCESS; |
|---|
| 142 | | |
|---|
| 143 | | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| 144 | | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| 145 | | *pb_bool = VLC_TRUE; |
|---|
| 146 | | return VLC_SUCCESS; |
|---|
| 147 | | |
|---|
| 148 | | case MUX_GET_MIME: |
|---|
| 149 | | ppsz = (char**)va_arg( args, char ** ); |
|---|
| 150 | | *ppsz = strdup( "audio/wav" ); |
|---|
| 151 | | return VLC_SUCCESS; |
|---|
| | 137 | switch( i_query ) |
|---|
| | 138 | { |
|---|
| | 139 | case MUX_CAN_ADD_STREAM_WHILE_MUXING: |
|---|
| | 140 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 141 | *pb_bool = VLC_FALSE; |
|---|
| | 142 | return VLC_SUCCESS; |
|---|
| | 143 | |
|---|
| | 144 | case MUX_GET_ADD_STREAM_WAIT: |
|---|
| | 145 | pb_bool = (vlc_bool_t*)va_arg( args, vlc_bool_t * ); |
|---|
| | 146 | *pb_bool = VLC_TRUE; |
|---|
| | 147 | return VLC_SUCCESS; |
|---|
| | 148 | |
|---|
| | 149 | case MUX_GET_MIME: |
|---|
| | 150 | ppsz = (char**)va_arg( args, char ** ); |
|---|
| | 151 | *ppsz = strdup( "audio/wav" ); |
|---|
| | 152 | return VLC_SUCCESS; |
|---|
| 152 | 153 | |
|---|
| 153 | 154 | default: |
|---|
| 154 | 155 | return VLC_EGENERIC; |
|---|
| 155 | | } |
|---|
| | 156 | } |
|---|
| 156 | 157 | } |
|---|
| 157 | 158 | static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input ) |
|---|
| … | … | |
| 264 | 265 | static int DelStream( sout_mux_t *p_mux, sout_input_t *p_input ) |
|---|
| 265 | 266 | { |
|---|
| | 267 | VLC_UNUSED(p_input); |
|---|
| 266 | 268 | msg_Dbg( p_mux, "removing input" ); |
|---|
| 267 | 269 | |
|---|
| 268 | 270 | msg_Dbg( p_mux, "writing header data" ); |
|---|
| 269 | | if( !sout_AccessOutSeek( p_mux->p_access, 0 ) ) |
|---|
| | 271 | if( sout_AccessOutSeek( p_mux->p_access, 0 ) == VLC_SUCCESS ) |
|---|
| 270 | 272 | { |
|---|
| 271 | 273 | sout_AccessOutWrite( p_mux->p_access, GetHeader( p_mux ) ); |
|---|