YARP
Yet Another Robot Platform
yarp::os::H264Carrier Class Reference

A carrier for receiving frames compressed in h264 over rtp. More...

#include <h264_carrier/H264Carrier.h>

+ Inheritance diagram for yarp::os::H264Carrier:

Detailed Description

A carrier for receiving frames compressed in h264 over rtp.

This carrier uses gstreamer libraries (libgstreamer1.0-dev and libgstreamer-plugins-base1.0-dev) to read rtp packets and to decode the h264 stream.

Use this carrier in the following way:

  • suppose there is a server that streams video frames to IP x.x.x.x and to port p: register this port to yarp by yarp command "yarp name register" in this way: yarp name register /serverH264Stream h264 x.x.x.x p
  • you need to connect your client port (for example /yarpview/img:i ) to /serverH264Stream port by h264 carrier to get the video stream: yarp connect /serverH264Stream /yarpview/img:i h264 You can comfigure the carrier to cro frames by passing parameters to the carrier with usual syntax: +pramName.paramValue:
    • +cropLeft.100 ==> the carrier crops 100 pxel from left side
    • +cropRight.100 ==> the carrier crops 100 pxel from right side
    • +cropTop.100 ==> the carrier crops 100 pxel from top side
    • +cropBottom.100 ==> the carrier crops 100 pxel from bottom side
    • +verbose.1 ==> enables verbose mode (default is not verbose) (+verbose.0 disables it.)

Definition at line 41 of file H264Carrier.h.

Public Member Functions

 H264Carrier ()
 
Carriercreate () const override
 Factory method. More...
 
std::string getName () const override
 Get the name of this connection type ("tcp", "mcast", "shmem", ...) More...
 
bool isConnectionless () const override
 Check if this carrier is connectionless (like udp, mcast) or connection based (like tcp). More...
 
bool canAccept () const override
 Check if reading is implemented for this carrier. More...
 
bool canOffer () const override
 Check if writing is implemented for this carrier. More...
 
bool isTextMode () const override
 Check if carrier is textual in nature. More...
 
bool canEscape () const override
 Check if carrier can encode administrative messages, as opposed to just user data. More...
 
void handleEnvelope (const std::string &envelope) override
 Carriers that do not distinguish data from administrative headers (i.e. More...
 
bool requireAck () const override
 Check if carrier has flow control, requiring sent messages to be acknowledged by recipient. More...
 
bool supportReply () const override
 This flag is used by YARP to determine whether the connection can carry RPC traffic, that is, messages with replies. More...
 
bool isLocal () const override
 Check if carrier operates within a single process. More...
 
bool isPush () const override
 Check if carrier is "push" or "pull" style. More...
 
std::string toString () const override
 Get name of carrier. More...
 
void getHeader (Bytes &header) const override
 Provide 8 bytes describing this connection sufficiently to allow the other side of a connection to select it. More...
 
bool checkHeader (const Bytes &header) override
 Given the first 8 bytes received on a connection, decide if this is the right carrier type to use for the rest of the connection. More...
 
void setParameters (const Bytes &header) override
 Configure this carrier based on the first 8 bytes of the connection. More...
 
bool prepareSend (ConnectionState &proto) override
 Perform any initialization needed before writing on a connection. More...
 
bool sendHeader (ConnectionState &proto) override
 Write a header appropriate to the carrier to the connection, followed by any carrier-specific data. More...
 
bool expectSenderSpecifier (ConnectionState &proto) override
 Expect the name of the sending port. More...
 
bool expectExtraHeader (ConnectionState &proto) override
 Receive any carrier-specific header. More...
 
bool respondToHeader (ConnectionState &proto) override
 Respond to the header. More...
 
bool expectReplyToHeader (ConnectionState &proto) override
 Process reply to header, if one is expected for this carrier. More...
 
bool isActive () const override
 Check if carrier is alive and error free. More...
 
bool write (ConnectionState &proto, SizedWriter &writer) override
 Write a message. More...
 
bool reply (ConnectionState &proto, SizedWriter &writer) override
 
virtual bool sendIndex (ConnectionState &proto, SizedWriter &writer)
 
bool expectIndex (ConnectionState &proto) override
 Expect a message header, if there is one for this carrier. More...
 
bool sendAck (ConnectionState &proto) override
 Send an acknowledgement, if needed for this carrier. More...
 
bool expectAck (ConnectionState &proto) override
 Receive an acknowledgement, if expected for this carrier. More...
 
std::string getBootstrapCarrierName () const override
 Get the name of the carrier that should be used prior to handshaking, if a port is registered with this carrier as its default carrier. More...
 
yarp::os::FacecreateFace (void) const override
 Create new Face object that the carrier needs. More...
 
- Public Member Functions inherited from yarp::os::Carrier
bool isBroadcast () const override
 Check if this carrier uses a broadcast mechanism. More...
 
void prepareDisconnect () override
 Do cleanup and preparation for the coming disconnect, if necessary. More...
 
virtual void close ()
 Close the carrier. More...
 
virtual ~Carrier ()
 Destructor. More...
 
virtual int connect (const Contact &src, const Contact &dest, const ContactStyle &style, int mode, bool reversed)
 Some carrier types may require special connection logic. More...
 
bool modifiesIncomingData () const override
 Check if this carrier modifies incoming data through the Carrier::modifyIncomingData method. More...
 
ConnectionReadermodifyIncomingData (ConnectionReader &reader) override
 Modify incoming payload data, if appropriate. More...
 
bool acceptIncomingData (ConnectionReader &reader) override
 Determine whether incoming data should be accepted. More...
 
bool modifiesOutgoingData () const override
 Check if this carrier modifies outgoing data through the Carrier::modifyOutgoingData method. More...
 
const PortWritermodifyOutgoingData (const PortWriter &writer) override
 Modify outgoing payload data, if appropriate. More...
 
bool modifiesReply () const override
 Check if this carrier modifies outgoing data through the Carrier::modifyReply method. More...
 
PortReadermodifyReply (PortReader &reader) override
 Modify reply payload data, if appropriate. More...
 
bool acceptOutgoingData (const PortWriter &writer) override
 Determine whether outgoing data should be accepted. More...
 
virtual bool configure (ConnectionState &proto)
 Give carrier a shot at looking at how the connection is set up. More...
 
virtual bool configureFromProperty (yarp::os::Property &options)
 
void setCarrierParams (const Property &params) override
 Configure carrier from port administrative commands. More...
 
void getCarrierParams (Property &params) const override
 Get carrier configuration and deliver it by port administrative commands. More...
 
- Public Member Functions inherited from yarp::os::Connection
virtual ~Connection ()
 Destructor. More...
 
virtual bool isValid () const
 Check if this object is really a connection, or just an empty placeholder. More...
 
virtual bool isBareMode () const
 Check if carrier excludes type information from payload. More...
 

Private Attributes

std::string envelope
 
h264Decoder_cfgParamters cfgParams
 

Constructor & Destructor Documentation

◆ H264Carrier()

yarp::os::H264Carrier::H264Carrier ( )
inline

Definition at line 47 of file H264Carrier.h.

Member Function Documentation

◆ canAccept()

bool H264Carrier::canAccept ( ) const
overridevirtual

Check if reading is implemented for this carrier.

Returns
true if carrier can read messages

Implements yarp::os::Carrier.

Definition at line 33 of file H264Carrier.cpp.

◆ canEscape()

bool H264Carrier::canEscape ( ) const
overridevirtual

Check if carrier can encode administrative messages, as opposed to just user data.

The word escape is used in the sense of escape character or escape sequence here.

Returns
true if carrier can encode administrative messages

Implements yarp::os::Carrier.

Definition at line 48 of file H264Carrier.cpp.

◆ canOffer()

bool H264Carrier::canOffer ( ) const
overridevirtual

Check if writing is implemented for this carrier.

Returns
true if carrier can write messages

Implements yarp::os::Carrier.

Definition at line 38 of file H264Carrier.cpp.

◆ checkHeader()

bool H264Carrier::checkHeader ( const Bytes header)
overridevirtual

Given the first 8 bytes received on a connection, decide if this is the right carrier type to use for the rest of the connection.

For example the "text" carrier looks for the 8-byte sequence "CONNECT ". See the YARP protocol documentation for all the sequences in use here. In general you are free to add your own.

Parameters
headera buffer holding the first 8 bytes received on the connection
Returns
true if this is the carrier to use.

Implements yarp::os::Carrier.

Definition at line 88 of file H264Carrier.cpp.

◆ create()

Carrier* yarp::os::H264Carrier::create ( ) const
inlineoverridevirtual

Factory method.

Get a new object of the same type as this one.

Returns
a new object of the same type as this one.

Implements yarp::os::Carrier.

Definition at line 50 of file H264Carrier.h.

◆ createFace()

yarp::os::Face * H264Carrier::createFace ( void  ) const
overridevirtual

Create new Face object that the carrier needs.

Reimplemented from yarp::os::Carrier.

Definition at line 220 of file H264Carrier.cpp.

◆ expectAck()

bool H264Carrier::expectAck ( ConnectionState proto)
overridevirtual

Receive an acknowledgement, if expected for this carrier.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 210 of file H264Carrier.cpp.

◆ expectExtraHeader()

bool H264Carrier::expectExtraHeader ( ConnectionState proto)
overridevirtual

Receive any carrier-specific header.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 143 of file H264Carrier.cpp.

◆ expectIndex()

bool H264Carrier::expectIndex ( ConnectionState proto)
overridevirtual

Expect a message header, if there is one for this carrier.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 200 of file H264Carrier.cpp.

◆ expectReplyToHeader()

bool H264Carrier::expectReplyToHeader ( ConnectionState proto)
overridevirtual

Process reply to header, if one is expected for this carrier.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 155 of file H264Carrier.cpp.

◆ expectSenderSpecifier()

bool H264Carrier::expectSenderSpecifier ( ConnectionState proto)
overridevirtual

Expect the name of the sending port.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 137 of file H264Carrier.cpp.

◆ getBootstrapCarrierName()

std::string H264Carrier::getBootstrapCarrierName ( ) const
overridevirtual

Get the name of the carrier that should be used prior to handshaking, if a port is registered with this carrier as its default carrier.

Normally, this should be "tcp".

For carriers intended to interoperate with foreign ports not capable of initiating streams, the bootstrap carrier name should be left blank. YARP may use that fact to arrange for alternate methods of initiating a stream.

Returns
the name of the bootstrap carrier.

Reimplemented from yarp::os::Carrier.

Definition at line 215 of file H264Carrier.cpp.

◆ getHeader()

void H264Carrier::getHeader ( Bytes header) const
overridevirtual

Provide 8 bytes describing this connection sufficiently to allow the other side of a connection to select it.

Parameters
headera buffer to hold the first 8 bytes to send on a connection

Implements yarp::os::Carrier.

Definition at line 84 of file H264Carrier.cpp.

◆ getName()

std::string H264Carrier::getName ( ) const
overridevirtual

Get the name of this connection type ("tcp", "mcast", "shmem", ...)

Returns
the name of this connection type

Implements yarp::os::Connection.

Definition at line 23 of file H264Carrier.cpp.

◆ handleEnvelope()

void H264Carrier::handleEnvelope ( const std::string &  envelope)
overridevirtual

Carriers that do not distinguish data from administrative headers (i.e.

canEscape returns false), can overload this method to handle the envelope inside the stream. On the receiving side, the InputStream will have to overload the yarp::os::InputStream::setReadEnvelopeCallback method, and execute the callback as soon as the envelope is ready.

Parameters
envelopethe envelope to transmit bundled with data.

Reimplemented from yarp::os::Carrier.

Definition at line 53 of file H264Carrier.cpp.

◆ isActive()

bool H264Carrier::isActive ( ) const
overridevirtual

Check if carrier is alive and error free.

Returns
true if carrier is active.

Implements yarp::os::Carrier.

Definition at line 179 of file H264Carrier.cpp.

◆ isConnectionless()

bool H264Carrier::isConnectionless ( ) const
overridevirtual

Check if this carrier is connectionless (like udp, mcast) or connection based (like tcp).

This flag is used by YARP to determine whether the connection can carry RPC traffic, that is, messages with replies. Replies are not supported by YARP on connectionless carriers.

Returns
true if carrier is connectionless

Implements yarp::os::Carrier.

Definition at line 28 of file H264Carrier.cpp.

◆ isLocal()

bool H264Carrier::isLocal ( ) const
overridevirtual

Check if carrier operates within a single process.

In such a case, YARP connections may get completely reorganized in order to optimize them.

Returns
true if carrier will only operate within a single process

Implements yarp::os::Carrier.

Definition at line 68 of file H264Carrier.cpp.

◆ isPush()

bool H264Carrier::isPush ( ) const
overridevirtual

Check if carrier is "push" or "pull" style.

Push means that the side that initiates a connection is also the one that will sending of data or commands. All native YARP connections are like this. A "pull" style is equivalent to automatically sending a "reverse connection" port command at the start of the connection.

Returns
true if carrier is "push" style, false if "pull" style

Reimplemented from yarp::os::Carrier.

Definition at line 74 of file H264Carrier.cpp.

◆ isTextMode()

bool H264Carrier::isTextMode ( ) const
overridevirtual

Check if carrier is textual in nature.

Returns
true if carrier is text-based

Implements yarp::os::Carrier.

Definition at line 43 of file H264Carrier.cpp.

◆ prepareSend()

bool H264Carrier::prepareSend ( ConnectionState proto)
overridevirtual

Perform any initialization needed before writing on a connection.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 116 of file H264Carrier.cpp.

◆ reply()

bool H264Carrier::reply ( ConnectionState proto,
SizedWriter writer 
)
overridevirtual

Reimplemented from yarp::os::Carrier.

Definition at line 190 of file H264Carrier.cpp.

◆ requireAck()

bool H264Carrier::requireAck ( ) const
overridevirtual

Check if carrier has flow control, requiring sent messages to be acknowledged by recipient.

Returns
true if carrier requires acknowledgement.

Implements yarp::os::Carrier.

Definition at line 58 of file H264Carrier.cpp.

◆ respondToHeader()

bool H264Carrier::respondToHeader ( ConnectionState proto)
overridevirtual

Respond to the header.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 149 of file H264Carrier.cpp.

◆ sendAck()

bool H264Carrier::sendAck ( ConnectionState proto)
overridevirtual

Send an acknowledgement, if needed for this carrier.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 205 of file H264Carrier.cpp.

◆ sendHeader()

bool H264Carrier::sendHeader ( ConnectionState proto)
overridevirtual

Write a header appropriate to the carrier to the connection, followed by any carrier-specific data.

Must communicate at least the name of the originating port, if there is one.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 131 of file H264Carrier.cpp.

◆ sendIndex()

bool H264Carrier::sendIndex ( ConnectionState proto,
SizedWriter writer 
)
virtual

Definition at line 195 of file H264Carrier.cpp.

◆ setParameters()

void H264Carrier::setParameters ( const Bytes header)
overridevirtual

Configure this carrier based on the first 8 bytes of the connection.

This will only be called if checkHeader passed.

Parameters
headera buffer holding the first 8 bytes received on the connection

Implements yarp::os::Carrier.

Definition at line 93 of file H264Carrier.cpp.

◆ supportReply()

bool H264Carrier::supportReply ( ) const
overridevirtual

This flag is used by YARP to determine whether the connection can carry RPC traffic, that is, messages with replies.

Returns
true if carrier supports replies

Implements yarp::os::Carrier.

Definition at line 63 of file H264Carrier.cpp.

◆ toString()

std::string H264Carrier::toString ( ) const
overridevirtual

Get name of carrier.

Returns
name of carrier.

Implements yarp::os::Carrier.

Definition at line 79 of file H264Carrier.cpp.

◆ write()

bool H264Carrier::write ( ConnectionState proto,
SizedWriter writer 
)
overridevirtual

Write a message.

Parameters
protothe protocol object, which tracks connection state
Returns
true on success, false on failure

Implements yarp::os::Carrier.

Definition at line 184 of file H264Carrier.cpp.

Member Data Documentation

◆ cfgParams

h264Decoder_cfgParamters yarp::os::H264Carrier::cfgParams
private

Definition at line 45 of file H264Carrier.h.

◆ envelope

std::string yarp::os::H264Carrier::envelope
private

Definition at line 44 of file H264Carrier.h.


The documentation for this class was generated from the following files: