[hydra-commits] hydra/media_format_ulaw.git branch "master" updated.
Commits to the Hydra project code repositories
hydra-commits at lists.digium.com
Mon Aug 2 11:36:25 CDT 2010
branch "master" has been updated
via 12b6f84a2f3237c8887b3fa58e37b35a968e993a (commit)
from 4c6a1a4073cdad51eaa1f7a9ea0f4b44cfbb5b56 (commit)
Summary of changes:
slice/media.ice | 487 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 487 insertions(+), 0 deletions(-)
create mode 100644 slice/media.ice
- Log -----------------------------------------------------------------
commit 12b6f84a2f3237c8887b3fa58e37b35a968e993a
Author: Joshua Colp <jcolp at digium.com>
Date: Mon Aug 2 13:37:24 2010 -0300
Update media slice definition based on style guidelines.
diff --git a/slice/media.ice b/slice/media.ice
new file mode 100644
index 0000000..197b5a4
--- /dev/null
+++ b/slice/media.ice
@@ -0,0 +1,487 @@
+#include <Ice/BuiltinSequences.ice>
+
+module Hydra
+{
+
+module Media
+{
+
+module V1
+{
+
+ /**
+ * Forward declaration of the Frame class so we can define a sequence of them.
+ */
+ class Frame;
+
+ /**
+ * Forward declaration of the Format class so we can define a sequence of them.
+ */
+ class Format;
+
+ /**
+ * Forward declaration of the StreamSource interface so we can define a sequence of proxies to them.
+ */
+ interface StreamSource;
+
+ /**
+ * Forward declaration of the StreamSink interface so we can define a sequence of proxies to them.
+ */
+ interface StreamSink;
+
+ /**
+ * A sequence of stream source proxies.
+ */
+ sequence<StreamSource*> StreamSourceSeq;
+
+ /**
+ * A sequence of stream sink proxies.
+ */
+ sequence<StreamSink*> StreamSinkSeq;
+
+ /**
+ * A sequence of concrete formats.
+ */
+ sequence<Format> FormatSeq;
+
+ /**
+ * A sequence of concrete frames.
+ */
+ sequence<Frame> FrameSeq;
+
+ /**
+ * Interface to a container of media sources and sinks.
+ */
+ interface Session
+ {
+ /**
+ * Method which returns the stream sources that are on the session.
+ *
+ * @return StreamSourceSeq A sequence of stream sources.
+ */
+ StreamSourceSeq getSources();
+
+ /**
+ * Method which returns the stream sinks that are on the session.
+ *
+ * @return StreamSinkSeq A sequence of stream sinks.
+ */
+ StreamSinkSeq getSinks();
+
+ /**
+ * Method which returns a unique identifier for the session.
+ *
+ * @return string A string identifier for the session.
+ */
+ idempotent string getId();
+ };
+
+ /**
+ * Exception that gets thrown if a sink receives a format that it can not handle.
+ */
+ exception UnsupportedMediaFormatException
+ {
+ };
+
+ /**
+ * Exception that gets thrown if a fatal error occurs on a stream or sink.
+ */
+ exception FatalStreamException
+ {
+ };
+
+ /**
+ * Exception that gets thrown if a source can not switch to a different format.
+ */
+ exception MediaFormatSwitchException
+ {
+ };
+
+
+ /**
+ * Interface to a source of media.
+ */
+ interface StreamSource
+ {
+ /**
+ * Method which changes where the implementation should send media that originates from itself.
+ *
+ * @param destination A proxy to a stream sink where media will be sent to.
+ */
+ idempotent void setSink(StreamSink* destination);
+
+ /**
+ * Method which retrieves the current stream sink for media.
+ *
+ * @return StreamSink* A proxy to the stream sink where media is being sent to.
+ */
+ idempotent StreamSink* getSink();
+
+ /**
+ * Method which returns the formats that frames from this source may come in.
+ *
+ * @return FormatSeq A sequence of concrete format classes.
+ */
+ idempotent FormatSeq getFormats();
+
+ /**
+ * Method which returns a unique identifier for the source.
+ *
+ * @return string A string identifier for the source.
+ */
+ idempotent string getId();
+
+ /**
+ * Method which requests that the source change the format of frames being sent to the sink.
+ *
+ * @param Format A concrete class describing the format to change to.
+ */
+ void requestFormat(Format newformat) throws MediaFormatSwitchException;
+ };
+
+
+ /**
+ * Interface to a sink for media.
+ */
+ interface StreamSink
+ {
+ /**
+ * Method which gives the implementation a sequence of frames which it will then deal with in an implementation
+ * specific manner.
+ *
+ * @param frames A sequence of frames.
+ */
+ void write(FrameSeq frames) throws UnsupportedMediaFormatException, FatalStreamException;
+
+ /**
+ * Method which changes the source of media being sent to this sink.
+ *
+ * @param source A proxy to the stream source that media is being received from.
+ */
+ idempotent void setSource(StreamSource* source);
+
+ /**
+ * Method which retrieves the current stream source of media.
+ *
+ * @return StreamSource* A proxy to the stream source that media is being received from.
+ */
+ idempotent StreamSource* getSource();
+
+ /**
+ * Method which returns the formats of frames that this sink can handle.
+ *
+ * @return FormatSeq A sequence of concrete format classes.
+ */
+ idempotent FormatSeq getFormats();
+
+ /**
+ * Method which returns a unique identifier for the sink.
+ *
+ * @return string A string identifier for the sink.
+ */
+ idempotent string getId();
+ };
+
+ /**
+ * Interface to a media operation session. This extends the normal Session interface and provides additional
+ * resource specific methods.
+ */
+ interface MediaOperationSession extends Session
+ {
+ /**
+ * Method which releases any resources associated with this media operation session.
+ */
+ void release();
+ };
+
+ /**
+ * A generic format discovery class that can be extended for adding parameters. The parameters are used to find
+ * a component capable of interpreting and providing a concrete class for a format.
+ */
+ class FormatDiscovery
+ {
+ };
+
+ /**
+ * A format discovery class that allows finding a format based on name.
+ */
+ class FormatDiscoveryName extends FormatDiscovery
+ {
+ /**
+ * A string identifier for the format.
+ */
+ string name;
+ };
+
+ /**
+ * A sequence of strings with each string containing a format specific parameter from SDP.
+ */
+ sequence<string> SDPFormatParameterSeq;
+
+ /**
+ * A format discovery class that allows finding a format based on information taken from SDP.
+ */
+ class FormatDiscoverySDP extends FormatDiscovery
+ {
+ /**
+ * Numerical payload value given in the SDP.
+ */
+ int payload;
+
+ /**
+ * String type of the format (audio/video/etc)
+ */
+ string type;
+
+ /**
+ * String subtype of the format (in the case of audio something like PCMU)
+ */
+ string subtype;
+
+ /**
+ * Numerical sample rate of the format.
+ */
+ int samplerate;
+
+ /**
+ * A sequence of format specific parameters.
+ */
+ SDPFormatParameterSeq parameters;
+ };
+
+ /**
+ * A format discovery class that allows finding a format based on numerical value, used for IAX2.
+ */
+ class FormatDiscoveryIAX2 extends FormatDiscovery
+ {
+ /**
+ * Numerical codec flag value.
+ */
+ int codec;
+ };
+
+ /**
+ * A format discovery class that allows finding an audio format based on a few parameters.
+ */
+ class FormatDiscoveryGenericAudio extends FormatDiscovery
+ {
+ /**
+ * String name of the codec being used.
+ */
+ string name;
+
+ /**
+ * Numerical sample rate.
+ */
+ int samplerate;
+
+ /**
+ * Number of channels present.
+ */
+ int channels;
+ };
+
+ /**
+ * Interface to a service that interprets format discovery parameters and returns a concrete class
+ * representing them.
+ */
+ interface MediaFormatService
+ {
+ /**
+ * Method which returns a concrete format class given discovery parameters.
+ *
+ * @param format A concrete format discovery class containing parameters of the format.
+ *
+ * @return Format A concrete format class representing the format as described in the
+ * format discovery class.
+ */
+ idempotent Format getFormat(FormatDiscovery format);
+ };
+
+ /**
+ * A generic media operation class that can be extended for adding parameters. The parameters are used to find
+ * a component capable of performing the described operation.
+ */
+ class MediaOperation
+ {
+ };
+
+ /**
+ * A transcoding media operation class that is used to transcode from one format to other.
+ */
+ class MediaOperationTranscode extends MediaOperation
+ {
+ /**
+ * A concrete format class describing the format that frames will be received in.
+ */
+ Format from;
+
+ /**
+ * A concrete format class describing the format that frames should be sent in.
+ */
+ Format to;
+ };
+
+
+ /**
+ * A sequence of media operations. These are ordered in the order in which they should be
+ * executed.
+ */
+ sequence<MediaOperation> MediaOperationSeq;
+
+ /**
+ * A media operation query result class, this gets returned by a media operation service when queried.
+ */
+ class MediaOperationQueryResult
+ {
+ /**
+ * A concrete class describing the operation that the media operation service can perform.
+ */
+ MediaOperation operation;
+
+ /**
+ * An arbitrary numerical score from 1 to 100 of how well the media operation service can perform
+ * the above operation. This value is used to determine the best route and best component to use
+ * for a sequence of media operations when faced with multiple choices.
+ */
+ int score;
+ };
+
+ /**
+ * A sequence of media operation query results, returned by the MediaOperationService interface.
+ */
+ sequence<MediaOperationQueryResult> MediaOperationQueryResultSeq;
+
+ /**
+ * Interface to a service which performs a media operation.
+ */
+ interface MediaOperationService
+ {
+ /**
+ * Method which determines how well supported operations are.
+ *
+ * @param operations A sequence of media operations that are to be performed.
+ *
+ * @return MediaOperationQueryResultSeq A sequence of supported operations with a score of how well
+ * they can be performed.
+ */
+ idempotent MediaOperationQueryResultSeq isSupported(MediaOperationSeq operations);
+
+ /**
+ * Method which allocates a media operation session.
+ *
+ * @param operations A sequence of media operations that are to be performed.
+ *
+ * @return MediaOperationSession* A proxy to a media operation session that will perform the given media
+ * operations.
+ */
+ MediaOperationSession *allocate(MediaOperationSeq operations);
+ };
+
+ /**
+ * A generic frame class that contains common details about frames. Additional classes should extend this to provide
+ * additional details about the frame.
+ */
+ class Frame
+ {
+ /**
+ * A concrete format class describing the format that this frame is in.
+ */
+ Format mediaformat;
+
+ /**
+ * A sequence of bytes which contain the actual data payload of this frame.
+ */
+ Ice::ByteSeq payload;
+ };
+
+ /**
+ * An additional frame class which is provided for stream based frames.
+ */
+ class StreamFrame extends Frame
+ {
+ /**
+ * Timestamp of the frame.
+ */
+ long timestamp;
+
+ /**
+ * Numerical sequence number of the frame.
+ */
+ long seqno;
+ };
+
+ /**
+ * An additional frame class which is provided for audio frames.
+ */
+ class AudioFrame extends StreamFrame
+ {
+ };
+
+ /**
+ * An additional frame class which is provided for video frames.
+ */
+ class VideoFrame extends StreamFrame
+ {
+ };
+
+ /**
+ * A generic format class that provides common information about formats. Additional classes should extend
+ * this to provide additional details about the format.
+ */
+ class Format
+ {
+ /**
+ * A string containing a human readable name for the format, this may not be unique and is
+ * only meant to be used in logging and event messages.
+ */
+ string name;
+ };
+
+ /**
+ * An additional format class which is provided for audio formats.
+ */
+ class AudioFormat extends Format
+ {
+ /**
+ * Numerical sample rate.
+ */
+ int sampleRate;
+
+ /**
+ * Numerical frame size.
+ */
+ int frameSize;
+
+ /**
+ * Numerical maximum frame size that is supported.
+ */
+ int maximumFrameSize;
+
+ /**
+ * Numerical minimum frame size that is supported.
+ */
+ int minimumFrameSize;
+ };
+
+ /**
+ * An additional format class which is provided for video formats.
+ */
+ class VideoFormat extends Format
+ {
+ /**
+ * Numerical maximum allowed bandwidth.
+ */
+ int maximumBandwidth;
+
+ /**
+ * Numerical maximum allowed bitrate.
+ */
+ int maximumBitrate;
+ };
+
+}; // end module V1
+
+}; // end module Media
+
+}; // end module Hydra
-----------------------------------------------------------------------
--
hydra/media_format_ulaw.git
More information about the asterisk-scf-commits
mailing list