ffmpeg funziona male

Postate qui se avete consigli per migliorare i pacchetti disponibili in questo sito o se avete problemi con installazione, funzionamento o altro.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il nome del pacchetto.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
lgiancri
Linux 0.x
Linux 0.x
Messaggi: 35
Iscritto il: gio 22 set 2005, 20:00

ffmpeg funziona male

Messaggio da lgiancri »

ragazzi da qualche giorno le applicazioni che compilo con ffmpeg funzionano male. Ho aggiornato il suddetto pacchetto via SVN, ma tutto sballa sin dal ./configure (segmentation fault!!!). Ho Slackware 11.0 con kernel 2.6.20.4
avete qualche idea??
luigi

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

Le applicazioni che compili con ffmpeg!?!?! :shock:

Spiegati meglio, con calma...

lgiancri
Linux 0.x
Linux 0.x
Messaggi: 35
Iscritto il: gio 22 set 2005, 20:00

soluzione

Messaggio da lgiancri »

il problema era creato da ffmpeg, ma trova origine nel file /usr/bin/stdint.h: il valore int64_c viene inizializzato correttamente (almeno per quanto riguarda i miei usi) se al gcc viene passato il seguente flag:
-D__STDC_CONSTANT_MACROS
in assenza di tale flag, i programmi che fanno uso di tali numeri interi, e che usano le librerie libavcodec e libavformat, generano un errore. L'errore NON si manifesta compilando solo ffmpeg, ma al momento di compilare altri programmi che usano libavformat.
Luigi

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

Boh, secondo me dovresti spiegre un po' meglio i tuoi problemi, e con calma, dato che così non si capisce niente. /usr/bin/stdint.h poi è un po' assurdo...

lgiancri
Linux 0.x
Linux 0.x
Messaggi: 35
Iscritto il: gio 22 set 2005, 20:00

Messaggio da lgiancri »

allora vediamo di andare con ordine:
1) due anni fa, a scopi puramente didattici, ho iniziato a scrivere (soprattutto in c++) un video player. Grazie alla disponibilità dei sorgenti di Xine, mplayer ed altri programmi ho potuto, assieme ai miei alunni, imparare un bel po' di cose. Viva l'open source, la GPL, Linus, Stallman e Patrick.

2) il video player "nostrano" utilizza la libreria ffmpeg per decodificare alcuni formati (xvid);

3) tutto ha, miracolosamente, funzionato per tutto questo tempo (circa due anni) grazie al lavoro degli alunni che hanno ripulito il codice;

4) la settimana scorsa ho aggiornato, a distanza di qualche giorno l'uno dall'altro, sia il kernel (passando al 2.6.20.4) che ffmpeg. Ricompilando sia ffmpeg che il video player "nostrano" mi sono comparsi errori di varia natura: SIGFAULT e errori durante la fase di make.

5) ho provato ad aggiornare il pacchetto gcc passando alla versione 4.1.2, e alcuni errori sono cessati. FFmpeg si compilava bene. Quando compilavo il video player "nostrano" rimanevano una serie di errori, ad. esempio
/usr/local/include/ffmpeg/avformat.h:66 error: `INT64_C' was not declared in this scope
/usr/local/include/ffmpeg/avformat.h:67 error: integer constant is too large for "long" type

(tenere presente che durante la compilazione di ffmpeg invece tutto filava liscio)
dopo un po' di ricerche ho scoperto che la macro int64_c viene definita nel file stdint.h, ma viene attivata solo se __STDC_LIMIT_MACROS è stata definita

****** estratto del file stdint.h ******************
/* The ISO C99 standard specifies that in C++ implementations these
macros should only be defined if explicitly requested. */
#if !defined __cplusplus || defined __STDC_LIMIT_MACROS

# if __WORDSIZE == 64
# define __INT64_C(c) c ## L
# define __UINT64_C(c) c ## UL
# else
# define __INT64_C(c) c ## LL
# define __UINT64_C(c) c ## ULL
# endif

****************************************************

ho apportato la variazione al mio file di make (quello che compila il video player "nostrano") e tutto è tornato a funzionare.

Spero di avere chiarito tutti i dubbi. E mi scuso se il mio linguaggio non è informatichese perfetto, ma, di solito, mi occupo d'altro.
lgiancri

Avatar utente
submax82
Staff
Staff
Messaggi: 3202
Iscritto il: mer 31 ago 2005, 0:00
Desktop: xfce
Distribuzione: SalixOS
Contatta:

Messaggio da submax82 »

magari avessi avuto professori così... :cry:

Rispondi