Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-05-2007, 15:08   #41
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Ecco il sorgente per una applicazione "console" che ho appena scritto per visualizzare numero di campioni, frequenza di campionamento e durata di un file WAV in formato PCM.

Naturalmente il sorgente non ha la pretesa di essere perfetto al 100%. In ogni caso può essere un ottimo punto di partenza!

Compilato con VC++.net 2003 e testato sui diversi file WAV forniti con Windows (per verificare, ho aperto i file anche con il "registratore di suoni" di Windows che mostra la durata).


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

#define WAVINFO_SUCCESS     0       /* Successo */
#define WAVINFO_IOERROR     1       /* Errore di I/O */
#define WAVINFO_BADFMT      2       /* Formato file non adatto */

#define WAVEFMT_SIZE        (sizeof (WAVEFORMATEX) - 2)

INT ReadWavInfo (LPSTR lpszFilename, LPDWORD lpdwSamples, LPDWORD lpdwFrequency)
{
    HMMIO           hmmio;
    MMCKINFO        mmckinfoWave;
    MMCKINFO        mmckinfoFmt;
    MMCKINFO        mmckinfoData;
    WAVEFORMATEX    wavefmt;

    hmmio = mmioOpen (lpszFilename, NULL, MMIO_READ);

    if (hmmio == NULL)
        return WAVINFO_IOERROR;

    mmckinfoWave.fccType = mmioFOURCC ('W', 'A', 'V', 'E');

    if (mmioDescend (hmmio, &mmckinfoWave, NULL, MMIO_FINDRIFF) != MMSYSERR_NOERROR)
    {
        mmioClose (hmmio, 0);
        return WAVINFO_IOERROR;
    }

    mmckinfoFmt.ckid = mmioFOURCC ('f', 'm', 't', ' ');

    if (mmioDescend (hmmio, &mmckinfoFmt, &mmckinfoWave, MMIO_FINDCHUNK) != MMSYSERR_NOERROR)
    {
        mmioClose (hmmio, 0);
        return WAVINFO_IOERROR;
    }

    if (mmckinfoFmt.cksize < WAVEFMT_SIZE)
    {
        mmioClose (hmmio, 0);
        return WAVINFO_BADFMT;
    }

    if (mmioRead (hmmio, (HPSTR) &wavefmt, WAVEFMT_SIZE) != WAVEFMT_SIZE)
    {
        mmioClose (hmmio, 0);
        return WAVINFO_IOERROR;
    }

    if (wavefmt.wFormatTag != WAVE_FORMAT_PCM)
    {
        mmioClose (hmmio, 0);
        return WAVINFO_BADFMT;
    }

    if (mmioAscend (hmmio, &mmckinfoFmt, 0) != MMSYSERR_NOERROR)
    {
        mmioClose (hmmio, 0);
        return WAVINFO_IOERROR;
    }

    mmckinfoData.ckid = mmioFOURCC ('d', 'a', 't', 'a');

    if (mmioDescend (hmmio, &mmckinfoData, &mmckinfoWave, MMIO_FINDCHUNK) != MMSYSERR_NOERROR)
    {
        mmioClose (hmmio, 0);
        return WAVINFO_IOERROR;
    }

    *lpdwSamples = mmckinfoData.cksize / (wavefmt.nChannels * (wavefmt.wBitsPerSample / 8));
    *lpdwFrequency = wavefmt.nSamplesPerSec;

    mmioClose (hmmio, 0);

    return WAVINFO_SUCCESS;
}


int main (int argc, char *argv[])
{
    INT     iRet;
    DWORD   dwSamples, dwFrequency;

    if (argc == 2)
    {
        iRet = ReadWavInfo (argv[1], &dwSamples, &dwFrequency);

        switch (iRet)
        {
            case WAVINFO_SUCCESS:
                printf ("Numero campioni         = %lu\n", dwSamples);
                printf ("Frequenza campionamento = %lu Hz\n", dwFrequency);
                printf ("Durata                  = %.3f secondi\n", ((double) dwSamples) / dwFrequency);
                break;
            case WAVINFO_IOERROR:
                printf ("Errore di I/O\n");
                break;
            case WAVINFO_BADFMT:
                printf ("Formato del file non adatto\n");
                break;
        }
    }

    return 0;
}
EDIT: ho nuovamente apportato qualche miglioramento.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)

Ultima modifica di andbin : 02-06-2007 alle 20:43.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2007, 16:09   #42
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Grazie vado a cercare d'elaborare una soluzione al mio problema.
__________________
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 31-05-2007, 19:40   #43
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
OK, problemi in compilazione.

Errore 1]
Che ho risolto in seguito:



, linkando nelle proprietà del compilatore di CodeBlocks, il file: "libwinmm.a".
L'ho fatto in CodeBlocks perchè col GCC non mi ricordo + come si linka.

Errore 2]
Che non sono ancora riuscito ad evitare:



CPU_FEATURES_INIT
, usando CodeBlocks sul codice sia di Andbin, sia di Okay, che del WevParser d'esempio HMMIO esce quel errore.

Magari quando capisco come linkare in GCC, provo a vedere se è 1 errore relativo a CodeBlocks
__________________
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 : 31-05-2007 alle 19:48.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2007, 16:20   #44
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
AAA

ADESSO LE COMPILAZIONI VANNO A BUON FINE, MA...

... al momento di leggere 1 file creato con lo strumento di Text To Speech (TTS) "DSpeech" di Dimitrios, il programmino di Andbin, mi dice che è mal formato, e questo è strano perchè Dimio mi ha detto di aver usato le API di Windows x il suo lavoro.



Quello di Okay va a segno:



Anche il codice dimostrativo di HMMIO:



Queste sono le impostazioni di DSpeech:

__________________
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 : 02-06-2007 alle 16:25.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2007, 20:49   #45
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
... al momento di leggere 1 file creato con lo strumento di Text To Speech (TTS) "DSpeech" di Dimitrios, il programmino di Andbin, mi dice che è mal formato, e questo è strano perchè Dimio mi ha detto di aver usato le API di Windows x il suo lavoro.
Il problema non è il file .wav, ma il mio sorgente. Inizialmente avevo fatto un controllo troppo rigoroso sulla dimensione del chunk "fmt". Leggendo meglio della documentazione sul formato WAV che ho trovato in rete, ho riscontrato che il contenuto di questo chunk può anche essere più lungo dei 16 byte "tipici".

Ho corretto/migliorato e quindi ripostato il sorgente nel mio post #41. Come avevo ben detto, non avevo alcuna pretesa che fosse perfetto al 100%.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2007, 10:53   #46
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Andbin, come mai al inizio del tuo sorgente non trovo l'include delle include <mmsystem.h>?

Quote:
#define STRICT
#include <windows.h>
#include <stdio.h>
Perchè la includo io col -lwinmm in compilazione?!
Fare l'include o l'opz -lwinmm è la stessa cosa?!

Invece questa

Quote:
#define STRICT
a che serve?
Io le DEFINE sono abituato a vederle associare delle costanti a dei nomi.
__________________
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 : 04-06-2007 alle 11:09.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2007, 11:09   #47
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Andbin, come mai al inizio del tuo sorgente non trovo l'include delle include <mmsystem.h>?
Perché la documentazione su MSDN per le varie funzioni mmioXXX dice:
Header: Declared in Mmsystem.h; include Windows.h.

Cioè sono effettivamente dichiarate in Mmsystem.h ma è sufficiente includere Windows.h

Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
#define STRICT
a che serve?
Io le DEFINE sono abituato a vederle associare delle costanti a dei nomi.
La macro STRICT serve per fare in modo che negli header del PSDK certi tipi di dati (principalmente gli handle ma anche altri) vengano definiti in modo che siano distinti e non assegnabili tra di loro (senza un cast esplicito).

Comunque leggi <qui> che spiega bene la cosa.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2007, 11:33   #48
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Ok, TNX.

Altra cosa che ho notato è che usi dei tipi
INT e int, c'è differenza?
__________________
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 04-06-2007, 11:48   #49
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
Altra cosa che ho notato è che usi dei tipi
INT e int, c'è differenza?
Negli header del PSDK vengono definiti molti tipi di dati, come INT, DWORD, LPBYTE, ecc....
Poi se vai a vedere in WinDef.h, INT è un semplice typedef per int, BYTE è un typedef per unsigned char, ecc...
Quando si programma a livello Win32 in genere è preferibile usare i suoi tipi di dati.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2007, 17:46   #50
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da andbin Guarda i messaggi
Negli header del PSDK vengono definiti molti tipi di dati, come INT, DWORD, LPBYTE, ecc....
Poi se vai a vedere in WinDef.h, INT è un semplice typedef per int, BYTE è un typedef per unsigned char, ecc...
Quando si programma a livello Win32 in genere è preferibile usare i suoi tipi di dati.
Ok ho imparato anche questo che mi suonava nuovo.
CMQ vedere 1 define prima degli include fa effetto.
__________________
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, 23:03   #51
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Per chi è rimasto sottoscritto a questo 3D segnalo il suo gemello:
[C] File audio MP3: 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.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
Una nuova immagine della cometa interste...
'La soluzione a un problema che non esis...
Radeon RX 9000 sì, Ryzen 9000 no:...
Amazon versa 180 milioni al Fisco e canc...
Meta, il Board di Supervisione guarda o...
DJI rivoluziona le consegne aeree: il nu...
Fibercop e Microsoft Italia uniscono per...
App Store Award 2025: scarica le 17 app ...
NVIDIA fa marcia indietro, il supporto P...
Addio definitivo alla GeForce GTX 1080: ...
Numeri record per gli iPhone 17: Apple s...
L'Italia del 2025 raccontata da Google: ...
Piaggio lancia Porter NPE, il pick-up el...
Xiaomi L1 a 153€: il proiettore smart 10...
Dopo Amazon, anche il data center di Gro...
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: 19:01.


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