| 40 | | #define ADD_PROFILE( name ) ui.profileBox->addItem( name ); |
|---|
| 41 | | ADD_PROFILE( "Custom" ) |
|---|
| 42 | | ADD_PROFILE( "IPod" ) |
|---|
| 43 | | ADD_PROFILE( "XBox" ) |
|---|
| 44 | | ADD_PROFILE( "Windows" ) |
|---|
| 45 | | ADD_PROFILE( "PSP" ) |
|---|
| 46 | | ADD_PROFILE( "GSM" ) |
|---|
| | 42 | /* ADD HERE for new profiles */ |
|---|
| | 43 | #define ADD_PROFILE( name, shortname ) ui.profileBox->addItem( qtr( name ), QVariant( QString( shortname ) ) ); |
|---|
| | 44 | ADD_PROFILE( "Custom" , "Custom" ) |
|---|
| | 45 | ADD_PROFILE( "IPod (mp4/aac)", "IPod" ) |
|---|
| | 46 | ADD_PROFILE( "XBox", "XBox" ) |
|---|
| | 47 | ADD_PROFILE( "Windows (wmv/asf)", "Windows" ) |
|---|
| | 48 | ADD_PROFILE( "PSP", "PSP") |
|---|
| | 49 | ADD_PROFILE( "GSM", "GSM" ) |
|---|
| 173 | | /* The test is currently done with a QString, it could be done with the index, it'd depend how translation works */ |
|---|
| 174 | | if ( ui.profileBox->currentText() == "Custom" ) |
|---|
| 175 | | { |
|---|
| 176 | | ui.tabWidget->setEnabled( true ); |
|---|
| 177 | | } |
|---|
| 178 | | else |
|---|
| 179 | | { |
|---|
| 180 | | ui.tabWidget->setDisabled( true ); |
|---|
| 181 | | } |
|---|
| | 187 | QString profileString = ui.profileBox->itemData( ui.profileBox->currentIndex() ).toString(); |
|---|
| | 188 | msg_Dbg( p_intf, "Profile Used: %s", qta( profileString )); |
|---|
| | 189 | int index; |
|---|
| | 190 | |
|---|
| | 191 | #define setProfile( muxName, hasVideo, vCodecName, hasAudio, aCodecName ) \ |
|---|
| | 192 | { \ |
|---|
| | 193 | ui.muxName ##Mux->setChecked( true ); \ |
|---|
| | 194 | \ |
|---|
| | 195 | ui.transcodeAudio->setChecked( hasAudio ); \ |
|---|
| | 196 | index = indexFromItemData( ui.aCodecBox, vCodecName ); \ |
|---|
| | 197 | if( index >= 0 ) ui.aCodecBox->setCurrentIndex( index ); \ |
|---|
| | 198 | \ |
|---|
| | 199 | ui.transcodeVideo->setChecked( hasVideo ); \ |
|---|
| | 200 | index = indexFromItemData( ui.aCodecBox, vCodecName ); \ |
|---|
| | 201 | if( index >=0 ) ui.vCodecBox->setCurrentIndex( index ); \ |
|---|
| | 202 | } |
|---|
| | 203 | |
|---|
| | 204 | /* ADD HERE the profiles you want and need */ |
|---|
| | 205 | if( profileString == "IPod" ) setProfile( MP4, true, "mp4a", true, "mp4v" ) |
|---|
| | 206 | else if( profileString == "XBox" ) setProfile( ASF, true, "wma", true, "WMV2" ) |
|---|
| | 207 | |
|---|
| | 208 | /* If the profile is not a custom one, then disable the tabWidget */ |
|---|
| | 209 | if ( profileString == "Custom" ) |
|---|
| | 210 | { |
|---|
| | 211 | ui.tabWidget->setEnabled( true ); |
|---|
| | 212 | } |
|---|
| | 213 | else |
|---|
| | 214 | { |
|---|
| | 215 | ui.tabWidget->setDisabled( true ); |
|---|
| | 216 | } |
|---|
| | 217 | |
|---|
| | 218 | /* Update the MRL !! */ |
|---|
| | 219 | updateMRL(); |
|---|
| 189 | | else x->hide();\ |
|---|
| 190 | | } |
|---|
| 191 | | TGV( ui.HTTPOutput ) ; TGV( ui.UDPOutput ) ; TGV( ui.MMSHOutput ) ; |
|---|
| 192 | | TGV( ui.HTTPEdit ) ; TGV( ui.UDPEdit ) ; TGV( ui.MMSHEdit ) ; |
|---|
| 193 | | TGV( ui.HTTPLabel ) ; TGV( ui.UDPLabel ) ; TGV( ui.MMSHLabel ) ; |
|---|
| 194 | | TGV( ui.HTTPPortLabel ) ; TGV( ui.UDPPortLabel ) ; TGV( ui.MMSHPortLabel ) ; |
|---|
| 195 | | TGV( ui.HTTPPort ) ; TGV( ui.UDPPort ) ; TGV( ui.MMSHPort ) ; |
|---|
| 196 | | updateGeometry(); |
|---|
| | 227 | else x->hide();\ |
|---|
| | 228 | } |
|---|
| | 229 | TGV( ui.HTTPOutput ) ; TGV( ui.UDPOutput ) ; TGV( ui.MMSHOutput ) ; |
|---|
| | 230 | TGV( ui.HTTPEdit ) ; TGV( ui.UDPEdit ) ; TGV( ui.MMSHEdit ) ; |
|---|
| | 231 | TGV( ui.HTTPLabel ) ; TGV( ui.UDPLabel ) ; TGV( ui.MMSHLabel ) ; |
|---|
| | 232 | TGV( ui.HTTPPortLabel ) ; TGV( ui.UDPPortLabel ) ; TGV( ui.MMSHPortLabel ) ; |
|---|
| | 233 | TGV( ui.HTTPPort ) ; TGV( ui.UDPPort ) ; TGV( ui.MMSHPort ) ; |
|---|
| | 234 | updateGeometry(); |
|---|
| 275 | | } |
|---|
| 276 | | else |
|---|
| 277 | | { |
|---|
| 278 | | mrl = ":sout=#transcode{"; |
|---|
| 279 | | } |
|---|
| 280 | | mrl.append( "acodec=" ); |
|---|
| 281 | | mrl.append( sout.psz_acodec ); |
|---|
| 282 | | mrl.append( "," ); |
|---|
| 283 | | mrl.append( "ab=" ); |
|---|
| 284 | | mrl.append( QString::number( sout.i_ab,10 ) ); |
|---|
| 285 | | mrl.append( "," ); |
|---|
| 286 | | mrl.append( "channels=" ); |
|---|
| 287 | | mrl.append( QString::number( sout.i_channels,10 ) ); |
|---|
| 288 | | trans = true; |
|---|
| 289 | | } |
|---|
| 290 | | mrl.append( "}" ); |
|---|
| 291 | | } |
|---|
| | 300 | mrl.append( "vb=" ); |
|---|
| | 301 | mrl.append( QString::number( sout.i_vb,10 ) ); |
|---|
| | 302 | mrl.append( "," ); |
|---|
| | 303 | mrl.append( "scale=" ); |
|---|
| | 304 | mrl.append( QString::number( sout.f_scale ) ); |
|---|
| | 305 | trans = true; |
|---|
| | 306 | } |
|---|
| | 307 | |
|---|
| | 308 | if ( ui.transcodeAudio->isChecked() ) |
|---|
| | 309 | { |
|---|
| | 310 | if ( trans ) |
|---|
| | 311 | { |
|---|
| | 312 | mrl.append( "," ); |
|---|
| | 313 | } |
|---|
| | 314 | else |
|---|
| | 315 | { |
|---|
| | 316 | mrl = ":sout=#transcode{"; |
|---|
| | 317 | } |
|---|
| | 318 | mrl.append( "acodec=" ); |
|---|
| | 319 | mrl.append( sout.psz_acodec ); |
|---|
| | 320 | mrl.append( "," ); |
|---|
| | 321 | mrl.append( "ab=" ); |
|---|
| | 322 | mrl.append( QString::number( sout.i_ab,10 ) ); |
|---|
| | 323 | mrl.append( "," ); |
|---|
| | 324 | mrl.append( "channels=" ); |
|---|
| | 325 | mrl.append( QString::number( sout.i_channels,10 ) ); |
|---|
| | 326 | trans = true; |
|---|
| | 327 | } |
|---|
| | 328 | mrl.append( "}" ); |
|---|
| | 329 | } |
|---|
| 390 | | |
|---|
| 391 | | // void SoutDialog::updateMRL() |
|---|
| 392 | | // { |
|---|
| 393 | | // sout_gui_descr_t pd; |
|---|
| 394 | | // memset( &pd, 0, sizeof( sout_gui_descr_t ) ); |
|---|
| 395 | | // |
|---|
| 396 | | // /* Output */ |
|---|
| 397 | | // pd.b_dump = ui.rawInput->isChecked(); |
|---|
| 398 | | // if( pd.b_dump ) goto end; |
|---|
| 399 | | // |
|---|
| 400 | | // pd.b_local = ui.localOutput->isChecked(); |
|---|
| 401 | | // pd.b_file = ui.fileOutput->isChecked(); |
|---|
| 402 | | // pd.b_http = ui.HTTPOutput->isChecked(); |
|---|
| 403 | | // pd.b_mms = ui.MMSHOutput->isChecked(); |
|---|
| 404 | | // pd.b_udp = ui.UDPOutput->isChecked(); |
|---|
| 405 | | // |
|---|
| 406 | | // pd.psz_file = ui.fileOutput->isChecked() ? |
|---|
| 407 | | // strdup( qtu( ui.fileEdit->text() ) ): NULL; |
|---|
| 408 | | // pd.psz_http = ui.HTTPOutput->isChecked() ? |
|---|
| 409 | | // strdup( qtu( ui.HTTPEdit->text() ) ) : NULL; |
|---|
| 410 | | // pd.psz_mms = ui.MMSHOutput->isChecked() ? |
|---|
| 411 | | // strdup( qtu( ui.MMSHEdit->text() ) ): NULL; |
|---|
| 412 | | // pd.psz_udp = ui.UDPOutput->isChecked() ? |
|---|
| 413 | | // strdup( qtu( ui.UDPEdit->text() ) ): NULL; |
|---|
| 414 | | // |
|---|
| 415 | | // pd.i_http = ui.HTTPPort->value(); |
|---|
| 416 | | // pd.i_mms = ui.MMSHPort->value(); |
|---|
| 417 | | // pd.i_udp = ui.UDPPort->value(); |
|---|
| 418 | | // |
|---|
| 419 | | // /* Mux */ |
|---|
| 420 | | // #define SMUX( x, txt ) if( ui.x##Mux->isChecked() ) pd.psz_mux = strdup( txt ); |
|---|
| 421 | | // SMUX( PS, "ps" ); |
|---|
| 422 | | // SMUX( TS, "ts" ); |
|---|
| 423 | | // SMUX( MPEG1, "mpeg" ); |
|---|
| 424 | | // SMUX( Ogg, "ogg" ); |
|---|
| 425 | | // SMUX( ASF, "asf" ); |
|---|
| 426 | | // SMUX( MP4, "mp4" ); |
|---|
| 427 | | // SMUX( MOV, "mov" ); |
|---|
| 428 | | // SMUX( WAV, "wav" ); |
|---|
| 429 | | // SMUX( RAW, "raw" ); |
|---|
| 430 | | // SMUX( FLV, "flv" ); |
|---|
| 431 | | // |
|---|
| 432 | | // |
|---|
| 433 | | // |
|---|
| 434 | | // /* Transcode */ |
|---|
| 435 | | // // pd.b_soverlay = ui.sOverlay->isChecked(); |
|---|
| 436 | | // // pd.i_vb = ui.vBitrate->value(); |
|---|
| 437 | | // // pd.i_ab = ui.aBitrate->value(); |
|---|
| 438 | | // // pd.i_channels = ui.aChannels->value(); |
|---|
| 439 | | // // pd.f_scale = atof( qta( ui.vScale->currentText() ) ); |
|---|
| 440 | | // // |
|---|
| 441 | | // // pd.psz_vcodec = ui.transcodeVideo->isChecked() ? |
|---|
| 442 | | // // strdup( qtu( ui.vCodec->itemData( |
|---|
| 443 | | // // ui.vCodec->currentIndex() ). toString() ) ) : NULL; |
|---|
| 444 | | // // pd.psz_acodec = ui.transcodeAudio->isChecked() ? |
|---|
| 445 | | // // strdup( qtu( ui.aCodec->itemData( |
|---|
| 446 | | // // ui.aCodec->currentIndex() ).toString() ) ) : NULL; |
|---|
| 447 | | // // pd.psz_scodec = ui.transcodeSubs->isChecked() ? |
|---|
| 448 | | // // strdup( qtu( ui.sCodec->itemData( |
|---|
| 449 | | // // ui.sCodec->currentIndex() ).toString() ) ) : NULL; |
|---|
| 450 | | // // pd.b_sap = ui.sap->isChecked(); |
|---|
| 451 | | // // pd.b_all_es = ui.soutAll->isChecked(); |
|---|
| 452 | | // // pd.psz_name = qtu( ui.sapName->text() ); |
|---|
| 453 | | // // pd.psz_group = qtu( ui.sapGroup->text() ); |
|---|
| 454 | | // // pd.i_ttl = ui.ttl->value() ; |
|---|
| 455 | | // end: |
|---|
| 456 | | // sout_chain_t* p_chain = streaming_ChainNew(); |
|---|
| 457 | | // streaming_GuiDescToChain( VLC_OBJECT( p_intf ), p_chain, &pd ); |
|---|
| 458 | | // char *psz_mrl = streaming_ChainToPsz( p_chain ); |
|---|
| 459 | | // |
|---|
| 460 | | // ui.mrlEdit->setText( qfu( strdup( psz_mrl ) ) ); |
|---|
| 461 | | // free( pd.psz_acodec ); free( pd.psz_vcodec ); free( pd.psz_scodec ); |
|---|
| 462 | | // free( pd.psz_file );free( pd.psz_http ); free( pd.psz_mms ); |
|---|
| 463 | | // free( pd.psz_udp ); free( pd.psz_mux ); |
|---|
| 464 | | // } |
|---|