static void send_port_auto_detect_events (dirble_prc_t * ap_prc) { assert (ap_prc); if (ap_prc->audio_coding_type_ != OMX_AUDIO_CodingUnused && ap_prc->audio_coding_type_ != OMX_AUDIO_CodingAutoDetect) { TIZ_DEBUG (handleOf (ap_prc), "Issuing OMX_EventPortFormatDetected"); tiz_srv_issue_event ((OMX_PTR) ap_prc, OMX_EventPortFormatDetected, 0, 0, NULL); TIZ_DEBUG (handleOf (ap_prc), "Issuing OMX_EventPortSettingsChanged"); tiz_srv_issue_event ((OMX_PTR) ap_prc, OMX_EventPortSettingsChanged, ARATELIA_HTTP_SOURCE_PORT_INDEX, /* port 0 */ OMX_IndexParamPortDefinition, /* the index of the struct that has been modififed */ NULL); } else { /* Oops... could not detect the stream format */ /* This is to make sure this url will not get processed again... */ ap_prc->remove_current_url_ = true; /* Get ready to auto-detect another stream */ set_auto_detect_on_port (ap_prc); prepare_for_port_auto_detection (ap_prc); /* Finally, signal the client */ TIZ_DEBUG (handleOf (ap_prc), "Issuing OMX_ErrorFormatNotDetected"); tiz_srv_issue_err_event ((OMX_PTR) ap_prc, OMX_ErrorFormatNotDetected); } }
static OMX_ERRORTYPE sdlivr_prc_buffers_ready (const void * ap_obj) { sdlivr_prc_t * p_prc = (sdlivr_prc_t *) ap_obj; OMX_BUFFERHEADERTYPE * p_hdr = NULL; void * p_krn = tiz_get_krn (handleOf (ap_obj)); assert (p_prc); if (!p_prc->port_disabled_) { tiz_check_omx (tiz_krn_claim_buffer ( p_krn, ARATELIA_YUV_RENDERER_PORT_INDEX, 0, &p_hdr)); while (!p_prc->port_disabled_ && p_hdr) { if (p_hdr) { tiz_check_omx (sdlivr_prc_render_buffer (ap_obj, p_hdr)); if (p_hdr->nFlags & OMX_BUFFERFLAG_EOS) { TIZ_TRACE (handleOf (ap_obj), "OMX_BUFFERFLAG_EOS in HEADER [%p]", p_hdr); tiz_srv_issue_event ((OMX_PTR) ap_obj, OMX_EventBufferFlag, 0, p_hdr->nFlags, NULL); } tiz_check_omx (tiz_krn_release_buffer ( p_krn, ARATELIA_YUV_RENDERER_PORT_INDEX, p_hdr)); tiz_check_omx (tiz_krn_claim_buffer ( p_krn, ARATELIA_YUV_RENDERER_PORT_INDEX, 0, &p_hdr)); } } } return OMX_ErrorNone; }
static OMX_ERRORTYPE update_pcm_mode (mp3d_prc_t * ap_prc, const OMX_U32 a_samplerate, const OMX_U32 a_channels) { assert (ap_prc); if (a_samplerate != ap_prc->pcmmode_.nSamplingRate || a_channels != ap_prc->pcmmode_.nChannels) { TIZ_DEBUG (handleOf (ap_prc), "Updating pcm mode : old samplerate [%d] new samplerate [%d]", ap_prc->pcmmode_.nSamplingRate, a_samplerate); TIZ_DEBUG (handleOf (ap_prc), "Updating pcm mode : old channels [%d] new channels [%d]", ap_prc->pcmmode_.nChannels, a_channels); ap_prc->pcmmode_.nSamplingRate = a_samplerate; ap_prc->pcmmode_.nChannels = a_channels; tiz_check_omx (tiz_krn_SetParameter_internal ( tiz_get_krn (handleOf (ap_prc)), handleOf (ap_prc), OMX_IndexParamAudioPcm, &(ap_prc->pcmmode_))); tiz_srv_issue_event ((OMX_PTR) ap_prc, OMX_EventPortSettingsChanged, ARATELIA_MP3_DECODER_OUTPUT_PORT_INDEX, OMX_IndexParamAudioPcm, /* the index of the struct that has been modififed */ NULL); } return OMX_ErrorNone; }
static OMX_ERRORTYPE sdlivr_proc_buffers_ready (const void *ap_obj) { OMX_BUFFERHEADERTYPE *p_hdr = NULL; if (OMX_ErrorNone == tiz_krn_claim_buffer (tiz_get_krn (handleOf (ap_obj)), 0, 0, &p_hdr)) { if (NULL != p_hdr) { tiz_check_omx_err (sdlivr_proc_render_buffer (ap_obj, p_hdr)); if (p_hdr->nFlags & OMX_BUFFERFLAG_EOS) { TIZ_TRACE (handleOf (ap_obj), "OMX_BUFFERFLAG_EOS in HEADER [%p]", p_hdr); tiz_srv_issue_event ((OMX_PTR) ap_obj, OMX_EventBufferFlag, 0, p_hdr->nFlags, NULL); } tiz_check_omx_err (tiz_krn_release_buffer (tiz_get_krn (handleOf (ap_obj)), 0, p_hdr)); } } return OMX_ErrorNone; }
static void buffer_emptied (OMX_BUFFERHEADERTYPE * ap_hdr, void * ap_arg) { httpr_prc_t * p_prc = ap_arg; assert (p_prc); assert (ap_hdr); assert (p_prc->p_inhdr_ == ap_hdr); assert (ap_hdr->nFilledLen == 0); ap_hdr->nOffset = 0; TIZ_TRACE (handleOf (p_prc), "HEADER [%p]", ap_hdr); if ((ap_hdr->nFlags & OMX_BUFFERFLAG_EOS) != 0) { TIZ_TRACE (handleOf (p_prc), "OMX_BUFFERFLAG_EOS in HEADER [%p]", ap_hdr); tiz_srv_issue_event ((OMX_PTR) p_prc, OMX_EventBufferFlag, ARATELIA_HTTP_RENDERER_PORT_INDEX, ap_hdr->nFlags, NULL); } tiz_krn_release_buffer (tiz_get_krn (handleOf (p_prc)), ARATELIA_HTTP_RENDERER_PORT_INDEX, ap_hdr); p_prc->p_inhdr_ = NULL; }
static OMX_ERRORTYPE update_metadata (scloud_prc_t * ap_prc) { assert (ap_prc); /* Clear previous metatada items */ tiz_krn_clear_metadata (tiz_get_krn (handleOf (ap_prc))); /* User and track title */ tiz_check_omx (store_metadata ( ap_prc, tiz_scloud_get_current_track_user (ap_prc->p_scloud_), tiz_scloud_get_current_track_title (ap_prc->p_scloud_))); /* Store the year if not 0 */ { const char * p_year = tiz_scloud_get_current_track_year (ap_prc->p_scloud_); if (p_year && strncmp (p_year, "0", 4) != 0) { tiz_check_omx (store_metadata (ap_prc, "Year", p_year)); } } /* Duration */ tiz_check_omx ( store_metadata (ap_prc, "Duration", tiz_scloud_get_current_track_duration (ap_prc->p_scloud_))); /* Likes */ tiz_check_omx ( store_metadata (ap_prc, "Likes count", tiz_scloud_get_current_track_likes (ap_prc->p_scloud_))); /* Permalink */ tiz_check_omx (store_metadata ( ap_prc, "Permalink", tiz_scloud_get_current_track_permalink (ap_prc->p_scloud_))); /* License */ tiz_check_omx ( store_metadata (ap_prc, "License", tiz_scloud_get_current_track_license (ap_prc->p_scloud_))); /* Signal that a new set of metatadata items is available */ (void) tiz_srv_issue_event ((OMX_PTR) ap_prc, OMX_EventIndexSettingChanged, OMX_ALL, /* no particular port associated */ OMX_IndexConfigMetadataItem, /* index of the struct that has been modififed */ NULL); return OMX_ErrorNone; }
static void send_port_auto_detect_events (scloud_prc_t * ap_prc) { assert (ap_prc); if (ap_prc->audio_coding_type_ != OMX_AUDIO_CodingUnused || ap_prc->audio_coding_type_ != OMX_AUDIO_CodingAutoDetect) { TIZ_DEBUG (handleOf (ap_prc), "Issuing OMX_EventPortFormatDetected"); tiz_srv_issue_event ((OMX_PTR) ap_prc, OMX_EventPortFormatDetected, 0, 0, NULL); TIZ_DEBUG (handleOf (ap_prc), "Issuing OMX_EventPortSettingsChanged"); tiz_srv_issue_event ((OMX_PTR) ap_prc, OMX_EventPortSettingsChanged, ARATELIA_HTTP_SOURCE_PORT_INDEX, /* port 0 */ OMX_IndexParamPortDefinition, /* the index of the struct that has been modififed */ NULL); } else { /* Oops... could not detect the stream format */ tiz_srv_issue_err_event ((OMX_PTR) ap_prc, OMX_ErrorFormatNotDetected); } }
static OMX_ERRORTYPE update_metadata (dirble_prc_t * ap_prc) { assert (ap_prc); /* Clear previous metatada items */ tiz_krn_clear_metadata (tiz_get_krn (handleOf (ap_prc))); /* Station Name */ tiz_check_omx ( store_metadata (ap_prc, "Station", tiz_dirble_get_current_station_name (ap_prc->p_dirble_))); /* Country */ tiz_check_omx (store_metadata ( ap_prc, "URL", (const char *) ap_prc->p_uri_param_->contentURI)); /* Country */ tiz_check_omx (store_metadata ( ap_prc, "Country", tiz_dirble_get_current_station_country (ap_prc->p_dirble_))); /* Category */ tiz_check_omx (store_metadata ( ap_prc, "Categories", tiz_dirble_get_current_station_category (ap_prc->p_dirble_))); /* Website */ tiz_check_omx (store_metadata ( ap_prc, "Website", tiz_dirble_get_current_station_website (ap_prc->p_dirble_))); /* Signal that a new set of metatadata items is available */ (void) tiz_srv_issue_event ((OMX_PTR) ap_prc, OMX_EventIndexSettingChanged, OMX_ALL, /* no particular port associated */ OMX_IndexConfigMetadataItem, /* index of the struct that has been modififed */ NULL); return OMX_ErrorNone; }