]> git.sesse.net Git - vlc/commitdiff
Qt4: add the RTSP protocol to the sout dialog
authorPierre Ynard <linkfanel@yahoo.fr>
Sun, 24 Jan 2010 21:37:42 +0000 (22:37 +0100)
committerPierre Ynard <linkfanel@yahoo.fr>
Sun, 24 Jan 2010 21:37:42 +0000 (22:37 +0100)
It is set up to use the TS muxer

modules/gui/qt4/components/sout/sout_widgets.cpp
modules/gui/qt4/components/sout/sout_widgets.hpp
modules/gui/qt4/dialogs/sout.cpp

index 7cfd9113f01d4601a650b1076b93b1758c61155e..1e3f9e5593ae12f431750d038b87d4f259aeb2f9 100644 (file)
@@ -226,6 +226,57 @@ QString MMSHDestBox::getMRL( const QString& mux )
 }
 
 
+RTSPDestBox::RTSPDestBox( QWidget *_parent ) : VirtualDestBox( _parent )
+{
+    QGridLayout *layout = new QGridLayout( this );
+
+    QLabel *rtspOutput = new QLabel(
+        qtr( "This module outputs the transcoded stream to a network via "
+             "RTSP." ), this );
+    layout->addWidget( rtspOutput, 0, 0, 1, -1 );
+
+    QLabel *RTSPLabel = new QLabel( qtr("Path"), this );
+    QLabel *RTSPPortLabel = new QLabel( qtr("Port"), this );
+    layout->addWidget( RTSPLabel, 2, 0, 1, 1 );
+    layout->addWidget( RTSPPortLabel, 1, 0, 1, 1 );
+
+    RTSPEdit = new QLineEdit( this );
+    RTSPEdit->setText( "/" );
+
+    RTSPPort = new QSpinBox( this );
+    RTSPPort->setMaximumSize( QSize( 90, 16777215 ) );
+    RTSPPort->setAlignment( Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter );
+    RTSPPort->setMinimum( 1 );
+    RTSPPort->setMaximum( 65535 );
+    RTSPPort->setValue( 5544 );
+
+    layout->addWidget( RTSPEdit, 2, 1, 1, 1 );
+    layout->addWidget( RTSPPort, 1, 1, 1, 1 );
+    CS( RTSPPort );
+    CT( RTSPEdit );
+}
+
+QString RTSPDestBox::getMRL( const QString& mux )
+{
+    if( RTSPEdit->text().isEmpty() ) return "";
+
+    QString path = RTSPEdit->text();
+    if( path[0] != '/' )
+        path.prepend( qfu("/") );
+    QString port;
+    port.setNum( RTSPPort->value() );
+    QString sdp = "rtsp://:" + port + path;
+
+    SoutMrl m;
+    m.begin( "rtp" );
+    m.option( "sdp", sdp );
+    m.option( "mux", "ts" );
+    m.end();
+
+    return m.getMrl();
+}
+
+
 UDPDestBox::UDPDestBox( QWidget *_parent ) : VirtualDestBox( _parent )
 {
     QGridLayout *layout = new QGridLayout( this );
index d2042cda38b0b4e8af764438ec598d86d444e97c..e46e36138fea1534d3d6f4c373bf37d557c51d3d 100644 (file)
@@ -90,6 +90,17 @@ class MMSHDestBox: public VirtualDestBox
         QSpinBox *MMSHPort;
 };
 
+class RTSPDestBox: public VirtualDestBox
+{
+    Q_OBJECT;
+    public:
+        RTSPDestBox( QWidget *_parent = NULL );
+        virtual QString getMRL( const QString& );
+    private:
+        QLineEdit *RTSPEdit;
+        QSpinBox *RTSPPort;
+};
+
 class UDPDestBox: public VirtualDestBox
 {
     Q_OBJECT;
index aadaec7b4936d1406175c4224ea96455f4c057c8..1f512f8d48db41c82d4158beaecbedff1232125b 100644 (file)
@@ -74,6 +74,7 @@ SoutDialog::SoutDialog( QWidget *parent, intf_thread_t *_p_intf, const QString&
     ui.destBox->addItem( qtr( "File" ) );
     ui.destBox->addItem( "HTTP" );
     ui.destBox->addItem( "MS-WMSP (MMSH)" );
+    ui.destBox->addItem( "RTSP" );
     ui.destBox->addItem( "RTP / MPEG Transport Stream" );
     ui.destBox->addItem( "RTP Audio/Video Profile" );
     ui.destBox->addItem( "UDP (legacy)" );
@@ -159,18 +160,22 @@ void SoutDialog::addDest( )
             caption = qfu( "WMSP" );
             break;
         case 3:
+            db = new RTSPDestBox( this );
+            caption = qfu( "RTSP" );
+            break;
+        case 4:
             db = new RTPDestBox( this, "ts" );
             caption = "RTP/TS";
             break;
-        case 4:
+        case 5:
             db = new RTPDestBox( this );
             caption = "RTP/AVP";
             break;
-        case 5:
+        case 6:
             db = new UDPDestBox( this );
             caption = "UDP";
             break;
-        case 6:
+        case 7:
             db = new ICEDestBox( this );
             caption = "Icecast";
             break;