📄 avstreams.idl
字号:
*/
interface StreamEndPoint_A : StreamEndPoint
{
/// Used for ATM-style multicast.
boolean multiconnect (inout streamQoS the_qos,
inout flowSpec the_spec)
raises (noSuchFlow, QoSRequestFailed, streamOpFailed);
/// Used for ATM-style multicast.
boolean connect_leaf (in StreamEndPoint_B the_ep,
inout streamQoS the_qos,
in flowSpec the_flows)
raises (streamOpFailed, noSuchFlow,
QoSRequestFailed, notSupported);
/// Used for ATM-style multicast.
void disconnect_leaf (in StreamEndPoint_B the_ep,
in flowSpec theSpec)
raises(streamOpFailed, noSuchFlow, notSupported);
};
/**
* @interface StreamEndPoint_B
* @brief The "B" side of a streamendpoint.
*/
interface StreamEndPoint_B : StreamEndPoint
{
/// Used for ATM-style multicast.
boolean multiconnect (inout streamQoS the_qos,
inout flowSpec the_spec)
raises (streamOpFailed, noSuchFlow,
QoSRequestFailed, FPError);
};
/**
* @interface VDev
* @brief Implements the VDev interface. One of these is created per
* connection, and represents device-specific parameters.
*/
interface VDev : CosPropertyService::PropertySet
{
/// Called to tell the vdev who the streamctrl, peer vdev is.
boolean set_peer (in StreamCtrl the_ctrl,
in VDev the_peer_dev,
inout streamQoS the_qos,
in flowSpec the_spec)
raises (noSuchFlow,
QoSRequestFailed,
streamOpFailed);
/// Used to set the streamctrl and multicast device.
boolean set_Mcast_peer (in StreamCtrl the_ctrl,
in MCastConfigIf a_mcastconfigif,
inout streamQoS the_qos,
in flowSpec the_spec)
raises (noSuchFlow,
QoSRequestFailed,
streamOpFailed);
/// Called by the peer VDev to configure the device (catch all).
void configure (in CosPropertyService::Property the_config_mesg)
raises (PropertyException,
streamOpFailed);
/// Uses <formatName> standardised by OMG and IETF
/// Used to set a format on a flowname.
void set_format (in string flowName,
in string format_name)
raises (notSupported);
// = Note, some of these device params are standardised by OMG
/// Used to set device parameters.
void set_dev_params (in string flowName,
in CosPropertyService::Properties new_params)
raises (PropertyException,
streamOpFailed);
/// Called to change QoS of the device.
boolean modify_QoS (inout streamQoS the_qos,
in flowSpec the_spec)
raises (noSuchFlow,
QoSRequestFailed);
};
/**
* @interface MMDevice
* @brief Implements a factory to create Endpoints and VDevs.
*/
interface MMDevice : CosPropertyService::PropertySet
{
/// Called by StreamCtrl to create a "A" type streamendpoint and
/// vdev.
StreamEndPoint_A create_A (in StreamCtrl the_requester,
out VDev the_vdev,
inout streamQoS the_qos,
out boolean met_qos,
inout string named_vdev,
in flowSpec the_spec)
raises (streamOpFailed,
streamOpDenied,
notSupported,
QoSRequestFailed,
noSuchFlow);
/// Called by StreamCtrl to create a "B" type streamendpoint and
/// vdev.
StreamEndPoint_B create_B(in StreamCtrl the_requester,
out VDev the_vdev,
inout streamQoS the_qos,
out boolean met_qos,
inout string named_vdev,
in flowSpec the_spec)
raises (streamOpFailed,
streamOpDenied,
notSupported,
QoSRequestFailed,
noSuchFlow);
/// Can be used to request the MMDevice to create a new
/// StreamCtrl, and call bind_devs on it.
StreamCtrl bind (in MMDevice peer_device,
inout streamQoS the_qos,
out boolean is_met,
in flowSpec the_spec)
raises (streamOpFailed,
noSuchFlow,
QoSRequestFailed);
/// Multicast bind.
StreamCtrl bind_mcast (in MMDevice first_peer,
inout streamQoS the_qos,
out boolean is_met,
in flowSpec the_spec)
raises (streamOpFailed,
noSuchFlow,
QoSRequestFailed);
/// Remove the StreamEndPoint and the related vdev.
void destroy (in StreamEndPoint the_ep,
in string vdev_name)
// ie VDev not found
raises (notSupported);
/// Not supported in the light profile, raises notsupported.
string add_fdev (in Object the_fdev)
raises (notSupported,
streamOpFailed);
/// Not supported in the light profile, raises notsupported.
Object get_fdev (in string flow_name)
raises (notSupported,
noSuchFlow);
/// Not supported in the light profile, raises notsupported.
void remove_fdev (in string flow_name)
raises (notSupported,
noSuchFlow,
streamOpFailed);
};
// Define the exceptions.
exception protocolNotSupported{};
exception formatNotSupported{};
exception formatMismatch{};
exception FEPMismatch{};
exception alreadyConnected{};
exception invalidSettings{string settings;};
exception notConnected{};
exception deviceQosMismatch{};
exception failedToConnect{string reason;};
exception failedToListen{string reason;};
// Forward declarations of the interfaces.
interface FlowProducer;
interface FlowConsumer;
interface FlowEndPoint;
interface FDev;
interface FlowConnection : CosPropertyService::PropertySet{
void stop();
void start();
void destroy();
boolean modify_QoS(inout AVStreams::QoS new_qos)
raises (AVStreams::QoSRequestFailed);
boolean use_flow_protocol(in string fp_name,
in any fp_settings)
raises (AVStreams::FPError, AVStreams::notSupported);
oneway void push_event(in AVStreams::streamEvent the_event);
boolean connect_devs(in FDev a_party, in FDev b_party,
inout AVStreams::QoS the_qos)
raises (AVStreams::streamOpFailed,
AVStreams::streamOpDenied,
AVStreams::QoSRequestFailed);
boolean connect(in FlowProducer flow_producer,
in FlowConsumer flow_consumer,
inout AVStreams::QoS the_qos)
raises (formatMismatch, FEPMismatch, alreadyConnected);
boolean disconnect();
// The notSupported exception is raised where
// flow cannot have multiple producers
boolean add_producer(in FlowProducer flow_producer,
inout AVStreams::QoS the_qos)
raises (alreadyConnected, AVStreams::notSupported);
boolean add_consumer(in FlowConsumer flow_consumer,
inout AVStreams::QoS the_qos)
raises (alreadyConnected);
boolean drop(in FlowEndPoint target)
raises (notConnected);
};
interface FlowEndPoint : CosPropertyService::PropertySet
{
boolean lock();
void unlock();
void stop();
void start();
void destroy();
/// Default is a nil object reference
attribute AVStreams::StreamEndPoint related_sep;
attribute FlowConnection related_flow_connection;
FlowEndPoint get_connected_fep()
raises (notConnected,AVStreams::notSupported);
/// syntax of fp_name is <flowProtocol>
boolean use_flow_protocol(in string fp_name,
in any fp_settings)
raises (AVStreams::FPError, AVStreams::notSupported);
/// set_format() initializes 侂format來
/// as current media format e.g. MPEG.
void set_format(in string format)
raises (AVStreams::notSupported);
void set_dev_params(in CosPropertyService::Properties new_settings)
// raises (CosPropertyService::PropertyException, AVStreams::streamOpFailed);
raises (PropertyException, AVStreams::streamOpFailed);
void set_protocol_restriction(in AVStreams::protocolSpec the_spec)
raises (AVStreams::notSupported);
boolean is_fep_compatible(in FlowEndPoint fep)
raises (formatMismatch, deviceQosMismatch);
boolean set_peer(in FlowConnection the_fc,
in FlowEndPoint the_peer_fep,
inout AVStreams::QoS the_qos)
raises (AVStreams::QoSRequestFailed,
AVStreams::streamOpFailed);
boolean set_Mcast_peer(in FlowConnection the_fc,
in AVStreams::MCastConfigIf a_mcastconfigif,
inout AVStreams::QoS the_qos)
raises (AVStreams::QoSRequestFailed);
boolean connect_to_peer(inout AVStreams::QoS the_qos,
in string address,
in string use_flow_protocol) // syntax <flowProtocol>
raises(failedToConnect,AVStreams::FPError, AVStreams::QoSRequestFailed);
/// Needs to know its peer to choose its protocol correctly
/// Also to ask for a reverse channel for credit-based flow
/// control, if one is required
string go_to_listen(inout AVStreams::QoS the_qos,
in boolean is_mcast,
in FlowEndPoint peer,
inout string flowProtocol)// syntax <flowProtocol>
// The out value of flowProtocol contains SFP version
// supported and all options including "Credit".
raises(failedToListen, AVStreams::FPError,
AVStreams::QoSRequestFailed);
};
interface FlowProducer : FlowEndPoint
{
string connect_mcast(inout AVStreams::QoS the_qos,
out boolean is_met,
in string address,
in string use_flow_protocol)
raises (failedToConnect,
AVStreams::notSupported,
AVStreams::FPError,
AVStreams::QoSRequestFailed);
string get_rev_channel(in string pcol_name);
void set_key(in AVStreams::key the_key);
void set_source_id(in long source_id);
};
interface FlowConsumer : FlowEndPoint
{
};
interface FDev : CosPropertyService::PropertySet {
FlowProducer create_producer(in FlowConnection the_requester,
inout AVStreams::QoS the_qos,
out boolean met_qos,
inout string named_fdev)
raises(AVStreams::streamOpFailed,
AVStreams::streamOpDenied,
AVStreams::notSupported,
AVStreams::QoSRequestFailed);
FlowConsumer create_consumer(in FlowConnection the_requester,
inout AVStreams::QoS the_qos,
out boolean met_qos,
inout string named_fdev)
raises(AVStreams::streamOpFailed,
AVStreams::streamOpDenied,
AVStreams::notSupported,
AVStreams::QoSRequestFailed);
FlowConnection bind(in FDev peer_device,
inout AVStreams::QoS the_qos,
out boolean is_met)
raises (AVStreams::streamOpFailed,
AVStreams::QoSRequestFailed);
FlowConnection bind_mcast(in FDev first_peer,
inout AVStreams::QoS the_qos,
out boolean is_met)
raises (AVStreams::streamOpFailed,
AVStreams::QoSRequestFailed);
void destroy(in FlowEndPoint the_ep, in string fdev_name)
// ie FDev not found
raises (AVStreams::notSupported);
};
enum PositionOrigin {
AbsolutePosition, RelativePosition, ModuloPosition
};
enum PositionKey {
ByteCount, SampleCount, MediaTime
};
struct Position {
PositionOrigin origin;
PositionKey key;
long value;
};
exception PostionKeyNotSupported { PositionKey key;};
exception InvalidPosition { PositionKey key;};
/**
* @interface MediaControl
* @brief MediaControl interface is similar to ControlledStream
* interface in MSS. It can be inherited by flow endpoints or
* FlowConnection interfaces.
*/
interface MediaControl{
exception PostionKeyNotSupported { PositionKey key;};
Position get_media_position(in PositionOrigin an_origin,
in PositionKey a_key)
raises (PostionKeyNotSupported);
void set_media_position(in Position a_position)
raises (PostionKeyNotSupported, InvalidPosition);
void start(in Position a_position)
raises(InvalidPosition);
void pause(in Position a_position)
raises(InvalidPosition);
void resume(in Position a_position)
raises(InvalidPosition);
void stop(in Position a_position)
raises(InvalidPosition);
};
// Additional sequences needed for the properties.
typedef sequence<FlowConnection> FlowConnection_seq;
typedef sequence<StreamEndPoint_A> StreamEndPoint_A_seq;
typedef sequence<StreamEndPoint_B> StreamEndPoint_B_seq;
typedef sequence<FlowEndPoint> FlowEndPoint_seq;
typedef sequence<Object> Object_seq;
};
#endif /* TAO_AV_STREAMS_IDL */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -