#define MMPLAYER_FREEIF(x) \
do { \
- if (x) { \
- g_free(x); \
- x = NULL; \
- } \
+ g_clear_pointer(&x, g_free); \
} while (0)
#define MMPLAYER_GET_ATTRS(x_player) ((mmplayer_t *)x_player)->attrs
/* command */
-#define MMPLAYER_CMD_LOCK(x_player) g_mutex_lock(&((mmplayer_t *)x_player)->cmd_lock)
-#define MMPLAYER_CMD_TRYLOCK(x_player) g_mutex_trylock(&((mmplayer_t *)x_player)->cmd_lock)
-#define MMPLAYER_CMD_UNLOCK(x_player) g_mutex_unlock(&((mmplayer_t *)x_player)->cmd_lock)
+#define MMPLAYER_CMD_LOCK_INIT(x_player) _mmplayer_cmd_lock_init((mmplayer_t *)x_player)
+#define MMPLAYER_CMD_LOCK(x_player) _mmplayer_cmd_lock((mmplayer_t *)x_player)
+#define MMPLAYER_CMD_TRYLOCK(x_player) _mmplayer_cmd_trylock((mmplayer_t *)x_player)
+#define MMPLAYER_CMD_UNLOCK(x_player) _mmplayer_cmd_unlock((mmplayer_t *)x_player)
+#define MMPLAYER_CMD_LOCK_DEINIT(x_player) _mmplayer_cmd_lock_deinit((mmplayer_t *)x_player)
/* pipeline reconfigure */
#define MMPLAYER_RECONFIGURE_LOCK(x_player) g_mutex_lock(&((mmplayer_t *)x_player)->reconfigure_lock)
#define MMPLAYER_BUS_MSG_THREAD_WAIT_UNTIL(x_player, end_time) g_cond_wait_until(&((mmplayer_t *)x_player)->bus_msg_thread_cond, &((mmplayer_t *)x_player)->bus_msg_thread_mutex, end_time)
#define MMPLAYER_BUS_MSG_THREAD_SIGNAL(x_player) g_cond_signal(&((mmplayer_t *)x_player)->bus_msg_thread_cond);
+/* gst bus watcher thread */
+#define MMPLAYER_BUS_WATCHER_LOCK(x_player) g_mutex_lock(&((mmplayer_t *)x_player)->bus_watcher_mutex)
+#define MMPLAYER_BUS_WATCHER_UNLOCK(x_player) g_mutex_unlock(&((mmplayer_t *)x_player)->bus_watcher_mutex)
+#define MMPLAYER_BUS_WATCHER_WAIT_UNTIL(x_player, end_time) g_cond_wait_until(&((mmplayer_t *)x_player)->bus_watcher_cond, &((mmplayer_t *)x_player)->bus_watcher_mutex, end_time)
+#define MMPLAYER_BUS_WATCHER_SIGNAL(x_player) g_cond_signal(&((mmplayer_t *)x_player)->bus_watcher_cond);
+
/* handling fakesink */
#define MMPLAYER_FSINK_LOCK(x_player) g_mutex_lock(&((mmplayer_t *)x_player)->fsink_lock)
#define MMPLAYER_FSINK_UNLOCK(x_player) g_mutex_unlock(&((mmplayer_t *)x_player)->fsink_lock)
#define MMPLAYER_GENERATE_DOT_IF_ENABLED(x_player, x_name) \
do { \
if (x_player->ini.generate_dot) { \
- GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst), \
+ GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS(GST_BIN(player->pipeline->mainbin[MMPLAYER_M_PIPE].gst), \
GST_DEBUG_GRAPH_SHOW_ALL, x_name); \
} \
} while (0)
#define MMPLAYER_IS_LIVE_STREAMING(x_player) _mmplayer_is_live_streaming(x_player)
#define MMPLAYER_IS_DASH_STREAMING(x_player) _mmplayer_is_dash_streaming(x_player)
#define MMPLAYER_IS_SMOOTH_STREAMING(x_player) _mmplayer_is_smooth_streaming(x_player)
+#define MMPLAYER_IS_ADAPTIVE_STREAMING(x_player) _mmplayer_is_adaptive_streaming(x_player)
#define MMPLAYER_IS_MS_BUFF_SRC(x_player) _mmplayer_is_ms_buff_src(x_player)
#define MMPLAYER_URL_HAS_DASH_SUFFIX(x_player) _mmplayer_has_suffix(x_player, ".mpd")
#define MMPLAYER_STREAM_TYPE_GET_NAME(type) _mmplayer_get_stream_type_name(type)
+#define MMPLAYER_USE_DECODEBIN(x_player) _mmplayer_use_decodebin(x_player)
+
/*===========================================================================================
| |
| GLOBAL FUNCTION PROTOTYPES |
gboolean _mmplayer_is_http_live_streaming(mmplayer_t *player);
gboolean _mmplayer_is_dash_streaming(mmplayer_t *player);
gboolean _mmplayer_is_smooth_streaming(mmplayer_t *player);
+gboolean _mmplayer_is_adaptive_streaming(mmplayer_t *player);
gboolean _mmplayer_is_ms_buff_src(mmplayer_t *player);
gboolean _mmplayer_has_suffix(mmplayer_t *player, const gchar *suffix);
gboolean _mmplayer_is_videosink_ready(mmplayer_t *player, int surface_type);
+gboolean _mmplayer_use_decodebin(mmplayer_t *player);
gboolean _mmplayer_post_message(mmplayer_t *player, enum MMMessageType msgtype, MMMessageParamType *param);
gboolean _mmplayer_dump_pipeline_state(mmplayer_t *player);
int _mmplayer_get_pixtype(unsigned int fourcc);
bool _mmplayer_get_storage_info(const char *path, mmplayer_storage_info_t *storage_info);
+/* for command lock */
+void _mmplayer_cmd_lock_init(mmplayer_t *player);
+void _mmplayer_cmd_lock_deinit(mmplayer_t *player);
+void _mmplayer_cmd_lock(mmplayer_t *player);
+gboolean _mmplayer_cmd_trylock(mmplayer_t *player);
+void _mmplayer_cmd_unlock(mmplayer_t *player);
media_format_mimetype_e _mmplayer_convert_audio_pcm_str_to_media_format_mime(const gchar *audio_pcm_str);
#ifdef __cplusplus