Commit 9e783b71 authored by Felix Paul Kühne's avatar Felix Paul Kühne

macosx: split output from open panel

parent c835a204
...@@ -155,6 +155,7 @@ EXTRA_DIST += \ ...@@ -155,6 +155,7 @@ EXTRA_DIST += \
extras/package/macosx/Resources/English.lproj/ResumeDialog.xib \ extras/package/macosx/Resources/English.lproj/ResumeDialog.xib \
extras/package/macosx/Resources/English.lproj/SharedDialogs.xib \ extras/package/macosx/Resources/English.lproj/SharedDialogs.xib \
extras/package/macosx/Resources/English.lproj/SimplePreferences.xib \ extras/package/macosx/Resources/English.lproj/SimplePreferences.xib \
extras/package/macosx/Resources/English.lproj/StreamOutput.xib \
extras/package/macosx/Resources/English.lproj/SyncTracks.xib \ extras/package/macosx/Resources/English.lproj/SyncTracks.xib \
extras/package/macosx/Resources/English.lproj/VideoEffects.xib \ extras/package/macosx/Resources/English.lproj/VideoEffects.xib \
extras/package/macosx/Resources/fspanel/fs_background.png \ extras/package/macosx/Resources/fspanel/fs_background.png \
......
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8152.3" systemVersion="14F6a" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8152.3"/>
<capability name="box content view" minToolsVersion="7.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="VLCOutput">
<connections>
<outlet property="browseButton" destination="Jmb-Tp-iOD" id="Jnl-1K-xEI"/>
<outlet property="channelNameLabel" destination="k3s-1O-ta2" id="wGV-Yz-oEw"/>
<outlet property="channelNameTextField" destination="639-kH-MAw" id="im4-qb-M9P"/>
<outlet property="displayOnLocalScreenCheckbox" destination="5ZV-KT-f8p" id="rfe-Yx-5jL"/>
<outlet property="dumpCheckbox" destination="LXS-Yk-fsG" id="6oN-tc-ENT"/>
<outlet property="fileCheckbox" destination="hlR-dz-4vC" id="f2j-eh-qIM"/>
<outlet property="fileTextField" destination="hWN-pR-WjU" id="ftd-U5-YyZ"/>
<outlet property="httpCheckbox" destination="6rb-hy-Tes" id="m36-92-fza"/>
<outlet property="miscBox" destination="oA5-7V-7Z0" id="uDr-We-R8d"/>
<outlet property="muxLabel" destination="ja6-U3-8js" id="bxw-VF-6Dh"/>
<outlet property="muxSelectorPopup" destination="I4F-yo-4jZ" id="Y5v-4u-8Ev"/>
<outlet property="okButton" destination="Moj-Wu-DMX" id="oja-G4-3Hi"/>
<outlet property="optionsBox" destination="lFf-Vt-GlA" id="gpl-ef-Z2a"/>
<outlet property="outputMethodMatrix" destination="rbD-7I-E3s" id="9Kh-HL-n8m"/>
<outlet property="outputSheet" destination="Poi-vm-5SU" id="BER-LI-mSy"/>
<outlet property="rtspCheckbox" destination="PiK-Gm-63G" id="OaS-Wz-OzL"/>
<outlet property="sapCheckbox" destination="Ttn-20-6ZJ" id="fcO-Wy-DCB"/>
<outlet property="sdpURLLabel" destination="ooz-Cf-58S" id="NU3-ef-NMk"/>
<outlet property="sdpURLTextField" destination="sve-ta-Por" id="xoY-2Q-SFn"/>
<outlet property="streamAddressLabel" destination="dIT-Za-GZ1" id="4uQ-0k-8gJ"/>
<outlet property="streamAddressTextField" destination="rYi-sr-scq" id="hdf-Gx-Ufd"/>
<outlet property="streamPortLabel" destination="BJg-ve-g7Y" id="lhj-ei-Nfp"/>
<outlet property="streamPortStepper" destination="o4u-Rk-ouF" id="agg-fy-WWH"/>
<outlet property="streamPortTextField" destination="f6Q-bn-tII" id="8sE-aM-n6c"/>
<outlet property="streamTTLLabel" destination="pE8-jH-B2X" id="Ulw-Z8-k6L"/>
<outlet property="streamTTLStepper" destination="363-uQ-FZP" id="z7t-Lb-rxU"/>
<outlet property="streamTTLTextField" destination="cEb-9R-g1E" id="fND-Uj-m5K"/>
<outlet property="streamTypeLabel" destination="qTV-D2-4qj" id="VgK-QM-Xeg"/>
<outlet property="streamTypePopup" destination="4UQ-fz-Yyc" id="soT-yG-wwk"/>
<outlet property="transcodeAudioBitrateComboBox" destination="Yeb-za-sAB" id="NIr-Pg-okd"/>
<outlet property="transcodeAudioBitrateLabel" destination="HOS-pG-57A" id="YBR-pu-8D8"/>
<outlet property="transcodeAudioChannelsComboBox" destination="dKe-4f-p6f" id="odV-V5-lSt"/>
<outlet property="transcodeAudioChannelsLabel" destination="Bpf-5e-3Qe" id="CNf-ZW-OKl"/>
<outlet property="transcodeAudioCheckbox" destination="IRa-L7-1pX" id="3w7-hL-C4f"/>
<outlet property="transcodeAudioSelectorPopup" destination="EOF-Z1-25K" id="HlW-gF-1tf"/>
<outlet property="transcodeBox" destination="L1M-To-k82" id="Uei-mV-LAo"/>
<outlet property="transcodeVideoBitrateComboBox" destination="fWq-Up-O1D" id="HKR-dn-abH"/>
<outlet property="transcodeVideoBitrateLabel" destination="OEl-R9-y58" id="F9W-KY-4E2"/>
<outlet property="transcodeVideoCheckbox" destination="Soa-uy-ulr" id="2k0-a9-eSx"/>
<outlet property="transcodeVideoScaleComboBox" destination="cYk-Bl-eGZ" id="QJv-sv-UmP"/>
<outlet property="transcodeVideoScaleLabel" destination="dfW-h5-9bx" id="Bek-OB-CWI"/>
<outlet property="transcodeVideoSelectorPopup" destination="b49-7r-xIr" id="OWL-Ms-FwL"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Output Options" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="sout" animationBehavior="default" id="Poi-vm-5SU" userLabel="StreamSheet" customClass="NSPanel">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="156" y="251" width="524" height="540"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<value key="minSize" type="size" width="213" height="107"/>
<view key="contentView" id="WLI-pv-owx">
<rect key="frame" x="0.0" y="0.0" width="524" height="540"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Moj-Wu-DMX">
<rect key="frame" x="409" y="13" width="100" height="28"/>
<buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" inset="2" id="nnZ-eb-Xm0">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
</buttonCell>
<connections>
<action selector="outputCloseSheet:" target="-2" id="ti2-3i-vue"/>
</connections>
</button>
<box fixedFrame="YES" title="Output Options" translatesAutoresizingMaskIntoConstraints="NO" id="lFf-Vt-GlA">
<rect key="frame" x="17" y="329" width="490" height="205"/>
<view key="contentView" id="2rW-32-gxZ">
<rect key="frame" x="2" y="2" width="486" height="188"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<matrix verticalHuggingPriority="750" fixedFrame="YES" allowsEmptySelection="NO" autosizesCells="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rbD-7I-E3s">
<rect key="frame" x="14" y="65" width="115" height="93"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
<size key="cellSize" width="115" height="44"/>
<size key="intercellSpacing" width="4" height="4"/>
<buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="j30-oU-j9y">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<cells>
<column>
<buttonCell type="radio" title="File" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="cSP-eo-BVO">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<buttonCell type="radio" title="Stream" imagePosition="left" alignment="left" controlSize="small" inset="2" id="bLw-gT-7G5">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
</column>
</cells>
<connections>
<action selector="outputMethodChanged:" target="-2" id="rTc-JQ-C57"/>
</connections>
</matrix>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qTV-D2-4qj">
<rect key="frame" x="92" y="83" width="83" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="Type:" id="FmW-wJ-seP">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rYi-sr-scq">
<rect key="frame" x="150" y="53" width="205" height="19"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" enabled="NO" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="8Od-oU-Zg1">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="f6Q-bn-tII">
<rect key="frame" x="395" y="50" width="50" height="19"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" enabled="NO" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="right" title="1234" drawsBackground="YES" id="u8D-ZB-t1Z">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="takeIntValueFrom:" target="o4u-Rk-ouF" id="3DD-ks-aKB"/>
</connections>
</textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Jmb-Tp-iOD">
<rect key="frame" x="358" y="121" width="113" height="28"/>
<buttonCell key="cell" type="push" title="Browse..." bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" inset="2" id="Ynq-6T-cbU">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="outputFileBrowse:" target="-2" id="Bgd-be-rU7"/>
</connections>
</button>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dIT-Za-GZ1">
<rect key="frame" x="92" y="53" width="83" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="Address:" id="JUh-NF-Yqm">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hWN-pR-WjU">
<rect key="frame" x="95" y="127" width="260" height="19"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="1X0-W0-nAb">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="o4u-Rk-ouF">
<rect key="frame" x="450" y="45" width="19" height="27"/>
<stepperCell key="cell" continuous="YES" alignment="left" tag="1" maxValue="65535" doubleValue="1234" valueWraps="YES" id="lLd-2l-hI7"/>
<connections>
<action selector="streamPortStepperChanged:" target="-2" id="XED-7o-SdA"/>
</connections>
</stepper>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4UQ-fz-Yyc">
<rect key="frame" x="147" y="76" width="91" height="22"/>
<popUpButtonCell key="cell" type="push" title="HTTP" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="clipping" enabled="NO" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="4hN-qW-hgT" id="XpA-TL-e0V">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
<menu key="menu" title="OtherViews" id="Wdo-54-ijP">
<items>
<menuItem title="HTTP" state="on" id="4hN-qW-hgT"/>
<menuItem title="MMSH" id="FI5-js-kK7"/>
<menuItem title="UDP" id="nQl-yX-uPA"/>
<menuItem title="RTP" id="hkn-gR-vk0"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="outputMethodChanged:" target="-2" id="Swy-xU-Mnd"/>
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BJg-ve-g7Y">
<rect key="frame" x="354" y="55" width="36" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Port:" id="NAD-7o-cLM">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cEb-9R-g1E">
<rect key="frame" x="395" y="80" width="50" height="19"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" enabled="NO" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="right" title="1" drawsBackground="YES" id="zYS-cy-Z74">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pE8-jH-B2X">
<rect key="frame" x="354" y="82" width="36" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="TTL:" id="n7J-Rg-RrL">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ja6-U3-8js">
<rect key="frame" x="13" y="19" width="129" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="Encapsulation:" id="7kT-83-qcQ">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="I4F-yo-4jZ">
<rect key="frame" x="234" y="14" width="124" height="22"/>
<popUpButtonCell key="cell" type="push" title="MPEG TS" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="clipping" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="0ez-IF-b9x" id="ec3-Ul-A9d">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
<menu key="menu" title="OtherViews" id="xt6-4k-n1A">
<items>
<menuItem title="MPEG TS" state="on" id="0ez-IF-b9x"/>
<menuItem title="MPEG PS" id="UUW-8O-erm"/>
<menuItem title="MPEG 1" id="T2q-1h-hnQ"/>
<menuItem title="Ogg" id="Xsz-yB-FVE"/>
<menuItem title="AVI" id="JiM-k5-ibC"/>
<menuItem title="ASF" id="6la-hm-2ZO"/>
<menuItem title="MPEG 4" id="6jk-Wl-BWX"/>
<menuItem title="QuickTime" id="AgW-Co-Bba"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="outputMethodChanged:" target="-2" id="NMy-8Y-s1S"/>
</connections>
</popUpButton>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="363-uQ-FZP">
<rect key="frame" x="450" y="75" width="19" height="27"/>
<stepperCell key="cell" continuous="YES" alignment="left" tag="1" minValue="1" maxValue="65535" doubleValue="1" valueWraps="YES" id="QCT-Ps-u2f"/>
<connections>
<action selector="streamTTLStepperChanged:" target="-2" id="HeP-Dg-sp7"/>
</connections>
</stepper>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5ZV-KT-f8p">
<rect key="frame" x="13" y="153" width="159" height="18"/>
<buttonCell key="cell" type="check" title="Screen" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="Yml-Iq-kRG">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="outputInfoChanged:" target="-2" id="hOY-eM-rLl"/>
</connections>
</button>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LXS-Yk-fsG">
<rect key="frame" x="92" y="103" width="265" height="18"/>
<buttonCell key="cell" type="check" title="Dump raw input" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="a8K-Ss-hRu">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="outputInfoChanged:" target="-2" id="8pK-B2-nf2"/>
</connections>
</button>
</subviews>
</view>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<box fixedFrame="YES" title="Transcode Options" translatesAutoresizingMaskIntoConstraints="NO" id="L1M-To-k82">
<rect key="frame" x="17" y="180" width="490" height="142"/>
<view key="contentView" id="8ng-bK-6bk">
<rect key="frame" x="2" y="2" width="486" height="125"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="IRa-L7-1pX">
<rect key="frame" x="13" y="42" width="111" height="18"/>
<buttonCell key="cell" type="check" title="Audio" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="IVd-9U-lbe">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="transcodeChanged:" target="-2" id="aYL-JC-6VM"/>
</connections>
</button>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EOF-Z1-25K">
<rect key="frame" x="92" y="38" width="122" height="22"/>
<popUpButtonCell key="cell" type="push" title="acodec" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="clipping" enabled="NO" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="rZZ-Re-t2d" id="ipc-AR-rgf">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
<menu key="menu" title="OtherViews" id="WjC-uD-dZa">
<items>
<menuItem title="acodec" state="on" id="rZZ-Re-t2d"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="transcodeInfoChanged:" target="-2" id="b4O-P7-PhG"/>
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HOS-pG-57A">
<rect key="frame" x="291" y="43" width="92" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Bitrate (kb/s):" id="13k-Rl-3Xa">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OEl-R9-y58">
<rect key="frame" x="291" y="93" width="92" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Bitrate (kb/s):" id="ec6-eo-17W">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Soa-uy-ulr">
<rect key="frame" x="13" y="95" width="111" height="18"/>
<buttonCell key="cell" type="check" title="Video" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="9nZ-6i-Pyy">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="transcodeChanged:" target="-2" id="qSD-vu-K3M"/>
</connections>
</button>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="b49-7r-xIr">
<rect key="frame" x="92" y="91" width="122" height="22"/>
<popUpButtonCell key="cell" type="push" title="vcodec" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="clipping" enabled="NO" state="on" borderStyle="borderAndBezel" inset="2" arrowPosition="arrowAtCenter" preferredEdge="maxY" selectedItem="Vl9-6Y-5fo" id="3SK-Om-qfd">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="smallSystem"/>
<menu key="menu" title="OtherViews" id="GcS-BF-z28">
<items>
<menuItem title="vcodec" state="on" id="Vl9-6Y-5fo"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="transcodeInfoChanged:" target="-2" id="tLl-pB-bNy"/>
</connections>
</popUpButton>
<comboBox verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fWq-Up-O1D">
<rect key="frame" x="388" y="90" width="81" height="22"/>
<comboBoxCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" enabled="NO" borderStyle="bezel" alignment="left" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="4EC-UF-we1">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</comboBoxCell>
<connections>
<action selector="transcodeInfoChanged:" target="-2" id="IIJ-3o-lo9"/>
</connections>
</comboBox>
<comboBox verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Yeb-za-sAB">
<rect key="frame" x="388" y="37" width="81" height="22"/>
<comboBoxCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" enabled="NO" borderStyle="bezel" alignment="left" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="4kf-z6-Ejw">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</comboBoxCell>
<connections>
<action selector="transcodeInfoChanged:" target="-2" id="ZXj-ev-G4A"/>
</connections>
</comboBox>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Bpf-5e-3Qe">
<rect key="frame" x="291" y="18" width="92" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Channels" id="0Vg-aU-iII">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<comboBox verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dKe-4f-p6f">
<rect key="frame" x="388" y="12" width="81" height="22"/>
<comboBoxCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" enabled="NO" borderStyle="bezel" alignment="left" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="r9D-34-Fvx">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</comboBoxCell>
<connections>
<action selector="transcodeInfoChanged:" target="-2" id="wVf-f0-iwp"/>
</connections>
</comboBox>
<comboBox verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cYk-Bl-eGZ">
<rect key="frame" x="388" y="64" width="81" height="22"/>
<comboBoxCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" enabled="NO" borderStyle="bezel" alignment="left" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="dJu-4c-uuv">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</comboBoxCell>
<connections>
<action selector="transcodeInfoChanged:" target="-2" id="DZx-6A-eBk"/>
</connections>
</comboBox>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dfW-h5-9bx">
<rect key="frame" x="291" y="67" width="92" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Scale:" id="V3H-q4-f5L">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
</view>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
<box fixedFrame="YES" title="Stream Announcing" translatesAutoresizingMaskIntoConstraints="NO" id="oA5-7V-7Z0">
<rect key="frame" x="17" y="41" width="490" height="127"/>
<view key="contentView" id="TGS-Xp-eb1">
<rect key="frame" x="2" y="2" width="486" height="110"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Ttn-20-6ZJ">
<rect key="frame" x="17" y="79" width="221" height="18"/>
<buttonCell key="cell" type="check" title="SAP Announce" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" enabled="NO" inset="2" id="ghJ-Wd-xtF">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="announceChanged:" target="-2" id="Zov-Mk-Llp"/>
</connections>
</button>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="639-kH-MAw">
<rect key="frame" x="138" y="38" width="331" height="19"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" enabled="NO" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="vzf-kt-KT6">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="k3s-1O-ta2">
<rect key="frame" x="20" y="36" width="106" height="17"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="Channel Name:" id="KPb-5M-Xqq">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ooz-Cf-58S">
<rect key="frame" x="20" y="13" width="100" height="13"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="left" title="SDP URL" id="9GW-H2-EPq">
<font key="font" metaFont="label"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="sve-ta-Por">
<rect key="frame" x="138" y="11" width="331" height="19"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" enabled="NO" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="gnV-FF-sds">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PiK-Gm-63G">
<rect key="frame" x="17" y="61" width="227" height="18"/>
<buttonCell key="cell" type="check" title="RTSP Announce" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" enabled="NO" inset="2" id="3Kb-lH-0e6">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="announceChanged:" target="-2" id="wPN-jy-9Bi"/>
</connections>
</button>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6rb-hy-Tes">
<rect key="frame" x="241" y="79" width="227" height="18"/>
<buttonCell key="cell" type="check" title="HTTP Announce" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" enabled="NO" inset="2" id="Sax-Na-3iY">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="announceChanged:" target="-2" id="bFN-it-ImI"/>
</connections>
</button>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hlR-dz-4vC">
<rect key="frame" x="241" y="61" width="227" height="18"/>
<buttonCell key="cell" type="check" title="Export SDP as file" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" enabled="NO" inset="2" id="Zox-PS-UZl">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
<action selector="announceChanged:" target="-2" id="Ygz-4y-8Lj"/>
</connections>
</button>
</subviews>
</view>
<color key="borderColor" white="0.0" alpha="0.41999999999999998" colorSpace="calibratedWhite"/>
<color key="fillColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</box>
</subviews>
</view>
</window>
</objects>
</document>
...@@ -464,6 +464,7 @@ ...@@ -464,6 +464,7 @@
7D8BB0C01830393300FAE9B7 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0BE1830393300FAE9B7 /* MainWindow.xib */; }; 7D8BB0C01830393300FAE9B7 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7D8BB0BE1830393300FAE9B7 /* MainWindow.xib */; };
7DB65D5618ABD6490053B874 /* AddonManager.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DB65D5418ABD6490053B874 /* AddonManager.xib */; }; 7DB65D5618ABD6490053B874 /* AddonManager.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DB65D5418ABD6490053B874 /* AddonManager.xib */; };
7DD6EC101B58136D0047CF5C /* SimplePreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DD6EC0E1B58136D0047CF5C /* SimplePreferences.xib */; }; 7DD6EC101B58136D0047CF5C /* SimplePreferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DD6EC0E1B58136D0047CF5C /* SimplePreferences.xib */; };
7DE78AC61B5D0A360019454C /* StreamOutput.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DE78AC41B5D0A360019454C /* StreamOutput.xib */; };
7DE88F2A1831396A00CD9DA2 /* PlaylistAccessoryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */; }; 7DE88F2A1831396A00CD9DA2 /* PlaylistAccessoryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */; };
7DFFA16C16124F38001AF89F /* effects-one-button-pressed-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7DFFA16A16124F38001AF89F /* effects-one-button-pressed-dark.png */; }; 7DFFA16C16124F38001AF89F /* effects-one-button-pressed-dark.png in Resources */ = {isa = PBXBuildFile; fileRef = 7DFFA16A16124F38001AF89F /* effects-one-button-pressed-dark.png */; };
7DFFA16D16124F38001AF89F /* effects-one-button-pressed-dark@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7DFFA16B16124F38001AF89F /* effects-one-button-pressed-dark@2x.png */; }; 7DFFA16D16124F38001AF89F /* effects-one-button-pressed-dark@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7DFFA16B16124F38001AF89F /* effects-one-button-pressed-dark@2x.png */; };
...@@ -1248,6 +1249,7 @@ ...@@ -1248,6 +1249,7 @@
7DB65D5318ABD6380053B874 /* AddonsWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AddonsWindowController.m; path = ../../../modules/gui/macosx/AddonsWindowController.m; sourceTree = SOURCE_ROOT; }; 7DB65D5318ABD6380053B874 /* AddonsWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AddonsWindowController.m; path = ../../../modules/gui/macosx/AddonsWindowController.m; sourceTree = SOURCE_ROOT; };
7DB65D5518ABD6490053B874 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/AddonManager.xib; sourceTree = "<group>"; }; 7DB65D5518ABD6490053B874 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/AddonManager.xib; sourceTree = "<group>"; };
7DD6EC0F1B58136D0047CF5C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/SimplePreferences.xib; sourceTree = "<group>"; }; 7DD6EC0F1B58136D0047CF5C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/SimplePreferences.xib; sourceTree = "<group>"; };
7DE78AC51B5D0A360019454C /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/StreamOutput.xib; sourceTree = "<group>"; };
7DE88F291831396A00CD9DA2 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/PlaylistAccessoryView.xib; sourceTree = "<group>"; }; 7DE88F291831396A00CD9DA2 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/PlaylistAccessoryView.xib; sourceTree = "<group>"; };
7DF0435E1972E26A0022B534 /* AddonListDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AddonListDataSource.h; path = ../../../modules/gui/macosx/AddonListDataSource.h; sourceTree = SOURCE_ROOT; }; 7DF0435E1972E26A0022B534 /* AddonListDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AddonListDataSource.h; path = ../../../modules/gui/macosx/AddonListDataSource.h; sourceTree = SOURCE_ROOT; };
7DF0435F1972E26A0022B534 /* AddonListDataSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AddonListDataSource.m; path = ../../../modules/gui/macosx/AddonListDataSource.m; sourceTree = SOURCE_ROOT; }; 7DF0435F1972E26A0022B534 /* AddonListDataSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AddonListDataSource.m; path = ../../../modules/gui/macosx/AddonListDataSource.m; sourceTree = SOURCE_ROOT; };
...@@ -2898,6 +2900,7 @@ ...@@ -2898,6 +2900,7 @@
7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */, 7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */,
7D3F6523188051F2005776C4 /* BWQuincyMain.xib */, 7D3F6523188051F2005776C4 /* BWQuincyMain.xib */,
7DB65D5418ABD6490053B874 /* AddonManager.xib */, 7DB65D5418ABD6490053B874 /* AddonManager.xib */,
7DE78AC41B5D0A360019454C /* StreamOutput.xib */,
); );
name = xibs; name = xibs;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -3671,6 +3674,7 @@ ...@@ -3671,6 +3674,7 @@
1C88BBED19DC7C8100645190 /* ys-bottom-background_dark.png in Resources */, 1C88BBED19DC7C8100645190 /* ys-bottom-background_dark.png in Resources */,
1C88BB6719DC7C7800645190 /* ys-stop-pressed@2x.png in Resources */, 1C88BB6719DC7C7800645190 /* ys-stop-pressed@2x.png in Resources */,
CC91919D159B547C00E634A7 /* dropzone@2x.png in Resources */, CC91919D159B547C00E634A7 /* dropzone@2x.png in Resources */,
7DE78AC61B5D0A360019454C /* StreamOutput.xib in Resources */,
CC973B9C15F0D02F00D5F650 /* forward-3btns-dark-pressed.png in Resources */, CC973B9C15F0D02F00D5F650 /* forward-3btns-dark-pressed.png in Resources */,
CC973B9D15F0D02F00D5F650 /* forward-3btns-dark-pressed@2x.png in Resources */, CC973B9D15F0D02F00D5F650 /* forward-3btns-dark-pressed@2x.png in Resources */,
CC973B9E15F0D02F00D5F650 /* forward-3btns-dark.png in Resources */, CC973B9E15F0D02F00D5F650 /* forward-3btns-dark.png in Resources */,
...@@ -4000,6 +4004,14 @@ ...@@ -4000,6 +4004,14 @@
name = SimplePreferences.xib; name = SimplePreferences.xib;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
7DE78AC41B5D0A360019454C /* StreamOutput.xib */ = {
isa = PBXVariantGroup;
children = (
7DE78AC51B5D0A360019454C /* English */,
);
name = StreamOutput.xib;
sourceTree = "<group>";
};
7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */ = { 7DE88F281831396A00CD9DA2 /* PlaylistAccessoryView.xib */ = {
isa = PBXVariantGroup; isa = PBXVariantGroup;
children = ( children = (
......
/***************************************************************************** /*****************************************************************************
* output.h: MacOS X Output Dialog * output.h: MacOS X Output Dialog
***************************************************************************** *****************************************************************************
* Copyright (C) 2002-2007 VLC authors and VideoLAN * Copyright (C) 2002-2015 VLC authors and VideoLAN
* $Id$ * $Id$
* *
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net> * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
* Christophe Massiot <massiot@via.ecp.fr> * Christophe Massiot <massiot@via.ecp.fr>
* Derk-Jan Hartman <thedj@users.sourceforge.net> * Derk-Jan Hartman <thedj@users.sourceforge.net>
* Felix Paul Kühne <fkuehne # videolan org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -23,72 +24,61 @@ ...@@ -23,72 +24,61 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/ *****************************************************************************/
/*****************************************************************************
* VLCOutput interface
*****************************************************************************/
@interface VLCOutput : NSObject @interface VLCOutput : NSObject
{
IBOutlet id o_open_panel;
IBOutlet id o_output_ckbox;
IBOutlet id o_output_settings;
IBOutlet id o_output_sheet;
IBOutlet id o_btn_ok;
IBOutlet id o_options_lbl; @property (readwrite, weak) IBOutlet NSPanel *outputSheet;
IBOutlet id o_display; @property (readwrite, weak) IBOutlet NSButton *okButton;
IBOutlet id o_method;
IBOutlet id o_file_field;
IBOutlet id o_dump_chkbox;
IBOutlet id o_btn_browse;
IBOutlet id o_stream_address;
IBOutlet id o_stream_address_lbl;
IBOutlet id o_stream_port;
IBOutlet id o_stream_port_stp;
IBOutlet id o_stream_port_lbl;
IBOutlet id o_stream_ttl;
IBOutlet id o_stream_ttl_stp;
IBOutlet id o_stream_ttl_lbl;
IBOutlet id o_stream_type;
IBOutlet id o_stream_type_lbl;
IBOutlet id o_mux_lbl; @property (readwrite, weak) IBOutlet NSBox *optionsBox;
IBOutlet NSPopUpButton *o_mux_selector; @property (readwrite, weak) IBOutlet NSButton *displayOnLocalScreenCheckbox;
@property (readwrite, weak) IBOutlet NSMatrix *outputMethodMatrix;
@property (readwrite, weak) IBOutlet NSTextField *fileTextField;
@property (readwrite, weak) IBOutlet NSButton *dumpCheckbox;
@property (readwrite, weak) IBOutlet NSButton *browseButton;
@property (readwrite, weak) IBOutlet NSTextField *streamAddressTextField;
@property (readwrite, weak) IBOutlet NSTextField *streamAddressLabel;
@property (readwrite, weak) IBOutlet NSTextField *streamPortTextField;
@property (readwrite, weak) IBOutlet NSStepper *streamPortStepper;
@property (readwrite, weak) IBOutlet NSTextField *streamPortLabel;
@property (readwrite, weak) IBOutlet NSTextField *streamTTLTextField;
@property (readwrite, weak) IBOutlet NSStepper *streamTTLStepper;
@property (readwrite, weak) IBOutlet NSTextField *streamTTLLabel;
@property (readwrite, weak) IBOutlet NSPopUpButton *streamTypePopup;
@property (readwrite, weak) IBOutlet NSTextField *streamTypeLabel;
IBOutlet id o_transcode_audio_bitrate; @property (readwrite, weak) IBOutlet NSTextField *muxLabel;
IBOutlet id o_transcode_audio_bitrate_lbl; @property (readwrite, weak) IBOutlet NSPopUpButton *muxSelectorPopup;
IBOutlet id o_transcode_audio_channels;
IBOutlet id o_transcode_audio_channels_lbl;
IBOutlet id o_transcode_audio_chkbox;
IBOutlet id o_transcode_audio_selector;
IBOutlet id o_transcode_lbl;
IBOutlet id o_transcode_video_bitrate;
IBOutlet id o_transcode_video_bitrate_lbl;
IBOutlet id o_transcode_video_scale;
IBOutlet id o_transcode_video_scale_lbl;
IBOutlet id o_transcode_video_chkbox;
IBOutlet id o_transcode_video_selector;
IBOutlet id o_misc_lbl; @property (readwrite, weak) IBOutlet NSBox *transcodeBox;
IBOutlet id o_sap_chkbox; @property (readwrite, weak) IBOutlet NSComboBox *transcodeAudioBitrateComboBox;
IBOutlet id o_channel_name; @property (readwrite, weak) IBOutlet NSTextField *transcodeAudioBitrateLabel;
IBOutlet id o_channel_name_lbl; @property (readwrite, weak) IBOutlet NSComboBox *transcodeAudioChannelsComboBox;
@property (readwrite, weak) IBOutlet NSTextField *transcodeAudioChannelsLabel;
@property (readwrite, weak) IBOutlet NSButton *transcodeAudioCheckbox;
@property (readwrite, weak) IBOutlet NSPopUpButton *transcodeAudioSelectorPopup;
@property (readwrite, weak) IBOutlet NSComboBox *transcodeVideoBitrateComboBox;
@property (readwrite, weak) IBOutlet NSTextField *transcodeVideoBitrateLabel;
@property (readwrite, weak) IBOutlet NSComboBox *transcodeVideoScaleComboBox;
@property (readwrite, weak) IBOutlet NSTextField *transcodeVideoScaleLabel;
@property (readwrite, weak) IBOutlet NSButton *transcodeVideoCheckbox;
@property (readwrite, weak) IBOutlet NSPopUpButton *transcodeVideoSelectorPopup;
IBOutlet id o_sdp_url; @property (readwrite, weak) IBOutlet NSBox *miscBox;
IBOutlet id o_sdp_url_lbl; @property (readwrite, weak) IBOutlet NSButton *sapCheckbox;
IBOutlet id o_rtsp_chkbox; @property (readwrite, weak) IBOutlet NSTextField *channelNameTextField;
IBOutlet id o_http_chkbox; @property (readwrite, weak) IBOutlet NSTextField *channelNameLabel;
IBOutlet id o_file_chkbox;
}
@property (readwrite, retain) NSArray *soutMRL;
- (void)initStrings; @property (readwrite, weak) IBOutlet NSTextField *sdpURLTextField;
@property (readwrite, weak) IBOutlet NSTextField *sdpURLLabel;
@property (readwrite, weak) IBOutlet NSButton *rtspCheckbox;
@property (readwrite, weak) IBOutlet NSButton *httpCheckbox;
@property (readwrite, weak) IBOutlet NSButton *fileCheckbox;
@property (readonly) NSArray *soutMRL;
- (IBAction)outputChanged:(id)sender;
- (IBAction)outputSettings:(id)sender;
- (IBAction)outputCloseSheet:(id)sender; - (IBAction)outputCloseSheet:(id)sender;
- (IBAction)outputMethodChanged:(id)sender; - (IBAction)outputMethodChanged:(id)sender;
- (IBAction)outputInfoChanged:(id)object; - (IBAction)outputInfoChanged:(id)object;
- (void)TTLChanged:(NSNotification *)o_notification;
- (IBAction)outputFileBrowse:(id)sender; - (IBAction)outputFileBrowse:(id)sender;
- (IBAction)streamPortStepperChanged:(id)sender; - (IBAction)streamPortStepperChanged:(id)sender;
- (IBAction)streamTTLStepperChanged:(id)sender; - (IBAction)streamTTLStepperChanged:(id)sender;
...@@ -97,4 +87,5 @@ ...@@ -97,4 +87,5 @@
- (IBAction)announceChanged:(id)sender; - (IBAction)announceChanged:(id)sender;
- (IBAction)streamTTLStepperChanged:(id)sender; - (IBAction)streamTTLStepperChanged:(id)sender;
@end @end
/***************************************************************************** /*****************************************************************************
* output.m: MacOS X Output Dialog * output.m: MacOS X Output Dialog
***************************************************************************** *****************************************************************************
* Copyright (C) 2002-2013 VLC authors and VideoLAN * Copyright (C) 2002-2015 VLC authors and VideoLAN
* $Id$ * $Id$
* *
* Authors: Jon Lech Johansen <jon-vl@nanocrew.net> * Authors: Jon Lech Johansen <jon-vl@nanocrew.net>
* Christophe Massiot <massiot@via.ecp.fr> * Christophe Massiot <massiot@via.ecp.fr>
* Derk-Jan Hartman <thedj@users.sourceforge.net> * Derk-Jan Hartman <thedj@users.sourceforge.net>
* Benjamin Pracht <bigben AT videolan DOT org> * Benjamin Pracht <bigben AT videolan DOT org>
* Felix Paul Kühne <fkuehne -at- videolan -dot- org> * Felix Paul Kühne <fkuehne # videolan org>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -25,472 +25,428 @@ ...@@ -25,472 +25,428 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/ *****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
#include <stdlib.h> /* malloc(), free() */
#include <string.h>
#include "intf.h" #include "intf.h"
#include "output.h" #include "output.h"
/*****************************************************************************
* VLCOutput implementation
*****************************************************************************/
@interface VLCOutput() @interface VLCOutput()
{ {
NSString *o_transcode; NSString *_transcode;
NSArray *_soutMRL;
} }
@end @end
@implementation VLCOutput @implementation VLCOutput
- (id)init - (NSArray *)soutMRL
{ {
self = [super init]; return _soutMRL;
_soutMRL = [[NSArray alloc] init];
o_transcode = [[NSString alloc] init];
return self;
}
- (void)setTranscode:(NSString *)o_transcode_string
{
o_transcode = [o_transcode_string copy];
} }
- (void)awakeFromNib - (void)awakeFromNib
{ {
[self initStrings]; NSArray *muxers = [NSArray arrayWithObjects:@"MPEG TS", @"MPEG PS", @"MPEG 1",
@"Ogg", @"AVI", @"ASF", @"MPEG 4", @"Quicktime", @"Raw", nil];
NSArray *a_channels = [NSArray arrayWithObjects:@"1", @"2", @"4", @"6", nil];
NSArray *a_bitrates = [NSArray arrayWithObjects:@"16", @"32", @"64", @"96",
@"128", @"192", @"256", @"512", nil];
NSArray *v_bitrates = [NSArray arrayWithObjects:@"16", @"32", @"64", @"96",
@"128", @"192", @"256", @"384", @"512", @"768", @"1024", @"2048", @"3072", nil];
NSArray *v_scales = [NSArray arrayWithObjects:@"0.25", @"0.5", @"0.75", @"1", @"1.25", @"1.5", @"1.75", @"2", nil];
NSArray *a_codecs = [NSArray arrayWithObjects:@"mpga", @"mp3 ", @"mp4a", @"a52 ", @"vorb", @"flac", @"spx ", nil];
NSArray *v_codecs = [NSArray arrayWithObjects:@"mp1v", @"mp2v", @"mp4v", @"DIV1",
@"DIV2", @"DIV3", @"h263", @"h264", @"WMV1", @"WMV2", @"MJPG", @"theo", nil];
[_okButton setTitle: _NS("OK")];
[_optionsBox setTitle: _NS("Streaming and Transcoding Options")];
[_displayOnLocalScreenCheckbox setTitle: _NS("Display the stream locally")];
[[_outputMethodMatrix cellAtRow:0 column:0] setTitle: _NS("File")];
[[_outputMethodMatrix cellAtRow:1 column:0] setTitle: _NS("Stream")];
[_dumpCheckbox setTitle: _NS("Dump raw input")];
[_browseButton setTitle: _NS("Browse...")];
[_streamAddressLabel setStringValue: _NS("Address")];
[_streamPortLabel setStringValue: _NS("Port")];
[_streamTTLLabel setStringValue: @"TTL"];
[[_streamTypePopup itemAtIndex: 0] setTitle: @"HTTP"];
[[_streamTypePopup itemAtIndex: 1] setTitle: @"MMSH"];
[[_streamTypePopup itemAtIndex: 2] setTitle: @"UDP"];
[[_streamTypePopup itemAtIndex: 3] setTitle: @"RTP"];
[_streamTypeLabel setStringValue: _NS("Type")];
[_muxLabel setStringValue: _NS("Encapsulation Method")];
[_muxSelectorPopup removeAllItems];
[_muxSelectorPopup addItemsWithTitles: muxers];
[_transcodeBox setTitle: _NS("Transcoding options")];
[_transcodeVideoCheckbox setTitle: _NS("Video")];
[_transcodeVideoSelectorPopup removeAllItems];
[_transcodeVideoSelectorPopup addItemsWithTitles: v_codecs];
[_transcodeVideoBitrateLabel setStringValue: _NS("Bitrate (kb/s)")];
[_transcodeVideoBitrateComboBox removeAllItems];
[_transcodeVideoBitrateComboBox addItemsWithObjectValues: v_bitrates];
[_transcodeVideoScaleLabel setStringValue: _NS("Scale")];
[_transcodeVideoScaleComboBox removeAllItems];
[_transcodeVideoScaleComboBox addItemsWithObjectValues: v_scales];
[_transcodeVideoScaleComboBox selectItemWithObjectValue: @"1"];
[_transcodeAudioCheckbox setTitle: _NS("Audio")];
[_transcodeAudioSelectorPopup removeAllItems];
[_transcodeAudioSelectorPopup addItemsWithTitles: a_codecs];
[_transcodeAudioBitrateLabel setStringValue: _NS("Bitrate (kb/s)")];
[_transcodeAudioBitrateComboBox removeAllItems];
[_transcodeAudioBitrateComboBox addItemsWithObjectValues: a_bitrates];
[_transcodeAudioChannelsLabel setStringValue: _NS("Channels")];
[_transcodeAudioChannelsComboBox removeAllItems];
[_transcodeAudioChannelsComboBox addItemsWithObjectValues: a_channels];
[_miscBox setTitle: _NS("Stream Announcing")];
[_sapCheckbox setTitle: _NS("SAP Announcement")];
[_rtspCheckbox setTitle: _NS("RTSP Announcement")];
[_httpCheckbox setTitle:_NS("HTTP Announcement")];
[_fileCheckbox setTitle:_NS("Export SDP as file")];
[_channelNameLabel setStringValue: _NS("Channel Name")];
[_sdpURLLabel setStringValue: _NS("SDP URL")];
[[NSNotificationCenter defaultCenter] addObserver: self [[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(outputInfoChanged:) selector: @selector(outputInfoChanged:)
name: NSControlTextDidChangeNotification name: NSControlTextDidChangeNotification
object: o_file_field]; object: _fileTextField];
[[NSNotificationCenter defaultCenter] addObserver: self [[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(outputInfoChanged:) selector: @selector(outputInfoChanged:)
name: NSControlTextDidChangeNotification name: NSControlTextDidChangeNotification
object: o_stream_address]; object: _streamAddressTextField];
[[NSNotificationCenter defaultCenter] addObserver: self [[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(outputInfoChanged:) selector: @selector(outputInfoChanged:)
name: NSControlTextDidChangeNotification name: NSControlTextDidChangeNotification
object: o_stream_port]; object: _streamPortTextField];
[[NSNotificationCenter defaultCenter] addObserver: self [[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(TTLChanged:) selector: @selector(TTLChanged:)
name: NSControlTextDidChangeNotification name: NSControlTextDidChangeNotification
object: o_stream_ttl]; object: _streamTTLTextField];
[[NSNotificationCenter defaultCenter] addObserver: self [[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(transcodeInfoChanged:) selector: @selector(transcodeInfoChanged:)
name: NSControlTextDidChangeNotification name: NSControlTextDidChangeNotification
object: o_transcode_video_bitrate]; object: _transcodeVideoBitrateComboBox];
[[NSNotificationCenter defaultCenter] addObserver: self [[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(transcodeInfoChanged:) selector: @selector(transcodeInfoChanged:)
name: NSControlTextDidChangeNotification name: NSControlTextDidChangeNotification
object: o_transcode_video_scale]; object: _transcodeVideoScaleComboBox];
[[NSNotificationCenter defaultCenter] addObserver: self [[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(transcodeInfoChanged:) selector: @selector(transcodeInfoChanged:)
name: NSControlTextDidChangeNotification name: NSControlTextDidChangeNotification
object: o_transcode_audio_bitrate]; object: _transcodeAudioBitrateComboBox];
[[NSNotificationCenter defaultCenter] addObserver: self [[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(transcodeInfoChanged:) selector: @selector(transcodeInfoChanged:)
name: NSControlTextDidChangeNotification name: NSControlTextDidChangeNotification
object: o_transcode_audio_channels]; object: _transcodeAudioChannelsComboBox];
[[NSNotificationCenter defaultCenter] addObserver: self [[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(transcodeInfoChanged:) selector: @selector(transcodeInfoChanged:)
name: NSControlTextDidChangeNotification name: NSControlTextDidChangeNotification
object: o_channel_name]; object: _channelNameTextField];
[[NSNotificationCenter defaultCenter] addObserver: self [[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(transcodeInfoChanged:) selector: @selector(transcodeInfoChanged:)
name: NSControlTextDidChangeNotification name: NSControlTextDidChangeNotification
object: o_sdp_url]; object: _sdpURLTextField];
[o_mux_selector setAutoenablesItems: NO]; [_muxSelectorPopup setAutoenablesItems: NO];
[self transcodeChanged:nil]; [self transcodeChanged:nil];
} }
- (void)initStrings
{
NSArray *o_muxers = [NSArray arrayWithObjects:@"MPEG TS", @"MPEG PS", @"MPEG 1",
@"Ogg", @"AVI", @"ASF", @"MPEG 4", @"Quicktime", @"Raw", nil];
NSArray *o_a_channels = [NSArray arrayWithObjects:@"1", @"2", @"4", @"6", nil];
NSArray *o_a_bitrates = [NSArray arrayWithObjects:@"16", @"32", @"64", @"96",
@"128", @"192", @"256", @"512", nil];
NSArray *o_v_bitrates = [NSArray arrayWithObjects:@"16", @"32", @"64", @"96",
@"128", @"192", @"256", @"384", @"512", @"768", @"1024", @"2048", @"3072", nil];
NSArray *o_v_scales = [NSArray arrayWithObjects:@"0.25", @"0.5", @"0.75", @"1", @"1.25", @"1.5", @"1.75", @"2", nil];
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", @"h264", @"WMV1", @"WMV2", @"MJPG", @"theo", nil];
[o_output_ckbox setTitle: _NS("Streaming/Saving:")];
[o_output_settings setTitle: _NS("Settings...")];
[o_btn_ok setTitle: _NS("OK")];
[o_options_lbl setTitle: _NS("Streaming and Transcoding Options")];
[o_display setTitle: _NS("Display the stream locally")];
[[o_method cellAtRow:0 column:0] setTitle: _NS("File")];
[[o_method cellAtRow:1 column:0] setTitle: _NS("Stream")];
[o_dump_chkbox setTitle: _NS("Dump raw input")];
[o_btn_browse setTitle: _NS("Browse...")];
[o_stream_address_lbl setStringValue: _NS("Address")];
[o_stream_port_lbl setStringValue: _NS("Port")];
[o_stream_ttl_lbl setStringValue: @"TTL"];
[[o_stream_type itemAtIndex: 0] setTitle: @"HTTP"];
[[o_stream_type itemAtIndex: 1] setTitle: @"MMSH"];
[[o_stream_type itemAtIndex: 2] setTitle: @"UDP"];
[[o_stream_type itemAtIndex: 3] setTitle: @"RTP"];
[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("Transcoding options")];
[o_transcode_video_chkbox setTitle: _NS("Video")];
[o_transcode_video_selector removeAllItems];
[o_transcode_video_selector addItemsWithTitles: o_v_codecs];
[o_transcode_video_bitrate_lbl setStringValue: _NS("Bitrate (kb/s)")];
[o_transcode_video_bitrate removeAllItems];
[o_transcode_video_bitrate addItemsWithObjectValues: o_v_bitrates];
[o_transcode_video_scale_lbl setStringValue: _NS("Scale")];
[o_transcode_video_scale removeAllItems];
[o_transcode_video_scale addItemsWithObjectValues: o_v_scales];
[o_transcode_video_scale selectItemWithObjectValue: @"1"];
[o_transcode_audio_chkbox setTitle: _NS("Audio")];
[o_transcode_audio_selector removeAllItems];
[o_transcode_audio_selector addItemsWithTitles: o_a_codecs];
[o_transcode_audio_bitrate_lbl setStringValue: _NS("Bitrate (kb/s)")];
[o_transcode_audio_bitrate removeAllItems];
[o_transcode_audio_bitrate addItemsWithObjectValues: o_a_bitrates];
[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 Announcement")];
[o_rtsp_chkbox setTitle: _NS("RTSP Announcement")];
[o_http_chkbox setTitle:_NS("HTTP Announcement")];
[o_file_chkbox setTitle:_NS("Export SDP as file")];
[o_channel_name_lbl setStringValue: _NS("Channel Name")];
[o_sdp_url_lbl setStringValue: _NS("SDP URL")];
}
- (IBAction)outputChanged:(id)sender;
{
if ([o_output_ckbox state] == NSOnState)
[o_output_settings setEnabled:YES];
else
[o_output_settings setEnabled:NO];
}
- (IBAction)outputSettings:(id)sender
{
[NSApp beginSheet: o_output_sheet
modalForWindow: o_open_panel
modalDelegate: self
didEndSelector: NULL
contextInfo: nil];
}
- (IBAction)outputCloseSheet:(id)sender - (IBAction)outputCloseSheet:(id)sender
{ {
[o_output_sheet orderOut:sender]; [self.outputSheet orderOut:sender];
[NSApp endSheet: o_output_sheet]; [NSApp endSheet:self.outputSheet];
} }
- (IBAction)outputMethodChanged:(id)sender - (IBAction)outputMethodChanged:(id)sender
{ {
NSString *o_mode; NSString *mode;
o_mode = [[o_method selectedCell] title]; mode = [[self.outputMethodMatrix selectedCell] title];
[o_sap_chkbox setEnabled: NO]; [self.sapCheckbox setEnabled: NO];
[o_http_chkbox setEnabled: NO]; [self.httpCheckbox setEnabled: NO];
[o_rtsp_chkbox setEnabled: NO]; [self.rtspCheckbox setEnabled: NO];
[o_file_chkbox setEnabled: NO]; [self.fileCheckbox setEnabled: NO];
[o_channel_name setEnabled: NO]; [self.channelNameTextField setEnabled: NO];
[o_sdp_url setEnabled: NO]; [self.sdpURLTextField setEnabled: NO];
[[o_mux_selector itemAtIndex: 0] setEnabled: YES]; [[self.muxSelectorPopup itemAtIndex: 0] setEnabled: YES];
if ([o_mode isEqualToString: _NS("File")]) { if ([mode isEqualToString: _NS("File")]) {
[o_file_field setEnabled: YES]; [self.fileTextField setEnabled: YES];
[o_btn_browse setEnabled: YES]; [self.browseButton setEnabled: YES];
[o_dump_chkbox setEnabled: YES]; [self.dumpCheckbox setEnabled: YES];
[o_stream_address setEnabled: NO]; [self.streamAddressTextField setEnabled: NO];
[o_stream_port setEnabled: NO]; [self.streamPortTextField setEnabled: NO];
[o_stream_ttl setEnabled: NO]; [self.streamTTLTextField setEnabled: NO];
[o_stream_port_stp setEnabled: NO]; [self.streamPortStepper setEnabled: NO];
[o_stream_ttl_stp setEnabled: NO]; [self.streamTTLStepper setEnabled: NO];
[o_stream_type setEnabled: NO]; [self.streamTypePopup setEnabled: NO];
[o_mux_selector setEnabled: YES]; [self.muxSelectorPopup setEnabled: YES];
[[o_mux_selector itemAtIndex: 1] setEnabled: YES]; // MPEG PS [[self.muxSelectorPopup itemAtIndex: 1] setEnabled: YES]; // MPEG PS
[[o_mux_selector itemAtIndex: 2] setEnabled: YES]; // MPEG 1 [[self.muxSelectorPopup itemAtIndex: 2] setEnabled: YES]; // MPEG 1
[[o_mux_selector itemAtIndex: 3] setEnabled: YES]; // Ogg [[self.muxSelectorPopup itemAtIndex: 3] setEnabled: YES]; // Ogg
[[o_mux_selector itemAtIndex: 4] setEnabled: YES]; // AVI [[self.muxSelectorPopup itemAtIndex: 4] setEnabled: YES]; // AVI
[[o_mux_selector itemAtIndex: 5] setEnabled: YES]; // ASF [[self.muxSelectorPopup itemAtIndex: 5] setEnabled: YES]; // ASF
[[o_mux_selector itemAtIndex: 6] setEnabled: YES]; // MPEG 4 [[self.muxSelectorPopup itemAtIndex: 6] setEnabled: YES]; // MPEG 4
[[o_mux_selector itemAtIndex: 7] setEnabled: YES]; // QuickTime [[self.muxSelectorPopup itemAtIndex: 7] setEnabled: YES]; // QuickTime
[[o_mux_selector itemAtIndex: 8] setEnabled: YES]; // Raw [[self.muxSelectorPopup itemAtIndex: 8] setEnabled: YES]; // Raw
} else if ([o_mode isEqualToString: _NS("Stream")]) { } else if ([mode isEqualToString: _NS("Stream")]) {
[o_file_field setEnabled: NO]; [self.fileTextField setEnabled: NO];
[o_dump_chkbox setEnabled: NO]; [self.dumpCheckbox setEnabled: NO];
[o_btn_browse setEnabled: NO]; [self.browseButton setEnabled: NO];
[o_stream_port setEnabled: YES]; [self.streamPortTextField setEnabled: YES];
[o_stream_port_stp setEnabled: YES]; [self.streamPortStepper setEnabled: YES];
[o_stream_type setEnabled: YES]; [self.streamTypePopup setEnabled: YES];
[o_mux_selector setEnabled: YES]; [self.muxSelectorPopup setEnabled: YES];
o_mode = [o_stream_type titleOfSelectedItem]; mode = [self.streamTypePopup titleOfSelectedItem];
if ([o_mode isEqualToString: @"HTTP"]) { if ([mode isEqualToString: @"HTTP"]) {
[o_stream_address setEnabled: YES]; [self.streamAddressTextField setEnabled: YES];
[o_stream_ttl setEnabled: NO]; [self.streamTTLTextField setEnabled: NO];
[o_stream_ttl_stp setEnabled: NO]; [self.streamTTLStepper setEnabled: NO];
[[o_mux_selector itemAtIndex: 1] setEnabled: YES]; [[self.muxSelectorPopup itemAtIndex: 1] setEnabled: YES];
[[o_mux_selector itemAtIndex: 2] setEnabled: YES]; [[self.muxSelectorPopup itemAtIndex: 2] setEnabled: YES];
[[o_mux_selector itemAtIndex: 3] setEnabled: YES]; [[self.muxSelectorPopup itemAtIndex: 3] setEnabled: YES];
[[o_mux_selector itemAtIndex: 4] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 4] setEnabled: NO];
[[o_mux_selector itemAtIndex: 5] setEnabled: YES]; [[self.muxSelectorPopup itemAtIndex: 5] setEnabled: YES];
[[o_mux_selector itemAtIndex: 6] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 6] setEnabled: NO];
[[o_mux_selector itemAtIndex: 7] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 7] setEnabled: NO];
[[o_mux_selector itemAtIndex: 8] setEnabled: YES]; [[self.muxSelectorPopup itemAtIndex: 8] setEnabled: YES];
} else if ([o_mode isEqualToString: @"MMSH"]) { } else if ([mode isEqualToString: @"MMSH"]) {
[o_stream_address setEnabled: YES]; [self.streamAddressTextField setEnabled: YES];
[o_stream_ttl setEnabled: NO]; [self.streamTTLTextField setEnabled: NO];
[o_stream_ttl_stp setEnabled: NO]; [self.streamTTLStepper setEnabled: NO];
[[o_mux_selector itemAtIndex: 0] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 0] setEnabled: NO];
[[o_mux_selector itemAtIndex: 1] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 1] setEnabled: NO];
[[o_mux_selector itemAtIndex: 2] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 2] setEnabled: NO];
[[o_mux_selector itemAtIndex: 3] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 3] setEnabled: NO];
[[o_mux_selector itemAtIndex: 4] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 4] setEnabled: NO];
[[o_mux_selector itemAtIndex: 5] setEnabled: YES]; [[self.muxSelectorPopup itemAtIndex: 5] setEnabled: YES];
[[o_mux_selector itemAtIndex: 6] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 6] setEnabled: NO];
[[o_mux_selector itemAtIndex: 7] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 7] setEnabled: NO];
[[o_mux_selector itemAtIndex: 8] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 8] setEnabled: NO];
[o_mux_selector selectItemAtIndex: 5]; [self.muxSelectorPopup selectItemAtIndex: 5];
} else if ([o_mode isEqualToString: @"UDP"]) { } else if ([mode isEqualToString: @"UDP"]) {
[o_stream_address setEnabled: YES]; [self.streamAddressTextField setEnabled: YES];
[o_stream_ttl setEnabled: YES]; [self.streamTTLTextField setEnabled: YES];
[o_stream_ttl_stp setEnabled: YES]; [self.streamTTLStepper setEnabled: YES];
[[o_mux_selector itemAtIndex: 1] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 1] setEnabled: NO];
[[o_mux_selector itemAtIndex: 2] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 2] setEnabled: NO];
[[o_mux_selector itemAtIndex: 3] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 3] setEnabled: NO];
[[o_mux_selector itemAtIndex: 4] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 4] setEnabled: NO];
[[o_mux_selector itemAtIndex: 5] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 5] setEnabled: NO];
[[o_mux_selector itemAtIndex: 6] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 6] setEnabled: NO];
[[o_mux_selector itemAtIndex: 7] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 7] setEnabled: NO];
[[o_mux_selector itemAtIndex: 8] setEnabled: YES]; [[self.muxSelectorPopup itemAtIndex: 8] setEnabled: YES];
[o_sap_chkbox setEnabled: YES]; [self.sapCheckbox setEnabled: YES];
[o_channel_name setEnabled: YES]; [self.channelNameTextField setEnabled: YES];
} else if ([o_mode isEqualToString: @"RTP"]) { } else if ([mode isEqualToString: @"RTP"]) {
[o_stream_address setEnabled: YES]; [self.streamAddressTextField setEnabled: YES];
[o_stream_ttl setEnabled: YES]; [self.streamTTLTextField setEnabled: YES];
[o_stream_ttl_stp setEnabled: YES]; [self.streamTTLStepper setEnabled: YES];
[[o_mux_selector itemAtIndex: 0] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 0] setEnabled: NO];
[[o_mux_selector itemAtIndex: 1] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 1] setEnabled: NO];
[[o_mux_selector itemAtIndex: 2] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 2] setEnabled: NO];
[[o_mux_selector itemAtIndex: 3] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 3] setEnabled: NO];
[[o_mux_selector itemAtIndex: 4] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 4] setEnabled: NO];
[[o_mux_selector itemAtIndex: 5] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 5] setEnabled: NO];
[[o_mux_selector itemAtIndex: 6] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 6] setEnabled: NO];
[[o_mux_selector itemAtIndex: 7] setEnabled: NO]; [[self.muxSelectorPopup itemAtIndex: 7] setEnabled: NO];
[[o_mux_selector itemAtIndex: 8] setEnabled: YES]; [[self.muxSelectorPopup itemAtIndex: 8] setEnabled: YES];
[o_mux_selector selectItemAtIndex: 8]; [self.muxSelectorPopup selectItemAtIndex: 8];
[o_sap_chkbox setEnabled: YES]; [self.sapCheckbox setEnabled: YES];
[o_rtsp_chkbox setEnabled: YES]; [self.rtspCheckbox setEnabled: YES];
[o_http_chkbox setEnabled: YES]; [self.httpCheckbox setEnabled: YES];
[o_file_chkbox setEnabled: YES]; [self.fileCheckbox setEnabled: YES];
[o_channel_name setEnabled: YES]; [self.channelNameTextField setEnabled: YES];
} }
} }
if (![[o_mux_selector selectedItem] isEnabled] && ![o_mode isEqualToString: @"RTP"]) if (![[self.muxSelectorPopup selectedItem] isEnabled] && ![mode isEqualToString: @"RTP"])
[o_mux_selector selectItemAtIndex: 0]; [self.muxSelectorPopup selectItemAtIndex: 0];
else if (![[o_mux_selector selectedItem] isEnabled] && [o_mode isEqualToString: @"RTP"]) else if (![[self.muxSelectorPopup selectedItem] isEnabled] && [mode isEqualToString: @"RTP"])
[o_mux_selector selectItemAtIndex: 8]; [self.muxSelectorPopup selectItemAtIndex: 8];
[self outputInfoChanged: nil]; [self outputInfoChanged: nil];
} }
- (IBAction)outputInfoChanged:(id)object - (IBAction)outputInfoChanged:(id)object
{ {
NSString *o_mode, *o_mux, *o_mux_string; NSString *mode, *mux, *mux_string;
NSMutableString *o_announce = [NSMutableString stringWithString:@""]; NSMutableString *announce = [NSMutableString stringWithString:@""];
NSMutableString *o_mrl_string = [NSMutableString stringWithString:@":sout=#"]; NSMutableString *mrl_string = [NSMutableString stringWithString:@":sout=#"];
NSArray *o_sout_options;
[mrl_string appendString: _transcode];
[o_mrl_string appendString: o_transcode]; if ([self.displayOnLocalScreenCheckbox state] == NSOnState)
if ([o_display state] == NSOnState) [mrl_string appendString: @"duplicate{dst=display,dst="];
[o_mrl_string appendString: @"duplicate{dst=display,dst="];
mode = [[self.outputMethodMatrix selectedCell] title];
o_mode = [[o_method selectedCell] title]; mux = [self.muxSelectorPopup titleOfSelectedItem];
o_mux = [o_mux_selector titleOfSelectedItem];
if ([mux isEqualToString: @"AVI"]) mux_string = @"avi";
if ([o_mux isEqualToString: @"AVI"]) o_mux_string = @"avi"; else if ([mux isEqualToString: @"Ogg"]) mux_string = @"ogg";
else if ([o_mux isEqualToString: @"Ogg"]) o_mux_string = @"ogg"; else if ([mux isEqualToString: @"MPEG PS"]) mux_string = @"ps";
else if ([o_mux isEqualToString: @"MPEG PS"]) o_mux_string = @"ps"; else if ([mux isEqualToString: @"MPEG 4"]) mux_string = @"mp4";
else if ([o_mux isEqualToString: @"MPEG 4"]) o_mux_string = @"mp4"; else if ([mux isEqualToString: @"MPEG 1"]) mux_string = @"mpeg1";
else if ([o_mux isEqualToString: @"MPEG 1"]) o_mux_string = @"mpeg1"; else if ([mux isEqualToString: @"Quicktime"]) mux_string = @"mov";
else if ([o_mux isEqualToString: @"Quicktime"]) o_mux_string = @"mov"; else if ([mux isEqualToString: @"ASF"]) mux_string = @"asf";
else if ([o_mux isEqualToString: @"ASF"]) o_mux_string = @"asf"; else if ([mux isEqualToString: @"Raw"]) mux_string = @"raw";
else if ([o_mux isEqualToString: @"Raw"]) o_mux_string = @"raw"; else mux_string = @"ts";
else o_mux_string = @"ts";
if ([mode isEqualToString: _NS("File")]) {
if ([o_mode isEqualToString: _NS("File")]) { if ([self.dumpCheckbox state] == NSOnState) {
if ([o_dump_chkbox state] == NSOnState) { _soutMRL = [NSArray arrayWithObjects:@":demux=dump",
o_sout_options = [NSArray arrayWithObjects:@":demux=dump", [NSString stringWithFormat:
[NSString stringWithFormat: @":demuxdump-file=%@",
@":demuxdump-file=%@", [self.fileTextField stringValue]], nil];
[o_file_field stringValue]], nil];
[self setSoutMRL:o_sout_options];
return; return;
} else } else
[o_mrl_string appendFormat: @"standard{mux=%@,access=file{no-overwrite},dst=\"%@\"}", o_mux_string, [o_file_field stringValue]]; [mrl_string appendFormat:@"standard{mux=%@,access=file{no-overwrite},dst=\"%@\"}",
mux_string,
[self.fileTextField stringValue]];
} }
else if ([o_mode isEqualToString: _NS("Stream")]) { else if ([mode isEqualToString: _NS("Stream")]) {
o_mode = [o_stream_type titleOfSelectedItem]; mode = [self.streamTypePopup titleOfSelectedItem];
if ([o_mode isEqualToString: @"HTTP"]) if ([mode isEqualToString: @"HTTP"])
o_mode = @"http"; mode = @"http";
else if ([o_mode isEqualToString: @"MMSH"]) { else if ([mode isEqualToString: @"MMSH"]) {
if ([o_mux isEqualToString: @"ASF"]) if ([mux isEqualToString: @"ASF"])
o_mux_string = @"asfh"; mux_string = @"asfh";
o_mode = @"mmsh"; mode = @"mmsh";
} else if ([o_mode isEqualToString: @"UDP"]) { } else if ([mode isEqualToString: @"UDP"]) {
o_mode = @"udp"; mode = @"udp";
if ([o_sap_chkbox state] == NSOnState) { if ([self.sapCheckbox state] == NSOnState) {
if (![[o_channel_name stringValue] isEqualToString: @""]) if (![[self.channelNameTextField stringValue] isEqualToString: @""])
[o_announce appendFormat:@",sap,name=%@", [o_channel_name stringValue]]; [announce appendFormat:@",sap,name=%@", [self.channelNameTextField stringValue]];
else else
[o_announce appendFormat:@",sap"]; [announce appendFormat:@",sap"];
} }
} }
if (![o_mode isEqualToString: @"RTP"]) { if (![mode isEqualToString: @"RTP"]) {
/* split up the hostname and the following path to paste the /* split up the hostname and the following path to paste the
* port correctly. Not need, if there isn't any path following the * port correctly. Not need, if there isn't any path following the
* hostname. */ * hostname. */
NSArray * o_urlItems = [[o_stream_address stringValue] componentsSeparatedByString: @"/"]; NSArray *urlItems = [[self.streamAddressTextField stringValue] componentsSeparatedByString: @"/"];
NSMutableString * o_finalStreamAddress = [[NSMutableString alloc] init]; NSMutableString *finalStreamAddress = [[NSMutableString alloc] init];
if ([o_urlItems count] == 1) if ([urlItems count] == 1)
[o_finalStreamAddress appendFormat: @"\"%@:%@\"", [o_stream_address stringValue],[o_stream_port stringValue]]; [finalStreamAddress appendFormat: @"\"%@:%@\"", [self.streamAddressTextField stringValue],[self.streamPortTextField stringValue]];
else { else {
[o_finalStreamAddress appendFormat: @"\"%@:%@", [o_urlItems objectAtIndex:0], [o_stream_port stringValue]]; [finalStreamAddress appendFormat: @"\"%@:%@", [urlItems objectAtIndex:0], [self.streamPortTextField stringValue]];
NSUInteger itemCount = [o_urlItems count]; NSUInteger itemCount = [urlItems count];
for (NSUInteger x = 0; x < itemCount; x++) for (NSUInteger x = 0; x < itemCount; x++)
[o_finalStreamAddress appendFormat: @"/%@", [o_urlItems objectAtIndex:x]]; [finalStreamAddress appendFormat: @"/%@", [urlItems objectAtIndex:x]];
[o_finalStreamAddress appendString: @"\""]; [finalStreamAddress appendString: @"\""];
} }
[o_mrl_string appendFormat: [mrl_string appendFormat:
@"standard{mux=%@,access=%@,dst=%@%@}", @"standard{mux=%@,access=%@,dst=%@%@}",
o_mux_string, o_mode, o_finalStreamAddress, o_announce]; mux_string, mode, finalStreamAddress, announce];
} else { } else {
NSString * o_stream_name; NSString *stream_name;
if (![[o_channel_name stringValue] isEqualToString: @""]) if (![[self.channelNameTextField stringValue] isEqualToString: @""])
o_stream_name = [NSString stringWithFormat:@",name=%@", [o_channel_name stringValue]]; stream_name = [NSString stringWithFormat:@",name=%@", [self.channelNameTextField stringValue]];
else else
o_stream_name = @""; stream_name = @"";
if ([o_sap_chkbox state] == NSOnState) if ([self.sapCheckbox state] == NSOnState)
[o_announce appendString: @",sdp=sap"]; [announce appendString: @",sdp=sap"];
if ([o_rtsp_chkbox state] == NSOnState) if ([self.rtspCheckbox state] == NSOnState)
[o_announce appendFormat:@",sdp=\"rtsp://%@\"",[o_sdp_url stringValue]]; [announce appendFormat:@",sdp=\"rtsp://%@\"",[self.sdpURLTextField stringValue]];
if ([o_http_chkbox state] == NSOnState) if ([self.httpCheckbox state] == NSOnState)
[o_announce appendFormat:@",sdp=\"http://%@\"",[o_sdp_url stringValue]]; [announce appendFormat:@",sdp=\"http://%@\"",[self.sdpURLTextField stringValue]];
if ([o_file_chkbox state] == NSOnState) if ([self.fileCheckbox state] == NSOnState)
[o_announce appendFormat:@",sdp=\"file://%@\"",[o_sdp_url stringValue]]; [announce appendFormat:@",sdp=\"file://%@\"",[self.sdpURLTextField stringValue]];
[o_mrl_string appendFormat: [mrl_string appendFormat:
@"rtp{mux=ts,dst=\"%@\",port=%@%@%@}",[o_stream_address stringValue], @"rtp{mux=ts,dst=\"%@\",port=%@%@%@}", [self.streamAddressTextField stringValue],
[o_stream_port stringValue], o_stream_name, o_announce]; [self.streamPortTextField stringValue], stream_name, announce];
} }
} }
if ([o_display state] == NSOnState) if ([self.displayOnLocalScreenCheckbox state] == NSOnState)
[o_mrl_string appendString: @"}"]; [mrl_string appendString: @"}"];
o_sout_options = [NSArray arrayWithObject:o_mrl_string]; _soutMRL = [NSArray arrayWithObject:mrl_string];
[self setSoutMRL:o_sout_options];
} }
- (void)TTLChanged:(NSNotification *)o_notification - (void)TTLChanged:(NSNotification *)notification
{ {
intf_thread_t * p_intf = VLCIntf; config_PutInt(VLCIntf, "ttl", [self.streamTTLTextField intValue]);
config_PutInt(p_intf, "ttl", [o_stream_ttl intValue]);
} }
- (IBAction)outputFileBrowse:(id)sender - (IBAction)outputFileBrowse:(id)sender
{ {
NSSavePanel *o_save_panel = [NSSavePanel savePanel]; NSString *mux_string;
NSString *o_mux_string; if ([[self.muxSelectorPopup titleOfSelectedItem] isEqualToString: @"MPEG PS"])
if ([[o_mux_selector titleOfSelectedItem] isEqualToString: @"MPEG PS"]) mux_string = @"vob";
o_mux_string = @"vob"; else if ([[self.muxSelectorPopup titleOfSelectedItem] isEqualToString: @"MPEG 1"])
else if ([[o_mux_selector titleOfSelectedItem] isEqualToString: @"MPEG 1"]) mux_string = @"mpg";
o_mux_string = @"mpg"; else if ([[self.muxSelectorPopup titleOfSelectedItem] isEqualToString: @"AVI"])
else if ([[o_mux_selector titleOfSelectedItem] isEqualToString: @"AVI"]) mux_string = @"avi";
o_mux_string = @"avi"; else if ([[self.muxSelectorPopup titleOfSelectedItem] isEqualToString: @"ASF"])
else if ([[o_mux_selector titleOfSelectedItem] isEqualToString: @"ASF"]) mux_string = @"asf";
o_mux_string = @"asf"; else if ([[self.muxSelectorPopup titleOfSelectedItem] isEqualToString: @"Ogg"])
else if ([[o_mux_selector titleOfSelectedItem] isEqualToString: @"Ogg"]) mux_string = @"ogm";
o_mux_string = @"ogm"; else if ([[self.muxSelectorPopup titleOfSelectedItem] isEqualToString: @"MPEG 4"])
else if ([[o_mux_selector titleOfSelectedItem] isEqualToString: @"MPEG 4"]) mux_string = @"mp4";
o_mux_string = @"mp4"; else if ([[self.muxSelectorPopup titleOfSelectedItem] isEqualToString: @"Quicktime"])
else if ([[o_mux_selector titleOfSelectedItem] isEqualToString: @"Quicktime"]) mux_string = @"mov";
o_mux_string = @"mov"; else if ([[self.muxSelectorPopup titleOfSelectedItem] isEqualToString: @"Raw"])
else if ([[o_mux_selector titleOfSelectedItem] isEqualToString: @"Raw"]) mux_string = @"raw";
o_mux_string = @"raw";
else else
o_mux_string = @"ts"; mux_string = @"ts";
NSString * o_name = [NSString stringWithFormat: @"vlc-output.%@", NSString *name = [NSString stringWithFormat: @"vlc-output.%@", mux_string];
o_mux_string];
[o_save_panel setTitle: _NS("Save File")]; NSSavePanel *save_panel = [NSSavePanel savePanel];
[o_save_panel setPrompt: _NS("Save")]; [save_panel setTitle: _NS("Save File")];
[o_save_panel setNameFieldStringValue: o_name]; [save_panel setPrompt: _NS("Save")];
[save_panel setNameFieldStringValue: name];
if ([o_save_panel runModal] == NSFileHandlingPanelOKButton) { if ([save_panel runModal] == NSFileHandlingPanelOKButton) {
[o_file_field setStringValue: [[o_save_panel URL] path]]; [self.fileTextField setStringValue: [[save_panel URL] path]];
[self outputInfoChanged: nil]; [self outputInfoChanged: nil];
} }
} }
- (IBAction)streamPortStepperChanged:(id)sender - (IBAction)streamPortStepperChanged:(id)sender
{ {
[o_stream_port setIntValue: [o_stream_port_stp intValue]]; [self.streamPortTextField setIntValue:[self.streamPortStepper intValue]];
[self outputInfoChanged: nil]; [self outputInfoChanged: nil];
} }
- (IBAction)streamTTLStepperChanged:(id)sender - (IBAction)streamTTLStepperChanged:(id)sender
{ {
[o_stream_ttl setIntValue: [o_stream_ttl_stp intValue]]; [self.streamTTLTextField setIntValue:[self.streamTTLStepper intValue]];
[self TTLChanged:nil]; [self TTLChanged:nil];
} }
- (IBAction)transcodeChanged:(id)sender - (IBAction)transcodeChanged:(id)sender
{ {
if ([o_transcode_video_chkbox state] == NSOnState) { if ([self.transcodeVideoCheckbox state] == NSOnState) {
[o_transcode_video_selector setEnabled: YES]; [self.transcodeVideoSelectorPopup setEnabled: YES];
[o_transcode_video_bitrate setEnabled: YES]; [self.transcodeVideoBitrateComboBox setEnabled: YES];
[o_transcode_video_scale setEnabled: YES]; [self.transcodeVideoScaleComboBox setEnabled: YES];
} else { } else {
[o_transcode_video_selector setEnabled: NO]; [self.transcodeVideoSelectorPopup setEnabled: NO];
[o_transcode_video_bitrate setEnabled: NO]; [self.transcodeVideoBitrateComboBox setEnabled: NO];
[o_transcode_video_scale setEnabled: NO]; [self.transcodeVideoScaleComboBox setEnabled: NO];
} }
if ([o_transcode_audio_chkbox state] == NSOnState) { if ([self.transcodeAudioCheckbox state] == NSOnState) {
[o_transcode_audio_selector setEnabled: YES]; [self.transcodeAudioSelectorPopup setEnabled: YES];
[o_transcode_audio_bitrate setEnabled: YES]; [self.transcodeAudioBitrateComboBox setEnabled: YES];
[o_transcode_audio_channels setEnabled: YES]; [self.transcodeAudioChannelsComboBox setEnabled: YES];
} else { } else {
[o_transcode_audio_selector setEnabled: NO]; [self.transcodeAudioSelectorPopup setEnabled: NO];
[o_transcode_audio_bitrate setEnabled: NO]; [self.transcodeAudioBitrateComboBox setEnabled: NO];
[o_transcode_audio_channels setEnabled: NO]; [self.transcodeAudioChannelsComboBox setEnabled: NO];
} }
[self transcodeInfoChanged:nil]; [self transcodeInfoChanged:nil];
...@@ -498,67 +454,66 @@ ...@@ -498,67 +454,66 @@
- (IBAction)transcodeInfoChanged:(id)object - (IBAction)transcodeInfoChanged:(id)object
{ {
NSMutableString *o_transcode_string = [NSMutableString stringWithCapacity:200]; NSMutableString *transcode_string = [NSMutableString stringWithCapacity:200];
if ([o_transcode_video_chkbox state] == NSOnState || if ([self.transcodeVideoCheckbox state] == NSOnState ||
[o_transcode_audio_chkbox state] == NSOnState) { [self.transcodeAudioCheckbox state] == NSOnState) {
[o_transcode_string appendString:@"transcode{"]; [transcode_string appendString:@"transcode{"];
if ([o_transcode_video_chkbox state] == NSOnState) { if ([self.transcodeVideoCheckbox state] == NSOnState) {
[o_transcode_string appendFormat: @"vcodec=\"%@\",vb=\"%@\"" \ [transcode_string appendFormat: @"vcodec=\"%@\",vb=\"%@\"" \
",scale=\"%@\"", ",scale=\"%@\"",
[o_transcode_video_selector titleOfSelectedItem], [self.transcodeVideoSelectorPopup titleOfSelectedItem],
[o_transcode_video_bitrate stringValue], [self.transcodeVideoBitrateComboBox stringValue],
[o_transcode_video_scale stringValue]]; [self.transcodeVideoScaleComboBox stringValue]];
if ([o_transcode_audio_chkbox state] == NSOnState) if ([self.transcodeAudioCheckbox state] == NSOnState)
[o_transcode_string appendString: @","]; [transcode_string appendString: @","];
} }
if ([o_transcode_audio_chkbox state] == NSOnState) { if ([self.transcodeAudioCheckbox state] == NSOnState) {
[o_transcode_string appendFormat: @"acodec=\"%@\",ab=\"%@\"", [transcode_string appendFormat: @"acodec=\"%@\",ab=\"%@\"",
[o_transcode_audio_selector titleOfSelectedItem], [self.transcodeAudioSelectorPopup titleOfSelectedItem],
[o_transcode_audio_bitrate stringValue]]; [self.transcodeAudioBitrateComboBox stringValue]];
if (![[o_transcode_audio_channels stringValue] isEqualToString: @""]) if (![[self.transcodeAudioChannelsComboBox stringValue] isEqualToString: @""])
[o_transcode_string appendFormat: @",channels=\"%@\"", [o_transcode_audio_channels stringValue]]; [transcode_string appendFormat: @",channels=\"%@\"", [self.transcodeAudioChannelsComboBox stringValue]];
} }
[o_transcode_string appendString:@"}:"]; [transcode_string appendString:@"}:"];
} }
else else
[o_transcode_string setString: @""]; [transcode_string setString: @""];
[self setTranscode: o_transcode_string]; _transcode = [NSString stringWithString:transcode_string];
[self outputInfoChanged:nil]; [self outputInfoChanged:nil];
} }
- (IBAction)announceChanged:(id)sender - (IBAction)announceChanged:(id)sender
{ {
NSString *o_mode; NSString *mode;
o_mode = [[o_stream_type selectedCell] title]; mode = [[self.streamTypePopup selectedCell] title];
[o_channel_name setEnabled: [o_sap_chkbox state] || [self.channelNameTextField setEnabled:[self.sapCheckbox state] || [mode isEqualToString: @"RTP"]];
[o_mode isEqualToString: @"RTP"]];
if ([o_mode isEqualToString: @"RTP"]) { if ([mode isEqualToString: @"RTP"]) {
/* if ([[sender title] isEqualToString: _NS("SAP Announcement")]) { /* if ([[sender title] isEqualToString: _NS("SAP Announcement")]) {
[o_rtsp_chkbox setState:NSOffState]; [self.rtspCheckbox setState:NSOffState];
[o_http_chkbox setState:NSOffState]; [self.httpCheckbox setState:NSOffState];
}*/ }*/
if ([[sender title] isEqualToString:_NS("RTSP Announcement")]) { if ([[sender title] isEqualToString:_NS("RTSP Announcement")]) {
// [o_sap_chkbox setState:NSOffState]; // [self.sapCheckbox setState:NSOffState];
[o_http_chkbox setState:NSOffState]; [self.httpCheckbox setState:NSOffState];
[o_file_chkbox setState:NSOffState]; [self.fileCheckbox setState:NSOffState];
} else if ([[sender title] isEqualToString:_NS("HTTP Announcement")]) { } else if ([[sender title] isEqualToString:_NS("HTTP Announcement")]) {
// [o_sap_chkbox setState:NSOffState]; // [self.sapCheckbox setState:NSOffState];
[o_rtsp_chkbox setState:NSOffState]; [self.rtspCheckbox setState:NSOffState];
[o_file_chkbox setState:NSOffState]; [self.fileCheckbox setState:NSOffState];
} else if ([[sender title] isEqualToString:_NS("Export SDP as file")]) { } else if ([[sender title] isEqualToString:_NS("Export SDP as file")]) {
[o_rtsp_chkbox setState:NSOffState]; [self.rtspCheckbox setState:NSOffState];
[o_http_chkbox setState:NSOffState]; [self.httpCheckbox setState:NSOffState];
} }
if ([o_rtsp_chkbox state] == NSOnState || if ([self.rtspCheckbox state] == NSOnState ||
[o_http_chkbox state] == NSOnState || [self.httpCheckbox state] == NSOnState ||
[o_file_chkbox state] == NSOnState) [self.fileCheckbox state] == NSOnState)
[o_sdp_url setEnabled: YES]; [self.sdpURLTextField setEnabled: YES];
else else
[o_sdp_url setEnabled: NO]; [self.sdpURLTextField setEnabled: NO];
} }
[self outputInfoChanged: nil]; [self outputInfoChanged: nil];
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment