* [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams.
@ 2017-07-09 9:43 Malcolm Priestley
2017-07-09 9:43 ` [PATCH RFC 2/2] app: kaffeine: Fix missing PCR on stream recordings Malcolm Priestley
2017-07-09 11:14 ` [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams Mauro Carvalho Chehab
0 siblings, 2 replies; 5+ messages in thread
From: Malcolm Priestley @ 2017-07-09 9:43 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: Linux Media Mailing List, Malcolm Priestley
The ISO/IEC standard 13818-1 or ITU-T Rec. H.222.0 standard allow transport
vendors to place PCR (Program Clock Reference) on a different PID.
If the PCR is unset the value is 0x1fff, most vendors appear to set it the
same as video pid in which case it need not be set.
The PCR PID is at an offset of 8 in pmtSection structure.
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
---
src/dvb/dvbliveview.cpp | 8 ++++++++
src/dvb/dvbsi.h | 5 +++++
2 files changed, 13 insertions(+)
diff --git a/src/dvb/dvbliveview.cpp b/src/dvb/dvbliveview.cpp
index cfad892..3e92fa6 100644
--- a/src/dvb/dvbliveview.cpp
+++ b/src/dvb/dvbliveview.cpp
@@ -518,6 +518,7 @@ void DvbLiveView::updatePids(bool forcePatPmtUpdate)
DvbPmtSection pmtSection(internal->pmtSectionData);
DvbPmtParser pmtParser(pmtSection);
QSet<int> newPids;
+ int pcr_pid = pmtSection.pcr_pid();
bool updatePatPmt = forcePatPmtUpdate;
bool isTimeShifting = internal->timeShiftFile.isOpen();
@@ -543,6 +544,13 @@ void DvbLiveView::updatePids(bool forcePatPmtUpdate)
newPids.insert(pmtParser.teletextPid);
}
+ /* check PCR PID is set */
+ if (pcr_pid != 0x1fff) {
+ /* Check not already in list */
+ if (!newPids.contains(pcr_pid))
+ newPids.insert(pcr_pid);
+ }
+
for (int i = 0; i < pids.size(); ++i) {
int pid = pids.at(i);
diff --git a/src/dvb/dvbsi.h b/src/dvb/dvbsi.h
index 4d27252..9b4bbe0 100644
--- a/src/dvb/dvbsi.h
+++ b/src/dvb/dvbsi.h
@@ -1098,6 +1098,11 @@ public:
return (at(3) << 8) | at(4);
}
+ int pcr_pid() const
+ {
+ return ((at(8) & 0x1f) << 8) | at(9);
+ }
+
DvbDescriptor descriptors() const
{
return DvbDescriptor(getData() + 12, descriptorsLength);
--
2.13.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH RFC 2/2] app: kaffeine: Fix missing PCR on stream recordings.
2017-07-09 9:43 [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams Malcolm Priestley
@ 2017-07-09 9:43 ` Malcolm Priestley
2017-07-09 11:14 ` [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams Mauro Carvalho Chehab
1 sibling, 0 replies; 5+ messages in thread
From: Malcolm Priestley @ 2017-07-09 9:43 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: Linux Media Mailing List, Malcolm Priestley
The ISO/IEC standard 13818-1 or ITU-T Rec. H.222.0 standard allow transport
vendors to place PCR (Program Clock Reference) on a different PID.
This patch adds it recording to file.
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
---
src/dvb/dvbrecording.cpp | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/src/dvb/dvbrecording.cpp b/src/dvb/dvbrecording.cpp
index ecb4777..12a57dc 100644
--- a/src/dvb/dvbrecording.cpp
+++ b/src/dvb/dvbrecording.cpp
@@ -961,6 +961,7 @@ void DvbRecordingFile::pmtSectionChanged(const QByteArray &pmtSectionData_)
pmtSectionData = pmtSectionData_;
DvbPmtSection pmtSection(pmtSectionData);
DvbPmtParser pmtParser(pmtSection);
+ int pcr_pid = pmtSection.pcr_pid();
QSet<int> newPids;
if (pmtParser.videoPid != -1) {
@@ -979,6 +980,13 @@ void DvbRecordingFile::pmtSectionChanged(const QByteArray &pmtSectionData_)
newPids.insert(pmtParser.teletextPid);
}
+ /* check PCR PID is set */
+ if (pcr_pid != 0x1fff) {
+ /* Check not already in list */
+ if (!newPids.contains(pcr_pid))
+ newPids.insert(pcr_pid);
+ }
+
for (int i = 0; i < pids.size(); ++i) {
int pid = pids.at(i);
--
2.13.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams.
2017-07-09 9:43 [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams Malcolm Priestley
2017-07-09 9:43 ` [PATCH RFC 2/2] app: kaffeine: Fix missing PCR on stream recordings Malcolm Priestley
@ 2017-07-09 11:14 ` Mauro Carvalho Chehab
2017-07-09 12:11 ` Malcolm Priestley
1 sibling, 1 reply; 5+ messages in thread
From: Mauro Carvalho Chehab @ 2017-07-09 11:14 UTC (permalink / raw)
To: Malcolm Priestley; +Cc: Linux Media Mailing List
Hi Malcolm,
Em Sun, 9 Jul 2017 10:43:50 +0100
Malcolm Priestley <tvboxspy@gmail.com> escreveu:
> The ISO/IEC standard 13818-1 or ITU-T Rec. H.222.0 standard allow transport
> vendors to place PCR (Program Clock Reference) on a different PID.
>
> If the PCR is unset the value is 0x1fff, most vendors appear to set it the
> same as video pid in which case it need not be set.
>
> The PCR PID is at an offset of 8 in pmtSection structure.
Thanks for the patches!
Patches look good, except for two things:
- we use camelCase at Kaffeine. So, the new field should be pcrPid ;)
- you didn't use dvbsi.xml. The way we usually update dvbsi.h and part of
dvbsi.cpp is to add a field at dvbsi.xml and then run:
$ tools/update_dvbsi.sh
Kaffeine should be built with the optional BUILD_TOOLS feature, in order
for it to build the tool that parses dvbsi.xml.
Anyway, I applied your patchset and added a few pathes afterwards
adjusting it.
Regards,
Mauro
>
> Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
> ---
> src/dvb/dvbliveview.cpp | 8 ++++++++
> src/dvb/dvbsi.h | 5 +++++
> 2 files changed, 13 insertions(+)
>
> diff --git a/src/dvb/dvbliveview.cpp b/src/dvb/dvbliveview.cpp
> index cfad892..3e92fa6 100644
> --- a/src/dvb/dvbliveview.cpp
> +++ b/src/dvb/dvbliveview.cpp
> @@ -518,6 +518,7 @@ void DvbLiveView::updatePids(bool forcePatPmtUpdate)
> DvbPmtSection pmtSection(internal->pmtSectionData);
> DvbPmtParser pmtParser(pmtSection);
> QSet<int> newPids;
> + int pcr_pid = pmtSection.pcr_pid();
> bool updatePatPmt = forcePatPmtUpdate;
> bool isTimeShifting = internal->timeShiftFile.isOpen();
>
> @@ -543,6 +544,13 @@ void DvbLiveView::updatePids(bool forcePatPmtUpdate)
> newPids.insert(pmtParser.teletextPid);
> }
>
> + /* check PCR PID is set */
> + if (pcr_pid != 0x1fff) {
> + /* Check not already in list */
> + if (!newPids.contains(pcr_pid))
> + newPids.insert(pcr_pid);
> + }
> +
> for (int i = 0; i < pids.size(); ++i) {
> int pid = pids.at(i);
>
> diff --git a/src/dvb/dvbsi.h b/src/dvb/dvbsi.h
> index 4d27252..9b4bbe0 100644
> --- a/src/dvb/dvbsi.h
> +++ b/src/dvb/dvbsi.h
> @@ -1098,6 +1098,11 @@ public:
> return (at(3) << 8) | at(4);
> }
>
> + int pcr_pid() const
> + {
> + return ((at(8) & 0x1f) << 8) | at(9);
> + }
> +
> DvbDescriptor descriptors() const
> {
> return DvbDescriptor(getData() + 12, descriptorsLength);
Thanks,
Mauro
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams.
2017-07-09 11:14 ` [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams Mauro Carvalho Chehab
@ 2017-07-09 12:11 ` Malcolm Priestley
2017-07-10 12:38 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 5+ messages in thread
From: Malcolm Priestley @ 2017-07-09 12:11 UTC (permalink / raw)
To: Mauro Carvalho Chehab; +Cc: Linux Media Mailing List
On 09/07/17 12:14, Mauro Carvalho Chehab wrote:
> Hi Malcolm,
>
> Em Sun, 9 Jul 2017 10:43:50 +0100
> Malcolm Priestley <tvboxspy@gmail.com> escreveu:
>
>> The ISO/IEC standard 13818-1 or ITU-T Rec. H.222.0 standard allow transport
>> vendors to place PCR (Program Clock Reference) on a different PID.
>>
>> If the PCR is unset the value is 0x1fff, most vendors appear to set it the
>> same as video pid in which case it need not be set.
>>
>> The PCR PID is at an offset of 8 in pmtSection structure.
>
> Thanks for the patches!
>
> Patches look good, except for two things:
>
> - we use camelCase at Kaffeine. So, the new field should be pcrPid ;)
Ok, Wasn't sure
>
> - you didn't use dvbsi.xml. The way we usually update dvbsi.h and part of
> dvbsi.cpp is to add a field at dvbsi.xml and then run:
>
> $ tools/update_dvbsi.sh
Oh I see.
>
> Kaffeine should be built with the optional BUILD_TOOLS feature, in order
> for it to build the tool that parses dvbsi.xml.
>
> Anyway, I applied your patchset and added a few pathes afterwards
> adjusting it.
Thanks
How do you turn off debug the spam from epg is horrendous.
Regards
Malcolm
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams.
2017-07-09 12:11 ` Malcolm Priestley
@ 2017-07-10 12:38 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 5+ messages in thread
From: Mauro Carvalho Chehab @ 2017-07-10 12:38 UTC (permalink / raw)
To: Malcolm Priestley; +Cc: Linux Media Mailing List
Em Sun, 9 Jul 2017 13:11:36 +0100
Malcolm Priestley <tvboxspy@gmail.com> escreveu:
> On 09/07/17 12:14, Mauro Carvalho Chehab wrote:
> > Hi Malcolm,
> >
> > Em Sun, 9 Jul 2017 10:43:50 +0100
> > Malcolm Priestley <tvboxspy@gmail.com> escreveu:
> >
> >> The ISO/IEC standard 13818-1 or ITU-T Rec. H.222.0 standard allow transport
> >> vendors to place PCR (Program Clock Reference) on a different PID.
> >>
> >> If the PCR is unset the value is 0x1fff, most vendors appear to set it the
> >> same as video pid in which case it need not be set.
> >>
> >> The PCR PID is at an offset of 8 in pmtSection structure.
> >
> > Thanks for the patches!
> >
> > Patches look good, except for two things:
> >
> > - we use camelCase at Kaffeine. So, the new field should be pcrPid ;)
> Ok, Wasn't sure
>
> >
> > - you didn't use dvbsi.xml. The way we usually update dvbsi.h and part of
> > dvbsi.cpp is to add a field at dvbsi.xml and then run:
> >
> > $ tools/update_dvbsi.sh
> Oh I see.
>
>
> >
> > Kaffeine should be built with the optional BUILD_TOOLS feature, in order
> > for it to build the tool that parses dvbsi.xml.
> >
> > Anyway, I applied your patchset and added a few pathes afterwards
> > adjusting it.
>
> Thanks
>
> How do you turn off debug the spam from epg is horrendous.
The default should have been to have those debug messages disabled.
I'm pretty sure I wrote some patches for it some time ago, but it
seems they got lost.
Anyway, I wrote them again. You should now see debug messages only
if kaffeine is called with --debug or using
QT_LOGGING_RULES=kaffeine.category.debug=true
as stated on its help message.
>
> Regards
>
>
> Malcolm
>
>
Thanks,
Mauro
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-07-10 12:38 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-09 9:43 [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams Malcolm Priestley
2017-07-09 9:43 ` [PATCH RFC 2/2] app: kaffeine: Fix missing PCR on stream recordings Malcolm Priestley
2017-07-09 11:14 ` [PATCH RFC 1/2] app: kaffeine: Fix missing PCR on live streams Mauro Carvalho Chehab
2017-07-09 12:11 ` Malcolm Priestley
2017-07-10 12:38 ` Mauro Carvalho Chehab
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.