vdr --genindex fails on radio recording

Message ID 1393174701.6943.1467304151192.JavaMail.zimbra@keynet-technology.com
State New
Headers

Commit Message

Richard F July 2, 2016, 9 a.m. UTC
  Hi Thomas, 

The patch is a tiny bit different for VDR 2.2.0 - in remux.c - see below 

There's a small issue with audio types also: 
Here, AAC (ADTS) per ISO/IEC 13818-7 or AAC (LATM) per ISO/IEC 14496-3 is regularly used for audio in HD broadcasts 
- my suggestion is that these streams should be handled too. 
For example, I transcode radio/audio to AAC in m4a or AAC_LATM in .ts files. 
Arguably the newer ATSC, DTS, Dolby true HD... streams should be added too 
( https://en.wikipedia.org/wiki/Program-specific_information#Elementary_stream_types ) 

For now my audioparser line looks like this, which works for both flavours of AAC, and they play on Kodi and VLC. 
else if (type == 0x03 || type == 0x04 || type == 0x06 || type == 0x0F || type == 0x11) // MPEG2,4 AAC, AC3 audio 

The original audio-only .ts (MP2 codec) actually doesn't play in VLC, but plays in ffplay. 

Patch: 




On 27/06/2016 06:46, Thomas Reufer wrote: 


Hi Richard 

I observed the same behavior two weeks ago when I wanted to replay an edited radio recording. Please find my proposed fix attached, maybe Klaus will take it into the next VDR developer release. 

Regards, 
Thomas 

Quoting Richard F <lists@keynet-technology.com> :
  

Patch

--- remux.c.orig 2016-06-30 14:16:52.530155071 +0100 
+++ remux.c 2016-06-30 14:36:09.028232179 +0100 
@@ -604,6 +604,7 @@  

void cPatPmtParser::Reset(void) 
{ 
+ completed = false; 
pmtSize = 0; 
patVersion = pmtVersion = -1; 
pmtPids[0] = 0; 
@@ -893,6 +894,7 @@  
} 
} 
pmtVersion = Pmt.getVersionNumber(); 
+ completed = true; 
} 
else 
esyslog("ERROR: can't parse PMT"); 
@@ -1464,7 +1466,7 @@  
parser = new cMpeg2Parser; 
else if (type == 0x1B) 
parser = new cH264Parser; 
- else if (type == 0x04 || type == 0x06) // MPEG audio or AC3 audio 
+ else if (type == 0x03 || type == 0x04 || type == 0x06 || type == 0x0F || type == 0x11) // MPEG2,4 AAC, AC3 audio 
parser = new cAudioParser; 
else if (type != 0) 
esyslog("ERROR: unknown stream type %d (PID %d) in frame detector", type, pid);