2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef __TIZEN_MEDIA_CODEC_PRIVATE_H__
18 #define __TIZEN_MEDIA_CODEC_PRIVATE_H__
24 #include <media_codec.h>
27 #include <mm_resource_manager.h>
36 #define LOG_TAG "TIZEN_N_MEDIACODEC"
39 #define MEDIACODEC_CHECK_CONDITION(condition, error, msg) \
40 if (!(condition)) {LOGE("%s(0x%08x)", msg, error); return error; }
42 #define MEDIACODEC_INSTANCE_CHECK(mediacodec) \
43 MEDIACODEC_CHECK_CONDITION(mediacodec != NULL, MEDIACODEC_ERROR_INVALID_PARAMETER, "MEDIACODEC_ERROR_INVALID_PARAMETER")
45 #define MEDIACODEC_STATE_CHECK(mediacodec, expected_state) \
46 MEDIACODEC_CHECK_CONDITION(mediacodec->state == expected_state, MEDIACODEC_ERROR_INVALID_STATE, "MEDIACODEC_ERROR_INVALID_STATE")
48 #define MEDIACODEC_NULL_ARG_CHECK(arg) \
49 MEDIACODEC_CHECK_CONDITION(arg != NULL, MEDIACODEC_ERROR_INVALID_PARAMETER, "MEDIACODEC_ERROR_INVALID_PARAMETER")
51 #define MEDIACODEC_SUPPORT_CHECK(arg) \
52 MEDIACODEC_CHECK_CONDITION(arg != false, MEDIACODEC_ERROR_NOT_SUPPORTED_ON_DEVICE, "MEDIACODEC_ERROR_NOT_SUPPORTED_ON_DEVICE")
54 * @brief Enumeration of media codec state
58 MEDIACODEC_STATE_NONE = 0, /**< Media codec is not created */
59 MEDIACODEC_STATE_IDLE, /**< Media codec is created, but not prepared */
60 MEDIACODEC_STATE_READY, /**< Media codec is ready to process */
61 MEDIACODEC_STATE_EXCUTE, /**< Media codec is executing media */
65 MEDIACODEC_SUPPORT_TYPE_OMX = 0x10, /**< This is optional flag for using openmax il */
66 MEDIACODEC_SUPPORT_TYPE_GEN = 0x20 /**< This is optional flag for using general codec */
67 } mediacodec_internal_support_type_e;
70 MEDIACODEC_PORT_TYPE_GENERAL,
71 MEDIACODEC_PORT_TYPE_OMX,
72 MEDIACODEC_PORT_TYPE_GST,
73 MEDIACODEC_PORT_TYPE_MAX,
74 } mediacodec_port_type_e;
77 * @brief Media Codec's format for configuring codec.
79 typedef struct _mediacodecformat_s {
94 /* Codec Extra Data */
96 unsigned int extrasize;
97 } mediacodec_format_s;
99 typedef struct _mediacodec_s {
100 MMHandleType mc_handle;
104 mm_resource_manager_res_h codec_resource;
106 mediacodec_input_buffer_used_cb empty_buffer_cb;
107 void* empty_buffer_cb_userdata;
108 mediacodec_output_buffer_available_cb fill_buffer_cb;
109 void* fill_buffer_cb_userdata;
110 mediacodec_error_cb error_cb;
111 void* error_cb_userdata;
112 mediacodec_eos_cb eos_cb;
113 void* eos_cb_userdata;
114 mediacodec_buffer_status_cb buffer_status_cb;
115 void* buffer_status_cb_userdata;
116 mediacodec_supported_codec_cb supported_codec_cb;
117 void* supported_codec_cb_userdata;
120 bool __mediacodec_state_validate(mediacodec_h mediacodec, mediacodec_state_e threshold);
126 #endif /* __TIZEN_MEDIA_CODEC_PRIVATE_H__ */