[MediaTool] Change pinvoke method (#2975)
authorhsgwon <haesu.gwon@samsung.com>
Fri, 30 Apr 2021 06:25:50 +0000 (15:25 +0900)
committerGitHub <noreply@github.com>
Fri, 30 Apr 2021 06:25:50 +0000 (15:25 +0900)
* [MediaTool] Change pinvoke method
* [MediaTool] Changed AudioChannelMap get logic

src/Tizen.Multimedia/Interop/Interop.MediaTool.cs
src/Tizen.Multimedia/MediaTool/AudioMediaFormat.cs

index 3174f1499cb567cd4021e39486bcbb5b03c8c0b3..2eba43e0f6ca00f2178d0e0a6f66cbf07224fa3e 100644 (file)
@@ -188,7 +188,7 @@ namespace Tizen.Multimedia
 
             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_channel_positions_from_mask")]
             internal static extern int GetChannelPositionFromMask(IntPtr handle, ulong mask,
-                out MediaFormatAudioChannelPosition[] position);
+                ref MediaFormatAudioChannelPosition[] position);
 
             [DllImport(Libraries.MediaTool, EntryPoint = "media_format_channel_positions_to_mask")]
             internal static extern int GetMaskFromChannelPosition(IntPtr handle,
index 845f3f76a359d2dde16695d5e16c385919e0fa71..bac2b431fc9790dd06d6ce58fe2f6e3957097dc7 100644 (file)
@@ -261,7 +261,7 @@ namespace Tizen.Multimedia
             Bit = bit;
             BitRate = bitRate;
             AacType = IsAacSupportedMimeType(mimeType) ? GetAacType(handle) : MediaFormatAacType.None;
-            AudioChannelMap = GetAudioChannelMap(handle);
+            AudioChannelMap = Channel == 0 ? null : GetAudioChannelMap(handle);
         }
 
         private static ReadOnlyCollection<MediaFormatAudioChannelPosition> GetAudioChannelMap(IntPtr handle)
@@ -269,7 +269,9 @@ namespace Tizen.Multimedia
             var ret = Native.GetAudioChannelMask(handle, out ulong mask);
             MultimediaDebug.AssertNoError(ret);
 
-            ret = Native.GetChannelPositionFromMask(handle, mask, out MediaFormatAudioChannelPosition[] positions);
+            var positions = new MediaFormatAudioChannelPosition[Enum.GetNames(typeof(MediaFormatAudioChannelPosition)).Length];
+
+            ret = Native.GetChannelPositionFromMask(handle, mask, ref positions);
             MultimediaDebug.AssertNoError(ret);
 
             return positions == null ? null :