2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FMediaVideoRecorder.h
20 * @brief This is the header file for the %VideoRecorder class.
22 * This header file contains the declarations of the %VideoRecorder class.
25 #ifndef _FMEDIA_VIDEO_RECORDER_H_
26 #define _FMEDIA_VIDEO_RECORDER_H_
28 #include <FMediaVideoRecorderTypes.h>
29 #include <FMediaIVideoRecorderEventListener.h>
30 #include <FMediaCamera.h>
31 #include <FMediaTypes.h>
33 namespace Tizen { namespace Media
36 class _VideoRecorderImpl;
39 * @class VideoRecorder
40 * @brief This class records a video.
44 * The %VideoRecorder class provides video recording from the camera device. All the input sources must be
45 * controlled independently from the video recording operation. The supported codecs and resolutions are
46 * device-dependent and the available list can be retrieved using the methods available in this class.
47 * The recording operation is limited by the maximum time or size.
49 * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/media/recording_video.htm">Recording Video</a>.
51 * The following example demonstrates how to use the %VideoRecorder class.
55 * #include <FGraphics.h>
60 * using namespace Tizen::Base;
61 * using namespace Tizen::Graphics;
62 * using namespace Tizen::Ui;
63 * using namespace Tizen::Ui::Controls;
64 * using namespace Tizen::Media;
66 * class VideoRecorderSample
67 * : public Tizen::Ui::Controls::Form
68 * , public Tizen::Media::ICameraEventListener
69 * , public Tizen::Media::IVideoRecorderEventListener
72 * VideoRecorderSample(void);
77 * // ICameraEventListener
78 * virtual void OnCameraAutoFocused(bool completeCondition) {}
79 * virtual void OnCameraCaptured(Tizen::Base::ByteBuffer &capturedData, result r) {}
80 * virtual void OnCameraErrorOccurred(CameraErrorReason err) {}
81 * virtual void OnCameraPreviewed(Tizen::Base::ByteBuffer &previewedData, result r) {}
83 * // IVideoRecorderEventListener
84 * virtual void OnVideoRecorderCanceled(result r) {}
85 * virtual void OnVideoRecorderClosed(result r) {}
86 * virtual void OnVideoRecorderEndReached(RecordingEndCondition endCondition) {}
87 * virtual void OnVideoRecorderErrorOccurred( RecorderErrorReason r) {}
88 * virtual void OnVideoRecorderPaused(result r) {}
89 * virtual void OnVideoRecorderStarted(result r) {}
90 * virtual void OnVideoRecorderStopped(result r) {}
94 * VideoRecorder __recorder;
95 * OverlayRegion *__pOverlay;
99 * VideoRecorderSample::VideoRecorderSample(void)
105 * VideoRecorderSample::Start(void)
107 * result r = E_SUCCESS;
108 * Tizen::Graphics::Rectangle rect(0, 0, 320, 240);
109 * BufferInfo bufferInfo;
110 * String filePath = Tizen::App::App::GetInstance()->GetAppRootPath() + L"data/test.mp4";
112 * __pOverlay = GetOverlayRegionN(rect, OVERLAY_REGION_TYPE_PRIMARY_CAMERA);
113 * if (__pOverlay == null)
115 * return GetLastResult();
118 * __pOverlay->GetBackgroundBufferInfo(bufferInfo);
120 * r = __camera.Construct(*this);
126 * r = __camera.PowerOn();
132 * r = __recorder.Construct(*this, __camera);
138 * r = __camera.StartPreview(&bufferInfo, false);
144 * r = __recorder.CreateVideoFile(filePath, true);
150 * r = __recorder.Record();
168 * VideoRecorderSample::Stop(void)
171 * __camera.StopPreview();
172 * __camera.PowerOff();
184 class _OSP_EXPORT_ VideoRecorder
185 : public Tizen::Base::Object
189 * This is the default constructor for this class.
193 * @remarks The object is not fully constructed after this constructor is called. For full construction,
194 * the Construct() method must be called right after calling this constructor.
199 * This is the destructor for this class. @n
200 * All allocated resources are deallocated by this method. This method must be called in the same thread in
201 * which the Construct() method is called.This polymorphic destructor should be overridden if required. This way,
202 * the destructors of the derived classes are called when the destructor of this interface is called.
207 virtual ~VideoRecorder(void);
210 * Initializes this instance of %VideoRecorder with an associated listener and an input source.
214 * @return An error code
215 * @param[in] listener An event listener object
216 * @param[in] camera A Camera object for the input source
217 * @exception E_SUCCESS The method is successful.
218 * @exception E_SYSTEM A system error has occurred.
219 * @exception E_OUT_OF_MEMORY The memory is insufficient.
220 * @exception E_DEVICE_BUSY The recorder is under use by other application or already used in this application.
221 * @exception E_UNSUPPORTED_OPERATION This video recorder usage is not supported.
223 result Construct(IVideoRecorderEventListener& listener, const Camera& camera);
226 * Creates a video file for a recording.
229 * @brief <i> [Compatibility] </i>
233 * @compatibility This method has compatibility issues with OSP compatible applications. @n
234 * For more information, see @ref CompIoPathPage "here".
236 * @privilege %http://tizen.org/privilege/videorecorder
238 * @return An error code
239 * @param[in] destMediaPath The destination for the file that is written @n
240 * The available paths start with prefixes retrieved from the functions such as: @n
241 * Tizen::App::App::GetInstance()->GetAppRootPath() @n
242 * Tizen::System::Environment::GetMediaPath() @n
243 * Tizen::System::Environment::GetExternalStoragePath()
244 * @param[in] overwrite Set to @c true to overwrite the file, @n
246 * @exception E_SUCCESS The method is successful.
247 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
248 * @exception E_RESOURCE_UNAVAILABLE The required file path is unavailable.
249 * @exception E_FILE_ALREADY_EXIST The specified file already exists.
250 * @exception E_STORAGE_FULL The storage is full.
251 * @exception E_OUT_OF_MEMORY The memory is insufficient.
252 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
253 * @remarks The application can register newly created files into the Contents database using Tizen::Content::ContentManager::CreateContent().
256 result CreateVideoFile(const Tizen::Base::String& destMediaPath, bool overwrite);
259 * Closes the video file. @n
260 * This is a synchronous method.
263 * @privilege %http://tizen.org/privilege/videorecorder
265 * @return An error code
266 * @exception E_SUCCESS The method is successful.
267 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
268 * @exception E_SYSTEM A system error has occurred.
269 * @exception E_OUT_OF_MEMORY The memory is insufficient.
270 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
271 * @see CreateVideoFile()
276 * Records the video file. @n
277 * Resumes the recording if Pause() has been called.
280 * @privilege %http://tizen.org/privilege/videorecorder
282 * @return An error code
283 * @exception E_SUCCESS The method is successful.
284 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
285 * @exception E_SYSTEM A system error has occurred.
286 * @exception E_DEVICE_BUSY The recorder is under use by other application.
287 * @exception E_OUT_OF_MEMORY The memory is insufficient.
288 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
289 * @remarks This method must be called after the input media source is started (for example, Camera::StartPreview()).
295 * Stops the recording.
298 * @privilege %http://tizen.org/privilege/videorecorder
300 * @return An error code
301 * @exception E_SUCCESS The method is successful.
302 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
303 * @exception E_SYSTEM A system error has occurred.
304 * @exception E_OUT_OF_MEMORY The memory is insufficient.
305 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
312 * Pauses the recording. @n
313 * To resume the recording after the %Pause() method is called, Record() must be called.
316 * @privilege %http://tizen.org/privilege/videorecorder
318 * @return An error code
319 * @exception E_SUCCESS The method is successful.
320 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
321 * @exception E_SYSTEM A system error has occurred.
322 * @exception E_OUT_OF_MEMORY The memory is insufficient.
323 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
329 * Cancels the recording operation without saving the data.
332 * @privilege %http://tizen.org/privilege/videorecorder
334 * @return An error code
335 * @exception E_SUCCESS The method is successful.
336 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
337 * @exception E_SYSTEM A system error has occurred.
338 * @exception E_OUT_OF_MEMORY The memory is insufficient.
339 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
340 * @remarks When this method is called, the state is changed to ::RECORDER_STATE_STOPPING. @n
341 * After IVideoRecorderEventListener::OnVideoRecorderCanceled() is called, the state is changed to
342 * @c RECORDER_STATE_STOPPED.
349 * Gets the state of a recorder.
353 * @return The current state of the video recorder
354 * @see CreateVideoFile()
361 RecorderState GetState(void) const;
364 * Gets the current recording time.
368 * @return The current recording time in milliseconds, @n
369 * else @c -1 if the recording has not started as yet
371 long GetRecordingTime(void) const;
374 * Gets the current recording size.
378 * @return A @c long value indicating the current recording size in bytes, @n
379 * else @c -1 if the recording has not started as yet
381 long GetRecordingSize(void) const;
384 * Sets the time limit for the recording in milliseconds.
387 * @privilege %http://tizen.org/privilege/videorecorder
389 * @return An error code
390 * @param[in] msTime The maximum recording time in milliseconds @n
391 * The time must be greater than @c 0.
392 * @exception E_SUCCESS The method is successful.
393 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
394 * @exception E_OUT_OF_RANGE The specified time is out of range.
395 * @exception E_OUT_OF_MEMORY The memory is insufficient.
396 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
397 * @remarks The default time is @c 60 seconds.
398 * @see GetMaxRecordingTime()
400 result SetMaxRecordingTime(long msTime);
403 * Gets the time limit of the recording in milliseconds.
407 * @return A @c long value indicating the maximum recording time in milliseconds, @n
408 * else @c -1 if the recording has not started as yet
409 * @see SetMaxRecordingTime()
411 long GetMaxRecordingTime(void) const;
415 * Sets the codec for the recorder. @n
416 * Initially, the default codec from the internal configuration is set.
418 * @brief <i> [Deprecated] </i>
419 * @deprecated This method is deprecated. @n
420 * Instead of using this method, use the SetFormat(CodecType audioCodec, CodecType videoCodec, MediaContainerType container) method that
421 * sets the audio/video codec and container together.
423 * @privilege %http://tizen.org/privilege/videorecorder
425 * @return An error code
426 * @param[in] codec The codec name @n
427 * It must be one of the strings listed by GetSupportedCodecListN(). @n
428 * GetSupportedCodecListN() returns the list of strings in the following formats: @n
429 * - "VIDEO_CODEC_H263" @n
430 * - "VIDEO_CODEC_MPEG4SP" @n
431 * The returned strings are different depending on each device. @n
432 * The following string is always operated upon. This value is different
433 * for each device. @n
434 * "VIDEO_CODEC_DEFAULT": the default codec
435 * @exception E_SUCCESS The method is successful.
436 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
437 * @exception E_UNSUPPORTED_CODEC The specified codec is not supported.
438 * @exception E_SYSTEM A system error has occurred.
439 * @exception E_OUT_OF_MEMORY The memory is insufficient.
440 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
444 result SetCodec(const Tizen::Base::String& codec);
448 * Gets the codec for the recorder.
450 * @brief <i> [Deprecated] </i>
451 * @deprecated This method is deprecated. @n
452 * Instead of using this method, use the GetFormat(CodecType& audioCodec, CodecType& videoCodec, MediaContainerType& container) const
453 * method that gets the audio/video codec and container together.
456 * @return The current codec
458 * @see GetSupportedCodecListN()
461 Tizen::Base::String GetCodec(void) const;
465 * Gets the list of supported video recorder codecs. @n
466 * Each item in the list is a Tizen::Base::String value.
468 * @brief <i> [Deprecated] </i>
469 * @deprecated This method is deprecated. @n
470 * Instead of using this method, use the GetSupportedAudioCodecListN() and GetSupportedVideoCodecListN() methods.
473 * @return The list of strings that represents the supported video recorder codecs, @n
474 * else @c null if no codec is supported or if an exception occurs
475 * @exception E_SUCCESS The method is successful.
476 * @exception E_SYSTEM A system error has occurred.
477 * @exception E_OUT_OF_MEMORY The memory is insufficient.
478 * @remarks The specific error code can be accessed using the GetLastResult() method. @n
479 * The return value must be released by the caller. @n
480 * All items in the list must be released by the caller.
485 Tizen::Base::Collection::IList* GetSupportedCodecListN(void) const;
488 * Gets the list of supported audio codecs. @n
489 * Each item in the list has a ::CodecType value.
493 * @return A list of supported audio codecs, @n
494 * else @c null if no codec is supported or if an exception occurs
495 * @exception E_SUCCESS The method is successful.
496 * @exception E_SYSTEM A system error has occurred.
497 * @exception E_OUT_OF_MEMORY The memory is insufficient.
498 * @remarks The specific error code can be accessed using the GetLastResult() method. @n
499 * The return value must be released by the caller.
500 * @see SetFormat( CodecType audioCodec, CodecType videoCodec, MediaContainerType container )
501 * @see GetFormat( CodecType& audioCodec, CodecType& videoCodec, MediaContainerType& container ) const
503 Tizen::Base::Collection::IListT <CodecType>* GetSupportedAudioCodecListN(void) const;
506 * Gets the list of supported video codecs. @n
507 * Each item in the list has a ::CodecType value.
511 * @return A list of supported video codecs, @n
512 * else @c null if no codec is supported or if an exception occurs
513 * @exception E_SUCCESS The method is successful.
514 * @exception E_SYSTEM A system error has occurred.
515 * @exception E_OUT_OF_MEMORY The memory is insufficient.
516 * @remarks The specific error code can be accessed using the GetLastResult() method. @n
517 * The return value must be released by the caller.
518 * @see SetFormat( CodecType audioCodec, CodecType videoCodec, MediaContainerType container )
519 * @see GetFormat( CodecType& audioCodec, CodecType& videoCodec, MediaContainerType& container ) const
521 Tizen::Base::Collection::IListT <CodecType>* GetSupportedVideoCodecListN(void) const;
524 * Gets the list of supported containers. @n
525 * Each item in the list has a ::MediaContainerType value.
529 * @return A list of supported containers, @n
530 * else @c null if no container is supported or if an exception occurs
531 * @exception E_SUCCESS The method is successful.
532 * @exception E_SYSTEM A system error has occurred.
533 * @exception E_OUT_OF_MEMORY The memory is insufficient.
534 * @remarks The specific error code can be accessed using the GetLastResult() method. @n
535 * The return value must be released by the caller.
536 * @see SetFormat( CodecType audioCodec, CodecType videoCodec, MediaContainerType container )
537 * @see GetFormat( CodecType& audioCodec, CodecType& videoCodec, MediaContainerType& container ) const
539 Tizen::Base::Collection::IListT <MediaContainerType>* GetSupportedContainerListN(void) const;
543 * Sets the video format of the recorder. @n
544 * Initially, the default format from internal configuration is set.
546 * @brief <i> [Deprecated] </i>
547 * @deprecated This method is deprecated. @n
548 * Instead of using this method, use the SetFormat(CodecType audioCodec, CodecType videoCodec, MediaContainerType container) method that sets
549 * the audio/video codec and container together.
551 * @privilege %http://tizen.org/privilege/videorecorder
553 * @return An error code
554 * @param[in] format The video format @n
555 * ::VIDEORECORDING_FORMAT_DEFAULT sets the system's default recording format.
556 * @exception E_SUCCESS The method is successful.
557 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
558 * @exception E_UNSUPPORTED_FORMAT The specified format is not supported.
559 * @exception E_OUT_OF_MEMORY The memory is insufficient.
560 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
564 result SetFormat(VideoRecordingFormat format);
568 * Gets the current format that has been set for the recorder.
570 * @brief <i> [Deprecated] </i>
571 * @deprecated This method is deprecated. @n
572 * Instead of using this method, use the GetFormat(CodecType& audioCodec, CodecType& videoCodec, MediaContainerType& container) const method
573 * that gets the audio/video codec and container together.
576 * @return The current video format, @n
577 * else the default format if SetFormat() is not called before this method
581 VideoRecordingFormat GetFormat(void) const;
585 * Sets the mode of the recorder.
587 * @brief <i> [Deprecated] </i>
588 * @deprecated This method is deprecated. @n
589 * Instead of using this method, use the SetFormat(CodecType audioCodec, CodecType videoCodec, MediaContainerType container) method that
590 * determines whether the video recorder includes the audio codec.
592 * @privilege %http://tizen.org/privilege/videorecorder
594 * @return An error code
595 * @param[in] mode The mode for the recording @n
596 * The default mode is ::VIDEORECORDER_MODE_VIDEO_WITH_AUDIO.
597 * @exception E_SUCCESS The method is successful.
598 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
599 * @exception E_INVALID_ARG The specified @c mode is not supported.
600 * @exception E_OUT_OF_MEMORY The memory is insufficient.
601 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
605 result SetMode(VideoRecorderMode mode);
609 * Gets the mode of the recorder.
611 * @brief <i> [Deprecated] </i>
612 * @deprecated This method is deprecated. @n
613 * Instead of using this method, use the GetFormat(CodecType& audioCodec, CodecType& videoCodec, MediaContainerType& container) const
614 * method that determines whether the video recorder includes the audio codec.
617 * @return The current mode
621 VideoRecorderMode GetMode(void) const;
624 * Sets the audio and video codecs, and the container of the recorder. @n
625 * Initially, the default codec and container format are set with the internal configuration.
628 * @privilege %http://tizen.org/privilege/videorecorder
630 * @return An error code
631 * @param[in] audioCodec The audio codec to set @n
632 * ::CODEC_NONE makes the audio stream empty.
633 * @param[in] videoCodec The video codec to set @n
634 * ::CODEC_NONE cannot be set.
635 * @param[in] container The media container to set
636 * @exception E_SUCCESS The method is successful.
637 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
638 * @exception E_UNSUPPORTED_CODEC The specified codec is not supported.
639 * @exception E_UNSUPPORTED_FORMAT The specified container format is not supported.
640 * @exception E_SYSTEM A system error has occurred.
641 * @exception E_OUT_OF_MEMORY The memory is insufficient.
642 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
643 * @remarks If the audio codec is ::CODEC_NONE, the audio will be ignored, and only the video stream will be recorded. @n
644 * If the specified container does not support the specified codec, @c E_UNSUPPORTED_FORMAT may be returned.
645 * @see GetFormat( CodecType& audioCodec, CodecType& videoCodec, MediaContainerType& container ) const
647 result SetFormat(CodecType audioCodec, CodecType videoCodec, MediaContainerType container);
650 * Gets the audio and video codecs, and the container of the recorder.
654 * @return An error code
655 * @param[out] audioCodec The retrieved audio codec
656 * @param[out] videoCodec The retrieved video codec
657 * @param[out] container The retrieved container
658 * @exception E_SUCCESS The method is successful.
659 * @remarks The default codecs and container are retrieved, if SetFormat( CodecType audioCodec, CodecType
660 * videoCodec, MediaContainerType container) is not called before calling this method. @n
661 * This method always returns E_SUCCESS.
662 * @see SetFormat( CodecType audioCodec, CodecType videoCodec, MediaContainerType container )
664 result GetFormat(CodecType& audioCodec, CodecType& videoCodec, MediaContainerType& container) const;
667 * Sets the quality of the recorder.
670 * @privilege %http://tizen.org/privilege/videorecorder
672 * @return An error code
673 * @param[in] quality The quality of the recorder @n
674 * The default quality is ::RECORDING_QUALITY_MEDIUM.
675 * @exception E_SUCCESS The method is successful.
676 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
677 * @exception E_INVALID_ARG The specified @c quality is not supported.
678 * @exception E_OUT_OF_MEMORY The memory is insufficient.
679 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
682 result SetQuality(RecordingQuality quality);
685 * Gets the quality of the recorder.
689 * @return The current quality
692 RecordingQuality GetQuality(void) const;
695 * Sets the recording resolution of the recorder. @n
696 * Initially, the default resolution from the internal configuration is set.
699 * @privilege %http://tizen.org/privilege/videorecorder
701 * @return An error code
702 * @param[in] resolution The recording resolution @n
703 * It must be one of the listed strings extracted from
704 * GetSupportedRecordingResolutionListN().
705 * @exception E_SUCCESS The method is successful.
706 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
707 * @exception E_OUT_OF_RANGE The specified resolution is out of range.
708 * @exception E_SYSTEM A system error has occurred.
709 * @exception E_OUT_OF_MEMORY The memory is insufficient.
710 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
711 * @remarks If the input source is Tizen::Media::Camera, its preview resolution value must be same as that
712 * of this recording resolution.
713 * @see GetRecordingResolution()
715 result SetRecordingResolution(const Tizen::Graphics::Dimension& resolution);
718 * Gets the recording resolution.
722 * @return The recording resolution
723 * @see GetSupportedRecordingResolutionListN()
725 Tizen::Graphics::Dimension GetRecordingResolution(void) const;
728 * Gets a list of the supported video recorder resolutions. @n
729 * Each list item is a Tizen::Graphics::Dimension value.
733 * @return A list of strings representing the supported video recorder resolutions, @n
734 * else an empty list if no recording resolution is supported or if an exception occurs
735 * @exception E_SUCCESS The method is successful.
736 * @exception E_SYSTEM A system error has occurred.
737 * @exception E_OUT_OF_MEMORY The memory is insufficient.
738 * @remarks The specific error code can be accessed using the GetLastResult() method. @n
739 * The return value must be released by the calling method. @n
740 * All items in the list must be released by the calling method.
741 * @see SetRecordingResolution()
742 * @see GetRecordingResolution()
744 Tizen::Base::Collection::IList* GetSupportedRecordingResolutionListN(void) const;
747 * Gets the maximum supported frame rate of the input resolution.
751 * @return The maximum frame rate of the input recording resolution
752 * @param[in] dim The preview resolution of the source
753 * @exception E_SUCCESS The method is successful.
754 * @exception E_INVALID_ARG The specified input resolution is invalid.
755 * @exception E_SYSTEM A system error has occurred.
756 * @remarks The specific error code can be accessed using the GetLastResult method.
757 * @see Camera::SetPreviewFrameRate()
759 int GetSupportedMaxFrameRate(const Tizen::Graphics::Dimension& dim) const;
762 * Sets the mute state of a recorder.
765 * @privilege %http://tizen.org/privilege/videorecorder
767 * @return An error code
768 * @param[in] mute Set to @c true to enable the mute state of the recorder, @n
770 * By default, the mute state is disabled.
771 * @exception E_SUCCESS The method is successful.
772 * @exception E_INVALID_STATE This instance is in an invalid state for this method.
773 * @exception E_OUT_OF_MEMORY The memory is insufficient.
774 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
775 * @remarks The recording continues even in the mute state.
778 result SetMute(bool mute);
781 * Checks whether the mute state of the recorder is enabled.
785 * @return The mute state of the recorder
788 bool IsMuted(void) const;
791 * Sets the recording rotation of the recorder.
794 * @privilege %http://tizen.org/privilege/videorecorder
796 * @return An error code
797 * @param[in] rotation The rotation of the recorder
798 * @exception E_SUCCESS The method is successful.
799 * @exception E_INVALID_STATE This method is invalid for the current state of this instance.
800 * @exception E_INVALID_ARG The specified @c rotation is not supported.
801 * @exception E_PRIVILEGE_DENIED The application does not have the privilege to call this method.
802 * @remarks This method add the rotation information to the video file.
803 * A video player can rotate the surface or the stream using this information to display correctly.
804 * @see GetRecordingRotation()
806 result SetRecordingRotation(RecordingRotation rotation);
809 * Gets the rotation of the recorder.
813 * @return The current recording rotation
814 * @see SetRecordingRotation()
816 RecordingRotation GetRecordingRotation(void) const;
820 * This is the copy constructor for this class.
824 * @remarks The implementation of this copy constructor is intentionally blank and declared as private to prohibit copying of objects.
827 VideoRecorder(const VideoRecorder& videoRecorder);
829 * This is the copy assignment operator for this class.
833 * @remarks The implementation of this copy assignment operator is intentionally blank and declared as private to prohibit copying of objects.
836 VideoRecorder& operator =(const VideoRecorder& videoRecorder);
838 friend class _VideoRecorderImpl;
839 _VideoRecorderImpl* __pImpl;