* @retval #MEDIA_STREAMER_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #MEDIA_STREAMER_ERROR_INVALID_OPERATION Invalid operation
* @retval #MEDIA_STREAMER_ERROR_SEEK_FAILED Seek operation failure
- * @pre The media streamer state must be one of these: #MEDIA_STREAMER_STATE_READY, #MEDIA_STREAMER_STATE_PAUSED, or #MEDIA_STREAMER_STATE_PLAYING.
+ * @pre The media streamer state must be one of these: #MEDIA_STREAMER_STATE_PAUSED, or #MEDIA_STREAMER_STATE_PLAYING.
* @post It invokes media_streamer_set_play_position() when seek operation completes, if you set a callback.
* @see media_streamer_get_play_position()
*/
* @retval #MEDIA_STREAMER_ERROR_INVALID_STATE Invalid state
* @retval #MEDIA_STREAMER_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #MEDIA_STREAMER_ERROR_INVALID_OPERATION Invalid operation
- * @pre The media streamer state must be one of these: #MEDIA_STREAMER_STATE_READY, #MEDIA_STREAMER_STATE_PAUSED, or #MEDIA_STREAMER_STATE_PLAYING.
+ * @pre The media streamer state must be one of these: #MEDIA_STREAMER_STATE_PAUSED, or #MEDIA_STREAMER_STATE_PLAYING.
* @see media_streamer_set_play_position()
*/
int media_streamer_get_play_position(media_streamer_h streamer, int *time);
* @retval #MEDIA_STREAMER_ERROR_INVALID_STATE Invalid state
* @retval #MEDIA_STREAMER_ERROR_INVALID_PARAMETER Invalid parameter
* @retval #MEDIA_STREAMER_ERROR_INVALID_OPERATION Invalid operation
- * @pre The media streamer state must be one of these: #MEDIA_STREAMER_STATE_READY, #MEDIA_STREAMER_STATE_PAUSED, or #MEDIA_STREAMER_STATE_PLAYING.
+ * @pre The media streamer state must be one of these: #MEDIA_STREAMER_STATE_PAUSED, or #MEDIA_STREAMER_STATE_PLAYING.
*/
int media_streamer_get_duration(media_streamer_h streamer, int *duration);
media_streamer_s *ms_streamer = (media_streamer_s *) streamer;
ms_retvm_if(ms_streamer == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "Handle is NULL");
- ms_retvm_if(ms_streamer->state < MEDIA_STREAMER_STATE_READY || ms_streamer->state > MEDIA_STREAMER_STATE_PAUSED, MEDIA_STREAMER_ERROR_INVALID_STATE, "The media streamer state is not in the appropriate state");
+ ms_retvm_if(ms_streamer->state < MEDIA_STREAMER_STATE_PLAYING || ms_streamer->state > MEDIA_STREAMER_STATE_PAUSED, MEDIA_STREAMER_ERROR_INVALID_STATE, "The media streamer state is not in the appropriate state");
/* Notify: the seeking must be reseted while streamer got ASYNC_DONE message */
ms_retvm_if(ms_streamer->is_seeking, MEDIA_STREAMER_ERROR_INVALID_STATE, "Media streamer is seeking");
media_streamer_s *ms_streamer = (media_streamer_s *) streamer;
ms_retvm_if(ms_streamer == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "Handle is NULL");
- ms_retvm_if(ms_streamer->state < MEDIA_STREAMER_STATE_READY || ms_streamer->state > MEDIA_STREAMER_STATE_PAUSED, MEDIA_STREAMER_ERROR_INVALID_STATE, "The media streamer state is not in the appropriate state");
+ ms_retvm_if(ms_streamer->state < MEDIA_STREAMER_STATE_PLAYING || ms_streamer->state > MEDIA_STREAMER_STATE_PAUSED, MEDIA_STREAMER_ERROR_INVALID_STATE, "The media streamer state is not in the appropriate state");
int ret = MEDIA_STREAMER_ERROR_NONE;
g_mutex_lock(&ms_streamer->mutex_lock);
media_streamer_s *ms_streamer = (media_streamer_s *) streamer;
ms_retvm_if(ms_streamer == NULL, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "Handle is NULL");
- ms_retvm_if(ms_streamer->state < MEDIA_STREAMER_STATE_READY || ms_streamer->state > MEDIA_STREAMER_STATE_PAUSED, MEDIA_STREAMER_ERROR_INVALID_STATE, "The media streamer state is not in the appropriate state");
+ ms_retvm_if(ms_streamer->state < MEDIA_STREAMER_STATE_PLAYING || ms_streamer->state > MEDIA_STREAMER_STATE_PAUSED, MEDIA_STREAMER_ERROR_INVALID_STATE, "The media streamer state is not in the appropriate state");
int ret = MEDIA_STREAMER_ERROR_NONE;
g_mutex_lock(&ms_streamer->mutex_lock);
}
}
-static gboolean __ms_src_need_typefind(GstPad * src_pad)
+static gboolean __ms_src_need_typefind(media_streamer_s *ms_streamer, GstPad * src_pad)
{
gboolean ret = FALSE;
return FALSE;
GstCaps *src_caps = gst_pad_query_caps(src_pad, NULL);
- if (gst_caps_is_any(src_caps))
+ if (gst_caps_is_any(src_caps) ||
+ !__ms_bin_find_element_by_klass(ms_streamer->topology_bin, NULL, NULL, MEDIA_STREAMER_BIN_KLASS, "rtp_container"))
ret = TRUE;
gst_caps_unref(src_caps);
GstPad *src_pad = gst_element_get_static_pad(src_element, "src");
GstElement *found_element = NULL;
- if (__ms_src_need_typefind(src_pad)) {
+ if (__ms_src_need_typefind(ms_streamer, src_pad)) {
found_element = __ms_decodebin_create(ms_streamer);
found_element = __ms_link_with_new_element(src_element, src_pad, found_element);
} else {