f3555ea789f546df0b4ac638e0567b274dab10f6
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia / Interop / Interop.MediaCodec.cs
1 using System;
2 using System.Runtime.InteropServices;
3
4 namespace Tizen.Multimedia
5 {
6     internal static partial class Interop
7     {
8         internal static class MediaCodec
9         {
10             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
11             internal delegate void InputBufferUsedCallback(IntPtr mediaPacket, IntPtr arg);
12
13             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
14             internal delegate void OutputBufferAvailableCallback(IntPtr mediaPacket, IntPtr arg);
15
16             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
17             internal delegate void ErrorCallback(int errorCode, IntPtr arg);
18
19             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
20             internal delegate void EosCallback(IntPtr arg);
21
22             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
23             internal delegate void BufferStatusCallback(int statusCode, IntPtr arg);
24
25             [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
26             internal delegate bool SupportedCodecCallback(int codecType, IntPtr arg);
27
28             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_create")]
29             internal static extern int Create(out IntPtr handle);
30
31             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_destroy")]
32             internal static extern int Destroy(IntPtr handle);
33
34             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_codec")]
35             internal static extern int Configure(IntPtr handle, int codecType, int flags);
36
37             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_vdec_info")]
38             internal static extern int SetVideoDecoderInfo(IntPtr handle, int width, int height);
39
40             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_venc_info")]
41             internal static extern int SetVideoEncoderInfo(IntPtr handle, int width, int height,
42                 int fps, int targetBits);
43
44             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_adec_info")]
45             internal static extern int SetAudioDecoderInfo(IntPtr handle, int sampleRate, int channel,
46                 int bit);
47
48             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_aenc_info")]
49             internal static extern int SetAudioEncoderInfo(IntPtr handle, int sampleRate, int channel,
50                 int bit, int bitRate);
51
52             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_prepare")]
53             internal static extern int Prepare(IntPtr handle);
54
55             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unprepare")]
56             internal static extern int Unprepare(IntPtr handle);
57
58             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_process_input")]
59             internal static extern int Process(IntPtr handle, IntPtr mediaPacket, ulong timeoutInUs);
60
61             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_get_output")]
62             internal static extern int GetOutput(IntPtr handle, out IntPtr packet, ulong timeoutInUs);
63
64             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_flush_buffers")]
65             internal static extern int FlushBuffers(IntPtr handle);
66
67             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_input_buffer_used_cb")]
68             internal static extern int SetInputBufferUsedCb(IntPtr handle,
69                 InputBufferUsedCallback cb, IntPtr arg);
70
71             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unset_input_buffer_used_cb")]
72             internal static extern int UnsetInputBufferUsedCb(IntPtr handle);
73
74             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_output_buffer_available_cb")]
75             internal static extern int SetOutputBufferAvaiableCb(IntPtr handle,
76                 OutputBufferAvailableCallback cb, IntPtr arg);
77
78             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unset_output_buffer_available_cb")]
79             internal static extern int UnsetOutputBufferAvaiableCb(IntPtr handle);
80
81             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_error_cb")]
82             internal static extern int SetErrorCb(IntPtr handle, ErrorCallback cb, IntPtr arg);
83
84             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unset_error_cb")]
85             internal static extern int UnsetErrorCb(IntPtr handle);
86
87             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_eos_cb")]
88             internal static extern int SetEosCb(IntPtr handle, EosCallback cb, IntPtr arg);
89
90             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unset_eos_cb")]
91             internal static extern int UnsetEosCb(IntPtr handle);
92
93             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_buffer_status_cb")]
94             internal static extern int SetBufferStatusCb(IntPtr handle, BufferStatusCallback cb,
95                 IntPtr arg);
96
97             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unset_buffer_status_cb")]
98             internal static extern int UnsetBufferStatusCb(IntPtr handle);
99
100             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_get_supported_type")]
101             internal static extern int GetSupportedType(IntPtr handle, int codecType, bool isEncoder,
102                 out int value);
103
104             [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_foreach_supported_codec_static")]
105             internal static extern int ForeachSupportedCodec(SupportedCodecCallback cb, IntPtr arg);
106         }
107     }
108 }