Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
The Edge of Fate è Destiny 2.5. E questo è un problema
The Edge of Fate è Destiny 2.5. E questo è un problema
Bungie riesce a costruire una delle campagne più coinvolgenti della serie e introduce cambiamenti profondi al sistema di gioco, tra nuove stat e tier dell’equipaggiamento. Ma con risorse limitate e scelte discutibili, il vero salto evolutivo resta solo un’occasione mancata
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
AMD ha aggiornato l'offerta di CPU HEDT con i Ryzen Threadripper 9000 basati su architettura Zen 5. In questo articolo vediamo come si comportano i modelli con 64 e 32 core 9980X e 9970X. Venduti allo stesso prezzo dei predecessori e compatibili con il medesimo socket, le nuove proposte si candidano a essere ottimi compagni per chi è in cerca di potenza dei calcolo e tante linee PCI Express per workstation grafiche e destinate all'AI.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-06-2007, 13:15   #1
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
[C] File audio MP3: devo leggerne l'Header x saperne la lunghezza in tempo?!

Ebbene 1 mio incubo è diventato realtà!
Devo derminare anche per gli MP3 e gli AVI la rispettiva lunghezza in tempo.

Praticamente questo 3D potrebbe essere considerato il gemello di quest'altro, o la sua continuazione:
[C] File audio WAV: devo leggerne l'Header x saperne la lunghezza in tempo?!

Spero che si possano poi mettere in rilievo x tutti gli altri utenti a venire.

Intanto inizio a Goglare x vedere cosa trovo, inizialmente avevo anche pensato di trasformare il file MP3 in WAV, ma adesso vedo se ci sono altre strade.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2007, 13:18   #2
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Mooolto improbabile, ma magari esiste una qualche libreria unica o per ogni tipo del MIME possibile:
[RSS/ATOM] Gli enclosure video, di che tipo possono essere?!

[EDIT]
Info trovate su questo forum da tenere da conto:
C# Riprodurre Mp3
[C#]File mp3
c++ e mp3
[C][libreria almp3 di allegro] Strano problema...
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 13-06-2007 alle 13:35.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2007, 14:14   #3
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
La soluzione che ho pensato io è di usare le funzioni MCI (Media Control Interface) di Windows.

Con MCI è possibile gestire qualunque audio/video a patto di avere l'apposito codec. A partire da Windows 2000 il codec per MP3 c'è.

Ho scritto questo sorgente di prova, non è il massimo come struttura e gestione degli errori ma è una buona base di partenza.

Codice:
#define STRICT
#include <windows.h>
#include <stdio.h>

int main (int argc, char *argv[])
{
    MCIERROR mciErr;
    MCI_OPEN_PARMS mciOpen;
    MCI_SET_PARMS mciSet;
    MCI_STATUS_PARMS mciStatus;
    MCI_GENERIC_PARMS mciGen;

    if (argc == 2)
    {
        mciOpen.dwCallback = (DWORD_PTR) NULL;
        mciOpen.lpstrDeviceType = (char*) MCI_ALL_DEVICE_ID;
        mciOpen.lpstrElementName = argv[1];
        mciOpen.lpstrAlias = NULL;

        if ((mciErr = mciSendCommand ((MCIDEVICEID) NULL, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_WAIT, (DWORD) &mciOpen)) == 0)
        {
            mciSet.dwCallback = (DWORD_PTR) NULL;
            mciSet.dwTimeFormat = MCI_FORMAT_MILLISECONDS;

            if ((mciErr = mciSendCommand (mciOpen.wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT | MCI_WAIT, (DWORD) &mciSet)) == 0)
            {
                mciStatus.dwCallback = (DWORD_PTR) NULL;
                mciStatus.dwItem = MCI_STATUS_LENGTH;

                if ((mciErr = mciSendCommand (mciOpen.wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD) &mciStatus)) == 0)
                {
                    printf ("Lunghezza: %lu millisecondi\n", mciStatus.dwReturn);
                }
            }

            mciGen.dwCallback = (DWORD_PTR) NULL;

            mciErr = mciSendCommand (mciOpen.wDeviceID, MCI_CLOSE, MCI_WAIT, (DWORD) &mciGen);
        }
    }

    return 0;
}
Note:
1) Linkare con la libreria winmm.lib.

2) Ho provato con un file .AVI e funziona. Non ho potuto provare .WAV e .MP3 perché sono in ufficio e non ho la scheda audio. Sembra infatti che se non c'è la possibilità di fare "output", il messaggio MCI_OPEN fallisce (il ragionamento non fa una piega ... se non posso riprodurre, cosa apro il file a fare? ).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2007, 18:02   #4
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
I get it!
Adesso spesa lampo sotto casa e stasera lo provo.
TNX.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2007, 19:53   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Provato adesso a casa con .wav, .mid (MIDI), .mov (QuickTime) e .mp3. Funziona benone.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2007, 21:52   #6
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da andbin Guarda i messaggi
Provato adesso a casa con .wav, .mid (MIDI), .mov (QuickTime) e .mp3. Funziona benone.
Provato con WAV & MP3, adesso provo 1 AVI.

Se funziona allora per la miseriaccia, qui ti sei superato, con meno codice si fa D+!

Queste librerie MCI devono essere di fatto superiori alle Windows' MultiMedia (File) I/O (MMIO), ovvero "mmsystem.h".
Tra l'altro sono tutte incluse nello stesso windows.h.

Per completezza:
MCI su MSDN
Con MCI si può gestire qualunque formato audio-video a patto di avere un apposito CoDec.
A partire da Win2k il CoDec per MP3 ad esempio c'è nel SO.

ed il POST gemello:
[C] File audio WAV: devo leggerne l'Header x saperne la lunghezza in tempo?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 16-06-2007 alle 16:25.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2007, 11:51   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Queste librerie MCI devono essere di fatto superiori alle Windows' MultiMedia (File) I/O (MMIO), ovvero "mmsystem.h".
Tra l'altro sono tutte incluse nello stesso windows.h.
Beh, sono a due livelli diversi. Le funzioni mmioXXX permettono di accedere direttamente a file RIFF, mentre MCI è una interfaccia generica ad alto livello per poter operare su risorse multimediali di diverso tipo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2007, 12:10   #8
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da andbin Guarda i messaggi
Beh, sono a due livelli diversi. Le funzioni mmioXXX permettono di accedere direttamente a file RIFF, mentre MCI è una interfaccia generica ad alto livello per poter operare su risorse multimediali di diverso tipo.
Ma non è buona norma della programmazione usare il + alto livello là dove è possibile?!
In modo da non reinventare la ruota intendo ...

Cosa ci guadagno a lavorare con le MMIO al posto di queste ultime MCI?!
Ci guadagno in controllo?!
Ci perdo in portabilità verso Linux?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2007, 12:55   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Ma non è buona norma della programmazione usare il + alto livello là dove è possibile?!
In modo da non reinventare la ruota intendo ...
Dipende sempre da cosa si deve fare realmente. Con le funzioni mmioXXX hai il controllo completo di un file RIFF. Puoi leggere gli header, i campioni audio, ecc... Con MCI no. MCI poi ha il difetto a cui avevo accennato prima: se non c'è un dispositivo di riproduzione (scheda audio) i file audio non li apri con MCI.

Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Cosa ci guadagno a lavorare con le MMIO al posto di queste ultime MCI?!
Ci guadagno in controllo?!
L'unico guadagno è appunto il controllo sul file.

Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Ci perdo in portabilità verso Linux?!
In ogni caso, visto che le funzionalità di "multimedia" sono profondamente diverse tra differenti sistemi operativi.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2007, 13:19   #10
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da andbin Guarda i messaggi
Dipende sempre da cosa si deve fare realmente. Con le funzioni mmioXXX hai il controllo completo di un file RIFF. Puoi leggere gli header, i campioni audio, ecc... Con MCI no. MCI poi ha il difetto a cui avevo accennato prima: se non c'è un dispositivo di riproduzione (scheda audio) i file audio non li apri con MCI.
E' un riferimento indiretto della API del SO immagino, non un riferimento diretto del HW. Giusto?!
Intendo che le API controllano se è presente l'HW con qalche System Call e se questo NON c'è sono impostate per dare errore e crepare.
Tutto in maniera trasparente al programmatore.

Quote:
Originariamente inviato da andbin Guarda i messaggi
L'unico guadagno è appunto il controllo sul file.
Per imparare ad arrangiarmi e NON + a chiedere, anche se è bello discorrere con altri programmatori:
ogni volta che voglio programmare qualcosa in C, come in questo caso lo smanettamento nei sistemi multimediali, devo andare a vedere su MSDN se c'è qualcosa che fa al caso mio e poi decidere cosa voglio e poi procedere?!

Quote:
Originariamente inviato da andbin Guarda i messaggi
In ogni caso, visto che le funzionalità di "multimedia" sono profondamente diverse tra differenti sistemi operativi.
Quindi finchè programmo in C la portabilità è 1 sogno.
Cosa ci vorrebbe, il JAVA?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 14-06-2007 alle 13:21.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2007, 14:17   #11
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Quindi finchè programmo in C la portabilità è 1 sogno.
Cosa ci vorrebbe, il JAVA?!
Guarda che là fuori è pieno di librerie multipiattaforma per leggere i file multimediali.
Dopotutto visto che sono solo dei parser di strutture predefinite non c'è motivo per cui debbano essere legati ad una specifica piattaforma software.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2007, 14:18   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
E' un riferimento indiretto della API del SO immagino, non un riferimento diretto del HW. Giusto?!
Intendo che le API controllano se è presente l'HW con qalche System Call e se questo NON c'è sono impostate per dare errore e crepare.
Tutto in maniera trasparente al programmatore.
Esatto, le funzioni MCI controlleranno, penso in qualche modo, se c'è un device di riproduzione apposito per quel tal media.
Tra le API per il multimedia c'è una funzione UINT waveOutGetNumDevs(VOID) che fa nient'altro che ritornare il numero di dispositivi audio di output (sul mio PC d'ufficio che non ha scheda audio, ritorna un bel 0). È ipotizzabile che MCI usi questa funzione per sapere se è possibile riprodurre un file audio. Ovviamente non ne posso essere sicuro .....

Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Per imparare ad arrangiarmi e NON + a chiedere, anche se è bello discorrere con altri programmatori:
ogni volta che voglio programmare qualcosa in C, come in questo caso lo smanettamento nei sistemi multimediali, devo andare a vedere su MSDN se c'è qualcosa che fa al caso mio e poi decidere cosa voglio e poi procedere?!
Se ti riferisci al solo Windows, sì. MSDN è la bibbia per chi sviluppa su Windows.
Poi comunque chiedi pure, se hai dubbi.

Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Quindi finchè programmo in C la portabilità è 1 sogno.
Ci sono librerie apposite cross-platform ma il problema è solo "spostato". Non sei quindi tu a doverti preoccupare della compatibilità ma c'è stato qualcun'altro che si è preoccupato di "incapsulare" i dettagli sulle differenze tra i vari S.O. e di esporre al programmatore una API comune.

Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Cosa ci vorrebbe, il JAVA?!
Java in effetti ha delle API standard per il multimedia.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2007, 14:59   #13
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Guarda che là fuori è pieno di librerie multipiattaforma per leggere i file multimediali.
Dopotutto visto che sono solo dei parser di strutture predefinite non c'è motivo per cui debbano essere legati ad una specifica piattaforma software.
Sarà pur pieno ma:

1]
Non riesco a trovarle, manco googlando o coi tools di Google, saranno in decima pagina forse.

2]
Se ci sono, non son ben conosciute o descritte, non sono pubblicizzate insomma.

3]
Se ci fosse 1 posto dove trovarle tutte, un po' come DistroWatch.com per le distribuzioni di Linux, tutto sarebbe + semplice.

4]
Penso che ci saranno anche N librerie x stampare a video, ma io mi riferivo a qualcosa di "standard" o CMQ "standard de facto".
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 14-06-2007 alle 15:15.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2007, 15:13   #14
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da andbin Guarda i messaggi
Esatto, le funzioni MCI controlleranno, penso in qualche modo, se c'è un device di riproduzione apposito per quel tal media.
Tra le API per il multimedia c'è una funzione UINT waveOutGetNumDevs(VOID) che fa nient'altro che ritornare il numero di dispositivi audio di output (sul mio PC d'ufficio che non ha scheda audio, ritorna un bel 0). È ipotizzabile che MCI usi questa funzione per sapere se è possibile riprodurre un file audio. Ovviamente non ne posso essere sicuro .....
Ma queste librerie MMIO & MCI si possono propriamente chiamare Application Programming Interface (API) ?!!
Una applicazione sviluppata con queste windows.h inside la posso usare SOLO su Windows XP e Windows Vista?!

Quote:
Originariamente inviato da andbin Guarda i messaggi
Se ti riferisci al solo Windows, sì. MSDN è la bibbia per chi sviluppa su Windows.
Poi comunque chiedi pure, se hai dubbi.
Prima o poi come tutti vorrei imparare a prendere il volo da solo, ma la trovo molto dura per ora.

Quote:
Originariamente inviato da andbin Guarda i messaggi
Ci sono librerie apposite cross-platform ma il problema è solo "spostato". Non sei quindi tu a doverti preoccupare della compatibilità ma c'è stato qualcun'altro che si è preoccupato di "incapsulare" i dettagli sulle differenze tra i vari S.O. e di esporre al programmatore una API comune.
Quindi se queste API si basano sun System Call, le stesse API si preoccuperano di scegliere quale System Call di SO fare, almeno questo immagino.

Quote:
Originariamente inviato da andbin Guarda i messaggi
Java in effetti ha delle API standard per il multimedia.
Già il C++ ed il C# non mi paiono completamente standarizzati, quindi il Java mi affascina parecchio.
Il fatto di utilizzare la struttura PILA (STACK) ad esempio con la propria classe ed i propri metodi e fare le estensioni, etc... lo trovo una figata.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 14-06-2007 alle 15:17.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 14-06-2007, 16:59   #15
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Sarà pur pieno ma:

1]
Non riesco a trovarle, manco googlando o coi tools di Google, saranno in decima pagina forse.
Le prime che mi vengono in mente: libmad, lame (si può usare anche per decodificare gli mp3), libavcodec (guardati un pò FFMpeg).

Quote:
2]
Se ci sono, non son ben conosciute o descritte, non sono pubblicizzate insomma.
FFMpeg è abbastanza conosciuto, lame tanto sconosciuto poi non è.

Quote:
3]
Se ci fosse 1 posto dove trovarle tutte, un po' come DistroWatch.com per le distribuzioni di Linux, tutto sarebbe + semplice.
Basta impostare le parole giuste su google.
Se cerchi "mp3 decoder source" nella prima pagina trovi 2 delle 3 alternative che ti ho dato.

Quote:
4]
Penso che ci saranno anche N librerie x stampare a video, ma io mi riferivo a qualcosa di "standard" o CMQ "standard de facto".
In un mondo variegato trovare "standard de facto" è un'utopia.
Inoltre se cerchi uno standard de facto sicuramente non puoi usare le API Win32 che standard non sono.

Comunque solo per ribadire che la portabilità in C non è per niente un'utopia, anzi è il linguaggio più portabile che esista.
Pensa un pò per quante piattaforme è disponibile Java (la JVM chissà con cosa sarà scritta...), il C ANSI ne supporta anche di più!

Ultima modifica di tomminno : 14-06-2007 alle 17:02.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2007, 14:11   #16
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
printf ("Lunghezza: %lu millisecondi\n", mciStatus.dwReturn);
%lu indica "intero lungo senza segno"?!
Quindi da 32 a 64 bit?!

... dovrebbe essere così perchè L indica il "long double" mi pare e quindi con la virgola mobile.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 16-06-2007 alle 14:19.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2007, 19:45   #17
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
%lu indica "intero lungo senza segno"?!
Esatto, un unsigned long int, a 32 bit (che poi è il tipo di dato DWORD).

Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
L indica il "long double" mi pare e quindi con la virgola mobile.
Esatto.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2007, 11:10   #18
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Sempre con Andbin stiamo lavorando al fatto che fallisce la lettura dei file MP4 intesi come contenitore A-V in AVI's style.

Col codice che segue viene riportato a video il nomero del errore:
Codice:
#define STRICT
#include <windows.h>
#include <stdio.h>

int main (int argc, char *argv[])
{
    MCIERROR mciErr;
    MCI_OPEN_PARMS mciOpen;
    MCI_SET_PARMS mciSet;
    MCI_STATUS_PARMS mciStatus;
    MCI_GENERIC_PARMS mciGen;
    char stringa[512];

    if (argc == 2)
    {
        mciOpen.dwCallback = (DWORD_PTR) NULL;
        mciOpen.lpstrDeviceType = (char*) MCI_DEVTYPE_DIGITAL_VIDEO;
        mciOpen.lpstrElementName = argv[1];
        mciOpen.lpstrAlias = NULL;

        if ((mciErr = mciSendCommand ((MCIDEVICEID) NULL, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_WAIT, (DWORD) &mciOpen)) == 0)
        {
            mciSet.dwCallback = (DWORD_PTR) NULL;
            mciSet.dwTimeFormat = MCI_FORMAT_MILLISECONDS;

            if ((mciErr = mciSendCommand (mciOpen.wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT | MCI_WAIT, (DWORD) &mciSet)) == 0)
            {
                mciStatus.dwCallback = (DWORD_PTR) NULL;
                mciStatus.dwItem = MCI_STATUS_LENGTH;

                if ((mciErr = mciSendCommand (mciOpen.wDeviceID, MCI_STATUS, MCI_STATUS_ITEM | MCI_WAIT, (DWORD) &mciStatus)) == 0)
                {
                    printf ("Lunghezza: %lu millisecondi\n", mciStatus.dwReturn);
                }
                else
                {
                    mciGetErrorString(mciErr, stringa, 512);
                    printf("\nERRORE 1: %d> %s\n", mciErr, stringa);
                }

            }
            else
            {
                mciGetErrorString(mciErr, stringa, 512);
                printf("\nERRORE 2: %d> %s\n", mciErr, stringa);
            }

            mciGen.dwCallback = (DWORD_PTR) NULL;
            mciErr = mciSendCommand (mciOpen.wDeviceID, MCI_CLOSE, MCI_WAIT, (DWORD) &mciGen);
        }
        else
        {
            mciGetErrorString(mciErr, stringa, 512);
            printf("\nERRORE 3: %d> %s\n", mciErr, stringa);
        }

        return 100;
    }
else
    {
        printf("\nERRORE 4!\n");
        return -100;
    }

}
, che risulta essere:



Quindi 281 - 256 (della base) = 25

Quote:
#define MCIERR_MULTIPLE (MCIERR_BASE+24)
#define MCIERR_EXTENSION_NOT_FOUND (MCIERR_BASE+25)
#define MCIERR_OUTOFRANGE (MCIERR_BASE+26)
Il che dovrebbe indicare:

MCIERR_EXTENSION_NOT_FOUND:
"Impossibile determinare il tipo di dispositivo dall'estensione data."
"The specified extension has no device type associated with it. Specify a device type."
"L'estensione specificata non ha tipo di dispositivo connesso con esso. Specifichi un tipo di dispositivo."

Il che mi lascia così perchè non capisco che cavolo di dispositivo stia cercando.
Come si specificano i dispositivi?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 28-06-2007 alle 16:21.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2007, 11:25   #19
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Questo link:
Impossibile determinare la periferica dall'estensione di nome di file specificato

lo si trova cercando su Google la stringa che si è fatta stampare nel codice:
mciGetErrorString(mciErr, stringa, 512);
printf("\nERRORE 1: %d> %s\n", mciErr, stringa);


Quindi basta andare ad aggiungere la stringa:
mp4 con valore MPEGVideo
in quella chiave di registro.

__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 28-06-2007 alle 17:23.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2007, 21:09   #20
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Possibile che installando dei CoDec differenti la funzione che usa le MCI scazzi la lunghezza del file?

Io ho questo MP3:
iTourist_presentazione.mp3
da 1m17s e invece mi ritorna una bella lunghezza di 2m21s ovvero 141632ms.

Praticamente dal K-Lite sono passato al:
ffdshow
+
Haali
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 12-07-2007 alle 21:18.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale Acer TravelMate P4 14: tanta sostanza per l'uten...
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque Hisense M2 Pro: dove lo metti, sta. Mini proiett...
Schiaffo a Zuckerberg, offerta da 1 mili...
Intel XeSS 2.1 apre Frame Generation e L...
2 portatili tuttofare Lenovo da prendere...
Ericsson valuta un investimento strategi...
Abbiamo i processori più veloci d...
Inizia agosto, nuovi coupon nascosti Ama...
Dyson o low cost? Tutte le offerte sulle...
Linus Torvalds usa ancora una Radeon RX ...
Roborock Q7 L5+ è imperdibile a 2...
Identikit della scheda video perfetta, p...
SUV, 100% elettrico e costa meno di un b...
Hai mai caricato un referto su ChatGPT? ...
Apple vuole un nuovo campus nella Silico...
DJI Osmo 360, la nuova action cam a 360&...
Lo strumento anti-requisiti per Windows ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:51.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v