--- /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.Reflection;
+using System.Text;
+
+namespace Tizen.Multimedia
+{
+ /// <summary>
+ /// Represents a point in 2D space.
+ /// </summary>
+ internal static class ObjectDescriptionBuilder
+ {
+ internal static string BuildWithProperties(object obj)
+ {
+ StringBuilder sb = new StringBuilder();
+
+ foreach (var property in obj.GetType().GetRuntimeProperties())
+ {
+ object value = property.GetValue(obj);
+
+ sb.Append(property.Name).Append("=");
+
+ bool isObjectType = Convert.GetTypeCode(value) == TypeCode.Object;
+
+ if (isObjectType)
+ {
+ sb.Append("[").Append(value).Append("]");
+ }
+ else
+ {
+ sb.Append(value);
+ }
+
+ sb.Append(", ");
+ }
+ if (sb.Length >= 2)
+ {
+ sb.Remove(sb.Length - 1, 2);
+ }
+
+ return sb.ToString();
+ }
+ }
+}
-using System;
+using System;
using System.Runtime.InteropServices;
+using Tizen.Multimedia;
internal static partial class Interop
{
- internal static partial class MetadataExtractor
- {
- [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_create")]
- internal static extern int Create(out IntPtr handle);
-
- [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_set_path")]
- internal static extern int SetPath(IntPtr handle, string path);
-
- [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_set_buffer")]
- internal static extern int SetBuffer(IntPtr handle, IntPtr buffer, int size);
-
- [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_destroy")]
- internal static extern int Destroy(IntPtr handle);
-
- [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_metadata")]
- internal static extern int GetMetadata(IntPtr handle, int attribute, out string value);
-
- [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_artwork")]
- internal static extern int GetArtwork(IntPtr handle, out IntPtr artwork, out int size, out string mimeType);
-
- [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_frame")]
- internal static extern int GetFrame(IntPtr handle, out IntPtr frame, out int size);
-
- [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_synclyrics")]
- internal static extern int GetSynclyrics(IntPtr handle, int index, out uint timeStamp, out string lyrics);
-
- [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_frame_at_time")]
- internal static extern int GetFrameAtTime(IntPtr handle, uint timeStamp, bool isAccurate, out IntPtr frame, out int size);
- }
+ internal static partial class MetadataExtractor
+ {
+ [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_create")]
+ internal static extern MetadataExtractorError Create(out IntPtr handle);
+
+ [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_set_path")]
+ internal static extern MetadataExtractorError SetPath(IntPtr handle, string path);
+
+ [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_set_buffer")]
+ internal static extern MetadataExtractorError SetBuffer(IntPtr handle, IntPtr buffer, int size);
+
+ [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_destroy")]
+ internal static extern MetadataExtractorError Destroy(IntPtr handle);
+
+ [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_metadata")]
+ private static extern MetadataExtractorError GetMetadata(IntPtr handle, MetadataExtractorAttr attribute, out IntPtr value);
+
+ internal static string GetMetadata(IntPtr handle, MetadataExtractorAttr attr)
+ {
+ IntPtr valuePtr = IntPtr.Zero;
+
+ try
+ {
+ var ret = GetMetadata(handle, attr, out valuePtr);
+ MetadataExtractorRetValidator.ThrowIfError(ret, "Failed to get value for " + attr);
+ return Marshal.PtrToStringAnsi(valuePtr);
+ }
+ finally
+ {
+ Libc.Free(valuePtr);
+ }
+ }
+
+ [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_artwork")]
+ internal static extern MetadataExtractorError GetArtwork(IntPtr handle, out IntPtr artwork,
+ out int size, out IntPtr mimeType);
+
+ [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_frame")]
+ internal static extern MetadataExtractorError GetFrame(IntPtr handle, out IntPtr frame, out int size);
+
+ [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_synclyrics")]
+ internal static extern MetadataExtractorError GetSynclyrics(IntPtr handle, int index,
+ out uint timeStamp, out IntPtr lyrics);
+
+ [DllImport(Libraries.MetadataExtractor, EntryPoint = "metadata_extractor_get_frame_at_time")]
+ internal static extern MetadataExtractorError GetFrameAtTime(IntPtr handle, uint timeStamp,
+ bool isAccurate, out IntPtr frame, out int size);
+ }
}
-/*
+/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
* limitations under the License.
*/
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
namespace Tizen.Multimedia
-{\r
+{
/// <summary>
- /// This class provides properties of the artwork information of the given media
+ /// Represents artwork information of media.
/// </summary>
public class Artwork
- {
- internal Artwork(byte[] artworkData, string mimeType)
- {
- ArtworkData = artworkData;
- MimeType = mimeType;
- }\r
+ {
/// <summary>
- /// The encoded artwork image
+ /// Initialize a new instance of the Artwork class with the specified data and mimeType.
/// </summary>
- public readonly byte[] ArtworkData;\r
-\r
+ public Artwork(byte[] data, string mimeType)
+ {
+ Data = data;
+ MimeType = mimeType;
+ }
+
+ /// <summary>
+ /// The encoded artwork image.
+ /// </summary>
+ public byte[] Data { get; }
+
/// <summary>
- /// The mime type of artwork
+ /// The mime type of artwork.
/// </summary>
- public readonly string MimeType;
- }
+ public string MimeType { get; }
+ }
}
+++ /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.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Tizen.Multimedia
-{\r
- /// <summary>
- /// This class provides properties of the frame data of the given video file
- /// </summary>
- public class Frame
- {
- internal Frame(byte[] frameData)
- {
- FrameData = frameData;
- }
- /// <summary>
- /// The raw frame data
- /// </summary>
- /// <remarks>
- /// Provided raw data is RGB888 format.
- /// </remarks>
- public readonly byte[] FrameData;
- }
-}
-/*
+/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
* limitations under the License.
*/
-
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Diagnostics;
+using static Interop.MetadataExtractor;
namespace Tizen.Multimedia
-{\r
+{
/// <summary>
- /// This class provides properties of the metadata information of the given media
+ /// Represents video metadata information.
/// </summary>
- public class Metadata
- {
- internal Metadata(MetadataBundle metadata)
- {
- Duration = metadata.Duration;
- VideoBitrate = metadata.VideoBitrate;
- VideoFPS = metadata.VideoFPS;
- VideoWidth = metadata.VideoWidth;
- VideoHeight = metadata.VideoHeight;
- VideoStreamCount = metadata.Videostreamcount;
- AudioBitrate = metadata.AudioBitrate;
- AudioChannels = metadata.AudioChannels;
- AudioSamplerate = metadata.AudioSamplerate;
- AudioBitPerSample = metadata.Audiobitpersample;
- AudioStreamCount = metadata.Audiostreamcount;
- Artist = metadata.Artist;
- Title = metadata.Title;
- Album = metadata.Album;
- AlbumArtist = metadata.AlbumArtist;
- Genre = metadata.Genre;
- Author = metadata.Author;
- Copyright = metadata.Copyright;
- Date = metadata.Date;
- Description = metadata.Description;
- Comment = metadata.Comment;
- TrackNumber = metadata.Tracknumber;
- Classification = metadata.Classification;
- Rating = metadata.Rating;
- Longitude = metadata.Longitude;
- Latitude = metadata.Latitude;
- Altitude = metadata.Altitude;
- Conductor = metadata.Conductor;
- Unsynclyric = metadata.Unsynclyric;
- SyncLyricNumber = metadata.SyncLyricNumber;
- RecordingDate = metadata.Recordingdate;
- Rotate = metadata.Rotate;
- VideoCodec = metadata.VideoCodec;
- AudioCodec = metadata.AudioCodec;
- Content360 = metadata.content360;
- }\r
+ public class VideoMetadata
+ {
+
+ protected VideoMetadata()
+ {
+ }
+
+ internal VideoMetadata(IntPtr handle)
+ {
+ Debug.Assert(handle != IntPtr.Zero);
+
+ StreamCount = GetMetadata(handle, MetadataExtractorAttr.VideoStreamCount);
+
+ if (StreamCount == null || (StreamCount != null && StreamCount.Equals("0") == false))
+ {
+ Bitrate = GetMetadata(handle, MetadataExtractorAttr.VideoBitrate);
+ Fps = GetMetadata(handle, MetadataExtractorAttr.VideoFps);
+ Width = GetMetadata(handle, MetadataExtractorAttr.VideoWidth);
+ Height = GetMetadata(handle, MetadataExtractorAttr.VideoHeight);
+ Codec = GetMetadata(handle, MetadataExtractorAttr.VideoCodec);
+ }
+
+ _description = new Lazy<string>(() => ObjectDescriptionBuilder.BuildWithProperties(this));
+ }
+
/// <summary>
- /// Duration
+ /// Gets the bitrate.
/// </summary>
- public readonly string Duration;
+ /// <value>A string representing the bitrate, or null if the information does not exists.</value>
+ public string Bitrate { get; }
+
/// <summary>
- /// Video bitrate
+ /// Gets the video FPS.
/// </summary>
- public readonly string VideoBitrate;
+ /// <value>A string representing the fps, or null if the information does not exists.</value>
+ public string Fps { get; }
+
+ /// <summary>
+ /// Gets the width of the video.
+ /// </summary>
+ /// <value>A string representing the width, or null if the information does not exists.</value>
+ public string Width { get; }
+
+ /// <summary>
+ /// Gets the height of the video.
+ /// </summary>
+ /// <value>A string representing the height, or null if the information does not exists.</value>
+ public string Height { get; }
+
+ /// <summary>
+ /// Get the codec type of the video.
+ /// </summary>
+ /// <value>A string representing the codec type, or null if the information does not exists.</value>
+ public string Codec { get; }
+
/// <summary>
- /// Video FPS
+ /// Gets the video stream count.
/// </summary>
- public readonly string VideoFPS;
+ /// <value>A string representing the video stream count, or null if the information does not exists.</value>
+ public string StreamCount { get; }
+
+ private Lazy<string> _description;
+
+ public override string ToString()
+ {
+ return _description.Value;
+ }
+
+ }
+
+ /// <summary>
+ /// Represents audio metadata information.
+ /// </summary>
+ public class AudioMetadata
+ {
+
+ protected AudioMetadata()
+ {
+ }
+
+ internal AudioMetadata(IntPtr handle)
+ {
+ Debug.Assert(handle != IntPtr.Zero);
+
+ StreamCount = GetMetadata(handle, MetadataExtractorAttr.AudioStreamCount);
+
+ if (StreamCount == null || (StreamCount != null && !StreamCount.Equals("0")))
+ {
+ Bitrate = GetMetadata(handle, MetadataExtractorAttr.AudioBitrate);
+ Channels = GetMetadata(handle, MetadataExtractorAttr.AudioChannels);
+ Samplerate = GetMetadata(handle, MetadataExtractorAttr.AudioSamplerate);
+ BitPerSample = GetMetadata(handle, MetadataExtractorAttr.AudioBitPerSample);
+ Codec = GetMetadata(handle, MetadataExtractorAttr.AudioCodec);
+ }
+
+ _description = new Lazy<string>(() => ObjectDescriptionBuilder.BuildWithProperties(this));
+ }
+
/// <summary>
- /// Video width
+ /// Gets the audio bitrate.
/// </summary>
- public readonly string VideoWidth;
+ /// <value>A string representing the bitrate, or null if the information does not exists.</value>
+ public string Bitrate { get; }
+
/// <summary>
- /// Video height
+ /// Gets the audio channels.
/// </summary>
- public readonly string VideoHeight;
+ /// <value>A string representing the audio channels, or null if the information does not exists.</value>
+ public string Channels { get; }
+
/// <summary>
- /// Video stream existence
+ /// Gets the audio sample rate.
/// </summary>
- public readonly string VideoStreamCount;
+ /// <value>A string representing the sample rate, or null if the information does not exists.</value>
+ public string Samplerate { get; }
+
/// <summary>
- /// Audio bitrate
+ /// Gets the bit per sample of the audio.
/// </summary>
- public readonly string AudioBitrate;
+ /// <value>A string representing the bit oer sample, or null if the information does not exists.</value>
+ public string BitPerSample { get; }
+
/// <summary>
- /// Audio channels
+ /// Gets the audio stream count.
/// </summary>
- public readonly string AudioChannels;
+ /// <value>A string representing the audio stream count, or null if the information does not exists.</value>
+ public string StreamCount { get; }
+
/// <summary>
- /// Audio samplerate
+ /// Audio codec type
/// </summary>
- public readonly string AudioSamplerate;
+ public string Codec { get; }
+
+ private Lazy<string> _description;
+
+ public override string ToString()
+ {
+ return _description.Value;
+ }
+ }
+
+ /// <summary>
+ /// Represents metadata information of a media.
+ /// </summary>
+ public class Metadata
+ {
+
+ protected Metadata()
+ {
+ }
+
+ internal Metadata(IntPtr handle)
+ {
+ Debug.Assert(handle != IntPtr.Zero);
+
+ Video = new VideoMetadata(handle);
+ Audio = new AudioMetadata(handle);
+
+ Duration = GetMetadata(handle, MetadataExtractorAttr.Duration);
+ Artist = GetMetadata(handle, MetadataExtractorAttr.Artist);
+ Title = GetMetadata(handle, MetadataExtractorAttr.Title);
+ Album = GetMetadata(handle, MetadataExtractorAttr.Album);
+ AlbumArtist = GetMetadata(handle, MetadataExtractorAttr.AlbumArtist);
+ Genre = GetMetadata(handle, MetadataExtractorAttr.Genre);
+ Author = GetMetadata(handle, MetadataExtractorAttr.Author);
+ Copyright = GetMetadata(handle, MetadataExtractorAttr.Copyright);
+ ReleaseDate = GetMetadata(handle, MetadataExtractorAttr.ReleaseDate);
+ Description = GetMetadata(handle, MetadataExtractorAttr.Description);
+ Comment = GetMetadata(handle, MetadataExtractorAttr.Comment);
+ TrackNumber = GetMetadata(handle, MetadataExtractorAttr.TrackNum);
+ Classification = GetMetadata(handle, MetadataExtractorAttr.Classification);
+ Rating = GetMetadata(handle, MetadataExtractorAttr.Rating);
+ Longitude = GetMetadata(handle, MetadataExtractorAttr.Longitude);
+ Latitude = GetMetadata(handle, MetadataExtractorAttr.Latitude);
+ Altitude = GetMetadata(handle, MetadataExtractorAttr.Altitude);
+ Conductor = GetMetadata(handle, MetadataExtractorAttr.Conductor);
+ UnsyncLyric = GetMetadata(handle, MetadataExtractorAttr.UnSyncLyrics);
+ SyncLyricCount = GetMetadata(handle, MetadataExtractorAttr.SyncLyricsNum);
+ RecordingDate = GetMetadata(handle, MetadataExtractorAttr.RecordingDate);
+ Rotation = GetMetadata(handle, MetadataExtractorAttr.Rotate);
+ Content360 = GetMetadata(handle, MetadataExtractorAttr.ContentFor360);
+
+ _description = new Lazy<string>(() => ObjectDescriptionBuilder.BuildWithProperties(this));
+ }
+
/// <summary>
- /// Audio bit per sample
+ /// Gets the duration of the media.
/// </summary>
- public readonly string AudioBitPerSample;
+ /// <value>A string representing the duration, or null if the information does not exists.</value>
+ public string Duration { get; }
+
/// <summary>
- /// Audio stream existence
+ /// Gets the video metadata.
/// </summary>
- public readonly string AudioStreamCount;
+ public VideoMetadata Video { get; }
+
/// <summary>
- /// Artist
+ /// Gets the audio metadata.
/// </summary>
- public readonly string Artist;
+ public AudioMetadata Audio { get; }
+
/// <summary>
- /// Title
+ /// Gets the artist of the media.
/// </summary>
- public readonly string Title;
+ /// <value>A string representing the artist, or null if the information does not exists.</value>
+ public string Artist { get; }
+
/// <summary>
- /// Album name
+ /// Gets the title of the media.
/// </summary>
- public readonly string Album;
+ /// <value>A string representing the title, or null if the information does not exists.</value>
+ public string Title { get; }
+
/// <summary>
- /// Album artist
+ /// Gets the album name of the media.
/// </summary>
- public readonly string AlbumArtist;
+ /// <value>A string representing the album name, or null if the information does not exists.</value>
+ public string Album { get; }
+
/// <summary>
- /// Genre
+ /// Gets the album artist of the media.
/// </summary>
- public readonly string Genre;
+ /// <value>A string representing the album artist, or null if the information does not exists.</value>
+ public string AlbumArtist { get; }
+
/// <summary>
- /// Author
+ /// Gets the genre of the media.
/// </summary>
- public readonly string Author;
+ /// <value>A string representing the genre, or null if the information does not exists.</value>
+ public string Genre { get; }
+
/// <summary>
- /// Copyright
+ /// Gets the author of the media.
/// </summary>
- public readonly string Copyright;
+ /// <value>A string representing the author, or null if the information does not exists.</value>
+ public string Author { get; }
+
/// <summary>
- /// Release date
+ /// Gets the copyright of the media.
/// </summary>
- public readonly string Date;
+ /// <value>A string representing the copyright, or null if the information does not exists.</value>
+ public string Copyright { get; }
+
/// <summary>
- /// Description
+ /// Gets the release date of the media.
/// </summary>
- public readonly string Description;
+ /// <value>A string representing the release date, or null if the information does not exists.</value>
+ public string ReleaseDate { get; }
+
/// <summary>
- /// Comment
+ /// Gets the description of the media.
/// </summary>
- public readonly string Comment;
+ /// <value>A string representing the description, or null if the information does not exists.</value>
+ public string Description { get; }
+
/// <summary>
- /// Track number information
+ /// Gets the comment of the media.
/// </summary>
- public readonly string TrackNumber;
+ /// <value>A string representing the comment, or null if the information does not exists.</value>
+ public string Comment { get; }
+
/// <summary>
- /// Classification
+ /// Gets the track number of the media.
/// </summary>
- public readonly string Classification;
+ /// <value>A string representing the track number, or null if the information does not exists.</value>
+ public string TrackNumber { get; }
+
/// <summary>
- /// Rating
+ /// Gets the classification of the media.
/// </summary>
- public readonly string Rating;
+ /// <value>A string representing the classification, or null if the information does not exists.</value>
+ public string Classification { get; }
+
/// <summary>
- /// Longitude
+ /// Gets the rating of the media.
/// </summary>
- public readonly string Longitude;
+ /// <value>A string representing the rating, or null if the information does not exists.</value>
+ public string Rating { get; }
+
/// <summary>
- /// Latitude
+ /// Gets the longitude of the media.
/// </summary>
- public readonly string Latitude;
+ /// <value>A string representing the longitude, or null if the information does not exists.</value>
+ public string Longitude { get; }
+
/// <summary>
- /// Altitude
+ /// Gets the latitude of the media.
/// </summary>
- public readonly string Altitude;
+ /// <value>A string representing the latitude, or null if the information does not exists.</value>
+ public string Latitude { get; }
+
/// <summary>
- /// Conductor
+ /// Gets the altitude of the media.
/// </summary>
- public readonly string Conductor;
+ /// <value>A string representing the altitude, or null if the information does not exists.</value>
+ public string Altitude { get; }
+
/// <summary>
- /// Unsynchronized lyrics
+ /// Gets the conductor of the media.
/// </summary>
- public readonly string Unsynclyric;
+ /// <value>A string representing the conductor, or null if the information does not exists.</value>
+ public string Conductor { get; }
+
/// <summary>
- /// Synchronized lyrics number
+ /// Gets the unsynchronized lyrics of the media.
/// </summary>
- public readonly string SyncLyricNumber;
+ /// <value>A string representing the unsynchronized lyrics, or null if the information does not exists.</value>
+ public string UnsyncLyric { get; }
+
/// <summary>
- /// Recording date
+ /// Gets the number of synchronized lyrics of the media.
/// </summary>
- public readonly string RecordingDate;
+ /// <value>A string representing the number of the synchronized lyrics, or null if the information does not exists.</value>
+ public string SyncLyricCount { get; }
+
/// <summary>
- /// Rotate(orientation) information
+ /// Gets the recording date of the media.
/// </summary>
- public readonly string Rotate;
+ /// <value>A string representing the recording date, or null if the information does not exists.</value>
+ public string RecordingDate { get; }
+
/// <summary>
- /// Video codec type
+ /// Gets the rotate(orientation) information of the media.
/// </summary>
- public readonly string VideoCodec;
+ /// <value>A string representing the rotation information, or null if the information does not exists.</value>
+ public string Rotation { get; }
+
/// <summary>
- /// Audio codec type
+ /// Gets the information for 360 content of the media.
/// </summary>
- public readonly string AudioCodec;
- /// <summary>
- /// 360 content information
- /// </summary>
- public readonly string Content360;
- }
-
- internal class MetadataBundle
- {
- internal string Duration;
- internal string VideoBitrate;
- internal string VideoFPS;
- internal string VideoWidth;
- internal string VideoHeight;
- internal string Videostreamcount;
- internal string AudioBitrate;
- internal string AudioChannels;
- internal string AudioSamplerate;
- internal string Audiobitpersample;
- internal string Audiostreamcount;
- internal string Artist;
- internal string Title;
- internal string Album;
- internal string AlbumArtist;
- internal string Genre;
- internal string Author;
- internal string Copyright;
- internal string Date;
- internal string Description;
- internal string Comment;
- internal string Tracknumber;
- internal string Classification;
- internal string Rating;
- internal string Longitude;
- internal string Latitude;
- internal string Altitude;
- internal string Conductor;
- internal string Unsynclyric;
- internal string SyncLyricNumber;
- internal string Recordingdate;
- internal string Rotate;
- internal string VideoCodec;
- internal string AudioCodec;
- internal string content360;
- }
+ /// <value>A string representing the information for 360 content, or null if the information does not exists.</value>
+ public string Content360 { get; }
+
+ private Lazy<string> _description;
+
+ public override string ToString()
+ {
+ return _description.Value;
+ }
+ }
}
+++ /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 enum MetadataExtractorAttr
- {
- METADATA_DURATION, //Duration
- METADATA_VIDEO_BITRATE, //VideoBitrate
- METADATA_VIDEO_FPS, //VideoFPS
- METADATA_VIDEO_WIDTH, //VideoWidth
- METADATA_VIDEO_HEIGHT, //VideoHeight
- METADATA_HAS_VIDEO, //Videostreamcount
- METADATA_AUDIO_BITRATE, //AudioBitrate
- METADATA_AUDIO_CHANNELS, //AudioChannels
- METADATA_AUDIO_SAMPLERATE, //AudioSamplerate
- METADATA_AUDIO_BITPERSAMPLE, //Audiobitpersample
- METADATA_HAS_AUDIO, //Audiostreamcount
- METADATA_ARTIST, //Artist
- METADATA_TITLE, //Title
- METADATA_ALBUM, //Album
- METADATA_ALBUM_ARTIST, //Album_Artist
- METADATA_GENRE, //Genre
- METADATA_AUTHOR, //Author
- METADATA_COPYRIGHT, //Copyright
- METADATA_DATE, //Date
- METADATA_DESCRIPTION, //Description
- METADATA_COMMENT, //Comment
- METADATA_TRACK_NUM, //Tracknumberinfo
- METADATA_CLASSIFICATION, //Classification
- METADATA_RATING, //Rating
- METADATA_LONGITUDE, //Longitude
- METADATA_LATITUDE, //Latitude
- METADATA_ALTITUDE, //Altitude
- METADATA_CONDUCTOR, //Conductor
- METADATA_UNSYNCLYRICS, //Unsynchronizedlyric
- METADATA_SYNCLYRICS_NUM, //Synchronizedlyric(time/lyricset)number
- METADATA_RECDATE, //Recordingdate
- METADATA_ROTATE, //Rotate(Orientation)Information
- METADATA_VIDEO_CODEC, //VideoCodec
- METADATA_AUDIO_CODEC, //AudioCodec
- METADATA_360, //360contentInformation
- }
-}
-/*
+/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
* limitations under the License.
*/
-
using System;
-using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace Tizen.Multimedia
{
- static internal class MetadataExtractorLog
- {
- internal const string LogTag = "Tizen.Multimedia.MetadataExtractor";
- }
- /// <summary>
- /// The Metadata extractor class provides a set of functions to get the metadata of the input media file
- /// </summary>
- public class MetadataExtractor : IDisposable
- {
- private bool _disposed = false;
- internal IntPtr _handle = IntPtr.Zero;
- /// <summary>
- /// Metadata extractor constructor
- /// </summary>
- /// <param name="path"> the path to extract metadata </param>
- public MetadataExtractor(string path)
- {
- int ret;
-
- if (path == null)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Path is NULL");
- MetadataExtractorErrorFactory.ThrowException((int)MetadataExtractorError.InvalidParameter, "Path is NULL");
- }
- else
- {
- ret = Interop.MetadataExtractor.Create(out _handle);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to create metadata" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to create metadata");
- }
- ret = Interop.MetadataExtractor.SetPath(_handle, path);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to set path" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to set path");
- }
- }
- }
- /// <summary>
- /// Metadata extractor constructor
- /// </summary>
- /// <param name="buffer"> the buffer to extract metadata </param>
- public MetadataExtractor(byte[] buffer)
- {
- int ret;
-
- if (buffer == null || buffer.Length == 0)
- {
- Log.Error(MetadataExtractorLog.LogTag, "buffer is null");
- MetadataExtractorErrorFactory.ThrowException((int)MetadataExtractorError.InvalidParameter, "buffer is null");
- }
- else
+ static internal class MetadataExtractorLog
+ {
+ internal const string Tag = "Tizen.Multimedia.MetadataExtractor";
+ }
+
+ /// <summary>
+ /// Provides a set of functions to get the metadata from a media file.
+ /// </summary>
+ public class MetadataExtractor : IDisposable
+ {
+ private bool _disposed = false;
+ private IntPtr _handle = IntPtr.Zero;
+ private IntPtr _buffer = IntPtr.Zero;
+
+ private void Create(Func<MetadataExtractorError> initFunc)
+ {
+ MetadataExtractorRetValidator.ThrowIfError(
+ Interop.MetadataExtractor.Create(out _handle), "Failed to create metadata");
+
+ try
+ {
+ MetadataExtractorRetValidator.ThrowIfError(initFunc(), "Failed to init");
+
+ _metadata = new Lazy<Metadata>(() => new Metadata(Handle));
+ }
+ catch
+ {
+ Release();
+ throw;
+ }
+ }
+
+ /// <summary>
+ /// Initialize a new instance of the MetadataExtractor class with the specified path.
+ /// </summary>
+ /// <param name="path">The path for the file to extract metadata.</param>
+ /// <exception cref="ArgumentNullException"><paramref name="path"/> is null.</exception>
+ public MetadataExtractor(string path)
+ {
+ if (path == null)
+ {
+ throw new ArgumentNullException(nameof(path));
+ }
+
+ Create(()=> Interop.MetadataExtractor.SetPath(_handle, path));
+ }
+
+ /// <summary>
+ /// Initialize a new instance of the MetadataExtractor class with the specified buffer.
+ /// </summary>
+ /// <param name="buffer">The buffer to extract metadata.</param>
+ /// <exception cref="ArgumentNullException"><paramref name="buffer"/> is null.</exception>
+ /// <exception cref="ArgumentException">The length of <paramref name="buffer"/> is zero.</exception>
+ public MetadataExtractor(byte[] buffer)
+ {
+ if (buffer == null)
+ {
+ throw new ArgumentNullException(nameof(buffer));
+ }
+
+ if (buffer.Length == 0)
+ {
+ throw new ArgumentException("buffer length is zero.", nameof(buffer));
+ }
+
+ _buffer = Marshal.AllocHGlobal(buffer.Length);
+ Marshal.Copy(buffer, 0, _buffer, buffer.Length);
+
+ Create(() => Interop.MetadataExtractor.SetBuffer(_handle, _buffer, buffer.Length));
+ }
+
+ private IntPtr Handle
+ {
+ get
+ {
+ if (_disposed)
+ {
+ throw new ObjectDisposedException(nameof(MetadataExtractor));
+ }
+
+ return _handle;
+ }
+ }
+
+ private Lazy<Metadata> _metadata;
+
+ /// <summary>
+ /// Retrieves the <see cref="Metadata"/>.
+ /// </summary>
+ /// <returns>A <see cref="Metadata"/> for the give source.</returns>
+ /// <exception cref="InvalidOperationException">Internal process error is occurred.</exception>
+ /// <exception cref="ObjectDisposedException">The <see cref="MetadataExtractor"/> has been already disposed of.</exception>
+ public Metadata GetMetadata()
+ {
+ if (_disposed)
+ {
+ throw new ObjectDisposedException(nameof(MetadataExtractor));
+ }
+
+ return _metadata.Value;
+ }
+
+ /// <summary>
+ /// Gets the artwork image in the source.
+ /// </summary>
+ /// <returns>A <see cref="Artwork"/> if it exists, otherwise null.</returns>
+ /// <exception cref="InvalidOperationException">Internal process error is occurred.</exception>
+ /// <exception cref="ObjectDisposedException">The <see cref="MetadataExtractor"/> has been already disposed of.</exception>
+ public Artwork GetArtwork()
+ {
+ IntPtr data = IntPtr.Zero;
+ IntPtr mimeType = IntPtr.Zero;
+
+ try
+ {
+ int size = 0;
+
+ var ret = Interop.MetadataExtractor.GetArtwork(Handle, out data, out size, out mimeType);
+ MetadataExtractorRetValidator.ThrowIfError(ret, "Failed to get value");
+
+ if (size > 0)
+ {
+ var buf = new byte[size];
+ Marshal.Copy(data, buf, 0, size);
+
+ return new Artwork(buf, Marshal.PtrToStringAnsi(mimeType));
+ }
+
+ return null;
+ }
+ finally
+ {
+ Interop.Libc.Free(data);
+ Interop.Libc.Free(mimeType);
+ }
+ }
+
+ /// <summary>
+ /// Gets the sync lyrics of the source.
+ /// </summary>
+ /// <param name="index">The index of lyrics to retrieve.</param>
+ /// <returns>A <see cref="SyncLyrics"/> object if <paramref name="index"/> is valid, otherwise null.</returns>
+ /// <exception cref="InvalidOperationException">Internal process error is occurred.</exception>
+ /// <exception cref="ObjectDisposedException">The <see cref="MetadataExtractor"/> has been already disposed of.</exception>
+ public SyncLyrics GetSyncLyrics(int index)
+ {
+ IntPtr lyrics = IntPtr.Zero;
+
+ try
+ {
+ uint timestamp = 0;
+
+ var ret = Interop.MetadataExtractor.GetSynclyrics(Handle, index, out timestamp, out lyrics);
+ MetadataExtractorRetValidator.ThrowIfError(ret, "Failed to get sync lyrics");
+
+ if (lyrics == IntPtr.Zero)
+ {
+ return null;
+ }
+
+ return new SyncLyrics(Marshal.PtrToStringAnsi(lyrics), timestamp);
+ }
+ finally
+ {
+ Interop.Libc.Free(lyrics);
+ }
+ }
+
+ /// <summary>
+ /// Gets the frame of a video media.
+ /// </summary>
+ /// <returns>The raw thumbnail data in RGB888 if it exists, otherwise null.</returns>
+ /// <exception cref="InvalidOperationException">Internal process error is occurred.</exception>
+ /// <exception cref="ObjectDisposedException">The <see cref="MetadataExtractor"/> has been already disposed of.</exception>
+ public byte[] GetVideoThumbnail()
+ {
+ IntPtr data = IntPtr.Zero;
+
+ try
+ {
+ int size = 0;
+
+ var ret = Interop.MetadataExtractor.GetFrame(Handle, out data, out size);
+ MetadataExtractorRetValidator.ThrowIfError(ret, "Failed to get value");
+
+ if (size == 0)
+ {
+ return null;
+ }
+
+ var buf = new byte[size];
+ Marshal.Copy(data, buf, 0, size);
+
+ return buf;
+ }
+ finally
{
- int size = buffer.Length;
- IntPtr buf = Marshal.AllocHGlobal(size);
- Marshal.Copy(buffer, 0, buf, size);
-
- ret = Interop.MetadataExtractor.Create(out _handle);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to create metadata" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to create metadata");
- }
-
- ret = Interop.MetadataExtractor.SetBuffer(_handle, buf, size);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to set buffer" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to set buffer");
- }
- }
-
- }
- /// <summary>
- /// Gets metadata
- /// </summary>
- /// <value> Metadata object </value>
- /// <exception cref="InvalidOperationException"> When internal process error is occured</exception>
- public Metadata GetMetadata()
- {
- int ret;
- Metadata _metadata;
- MetadataBundle _metaBundle = new MetadataBundle();
-
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_DURATION, out _metaBundle.Duration);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_HAS_VIDEO, out _metaBundle.Videostreamcount);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- if (_metaBundle.Videostreamcount == null || (_metaBundle.Videostreamcount != null && !_metaBundle.Videostreamcount.Equals("0")))
- {
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_VIDEO_BITRATE, out _metaBundle.VideoBitrate);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_VIDEO_FPS, out _metaBundle.VideoFPS);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_VIDEO_WIDTH, out _metaBundle.VideoWidth);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_VIDEO_HEIGHT, out _metaBundle.VideoHeight);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_VIDEO_CODEC, out _metaBundle.VideoCodec);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- }
-
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_HAS_AUDIO, out _metaBundle.Audiostreamcount);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- if (_metaBundle.Audiostreamcount == null || (_metaBundle.Audiostreamcount != null && !_metaBundle.Audiostreamcount.Equals("0")))
- {
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_AUDIO_BITRATE, out _metaBundle.AudioBitrate);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_AUDIO_CHANNELS, out _metaBundle.AudioChannels);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_AUDIO_SAMPLERATE, out _metaBundle.AudioSamplerate);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_AUDIO_BITPERSAMPLE, out _metaBundle.Audiobitpersample);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_AUDIO_CODEC, out _metaBundle.AudioCodec);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- }
-
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_ARTIST, out _metaBundle.Artist);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_TITLE, out _metaBundle.Title);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_ALBUM, out _metaBundle.Album);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_ALBUM_ARTIST, out _metaBundle.AlbumArtist);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_GENRE, out _metaBundle.Genre);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_AUTHOR, out _metaBundle.Author);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_COPYRIGHT, out _metaBundle.Copyright);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_DATE, out _metaBundle.Date);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_DESCRIPTION, out _metaBundle.Description);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_COMMENT, out _metaBundle.Comment);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_TRACK_NUM, out _metaBundle.Tracknumber);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_CLASSIFICATION, out _metaBundle.Classification);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_RATING, out _metaBundle.Rating);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_LONGITUDE, out _metaBundle.Longitude);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_LATITUDE, out _metaBundle.Latitude);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_ALTITUDE, out _metaBundle.Altitude);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_CONDUCTOR, out _metaBundle.Conductor);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_UNSYNCLYRICS, out _metaBundle.Unsynclyric);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_SYNCLYRICS_NUM, out _metaBundle.SyncLyricNumber);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_RECDATE, out _metaBundle.Recordingdate);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_ROTATE, out _metaBundle.Rotate);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
- ret = Interop.MetadataExtractor.GetMetadata(_handle, (int)MetadataExtractorAttr.METADATA_360, out _metaBundle.content360);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
-
- _metadata = new Metadata(_metaBundle);
-
- return _metadata;
- }
- /// <summary>
- /// Gets the artwork image in a media file
- /// </summary>
- /// <value> Artwork object </value>
- /// <exception cref="InvalidOperationException"> When internal process error is occured</exception>
- public Artwork GetArtwork()
- {
- int ret;
- Artwork _artwork;
- IntPtr getArtworkData;
- int getSize;
- byte[] tmpBuf;
- string getMimeType;
-
- ret = Interop.MetadataExtractor.GetArtwork(_handle, out getArtworkData, out getSize, out getMimeType);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
-
- if (getSize > 0)
- {
- tmpBuf = new byte[getSize];
- Marshal.Copy(getArtworkData, tmpBuf, 0, getSize);
-
- _artwork = new Artwork(tmpBuf, getMimeType);
- }
- else
- {
- _artwork = new Artwork(null, null);
- }
-
- return _artwork;
- }
- /// <summary>
- /// Gets the synclyrics of a media file
- /// </summary>
- /// <param name="index"> The index of time/lyrics to set </param>
- /// <value> Synclyrics object </value>
- /// <exception cref="ArgumentException"> When the invalid parameter value is set.</exception>
- /// <exception cref="InvalidOperationException"> When internal process error is occured</exception>
- public Synclyrics GetSynclyrics(int index)
- {
- int ret;
- Synclyrics _lyrics;
- uint getTimestamp;
- string getLyrics;
-
- ret = Interop.MetadataExtractor.GetSynclyrics(_handle, index, out getTimestamp, out getLyrics);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
-
- _lyrics = new Synclyrics(getLyrics, getTimestamp);
-
- return _lyrics;
- }
- /// <summary>
- /// Gets the frame of a video media file
- /// </summary>
- /// <value> Frame object </value>
- /// <exception cref="InvalidOperationException"> When internal process error is occured</exception>
- public Frame GetFrame()
- {
- int ret;
- Frame _frame;
- IntPtr getFameData;
- int getSize;
- byte[] tmpBuf;
-
- ret = Interop.MetadataExtractor.GetFrame(_handle, out getFameData, out getSize);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
-
- tmpBuf = new byte[getSize];
- Marshal.Copy(getFameData, tmpBuf, 0, getSize);
-
- _frame = new Frame(tmpBuf);
-
- return _frame;
- }
- /// <summary>
- /// Gets the frame of a video media
- /// </summary>
- /// <param name="timeStamp"> The timestamp in milliseconds </param>
- /// <param name="accurate"> If @c true the user can get an accurate frame for the given timestamp,\n
- /// otherwise @c false if the user can only get the nearest i-frame of the video rapidly </param>
- /// <value> Frame object </value>
- /// <exception cref="ArgumentException"> When the invalid parameter value is set.</exception>
- /// <exception cref="InvalidOperationException"> When internal process error is occured</exception>
- public Frame GetFrameAtTime(uint timeStamp, bool accurate)
- {
- int ret;
- Frame _frame;
- IntPtr getFameData;
- int getSize;
- byte[] tmpBuf;
-
- ret = Interop.MetadataExtractor.GetFrameAtTime(_handle, timeStamp, accurate, out getFameData, out getSize);
- if (ret != (int)MetadataExtractorError.None)
- {
- Log.Error(MetadataExtractorLog.LogTag, "Failed to get value" + (MetadataExtractorError)ret);
- MetadataExtractorErrorFactory.ThrowException(ret, "Failed to get value");
- }
-
- tmpBuf = new byte[getSize];
- Marshal.Copy(getFameData, tmpBuf, 0, getSize);
-
- _frame = new Frame(tmpBuf);
-
- return _frame;
- }
-
- /// <summary>
- /// Metadata Extractor destructor
- /// </summary>
- ~MetadataExtractor()
- {
- Dispose(false);
- }
-
- 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.MetadataExtractor.Destroy(_handle);
- _handle = IntPtr.Zero;
- }
- _disposed = true;
- }
- }
-
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
- }
+ Interop.Libc.Free(data);
+ }
+ }
+
+ /// <summary>
+ /// Gets the frame of a video media.
+ /// </summary>
+ /// <param name="timeStamp">The timestamp in milliseconds.</param>
+ /// <param name="accurate">true to get an accurate frame for the given timestamp,
+ /// otherwise false to get the nearest i-frame of the video rapidly.</param>
+ /// <returns>The raw frame data in RGB888 if a frame at specified time exists, otherwise null.</returns>
+ /// <exception cref="InvalidOperationException"> When internal process error is occured</exception>
+ /// <exception cref="ObjectDisposedException">The <see cref="MetadataExtractor"/> has been already disposed of.</exception>
+ public byte[] GetFrameAt(uint timeStamp, bool accurate)
+ {
+ IntPtr data = IntPtr.Zero;
+
+ try
+ {
+ int size = 0;
+
+ var ret = Interop.MetadataExtractor.GetFrameAtTime(Handle, timeStamp, accurate, out data, out size);
+ MetadataExtractorRetValidator.ThrowIfError(ret, "Failed to get value");
+
+ if (size == 0)
+ {
+ return null;
+ }
+
+ var buf = new byte[size];
+ Marshal.Copy(data, buf, 0, size);
+
+ return buf;
+ }
+ finally
+ {
+ Interop.Libc.Free(data);
+ }
+ }
+
+ /// <summary>
+ /// Metadata Extractor destructor
+ /// </summary>
+ ~MetadataExtractor()
+ {
+ Dispose(false);
+ }
+
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!_disposed)
+ {
+ Release();
+ _disposed = true;
+ }
+ }
+
+ private void Release()
+ {
+ if (_buffer != IntPtr.Zero)
+ {
+ Marshal.FreeHGlobal(_buffer);
+ }
+
+ if (_handle != IntPtr.Zero)
+ {
+ var ret = Interop.MetadataExtractor.Destroy(_handle);
+ Log.Error(MetadataExtractorLog.Tag, $"DestroyHandle failed : {ret}.");
+
+ _handle = IntPtr.Zero;
+ }
+ }
+
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+ }
}
--- /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
+{
+ internal enum MetadataExtractorAttr
+ {
+ Duration,
+ VideoBitrate,
+ VideoFps,
+ VideoWidth,
+ VideoHeight,
+ VideoStreamCount,
+ AudioBitrate,
+ AudioChannels,
+ AudioSamplerate,
+ AudioBitPerSample,
+ AudioStreamCount,
+ Artist,
+ Title,
+ Album,
+ AlbumArtist,
+ Genre,
+ Author,
+ Copyright,
+ ReleaseDate,
+ Description,
+ Comment,
+ TrackNum,
+ Classification,
+ Rating,
+ Longitude,
+ Latitude,
+ Altitude,
+ Conductor,
+ UnSyncLyrics,
+ SyncLyricsNum,
+ RecordingDate,
+ Rotate,
+ VideoCodec,
+ AudioCodec,
+ ContentFor360,
+ }
+}
--- /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.IO;
+using Tizen.Internals.Errors;
+
+namespace Tizen.Multimedia
+{
+ /// <summary>
+ /// Enumeration for metadata extractor's error codes.
+ /// </summary>
+ internal enum MetadataExtractorError
+ {
+ None = ErrorCode.None,
+ InvalidParameter = ErrorCode.InvalidParameter,
+ OutOfMemory = ErrorCode.OutOfMemory,
+ FileExists = ErrorCode.FileExists,
+ PermissionDenied = ErrorCode.PermissionDenied,
+ TizenMetadataExtractorError = -0x01930000,
+ OperationFailed = TizenMetadataExtractorError | 0x01 // Invalid operation
+ };
+
+ internal static class MetadataExtractorRetValidator
+ {
+ internal static void ThrowIfError(MetadataExtractorError error, string errorMessage)
+ {
+ switch (error)
+ {
+ case MetadataExtractorError.InvalidParameter:
+ throw new ArgumentException(errorMessage);
+
+ case MetadataExtractorError.FileExists:
+ throw new FileNotFoundException(errorMessage);
+
+ case MetadataExtractorError.PermissionDenied:
+ throw new UnauthorizedAccessException(errorMessage);
+
+ case MetadataExtractorError.OutOfMemory:
+ throw new OutOfMemoryException();
+
+ case MetadataExtractorError.OperationFailed:
+ 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;
-using Tizen.Internals.Errors;
-
-namespace Tizen.Multimedia
-{
- /// <summary>
- /// Enumeration for metadata extractor's error codes.
- /// </summary>
- internal enum MetadataExtractorError
- {
- None = ErrorCode.None, // Success
- InvalidParameter = ErrorCode.InvalidParameter, // Invalid parameter
- OutOfMemory = ErrorCode.OutOfMemory, // Out of memory
- FileExists = ErrorCode.FileExists, // File does not exist
- PermissionDenied = ErrorCode.PermissionDenied, // Permission deny
- TizenMetadataExtractorError = -0x01930000,
- MetadataExtractorErrorOperationFailed = TizenMetadataExtractorError | 0x01 // Invalid operation
- };
-
- internal static class MetadataExtractorErrorFactory
- {
- internal static void ThrowException(int errorCode, string errorMessage = null, string paramName = null)
- {
- switch ((MetadataExtractorError)errorCode)
- {
- case MetadataExtractorError.InvalidParameter:
- throw new ArgumentException("[" + errorCode.ToString() + "]" + errorMessage, paramName);
-
- case MetadataExtractorError.OutOfMemory:
- case MetadataExtractorError.FileExists:
- case MetadataExtractorError.PermissionDenied:
- case MetadataExtractorError.MetadataExtractorErrorOperationFailed:
- throw new InvalidOperationException("[" + errorCode.ToString() + "]" + errorMessage);
- }
- }
- }
-}
-
-/*
+/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
* limitations under the License.
*/
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
namespace Tizen.Multimedia
-{\r
+{
/// <summary>
- /// This class provides properties of the synchronized lyrics information of the given media
+ /// Represents synchronized lyrics information of media.
/// </summary>
- public class Synclyrics
- {
- internal Synclyrics(string lyrics, uint timestamp)
- {
- Lyrics = lyrics;
- Timestamp = timestamp;
- }\r
+ public class SyncLyrics
+ {
+ /// <summary>
+ /// Initialize a new instance of the MetadataExtractor class with the specified lyrics and timestamp.
+ /// </summary>
+ public SyncLyrics(string lyrics, uint timestamp)
+ {
+ Lyrics = lyrics;
+ Timestamp = timestamp;
+ }
+
/// <summary>
/// The lyrics of the index
/// </summary>
- public readonly string Lyrics;\r
+ public string Lyrics { get; }
+
/// <summary>
/// The time information of the index
/// </summary>
- public readonly uint Timestamp;
- }
+ public uint Timestamp { get; }
+ }
}
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
- <Compile Include="AudioIO\AudioCapture.cs" />
- <Compile Include="AudioIO\AudioDataAvailableEventArgs.cs" />
- <Compile Include="AudioIO\AudioIOEnums.cs" />
- <Compile Include="AudioIO\AudioIOStateChangedEventArgs.cs" />
- <Compile Include="AudioIO\AudioIOUtil.cs" />
- <Compile Include="AudioIO\AudioPlaybackBufferAvailableEventArgs.cs" />
- <Compile Include="AudioIO\AudioPlayback.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="Common\MultimediaDebug.cs" />
- <Compile Include="Common\Size.cs" />
- <Compile Include="Common\ValdiationUtil.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\InputProcessedEventArgs.cs" />
- <Compile Include="MediaCodec\MediaCodec.cs" />
- <Compile Include="MediaCodec\MediaCodecError.cs" />
- <Compile Include="MediaCodec\MediaCodecErrorOccurredEventArgs.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\MediaFormatTextType.cs" />
- <Compile Include="MediaTool\MediaPacket.cs" />
- <Compile Include="MediaTool\MediaPacketBuffer.cs" />
- <Compile Include="MediaTool\MediaPacketBufferFlags.cs" />
- <Compile Include="MediaTool\MediaPacketVideoPlane.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="MetadataExtractor\Frame.cs" />
- <Compile Include="MetadataExtractor\Artwork.cs" />
- <Compile Include="MetadataExtractor\Metadata.cs" />
- <Compile Include="MetadataExtractor\MetadataExtractor.cs" />
- <Compile Include="Interop\Interop.EvasObject.cs" />
- <Compile Include="MediaView\MediaView.cs" />
- <Compile Include="Player\CapturedFrame.cs" />
- <Compile Include="Player\MediaStreamBufferStatusChangedEventArgs.cs" />
- <Compile Include="Player\MediaStreamSeekingOccurredEventArgs.cs" />
- <Compile Include="Player\PlayerDisplay.cs" />
- <Compile Include="Player\PlayerEnums.cs" />
- <Compile Include="Player\MediaStreamConfiguration.cs" />
- <Compile Include="Player\PlayerError.cs" />
- <Compile Include="Player\PlayerErrorOccurredEventArgs.cs" />
- <Compile Include="Player\PlayerTrackInfo.cs" />
- <Compile Include="Player\StreamInfo.cs" />
- <Compile Include="Player\AudioEffect.cs" />
- <Compile Include="Player\BufferingProgressChangedEventArgs.cs" />
- <Compile Include="Player\DownloadProgress.cs" />
- <Compile Include="Player\EqualizerBand.cs" />
- <Compile Include="Player\SubtitleUpdatedEventArgs.cs" />
- <Compile Include="Player\PlaybackInterruptedEventArgs.cs" />
- <Compile Include="Player\Player.cs" />
- <Compile Include="Player\VideoFrameDecodedEventArgs.cs" />
- <Compile Include="Player\VideoStreamChangedEventArgs.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="Player\MediaSource.cs" />
- <Compile Include="Player\MediaUriSource.cs" />
- <Compile Include="Player\MediaBufferSource.cs" />
- <Compile Include="Player\MediaStreamSource.cs" />
- <Compile Include="Interop\Interop.Libraries.cs" />
- <Compile Include="Recorder\AudioStreamDeliveredEventArgs.cs" />
- <Compile Include="Recorder\Recorder.cs" />
- <Compile Include="Recorder\RecorderEnums.cs" />
- <Compile Include="Recorder\RecorderErrorFactory.cs" />
- <Compile Include="Recorder\RecorderInterruptedEventArgs.cs" />
- <Compile Include="Recorder\RecorderStateChangedEventArgs.cs" />
- <Compile Include="Recorder\RecordingErrorOccurredEventArgs.cs" />
- <Compile Include="Recorder\RecordingLimitReachedEventArgs.cs" />
- <Compile Include="Recorder\RecordingStatusChangedEventArgs.cs" />
- <Compile Include="Recorder\VideoResolution.cs" />
- <Compile Include="Interop\Interop.Recorder.cs" />
- <Compile Include="Interop\Interop.RecorderAttribute.cs" />
- <Compile Include="Interop\Interop.RecorderCapability.cs" />
- <Compile Include="AudioManager\AudioDevice.cs" />
- <Compile Include="AudioManager\AudioDeviceConnectionChangedEventArgs.cs" />
- <Compile Include="AudioManager\AudioDeviceStateChangedEventArgs.cs" />
- <Compile Include="AudioManager\AudioManager.cs" />
- <Compile Include="AudioManager\AudioManagerEnumerations.cs" />
- <Compile Include="AudioManager\AudioManagerErrorFactory.cs" />
- <Compile Include="AudioManager\AudioStreamPolicy.cs" />
- <Compile Include="AudioManager\AudioVolume.cs" />
- <Compile Include="AudioManager\FocusStateChangedEventArgs.cs" />
- <Compile Include="AudioManager\MaxVolumeLevel.cs" />
- <Compile Include="AudioManager\StreamFocusStateChangedEventArgs.cs" />
- <Compile Include="AudioManager\VolumeChangedEventArgs.cs" />
- <Compile Include="AudioManager\VolumeLevel.cs" />
- <Compile Include="Interop\Interop.Device.cs" />
- <Compile Include="Interop\Interop.StreamPolicy.cs" />
- <Compile Include="Interop\Interop.Volume.cs" />
- <Compile Include="Interop\Interop.MediaController.cs" />
- <Compile Include="MediaController\MediaControllerPlayback.cs" />
- <Compile Include="MediaController\MediaControllerMetadata.cs" />
- <Compile Include="MediaController\ServerInformation.cs" />
- <Compile Include="MediaController\CustomCommandEventArgs.cs" />
- <Compile Include="MediaController\PlaybackStateCommandEventArgs.cs" />
- <Compile Include="MediaController\ServerUpdatedEventArgs.cs" />
- <Compile Include="MediaController\PlaybackUpdatedEventArgs.cs" />
- <Compile Include="MediaController\MetadataUpdatedEventArgs.cs" />
- <Compile Include="MediaController\ShuffleModeUpdatedEventArgs.cs" />
- <Compile Include="MediaController\RepeatModeUpdatedEventArgs.cs" />
- <Compile Include="MediaController\MediaControllerErrorFactory.cs" />
- <Compile Include="MediaController\MediaControllerEnums.cs" />
- <Compile Include="MediaController\MediaControllerLog.cs" />
- <Compile Include="MediaController\MediaControllerClient.cs" />
- <Compile Include="MediaController\MediaControllerServer.cs" />
- <Compile Include="MediaController\CustomCommandReplyEventArgs.cs" />
- <Compile Include="ScreenMirroring\AudioInformation.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" />
- <Compile Include="StreamRecorder\StreamRecordingBufferConsumedEventArgs.cs" />
- <Compile Include="StreamRecorder\StreamRecorder.cs" />
- <Compile Include="StreamRecorder\StreamRecorderEnums.cs" />
- <Compile Include="StreamRecorder\StreamRecorderErrorFactory.cs" />
- <Compile Include="StreamRecorder\StreamRecorderNotifiedEventArgs.cs" />
- <Compile Include="StreamRecorder\StreamRecorderVideoResolution.cs" />
- <Compile Include="StreamRecorder\StreamRecordingErrorOccurredEventArgs.cs" />
- <Compile Include="StreamRecorder\StreamRecordingLimitReachedEventArgs.cs" />
- <Compile Include="Interop\Interop.StreamRecorder.cs" />
- <Compile Include="ThumbnailExtractor\ThumbnailData.cs" />
- <Compile Include="ThumbnailExtractor\ThumbnailExtractorErrorFactory.cs" />
- <Compile Include="ThumbnailExtractor\ThumbnailExtractor.cs" />
- <Compile Include="Interop\Interop.ThumbnailExtractor.cs" />
+ <Compile Include="*\*.cs" />
</ItemGroup>
<ItemGroup>
<None Include="Tizen.Multimedia.nuspec" />
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
- <ProjectGuid>{0CE698B0-4849-4096-9D7F-30E611F50DAD}</ProjectGuid>
- <OutputType>Library</OutputType>
- <AppDesignerFolder>Properties</AppDesignerFolder>
- <RootNamespace>Tizen.Multimedia</RootNamespace>
- <AssemblyName>Tizen.Multimedia</AssemblyName>
- <FileAlignment>512</FileAlignment>
- </PropertyGroup>
- <PropertyGroup>
- <TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>
- <TargetFrameworkVersion>v1.3</TargetFrameworkVersion>
- <NuGetTargetMoniker>.NETStandard,Version=v1.3</NuGetTargetMoniker>
- <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
- <NoStdLib>true</NoStdLib>
- <NoWarn>$(NoWarn);1701;1702</NoWarn>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- <DebugSymbols>true</DebugSymbols>
- <DebugType>full</DebugType>
- <Optimize>false</Optimize>
- <OutputPath>bin\Debug\</OutputPath>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
- <DebugType>pdbonly</DebugType>
- <Optimize>true</Optimize>
- <OutputPath>bin\Release\</OutputPath>
- <DefineConstants>TRACE</DefineConstants>
- <ErrorReport>prompt</ErrorReport>
- <WarningLevel>4</WarningLevel>
- </PropertyGroup>
- <PropertyGroup>
- <SignAssembly>true</SignAssembly>
- </PropertyGroup>
- <PropertyGroup>
- <AssemblyOriginatorKeyFile>Tizen.Multimedia.snk</AssemblyOriginatorKeyFile>
- </PropertyGroup>
- <ItemGroup>
- <Compile Include="AudioIO\AudioCapture.cs" />
- <Compile Include="AudioIO\AudioDataAvailableEventArgs.cs" />
- <Compile Include="AudioIO\AudioIOEnums.cs" />
- <Compile Include="AudioIO\AudioIOStateChangedEventArgs.cs" />
- <Compile Include="AudioIO\AudioIOUtil.cs" />
- <Compile Include="AudioIO\AudioPlaybackBufferAvailableEventArgs.cs" />
- <Compile Include="AudioIO\AudioPlayback.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="Common\MultimediaDebug.cs" />
- <Compile Include="Common\Size.cs" />
- <Compile Include="Common\ValdiationUtil.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\InputProcessedEventArgs.cs" />
- <Compile Include="MediaCodec\MediaCodec.cs" />
- <Compile Include="MediaCodec\MediaCodecError.cs" />
- <Compile Include="MediaCodec\MediaCodecErrorOccurredEventArgs.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\MediaFormatTextType.cs" />
- <Compile Include="MediaTool\MediaPacket.cs" />
- <Compile Include="MediaTool\MediaPacketBuffer.cs" />
- <Compile Include="MediaTool\MediaPacketBufferFlags.cs" />
- <Compile Include="MediaTool\MediaPacketVideoPlane.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="MetadataExtractor\Frame.cs" />
- <Compile Include="MetadataExtractor\Artwork.cs" />
- <Compile Include="MetadataExtractor\Metadata.cs" />
- <Compile Include="MetadataExtractor\MetadataExtractor.cs" />
- <Compile Include="Interop\Interop.EvasObject.cs" />
- <Compile Include="MediaView\MediaView.cs" />
- <Compile Include="Player\CapturedFrame.cs" />
- <Compile Include="Player\MediaStreamBufferStatusChangedEventArgs.cs" />
- <Compile Include="Player\MediaStreamSeekingOccurredEventArgs.cs" />
- <Compile Include="Player\PlayerDisplay.cs" />
- <Compile Include="Player\PlayerEnums.cs" />
- <Compile Include="Player\MediaStreamConfiguration.cs" />
- <Compile Include="Player\PlayerError.cs" />
- <Compile Include="Player\PlayerErrorOccurredEventArgs.cs" />
- <Compile Include="Player\PlayerTrackInfo.cs" />
- <Compile Include="Player\StreamInfo.cs" />
- <Compile Include="Player\AudioEffect.cs" />
- <Compile Include="Player\BufferingProgressChangedEventArgs.cs" />
- <Compile Include="Player\DownloadProgress.cs" />
- <Compile Include="Player\EqualizerBand.cs" />
- <Compile Include="Player\SubtitleUpdatedEventArgs.cs" />
- <Compile Include="Player\PlaybackInterruptedEventArgs.cs" />
- <Compile Include="Player\Player.cs" />
- <Compile Include="Player\VideoFrameDecodedEventArgs.cs" />
- <Compile Include="Player\VideoStreamChangedEventArgs.cs" />
- <Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="Player\MediaSource.cs" />
- <Compile Include="Player\MediaUriSource.cs" />
- <Compile Include="Player\MediaBufferSource.cs" />
- <Compile Include="Player\MediaStreamSource.cs" />
- <Compile Include="Interop\Interop.Libraries.cs" />
- <Compile Include="Recorder\AudioStreamDeliveredEventArgs.cs" />
- <Compile Include="Recorder\Recorder.cs" />
- <Compile Include="Recorder\RecorderEnums.cs" />
- <Compile Include="Recorder\RecorderErrorFactory.cs" />
- <Compile Include="Recorder\RecorderInterruptedEventArgs.cs" />
- <Compile Include="Recorder\RecorderStateChangedEventArgs.cs" />
- <Compile Include="Recorder\RecordingErrorOccurredEventArgs.cs" />
- <Compile Include="Recorder\RecordingLimitReachedEventArgs.cs" />
- <Compile Include="Recorder\RecordingStatusChangedEventArgs.cs" />
- <Compile Include="Recorder\VideoResolution.cs" />
- <Compile Include="Interop\Interop.Recorder.cs" />
- <Compile Include="Interop\Interop.RecorderAttribute.cs" />
- <Compile Include="Interop\Interop.RecorderCapability.cs" />
- <Compile Include="AudioManager\AudioDevice.cs" />
- <Compile Include="AudioManager\AudioDeviceConnectionChangedEventArgs.cs" />
- <Compile Include="AudioManager\AudioDeviceStateChangedEventArgs.cs" />
- <Compile Include="AudioManager\AudioManager.cs" />
- <Compile Include="AudioManager\AudioManagerEnumerations.cs" />
- <Compile Include="AudioManager\AudioManagerErrorFactory.cs" />
- <Compile Include="AudioManager\AudioStreamPolicy.cs" />
- <Compile Include="AudioManager\AudioVolume.cs" />
- <Compile Include="AudioManager\FocusStateChangedEventArgs.cs" />
- <Compile Include="AudioManager\MaxVolumeLevel.cs" />
- <Compile Include="AudioManager\StreamFocusStateChangedEventArgs.cs" />
- <Compile Include="AudioManager\VolumeChangedEventArgs.cs" />
- <Compile Include="AudioManager\VolumeLevel.cs" />
- <Compile Include="Interop\Interop.Device.cs" />
- <Compile Include="Interop\Interop.StreamPolicy.cs" />
- <Compile Include="Interop\Interop.Volume.cs" />
- <Compile Include="Interop\Interop.MediaController.cs" />
- <Compile Include="MediaController\MediaControllerPlayback.cs" />
- <Compile Include="MediaController\MediaControllerMetadata.cs" />
- <Compile Include="MediaController\ServerInformation.cs" />
- <Compile Include="MediaController\CustomCommandEventArgs.cs" />
- <Compile Include="MediaController\PlaybackStateCommandEventArgs.cs" />
- <Compile Include="MediaController\ServerUpdatedEventArgs.cs" />
- <Compile Include="MediaController\PlaybackUpdatedEventArgs.cs" />
- <Compile Include="MediaController\MetadataUpdatedEventArgs.cs" />
- <Compile Include="MediaController\ShuffleModeUpdatedEventArgs.cs" />
- <Compile Include="MediaController\RepeatModeUpdatedEventArgs.cs" />
- <Compile Include="MediaController\MediaControllerErrorFactory.cs" />
- <Compile Include="MediaController\MediaControllerEnums.cs" />
- <Compile Include="MediaController\MediaControllerLog.cs" />
- <Compile Include="MediaController\MediaControllerClient.cs" />
- <Compile Include="MediaController\MediaControllerServer.cs" />
- <Compile Include="MediaController\CustomCommandReplyEventArgs.cs" />
- <Compile Include="ScreenMirroring\AudioInformation.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" />
- <Compile Include="StreamRecorder\StreamRecordingBufferConsumedEventArgs.cs" />
- <Compile Include="StreamRecorder\StreamRecorder.cs" />
- <Compile Include="StreamRecorder\StreamRecorderEnums.cs" />
- <Compile Include="StreamRecorder\StreamRecorderErrorFactory.cs" />
- <Compile Include="StreamRecorder\StreamRecorderNotifiedEventArgs.cs" />
- <Compile Include="StreamRecorder\StreamRecorderVideoResolution.cs" />
- <Compile Include="StreamRecorder\StreamRecordingErrorOccurredEventArgs.cs" />
- <Compile Include="StreamRecorder\StreamRecordingLimitReachedEventArgs.cs" />
- <Compile Include="Interop\Interop.StreamRecorder.cs" />
- <Compile Include="ThumbnailExtractor\ThumbnailData.cs" />
- <Compile Include="ThumbnailExtractor\ThumbnailExtractorErrorFactory.cs" />
- <Compile Include="ThumbnailExtractor\ThumbnailExtractor.cs" />
- <Compile Include="Interop\Interop.ThumbnailExtractor.cs" />
- </ItemGroup>
- <ItemGroup>
- <None Include="Tizen.Multimedia.nuspec" />
- <None Include="Tizen.Multimedia.project.json" />
- <None Include="Tizen.Multimedia.snk" />
- </ItemGroup>
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
- Other similar extension points exist, see Microsoft.Common.targets.
- <Target Name="BeforeBuild">
- </Target>
- <Target Name="AfterBuild">
- </Target>
- -->
- <PropertyGroup>
- <!-- https://github.com/dotnet/corefxlab/tree/master/samples/NetCoreSample and
- https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/target-dotnetcore-with-msbuild
- -->
- <!-- We don't use any of MSBuild's resolution logic for resolving the framework, so just set these two
- properties to any folder that exists to skip the GetReferenceAssemblyPaths task (not target) and
- to prevent it from outputting a warning (MSB3644).
- -->
- <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory)</_TargetFrameworkDirectories>
- <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)</_FullFrameworkReferenceAssemblyPaths>
- <AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>
- </PropertyGroup>
-</Project>
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <PropertyGroup>\r
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+ <ProjectGuid>{0CE698B0-4849-4096-9D7F-30E611F50DAD}</ProjectGuid>\r
+ <OutputType>Library</OutputType>\r
+ <AppDesignerFolder>Properties</AppDesignerFolder>\r
+ <RootNamespace>Tizen.Multimedia</RootNamespace>\r
+ <AssemblyName>Tizen.Multimedia</AssemblyName>\r
+ <FileAlignment>512</FileAlignment>\r
+ </PropertyGroup>\r
+ <PropertyGroup>\r
+ <TargetFrameworkIdentifier>.NETStandard</TargetFrameworkIdentifier>\r
+ <TargetFrameworkVersion>v1.3</TargetFrameworkVersion>\r
+ <NuGetTargetMoniker>.NETStandard,Version=v1.3</NuGetTargetMoniker>\r
+ <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
+ <NoStdLib>true</NoStdLib>\r
+ <NoWarn>$(NoWarn);1701;1702</NoWarn>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+ <DebugSymbols>true</DebugSymbols>\r
+ <DebugType>full</DebugType>\r
+ <Optimize>false</Optimize>\r
+ <OutputPath>bin\Debug\</OutputPath>\r
+ <DefineConstants>DEBUG;TRACE</DefineConstants>\r
+ <ErrorReport>prompt</ErrorReport>\r
+ <WarningLevel>4</WarningLevel>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+ <DebugType>pdbonly</DebugType>\r
+ <Optimize>true</Optimize>\r
+ <OutputPath>bin\Release\</OutputPath>\r
+ <DefineConstants>TRACE</DefineConstants>\r
+ <ErrorReport>prompt</ErrorReport>\r
+ <WarningLevel>4</WarningLevel>\r
+ </PropertyGroup>\r
+ <PropertyGroup>\r
+ <SignAssembly>true</SignAssembly>\r
+ </PropertyGroup>\r
+ <PropertyGroup>\r
+ <AssemblyOriginatorKeyFile>Tizen.Multimedia.snk</AssemblyOriginatorKeyFile>\r
+ </PropertyGroup>\r
+ <ItemGroup>\r
+ <Compile Include="*\*.cs" />\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <None Include="Tizen.Multimedia.nuspec" />\r
+ <None Include="Tizen.Multimedia.project.json" />\r
+ <None Include="Tizen.Multimedia.snk" />\r
+ </ItemGroup>\r
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.\r
+ Other similar extension points exist, see Microsoft.Common.targets.\r
+ <Target Name="BeforeBuild">\r
+ </Target>\r
+ <Target Name="AfterBuild">\r
+ </Target>\r
+ -->\r
+ <PropertyGroup>\r
+ <!-- https://github.com/dotnet/corefxlab/tree/master/samples/NetCoreSample and\r
+ https://docs.microsoft.com/en-us/dotnet/articles/core/tutorials/target-dotnetcore-with-msbuild\r
+ -->\r
+ <!-- We don't use any of MSBuild's resolution logic for resolving the framework, so just set these two\r
+ properties to any folder that exists to skip the GetReferenceAssemblyPaths task (not target) and\r
+ to prevent it from outputting a warning (MSB3644).\r
+ -->\r
+ <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory)</_TargetFrameworkDirectories>\r
+ <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory)</_FullFrameworkReferenceAssemblyPaths>\r
+ <AutoUnifyAssemblyReferences>true</AutoUnifyAssemblyReferences>\r
+ </PropertyGroup>\r
+</Project>\r