2 using System.Runtime.InteropServices;
4 namespace Tizen.Multimedia
6 internal static partial class Interop
8 internal static class MediaCodec
10 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
11 internal delegate void InputBufferUsedCallback(IntPtr mediaPacket, IntPtr arg);
13 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
14 internal delegate void OutputBufferAvailableCallback(IntPtr mediaPacket, IntPtr arg);
16 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
17 internal delegate void ErrorCallback(int errorCode, IntPtr arg);
19 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
20 internal delegate void EosCallback(IntPtr arg);
22 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
23 internal delegate void BufferStatusCallback(int statusCode, IntPtr arg);
25 [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
26 internal delegate bool SupportedCodecCallback(int codecType, IntPtr arg);
28 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_create")]
29 internal static extern int Create(out IntPtr handle);
31 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_destroy")]
32 internal static extern int Destroy(IntPtr handle);
34 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_codec")]
35 internal static extern int Configure(IntPtr handle, int codecType, int flags);
37 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_vdec_info")]
38 internal static extern int SetVideoDecoderInfo(IntPtr handle, int width, int height);
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);
44 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_adec_info")]
45 internal static extern int SetAudioDecoderInfo(IntPtr handle, int sampleRate, int channel,
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);
52 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_prepare")]
53 internal static extern int Prepare(IntPtr handle);
55 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unprepare")]
56 internal static extern int Unprepare(IntPtr handle);
58 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_process_input")]
59 internal static extern int Process(IntPtr handle, IntPtr mediaPacket, ulong timeoutInUs);
61 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_get_output")]
62 internal static extern int GetOutput(IntPtr handle, out IntPtr packet, ulong timeoutInUs);
64 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_flush_buffers")]
65 internal static extern int FlushBuffers(IntPtr handle);
67 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_input_buffer_used_cb")]
68 internal static extern int SetInputBufferUsedCb(IntPtr handle,
69 InputBufferUsedCallback cb, IntPtr arg);
71 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unset_input_buffer_used_cb")]
72 internal static extern int UnsetInputBufferUsedCb(IntPtr handle);
74 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_output_buffer_available_cb")]
75 internal static extern int SetOutputBufferAvaiableCb(IntPtr handle,
76 OutputBufferAvailableCallback cb, IntPtr arg);
78 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unset_output_buffer_available_cb")]
79 internal static extern int UnsetOutputBufferAvaiableCb(IntPtr handle);
81 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_error_cb")]
82 internal static extern int SetErrorCb(IntPtr handle, ErrorCallback cb, IntPtr arg);
84 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unset_error_cb")]
85 internal static extern int UnsetErrorCb(IntPtr handle);
87 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_eos_cb")]
88 internal static extern int SetEosCb(IntPtr handle, EosCallback cb, IntPtr arg);
90 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unset_eos_cb")]
91 internal static extern int UnsetEosCb(IntPtr handle);
93 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_set_buffer_status_cb")]
94 internal static extern int SetBufferStatusCb(IntPtr handle, BufferStatusCallback cb,
97 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_unset_buffer_status_cb")]
98 internal static extern int UnsetBufferStatusCb(IntPtr handle);
100 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_get_supported_type")]
101 internal static extern int GetSupportedType(IntPtr handle, int codecType, bool isEncoder,
104 [DllImport(Libraries.MediaCodec, EntryPoint = "mediacodec_foreach_supported_codec_static")]
105 internal static extern int ForeachSupportedCodec(SupportedCodecCallback cb, IntPtr arg);