#endif
#endif
-
/* #define DEBUG_ALLOC */
#define DO_EVENTS
switch_media_handle_t *media_handle;
uint32_t decoder_errors;
+ switch_core_video_thread_callback_func_t *video_read_callback;
+ void *video_read_user_data;
switch_slin_data_t *sdata;
};
*/
SWITCH_DECLARE(uint8_t) switch_core_session_check_interface(switch_core_session_t *session, const switch_endpoint_interface_t *endpoint_interface);
+SWITCH_DECLARE(switch_status_t) switch_core_session_set_video_read_callback(switch_core_session_t *session,
+ switch_core_video_thread_callback_func_t func, void *user_data);
+
+SWITCH_DECLARE(switch_status_t) switch_core_session_video_read_callback(switch_core_session_t *session, switch_frame_t *frame);
+
SWITCH_DECLARE(switch_hash_index_t *) switch_core_mime_index(void);
SWITCH_DECLARE(const char *) switch_core_mime_ext2type(const char *ext);
SWITCH_DECLARE(const char *) switch_core_mime_type2ext(const char *type);
typedef void (*switch_media_bug_exec_cb_t)(switch_media_bug_t *bug, void *user_data);
+typedef switch_status_t (switch_core_video_thread_callback_func_t) (switch_core_session_t *session, switch_frame_t *frame, void *user_data);
typedef void (*switch_cap_callback_t) (const char *var, const char *val, void *user_data);
typedef switch_status_t (*switch_console_complete_callback_t) (const char *, const char *, switch_console_callback_match_t **matches);
typedef switch_bool_t (*switch_media_bug_callback_t) (switch_media_bug_t *, void *, switch_abc_type_t);
done:
+ if (status == SWITCH_STATUS_SUCCESS) {
+ switch_core_session_video_read_callback(session, *frame);
+ }
+
return status;
}
}
+SWITCH_DECLARE(switch_status_t) switch_core_session_set_video_read_callback(switch_core_session_t *session,
+ switch_core_video_thread_callback_func_t func, void *user_data)
+{
+ if (!func) {
+ session->video_read_callback = NULL;
+ session->video_read_user_data = NULL;
+ return SWITCH_STATUS_SUCCESS;
+ } else if (session->video_read_callback) {
+ return SWITCH_STATUS_FALSE;
+ } else {
+ session->video_read_callback = func;
+ session->video_read_user_data = user_data;
+ return SWITCH_STATUS_SUCCESS;
+ }
+}
+
+SWITCH_DECLARE(switch_status_t) switch_core_session_video_read_callback(switch_core_session_t *session, switch_frame_t *frame)
+{
+ if (session->video_read_callback) {
+ return session->video_read_callback(session, frame, session->video_read_user_data);
+ }
+
+ return SWITCH_STATUS_CONTINUE;
+}
+
/* For Emacs:
* Local Variables:
* mode:c