Commit d09767fb authored by Pierre Ynard's avatar Pierre Ynard

Qt4: add the RTSP protocol to the sout dialog

It is set up to use the TS muxer
parent a466be03
...@@ -226,6 +226,57 @@ QString MMSHDestBox::getMRL( const QString& mux ) ...@@ -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 ) UDPDestBox::UDPDestBox( QWidget *_parent ) : VirtualDestBox( _parent )
{ {
QGridLayout *layout = new QGridLayout( this ); QGridLayout *layout = new QGridLayout( this );
......
...@@ -90,6 +90,17 @@ class MMSHDestBox: public VirtualDestBox ...@@ -90,6 +90,17 @@ class MMSHDestBox: public VirtualDestBox
QSpinBox *MMSHPort; 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 class UDPDestBox: public VirtualDestBox
{ {
Q_OBJECT; Q_OBJECT;
......
...@@ -74,6 +74,7 @@ SoutDialog::SoutDialog( QWidget *parent, intf_thread_t *_p_intf, const QString& ...@@ -74,6 +74,7 @@ SoutDialog::SoutDialog( QWidget *parent, intf_thread_t *_p_intf, const QString&
ui.destBox->addItem( qtr( "File" ) ); ui.destBox->addItem( qtr( "File" ) );
ui.destBox->addItem( "HTTP" ); ui.destBox->addItem( "HTTP" );
ui.destBox->addItem( "MS-WMSP (MMSH)" ); ui.destBox->addItem( "MS-WMSP (MMSH)" );
ui.destBox->addItem( "RTSP" );
ui.destBox->addItem( "RTP / MPEG Transport Stream" ); ui.destBox->addItem( "RTP / MPEG Transport Stream" );
ui.destBox->addItem( "RTP Audio/Video Profile" ); ui.destBox->addItem( "RTP Audio/Video Profile" );
ui.destBox->addItem( "UDP (legacy)" ); ui.destBox->addItem( "UDP (legacy)" );
...@@ -159,18 +160,22 @@ void SoutDialog::addDest( ) ...@@ -159,18 +160,22 @@ void SoutDialog::addDest( )
caption = qfu( "WMSP" ); caption = qfu( "WMSP" );
break; break;
case 3: case 3:
db = new RTSPDestBox( this );
caption = qfu( "RTSP" );
break;
case 4:
db = new RTPDestBox( this, "ts" ); db = new RTPDestBox( this, "ts" );
caption = "RTP/TS"; caption = "RTP/TS";
break; break;
case 4: case 5:
db = new RTPDestBox( this ); db = new RTPDestBox( this );
caption = "RTP/AVP"; caption = "RTP/AVP";
break; break;
case 5: case 6:
db = new UDPDestBox( this ); db = new UDPDestBox( this );
caption = "UDP"; caption = "UDP";
break; break;
case 6: case 7:
db = new ICEDestBox( this ); db = new ICEDestBox( this );
caption = "Icecast"; caption = "Icecast";
break; break;
......
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