ATTENZIONE:: questa è una versione di sviluppo. Anche se Klaus la usa nel suo ambiente di produzione, si raccomanda vivamente di usarla all'interno di un ambiente controllato e solo per fare delle prove e cercare errori.
Cambiamenti dalla versione 1.7.8:
Sistemato il salvataggio della dimensione OSD attuale nel caso la periferica lo abbia cambiato nel suo menu opzioni (segnalato da Reinhard Nissl).
Sistemato cDevice::PlayTsVideo() e cDevice::PlayTsAudio() nel caso solo parte del buffer sia stato accettato dalla periferica (segnalato da Udo Richter).
Modificata l'opzione del filtro EIT per salvare un pò di agganci sulle periferiche che effettuano il filtraggio hardware.
Sistemata la cancellazione dei timer scaduti se hanno la voce VPS impostata, ma l'evento al quale sono associati non ha una voce VPS.
Sistemata la gestione della lunghezza dei nomi file sui sistemi VFAT nel caso contengano caratteri UTF-8 (grazie a Rolf Ahrenberg).
Sistemata la generazione CaPmts nel caso audio e video siano codificati utilizzando pids ECM diversi.
Aggiornata la pagina man vdr.1 per utilizzare i nuovi nomi file nelle directory di registrazione.
Sistemata cRecordings::DelByName() per evitare errori di compilazione con gcc 4.4 (grazie a Matthias Schwarzott).
Incrementato il valore di MAXFRAMESIZE per adattare meglio le registrazioni HD (grazie a Reinhard Nissl).
Implementata la piena gestione dei descrittori di sottotitoli (grazie a Mikko Tuumanen).
Hai bisogno della versione dei driver DVB che si trovano qui in modo da riprodurre le registrazioni TS con le schede DVB Full Featured!
Gli utenti con schede DVB Full Featured devono anche usare un nuovo firmware, disponibile qui.
Cambiamenti dalla versione 1.7.7:
Il nome della funzione cDevice::GetVideoSize() non era stata ben scelta per lo scopo di definizione della dimensione ottimale dell'OSD della periferica di uscita attuale. Perciò è stata introdotta una nuova funzione chiamata cDevice::GetOsdSize() (suggerito da Rolf Ahrenberg). Gli autori dei plugin dovrebbero implementare questa funzione nelle classi derivate da cDevice, se sono in grado di riprodurre l'audio. cDevice::GetVideoSize() esiste ancora e dovrebbe restituire la dimensione corrente del materiale video che viene attualmente riprodotto. Da notare che a causa dei tanti possibili formati del materiale video il tipo del parametro formato di GetVideoSize() è stato modificato in 'double', e il parametro Aspetto in entrambe le funzioni viene rinominato in modo diverso, visto che restituisce valori diversi (suggerito da Reinhard Nissl). Grazie a Oliver Endriss per il contributo del calcolo del fattore di Aspetto in GetOsdSize().
Sistemato il modo in cui la dimensione OSD viene determinata nelle schede DVD Full Featured (grazie a Oliver Endriss).
Incrementato MAXOSDHEIGHT a 1200 (suggerito da Nicolas Huillard).
Rimosso il limite della risoluzione PAL dalla gestione SPU.
Verifica di fd_video in cDvbDevice::GetVideoSize() per evitare messaggi di errore nei sistemi senza una reale periferica di riproduzione primaria (segnalato da Martin Neuditschko).
Aggiunta una nota a cTsToPes::GetPes() per il richiamo ripetuto, una volta che ha restituito un valore non-NULL.
Aggiunta la gestione di
MPEG 1 a
remux.c (grazie a Ales Jurik).
Sistemato l'uso di time_t in cEIT::cEIT() (grazie a Tobias Bratfisch).
Aggiunto un aggiornamento mancante di lastOsdSizeUpdate.
Ora gli eventi EIT vengono elaborati solo se un'ora di sistema plausibile è disponibile, per evitare una gestione errata dei descrittori PDC (grazie a Tobias Bratfisch).
Rimosso un membro 'synced' non utilizzato da cTsToPes (segnalato da Christoph Haubrich).
Aggiunta una nota a cTsToPes su tutti i pacchetti TS che devono appartenere allo stesso PID, e che per i dati video GetPes() può solo essere chiamato se il pacchetto TS successivo che verrà assegnato a PutTs() ha il flag “payload start” (suggerito da Christoph Haubrich).
Aggiunta una nota sul significato di PERCENTAGEDELTA in cRingBuffer::UpdatePercentage() (grazie a Rolf Ahrenberg).
La nuova opzione del menu “Gestione tasto Registrazione/Pausa” può essere usato per definire cosa succede se il tasto “Pausa” del telecomando viene premuto durante la modalità dal vivo (grazie a Timo Eskola).
Aggiunta una nota su cFont::GetFont() non essendo un thread sicuro.
Sistemata la generazione dei numeri di versione PAT/PMT in caso di cambio dei PIDs durante la registrazione (segnalato da Reinhard Nissl).
Aggiornati i testi OSD in ucraino (grazie a Yarema Aka Knedlyk).
Sistemata una perdita di memoria quando si raggiunge la fine di una registrazione durante la riproduzione (segnalato da Reinhard Nissl).
Sistemata la chiamata close(-1) in cUnbufferedFile::Close() (segnalato da Reinhard Nissl).
Aggiunta un'azione alternativa per la corruzione dei file header dei driver linux-dvb (basato su una patch di Tobias Grimm).
Sistemata la gestione della lunghezza delle sequenze dei comandi DiSEqC (segnalato da Reinhard Nissl).
Sistemata cOsdMenu::Display() in caso la dimensione del menu sia cambiata (grazie a Reinhard Nissl).
Aggiunta qualche parola mancante 'const' per evitare errori di compilazione con gcc 4.4 (grazie a Ville Skyttä e Ludwig Nussel).
Modificato cSVDRP::CmdGRAB() per evitare la scrittura nei dati 'const '(segnalato da Ludwig Nussel).
Sistemato il calcolo della larghezza della colonna del menu in caso il carattere abbia una dimensione oltre la dimensione predefinita (segnalato da Reinhard Nissl).
Aggiunta una verifica di plausibilità per i parametri di percentuale dell'OSD per evitare problemi in caso i valori siano salvati in modo errato nel file setup.conf.
Sistemati i tipi di variabile in cIndexFile (segnalato da Udo Richter).
Hai bisogno della versione dei driver DVB che si trovano qui in modo da riprodurre le registrazioni TS con le schede DVB Full Featured!
Gli utenti con schede DVB Full Featured devono anche usare un nuovo firmware, disponibile qui.
Da notare che i file header nelle ultime versioni dei driver possono non essere corretti. Se durante la compilazione di VDR hai messaggi di errore come questo:
/usr/include/sys/types.h:52: error: conflicting declaration 'typedef __ino64_t ino_t'
/usr/include/linux/types.h:14: error: 'ino_t' has a previous declaration as 'typedef __kernel_ino_t ino_t'
devi riportare i file header dove erano prima che non fossero corretti. Un modo per fare questo è di applicare la seguente patch (non dico che questo sia il modo giusto per sistemarlo, dal momento che gli sviluppatori dei driver possono avere buone ragioni per modificarlo. Comunque, sia il driver che VDR si compilano e funzionano correttamente con questo metodo).
Cambiamenti dalla versione 1.7.6:
La nuova funzione cDevice::GetVideoSize() riporta la dimensione e il formato del contenuto video attualmente visualizzato. Questa funzione viene usata per determinare la corretta dimensione dell'OSD. Gli autori di plugin dovrebbero implementare questa funzione nelle classi derivate da cDevice, se sono in grado di riprodurre il video.
Ora l'OSD e la dimensione dei caratteri viene definita in percentuale della dimensione reale del video mostrato. La dimensione massima dell'OSD è stata portata a 1920×1080, per permettere l'OSD a schermo pieno sui sistemi HD.
Ora la dimensione dell'OSD viene adattata automaticamente alla visualizzazione reale del video (fornito se la periferica d'uscita implementa la funzione GetVideoSize()).
Ora cFrameDetector::Analyze() si sincronizza sui bytes del pacchetto TS (grazie a Oliver Endriss per la segnalazione della perdita della generazione dell'indice dopo un sovraccarico del buffer).
Hai bisogno della versione dei driver DVB che si trovano qui in modo da riprodurre le registrazioni TS con le schede DVB Full Featured!
Gli utenti con schede DVB Full Featured devono anche usare un nuovo firmware, disponibile qui.
Da notare che i file header nelle ultime versioni dei driver possono non essere corretti. Se durante la compilazione di VDR hai messaggi di errore come questo:
/usr/include/sys/types.h:52: error: conflicting declaration 'typedef __ino64_t ino_t'
/usr/include/linux/types.h:14: error: 'ino_t' has a previous declaration as 'typedef __kernel_ino_t ino_t'
devi riportare i file header dove erano prima che non fossero corretti. Un modo per fare questo è di applicare la seguente patch (non dico che questo sia il modo giusto per sistemarlo, dal momento che gli sviluppatori dei driver possono avere buone ragioni per modificarlo. Comunque, sia il driver che VDR si compilano e funzionano correttamente con questo metodo).
Cambiamenti dalla versione 1.7.5:
Ora cDevice::PlayTs() si sincronizza sui bytes del pacchetto TS.
Impostato MAXFRAMESIZE come un multiplo di TS_SIZE per evitare la perdita di pacchetti TS.
Non è più necessario reimpostare patPmtParser in cDevice::PlayTs(), visto che faceva in modo che l'audio e le tracce dei sottotitoli selezionate ritornassero ai valori predefiniti.
Ora il comando SVDRP PUTE supporta la lettura dei dati EPG da un file selezionato (grazie a Helmut Auer).
Aggiunto cThread::SetIOPriority() e utilizzato in cRemoveDeletedRecordingsThread (grazie a Rolf Ahrenberg).
Sistemata la macro MEGABYTE() per farle gestire correttamente i parametri generati nei valori superiori a 2GB.
Aggiunto cDevice::NumProvidedSystems() nel file PLUGINS.html (era mancante da quando era stato implementato).
Sistemate le distorsioni generate al cambio del file successivo durante la riproduzione.
Sistemato il rilevamento della codifica per i flussi con distanze PTS di 1800, che apparentemente dividevano un frame tra due unità di carico utili.
Aggiunto un 'const' mancante a cRecording::FramesPerSecond() (grazie a Joachim Wilke).
Qualsiasi pacchetto TS nel primo “frame” dopo un taglio in una registrazione modificata che non appartiene ad un'unità di carico utile che è stata avviata in quel frame ora ottiene il loro insieme di flag TEI, in modo che un decoder le ignorerà insieme a qualsiasi dato PES raccolto per quel PID così vicino (grazie a Oliver Endriss per la segnalazione dei suoni di cinguettio che disturbano nei punti di modifica nelle registrazioni TS).
cDvbPlayer::Empty() sottrae 1 da readIndex, visto che Action() lo incrementa prima.
Salvataggio soltanto di valori PTS diversi da 0 in ptsIndex.
Aggiunta una nota nel file INSTALL sull'utilizzo delle sottodirectory per suddividere un disco capiente in diverse aree per i dati video di VDR e altro materiale (suggerito da Udo Richter).
La ragione principale di questa versione è ancora il passaggio a Transport Stream (TS) come formato di registrazione, così come una migliore sincronizzazione della riproduzione con la barra di avanzamento, modalità trucchi e sottotitoli.
Hai bisogno della versione dei driver DVB che si trovano qui oppure, alternativamente, applicare le seguenti due patch1 e patch2 (in questa sequenza) in modo da riprodurre le registrazioni TS con le schede DVB Full Featured! La seconda patch è necessaria soltanto per riprodurre le registrazioni con audio puro.
Gli utenti con schede DVB Full Featured devono anche usare un nuovo firmware, disponibile qui.
Da notare che i file header nelle ultime versioni dei driver possono non essere corretti. Se durante la compilazione di VDR hai messaggi di errore come questo:
/usr/include/sys/types.h:52: error: conflicting declaration 'typedef __ino64_t ino_t'
/usr/include/linux/types.h:14: error: 'ino_t' has a previous declaration as 'typedef __kernel_ino_t ino_t'
devi riportare i file header dove erano prima che non fossero corretti. Un modo per fare questo è di applicare la seguente patch (non dico che questo sia il modo giusto per sistemarlo, dal momento che gli sviluppatori dei driver possono avere buone ragioni per modificarlo. Comunque, sia il driver che VDR si compilano e funzionano correttamente con questo metodo).
Cambiamenti dalla versione 1.7.4:
Sistemata l'interruzione durante la riproduzione di una registrazione TS con i sottotitoli attivati (segnalato da Timo Helkio).
Sistemata la gestione del nuovo indicatore nel menu Registrazioni per le registrazioni TS (grazie a Derek Kelly).
Aggiunto un cap_sys_nice alle possibilità che non vengano eliminate (grazie a Rolf Ahrenberg).
Aggiornati i testi OSD in italiano (grazie a Diego Pierotto).
Aggiunto un cRecordingInfo::GetEvent() (grazie a Marcel Unbehaun).
Migliorata la sincronizzazione della barra di avanzamento, le modalità trucchi e visualizzazione sottotitoli dell'audio e video attuali. Ora questo funziona indipendentemente da ogni dimensione del buffer che la periferica d'uscita possa avere.
La classe cBackTrace è stata sostituita con cPtsIndex, che tiene traccia della cronologia PTS dei frame più recentemente riprodotti.
Ora un cDevice::GetSTC() viene richiesto per consegnare la STC anche nella modalità trucchi. E' sufficiente che riporti il PTS del più recente frame audio/video presentato.
Le schede DVB Full Featured hanno bisogno di un firmware migliorato in modo da riportare i corretti valori STC nella modalità trucchi (grazie a Oliver Endriss per la miglioria del firmware av7110).
Adattato cFrameDetector::Analyze() alle trasmissioni 'HD NTSC' che dividono i frame in diverse unità di carico utile (grazie a Derek Kelly per la segnalazione e l'aiuto durante la fase di test).
Modificato cFrameDetector::Analyze() per far elaborare interi frame uno alla volta, in modo che il sovraccarico di I/O venga minimizzato durante la registrazione (segnalato da Günter Niedermeier).
Aggiunto un aiuto nella riga di comando per l'opzione '-i'.
Sistemato cDvbPlayer::NextFile() per la gestione dei file più grandi di 2GB (grazie a Jose Alberto Reguero).
Migliorata la riproduzione all'inizio e alla fine di una registrazione. Il primi e l'ultimo frame in assoluto ora vengono inviati alla periferica d'uscita ripetutamente finché GetSTC() segnala che è stato riprodotto. cDvbPlayer::Action() non chiama più DeviceFlush() (grazie a Reinhard Nissl per avere fatto in modo che vdr-xine non ne avesse più bisogno).
Aggiunto un paio di '[]' mancanti all'operatore di cancellazione in cMenuEditStrItem::~cMenuEditStrItem().
Aggiunto un distruttore virtuale mancante a cPalette.
Ora viene liberata la directory di configurazione prima di impostarla ad un nuovo valore in cPlugin::SetConfigDirectory().
Sistemato un crash durante il salto ad un marcatore di modifica in una registrazione audio.
Sistemata la condizione 'VideoOnly' nelle chiamate PlayPes() e PlayTs() in cDvbPlayer::Action() (grazie a Reinhard Nissl).
Ora cDevice::PlayTs() riproduce tanti pacchetti TS quanti siano possibili in una sola chiamata.
Viene assicurato che ogni numero floating point scritto utilizzi un punto decimale (grazie a Oliver Endriss per avere trovato un problema con il record F nelle informazioni del file di una registrazione).
Sistemato il rilevamento del frame rate per le registrazioni radio.
Aggiunte le chiamate AUDIO_PAUSE/AUDIO_CONTINUE mancanti a cDvbDevice (grazie a Oliver Endriss).
Non è più necessario la scrittura del tipo di video nel file 'channels.conf' se il VPID è uguale a 0 (grazie a Oliver Endriss per la segnalazione).
Migliorata l'efficienza di cEIT::cEIT() (grazie a Tobias Bratfisch).
La ragione principale di questa versione è ancora il passaggio a Transport Stream (TS) come formato di registrazione. Esistono ancora alcune cose che non funzionano, principalmente:
I file di registrazione più grandi di 4GB oppure con più di 255 file diversi non sono ancora stati testati.
Il funzionamento della registrazione delle trasmissioni h.264 è stato approssimativamente verificato, ma nessuna riproduzione di questo tipo è ancora stata verificata.
NON USARE QUESTA VERSIONE PER REGISTRAZIONI IN UN AMBIENTE PRODUTTIVO! LA REGISTRAZIONE O ALTRI FORMATI DEI FILE POSSONO ANCORA CAMBIARE E QUALSIASI REGISTRAZIONE FATTA CON QUESTA VERSIONE POTREBBE NON FUNZIONARE CON LE FUTURE VERSIONI! A discapito di ciò, spero che ci siano persone che diano un'occhiata alle modifiche e forse provino il nuovo formato di registrazione - e segnalino i bachi oppure forniscano le correzioni ,-)
E' necessario patchare i driver con av7110_ts_replay__1.diff per poter riprodurre le registrazioni TS con le schede DVB full featured! Senza questa patch la riproduzione e la modalità di trasferimento con queste schede non sarà possibile!
Cambiamenti dalla versione 1.7.3:
Rimosso il #define FE_CAN_2ND_GEN_MODULATION, dal momento che era sbagliato e ora il valore è presente nel driver, in ogni modo.
Ora viene data la possibilità alle schede DVB full-featured di riprodurre direttamente dati TS (grazie a Oliver Endriss per l'integrazione del driver 'av7110' che permette la riproduzione dei dati TS). La patch
av7110_ts_replay__1.diff implementa questa modifica nel driver. La patch 'av7110_v4ldvb_api5_audiobuf_test_1.diff' menzionata nella versione 1.7.2 è ancora necessaria per evitare malfunzionamenti audio e video in alcuni canali.
Aggiunto un typecast in cUnbufferedFile::Write() per evitare un messaggio di errore quando si compila su sistemi a 64 bit.
Aggiunte alcune assegnazioni 'const' mancanti in cBitmap (grazie ad Andreas Regel).
Sistemata la restituzione completa dei pacchetti PES in cTsToPes::GetPes() (grazie a Reinhard Nissl).
Aggiunto un Detach() mancante in cTransfer::Activate() (grazie a Marco Schlüßler).
Aggiunta la pulizia dei buffer TS in cDevice::Detach() (grazie a Marco Schlüßler).
Sistemato l'incremento del contatore di continuità in cPatPmtGenerator::GetPmt() (grazie a Johann Friedrichs).
Sistemata la rimozione delle directory eliminate nel caso esista un problema. Una volta che una registrazione aveva causato un problema con la rimozione, nessun'altra veniva più rimossa e una registrazione in corso poteva riempire il disco e fare in modo che le altre registrazioni fossero eliminate automaticamente (segnalato da Reinhard Nissl).
Aggiunto “DEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE” al file Make.config.template (grazie a Johann Friedrichs per la soluzione). Gli autori dei plugin dovrebbero aggiungere questa riga nel loro Makefile o Make.config se utilizzano le funzioni dei file d'accesso che necessitano di versioni speciali per sistemi a 64 bit.
La nuova opzione della linea dei comando '-i' può essere usata per impostare un “ID della istanza”, che sarà utilizzata per distinguere le registrazioni della stessa emittente fatte con differenti istanze di VDR (suggerito da Frank Schmirler). Questo sostituisce l'uso dell'“ID di ripristino” che era stato introdotto nella versione 1.7.3.
Aggiunta una verifica mutexCurrentAudioTrack a cDevice::PlayTs() (grazie a Reinhard Nissl per la soluzione).
Sistemata la gestione del campo puntatore in cPatPmtParser::ParsePmt() (grazie a Frank Schmirler - mi scuso per avere scambiato 2 righe durante l'implementazione della patch originale).
Verifica della lunghezza del pacchetto rimanente dopo l'elaborazione del campo puntatore in cPatPmtParser::ParsePat() e cPatPmtParser::ParsePmt() (suggerito da Frank Schmirler).
Verifica del campo puntatore in cPatPmtParser::ParsePmt() solo nei pacchetti 'avvio carico utile'(suggerito da Frank Schmirler).
Modificato cPatPmtGenerator per essere sicuri che il pid PMT non contrasti con nessuno dei pid attuali del canale.
Sistemato cDevice::PlayTsAudio() e fatto che cDevice::PlayTsVideo() restituisca 0 se PlayVideo() non riproduce niente.
Aggiunto un typecast 'int' ai calcoli che generano i FramesPerSecond() per evitare gli avvisi di compilazione (segnalato da Winfried Koehler).
Sistemato il rilevamento dei frame per le registrazione con audio puro.
Sistemata la modifica delle registrazioni PES. Il tipo del frame nel file index.vdr generato per la registrazione PES modificata viene impostato a 1 per I-frames e 2 per tutti gli altri (P- e B-frames). Il tipo di frame esatto non interessa a VDR, esso deve solo sapere se è un I-frame oppure no.
Ora il PAT/PMT viene elaborato solo se la sua versione cambia (segnalato da Reinhard Nissl).
Sistemata la gestione della dimensione massima del file video (segnalato da Udo Richter).
Migliorato l'avanzamento/riavvolgimento veloce per le registrazioni audio. Ora i dati attuali vengono inviati alla periferica di uscita, in modo che possano essere riprodotti e così genera un ritardo adeguato. Per le registrazioni con audio puro l'audio non viene più ammutolito nella modalità avanzamento/riavvolgimento veloce, in questo modo è possibile l'orientamento che riguarda la posizione all'interno della registrazione. Ci può ancora essere qualche diversità nella posizione di riproduzione mostrata dall'indicatore di posizione durante il passaggio dall'avanzamento/riavvolgimento veloce alla modalità riproduzione, così come nella posizione attuale durante la modalità di riproduzione normale. Questo è dovuto ai diversi buffer tra il lettore e la periferica di uscita che sarà indirizzato più tardi. Notare la nuova funzione cDevice::IsPlayingVideo(), che viene usata per informare il lettore se esistono dati video nel flusso di riproduzione attuale. Se una classe cDevice derivata reimplementa PlayTs() oppure PlayPes(), ha anche bisogno di essere sicuro che questa nuova funzione lavori come aspettato.
La ragione principale di questa versione è il passaggio del formato di registrazione a Transport Stream (TS). Esistono ancora alcune cose che non funzionano, principalmente:
La registrazione/riproduzione delle trasmissioni con audio puro ancora non funzionano.
I file di registrazione più grandi di 4GB oppure con più di 255 file diversi non sono ancora stati testati.
Il funzionamento della registrazione delle trasmissioni h.264 è stato approssimativamente verificato, ma nessuna riproduzione di questo tipo è ancora stata verificata.
Apparentemente esiste ancora un problema con la modifica delle vecchie registrazioni PES. Viene creata una registrazione modificata, ma non può essere riprodotta.
NON USARE QUESTA VERSIONE PER REGISTRAZIONI IN UN AMBIENTE PRODUTTIVO! LA REGISTRAZIONE O ALTRI FORMATI DEI FILE POSSONO ANCORA CAMBIARE E QUALSIASI REGISTRAZIONE FATTA CON QUESTA VERSIONE POTREBBE NON FUNZIONARE CON LE FUTURE VERSIONI! A discapito di ciò, spero che ci siano persone che diano un'occhiata alle modifiche e forse provino il nuovo formato di registrazione - e segnalino i bachi oppure forniscano le correzioni ,-)
Cambiamenti dalla versione 1.7.2:
Aggiornati i testi OSD in russo (grazie a Oleg Roitburd).
Sistemata la gestione del 'campo puntatore' durante la generazione e la lettura PAT/PAM (grazie a Frank Schmirler).
Sistemata la gestione dei tipi di modulazione per i transponder DVB-S durante l'elaborazione del NIT.
Cambiato cDvbDevice::GrabImage() per usare V4L2 (grazie a Marco Schlüßler).
Aggiunta una richiesta cDvbDevice::PlayVideo() e cDvbDevice::PlayAudio() per evitare l'uso eccessivo della CPU (questa è soltanto una soluzione improvvisata finché le schede FF DVB potranno riprodurre direttamente il TS).
Ora il formato di registrazione è il Transport Stream. Le registrazioni esistenti nel formato PES possono ancora essere riprodotte e modificate, ma le nuove registrazioni vengono fatte in TS. Tutto il codice per il PES è stato rimosso. Le seguenti modifiche sono state fatte per passare al formato di registrazione TS:
Il formato del file indice è stato modificato per supportare la dimensione dei file fino a 1TB (precedentemente era fino a 2GB), e fino a 65535 file separati per registrazione (prima erano 255).
Ora i nomi dei file di registrazione sono nella forma 00001.ts (prima erano nella forma 001.vdr).
Ora il frame rate viene rilevato mediante la ricerca di 2 valori PTS successivi. I “frames al secondo” (in multipli di 1/90000) vengono salvati nel file info.vdr utilizzando una nuova etichetta F (grazie ad Artur Skawina per l'aiuto dato per ottenere il corretto calcolo di IndexToHMSF()).
Ora parecchie funzioni hanno un parametro aggiuntivo FramesPerSecond.
Ora parecchie funzioni hanno un parametro aggiuntivo IsPesRecording.
La funzionalità di cFileWriter è stata spostata in cRecorder, e ora cRemux è obsoleto. Questo evita anche un livello di copia dei dati durante la registrazione.
cRemux, cRingBufferLinearPes, cTS2PES e tutte le classi c*Repacker sono state rimosse.
Un PAT/PMT viene inserito prima di ogni frame indipendente, in modo che nessuna misurazione extra deva essere effettuata durante la modifica di una registrazione.
Il nome della directory di una registrazione è stato modificato da YYYY-MM-DD-hh[.:]mm.pr.lt.rec (pr=priorità, lt=scadenza) in YYYY-MM-DD-hh.mm.ch-ri.rec (ch=canale, ri=ID di ripristino). Ora la priorità e la scadenza vengono salvate nel file info.vdr con le nuove etichette P ed L (se non esiste tale file, i valori massimi vengono presunti in modo predefinito, il che evita l'eliminazione inavvertita di una registrazione se lo spazio del disco è ridotto). Il non salvataggio della Priorità e della Scadenza nel nome della directory evita l'avvio di una nuova registrazione se uno di questi valori viene modificato nel timer e la registrazione viene riavviata per qualche motivo. Invece della Priorità e della Scadenza, ora il nome della directory contiene il numero del canale dal quale la registrazione è stata effettuata, e il valore “ID di ripristino” di questa istanza di VDR. Questo evita problemi se parecchie istanze di VDR registrano spettacoli su canali differenti, oppure anche sullo stesso canale. Il simbolo '-' tra il numero del canale e l'ID di ripristino impedisce alle vecchie versioni di VDR di “vedere” queste registrazioni, rendendo più sicuro il tentativo di riproduzione di esse, oppure di rimozione nel caso in cui il disco sia pieno.
E' stata modificata la semantica di PlayTs*(). Ora queste funzioni sono richieste per restituire la lunghezza assegnata (che corrisponde a TS_SIZE) se hanno elaborato il pacchetto TS.
Ora i file “index”, “info”, “marks” e “resume” all'interno della directory di registrazione TS vengono creati senza l'estensione ”.vdr”.
Il file “resume” non è più un file binario, ma contiene linee etichettate per essere in grado di memorizzare informazione aggiuntiva, come l'audio selezionato o la traccia dei sottotitoli.
Ora cDevice::StillPicture() verrà chiamato sia con dati TS che PES.
cDvbPlayer::Goto() non aggiunge più una “sequenza di fine codice” ai dati. Se la periferica di uscita ne ha bisogno, essa deve prendersi cura di ciò da sola.
Sistemato cPatPmtParser::ParsePmt() per reimpostare vpid e vtype durante il passaggio da un canale video ad uno audio (grazie a Reinhard Nissl).
Ora cDvbDevice utilizza il valore FE_CAN_2G_MODULATION per determinare se una periferica può gestire il DVB-S2. Il #define è ancora presente per permettere alle persone con i driver più vecchi che non hanno bisogno del DVB-S2 di usare questa versione senza applicare alcuna patch.
Cambiamenti dalla versione 1.7.1:
Aggiunta una nota alla descrizione di cDevice::PlayAudio() riguardo al fatto che il valore 'Id' sia obsoleto.
Passaggio al nuovo driver
API chiamato S2API, visto che è stato deciso che diventerà il l'
API DVB ufficiale nel kernel (basato sulle patches di Igor M. Liplianin, Niels Wagenaar e Edgar Hucek). Ora VDR utilizza il driver S2API preso da
http://linuxtv.org/hg/v4l-dvb. In modo da rilevare correttamente le periferiche DVB-S2 compatibili, devi applicare la patch che si trova in
v4l-dvb-s2api-add-s2-capability.diff ai sorgenti del driver, visto che S2API non fornisce un modo per dire se una periferica possa gestire i transponder DVB-S2.
Ora la funzione cDvbTuner::IsTunedTo() verifica anche il symbol rate nel caso di DVB-S e DVB-C.
Migliorata la gestione dei pacchetti video PES con lunghezza zero quando si converte da TS a PES. Per una buona riproduzione nella “modalità trasferimento” sulle schede DVB full featured devi applicare la patch da
av7110_v4ldvb_api5_audiobuf_test_1.diff al driver (grazie a Oliver Endriss).
Cambiamenti dalla versione 1.7.0:
-
Aggiornati i testi OSD in italiano (grazie a Diego Pierotto).
Rimossa la obsoleta $(NCURSESLIB) dal file Makefile.
Implementata la gestione del descrittore del componente standard per AC3 (stream=4), visto che sarà presto utilizzato dai canali tedeschi di ARD (grazie a Michael Pennewiß per l'informazione fornita su questa modifica). Il canale usato precedentemente da “Premiere pseudo standard” (stream=2, type=5) funziona ancora, ma è stato apparentemente usato erroneamente dalle emittenti per l'avvio.
Aggiunta una descrizione mancante del parametro 'S' del canale nel file vdr.5 (segnalato da Reinhard Nissl).
Ora il messaggio SVDRP di “signon” indica il carattere di codifica in uso, come ad esempio in “220 video SVDRP VideoDiskRecorder 1.7.1; Ven Mag 2 16:17:10 2008;
ISO-8859-1”. Questo può essere utile ad esempio per strumenti esterni che forniscono dati EPG, in modo che possano codificare correttamente le stringhe.
Non più chiamate FcFini() per evitare i problemi con le vecchie (non funzionanti) versioni di fontconfig (suggerito da Edgar Toernig).
Rimossa l'opzione di compilazione VFAT per permettere agli utenti delle distribuzioni dei binari precompilati di avere il pieno controllo se usare o meno l'opzione –vfat all'avvio (suggerito da Michael Nork).
Primi passi verso il cambiamento a TS (Transport Stream) come formato di registrazione:
La nuova funzione cDevice::PlayTs() viene usata per riprodurre i pacchetti TS.
Le nuove funzioni cDevice::PlayTsVideo() e cDevice::PlayTsAudio() vengono usate per riprodurre i pacchetti TS video ed audio, rispettivamente.
La nuova funzione cAudio::PlayTs() viene usata per riprodurre i pacchetti TS audio.
La nuova classe cPatPmtGenerator viene usata per generare una coppia PAT/PMT che precede i dati TS nella modalità trasferimento.
La nuova classe cPatPmtParser viene usata da cDevice per elaborare i dati PAT/PMT in TS in modo da trovare quale flussi contiene.
La nuova classe cTsToPes viene usata per convertire i pacchetti TS in un pacchetto PES.
cTransfer non utilizza più cRemux, e non esegue ogni volta un processo separato. Genera soltanto un PAT/PMT ed invia tutti i pacchetti TS a PlayTs() della scheda primaria.
La visualizzazione dei sottotitoli dal vivo non utilizza più un ring buffer ed un processo separato.
cPesAssembler è stato rimosso. Le vecchie registrazioni di VDR contengono soltanto pacchetti PES.
Dal momento che un TS necessita di avere un PAT/PMT, che richiede il tipo di flusso video da essere esplicitamente assegnato, il formato del campo VPID nel file channels.conf e dei comandi SVDRP NEWC/MODC/LSTC sono stati migliorati. Ora il tipo di flusso video segue il VPID e l'opzionale PPID, separati da un segno '='.
Aggiornato il file sources.conf (grazie ad Oleg Roitburd).
Sistemato un possibile overflow integer in GetAbsTime() (grazie ad Alexander Rieger).
Sistemato un problema dalla chiamata isyslog() all'interno di SignalHandler() (grazie ad Udo Richter).
Sostituito il codice della lingua finlandese “smi” con “suo” (grazie a Rolf Ahrenberg).
Sistemato un valore errato di TableIdBAT in libsi/si.h (grazie a Winfried Köhler).
Gli errori nei file di configurazione non fermano più l'avvio di VDR.
Rimossi i file include <linux/dvb/dmx.h> e <time.h> dal file remux.h non più necessari (segnalato da Tobias Grimm).
Questa versione viene portata al driver multiproto e non funzionerà più con i driver senza multiproto. Spero che presto ci sia un unico driver sorgente che combini l'ultima versione multiproto con le modifiche full ts mod di Oliver Endriss
Da notare che questa versione implementa solo la gestione base di DVB-S2. Non esiste ancora supporto per H.264. Questa sarà introdotto nelle versioni successive alla 1.7.x.
Implementata nuovamente la gestione di DVB-S2, che era stata introdotta in precedenza nella versione 1.5.14, ma poi era stata eliminata nella versione 1.5.15 in modo da creare la versione stabile 1.6.0. Ora VDR richiede il driver DVB
multiproto, ad esempio quello che si trova in
http://jusst.de/hg/multiproto. Da notare che ora il file
channels.conf supporta parametri aggiuntivi, quindi devi essere sicuro di avere un backup di tale file se intendi successivamente ritornare alla versione precedente di VDR!
Sistemata la visualizzazione dei dati del transponder quando viene modificato (grazie a Reinhard Nissl).
Sistemata la gestione del contatore quando vengono trovati dati PS nelle versioni precedenti alla 1.3.19 (grazie a Reinhard Nissl).
Migliorato il log delle modifiche dell'ora di sistema per evitare problemi nei sistemi più lenti in caso di uso intensivo (suggerito da Helmut Auer).
Ora viene impostato il nome del thread, in modo che venga visto in 'top -H' (grazie a Rolf Ahrenberg).
Sistemata l'inizializzazione delle bandierine del timer nel costruttore di copia cTimer (grazie ad Andreas Mair).
Sistemata l'impostazione del livello OSD nell'esempio osddemo (grazie a Wolfgang Rohdewald).
Incrementato il tempo trascorso per la verifica dello stato della CAM a 500ms per evitare problemi con altre CAM (segnalato da Arthur Konovalov).