|
Ocean
|
This class implements a movie recorder class for Android. More...
#include <AMovie.h>
Public Member Functions | |
| MediumRef | clone () const override |
| Clones this movie medium and returns a new independent instance of this medium. | |
| bool | start () override |
| Starts the medium. | |
| bool | pause () override |
| Pauses the medium. | |
| bool | stop () override |
| Stops the medium. | |
| bool | isStarted () const override |
| Returns whether the medium is started currently. | |
| double | duration () const override |
| Returns the duration of the finite medium. | |
| double | normalDuration () const override |
| Returns the duration without speed consideration. | |
| double | position () const override |
| Returns the recent position of the finite medium. | |
| bool | setPosition (const double position) override |
| Sets the recent position of the finite medium. | |
| float | speed () const override |
| Returns the speed of the finite medium. | |
| bool | setSpeed (const float speed) override |
| Sets the speed of the finite medium. | |
| float | soundVolume () const override |
| Returns the volume of the sound in db. | |
| bool | soundMute () const override |
| Returns whether the sound medium is in a mute state. | |
| bool | setSoundVolume (const float volume) override |
| Sets the volume of the sound in db. | |
| bool | setSoundMute (const bool mute) override |
| Sets or un-sets the sound medium to a mute state. | |
| bool | useSound () const override |
| Returns whether the sound of this movie is enabled or disabled. | |
| bool | setUseSound (const bool state) override |
| Enables or disables the audio in this movie (has no effect if the movie does not have audio). | |
| Timestamp | startTimestamp () const override |
| Returns the start timestamp. | |
| Timestamp | pauseTimestamp () const override |
| Returns the pause timestamp. | |
| Timestamp | stopTimestamp () const override |
| Returns the stop timestamp. | |
Public Member Functions inherited from Ocean::Media::Medium | |
| const std::string & | url () const |
| Returns the url of the medium. | |
| bool | isValid () const |
| Returns whether the medium is valid. | |
| const std::string & | library () const |
| Returns the name of the owner library. | |
| Type | type () const |
| Returns the type of the medium. | |
| bool | isType (const Type type) const |
| Returns whether a medium has a given type. | |
| bool | isExclusive () const |
| Returns whether this medium can be use exclusively. | |
Public Member Functions inherited from Ocean::Media::FiniteMedium | |
| bool | loop () const |
| Returns whether the medium is played in a loop. | |
| virtual bool | setLoop (const bool value) |
| Sets whether the medium has to be played in a loop. | |
| virtual bool | taskFinished () const |
| Returns whether a previous task has been finished. | |
Public Member Functions inherited from Ocean::Media::FrameMedium | |
| ~FrameMedium () override | |
| Destructs a frame object. | |
| bool | hasFrame () const |
| Returns whether the object holds a frame. | |
| FrameFrequency | frameFrequency () const |
| Returns the frequency of the frame in Hz. | |
| virtual FrameRef | frame (SharedAnyCamera *anyCamera=nullptr) const |
| Returns the most recent frame. | |
| virtual FrameRef | frame (const Timestamp timestamp, SharedAnyCamera *anyCamera=nullptr) const |
| Returns the frame with a specific timestamp. | |
| virtual FrameRef | frameTimeout (const double timeout, SharedAnyCamera *anyCamera=nullptr) const |
| Waits until the first frame is available. | |
| virtual bool | hasFrame (const Timestamp timestamp) const |
| Returns whether this media object currently holds a frame with specified timestamp. | |
| unsigned int | preferredFrameWidth () const |
| Returns the preferred width of the frame in pixel. | |
| unsigned int | preferredFrameHeight () const |
| Returns the preferred height of the frame in pixel. | |
| FrameType::PixelFormat | preferredFramePixelFormat () const |
| Returns the preferred frame pixel format. | |
| FrameFrequency | preferredFrameFrequency () const |
| Returns the preferred frame frequency in Hz. | |
| virtual HomogenousMatrixD4 | device_T_camera () const |
| Returns the transformation between the camera and device. | |
| virtual bool | setPreferredFrameDimension (const unsigned int width, const unsigned int height) |
| Sets the preferred frame dimension. | |
| virtual bool | setPreferredFramePixelFormat (const FrameType::PixelFormat format) |
| Sets the preferred frame pixel format. | |
| virtual bool | setPreferredFrameFrequency (const FrameFrequency frequency) |
| Sets the preferred frame frequency in Hz. | |
| size_t | capacity () const |
| Returns the capacity of the frame history of this frame medium object. | |
| bool | setCapacity (const size_t capacity) |
| Sets or changes the capacity of the frame history of this frame medium object. | |
| virtual bool | setCamera (SharedAnyCamera &&camera) |
| Sets the known camera profile of this frame medium. | |
| FrameCallbackScopedSubscription | addFrameCallback (FrameCallbackFunction &&frameCallbackFunction) |
| Adds a callback function which is called whenever a new frame arrives. | |
Public Member Functions inherited from Ocean::Media::SoundMedium | |
| bool | hasSound () const |
| Returns whether the object holds a sound. | |
| unsigned int | soundChannels () const |
| Returns the number of sound channels. | |
| SoundFrequency | soundFrequency () const |
| Returns the frequency of the sound in Hz. | |
| unsigned int | soundBitsPerSample () const |
| Returns the number of bits per sample. | |
| unsigned int | preferredSoundChannels () const |
| Returns the preferred number of sound channels. | |
| SoundFrequency | preferredSoundFrequency () const |
| Returns the preferred sound frequency in Hz. | |
| unsigned int | preferredSoundBitsPerSample () const |
| Returns the preferred bits per sound sample. | |
| virtual bool | setPreferredSoundChannels (const unsigned int channels) |
| Sets the preferred number of sound channels. | |
| virtual bool | setPreferredSoundFrequency (const SoundFrequency frequency) |
| Sets the preferred sound frequency in Hz. | |
| virtual bool | setPreferredSoundBitsPerSample (const unsigned int bits) |
| Sets the preferred bits per sound sample. | |
Protected Types | |
| using | ScopedFileDescriptor = ScopedObjectCompileTimeT< int, int, int, close, 0, true, -1 > |
| Definition of a scoped file based on a file descriptor. | |
Protected Types inherited from Ocean::Media::FrameMedium | |
| using | FrameCallbackHandler = ScopedSubscriptionCallbackHandlerT< FrameCallbackFunction, FrameMedium, true > |
| Definition of a thread-safe subscription handler for frame callback functions. | |
| using | FrameTypes = std::vector< MediaFrameType > |
| Definition of a vector holding frame types. | |
Protected Types inherited from Ocean::Thread | |
| using | TimedJoinPair = std::pair< pthread_t, bool > |
| Definition of a pair holding a thread id and a boolean state. | |
| enum | ThreadPriority { PRIORITY_IDLE , PRIORTY_BELOW_NORMAL , PRIORTY_NORMAL , PRIORTY_ABOVE_NORMAL , PRIORTY_HIGH , PRIORTY_REALTIME } |
| Definition of different thread priority values. More... | |
Protected Member Functions | |
| AMovie (const std::string &url) | |
| Creates a new movie object. | |
| ~AMovie () override | |
| Destroys a movie object. | |
| void | release () |
| Releases the movie and all associated resources. | |
| void | threadRun () override |
| The thread run function. | |
| bool | initializeMediaExtractor () |
| Creates and initializes the media extractor for the medium's url. | |
| bool | initializeMediaCodecs () |
| Creates and initializes the media codecs for the medium. | |
| AMediaCodec * | createCodecForTrack (AMediaFormat *trackFormat, const char *mime, const size_t trackIndex) |
| Creates the media codec for a specific track. | |
| bool | processInputBuffer (AMediaCodec *const mediaCodec, double &normalRelativePresentationTime) |
| Processes the input buffer of a media codec. | |
Protected Member Functions inherited from Ocean::Media::Android::AMedium | |
| AMedium (const std::string &url) | |
| Creates a new medium by a given url. | |
Protected Member Functions inherited from Ocean::Media::Medium | |
| Medium (const Medium &medium)=delete | |
| Disabled copy constructor. | |
| Medium (const std::string &url) | |
| Creates a new medium by a given url. | |
| virtual | ~Medium () |
| Destructs a medium. | |
| Medium & | operator= (const Medium &medium)=delete |
| Disabled copy operator. | |
Protected Member Functions inherited from Ocean::Media::Movie | |
| Movie (const std::string &url) | |
| Creates a new movie by a given url. | |
Protected Member Functions inherited from Ocean::Media::FiniteMedium | |
| FiniteMedium (const std::string &url) | |
| Creates a new finite medium by a given url. | |
Protected Member Functions inherited from Ocean::Media::FrameMedium | |
| FrameMedium (const std::string &url) | |
| Creates a new frame medium by a given url. | |
| virtual bool | deliverNewFrame (Frame &&frame, SharedAnyCamera &&anyCamera=SharedAnyCamera()) |
| Delivers a new frame to this FrameMedium. | |
Protected Member Functions inherited from Ocean::Media::SoundMedium | |
| SoundMedium (const std::string &url) | |
| Creates a new sound medium by a given url. | |
Protected Member Functions inherited from Ocean::Thread | |
| Thread (const Thread &thread)=delete | |
| Disabled copy constructor. | |
| void | createThread () |
| Creates the thread itself. | |
| void | destroyThread () |
| Destroys the thread itself. | |
| void | stopThreadExplicitly (const unsigned int timeout=5000u) |
| Tries to stop the thread gracefully. | |
| Thread & | operator= (const Thread &thread)=delete |
| The disabled assign operator. | |
| Thread (const std::string &name=std::string()) | |
| Creates a new thread object. | |
| Thread (const unsigned int randomNumberSeedValue, const std::string &name=std::string()) | |
| Creates a new thread object. | |
| virtual | ~Thread () |
| Destructs a thread object. | |
| bool | startThread () |
| Starts the thread. | |
| void | stopThread () |
| Informs the thread to stop. | |
| bool | terminateThread () |
| Terminates the thread. | |
| bool | joinThread (const unsigned int timeout=(unsigned int)(-1)) |
| Waits until this thread has been stopped. | |
| bool | shouldThreadStop () const |
| Returns whether this thread should stop. | |
| bool | isThreadInvokedToStart () const |
| Returns whether this thread has been invoked to start immediately. | |
| bool | isThreadActive () const |
| Returns whether this thread is active. | |
Static Protected Member Functions | |
| static bool | extractAudioSamplesFromCodecOutputBuffer (AMediaCodec *const mediaCodec) |
| Extracts the audio samples from an output buffer of a audio codec. | |
Static Protected Member Functions inherited from Ocean::Thread | |
| static void | sleep (unsigned int ms) |
| Sleeps the calling thread for a given time. | |
| static void | giveUp () |
| Gives up the remaining thread time. | |
| static ThreadId | currentThreadId () |
| Returns the thread id of the current (calling) thread. | |
| static ThreadPriority | threadPriority () |
| Returns the priority of the current thread. | |
| static bool | setThreadPriority (const ThreadPriority priority) |
| Sets the priority of the current thread. | |
| template<typename TObject , typename TExpectedValue > | |
| static bool | waitForValue (TObject &object, const TExpectedValue &expectedValue, const double timeout=-1.0) |
| Waits until an object/variable has an expected value. | |
| template<typename TObject , typename TExpectedValue > | |
| static bool | waitForValue (TObject &object, const TExpectedValue &expectedValue, TemporaryScopedLock &temporaryScopedLock, const double timeout=-1.0) |
| Waits until an object/variable has an expected value. | |
| static int | pthread_timedjoin_np (pthread_t thread, void **retval, const struct timespec *abstime) |
| Implements a thread join function with timeout value. | |
Protected Attributes | |
| ScopedFileDescriptor | fileDescriptor_ |
| Optional file description if used. | |
| AMediaExtractor * | mediaExtractor_ = nullptr |
| The media extractor to be used t. | |
| AMediaCodec * | videoMediaCodec_ = nullptr |
| The media codecs for the video track. | |
| AMediaCodec * | audioMediaCodec_ = nullptr |
| The media codecs for the audio track. | |
| Timestamp | startTimestamp_ = Timestamp(false) |
| The timestamp when the medium started. | |
| Timestamp | pauseTimestamp_ = Timestamp(false) |
| The timestamp when the medium paused. | |
| Timestamp | stopTimestamp_ = Timestamp(false) |
| The timestamp when the medium stopped. | |
| std::atomic< float > | speed_ = 1.0f |
| The playback speed of this movie. | |
| double | normalDuration_ = -1.0 |
| The duration of the movie with normal speed. | |
| bool | useSound_ = false |
| True, to enable audio in the movie; False, to disable audio, currently AMovie does not support audio. | |
Protected Attributes inherited from Ocean::Media::Medium | |
| std::string | url_ |
| Url of the medium. | |
| std::string | libraryName_ |
| Name of the owner library. | |
| bool | isValid_ = false |
| Determines whether the medium is valid. | |
| Type | type_ = MEDIUM |
| Type of the medium. | |
| Lock | lock_ |
| Medium lock. | |
Protected Attributes inherited from Ocean::Media::FiniteMedium | |
| bool | loop_ = false |
| Determines whether the medium is played in a loop. | |
Protected Attributes inherited from Ocean::Media::FrameMedium | |
| FrameCollection | frameCollection_ |
| Frame collection storing several frames with different timestamps. | |
| FrameCallbackHandler | frameCallbackHandler_ |
| The handler for frame callback functions. | |
| FrameFrequency | recentFrameFrequency_ = FrameFrequency(0) |
| Frame frequency. | |
| MediaFrameType | preferredFrameType_ |
| Preferred frame type of the medium. | |
Protected Attributes inherited from Ocean::Media::SoundMedium | |
| SoundType | mediumSoundType |
| Actual sound type. | |
| SoundType | mediumPreferredSoundType |
| Preferred sound type. | |
| Timestamp | mediumSoundTimestamp |
| Timestamp of the recent sound frame. | |
| Timestamp | mediumSoundTypeTimestamp |
| Timestamp of the recent sound frame type. | |
Friends | |
| class | ALibrary |
Additional Inherited Members | |
Public Types inherited from Ocean::Media::Medium | |
| enum | Type : uint32_t { MEDIUM = 0u , FRAME_MEDIUM = 1u << 0u , SOUND_MEDIUM = 1u << 1u , FINITE_MEDIUM = 1u << 2u , LIVE_MEDIUM = 1u << 3u , CONFIG_MEDIUM = 1u << 4u , AUDIO = (1u << 5u) | FINITE_MEDIUM | SOUND_MEDIUM , IMAGE = (1u << 6u) | FRAME_MEDIUM , PIXEL_IMAGE = (1u << 7u) | FRAME_MEDIUM , BUFFER_IMAGE = (1u << 8u) | FRAME_MEDIUM , IMAGE_SEQUENCE = (1u << 9u) | FRAME_MEDIUM | FINITE_MEDIUM , LIVE_AUDIO = (1u << 10u) | LIVE_MEDIUM | SOUND_MEDIUM , LIVE_VIDEO = (1u << 11u) | LIVE_MEDIUM | FRAME_MEDIUM , MICROPHONE = (1u << 12u) | LIVE_MEDIUM , MOVIE = (1u << 13u) | FINITE_MEDIUM | FRAME_MEDIUM | SOUND_MEDIUM } |
| Definition of different medium types. More... | |
Public Types inherited from Ocean::Media::FrameMedium | |
| using | FrameFrequency = double |
| Definition of a frame frequency defined in Hz. | |
| using | FrameCallbackFunction = std::function< void(const Frame &frame, const SharedAnyCamera &camera)> |
| Definition of a callback function for frame events. | |
| using | FrameCallbackScopedSubscription = ScopedSubscriptionHandler::ScopedSubscriptionType |
| Definition of a subscription object for frame callback events. | |
Public Types inherited from Ocean::Media::SoundMedium | |
| using | SoundFrequency = float |
| Definition of a sound frequency defined in Hz. | |
Static Public Member Functions inherited from Ocean::Media::Android::AMedium | |
| static bool | areInterfaceIdsIdentical (const SLInterfaceID &interfaceId0, const SLInterfaceID &interfaceId1) |
| Returns whether two interface ids are identical. | |
| static std::string | toAString (const SLInterfaceID &interfaceId) |
| Returns the hex string of an interface id,. | |
Static Public Member Functions inherited from Ocean::Media::Medium | |
| static std::string | convertType (const Type type) |
| Converts a medium type to a unique string. | |
| static Type | convertType (const std::string &type) |
| Converts a medium type string to a medium type. | |
Static Public Member Functions inherited from Ocean::Media::FrameMedium | |
| static bool | syncedFrames (const FrameMediumRefs &frameMediums, const Timestamp lastTimestamp, FrameRefs &frames, SharedAnyCameras &cameras, const unsigned int waitTime=2u, bool *timedOut=nullptr, HomogenousMatricesD4 *device_T_cameras=nullptr) |
| Extracts most recent frames from several frame medium objects and ensures that the timestamps of all frames are identical. | |
Static Public Attributes inherited from Ocean::Media::Android::AMedium | |
| static constexpr SLInterfaceID_ | slEffectTypeNoiseSuppressorId_ = {0x58b4b260, 0x8e06, 0x11e0, 0xaa8e, {0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b}} |
| Definition of the interface for Noise Suppressor (NS). | |
| static constexpr SLInterfaceID_ | slEffectTypeAcousticEchoCancelerId_ = {0x7b491460, 0x8d4d, 0x11e0, 0xbd61, {0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b}} |
| Definition of the interface for Acoustic Echo Canceler (AEC). | |
Static Public Attributes inherited from Ocean::Media::FiniteMedium | |
| static constexpr float | AS_FAST_AS_POSSIBLE = 0.0f |
| Definition of a speed value allowing to deliver the media content as fast as possible. | |
This class implements a movie recorder class for Android.
NOTE: The supported pixel formats for recording may vary from device to device.
|
protected |
Definition of a scoped file based on a file descriptor.
|
explicitprotected |
Creates a new movie object.
| url | The URL of the movie, must be valid |
|
overrideprotected |
Destroys a movie object.
|
overridevirtual |
Clones this movie medium and returns a new independent instance of this medium.
Reimplemented from Ocean::Media::Medium.
|
protected |
Creates the media codec for a specific track.
| trackFormat | The format of the track for which the code will be created, must be valid |
| mime | The mime of the format, must be valid |
| trackIndex | The index of the track for which the codec will be created, must be valid |
|
overridevirtual |
Returns the duration of the finite medium.
Implements Ocean::Media::FiniteMedium.
|
staticprotected |
Extracts the audio samples from an output buffer of a audio codec.
| mediaCodec | The media codec to which the output buffer belongs, must be valid |
|
protected |
Creates and initializes the media codecs for the medium.
|
protected |
Creates and initializes the media extractor for the medium's url.
|
overridevirtual |
Returns whether the medium is started currently.
Implements Ocean::Media::Medium.
|
overridevirtual |
Returns the duration without speed consideration.
Implements Ocean::Media::FiniteMedium.
|
overridevirtual |
|
overridevirtual |
Returns the pause timestamp.
Implements Ocean::Media::Medium.
|
overridevirtual |
Returns the recent position of the finite medium.
Implements Ocean::Media::FiniteMedium.
|
protected |
Processes the input buffer of a media codec.
| mediaCodec | The media codec which input buffer will be processed, must be valid |
| normalRelativePresentationTime | The resulting relative presentation time in seconds for normal speed |
|
protected |
Releases the movie and all associated resources.
|
overridevirtual |
Sets the recent position of the finite medium.
Reimplemented from Ocean::Media::FiniteMedium.
|
overridevirtual |
Sets or un-sets the sound medium to a mute state.
Implements Ocean::Media::SoundMedium.
|
overridevirtual |
Sets the volume of the sound in db.
Implements Ocean::Media::SoundMedium.
|
overridevirtual |
Sets the speed of the finite medium.
Reimplemented from Ocean::Media::FiniteMedium.
|
overridevirtual |
Enables or disables the audio in this movie (has no effect if the movie does not have audio).
Reimplemented from Ocean::Media::Movie.
|
overridevirtual |
Returns whether the sound medium is in a mute state.
Implements Ocean::Media::SoundMedium.
|
overridevirtual |
Returns the volume of the sound in db.
Implements Ocean::Media::SoundMedium.
|
overridevirtual |
Returns the speed of the finite medium.
Implements Ocean::Media::FiniteMedium.
|
overridevirtual |
|
overridevirtual |
Returns the start timestamp.
Implements Ocean::Media::Medium.
|
overridevirtual |
|
overridevirtual |
|
overrideprotectedvirtual |
The thread run function.
Implements Ocean::Thread.
|
overridevirtual |
Returns whether the sound of this movie is enabled or disabled.
Reimplemented from Ocean::Media::Movie.
|
protected |
The media codecs for the audio track.
|
protected |
Optional file description if used.
|
protected |
The media extractor to be used t.
|
protected |
The duration of the movie with normal speed.
The timestamp when the medium paused.
|
protected |
The playback speed of this movie.
The timestamp when the medium started.
The timestamp when the medium stopped.
|
protected |
True, to enable audio in the movie; False, to disable audio, currently AMovie does not support audio.
|
protected |
The media codecs for the video track.