Wtfplay - un nuovo player per Linux aficionados

Pagina 4 di 19
prima
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ... ultimo
Visualizzazione dei risultati da 31 a 40 su 189
  1. #31
    pebibyte L'avatar di marcoc1712
    Registrato
    Jan 2013
    Messaggi
    5,254
    configurazione

    Predefinito

    Rispost adell'autore a mia richiesta di chiarimenti sull elibrerie utilizzate:

    "As for now standard libraries are used: alsa-lib and libFLAC".

    La prima (aka libasound) è rilasciata con licenza LGPL, la seconda BSD. Entrambe somo le stesse utilizzate da tutti i players di mia conoscenza per il decode di Flac ed il colloquio con ALSA, esattamente come ipotizzavo. Le differenze sono eventualmente da ricercare a livello sistemistico e non applicativo, a meno di 'magie' di cui però non ci è dato sapere ed io non riesco ad immaginare.
    Ciao, Marco.

    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
    — E. F. Schumacher (mis-attributed to A. Einstein)
    ________________________________________________________________________________
    Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
    Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
    Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE

  2. #32
    pebibyte L'avatar di marcoc1712
    Registrato
    Jan 2013
    Messaggi
    5,254
    configurazione

    Predefinito

    Come promesso, questo è un esempio estremanete semplificato ma completo, di un player scritto in C che usa ALSA per riprodurre PCM:

    codice:
    /*
     * Simple sound playback using ALSA API and libasound.
     *
     * Compile:
     * $ cc -o play sound_playback.c -lasound
     * 
     * Usage:
     * $ ./play <sample_rate> <channels> <seconds> < <file>
     * 
     * Examples:
     * $ ./play 44100 2 5 < /dev/urandom
     * $ ./play 22050 1 8 < /path/to/file.wav
     *
     * Copyright (C) 2009 Alessandro Ghedini <alessandro@ghedini.me>
     * --------------------------------------------------------------
     * "THE BEER-WARE LICENSE" (Revision 42):
     * Alessandro Ghedini wrote this file. As long as you retain this
     * notice you can do whatever you want with this stuff. If we
     * meet some day, and you think this stuff is worth it, you can
     * buy me a beer in return.
     * --------------------------------------------------------------
     */
    
    #include <alsa/asoundlib.h>
    #include <stdio.h>
    
    #define PCM_DEVICE "default"
    
    int main(int argc, char **argv) {
    	unsigned int pcm, tmp, dir;
    	int rate, channels, seconds;
    	snd_pcm_t *pcm_handle;
    	snd_pcm_hw_params_t *params;
    	snd_pcm_uframes_t frames;
    	char *buff;
    	int buff_size, loops;
    
    	if (argc < 4) {
    		printf("Usage: %s <sample_rate> <channels> <seconds>\n",
    								argv[0]);
    		return -1;
    	}
    
    	rate 	 = atoi(argv[1]);
    	channels = atoi(argv[2]);
    	seconds  = atoi(argv[3]);
    
    	/* Open the PCM device in playback mode */
    	if (pcm = snd_pcm_open(&pcm_handle, PCM_DEVICE,
    					SND_PCM_STREAM_PLAYBACK, 0) < 0) 
    		printf("ERROR: Can't open \"%s\" PCM device. %s\n",
    					PCM_DEVICE, snd_strerror(pcm));
    
    	/* Allocate parameters object and fill it with default values*/
    	snd_pcm_hw_params_alloca(&params);
    
    	snd_pcm_hw_params_any(pcm_handle, params);
    
    	/* Set parameters */
    	if (pcm = snd_pcm_hw_params_set_access(pcm_handle, params,
    					SND_PCM_ACCESS_RW_INTERLEAVED) < 0) 
    		printf("ERROR: Can't set interleaved mode. %s\n", snd_strerror(pcm));
    
    	if (pcm = snd_pcm_hw_params_set_format(pcm_handle, params,
    						SND_PCM_FORMAT_S16_LE) < 0) 
    		printf("ERROR: Can't set format. %s\n", snd_strerror(pcm));
    
    	if (pcm = snd_pcm_hw_params_set_channels(pcm_handle, params, channels) < 0) 
    		printf("ERROR: Can't set channels number. %s\n", snd_strerror(pcm));
    
    	if (pcm = snd_pcm_hw_params_set_rate_near(pcm_handle, params, &rate, 0) < 0) 
    		printf("ERROR: Can't set rate. %s\n", snd_strerror(pcm));
    
    	/* Write parameters */
    	if (pcm = snd_pcm_hw_params(pcm_handle, params) < 0)
    		printf("ERROR: Can't set harware parameters. %s\n", snd_strerror(pcm));
    
    	/* Resume information */
    	printf("PCM name: '%s'\n", snd_pcm_name(pcm_handle));
    
    	printf("PCM state: %s\n", snd_pcm_state_name(snd_pcm_state(pcm_handle)));
    
    	snd_pcm_hw_params_get_channels(params, &tmp);
    	printf("channels: %i ", tmp);
    
    	if (tmp == 1)
    		printf("(mono)\n");
    	else if (tmp == 2)
    		printf("(stereo)\n");
    
    	snd_pcm_hw_params_get_rate(params, &tmp, 0);
    	printf("rate: %d bps\n", tmp);
    
    	printf("seconds: %d\n", seconds);	
    
    	/* Allocate buffer to hold single period */
    	snd_pcm_hw_params_get_period_size(params, &frames, 0);
    
    	buff_size = frames * channels * 2 /* 2 -> sample size */;
    	buff = (char *) malloc(buff_size);
    
    	snd_pcm_hw_params_get_period_time(params, &tmp, NULL);
    
    	for (loops = (seconds * 1000000) / tmp; loops > 0; loops--) {
    
    		if (pcm = read(0, buff, buff_size) == 0) {
    			printf("Early end of file.\n");
    			return 0;
    		}
    
    		if (pcm = snd_pcm_writei(pcm_handle, buff, frames) == -EPIPE) {
    			printf("XRUN.\n");
    			snd_pcm_prepare(pcm_handle);
    		} else if (pcm < 0) {
    			printf("ERROR. Can't write to PCM device. %s\n", snd_strerror(pcm));
    		}
    
    	}
    
    	snd_pcm_drain(pcm_handle);
    	snd_pcm_close(pcm_handle);
    	free(buff);
    
    	return 0;
    }
    Con un minimo di sforzo, potete facilmente vedere che tutto il lavoro è fatto da chiamate alla libreria, l'applicativo si limita a validare i parametrie passarli alla chiamata di apertura, dopo di che un loop muove dal buffer in input (che in questo caso è un file, ma potrebbe essere uno stream ethernet o qualsiasi altra fonte, all'output, sempre mediante chiamate alla libreria, quindi al termine chiude il tutto, indovinate come.

    Non c'è modo, utilizzando queste librerie, di influenzare in modo significativo il 'come', se non agendo su dimensione e frequenza di refresh dei buffer e sui parametri di open, quindi due applicativi diversi che utilizzano le stesse chiamate di libreria con gli stessi parametri non possono originare differenze di per se, sarebbe come dire che squeezelite lanciato tramite i servizi è meglio di quando viene lanciato manualmente o viceversa...

    Tali differenze possono invece benissimo pendere luogo all'atto della compilazione (se si compilano anche le librerie e si linkano staticamente) o a valle delle librerie stesse, in funzione della configurazione di OS, Drivers di periferica e firmware/hardware.

    Credo sia una considerazione che valga la pena tenere a mente quando si valutano player software basati su questa o simili tecnologie.
    Ultima modifica di marcoc1712 : 13-03-2016 a 12:14
    Ciao, Marco.

    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
    — E. F. Schumacher (mis-attributed to A. Einstein)
    ________________________________________________________________________________
    Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
    Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
    Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE

  3. #33
    tebibyte
    Registrato
    Aug 2011
    Età
    50
    Messaggi
    2,928
    configurazione

    Predefinito

    Tali differenze possono invece benissimo pendere luogo all'atto della compilazione (se si compilano anche le librerie e si linkano staticamente) o a valle delle librerie stesse, in funzione della configurazione di OS, Drivers di periferica e firmware/hardware.
    Daccordissimo!!! infatti quando io in questo contesto ho parlato di player l ho sempre virgolettato...intendendo il sistema player.

    Lo stesso Daphile usa Squeeezelite-R2 e io preferisco di gran lunga Debian-aesetup-squeezelite-R2

    Sicuro le differenze vanno cercate altrove sicuro non nel player in se.

    questa é una parte del top:
    Ultima modifica di antonellocaroli : 13-03-2016 a 09:04

  4. #34
    tebibyte L'avatar di bigtube
    Registrato
    May 2012
    Località
    cagliari
    Età
    69
    Messaggi
    2,258
    configurazione

    Predefinito

    Originariamente inviato da antonellocaroli
    Daccordissimo!!! infatti quando io in questo contesto ho parlato di player l ho sempre virgolettato...intendendo il sistema player.

    Lo stesso Daphile usa Squeeezelite-R2 e io preferisco di gran lunga Debian-aesetup-squeezelite-R2

    Sicuro le differenze vanno cercate altrove sicuro non nel player in se.

    questa é una parte del top:
    E gia'....la gabbia "Debian" per Squeezelite-R2 ha anche per me la leadership . C'ho elaborato un bel po' di ottimizzazioni poi confluite e sintetizzate nello script easetup....ma
    vorrei fare di piu'....il problema è come....hai detto niente....
    player1:thin client+voyage - player2:futros450+Debian > Usb Transport: I2soverUSB + DAC (6x1704+I/V a tubi) - Attenuatore passivo Lightspeed
    Ampli finale: OTL 6C33 - MyRef Fremen Ed. - Diff.: Diapason Adamantes II - Guida LMS+Squeezelite - B

  5. #35
    pebibyte L'avatar di marcoc1712
    Registrato
    Jan 2013
    Messaggi
    5,254
    configurazione

    Predefinito

    Originariamente inviato da bigtube
    E gia'....la gabbia "Debian" per Squeezelite-R2 ha anche per me la leadership . C'ho elaborato un bel po' di ottimizzazioni poi confluite e sintetizzate nello script easetup....ma
    vorrei fare di piu'....il problema è come....hai detto niente....
    Secondo me ce la fai, è una cosa che ti gira in mente da tanto, troppo tempo, vedrà certamente la luce e ne godremo tutti!

    Dovessi (e riuscissi) a farlo io, cercherei di mettere in piedi qualcosa di assolutamente minimale, possibilmente 'spegnendo' tutte le perficeriche ed i moduli HW - in particolare video, wi fi e BT - tranne USB ed Ethernet, con solo TPC/IP abilitato a livello software. Come opzione metterei o SSH o il web Server per Falcon, per chi volesse un minimo di comodità, nulla di più.

    Una cosa che 'mi ronza' da un po è di evitare di utilizzare il BUS USB tranne che per il DAC, quindi NO pennetta e NO a qualsiasi storage su quel BUS, ove possibile, certo che se poi metti tutto in ram conta poco, ma...

    Non so se e come si possa fare, ma di certo dovrebbe uscire una cosa << 1GB di disco e con un fabbisogno di RAM almeno altrettanto limitato, facilmente caricabile in RAMDISK, poi lavorando di fino con i buffer di squeezelite si dovrebbe ottenere un ottimo risultato.

    M aprima dai vita "a creatura", ti prego!
    Ciao, Marco.

    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
    — E. F. Schumacher (mis-attributed to A. Einstein)
    ________________________________________________________________________________
    Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
    Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
    Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE

  6. #36
    tebibyte L'avatar di bigtube
    Registrato
    May 2012
    Località
    cagliari
    Età
    69
    Messaggi
    2,258
    configurazione

    Predefinito

    Originariamente inviato da marcoc1712
    Secondo me ce la fai, è una cosa che ti gira in mente da tanto, troppo tempo, vedrà certamente la luce e ne godremo tutti!

    Dovessi (e riuscissi) a farlo io, cercherei di mettere in piedi qualcosa di assolutamente minimale, possibilmente 'spegnendo' tutte le perficeriche ed i moduli HW - in particolare video, wi fi e BT - tranne USB ed Ethernet, con solo TPC/IP abilitato a livello software. Come opzione metterei o SSH o il web Server per Falcon, per chi volesse un minimo di comodità, nulla di più.

    Una cosa che 'mi ronza' da un po è di evitare di utilizzare il BUS USB tranne che per il DAC, quindi NO pennetta e NO a qualsiasi storage su quel BUS, ove possibile, certo che se poi metti tutto in ram conta poco, ma...

    Non so se e come si possa fare, ma di certo dovrebbe uscire una cosa << 1GB di disco e con un fabbisogno di RAM almeno altrettanto limitato, facilmente caricabile in RAMDISK, poi lavorando di fino con i buffer di squeezelite si dovrebbe ottenere un ottimo risultato.

    M aprima dai vita "a creatura", ti prego!
    Veramente "Creaturo" (deriva dalla mia lingua madre: il Gallurese..... si diceva di un nuovo nato " Lu Criaturu" o se femmina "La Criatura" )....tranquillo ora non ho occhi che per lui
    player1:thin client+voyage - player2:futros450+Debian > Usb Transport: I2soverUSB + DAC (6x1704+I/V a tubi) - Attenuatore passivo Lightspeed
    Ampli finale: OTL 6C33 - MyRef Fremen Ed. - Diff.: Diapason Adamantes II - Guida LMS+Squeezelite - B

  7. #37
    pebibyte L'avatar di marcoc1712
    Registrato
    Jan 2013
    Messaggi
    5,254
    configurazione

    Predefinito

    Originariamente inviato da bigtube
    Veramente "Creaturo" (deriva dalla mia lingua madre: il Gallurese..... si diceva di un nuovo nato " Lu Criaturu" o se femmina "La Criatura" )....tranquillo ora non ho occhi che per lui
    Ottimo, allora "Lu Crriaturu" sia!
    Ciao, Marco.

    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction."
    — E. F. Schumacher (mis-attributed to A. Einstein)
    ________________________________________________________________________________
    Autore della patch R2 per Squeezelite e del plugin C-3PO. note libere
    Logitech media Server 7.9 > miniPc + squeezelite-R2 / SB+ > "Lu Scalmentu" NOS R2R DAC by TubeOne/ AudioResearch DAC 1-20 >
    Klimo Merlino Gold TPS > DIS Interconnect > Kent Gold > Reference > Monitor Audio Studio 20 SE

  8. #38
    byte
    Registrato
    May 2012
    Età
    50
    Messaggi
    188

    Predefinito

    Magari non vi interessa perché cosa da niubbi o perché scrivo anche di la.....comunque ho risolto con la spdf da alsa mixer ho attivato la stessa che era in mute.
    Mentre la chiamata deve essere hw:0,1.
    Ora che suona anche musica hd con il mio dac di riferimento posso dire che questo OS suona divinamente.
    Stefano

  9. #39
    tebibyte L'avatar di bigtube
    Registrato
    May 2012
    Località
    cagliari
    Età
    69
    Messaggi
    2,258
    configurazione

    Predefinito

    Originariamente inviato da dankan73
    Magari non vi interessa perché cosa da niubbi o perché scrivo anche di la.....comunque ho risolto con la spdf da alsa mixer ho attivato la stessa che era in mute.
    Mentre la chiamata deve essere hw:0,1.
    Ora che suona anche musica hd con il mio dac di riferimento posso dire che questo OS suona divinamente.
    Stefano
    Se stai parlando di wtfplay mi pare strano "hw:0,1"....nella documentazione le audiocard prendono un numero progressivo per interi cioe' 1 - 2 - 3 - etc che vengono elencati dando il comando "snd_scan"
    player1:thin client+voyage - player2:futros450+Debian > Usb Transport: I2soverUSB + DAC (6x1704+I/V a tubi) - Attenuatore passivo Lightspeed
    Ampli finale: OTL 6C33 - MyRef Fremen Ed. - Diff.: Diapason Adamantes II - Guida LMS+Squeezelite - B

  10. #40
    tebibyte L'avatar di UnixMan
    Registrato
    Sep 2013
    Messaggi
    2,529
    configurazione

    Predefinito

    Lol! È giusto. Mica significa "un decimo"!

    È il modo di ALSA di identificare i device.
    Significa prima interfaccia (,1) della prima scheda (:0).



    Inviato dal mio GT-I9100 utilizzando Tapatalk
    Ciao, Paolo.

    «Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»

Pagina 4 di 19
prima
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ... ultimo

Informazioni Thread

Users Browsing this Thread

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Regole d'invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
nexthardware.com - © 2002-2022