Exemplo n.º 1
0
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);
    }
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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;
}
Exemplo n.º 6
0
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;
}
Exemplo n.º 7
0
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);
    }
}
Exemplo n.º 8
0
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;
}