- sout_gui_descr_t sout;
- memset( &sout, 0, sizeof( sout_gui_descr_t ) );
- unsigned int counter = 0;
-
- sout.b_local = ui.localOutput->isChecked();
- sout.b_file = ui.fileOutput->isChecked();
- sout.b_http = ui.HTTPOutput->isChecked();
- sout.b_mms = ui.MMSHOutput->isChecked();
- sout.b_icecast = ui.IcecastOutput->isChecked();
- sout.b_rtp = ui.RTPOutput->isChecked();
- sout.b_udp = ui.UDPOutput->isChecked();
- sout.b_sap = ui.sap->isChecked();
- sout.b_all_es = ui.soutAll->isChecked();
- sout.psz_vcodec = strdup( qtu( ui.vCodecBox->itemData( ui.vCodecBox->currentIndex() ).toString() ) );
- sout.psz_acodec = strdup( qtu( ui.aCodecBox->itemData( ui.aCodecBox->currentIndex() ).toString() ) );
- sout.psz_scodec = strdup( qtu( ui.subsCodecBox->itemData( ui.subsCodecBox->currentIndex() ).toString() ) );
- sout.psz_file = strdup( qtu( ui.fileEdit->text() ) );
- sout.psz_http = strdup( qtu( ui.HTTPEdit->text() ) );
- sout.psz_mms = strdup( qtu( ui.MMSHEdit->text() ) );
- sout.psz_rtp = strdup( qtu( ui.RTPEdit->text() ) );
- sout.psz_udp = strdup( qtu( ui.UDPEdit->text() ) );
- sout.psz_icecast = strdup( qtu( ui.IcecastEdit->text() ) );
- sout.sa_icecast.psz_username = strdup( qtu( ui.IcecastNamePassEdit->text() ) );
- sout.sa_icecast.psz_password = strdup( qtu( ui.IcecastNamePassEdit->text() ) );
- sout.psz_icecast_mountpoint = strdup( qtu( ui.IcecastMountpointEdit->text() ) );
- sout.i_http = ui.HTTPPort->value();
- sout.i_mms = ui.MMSHPort->value();
- sout.i_rtp = ui.RTPPort->value();
- sout.i_udp = ui.UDPPort->value();
- sout.i_icecast = ui.IcecastPort->value();
- sout.i_ab = ui.aBitrateSpin->value();
- sout.i_vb = ui.vBitrateSpin->value();
- sout.i_channels = ui.aChannelsSpin->value();
- sout.f_scale = atof( qta( ui.vScaleBox->currentText() ) );
- sout.psz_group = strdup( qtu( ui.sapGroup->text() ) );
- sout.psz_name = strdup( qtu( ui.sapName->text() ) );
-
- if ( sout.b_local ) counter++ ;
- if ( sout.b_file ) counter++ ;
- if ( sout.b_http ) counter++ ;
- if ( sout.b_mms ) counter++ ;
- if ( sout.b_rtp ) counter++ ;
- if ( sout.b_udp ) counter ++;
- if ( sout.b_icecast ) counter ++;
-
-#define SMUX( x, txt ) if( ui.x->isChecked() ) sout.psz_mux = strdup( txt );
- SMUX( PSMux, "ps" );
- SMUX( TSMux, "ts" );
- SMUX( MPEG1Mux, "mpeg" );
- SMUX( OggMux, "ogg" );
- SMUX( ASFMux, "asf" );
- SMUX( MP4Mux, "mp4" );
- SMUX( MOVMux, "mov" );
- SMUX( WAVMux, "wav" );
- SMUX( RAWMux, "raw" );
- SMUX( FLVMux, "flv" );
- SMUX( MKVMux, "mkv" );
-
- bool trans = false;
- bool more = false;
-
- if ( ui.transcodeVideo->isChecked() || ui.transcodeAudio->isChecked() )
- {
- if ( ui.transcodeVideo->isChecked() )
- {
- mrl = ":sout=#transcode{";
- mrl.append( "vcodec=" );
- mrl.append( sout.psz_vcodec );
- mrl.append( "," );
- mrl.append( "vb=" );
- mrl.append( QString::number( sout.i_vb,10 ) );
- mrl.append( "," );
- mrl.append( "scale=" );
- mrl.append( QString::number( sout.f_scale ) );
- trans = true;
- }
-
- if ( ui.transcodeAudio->isChecked() )
- {
- if ( trans )
- {
- mrl.append( "," );
- }
- else
- {
- mrl = ":sout=#transcode{";
- }
- mrl.append( "acodec=" );
- mrl.append( sout.psz_acodec );
- mrl.append( "," );
- mrl.append( "ab=" );
- mrl.append( QString::number( sout.i_ab,10 ) );
- mrl.append( "," );
- mrl.append( "channels=" );
- mrl.append( QString::number( sout.i_channels,10 ) );
- trans = true;
- }
- mrl.append( "}" );
- }