Fix player code for tct
authorcoderhyme <jhyo.kim@samsung.com>
Wed, 9 Nov 2016 00:04:36 +0000 (09:04 +0900)
committercoderhyme <jhyo.kim@samsung.com>
Wed, 9 Nov 2016 00:09:24 +0000 (09:09 +0900)
Change-Id: I73325cb70a7a5c552e19cf8b6978559b923efafc
Signed-off-by: coderhyme <jhyo.kim@samsung.com>
packaging/csapi-multimedia.spec
src/Tizen.Multimedia/Player/Player.cs
src/Tizen.Multimedia/Player/PlayerContentInfo.cs
src/Tizen.Multimedia/Player/StreamInformation.cs

index 4a6d0ec..7e6b27f 100644 (file)
@@ -8,7 +8,7 @@
 
 Name:       csapi-multimedia
 Summary:    Tizen Multimedia API for C#
-Version:    1.0.11
+Version:    1.0.12
 Release:    0
 Group:      Development/Libraries
 License:    Apache-2.0
index 30d6181..0e71221 100755 (executable)
@@ -1,4 +1,4 @@
-/// Player
+/// Player
 ///
 /// Copyright 2016 by Samsung Electronics, Inc.,
 ///
@@ -8,7 +8,6 @@
 /// it only in accordance with the terms of the license agreement
 /// you entered into with Samsung.
 
 using System;
 using System.Threading.Tasks;
 using System.Runtime.InteropServices;
@@ -64,7 +63,7 @@ namespace Tizen.Multimedia
             int ret;
 
             ret = Interop.Player.Create(out _playerHandle);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Failed to create player" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Failed to create player");
@@ -72,25 +71,25 @@ namespace Tizen.Multimedia
 
             // Initial get values
             ret = Interop.Player.GetVolume(_playerHandle, out _leftVolume, out _rightVolume);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Failed to get volume levels" + ret);
             }
 
             ret = Interop.Player.GetAudioLatencyMode(_playerHandle, out _audioLatencyMode);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Failed to get Audio latency mode" + ret);
             }
 
             ret = Interop.Player.IsMuted(_playerHandle, out _mute);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Failed to get mute status" + ret);
             }
 
             ret = Interop.Player.IsLooping(_playerHandle, out _isLooping);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Failed to get loop status" + ret);
             }
@@ -133,7 +132,7 @@ namespace Tizen.Multimedia
         {
             add
             {
-                if(_playbackCompleted == null)
+                if (_playbackCompleted == null)
                 {
                     RegisterPlaybackCompletedEvent();
                 }
@@ -143,7 +142,7 @@ namespace Tizen.Multimedia
             remove
             {
                 _playbackCompleted -= value;
-                if(_playbackCompleted == null)
+                if (_playbackCompleted == null)
                 {
                     UnregisterPlaybackCompletedEvent();
                 }
@@ -157,7 +156,7 @@ namespace Tizen.Multimedia
         {
             add
             {
-                if(_playbackInterrupted == null)
+                if (_playbackInterrupted == null)
                 {
                     RegisterPlaybackInterruptedEvent();
                 }
@@ -166,7 +165,7 @@ namespace Tizen.Multimedia
             remove
             {
                 _playbackInterrupted -= value;
-                if(_playbackInterrupted == null)
+                if (_playbackInterrupted == null)
                 {
                     UnregisterPlaybackInterruptedEvent();
                 }
@@ -180,7 +179,7 @@ namespace Tizen.Multimedia
         {
             add
             {
-                if(_playbackError == null)
+                if (_playbackError == null)
                 {
                     RegisterPlaybackErrorEvent();
                 }
@@ -189,7 +188,7 @@ namespace Tizen.Multimedia
             remove
             {
                 _playbackError -= value;
-                if(_playbackError == null)
+                if (_playbackError == null)
                 {
                     UnregisterPlaybackErrorEvent();
                 }
@@ -197,7 +196,7 @@ namespace Tizen.Multimedia
         }
 
 
-        #if _MEDIA_PACKET_
+#if _MEDIA_PACKET_
                TODO: Uncomment this after MediaPacket is implemented.
         /// <summary>
         /// VideoFrameCaptured event is raised when a video frame is decoded
@@ -219,7 +218,7 @@ namespace Tizen.Multimedia
                                }
                        }
                }
-               #endif
+#endif
 
 
         /// <summary>
@@ -233,7 +232,7 @@ namespace Tizen.Multimedia
                 int state;
                 int ret = Interop.Player.GetState(_playerHandle, out state);
 
-                if(ret != (int)PlayerError.None)
+                if (ret != (int)PlayerError.None)
                     PlayerErrorFactory.ThrowException(ret, "Get player state failed");
 
                 return (PlayerState)state;
@@ -248,12 +247,13 @@ namespace Tizen.Multimedia
         {
             set
             {
-                int ret = Interop.Player.SetVolume(_playerHandle, value, _rightVolume);
+                int ret = Interop.Player.SetVolume(_playerHandle, value, value);
 
-                if(ret == (int)PlayerError.None)
+                if (ret == (int)PlayerError.None)
                 {
                     _leftVolume = value;
-                } else
+                }
+                else
                 {
                     Log.Error(PlayerLog.LogTag, "Set volume failed" + (PlayerError)ret);
                     PlayerErrorFactory.ThrowException(ret, "set volume failed");
@@ -274,12 +274,13 @@ namespace Tizen.Multimedia
         {
             set
             {
-                int ret = Interop.Player.SetVolume(_playerHandle, _leftVolume, value);
+                int ret = Interop.Player.SetVolume(_playerHandle, value, value);
 
-                if(ret == (int)PlayerError.None)
+                if (ret == (int)PlayerError.None)
                 {
                     _rightVolume = value;
-                } else
+                }
+                else
                 {
                     Log.Error(PlayerLog.LogTag, "Set volume failed" + (PlayerError)ret);
                     PlayerErrorFactory.ThrowException(ret, "set volume failed");
@@ -300,14 +301,15 @@ namespace Tizen.Multimedia
         {
             set
             {
-                if(_audioLatencyMode != (int)value)
+                if (_audioLatencyMode != (int)value)
                 {
                     int ret = Interop.Player.SetAudioLatencyMode(_playerHandle, (int)value);
-                    if(ret != (int)PlayerError.None)
+                    if (ret != (int)PlayerError.None)
                     {
                         Log.Error(PlayerLog.LogTag, "Set audio latency mode failed" + (PlayerError)ret);
                         PlayerErrorFactory.ThrowException(ret, "set audio latency mode failed");
-                    } else
+                    }
+                    else
                     {
                         _audioLatencyMode = (int)value;
                     }
@@ -328,14 +330,15 @@ namespace Tizen.Multimedia
         {
             set
             {
-                if(_mute != value)
+                if (_mute != value)
                 {
                     int ret = Interop.Player.SetMute(_playerHandle, value);
-                    if(ret != (int)PlayerError.None)
+                    if (ret != (int)PlayerError.None)
                     {
                         Log.Error(PlayerLog.LogTag, "Set mute failed" + (PlayerError)ret);
                         PlayerErrorFactory.ThrowException(ret, "set mute failed");
-                    } else
+                    }
+                    else
                     {
                         _mute = value;
                     }
@@ -356,14 +359,15 @@ namespace Tizen.Multimedia
         {
             set
             {
-                if(_isLooping != value)
+                if (_isLooping != value)
                 {
                     int ret = Interop.Player.SetLooping(_playerHandle, value);
-                    if(ret != (int)PlayerError.None)
+                    if (ret != (int)PlayerError.None)
                     {
                         Log.Error(PlayerLog.LogTag, "Set loop failed" + (PlayerError)ret);
                         PlayerErrorFactory.ThrowException(ret, "set loop failed");
-                    } else
+                    }
+                    else
                     {
                         _isLooping = value;
                     }
@@ -386,7 +390,7 @@ namespace Tizen.Multimedia
             {
                 int playPosition;
                 int ret = Interop.Player.GetPlayPosition(_playerHandle, out playPosition);
-                if(ret != (int)PlayerError.None)
+                if (ret != (int)PlayerError.None)
                 {
                     Log.Error(PlayerLog.LogTag, "Failed to get play position, " + (PlayerError)ret);
                 }
@@ -486,9 +490,9 @@ namespace Tizen.Multimedia
                 {
                     task.SetResult(true);
                     return;
-                }; 
+                };
                 ret = Interop.Player.PrepareAsync(_playerHandle, cb, IntPtr.Zero);
-                if(ret != (int)PlayerError.None)
+                if (ret != (int)PlayerError.None)
                 {
                     task.SetResult(false);
                     Log.Error(PlayerLog.LogTag, "Failed to prepare player" + (PlayerError)ret);
@@ -500,12 +504,12 @@ namespace Tizen.Multimedia
         }
 
         /// <summary>
-        /// The most recently used media is reset and no longer associated with the player. Playback is no longer possible. 
+        /// The most recently used media is reset and no longer associated with the player. Playback is no longer possible.
         /// If you want to use the player again, you will have to set the data URI and call prepare() again. </summary>
         public void Unprepare()
         {
             int ret = Interop.Player.Unprepare(_playerHandle);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Failed to unprepare player" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Failed to unprepare player");
@@ -517,7 +521,7 @@ namespace Tizen.Multimedia
         public void Start()
         {
             int ret = Interop.Player.Start(_playerHandle);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Failed to start player" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Failed to start player");
@@ -529,7 +533,7 @@ namespace Tizen.Multimedia
         public void Stop()
         {
             int ret = Interop.Player.Stop(_playerHandle);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Failed to stop player" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Failed to stop player");
@@ -541,7 +545,7 @@ namespace Tizen.Multimedia
         public void Pause()
         {
             int ret = Interop.Player.Pause(_playerHandle);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Failed to pause player" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Failed to pause player");
@@ -554,25 +558,27 @@ namespace Tizen.Multimedia
         public void SetSource(MediaSource source)
         {
             int ret;
-            if(source.GetType() == typeof(MediaUriSource))
+            if (source.GetType() == typeof(MediaUriSource))
             {
                 ret = Interop.Player.SetUri(_playerHandle, ((MediaUriSource)source).GetUri());
-                if(ret != (int)PlayerError.None)
+                if (ret != (int)PlayerError.None)
                 {
                     Log.Error(PlayerLog.LogTag, "Failed to seturi" + (PlayerError)ret);
                     PlayerErrorFactory.ThrowException(ret, "Failed to set uri");
                 }
-            } else if(source.GetType() == typeof(MediaBufferSource))
+            }
+            else if (source.GetType() == typeof(MediaBufferSource))
             {
                 GCHandle pinnedArray = GCHandle.Alloc(((MediaBufferSource)source)._buffer, GCHandleType.Pinned);
                 IntPtr mem = pinnedArray.AddrOfPinnedObject();
                 ret = Interop.Player.SetMemoryBuffer(_playerHandle, mem, ((MediaBufferSource)source)._buffer.Length);
-                if(ret != (int)PlayerError.None)
+                if (ret != (int)PlayerError.None)
                 {
                     Log.Error(PlayerLog.LogTag, "Failed to set memory buffer" + (PlayerError)ret);
                     PlayerErrorFactory.ThrowException(ret, "Failed to set memory buffer");
                 }
-            } else if(source.GetType() == typeof(MediaStreamSource))
+            }
+            else if (source.GetType() == typeof(MediaStreamSource))
             {
                 // TODO: Handle MediaStream source after implementing MediaPacket module
                 ((MediaStreamSource)source).SetHandle(_playerHandle);
@@ -603,7 +609,7 @@ namespace Tizen.Multimedia
                     return;
                 };
                 int ret = Interop.Player.SetPlayPosition(_playerHandle, milliseconds, accurate, cb, IntPtr.Zero);
-                if(ret != (int)PlayerError.None)
+                if (ret != (int)PlayerError.None)
                 {
                     Log.Error(PlayerLog.LogTag, "Failed to set playposition" + (PlayerError)ret);
                     task.SetResult(false);
@@ -620,7 +626,7 @@ namespace Tizen.Multimedia
         public void SetPlaybackRate(float rate)
         {
             int ret = Interop.Player.SetPlaybackRate(_playerHandle, rate);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Set playback rate failed" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "set playback rate failed");
@@ -633,7 +639,7 @@ namespace Tizen.Multimedia
         public void SetAudioStreamPolicy(AudioStreamPolicy policy)
         {
             int ret = Interop.Player.SetAudioPolicyInfo(_playerHandle, policy.Handle);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Set Audio stream policy failed" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Set Audio stream policy failed");
@@ -642,13 +648,13 @@ namespace Tizen.Multimedia
 
         protected virtual void Dispose(bool disposing)
         {
-            if(!_disposed)
+            if (!_disposed)
             {
-                if(disposing)
+                if (disposing)
                 {
                     // To be used if there are any other disposable objects
                 }
-                if(_playerHandle != IntPtr.Zero)
+                if (_playerHandle != IntPtr.Zero)
                 {
                     Interop.Player.Destroy(_playerHandle);
                     _playerHandle = IntPtr.Zero;
@@ -665,7 +671,7 @@ namespace Tizen.Multimedia
                 _playbackCompleted?.Invoke(this, eventArgs);
             };
             int ret = Interop.Player.SetCompletedCb(_playerHandle, _playbackCompletedCallback, IntPtr.Zero);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Setting PlaybackCompleted callback failed" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Setting PlaybackCompleted callback failed");
@@ -676,7 +682,7 @@ namespace Tizen.Multimedia
         private void UnregisterPlaybackCompletedEvent()
         {
             int ret = Interop.Player.UnsetCompletedCb(_playerHandle);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Unsetting PlaybackCompleted callback failed" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Unsetting PlaybackCompleted callback failed");
@@ -692,7 +698,7 @@ namespace Tizen.Multimedia
                 _playbackInterrupted?.Invoke(this, eventArgs);
             };
             int ret = Interop.Player.SetInterruptedCb(_playerHandle, _playbackInterruptedCallback, IntPtr.Zero);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Setting PlaybackInterrupted callback failed" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Setting PlaybackInterrupted callback failed");
@@ -702,7 +708,7 @@ namespace Tizen.Multimedia
         private void UnregisterPlaybackInterruptedEvent()
         {
             int ret = Interop.Player.UnsetInterruptedCb(_playerHandle);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Unsetting PlaybackInterrupted callback failed" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Unsetting PlaybackInterrupted callback failed");
@@ -717,7 +723,7 @@ namespace Tizen.Multimedia
                 _playbackError?.Invoke(this, eventArgs);
             };
             int ret = Interop.Player.SetErrorCb(_playerHandle, _playbackErrorCallback, IntPtr.Zero);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Setting PlaybackError callback failed" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Setting PlaybackError callback failed");
@@ -728,7 +734,7 @@ namespace Tizen.Multimedia
         private void UnregisterPlaybackErrorEvent()
         {
             int ret = Interop.Player.UnsetErrorCb(_playerHandle);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Unsetting PlaybackError callback failed" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Unsetting PlaybackError callback failed");
@@ -746,7 +752,7 @@ namespace Tizen.Multimedia
             };
 
             int ret = Interop.Player.CaptureVideo(_playerHandle, cb, IntPtr.Zero);
-            if(ret != (int)PlayerError.None)
+            if (ret != (int)PlayerError.None)
             {
                 Log.Error(PlayerLog.LogTag, "Failed to capture video" + (PlayerError)ret);
                 PlayerErrorFactory.ThrowException(ret, "Failed to capture video");
@@ -756,7 +762,7 @@ namespace Tizen.Multimedia
 
 
 
-        #if _MEDIA_PACKET_
+#if _MEDIA_PACKET_
         //TODO: Uncomment this when MediaPacket is implemented
         private void RegisterVideoFrameDecodedEvent()
         {
@@ -772,7 +778,7 @@ namespace Tizen.Multimedia
         {
             Interop.Player.UnsetMediaPacketVideoFrameDecodedCb(_playerHandle);
         }
-        #endif
+#endif
 
     }
 }
index cfa5c4b..6dd285f 100644 (file)
@@ -1,4 +1,4 @@
-/// PlayerContentInfo
+/// PlayerContentInfo
 ///
 /// Copyright 2016 by Samsung Electronics, Inc.,
 ///
@@ -9,6 +9,7 @@
 /// you entered into with Samsung.
 
 using System;
+using System.Runtime.InteropServices;
 
 namespace Tizen.Multimedia
 {
@@ -21,11 +22,32 @@ namespace Tizen.Multimedia
 
     public class PlayerContentInfo
     {
-               internal IntPtr _playerHandle;
+        internal IntPtr _playerHandle;
 
-               internal PlayerContentInfo()
-               {
-               }
+        internal PlayerContentInfo()
+        {
+        }
+
+        private string GetContentInfo(ContentInfoKey key)
+        {
+            IntPtr ptr = IntPtr.Zero;
+
+            try
+            {
+                int ret = Interop.Player.GetContentInfo(_playerHandle, (int)key, out ptr);
+                if (ret != (int)PlayerError.None)
+                {
+                    Log.Error(PlayerLog.LogTag, "Failed to get album info" + (PlayerError)ret);
+                    return "";
+                }
+
+                return Marshal.PtrToStringAnsi(ptr);
+            }
+            finally
+            {
+                Interop.Libc.Free(ptr);
+            }
+        }
 
         /// <summary>
         /// Metadata - Album
@@ -35,13 +57,7 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               string album;
-                               int ret = Interop.Player.GetContentInfo(_playerHandle, (int)ContentInfoKey.Album, out album);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get album info" + (PlayerError)ret);
-                               }
-                return album;
+                return GetContentInfo(ContentInfoKey.Album);
             }
         }
 
@@ -53,14 +69,7 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               string artist;
-                               int ret = Interop.Player.GetContentInfo(_playerHandle, (int)ContentInfoKey.Artist, out artist);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get artist info" + (PlayerError)ret);
-                               }
-
-                               return artist;
+                return GetContentInfo(ContentInfoKey.Artist);
             }
         }
 
@@ -72,13 +81,7 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               string author;
-                               int ret = Interop.Player.GetContentInfo(_playerHandle, (int)ContentInfoKey.Author, out author);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get author info" + (PlayerError)ret);
-                               }
-                               return author;
+                return GetContentInfo(ContentInfoKey.Author);
             }
         }
 
@@ -90,14 +93,7 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               string genre;
-                               int ret = Interop.Player.GetContentInfo(_playerHandle, (int)ContentInfoKey.Genre, out genre);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get genre info" + (PlayerError)ret);
-                               }
-
-                               return genre;
+                return GetContentInfo(ContentInfoKey.Genre);
             }
         }
 
@@ -109,13 +105,7 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               string title;
-                               int ret = Interop.Player.GetContentInfo(_playerHandle, (int)ContentInfoKey.Title, out title);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get title info" + (PlayerError)ret);
-                               }
-                               return title;
+                return GetContentInfo(ContentInfoKey.Title);
             }
         }
 
@@ -127,13 +117,7 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               string year;
-                               int ret = Interop.Player.GetContentInfo(_playerHandle, (int)ContentInfoKey.Year, out year);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get title info" + (PlayerError)ret);
-                               }
-                               return year;
+                return GetContentInfo(ContentInfoKey.Year);
             }
         }
 
index 8f2144c..38179c8 100644 (file)
@@ -1,4 +1,4 @@
-/// Audio Stream Information
+/// Audio Stream Information
 ///
 /// Copyright 2016 by Samsung Electronics, Inc.,
 ///
@@ -24,37 +24,37 @@ namespace Tizen.Multimedia
     /// </remarks>
     public class StreamInformation
     {
-               internal IntPtr _playerHandle;
-               internal PlayerContentInfo _contentInfo;
+        internal IntPtr _playerHandle;
+        internal PlayerContentInfo _contentInfo;
 
-               internal StreamInformation()
-               {
-               }
+        internal StreamInformation()
+        {
+        }
 
         /// <summary>
         /// Get album art.
         /// </summary>
         /// <value> byte[] </value>
-        public byte[] AlbumArt 
+        public byte[] AlbumArt
         {
-            get 
+            get
             {
-                               int ret, size;
-                               IntPtr art;
-                               ret = Interop.Player.GetAlbumArt(_playerHandle, out art, out size);
-                               if(ret != (int)PlayerError.None)
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get album art" + (PlayerError)ret);
-                                       Console.WriteLine("GetAlbumArt() failed " + ret);
-                               }
-                               else
-                               {
-                                       byte[] albumArt;
-                                       albumArt = new byte[size];
-                                       Marshal.Copy(art, albumArt, 0, size);
-                                       return albumArt;
-                               }
-                               return null;
+                int ret, size;
+                IntPtr art;
+                ret = Interop.Player.GetAlbumArt(_playerHandle, out art, out size);
+                if (ret != (int)PlayerError.None)
+                {
+                    Log.Error(PlayerLog.LogTag, "Failed to get album art" + (PlayerError)ret);
+                    Console.WriteLine("GetAlbumArt() failed " + ret);
+                }
+                else
+                {
+                    byte[] albumArt;
+                    albumArt = new byte[size];
+                    Marshal.Copy(art, albumArt, 0, size);
+                    return albumArt;
+                }
+                return null;
             }
         }
 
@@ -62,17 +62,26 @@ namespace Tizen.Multimedia
         /// Get AudioCodec.
         /// </summary>
         /// <value> AudioCodec string </value>
-        public string AudioCodec 
+        public string AudioCodec
         {
             get
             {
-                               string audioCodec, videoCodec;
-                               int ret = Interop.Player.GetCodecInfo(_playerHandle, out audioCodec, out videoCodec);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get codec info" + (PlayerError)ret);
-                               }
-                               return audioCodec;
+                IntPtr audioCodec = IntPtr.Zero, videoCodec = IntPtr.Zero;
+                try
+                {
+                    int ret = Interop.Player.GetCodecInfo(_playerHandle, out audioCodec, out videoCodec);
+                    if (ret != (int)PlayerError.None)
+                    {
+                        Log.Error(PlayerLog.LogTag, "Failed to get codec info" + (PlayerError)ret);
+                    }
+
+                    return Marshal.PtrToStringAnsi(audioCodec);
+                }
+                finally
+                {
+                    Interop.Libc.Free(audioCodec);
+                    Interop.Libc.Free(videoCodec);
+                }
             }
         }
 
@@ -80,16 +89,16 @@ namespace Tizen.Multimedia
         /// Get Duration.
         /// </summary>
         /// <value> duration in milliseconds </value>
-        public int Duration 
+        public int Duration
         {
             get
             {
-                               int duration;
-                               int ret = Interop.Player.GetDuration(_playerHandle, out duration);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get duration info" + (PlayerError)ret);
-                               }
+                int duration;
+                int ret = Interop.Player.GetDuration(_playerHandle, out duration);
+                if (ret != (int)PlayerError.None)
+                {
+                    Log.Error(PlayerLog.LogTag, "Failed to get duration info" + (PlayerError)ret);
+                }
                 return duration;
             }
         }
@@ -98,17 +107,17 @@ namespace Tizen.Multimedia
         /// Get Sample rate.
         /// </summary>
         /// <value> The audio sample rate [Hz]  </value>
-        public int AudioSampleRate 
+        public int AudioSampleRate
         {
             get
             {
-                               int sampleRate, channels, bitRate;
-                               int ret = Interop.Player.GetAudioStreamInfo(_playerHandle, out sampleRate, out channels, out bitRate);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get audio stream info" + (PlayerError)ret);
-                               }
-                               return sampleRate;
+                int sampleRate, channels, bitRate;
+                int ret = Interop.Player.GetAudioStreamInfo(_playerHandle, out sampleRate, out channels, out bitRate);
+                if (ret != (int)PlayerError.None)
+                {
+                    Log.Error(PlayerLog.LogTag, "Failed to get audio stream info" + (PlayerError)ret);
+                }
+                return sampleRate;
             }
         }
 
@@ -116,17 +125,17 @@ namespace Tizen.Multimedia
         /// Channels
         /// </summary>
         /// <value>  The audio channels </value>
-        public int AudioChannels 
+        public int AudioChannels
         {
             get
             {
-                               int sampleRate, channels, bitRate;
-                               int ret = Interop.Player.GetAudioStreamInfo(_playerHandle, out sampleRate, out channels, out bitRate);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get audio channels info" + (PlayerError)ret);
-                               }
-                               return channels;
+                int sampleRate, channels, bitRate;
+                int ret = Interop.Player.GetAudioStreamInfo(_playerHandle, out sampleRate, out channels, out bitRate);
+                if (ret != (int)PlayerError.None)
+                {
+                    Log.Error(PlayerLog.LogTag, "Failed to get audio channels info" + (PlayerError)ret);
+                }
+                return channels;
             }
         }
 
@@ -138,13 +147,13 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               int sampleRate, channels, bitRate;
-                               int ret = Interop.Player.GetAudioStreamInfo(_playerHandle, out sampleRate, out channels, out bitRate);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get audio bitrate info" + (PlayerError)ret);
-                               }
-                               return bitRate;
+                int sampleRate, channels, bitRate;
+                int ret = Interop.Player.GetAudioStreamInfo(_playerHandle, out sampleRate, out channels, out bitRate);
+                if (ret != (int)PlayerError.None)
+                {
+                    Log.Error(PlayerLog.LogTag, "Failed to get audio bitrate info" + (PlayerError)ret);
+                }
+                return bitRate;
             }
         }
 
@@ -157,13 +166,21 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               string audioCodec, videoCodec;
-                               int ret = Interop.Player.GetCodecInfo(_playerHandle, out audioCodec, out videoCodec);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get video codec info" + (PlayerError)ret);
-                               }
-                               return videoCodec;
+                IntPtr audioCodec = IntPtr.Zero, videoCodec = IntPtr.Zero;
+                try
+                {
+                    int ret = Interop.Player.GetCodecInfo(_playerHandle, out audioCodec, out videoCodec);
+                    if (ret != (int)PlayerError.None)
+                    {
+                        Log.Error(PlayerLog.LogTag, "Failed to get codec info" + (PlayerError)ret);
+                    }
+                    return Marshal.PtrToStringAnsi(videoCodec);
+                }
+                finally
+                {
+                    Interop.Libc.Free(audioCodec);
+                    Interop.Libc.Free(videoCodec);
+                }
             }
         }
 
@@ -175,13 +192,13 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               int fps, bitRate;
-                               int ret = Interop.Player.GetVideoStreamInfo(_playerHandle, out fps, out bitRate);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get video fps info" + (PlayerError)ret);
-                               }
-                               return fps;
+                int fps, bitRate;
+                int ret = Interop.Player.GetVideoStreamInfo(_playerHandle, out fps, out bitRate);
+                if (ret != (int)PlayerError.None)
+                {
+                    Log.Error(PlayerLog.LogTag, "Failed to get video fps info" + (PlayerError)ret);
+                }
+                return fps;
             }
         }
 
@@ -193,13 +210,13 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               int fps, bitRate;
-                               int ret = Interop.Player.GetVideoStreamInfo(_playerHandle, out fps, out bitRate);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get video bitrate info" + (PlayerError)ret);
-                               }
-                               return bitRate;
+                int fps, bitRate;
+                int ret = Interop.Player.GetVideoStreamInfo(_playerHandle, out fps, out bitRate);
+                if (ret != (int)PlayerError.None)
+                {
+                    Log.Error(PlayerLog.LogTag, "Failed to get video bitrate info" + (PlayerError)ret);
+                }
+                return bitRate;
             }
         }
 
@@ -211,13 +228,13 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               int height, width;
-                               int ret = Interop.Player.GetVideoSize(_playerHandle, out width, out height);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get video height" + (PlayerError)ret);
-                               }
-                               return height;
+                int height, width;
+                int ret = Interop.Player.GetVideoSize(_playerHandle, out width, out height);
+                if (ret != (int)PlayerError.None)
+                {
+                    Log.Error(PlayerLog.LogTag, "Failed to get video height" + (PlayerError)ret);
+                }
+                return height;
             }
         }
 
@@ -229,13 +246,13 @@ namespace Tizen.Multimedia
         {
             get
             {
-                               int height, width;
-                               int ret = Interop.Player.GetVideoSize(_playerHandle, out width, out height);
-                               if(ret != (int)PlayerError.None) 
-                               {
-                                       Log.Error(PlayerLog.LogTag, "Failed to get video width" + (PlayerError)ret);
-                               }
-                               return width;
+                int height, width;
+                int ret = Interop.Player.GetVideoSize(_playerHandle, out width, out height);
+                if (ret != (int)PlayerError.None)
+                {
+                    Log.Error(PlayerLog.LogTag, "Failed to get video width" + (PlayerError)ret);
+                }
+                return width;
             }
         }
 
@@ -252,4 +269,4 @@ namespace Tizen.Multimedia
         }
 
     }
-}
\ No newline at end of file
+}