diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib index f2372417ee..9371a3c4f8 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/classes.nib @@ -316,6 +316,7 @@ "o_display" = id; "o_dump_chkbox" = id; "o_file_field" = id; + "o_http_chkbox" = id; "o_method" = id; "o_misc_lbl" = id; "o_mux_lbl" = id; @@ -325,7 +326,10 @@ "o_output_ckbox" = id; "o_output_settings" = id; "o_output_sheet" = id; + "o_rtsp_chkbox" = id; "o_sap_chkbox" = id; + "o_sdp_url" = id; + "o_sdp_url_lbl" = id; "o_slp_chkbox" = id; "o_stream_address" = id; "o_stream_address_lbl" = id; diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib index d281f309e7..b9a6d42f7f 100644 --- a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib +++ b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/info.nib @@ -3,28 +3,28 @@ IBDocumentLocation - 391 199 505 517 0 0 1280 1002 + 539 187 505 517 0 0 1024 746 IBEditorPositions 1617 - 693 686 104 149 0 0 1280 1002 + 542 480 104 149 0 0 1024 746 29 - -9 958 419 44 0 0 1280 1002 + 366 655 419 44 0 0 1024 746 915 54 452 185 199 0 0 1024 746 IBFramework Version - 364.0 + 362.0 IBLockedObjects 1789 IBOpenObjects + 1411 + 29 21 1617 - 1647 - 29 IBSystem Version 7H63 diff --git a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib index fda4eaf367..6a8be0406a 100644 Binary files a/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib and b/extras/MacOSX/Resources/English.lproj/MainMenu.nib/objects.nib differ diff --git a/modules/gui/macosx/output.m b/modules/gui/macosx/output.m index c3214deaef..519d3a5ece 100644 --- a/modules/gui/macosx/output.m +++ b/modules/gui/macosx/output.m @@ -72,7 +72,7 @@ - (void)awakeFromNib { [self initStrings]; - + [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(outputInfoChanged:) name: NSControlTextDidChangeNotification @@ -105,6 +105,10 @@ selector: @selector(transcodeInfoChanged:) name: NSControlTextDidChangeNotification object: o_channel_name]; + [[NSNotificationCenter defaultCenter] addObserver: self + selector: @selector(transcodeInfoChanged:) + name: NSControlTextDidChangeNotification + object: o_sdp_url]; [o_mux_selector setAutoenablesItems: NO]; [self transcodeChanged:nil]; @@ -122,11 +126,11 @@ NSArray *o_a_codecs = [NSArray arrayWithObjects: @"mpga", @"mp3 ", @"mp4a", @"a52 ", @"vorb", @"flac", @"spx ", nil]; NSArray *o_v_codecs = [NSArray arrayWithObjects: @"mp1v", @"mp2v", @"mp4v", @"DIV1", @"DIV2", @"DIV3", @"H263", @"I263", @"WMV1", @"WMV2", @"MJPG", @"theo", nil]; - + [o_output_ckbox setTitle: _NS("Advanced output:")]; [o_output_settings setTitle: _NS("Settings...")]; [o_btn_ok setTitle: _NS("OK")]; - + [o_options_lbl setTitle: _NS("Output Options")]; [o_display setTitle: _NS("Play locally")]; [[o_method cellAtRow:0 column:0] setTitle: _NS("File")]; @@ -140,12 +144,13 @@ [[o_stream_type itemAtIndex: 1] setTitle: @"MMSH"]; [[o_stream_type itemAtIndex: 2] setTitle: @"UDP"]; [[o_stream_type itemAtIndex: 3] setTitle: @"RTP"]; + [[o_stream_type itemAtIndex: 4] setTitle: @"RTP (New)"]; [o_stream_type_lbl setStringValue: _NS("Type")]; - + [o_mux_lbl setStringValue: _NS("Encapsulation Method")]; [o_mux_selector removeAllItems]; [o_mux_selector addItemsWithTitles: o_muxers]; - + [o_transcode_lbl setTitle: _NS("Transcode options")]; [o_transcode_video_chkbox setTitle: _NS("Video")]; [o_transcode_video_selector removeAllItems]; @@ -162,11 +167,15 @@ [o_transcode_audio_channels_lbl setStringValue: _NS("Channels")]; [o_transcode_audio_channels removeAllItems]; [o_transcode_audio_channels addItemsWithObjectValues: o_a_channels]; - + [o_misc_lbl setTitle: _NS("Stream Announcing")]; [o_sap_chkbox setTitle: _NS("SAP announce")]; [o_slp_chkbox setTitle: _NS("SLP announce")]; + [o_rtsp_chkbox setTitle: _NS("RTSP announce")]; + [o_http_chkbox setTitle:_NS("HTTP announce")]; + [o_channel_name_lbl setStringValue: _NS("Channel Name")]; + [o_sdp_url_lbl setStringValue: _NS("SDP file address")]; } - (IBAction)outputChanged:(id)sender; @@ -200,10 +209,13 @@ { NSString *o_mode; o_mode = [[o_method selectedCell] title]; - + [o_sap_chkbox setEnabled: NO]; [o_slp_chkbox setEnabled: NO]; + [o_http_chkbox setEnabled: NO]; + [o_rtsp_chkbox setEnabled: NO]; [o_channel_name setEnabled: NO]; + [o_sdp_url setEnabled: NO]; [[o_mux_selector itemAtIndex: 0] setEnabled: YES]; if( [o_mode isEqualToString: _NS("File")] ) @@ -236,9 +248,9 @@ [o_stream_port_stp setEnabled: YES]; [o_stream_type setEnabled: YES]; [o_mux_selector setEnabled: YES]; - + o_mode = [o_stream_type titleOfSelectedItem]; - + if( [o_mode isEqualToString: @"HTTP"] ) { [o_stream_address setEnabled: YES]; @@ -267,6 +279,7 @@ [[o_mux_selector itemAtIndex: 6] setEnabled: NO]; [[o_mux_selector itemAtIndex: 7] setEnabled: NO]; [[o_mux_selector itemAtIndex: 8] setEnabled: NO]; + [o_mux_selector selectItemAtIndex: 5]; } else if( [o_mode isEqualToString: @"UDP"] ) { @@ -299,11 +312,37 @@ [[o_mux_selector itemAtIndex: 7] setEnabled: NO]; [[o_mux_selector itemAtIndex: 8] setEnabled: YES]; } + else if( [o_mode isEqualToString: @"RTP (New)"] ) + { + [o_stream_address setEnabled: YES]; + [o_stream_ttl setEnabled: YES]; + [o_stream_ttl_stp setEnabled: YES]; + [[o_mux_selector itemAtIndex: 0] setEnabled: NO]; + [[o_mux_selector itemAtIndex: 1] setEnabled: NO]; + [[o_mux_selector itemAtIndex: 2] setEnabled: NO]; + [[o_mux_selector itemAtIndex: 3] setEnabled: NO]; + [[o_mux_selector itemAtIndex: 4] setEnabled: NO]; + [[o_mux_selector itemAtIndex: 5] setEnabled: NO]; + [[o_mux_selector itemAtIndex: 6] setEnabled: NO]; + [[o_mux_selector itemAtIndex: 7] setEnabled: NO]; + [[o_mux_selector itemAtIndex: 8] setEnabled: YES]; + [o_mux_selector selectItemAtIndex: 8]; + [o_sap_chkbox setEnabled: YES]; + [o_slp_chkbox setEnabled: NO]; + [o_rtsp_chkbox setEnabled: YES]; + [o_http_chkbox setEnabled: YES]; + [o_channel_name setEnabled: YES]; + } } - if( ![[o_mux_selector selectedItem] isEnabled] ) + + if( ![[o_mux_selector selectedItem] isEnabled] && ![o_mode isEqualToString: @"RTP (New)"] ) { [o_mux_selector selectItemAtIndex: 0]; } + else if (![[o_mux_selector selectedItem] isEnabled] && [o_mode isEqualToString: @"RTP (New)"] ) + { + [o_mux_selector selectItemAtIndex: 8]; + } [self outputInfoChanged: nil]; } @@ -352,7 +391,7 @@ { o_mode = [o_stream_type titleOfSelectedItem]; o_announce = @""; - + if ( [o_mode isEqualToString: @"HTTP"] ) o_mode = @"http"; else if ( [o_mode isEqualToString: @"MMSH"] ) @@ -382,11 +421,46 @@ } else if ( [o_mode isEqualToString: @"RTP"] ) o_mode = @"rtp"; - - [o_mrl_string appendFormat: + + if ( ![o_mode isEqualToString: @"RTP (New)"] ) + { + + [o_mrl_string appendFormat: @"std{access=%@,mux=%@,url=\"%@:%@\"%@}", o_mode, o_mux_string, [o_stream_address stringValue], [o_stream_port stringValue], o_announce]; + } + else + { + NSString * o_stream_name; + if (![[o_channel_name stringValue] isEqualToString: @""] ) + { + o_stream_name = [NSString stringWithFormat:@",name=%@", + [o_channel_name stringValue]]; + } + else + { + o_stream_name = @""; + } + + if ( [o_sap_chkbox state] == NSOnState ) + { + o_announce = @",sdp=sap"; + } + else if ([o_rtsp_chkbox state] == NSOnState ) + { + o_announce = [NSString stringWithFormat:@",sdp=\"rtsp://%@\"",[o_sdp_url stringValue]]; + + } + else if ([o_http_chkbox state] == NSOnState ) + { + o_announce = [NSString stringWithFormat:@",sdp=\"http://%@\"",[o_sdp_url stringValue]]; + } + [o_mrl_string appendFormat: + @"rtp{dst=\"%@\",port=%@%@%@}",[o_stream_address stringValue], + [o_stream_port stringValue], o_stream_name, o_announce]; + } + } if( [o_display state] == NSOnState ) { @@ -482,7 +556,7 @@ - (void)transcodeInfoChanged:(NSNotification *)o_notification { NSMutableString *o_transcode_string; - + if( [o_transcode_video_chkbox state] == NSOnState || [o_transcode_audio_chkbox state] == NSOnState ) { @@ -499,6 +573,7 @@ } if ( [o_transcode_audio_chkbox state] == NSOnState ) { +fprintf(stderr,"%s\n",[[o_transcode_audio_bitrate stringValue] cString]); [o_transcode_string appendFormat: @"acodec=\"%@\",ab=\"%@\"", [o_transcode_audio_selector titleOfSelectedItem], [o_transcode_audio_bitrate stringValue]]; @@ -515,7 +590,39 @@ - (IBAction)announceChanged:(id)sender { - [o_channel_name setEnabled: [o_sap_chkbox state] || [o_slp_chkbox state]]; + NSString *o_mode; + o_mode = [[o_stream_type selectedCell] title]; + [o_channel_name setEnabled: [o_sap_chkbox state] || [o_slp_chkbox state] + || [o_mode isEqualToString: @"RTP (New)"]]; + + if ([o_mode isEqualToString: @"RTP (New)"]) + { + if ([[sender title] isEqualToString: _NS("SAP announce")]) + { + [o_rtsp_chkbox setState:NSOffState]; + [o_http_chkbox setState:NSOffState]; + } + else if ([[sender title] isEqualToString:_NS("RTSP announce")]) + { + [o_sap_chkbox setState:NSOffState]; + [o_http_chkbox setState:NSOffState]; + } + else if ([[sender title] isEqualToString:_NS("HTTP announce")]) + { + [o_sap_chkbox setState:NSOffState]; + [o_rtsp_chkbox setState:NSOffState]; + } + + if ( [o_rtsp_chkbox state] == NSOnState || + [o_http_chkbox state] == NSOnState) + { + [o_sdp_url setEnabled: YES]; + } + else + { + [o_sdp_url setEnabled: NO]; + } + } [self outputInfoChanged: nil]; }