Beispiel #1
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;
}
Beispiel #2
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;
}
Beispiel #3
0
static void
store_stream_metadata (mp3d_prc_t * ap_prc, struct mad_header * Header)
{
  const char *Layer, *Mode, *Emphasis;

  assert (ap_prc);
  assert (Header);

  /* Convert the layer number to it's printed representation. */
  switch (Header->layer)
    {
      case MAD_LAYER_I:
        Layer = "I";
        break;
      case MAD_LAYER_II:
        Layer = "II";
        break;
      case MAD_LAYER_III:
        Layer = "III";
        break;
      default:
        Layer = "(unknown)";
        break;
    }

  /* Convert the audio mode to it's printed representation. */
  switch (Header->mode)
    {
      case MAD_MODE_SINGLE_CHANNEL:
        Mode = "single channel";
        break;
      case MAD_MODE_DUAL_CHANNEL:
        Mode = "dual channel";
        break;
      case MAD_MODE_JOINT_STEREO:
        Mode = "joint (MS/intensity) stereo";
        break;
      case MAD_MODE_STEREO:
        Mode = "LR stereo";
        break;
      default:
        Mode = "(unknown)";
        break;
    }

  /* Convert the emphasis to it's printed representation. Note that
   * the MAD_EMPHASIS_RESERVED enumeration value appeared in libmad
   * version 0.15.0b.
   */
  switch (Header->emphasis)
    {
      case MAD_EMPHASIS_NONE:
        Emphasis = "no";
        break;
      case MAD_EMPHASIS_50_15_US:
        Emphasis = "50/15 us";
        break;
      case MAD_EMPHASIS_CCITT_J_17:
        Emphasis = "CCITT J.17";
        break;
#if (MAD_VERSION_MAJOR >= 1) \
  || ((MAD_VERSION_MAJOR == 0) && (MAD_VERSION_MINOR >= 15))
      case MAD_EMPHASIS_RESERVED:
        Emphasis = "reserved(!)";
        break;
#endif
      default:
        Emphasis = "(unknown)";
        break;
    }

  {
    char info[100];

    (void) tiz_krn_clear_metadata (tiz_get_krn (handleOf (ap_prc)));

    snprintf (
      info, 99, "%lu kbit/s, %d Hz",
      (ap_prc->frame_.header.bitrate ? ap_prc->frame_.header.bitrate / 1000
                                     : 0),
      Header->samplerate);
    info[99] = '\000';
    (void) store_metadata (ap_prc, "Audio Stream", info);

    snprintf (info, 99, "%s, %s CRC", Layer,
              Header->flags & MAD_FLAG_PROTECTION ? "with" : "w/o");
    info[99] = '\000';
    (void) store_metadata (ap_prc, "MPEG Layer", info);

    snprintf (info, 99, "%s, %s emphasis", Mode, Emphasis);
    info[99] = '\000';
    (void) store_metadata (ap_prc, "Mode", info);
  }

  TIZ_TRACE (handleOf (ap_prc),
             "%lu b/s audio MPEG layer %s stream %s CRC, "
             "%s with %s emphasis at %d Hz sample rate\n",
             Header->bitrate, Layer,
             Header->flags & MAD_FLAG_PROTECTION ? "with" : "without", Mode,
             Emphasis, Header->samplerate);
}