From d09767fb78344d163e04dec8f72231b0d8e62c85 Mon Sep 17 00:00:00 2001 From: Pierre Ynard Date: Sun, 24 Jan 2010 22:37:42 +0100 Subject: [PATCH] Qt4: add the RTSP protocol to the sout dialog It is set up to use the TS muxer --- .../gui/qt4/components/sout/sout_widgets.cpp | 51 +++++++++++++++++++ .../gui/qt4/components/sout/sout_widgets.hpp | 11 ++++ modules/gui/qt4/dialogs/sout.cpp | 11 ++-- 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/modules/gui/qt4/components/sout/sout_widgets.cpp b/modules/gui/qt4/components/sout/sout_widgets.cpp index 7cfd9113f0..1e3f9e5593 100644 --- a/modules/gui/qt4/components/sout/sout_widgets.cpp +++ b/modules/gui/qt4/components/sout/sout_widgets.cpp @@ -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 ); diff --git a/modules/gui/qt4/components/sout/sout_widgets.hpp b/modules/gui/qt4/components/sout/sout_widgets.hpp index d2042cda38..e46e36138f 100644 --- a/modules/gui/qt4/components/sout/sout_widgets.hpp +++ b/modules/gui/qt4/components/sout/sout_widgets.hpp @@ -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; diff --git a/modules/gui/qt4/dialogs/sout.cpp b/modules/gui/qt4/dialogs/sout.cpp index aadaec7b49..1f512f8d48 100644 --- a/modules/gui/qt4/dialogs/sout.cpp +++ b/modules/gui/qt4/dialogs/sout.cpp @@ -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; -- 2.39.2