Jump to content


Photo

audio AAC for IPTV


  • Please log in to reply
15 replies to this topic

#1 Dimitrij

  • PLi® Core member
  • 10,021 posts

+338
Excellent

Posted 2 October 2014 - 05:41

The proposal to add the AAC audio format for "Auto language selection".

AAC popular in IPTV/Stream.
Who is behind this idea?


GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: audio AAC for IPTV #2 littlesat

  • PLi® Core member
  • 56,274 posts

+691
Excellent

Posted 2 October 2014 - 06:03

Isn't it already there??

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: audio AAC for IPTV #3 Dimitrij

  • PLi® Core member
  • 10,021 posts

+338
Excellent

Posted 2 October 2014 - 06:42

Isn't it already there??

only HE-AAC


GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: audio AAC for IPTV #4 littlesat

  • PLi® Core member
  • 56,274 posts

+691
Excellent

Posted 2 October 2014 - 14:26

Then I suggest we should generalise it somehow....


WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: audio AAC for IPTV #5 betacentauri

  • PLi® Core member
  • 7,185 posts

+323
Excellent

Posted 2 October 2014 - 17:24

It's several month ago. But I thing I tested with other AAC version and drivers of the box or hardware didn't support them.
Xtrend ET-9200, ET-8000, ET-10000, OpenPliPC on Ubuntu 12.04

Re: audio AAC for IPTV #6 betacentauri

  • PLi® Core member
  • 7,185 posts

+323
Excellent

Posted 2 October 2014 - 17:36

This is what I wrote in the commit log
http://sourceforge.n...b2ac7a7c26ec80/

So at least Xtrend boxes couldn't decode other AAC versions.
Xtrend ET-9200, ET-8000, ET-10000, OpenPliPC on Ubuntu 12.04

Re: audio AAC for IPTV #7 Dimitrij

  • PLi® Core member
  • 10,021 posts

+338
Excellent

Posted 3 October 2014 - 05:22

This is what I wrote in the commit log
http://sourceforge.n...b2ac7a7c26ec80/

So at least Xtrend boxes couldn't decode other AAC versions.

Task --> add the AAC for "Auto language selection" and all.


GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: audio AAC for IPTV #8 Rob van der Does

  • Senior Member
  • 7,766 posts

+184
Excellent

Posted 3 October 2014 - 05:33

Then I suggest we should generalise it somehow....

If you make one setting for AAC & AC3 (and DTS?) boxes that do not support all formats will be in trouble.



Re: audio AAC for IPTV #9 littlesat

  • PLi® Core member
  • 56,274 posts

+691
Excellent

Posted 3 October 2014 - 06:38

Why?

WaveFrontier 28.2E | 23.5E | 19.2E | 16E | 13E | 10/9E | 7E | 5E | 1W | 4/5W | 15W


Re: audio AAC for IPTV #10 Rob van der Does

  • Senior Member
  • 7,766 posts

+184
Excellent

Posted 3 October 2014 - 06:58

Preferred "AAC + AC3 + DTS" for a box that isn't capable of decoding AAC?



Re: audio AAC for IPTV #11 Dimitrij

  • PLi® Core member
  • 10,021 posts

+338
Excellent

Posted 3 October 2014 - 09:34

Preferred "AAC + AC3 + DTS" for a box that isn't capable of decoding AAC?

No preferred AAC.

Simple:

Auto language selection 1 --> Russian

If service language AAC and Russian -->set this language


GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: audio AAC for IPTV #12 Rob van der Does

  • Senior Member
  • 7,766 posts

+184
Excellent

Posted 3 October 2014 - 11:30

Yes, that's my idea too. But I reacted on Littlesat's 'generalising'.



Re: audio AAC for IPTV #13 Dimitrij

  • PLi® Core member
  • 10,021 posts

+338
Excellent

Posted 19 October 2014 - 15:24

I made ​​a patch, but it does not work. Language is not automatically selected.
Where is my mistake?

--- a/lib/dvb/idvb.h
+++ b/lib/dvb/idvb.h
@@ -275,7 +275,7 @@
 	{
 		cVPID, cMPEGAPID, cTPID, cPCRPID, cAC3PID,
 		cVTYPE, cACHANNEL, cAC3DELAY, cPCMDELAY,
-		cSUBTITLE, cAACHEAPID=12, cDDPPID, cacheMax
+		cSUBTITLE, cAACHEAPID=12, cDDPPID, cacheMax, cAACAPID
 	};
 
 	int getCacheEntry(cacheID);
--- a/lib/dvb/pmt.cpp
+++ b/lib/dvb/pmt.cpp
@@ -358,6 +358,7 @@
 	int cached_apid_ac3 = -1;
 	int cached_apid_ddp = -1;
 	int cached_apid_mpeg = -1;
+	int cached_apid_aac = -1;
 	int cached_apid_aache = -1;
 	int cached_vpid = -1;
 	int cached_tpid = -1;
@@ -378,6 +379,7 @@
 		cached_apid_mpeg = m_service->getCacheEntry(eDVBService::cMPEGAPID);
 		cached_apid_ac3 = m_service->getCacheEntry(eDVBService::cAC3PID);
 		cached_apid_ddp = m_service->getCacheEntry(eDVBService::cDDPPID);
+		cached_apid_aac = m_service->getCacheEntry(eDVBService::cAACAPID);
 		cached_apid_aache = m_service->getCacheEntry(eDVBService::cAACHEAPID);
 		cached_tpid = m_service->getCacheEntry(eDVBService::cTPID);
 	}
@@ -390,6 +392,7 @@
 		int autoaudio_mpeg = -1;
 		int autoaudio_ac3 = -1;
 		int autoaudio_ddp = -1;
+		int autoaudio_aac = -1;
 		int autoaudio_aache = -1;
 		int autoaudio_level = 4;
 
@@ -453,6 +456,7 @@
 			if (program.audioStreams[i].pid == cached_apid_ac3
 			 || program.audioStreams[i].pid == cached_apid_ddp
 			 || program.audioStreams[i].pid == cached_apid_mpeg
+			 || program.audioStreams[i].pid == cached_apid_aac
 			 || program.audioStreams[i].pid == cached_apid_aache)
 			{
 				/* if we find the cached pids, this will be our default stream */
@@ -462,6 +466,7 @@
 			if ((program.audioStreams[i].type != audioStream::atMPEG) && ((first_non_mpeg == -1)
 				|| (program.audioStreams[i].pid == cached_apid_ac3)
 				|| (program.audioStreams[i].pid == cached_apid_ddp)
+				|| (program.audioStreams[i].pid == cached_apid_aac)
 				|| (program.audioStreams[i].pid == cached_apid_aache)))
 			{
 				first_non_mpeg = i;
@@ -479,6 +484,8 @@
 							autoaudio_ac3 = i;
 						else if (program.audioStreams[i].type == audioStream::atDDP && (autoaudio_level > x || autoaudio_ddp == -1))
 							autoaudio_ddp = i;
+						else if (program.audioStreams[i].type == audioStream::atAAC && (autoaudio_level > x || autoaudio_aac == -1))
+							autoaudio_aac = i;
 						else if (program.audioStreams[i].type == audioStream::atAACHE && (autoaudio_level > x || autoaudio_aache == -1))
 							autoaudio_aache = i;
 						autoaudio_level = x;
@@ -537,6 +544,8 @@
 				program.defaultAudioStream = autoaudio_ac3;
 			else if (autoaudio_ddp != -1)
 				program.defaultAudioStream = autoaudio_ddp;
+			else if (autoaudio_aac != -1)
+				program.defaultAudioStream = autoaudio_aac;
 			else if (autoaudio_aache != -1)
 				program.defaultAudioStream = autoaudio_aache;
 			else if (first_non_mpeg != -1)
@@ -612,6 +621,15 @@
 			audioStream s;
 			s.type = audioStream::atDDP;
 			s.pid = cached_apid_ddp;
+			s.rdsPid = -1;
+			program.audioStreams.push_back(s);
+			++cnt;
+		}
+		if ( cached_apid_aac != -1 )
+		{
+			audioStream s;
+			s.type = audioStream::atAAC;
+			s.pid = cached_apid_aac;
 			s.rdsPid = -1;
 			program.audioStreams.push_back(s);
 			++cnt;
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -1971,6 +1971,9 @@
 			apid = m_dvb_service->getCacheEntry(eDVBService::cDDPPID);
 			if (apid != -1)
 				return apid;
+			apid = m_dvb_service->getCacheEntry(eDVBService::cAACAPID);
+			if (apid != -1)
+				return apid;
 			apid = m_dvb_service->getCacheEntry(eDVBService::cAACHEAPID);
 			if (apid != -1)
 				return apid;
@@ -2201,6 +2204,7 @@
 		|| ((m_dvb_service->getCacheEntry(eDVBService::cMPEGAPID) == -1)
 		&& (m_dvb_service->getCacheEntry(eDVBService::cAC3PID)== -1)
 		&& (m_dvb_service->getCacheEntry(eDVBService::cDDPPID)== -1)
+		&& (m_dvb_service->getCacheEntry(eDVBService::cAACAPID)== -1)
 		&& (m_dvb_service->getCacheEntry(eDVBService::cAACHEAPID) == -1))))
 	{
 		if (apidtype == eDVBAudio::aMPEG)
@@ -2208,6 +2212,7 @@
 			m_dvb_service->setCacheEntry(eDVBService::cMPEGAPID, apid);
 			m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cDDPPID, -1);
+			m_dvb_service->setCacheEntry(eDVBService::cAACAPID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cAACHEAPID, -1);
 		}
 		else if (apidtype == eDVBAudio::aAC3)
@@ -2215,6 +2220,7 @@
 			m_dvb_service->setCacheEntry(eDVBService::cMPEGAPID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cAC3PID, apid);
 			m_dvb_service->setCacheEntry(eDVBService::cDDPPID, -1);
+			m_dvb_service->setCacheEntry(eDVBService::cAACAPID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cAACHEAPID, -1);
 		}
 		else if (apidtype == eDVBAudio::aDDP)
@@ -2222,13 +2228,23 @@
 			m_dvb_service->setCacheEntry(eDVBService::cMPEGAPID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cDDPPID, apid);
+			m_dvb_service->setCacheEntry(eDVBService::cAACAPID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cAACHEAPID, -1);
 		}
+		else if (apidtype == eDVBAudio::aAAC)
+		{
+			m_dvb_service->setCacheEntry(eDVBService::cMPEGAPID, -1);
+			m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1);
+			m_dvb_service->setCacheEntry(eDVBService::cDDPPID, -1);
+			m_dvb_service->setCacheEntry(eDVBService::cAACAPID, apid);
+			m_dvb_service->setCacheEntry(eDVBService::cAACHEAPID, -1);
+		}
 		else if (apidtype == eDVBAudio::aAACHE)
 		{
 			m_dvb_service->setCacheEntry(eDVBService::cMPEGAPID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cDDPPID, -1);
+			m_dvb_service->setCacheEntry(eDVBService::cAACAPID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cAACHEAPID, apid);
 		}
 		else
@@ -2236,6 +2252,7 @@
 			m_dvb_service->setCacheEntry(eDVBService::cMPEGAPID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cAC3PID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cDDPPID, -1);
+			m_dvb_service->setCacheEntry(eDVBService::cAACAPID, -1);
 			m_dvb_service->setCacheEntry(eDVBService::cAACHEAPID, -1);
 		}
 	}


GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: audio AAC for IPTV #14 athoik

  • PLi® Core member
  • 8,458 posts

+327
Excellent

Posted 19 October 2014 - 16:19

You declared cAACAPID after cacheMax, see why:

./service/servicedvbrecord.cpp:123:                                             for (int x=0; x < eDVBService::cacheMax; ++x)
./service/servicedvb.cpp:1064:                  for (int x=0; x < eDVBService::cacheMax; ++x)
./dvb/db.cpp:281:               for (int i=0; i < cacheMax; ++i)
./dvb/db.cpp:289:       m_cache = new int[cacheMax];
./dvb/db.cpp:290:       memset(m_cache, -1, sizeof(int) * cacheMax);
./dvb/db.cpp:298:                       m_cache = new int[cacheMax];
./dvb/db.cpp:299:               memcpy(m_cache, source, cacheMax * sizeof(int));
./dvb/db.cpp:310:       if (id >= cacheMax || !m_cache)
./dvb/db.cpp:319:       if (id < cacheMax)
./dvb/db.cpp:683:               for (int x=0; x < eDVBService::cacheMax; ++x)
Also are you using TS (1:) stream or GStreamer (4097:) stream?
Wavefield T90: 0.8W - 1.9E - 4.8E - 13E - 16E - 19.2E - 23.5E - 26E - 33E - 39E - 42E - 45E on EMP Centauri DiseqC 16/1
Unamed: 13E Quattro - 9E Quattro on IKUSI MS-0916

Re: audio AAC for IPTV #15 Dimitrij

  • PLi® Core member
  • 10,021 posts

+338
Excellent

Posted 19 October 2014 - 16:36

 

Also are you using TS (1:) stream or GStreamer (4097:) stream?

 

Thank you.

I check on the TS.

But this plugin have a choice how to create references of services TS (1:) stream or GStreamer (4097:) stream.


Edited by Dima73, 19 October 2014 - 16:39.

GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K


Re: audio AAC for IPTV #16 Dimitrij

  • PLi® Core member
  • 10,021 posts

+338
Excellent

Posted 19 October 2014 - 18:27

You declared cAACAPID after cacheMax, see why:
 

./service/servicedvbrecord.cpp:123:                                             for (int x=0; x < eDVBService::cacheMax; ++x)
./service/servicedvb.cpp:1064:                  for (int x=0; x < eDVBService::cacheMax; ++x)
./dvb/db.cpp:281:               for (int i=0; i < cacheMax; ++i)
./dvb/db.cpp:289:       m_cache = new int[cacheMax];
./dvb/db.cpp:290:       memset(m_cache, -1, sizeof(int) * cacheMax);
./dvb/db.cpp:298:                       m_cache = new int[cacheMax];
./dvb/db.cpp:299:               memcpy(m_cache, source, cacheMax * sizeof(int));
./dvb/db.cpp:310:       if (id >= cacheMax || !m_cache)
./dvb/db.cpp:319:       if (id < cacheMax)
./dvb/db.cpp:683:               for (int x=0; x < eDVBService::cacheMax; ++x)
Also are you using TS (1:) stream or GStreamer (4097:) stream?

 

 	{
 		cVPID, cMPEGAPID, cTPID, cPCRPID, cAC3PID,
 		cVTYPE, cACHANNEL, cAC3DELAY, cPCMDELAY,
-		cSUBTITLE, cAACHEAPID=12, cDDPPID, cacheMax
+		cSUBTITLE, cAACHEAPID=12, cDDPPID, cAACAPID ,cacheMax

Checked, not working.
In what may be another reason?


GigaBlue UHD Quad 4K /Lunix3-4K/Solo 4K



0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users