static OMX_ERRORTYPE scloud_prc_config_change (void * ap_prc, OMX_U32 TIZ_UNUSED (a_pid), OMX_INDEXTYPE a_config_idx) { scloud_prc_t * p_prc = ap_prc; OMX_ERRORTYPE rc = OMX_ErrorNone; assert (p_prc); if (OMX_TizoniaIndexConfigPlaylistSkip == a_config_idx && p_prc->p_trans_) { TIZ_INIT_OMX_STRUCT (p_prc->playlist_skip_); tiz_check_omx (tiz_api_GetConfig ( tiz_get_krn (handleOf (p_prc)), handleOf (p_prc), OMX_TizoniaIndexConfigPlaylistSkip, &p_prc->playlist_skip_)); p_prc->playlist_skip_.nValue > 0 ? obtain_next_url (p_prc, 1) : obtain_next_url (p_prc, -1); /* Changing the URL has the side effect of halting the current download */ tiz_urltrans_set_uri (p_prc->p_trans_, p_prc->p_uri_param_); if (p_prc->port_disabled_) { /* Record that the URI has changed, so that when the port is re-enabled, we restart the transfer */ p_prc->uri_changed_ = true; } else { /* re-start the transfer */ tiz_urltrans_start (p_prc->p_trans_); } } return rc; }
static OMX_ERRORTYPE scloud_prc_allocate_resources (void * ap_obj, OMX_U32 a_pid) { scloud_prc_t * p_prc = ap_obj; OMX_ERRORTYPE rc = OMX_ErrorInsufficientResources; assert (p_prc); tiz_check_omx (retrieve_session_configuration (p_prc)); tiz_check_omx (retrieve_playlist (p_prc)); tiz_check_omx (retrieve_buffer_size (p_prc)); if (p_prc->buffer_size_.nCapacity) { p_prc->buffer_bytes_ = ((p_prc->bitrate_ * 1000) / 8) * p_prc->buffer_size_.nCapacity; } on_scloud_error_ret_omx_oom (tiz_scloud_init ( &(p_prc->p_scloud_), (const char *) p_prc->session_.cUserOauthToken)); tiz_check_omx (enqueue_playlist_items (p_prc)); tiz_check_omx (obtain_next_url (p_prc, 1)); { const tiz_urltrans_buffer_cbacks_t buffer_cbacks = {buffer_filled, buffer_emptied}; const tiz_urltrans_info_cbacks_t info_cbacks = {header_available, data_available, connection_lost}; const tiz_urltrans_event_io_cbacks_t io_cbacks = {tiz_srv_io_watcher_init, tiz_srv_io_watcher_destroy, tiz_srv_io_watcher_start, tiz_srv_io_watcher_stop}; const tiz_urltrans_event_timer_cbacks_t timer_cbacks = {tiz_srv_timer_watcher_init, tiz_srv_timer_watcher_destroy, tiz_srv_timer_watcher_start, tiz_srv_timer_watcher_stop, tiz_srv_timer_watcher_restart}; rc = tiz_urltrans_init (&(p_prc->p_trans_), p_prc, p_prc->p_uri_param_, ARATELIA_HTTP_SOURCE_COMPONENT_NAME, p_prc->buffer_bytes_, ARATELIA_HTTP_SOURCE_DEFAULT_RECONNECT_TIMEOUT, buffer_cbacks, info_cbacks, io_cbacks, timer_cbacks); } return rc; }
static OMX_ERRORTYPE dirble_prc_allocate_resources (void * ap_obj, OMX_U32 a_pid) { dirble_prc_t * p_prc = ap_obj; OMX_ERRORTYPE rc = OMX_ErrorInsufficientResources; assert (p_prc); tiz_check_omx (retrieve_session_configuration (p_prc)); tiz_check_omx (retrieve_playlist (p_prc)); on_dirble_error_ret_omx_oom (tiz_dirble_init ( &(p_prc->p_dirble_), (const char *) p_prc->session_.cApiKey)); tiz_check_omx (enqueue_playlist_items (p_prc)); tiz_check_omx (obtain_next_url (p_prc, 1)); { const tiz_urltrans_buffer_cbacks_t buffer_cbacks = {buffer_filled, buffer_emptied}; const tiz_urltrans_info_cbacks_t info_cbacks = {header_available, data_available, connection_lost}; const tiz_urltrans_event_io_cbacks_t io_cbacks = {tiz_srv_io_watcher_init, tiz_srv_io_watcher_destroy, tiz_srv_io_watcher_start, tiz_srv_io_watcher_stop}; const tiz_urltrans_event_timer_cbacks_t timer_cbacks = {tiz_srv_timer_watcher_init, tiz_srv_timer_watcher_destroy, tiz_srv_timer_watcher_start, tiz_srv_timer_watcher_stop, tiz_srv_timer_watcher_restart}; rc = tiz_urltrans_init (&(p_prc->p_trans_), p_prc, p_prc->p_uri_param_, ARATELIA_HTTP_SOURCE_COMPONENT_NAME, ARATELIA_HTTP_SOURCE_PORT_MIN_BUF_SIZE, ARATELIA_HTTP_SOURCE_DEFAULT_RECONNECT_TIMEOUT, buffer_cbacks, info_cbacks, io_cbacks, timer_cbacks); } return rc; }