-
-using System;
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
internal static partial class Interop
{
public const string Recorder = "libcapi-media-recorder.so.0";
public const string SoundManager = "libcapi-media-sound-manager.so.0";
public const string AudioIO = "libcapi-media-audio-io.so.0";
+ public const string ScreenMirroring = "libcapi-screen-mirroring-io.so.0";
public const string MetadataExtractor = "libcapi-media-metadata-extractor.so";
public const string MediaController = "libcapi-media-controller.so.0";
public const string MediaTool = "libcapi-media-tool.so.0";
public const string MediaCodec = "libcapi-media-codec.so.0";
+ public const string MediaVision = "libcapi-media-vision.so.0";
public const string Libc = "libc.so.6";
+ public const string Camera = "libcapi-media-camera.so.0";
}
}
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+ internal static partial class ScreenMirroring
+ {
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ internal delegate void StateErrorCallback(IntPtr userData, int state, int error);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_create")]
+ internal static extern int Create(out IntPtr scmirroringSink);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_set_state_changed_cb")]
+ internal static extern int SetStateErrorCb(IntPtr scmirroringSink, StateErrorCallback cb, IntPtr userData);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_set_ip_and_port")]
+ internal static extern int SetIpAndPort(IntPtr scmirroringSink, string ip, string port);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_set_display")]
+ internal static extern int SetDisplay(IntPtr scmirroringSink, int type, IntPtr display);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_set_resolution")]
+ internal static extern int SetResolution(IntPtr scmirroringSink, int resolution);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_prepare")]
+ internal static extern int Prepare(IntPtr scmirroringSink);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_connect")]
+ internal static extern int ConnectAsync(IntPtr scmirroringSink);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_start")]
+ internal static extern int StartAsync(IntPtr scmirroringSink);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_pause")]
+ internal static extern int PauseAsync(IntPtr scmirroringSink);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_resume")]
+ internal static extern int ResumeAsync(IntPtr scmirroringSink);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_disconnect")]
+ internal static extern int Disconnect(IntPtr scmirroringSink);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_unprepare")]
+ internal static extern int Unprepare(IntPtr scmirroringSink);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_unset_state_changed_cb")]
+ internal static extern int UnsetStateErrorCb(IntPtr scmirroringSink);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_destroy")]
+ internal static extern int Destroy(IntPtr scmirroringSink);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_get_negotiated_video_codec")]
+ internal static extern int GetNegotiatedVideoCodec(ref IntPtr scmirroringSink, out int codec);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_get_negotiated_video_resolution")]
+ internal static extern int GetNegotiatedVideoResolution(ref IntPtr scmirroringSink, out int width, out int height);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_get_negotiated_video_frame_rate")]
+ internal static extern int GetNegotiatedVideoFrameRate(ref IntPtr scmirroringSink, out int frameRate);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_get_negotiated_audio_codec")]
+ internal static extern int GetNegotiatedAudioCodec(ref IntPtr scmirroringSink, out int codec);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_get_negotiated_audio_channel")]
+ internal static extern int GetNegotiatedAudioChannel(ref IntPtr scmirroringSink, out int channel);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_get_negotiated_audio_sample_rate")]
+ internal static extern int GetNegotiatedAudioSampleRate(ref IntPtr scmirroringSink, out int sampleRate);
+
+ [DllImport(Libraries.ScreenMirroring, EntryPoint = "scmirroring_sink_get_negotiated_audio_bitwidth")]
+ internal static extern int GetNegotiatedAudioBitwidth(ref IntPtr scmirroringSink, out int bitwidth);
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace Tizen.Multimedia
+{
+ /// <summary>
+ /// Audio Information
+ /// </summary>
+ /// <remarks>
+ /// This class provides properties and API that are required for setting
+ /// audio information of a player.
+ /// </remarks>
+ public class AudioInformation
+ {
+ internal IntPtr _handle;
+ private int _codec;
+ private int _channel;
+ private int _sampleRate;
+ private int _bitWidth;
+
+ internal AudioInformation()
+ {
+ }
+
+ /// <summary>
+ /// Get Audio Codec.
+ /// </summary>
+ /// <value> Audio Codec </value>
+ public AudioCodec Codec
+ {
+ get
+ {
+ int ret;
+ ret = Interop.ScreenMirroring.GetNegotiatedAudioCodec(ref _handle, out _codec);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Failed to get audio codec" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "failed to get audio codec");
+ }
+
+ return (AudioCodec)_codec;
+ }
+ }
+
+ /// <summary>
+ /// Get audio channel.
+ /// </summary>
+ /// <value> AudioChannel </value>
+ public int Channel
+ {
+ get
+ {
+ int ret;
+ ret = Interop.ScreenMirroring.GetNegotiatedAudioChannel(ref _handle, out _channel);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Failed to get audio channel" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "failed to get audio channel");
+ }
+
+ return _channel;
+ }
+ }
+
+ /// <summary>
+ /// Get audio sample rate.
+ /// </summary>
+ /// <value> AudioSampleRate </value>
+ public int SampleRate
+ {
+ get
+ {
+ int ret;
+ ret = Interop.ScreenMirroring.GetNegotiatedAudioSampleRate(ref _handle, out _sampleRate);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Failed to get audio sample rate" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "failed to get audio sample rate");
+ }
+
+ return _sampleRate;
+ }
+ }
+
+ /// <summary>
+ /// Get audio bitwidth.
+ /// </summary>
+ /// <value> AudioBitwidth </value>
+ public int BitWidth
+ {
+ get
+ {
+ int ret;
+ ret = Interop.ScreenMirroring.GetNegotiatedAudioBitwidth(ref _handle, out _bitWidth);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Failed to get audio bitwidth" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "failed to get audio bitwidth");
+ }
+
+ return _bitWidth;
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Multimedia
+{
+ /// <summary>
+ /// ErrorOccurred event arguments
+ /// </summary>
+ /// <remarks>
+ /// ErrorOccurred event arguments
+ /// </remarks>
+ public class ErrorOccurredEventArgs : EventArgs
+ {
+ internal int _error;
+
+ /// <summary>
+ /// Constructor.
+ /// </summary>
+ /// <param name="error"> Error Occurred </param>
+ internal ErrorOccurredEventArgs(int error)
+ {
+ _error = error;
+ }
+
+ /// <summary>
+ /// Get the error code.
+ /// </summary>
+ /// <value> error code </value>
+ public SCMirroringError Error
+ {
+ get
+ {
+ return (SCMirroringError)_error;
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Threading.Tasks;
+using System.Runtime.InteropServices;
+
+namespace Tizen.Multimedia
+{
+ static internal class ScreenMirroringLog
+ {
+ internal const string LogTag = "Tizen.Multimedia.ScreenMirroring";
+ }
+
+ /// <summary>
+ /// Screen mirroring.
+ /// </summary>
+ public class ScreenMirroring : IDisposable
+ {
+ internal VideoInformation _videoInfo;
+ internal AudioInformation _audioInfo;
+ internal IntPtr _handle;
+ internal string _ip;
+ internal string _port;
+ internal SurfaceType _type;
+ internal MediaView _display;
+
+ private bool _disposed = false;
+ private EventHandler<StateChangedEventArgs> _stateChanged;
+ private Interop.ScreenMirroring.StateErrorCallback _stateErrorCallback;
+ private EventHandler<ErrorOccurredEventArgs> _errorOccurred;
+
+ /// <summary>
+ /// Initializes a new instance of the ScreenMirroring class with parameters Ip, Port, Surface type and Display handle.
+ /// Object should be created only when Ip and Port are available.
+ /// Create api will create a new handle with the given parameters.
+ /// </summary>
+ /// <param name="type">Type.</param>
+ /// <param name="display">Display.</param>
+ /// <param name="ip">Ip.</param>
+ /// <param name="port">Port.</param>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ public ScreenMirroring(SurfaceType type, MediaView display, string ip, string port)
+ {
+ int ret = Interop.ScreenMirroring.Create(out _handle);
+ if (ret != (int)SCMirroringError.None)
+ {
+ ScreenMirroringErrorFactory.ThrowException(ret, "Failed to create Screen Mirroring Sink");
+ }
+
+ // initiate values
+ _ip = ip;
+ _port = port;
+ _type = type;
+ _display = display;
+
+ // Set ip and port
+ int ret1 = Interop.ScreenMirroring.SetIpAndPort(_handle, _ip, _port);
+ if (ret1 != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Set ip and port failed" + (SCMirroringError)ret1);
+ ScreenMirroringErrorFactory.ThrowException(ret, "set ip and port failed");
+ }
+
+ // Set display
+ int ret2 = Interop.ScreenMirroring.SetDisplay(_handle, (int)_type, _display);
+ if (ret2 != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Set display failed" + (SCMirroringError)ret2);
+ ScreenMirroringErrorFactory.ThrowException(ret, "set display failed");
+ }
+
+ // AudioInfo
+ _audioInfo = new AudioInformation();
+ _audioInfo._handle = _handle;
+ // VideoInfo
+ _videoInfo = new VideoInformation();
+ _videoInfo._handle = _handle;
+
+ Log.Debug(ScreenMirroringLog.LogTag, "screen mirroring sink created : " + _handle);
+ }
+
+ /// <summary>
+ /// Screen Mirroring destructor.
+ /// </summary>
+ ~ScreenMirroring()
+ {
+ Dispose(false);
+ }
+
+ /// <summary>
+ /// StateChanged event is raised when state change happens.
+ /// Must be called after Create() API.
+ /// </summary>
+ public event EventHandler<StateChangedEventArgs> StateChanged
+ {
+ add
+ {
+ if (_stateChanged == null)
+ {
+ RegisterStateChangedEvent();
+ }
+
+ _stateChanged += value;
+ }
+
+ remove
+ {
+ _stateChanged -= value;
+ if (_stateChanged == null)
+ {
+ UnregisterStateChangedEvent();
+ }
+ }
+ }
+
+ /// <summary>
+ /// ErrorOccurred event is raised when error is occured in screen mirroring sink.
+ /// Must be called after Create() API.
+ /// </summary>
+ public event EventHandler<ErrorOccurredEventArgs> ErrorOccurred
+ {
+ add
+ {
+ if (_errorOccurred == null)
+ {
+ RegisterErrorOccurredEvent();
+ }
+
+ _errorOccurred += value;
+ }
+
+ remove
+ {
+ _errorOccurred -= value;
+ if (_errorOccurred == null)
+ {
+ UnregisterErrorOccurredEvent();
+ }
+ }
+ }
+
+ /// <summary>
+ /// Sets the server ip and port.
+ /// This must be called before connect() and after create().
+ /// </summary>
+ /// <example> If only one handle is used for toggling between more than two source devices,
+ /// then this API ahould be used to assign the parameters to the handle.
+ /// </example>
+ /// <param name="ip">Ip.</param>
+ /// <param name="port">Port.</param>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ public void SetIpAndPort(string ip, string port)
+ {
+ int ret = Interop.ScreenMirroring.SetIpAndPort(_handle, ip, port);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Set ip and port failed" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "set ip and port failed");
+ }
+ }
+
+ /// <summary>
+ /// Set Resolution.
+ /// valid state: NULL..
+ /// </summary>
+ /// <param name="resolution"> example: (R1920x1080P30 | R1280x720P30) </param>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ public void SetResolution(int resolution)
+ {
+ int ret = Interop.ScreenMirroring.SetResolution(_handle, resolution);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Set resolution failed" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "set resolution failed");
+ }
+ }
+
+ /// <summary>
+ /// Sets the display.
+ /// This must be called before prepare() and after create().
+ /// </summary>
+ /// <example> If only one handle is used for toggling between more than two source devices,
+ /// then this API ahould be used to assign the parameters to the handle.
+ /// </example>
+ /// <param name="type">Type.</param>
+ /// <param name="display">Display.</param>
+ /// <remarks> Display Handle not clear </remarks>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ public void SetDisplay(SurfaceType type, MediaView display)
+ {
+ int ret = Interop.ScreenMirroring.SetDisplay(_handle, (int)type, display);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Set display failed" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "set display failed");
+ }
+ }
+
+ /// <summary>
+ /// Prepare this instance.
+ /// This must be called after Create().
+ /// </summary>
+ public void Prepare()
+ {
+ int ret = Interop.ScreenMirroring.Prepare(_handle);
+ if (ret != (int)SCMirroringError.None)
+ {
+ ScreenMirroringErrorFactory.ThrowException(ret, "Failed to prepare sink for screen mirroring");
+ }
+ }
+
+ /// <summary>
+ /// Creates connection and prepare for receiving data from SCMIRRORING source.
+ /// This must be called after prepare().
+ /// </summary>
+ /// <remarks> It will not give the current state. Need to subscribe for event to get the current state </remarks>
+ /// <returns>bool value</returns>
+ /// <privilege>http://tizen.org/privilege/internet</privilege>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ public Task<bool> ConnectAsync()
+ {
+ int ret = Interop.ScreenMirroring.ConnectAsync(_handle);
+ var task = new TaskCompletionSource<bool>();
+
+ Task.Factory.StartNew(() =>
+ {
+ if (ret == (int)SCMirroringError.None)
+ {
+ task.SetResult(true);
+ }
+
+ else if (ret != (int)SCMirroringError.None)
+ {
+ task.SetResult(false);
+ ScreenMirroringErrorFactory.ThrowException(ret, "Failed to connect the screen mirroring source");
+ }
+ });
+
+ return task.Task;
+ }
+
+ /// <summary>
+ /// Get AudioInfo.
+ /// This must be called after connectasync().
+ /// valid states: connected/playback/paused.
+ /// If audio file changes during playback again
+ /// then the current info should be retrieved from the audio information class.
+ /// </summary>
+ /// <value> AudioInfo object </value>
+ public AudioInformation AudioInfo
+ {
+ get
+ {
+ return _audioInfo;
+ }
+ }
+
+ /// <summary>
+ /// Get VideoInfo.
+ /// This must be called after connectasync().
+ /// valid states: connected/playback/paused.
+ /// If video file changes during playback again
+ /// then the current info should be retrieved from the video information class.
+ /// </summary>
+ /// <value> VideoInfo object </value>
+ public VideoInformation VideoInfo
+ {
+ get
+ {
+ return _videoInfo;
+ }
+ }
+
+ /// <summary>
+ /// Start receiving data from the SCMIRRORING source and display it(Mirror).
+ /// This must be called after connectasync().
+ /// </summary>
+ /// <remarks> It will not give the current state. Need to subscribe for event to get the current state </remarks>
+ /// <returns>bool value<returns>
+ /// <privilege>http://tizen.org/privilege/internet</privilege>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ public Task<bool> StartAsync()
+ {
+ int ret = Interop.ScreenMirroring.StartAsync(_handle);
+ var task = new TaskCompletionSource<bool>();
+
+ Task.Factory.StartNew(() =>
+ {
+ if (ret == (int)SCMirroringError.None)
+ {
+ task.SetResult(true);
+ }
+
+ else if (ret != (int)SCMirroringError.None)
+ {
+ task.SetResult(false);
+ ScreenMirroringErrorFactory.ThrowException(ret, "Failed to start the screen mirroring");
+ }
+ });
+
+ return task.Task;
+ }
+
+ /// <summary>
+ /// Pauses receiving data from the SCMIRRORING source.
+ /// This must be called after startasync().
+ /// </summary>
+ /// <remarks> It will not give the current state. Need to subscribe for event to get the current state </remarks>
+ /// <returns>bool value</returns>
+ /// <privilege>http://tizen.org/privilege/internet</privilege>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ public Task<bool> PauseAsync()
+ {
+ int ret = Interop.ScreenMirroring.PauseAsync(_handle);
+ var task = new TaskCompletionSource<bool>();
+
+ Task.Factory.StartNew(() =>
+ {
+ if (ret == (int)SCMirroringError.None)
+ {
+ task.SetResult(true);
+ }
+
+ else if (ret != (int)SCMirroringError.None)
+ {
+ task.SetResult(false);
+ ScreenMirroringErrorFactory.ThrowException(ret, "Failed to pause the receiving data from screen mirroring source");
+ }
+ });
+
+ return task.Task;
+ }
+
+ /// <summary>
+ /// Resumes receiving data from the SCMIRRORING source.
+ /// This must be called after pauseasync().
+ /// </summary>
+ /// <remarks> It will not give the current state. Need to subscribe for event to get the current state </remarks>
+ /// <returns>bool value</returns>
+ /// <privilege>http://tizen.org/privilege/internet</privilege>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ public Task<bool> ResumeAsync()
+ {
+ int ret = Interop.ScreenMirroring.ResumeAsync(_handle);
+ var task = new TaskCompletionSource<bool>();
+
+ Task.Factory.StartNew(() =>
+ {
+ if (ret == (int)SCMirroringError.None)
+ {
+ task.SetResult(true);
+ }
+
+ else if (ret != (int)SCMirroringError.None)
+ {
+ task.SetResult(false);
+ ScreenMirroringErrorFactory.ThrowException(ret, "Failed to resume the receiving data from screen mirroring source");
+ }
+ });
+
+ return task.Task;
+ }
+
+ /// <summary>
+ /// Disconnect this instance.
+ /// valid states: connected/playing/paused
+ /// </summary>
+ /// <privilege>http://tizen.org/privilege/internet</privilege>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ public void Disconnect()
+ {
+ int ret = Interop.ScreenMirroring.Disconnect(_handle);
+ if (ret != (int)SCMirroringError.None)
+ {
+ ScreenMirroringErrorFactory.ThrowException(ret, "Failed to disconnect sink for screen mirroring");
+ }
+ }
+
+ /// <summary>
+ /// Unprepare this instance.
+ /// valid states: prepared/disconnected.
+ /// </summary>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ public void Unprepare()
+ {
+ int ret = Interop.ScreenMirroring.Unprepare(_handle);
+ if (ret != (int)SCMirroringError.None)
+ {
+ ScreenMirroringErrorFactory.ThrowException(ret, "Failed to reset the screen mirroring sink");
+ }
+ }
+
+ /// <summary>
+ /// Releases all resource used by the <see cref="Tizen.Multimedia.ScreenMirroring"/> object.
+ /// </summary>
+ /// <remarks>Call <see cref="Dispose"/> when you are finished using the <see cref="Tizen.Multimedia.ScreenMirroring"/>.
+ /// The <see cref="Dispose"/> method leaves the <see cref="Tizen.Multimedia.ScreenMirroring"/> in an unusable
+ /// state. After calling <see cref="Dispose"/>, you must release all references to the
+ /// <see cref="Tizen.Multimedia.ScreenMirroring"/> so the garbage collector can reclaim the memory that the
+ /// <see cref="Tizen.Multimedia.ScreenMirroring"/> was occupying.</remarks>
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+
+ /// <summary>
+ /// Dispose the specified handle.
+ /// </summary>
+ /// <param name="disposing">If set to <c>true</c> disposing.</param>
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!_disposed)
+ {
+ if (disposing)
+ {
+ // To be used if there are any other disposable objects
+ }
+
+ if (_handle != IntPtr.Zero)
+ {
+ Interop.ScreenMirroring.Destroy(_handle);
+ _handle = IntPtr.Zero;
+ }
+
+ _disposed = true;
+ }
+ }
+
+ /// <summary>
+ /// Invoke the event for state or error.
+ /// </summary>
+ /// <param name="state"> state </param>
+ /// <param name="error"> error </param>
+ private void StateError(int state, int error)
+ {
+ ///if _stateChanged is subscribe, this will be invoke.
+ StateChangedEventArgs eventArgsState = new StateChangedEventArgs(state);
+ _stateChanged?.Invoke(this, eventArgsState);
+
+ ///if _errorOccurred is subscribe, this will be invoke.
+ ErrorOccurredEventArgs eventArgsError = new ErrorOccurredEventArgs(error);
+ _errorOccurred?.Invoke(this, eventArgsError);
+ }
+
+ /// <summary>
+ /// Registers the state changed event.
+ /// </summary>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ private void RegisterStateChangedEvent()
+ {
+ _stateErrorCallback = (IntPtr userData, int state, int error) =>
+ {
+ StateError(state, error);
+ };
+
+ int ret = Interop.ScreenMirroring.SetStateErrorCb(_handle, _stateErrorCallback, IntPtr.Zero);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Setting StateChanged callback failed" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "Setting StateChanged callback failed");
+ }
+ }
+
+ /// <summary>
+ /// Unregisters the state changed event.
+ /// </summary>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ private void UnregisterStateChangedEvent()
+ {
+ int ret = Interop.ScreenMirroring.UnsetStateErrorCb(_handle);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Unsetting StateChnaged callback failed" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "Unsetting StateChanged callback failed");
+ }
+ }
+
+ /// <summary>
+ /// Registers the error occurred event.
+ /// </summary>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ private void RegisterErrorOccurredEvent()
+ {
+ _stateErrorCallback = (IntPtr userData, int state, int error) =>
+ {
+ StateError(state, error);
+ };
+
+ int ret = Interop.ScreenMirroring.SetStateErrorCb(_handle, _stateErrorCallback, IntPtr.Zero);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Setting ErrorOccurred callback failed" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "Setting ErrorOccurred callback failed");
+ }
+ }
+
+ /// <summary>
+ /// Unregisters the error occurred event.
+ /// </summary>
+ /// <exception cref="ArgumentException">Thrown when method fail due to an invalid parameter</exception>
+ /// <exception cref="InvalidOperationException">Thrown when method fail due to an internal error</exception>
+ private void UnregisterErrorOccurredEvent()
+ {
+ int ret = Interop.ScreenMirroring.UnsetStateErrorCb(_handle);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Unsetting ErrorOccurred callback failed" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "Unsetting ErrorOccurred callback failed");
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+namespace Tizen.Multimedia
+{
+ /// <summary>
+ /// Enumeration for audio codec.
+ /// </summary>
+ public enum AudioCodec
+ {
+ /// <summary>
+ /// Screen mirroring is not negotiated yet
+ /// </summary>
+ None,
+ /// <summary>
+ /// AAC codec for audio
+ /// </summary>
+ Aac,
+ /// <summary>
+ /// AC3 codec for audio
+ /// </summary>
+ Ac3,
+ /// <summary>
+ /// LPCM codec for audio
+ /// </summary>
+ Lpcm
+ }
+ /// <summary>
+ /// Enumeration for video codec.
+ /// </summary>
+ public enum VideoCodec
+ {
+ /// <summary>
+ /// Screen mirroring is not negotiated yet
+ /// </summary>
+ None,
+ /// <summary>
+ /// H.264 codec for video
+ /// </summary>
+ H264
+ }
+ /// <summary>
+ /// Enumeration for display surface type.
+ /// </summary>
+ public enum SurfaceType
+ {
+ /// <summary>
+ /// Use overlay surface to display streaming multimedia data
+ /// </summary>
+ Overlay,
+ /// <summary>
+ /// Use Evas pixmap surface to display streaming multimedia data
+ /// </summary>
+ Evas
+ }
+
+ /// <summary>
+ /// Enumeration for screen mirroring resolution.
+ /// </summary>
+ public enum ResolutionType
+ {
+ /// <summary>
+ /// W-1920, H-1080, 30 fps
+ /// </summary>
+ R1920x1080P30 = (1 << 0),
+ /// <summary>
+ /// W-1280, H-720, 30 fps
+ /// </summary>
+ R1280x720P30 = (1 << 1),
+ /// <summary>
+ /// W-960, H-540, 30 fps
+ /// </summary>
+ R960x540P30 = (1 << 2),
+ /// <summary>
+ /// W-864, H-480, 30 fps
+ /// </summary>
+ R864x480P30 = (1 << 3),
+ /// <summary>
+ /// W-720, H-480, 60 fps
+ /// </summary>
+ R720x480P60 = (1 << 4),
+ /// <summary>
+ /// W-640, H-480, 60 fps
+ /// </summary>
+ R640x480P60 = (1 << 5),
+ /// <summary>
+ /// W-640, H-360, 30 fps
+ /// </summary>
+ R640x360P30 = (1 << 6)
+ }
+
+ /// <summary>
+ /// Enumeration for screen mirroring sink state
+ /// </summary>
+ public enum SCMirroringSinkState
+ {
+ /// <summary>
+ /// Screen mirroring is not created yet
+ /// </summary>
+ None,
+ /// <summary>
+ /// Screen mirroring is created, but not prepared yet
+ /// </summary>
+ Null,
+ /// <summary>
+ /// Screen mirroring is prepared to play media
+ /// </summary>
+ Prepared,
+ /// <summary>
+ /// Screen mirroring is connected
+ /// </summary>
+ Connected,
+ /// <summary>
+ /// Screen mirroring is now playing media
+ /// </summary>
+ Playing,
+ /// <summary>
+ /// Screen mirroring is paused while playing media
+ /// </summary>
+ Paused,
+ /// <summary>
+ /// Screen mirroring is disconnected
+ /// </summary>
+ Disconnected
+ }
+
+ /// <summary>
+ /// Enumeration for screen mirroring error.
+ /// </summary>
+ public enum SCMirroringError
+ {
+ /// <summary>
+ /// Successful
+ /// </summary>
+ None,
+ /// <summary>
+ /// Invalid parameter
+ /// </summary>
+ InvalidParameter,
+ /// <summary>
+ /// Out of memory
+ /// </summary>
+ OutOfMemory,
+ /// <summary>
+ /// Invalid operation
+ /// </summary>
+ InvalidOperation,
+ /// <summary>
+ /// Connection timeout
+ /// </summary>
+ ConnectionTimeOut,
+ /// <summary>
+ /// Permission denied
+ /// </summary>
+ PermissionDenied,
+ /// <summary>
+ /// Not supported
+ /// </summary>
+ NotSupported,
+ /// <summary>
+ /// Unknown error
+ /// </summary>
+ Unknown
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Multimedia
+{
+ public class ScreenMirroringErrorFactory
+ {
+ internal static void ThrowException(int errorCode, string errorMessage = null, string paramName = null)
+ {
+ SCMirroringError err = (SCMirroringError)errorCode;
+ if (string.IsNullOrEmpty(errorMessage))
+ {
+ errorMessage = err.ToString();
+ }
+
+ switch ((SCMirroringError)errorCode)
+ {
+ case SCMirroringError.InvalidParameter:
+ throw new ArgumentException(errorMessage, paramName);
+
+ case SCMirroringError.OutOfMemory:
+ case SCMirroringError.InvalidOperation:
+ case SCMirroringError.ConnectionTimeOut:
+ case SCMirroringError.PermissionDenied:
+ case SCMirroringError.NotSupported:
+ case SCMirroringError.Unknown:
+ throw new InvalidOperationException(errorMessage);
+ }
+ }
+ }
+}
+
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+
+namespace Tizen.Multimedia
+{
+ /// <summary>
+ /// StateChanged event arguments
+ /// </summary>
+ /// <remarks>
+ /// StateChanged event arguments
+ /// </remarks>
+ public class StateChangedEventArgs : EventArgs
+ {
+ internal int _state;
+
+ /// <summary>
+ /// Constructor.
+ /// </summary>
+ /// <param name="state"> State Changed </param>
+ internal StateChangedEventArgs(int state)
+ {
+ _state = state;
+ }
+
+ /// <summary>
+ /// Get the current state.
+ /// </summary>
+ /// <value> current state </value>
+ public SCMirroringSinkState State
+ {
+ get
+ {
+ return (SCMirroringSinkState)_state;
+ }
+ }
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace Tizen.Multimedia
+{
+ /// <summary>
+ /// Video Information
+ /// </summary>
+ /// <remarks>
+ /// This class provides properties and API that are required for setting
+ /// video information of a player.
+ /// </remarks>
+ public class VideoInformation
+ {
+ internal IntPtr _handle;
+ private int _codec;
+ private int _height;
+ private int _width;
+ private int _frameRate;
+
+ internal VideoInformation()
+ {
+ }
+
+ /// <summary>
+ /// Get video Codec.
+ /// </summary>
+ /// <value> Video Codec </value>
+ public VideoCodec Codec
+ {
+ get
+ {
+ int ret;
+ ret = Interop.ScreenMirroring.GetNegotiatedVideoCodec(ref _handle, out _codec);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Failed to get video codec" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "failed to get video codec");
+ }
+
+ return (VideoCodec)_codec;
+ }
+ }
+
+ /// <summary>
+ /// Get height of video resolution.
+ /// </summary>
+ /// <value> Video Resolution Height </value>
+ public int Height
+ {
+ get
+ {
+ int ret;
+ ret = Interop.ScreenMirroring.GetNegotiatedVideoResolution(ref _handle, out _width, out _height);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Failed to get height" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "failed to get video height");
+ }
+
+ return _height;
+ }
+ }
+
+ /// <summary>
+ /// Get width of video resolution.
+ /// </summary>
+ /// <value> Video Resolution Width </value>
+ public int Width
+ {
+ get
+ {
+ int ret;
+ ret = Interop.ScreenMirroring.GetNegotiatedVideoResolution(ref _handle, out _width, out _height);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Failed to get width" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "failed to get video width");
+ }
+
+ return _width;
+ }
+ }
+
+ /// <summary>
+ /// Get width of video frame rate.
+ /// </summary>
+ /// <value> Video FrameRate </value>
+ public int FrameRate
+ {
+ get
+ {
+ int ret;
+ ret = Interop.ScreenMirroring.GetNegotiatedVideoFrameRate(ref _handle, out _frameRate);
+ if (ret != (int)SCMirroringError.None)
+ {
+ Log.Error(ScreenMirroringLog.LogTag, "Failed to get frame rate" + (SCMirroringError)ret);
+ ScreenMirroringErrorFactory.ThrowException(ret, "failed to get video frame rate");
+ }
+
+ return _frameRate;
+ }
+ }
+ }
+}
\ No newline at end of file
<Compile Include="AudioIO\AudioStateChangedEventArgs.cs" />
<Compile Include="AudioIO\AudioStreamLengthChangedEventArgs.cs" />
<Compile Include="AudioIO\BaseAudio.cs" />
+ <Compile Include="Camera\Area.cs" />
+ <Compile Include="Camera\Camera.cs" />
+ <Compile Include="Camera\CameraDisplay.cs" />
+ <Compile Include="Camera\CameraEnums.cs" />
+ <Compile Include="Camera\CameraErrorFactory.cs" />
+ <Compile Include="Camera\CameraErrorOccurredEventArgs.cs" />
+ <Compile Include="Camera\CameraFeature.cs" />
+ <Compile Include="Camera\CameraFocusChangedEventArgs.cs" />
+ <Compile Include="Camera\CameraInterruptedEventArgs.cs" />
+ <Compile Include="Camera\CameraResolution.cs" />
+ <Compile Include="Camera\CameraSetting.cs" />
+ <Compile Include="Camera\CameraStateChangedEventArgs.cs" />
+ <Compile Include="Camera\CapturingEventArgs.cs" />
+ <Compile Include="Camera\DoublePlaneData.cs" />
+ <Compile Include="Camera\EncodedPlaneData.cs" />
+ <Compile Include="Camera\FaceDetectedData.cs" />
+ <Compile Include="Camera\FaceDetectedEventArgs.cs" />
+ <Compile Include="Camera\HdrCaptureProgressEventArgs.cs" />
+ <Compile Include="Camera\ImageData.cs" />
+ <Compile Include="Camera\Location.cs" />
+ <Compile Include="Camera\MediaPacketPreviewEventArgs.cs" />
+ <Compile Include="Camera\PreviewData.cs" />
+ <Compile Include="Camera\PreviewEventArgs.cs" />
+ <Compile Include="Camera\Range.cs" />
+ <Compile Include="Camera\SinglePlaneData.cs" />
+ <Compile Include="Camera\TriplePlaneData.cs" />
<Compile Include="Interop\Interop.AudioIO.cs" />
+ <Compile Include="Interop\Interop.Camera.cs" />
+ <Compile Include="Interop\Interop.CameraDisplay.cs" />
+ <Compile Include="Interop\Interop.CameraFeature.cs" />
+ <Compile Include="Interop\Interop.CameraSetting.cs" />
<Compile Include="Interop\Interop.MediaCodec.cs" />
<Compile Include="Interop\Interop.MediaTool.cs" />
<Compile Include="Interop\Interop.EvasObject.cs" />
+ <Compile Include="Interop\Interop.MediaVision.BarCode.cs" />
+ <Compile Include="Interop\Interop.MediaVision.Common.cs" />
+ <Compile Include="Interop\Interop.MediaVision.Face.cs" />
+ <Compile Include="Interop\Interop.MediaVision.Image.cs" />
+ <Compile Include="Interop\Interop.MediaVision.Surveillance.cs" />
<Compile Include="Interop\Interop.Player.cs" />
+ <Compile Include="MediaCodec\BufferStatusChangedEventArgs.cs" />
+ <Compile Include="MediaCodec\EosReachedEventArgs.cs" />
+ <Compile Include="MediaCodec\ErrorOccurredEventArgs.cs" />
+ <Compile Include="MediaCodec\InputProcessedEventArgs.cs" />
+ <Compile Include="MediaCodec\MediaCodec.cs" />
+ <Compile Include="MediaCodec\MediaCodecDebug.cs" />
+ <Compile Include="MediaCodec\MediaCodecError.cs" />
+ <Compile Include="MediaCodec\MediaCodecStatus.cs" />
+ <Compile Include="MediaCodec\MediaCodecType.cs" />
+ <Compile Include="MediaCodec\OutputAvailableEventArgs.cs" />
+ <Compile Include="MediaCodec\SupportedCodecType.cs" />
<Compile Include="MediaTool\MediaFormat.cs" />
<Compile Include="MediaTool\MediaFormatAacType.cs" />
<Compile Include="MediaTool\MediaFormatMimeType.cs" />
<Compile Include="MediaTool\MediaToolDebug.cs" />
<Compile Include="MediaTool\NotEnoughMemoryException.cs" />
<Compile Include="MediaView\MediaView.cs" />
+ <Compile Include="MediaVision\Barcode.cs" />
+ <Compile Include="MediaVision\BarcodeDetector.cs" />
+ <Compile Include="MediaVision\BarcodeDetectorEngineConfiguration.cs" />
+ <Compile Include="MediaVision\BarcodeGenerator.cs" />
+ <Compile Include="MediaVision\BarcodeGeneratorEngineConfiguration.cs" />
+ <Compile Include="MediaVision\BarcodeImageConfiguration.cs" />
+ <Compile Include="MediaVision\BarcodeImageFormat.cs" />
+ <Compile Include="MediaVision\BarcodeType.cs" />
+ <Compile Include="MediaVision\Colorspace.cs" />
+ <Compile Include="MediaVision\EngineConfiguration.cs" />
+ <Compile Include="MediaVision\ErrorCorrectionLevel.cs" />
+ <Compile Include="MediaVision\EyeCondition.cs" />
+ <Compile Include="MediaVision\FaceDetectionResult.cs" />
+ <Compile Include="MediaVision\FaceDetector.cs" />
+ <Compile Include="MediaVision\FaceEngineConfiguration.cs" />
+ <Compile Include="MediaVision\FaceRecognitionModel.cs" />
+ <Compile Include="MediaVision\FaceRecognitionModelType.cs" />
+ <Compile Include="MediaVision\FaceRecognitionResult.cs" />
+ <Compile Include="MediaVision\FaceRecognizer.cs" />
+ <Compile Include="MediaVision\FaceTracker.cs" />
+ <Compile Include="MediaVision\FaceTrackingModel.cs" />
+ <Compile Include="MediaVision\FaceTrackingResult.cs" />
+ <Compile Include="MediaVision\FacialExpression.cs" />
+ <Compile Include="MediaVision\Image.cs" />
+ <Compile Include="MediaVision\ImageEngineConfiguration.cs" />
+ <Compile Include="MediaVision\ImageRecognitionResult.cs" />
+ <Compile Include="MediaVision\ImageRecognizer.cs" />
+ <Compile Include="MediaVision\ImageTracker.cs" />
+ <Compile Include="MediaVision\ImageTrackingModel.cs" />
+ <Compile Include="MediaVision\MediaVisionErrorFactory.cs" />
+ <Compile Include="MediaVision\MediaVisionSource.cs" />
+ <Compile Include="MediaVision\MovementDetectedEventArgs.cs" />
+ <Compile Include="MediaVision\MovementDetectionEventTrigger.cs" />
+ <Compile Include="MediaVision\PersonAppearanceChangedEventArgs.cs" />
+ <Compile Include="MediaVision\PersonAppearanceEventTrigger.cs" />
+ <Compile Include="MediaVision\PersonRecognitionEventTrigger.cs" />
+ <Compile Include="MediaVision\PersonRecognitionResult.cs" />
+ <Compile Include="MediaVision\PersonRecognizedEventArgs.cs" />
+ <Compile Include="MediaVision\Point.cs" />
+ <Compile Include="MediaVision\QrConfiguration.cs" />
+ <Compile Include="MediaVision\QrMode.cs" />
+ <Compile Include="MediaVision\Quadrangle.cs" />
+ <Compile Include="MediaVision\Rectangle.cs" />
+ <Compile Include="MediaVision\SurveillanceEngineConfiguration.cs" />
+ <Compile Include="MediaVision\SurveillanceEventTrigger.cs" />
+ <Compile Include="MediaVision\TargetAttribute.cs" />
+ <Compile Include="MediaVision\TextAttribute.cs" />
<Compile Include="Player\PlayerEnums.cs" />
<Compile Include="Player\MediaStreamConfiguration.cs" />
<Compile Include="Player\SubtitleTrack.cs" />
<Compile Include="Interop\Interop.Libraries.cs" />
<Compile Include="Player\PlayerErrorFactory.cs" />
<Compile Include="Recorder\AudioStreamDeliveredEventArgs.cs" />
- <Compile Include="Recorder\Camera.cs" />
<Compile Include="Recorder\Recorder.cs" />
<Compile Include="Recorder\RecorderEnums.cs" />
<Compile Include="Recorder\RecorderErrorFactory.cs" />
<Compile Include="Interop\Interop.Device.cs" />
<Compile Include="Interop\Interop.StreamPolicy.cs" />
<Compile Include="Interop\Interop.Volume.cs" />
+ <Compile Include="ScreenMirroring\AudioInformation.cs" />
+ <Compile Include="ScreenMirroring\ErrorOccurredEventArgs.cs" />
+ <Compile Include="ScreenMirroring\ScreenMirroring.cs" />
+ <Compile Include="ScreenMirroring\ScreenMirroringEnumerations.cs" />
+ <Compile Include="ScreenMirroring\StateChangedEventArgs.cs" />
+ <Compile Include="Interop\Interop.ScreenMirroring.cs" />
+ <Compile Include="ScreenMirroring\ScreenMirroringErrorFactory.cs" />
+ <Compile Include="ScreenMirroring\VideoInformation.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Tizen.Multimedia.nuspec" />
<Compile Include="AudioIO\AudioStateChangedEventArgs.cs" />
<Compile Include="AudioIO\AudioStreamLengthChangedEventArgs.cs" />
<Compile Include="AudioIO\BaseAudio.cs" />
+ <Compile Include="Camera\Area.cs" />
+ <Compile Include="Camera\Camera.cs" />
+ <Compile Include="Camera\CameraDisplay.cs" />
+ <Compile Include="Camera\CameraEnums.cs" />
+ <Compile Include="Camera\CameraErrorFactory.cs" />
+ <Compile Include="Camera\CameraErrorOccurredEventArgs.cs" />
+ <Compile Include="Camera\CameraFeature.cs" />
+ <Compile Include="Camera\CameraFocusChangedEventArgs.cs" />
+ <Compile Include="Camera\CameraInterruptedEventArgs.cs" />
+ <Compile Include="Camera\CameraResolution.cs" />
+ <Compile Include="Camera\CameraSetting.cs" />
+ <Compile Include="Camera\CameraStateChangedEventArgs.cs" />
+ <Compile Include="Camera\CapturingEventArgs.cs" />
+ <Compile Include="Camera\DoublePlaneData.cs" />
+ <Compile Include="Camera\EncodedPlaneData.cs" />
+ <Compile Include="Camera\FaceDetectedData.cs" />
+ <Compile Include="Camera\FaceDetectedEventArgs.cs" />
+ <Compile Include="Camera\HdrCaptureProgressEventArgs.cs" />
+ <Compile Include="Camera\ImageData.cs" />
+ <Compile Include="Camera\Location.cs" />
+ <Compile Include="Camera\MediaPacketPreviewEventArgs.cs" />
+ <Compile Include="Camera\PreviewData.cs" />
+ <Compile Include="Camera\PreviewEventArgs.cs" />
+ <Compile Include="Camera\Range.cs" />
+ <Compile Include="Camera\SinglePlaneData.cs" />
+ <Compile Include="Camera\TriplePlaneData.cs" />
<Compile Include="Interop\Interop.AudioIO.cs" />
+ <Compile Include="Interop\Interop.Camera.cs" />
+ <Compile Include="Interop\Interop.CameraDisplay.cs" />
+ <Compile Include="Interop\Interop.CameraFeature.cs" />
+ <Compile Include="Interop\Interop.CameraSetting.cs" />
<Compile Include="Interop\Interop.MediaCodec.cs" />
<Compile Include="Interop\Interop.MediaTool.cs" />
+ <Compile Include="Interop\Interop.MediaVision.BarCode.cs" />
+ <Compile Include="Interop\Interop.MediaVision.Common.cs" />
+ <Compile Include="Interop\Interop.MediaVision.Face.cs" />
+ <Compile Include="Interop\Interop.MediaVision.Image.cs" />
+ <Compile Include="Interop\Interop.MediaVision.Surveillance.cs" />
<Compile Include="Interop\Interop.Player.cs" />
<Compile Include="Interop\Interop.MetadataExtractor.cs" />
+ <Compile Include="MediaCodec\BufferStatusChangedEventArgs.cs" />
+ <Compile Include="MediaCodec\EosReachedEventArgs.cs" />
+ <Compile Include="MediaCodec\ErrorOccurredEventArgs.cs" />
+ <Compile Include="MediaCodec\InputProcessedEventArgs.cs" />
+ <Compile Include="MediaCodec\MediaCodec.cs" />
+ <Compile Include="MediaCodec\MediaCodecDebug.cs" />
+ <Compile Include="MediaCodec\MediaCodecError.cs" />
+ <Compile Include="MediaCodec\MediaCodecStatus.cs" />
+ <Compile Include="MediaCodec\MediaCodecType.cs" />
+ <Compile Include="MediaCodec\OutputAvailableEventArgs.cs" />
+ <Compile Include="MediaCodec\SupportedCodecType.cs" />
<Compile Include="MediaTool\MediaFormat.cs" />
<Compile Include="MediaTool\MediaFormatAacType.cs" />
<Compile Include="MediaTool\MediaFormatMimeType.cs" />
<Compile Include="MediaTool\MediaPacketVideoPlane.cs" />
<Compile Include="MediaTool\MediaToolDebug.cs" />
<Compile Include="MediaTool\NotEnoughMemoryException.cs" />
+ <Compile Include="MediaVision\Barcode.cs" />
+ <Compile Include="MediaVision\BarcodeDetector.cs" />
+ <Compile Include="MediaVision\BarcodeDetectorEngineConfiguration.cs" />
+ <Compile Include="MediaVision\BarcodeGenerator.cs" />
+ <Compile Include="MediaVision\BarcodeGeneratorEngineConfiguration.cs" />
+ <Compile Include="MediaVision\BarcodeImageConfiguration.cs" />
+ <Compile Include="MediaVision\BarcodeImageFormat.cs" />
+ <Compile Include="MediaVision\BarcodeType.cs" />
+ <Compile Include="MediaVision\Colorspace.cs" />
+ <Compile Include="MediaVision\EngineConfiguration.cs" />
+ <Compile Include="MediaVision\ErrorCorrectionLevel.cs" />
+ <Compile Include="MediaVision\EyeCondition.cs" />
+ <Compile Include="MediaVision\FaceDetectionResult.cs" />
+ <Compile Include="MediaVision\FaceDetector.cs" />
+ <Compile Include="MediaVision\FaceEngineConfiguration.cs" />
+ <Compile Include="MediaVision\FaceRecognitionModel.cs" />
+ <Compile Include="MediaVision\FaceRecognitionModelType.cs" />
+ <Compile Include="MediaVision\FaceRecognitionResult.cs" />
+ <Compile Include="MediaVision\FaceRecognizer.cs" />
+ <Compile Include="MediaVision\FaceTracker.cs" />
+ <Compile Include="MediaVision\FaceTrackingModel.cs" />
+ <Compile Include="MediaVision\FaceTrackingResult.cs" />
+ <Compile Include="MediaVision\FacialExpression.cs" />
+ <Compile Include="MediaVision\Image.cs" />
+ <Compile Include="MediaVision\ImageEngineConfiguration.cs" />
+ <Compile Include="MediaVision\ImageRecognitionResult.cs" />
+ <Compile Include="MediaVision\ImageRecognizer.cs" />
+ <Compile Include="MediaVision\ImageTracker.cs" />
+ <Compile Include="MediaVision\ImageTrackingModel.cs" />
+ <Compile Include="MediaVision\MediaVisionErrorFactory.cs" />
+ <Compile Include="MediaVision\MediaVisionSource.cs" />
+ <Compile Include="MediaVision\MovementDetectedEventArgs.cs" />
+ <Compile Include="MediaVision\MovementDetectionEventTrigger.cs" />
+ <Compile Include="MediaVision\PersonAppearanceChangedEventArgs.cs" />
+ <Compile Include="MediaVision\PersonAppearanceEventTrigger.cs" />
+ <Compile Include="MediaVision\PersonRecognitionEventTrigger.cs" />
+ <Compile Include="MediaVision\PersonRecognitionResult.cs" />
+ <Compile Include="MediaVision\PersonRecognizedEventArgs.cs" />
+ <Compile Include="MediaVision\Point.cs" />
+ <Compile Include="MediaVision\QrConfiguration.cs" />
+ <Compile Include="MediaVision\QrMode.cs" />
+ <Compile Include="MediaVision\Quadrangle.cs" />
+ <Compile Include="MediaVision\Rectangle.cs" />
+ <Compile Include="MediaVision\SurveillanceEngineConfiguration.cs" />
+ <Compile Include="MediaVision\SurveillanceEventTrigger.cs" />
+ <Compile Include="MediaVision\TargetAttribute.cs" />
+ <Compile Include="MediaVision\TextAttribute.cs" />
<Compile Include="MetadataExtractor\MetadataEnums.cs" />
<Compile Include="MetadataExtractor\MetadataExtractorErrorFactory.cs" />
<Compile Include="MetadataExtractor\Synclyrics.cs" />
<Compile Include="Interop\Interop.Libraries.cs" />
<Compile Include="Player\PlayerErrorFactory.cs" />
<Compile Include="Recorder\AudioStreamDeliveredEventArgs.cs" />
- <Compile Include="Recorder\Camera.cs" />
<Compile Include="Recorder\Recorder.cs" />
<Compile Include="Recorder\RecorderEnums.cs" />
<Compile Include="Recorder\RecorderErrorFactory.cs" />
<Compile Include="MediaController\Client.cs" />
<Compile Include="MediaController\Server.cs" />
<Compile Include="MediaController\CommandReplyEventArgs.cs" />
+ <Compile Include="ScreenMirroring\AudioInformation.cs" />
+ <Compile Include="ScreenMirroring\ErrorOccurredEventArgs.cs" />
+ <Compile Include="ScreenMirroring\ScreenMirroring.cs" />
+ <Compile Include="ScreenMirroring\ScreenMirroringEnumerations.cs" />
+ <Compile Include="ScreenMirroring\StateChangedEventArgs.cs" />
+ <Compile Include="ScreenMirroring\ScreenMirroringErrorFactory.cs" />
+ <Compile Include="ScreenMirroring\VideoInformation.cs" />
+ <Compile Include="Interop\Interop.ScreenMirroring.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Tizen.Multimedia.nuspec" />
<_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)</_FullFrameworkReferenceAssemblyPaths>
<AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>
</PropertyGroup>
-</Project>
\ No newline at end of file
+</Project>