static int vlclua_input_metas_internal( lua_State *L, input_item_t *p_item ) { if( !p_item ) { lua_pushnil( L ); return 1; } lua_newtable( L ); char *psz_name; const char *psz_meta; psz_name = input_item_GetName( p_item ); lua_pushstring( L, psz_name ); lua_setfield( L, -2, "filename" ); free( psz_name ); #define PUSH_META( n, m ) \ psz_meta = vlc_meta_Get( p_item->p_meta, vlc_meta_ ## n ); \ lua_pushstring( L, psz_meta ); \ lua_setfield( L, -2, m ) vlc_mutex_lock(&p_item->lock); if (p_item->p_meta) { PUSH_META( Title, "title" ); PUSH_META( Artist, "artist" ); PUSH_META( Genre, "genre" ); PUSH_META( Copyright, "copyright" ); PUSH_META( Album, "album" ); PUSH_META( TrackNumber, "track_number" ); PUSH_META( Description, "description" ); PUSH_META( Rating, "rating" ); PUSH_META( Date, "date" ); PUSH_META( Setting, "setting" ); PUSH_META( URL, "url" ); PUSH_META( Language, "language" ); PUSH_META( NowPlaying, "now_playing" ); PUSH_META( Publisher, "publisher" ); PUSH_META( EncodedBy, "encoded_by" ); PUSH_META( ArtworkURL, "artwork_url" ); PUSH_META( TrackID, "track_id" ); #undef PUSH_META char **names = vlc_meta_CopyExtraNames(p_item->p_meta); for(int i = 0; names[i]; i++) { const char *meta = vlc_meta_GetExtra(p_item->p_meta, names[i]); lua_pushstring( L, meta ); lua_setfield( L, -2, names[i] ); free(names[i]); } free(names); } vlc_mutex_unlock(&p_item->lock); return 1; }
void vlc_audio_replay_gain_MergeFromMeta( audio_replay_gain_t *p_dst, const vlc_meta_t *p_meta ) { const char * psz_value; if( !p_meta ) return; if( (psz_value = vlc_meta_GetExtra(p_meta, "REPLAYGAIN_TRACK_GAIN")) || (psz_value = vlc_meta_GetExtra(p_meta, "RG_RADIO")) ) { p_dst->pb_gain[AUDIO_REPLAY_GAIN_TRACK] = true; p_dst->pf_gain[AUDIO_REPLAY_GAIN_TRACK] = us_atof( psz_value ); } if( (psz_value = vlc_meta_GetExtra(p_meta, "REPLAYGAIN_TRACK_PEAK" )) || (psz_value = vlc_meta_GetExtra(p_meta, "RG_PEAK" )) ) { p_dst->pb_peak[AUDIO_REPLAY_GAIN_TRACK] = true; p_dst->pf_peak[AUDIO_REPLAY_GAIN_TRACK] = us_atof( psz_value ); } if( (psz_value = vlc_meta_GetExtra(p_meta, "REPLAYGAIN_ALBUM_GAIN" )) || (psz_value = vlc_meta_GetExtra(p_meta, "RG_AUDIOPHILE" )) ) { p_dst->pb_gain[AUDIO_REPLAY_GAIN_ALBUM] = true; p_dst->pf_gain[AUDIO_REPLAY_GAIN_ALBUM] = us_atof( psz_value ); } if( (psz_value = vlc_meta_GetExtra(p_meta, "REPLAYGAIN_ALBUM_PEAK" )) ) { p_dst->pb_peak[AUDIO_REPLAY_GAIN_ALBUM] = true; p_dst->pf_peak[AUDIO_REPLAY_GAIN_ALBUM] = us_atof( psz_value ); } }
/** * Update the Extra Metadata from p_meta->i_extras **/ void ExtraMetaPanel::update( input_item_t *p_item ) { if( !p_item ) { clear(); return; } QList<QTreeWidgetItem *> items; extraMetaTree->clear(); vlc_mutex_lock( &p_item->lock ); vlc_meta_t *p_meta = p_item->p_meta; if( !p_meta ) { vlc_mutex_unlock( &p_item->lock ); return; } const char *psz_disc_number = vlc_meta_Get( p_meta, vlc_meta_DiscNumber); if( psz_disc_number ) { QStringList tempItem; tempItem.append( VLC_META_DISCNUMBER ); tempItem.append( qfu( psz_disc_number ) ); items.append( new QTreeWidgetItem ( extraMetaTree, tempItem ) ); } char ** ppsz_allkey = vlc_meta_CopyExtraNames( p_meta); for( int i = 0; ppsz_allkey[i] ; i++ ) { const char * psz_value = vlc_meta_GetExtra( p_meta, ppsz_allkey[i] ); QStringList tempItem; tempItem.append( qfu( ppsz_allkey[i] ) + " : "); tempItem.append( qfu( psz_value ) ); items.append( new QTreeWidgetItem ( extraMetaTree, tempItem ) ); free( ppsz_allkey[i] ); } vlc_mutex_unlock( &p_item->lock ); free( ppsz_allkey ); extraMetaTree->addTopLevelItems( items ); extraMetaTree->resizeColumnToContents( 0 ); }
void FingerprintDialog::handleResults() { p_r = t->fetchResults(); if ( ! p_r ) { ui->stackedWidget->setCurrentWidget( ui->error ); return; } if ( vlc_array_count( & p_r->results.metas_array ) == 0 ) { fingerprint_request_Delete( p_r ); p_r = NULL; ui->stackedWidget->setCurrentWidget( ui->error ); return; } ui->stackedWidget->setCurrentWidget( ui->results ); for ( int i=0; i< vlc_array_count( & p_r->results.metas_array ) ; i++ ) { vlc_meta_t *p_meta = (vlc_meta_t *) vlc_array_item_at_index( & p_r->results.metas_array, i ); QListWidgetItem *item = new QListWidgetItem(); ui->recordsList->addItem( item ); QString mb_id( vlc_meta_GetExtra( p_meta, "musicbrainz-id" ) ); QLabel *label = new QLabel( QString( "<h3 style=\"margin: 0\"><a style=\"text-decoration:none\" href=\"%1\">%2</a></h3>" "<span style=\"padding-left:20px\">%3</span>" ) .arg( QString( "http://mb.videolan.org/recording/%1" ).arg( mb_id ) ) .arg( qfu( vlc_meta_Get( p_meta, vlc_meta_Title ) ) ) .arg( qfu( vlc_meta_Get( p_meta, vlc_meta_Artist ) ) ) ); label->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); label->setOpenExternalLinks( true ); item->setSizeHint( label->sizeHint() ); ui->recordsList->setItemWidget( item, label ); } ui->recordsList->setCurrentIndex( ui->recordsList->model()->index( 0, 0 ) ); }