Change muxer avmux_mp4 to avimux
[platform/core/multimedia/libmm-streamrecorder.git] / src / mm_streamrecorder.c
1 /*
2  * libmm-streamrecorder
3  *
4  * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Hyuntae Kim <ht1211.kim@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21
22 /* ==============================================================================
23 |  INCLUDE FILES                                                                |
24 ===============================================================================*/
25 #include <stdio.h>
26 #include <string.h>
27
28 #include <mm_error.h>
29
30 #include "mm_streamrecorder.h"
31 #include "mm_streamrecorder_internal.h"
32 #include "mm_streamrecorder_attribute.h"
33
34 /*===============================================================================
35 |  FUNCTION DEFINITIONS                                                         |
36 ===============================================================================*/
37 /*-------------------------------------------------------------------------------
38 |    GLOBAL FUNCTION DEFINITIONS:                                               |
39 -------------------------------------------------------------------------------*/
40 int mm_streamrecorder_create(MMHandleType *streamrecorder)
41 {
42         int error = MM_ERROR_NONE;
43
44         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
45
46         _mmstreamrec_dbg_log("");
47
48         error = _mmstreamrecorder_create(streamrecorder);
49
50         _mmstreamrec_dbg_log("END");
51
52         return error;
53 }
54
55
56 int mm_streamrecorder_get_state(MMHandleType streamrecorder, MMStreamRecorderStateType *status)
57 {
58         int ret = MM_ERROR_NONE;
59
60         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
61
62         mmf_return_val_if_fail((void *)status, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
63
64         _mmstreamrec_dbg_err("");
65
66         *status = _mmstreamrecorder_get_state(streamrecorder);
67
68         return ret;
69
70 }
71
72 int mm_streamrecorder_destroy(MMHandleType streamrecorder)
73 {
74         int error = MM_ERROR_NONE;
75
76         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
77
78         _mmstreamrec_dbg_log("");
79
80         error = _mmstreamrecorder_destroy(streamrecorder);
81
82         _mmstreamrec_dbg_log("END!!!");
83
84         return error;
85 }
86
87 int mm_streamrecorder_realize(MMHandleType streamrecorder)
88 {
89         int error = MM_ERROR_NONE;
90
91         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
92
93         _mmstreamrec_dbg_log("");
94
95         error = _mmstreamrecorder_realize(streamrecorder);
96
97         _mmstreamrec_dbg_log("END");
98
99         return error;
100 }
101
102 int mm_streamrecorder_pause(MMHandleType streamrecorder)
103 {
104         int error = MM_ERROR_NONE;
105
106         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
107
108         _mmstreamrec_dbg_err("");
109
110         error = _mmstreamrecorder_pause(streamrecorder);
111
112         _mmstreamrec_dbg_err("END");
113
114         return error;
115 }
116
117
118 int mm_streamrecorder_unrealize(MMHandleType streamrecorder)
119 {
120         int error = MM_ERROR_NONE;
121
122         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
123
124         _mmstreamrec_dbg_log("");
125
126         error = _mmstreamrecorder_unrealize(streamrecorder);
127
128         _mmstreamrec_dbg_log("END");
129
130         return error;
131 }
132
133 int mm_streamrecorder_record(MMHandleType streamrecorder)
134 {
135         int error = MM_ERROR_NONE;
136
137         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
138
139         _mmstreamrec_dbg_log("");
140
141         error = _mmstreamrecorder_record(streamrecorder);
142
143         _mmstreamrec_dbg_log("END");
144
145         return error;
146 }
147
148 int mm_streamrecorder_push_stream_buffer(MMHandleType streamrecorder, MMStreamRecorderStreamType streamtype, unsigned long long timestamp, void *buffer, int size)
149 {
150         int error = MM_ERROR_NONE;
151
152         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
153
154         _mmstreamrec_dbg_log("");
155
156         error = _mmstreamrecorder_push_stream_buffer(streamrecorder, streamtype, timestamp, buffer, size);
157
158         _mmstreamrec_dbg_log("END");
159
160         return error;
161 }
162
163 int mm_streamrecorder_push_video_packet(MMHandleType streamrecorder, media_packet_h packet, unsigned long long timestamp, void *buffer)
164 {
165         int error = MM_ERROR_NONE;
166
167         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
168
169         _mmstreamrec_dbg_log("");
170
171         error = _mmstreamrecorder_push_video_packet(streamrecorder, packet, timestamp, buffer);
172
173         _mmstreamrec_dbg_log("END");
174
175         return error;
176 }
177
178
179 int mm_streamrecorder_commit(MMHandleType streamrecorder)
180 {
181         int error = MM_ERROR_NONE;
182
183         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
184
185         _mmstreamrec_dbg_log("");
186
187         error = _mmstreamrecorder_commit(streamrecorder);
188
189         _mmstreamrec_dbg_log("END");
190
191         return error;
192 }
193
194 int mm_streamrecorder_cancel(MMHandleType streamrecorder)
195 {
196         int error = MM_ERROR_NONE;
197
198         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
199
200         _mmstreamrec_dbg_log("");
201
202         error = _mmstreamrecorder_cancel(streamrecorder);
203
204         _mmstreamrec_dbg_log("END");
205
206         return error;
207 }
208
209 int mm_streamrecorder_set_message_callback(MMHandleType streamrecorder, MMMessageCallback callback, void *user_data)
210 {
211         int error = MM_ERROR_NONE;
212
213         mmf_return_val_if_fail((void *)streamrecorder, MM_ERROR_STREAMRECORDER_INVALID_ARGUMENT);
214
215         error = _mmstreamrecorder_set_message_callback(streamrecorder, callback, user_data);
216
217         return error;
218 }
219
220 int mm_streamrecorder_get_attributes(MMHandleType streamrecorder, char **err_attr_name, const char *attribute_name, ...)
221 {
222         va_list var_args;
223         int ret = MM_ERROR_NONE;
224
225         return_val_if_fail(attribute_name, MM_ERROR_COMMON_INVALID_ARGUMENT);
226
227         va_start(var_args, attribute_name);
228         ret = _mmstreamrecorder_get_attributes(streamrecorder, err_attr_name, attribute_name, var_args);
229         va_end(var_args);
230
231         return ret;
232 }
233
234 int mm_streamrecorder_set_attributes(MMHandleType streamrecorder, char **err_attr_name, const char *attribute_name, ...)
235 {
236         va_list var_args;
237         int ret = MM_ERROR_NONE;
238
239         return_val_if_fail(attribute_name, MM_ERROR_COMMON_INVALID_ARGUMENT);
240
241         va_start(var_args, attribute_name);
242         ret = _mmstreamrecorder_set_attributes(streamrecorder, err_attr_name, attribute_name, var_args);
243         va_end(var_args);
244
245         return ret;
246 }
247
248 int mm_streamrecorder_get_attribute_info(MMHandleType streamrecorder, const char *attribute_name, MMStreamRecorderAttrsInfo * info)
249 {
250         return _mmstreamrecorder_get_attribute_info(streamrecorder, attribute_name, info);
251 }