* ivtv-utils/test/ps-analyzer.cpp: error in extracting SCR?
@ 2010-02-04 0:18 Lars Hanisch
2010-02-04 3:16 ` Andy Walls
0 siblings, 1 reply; 6+ messages in thread
From: Lars Hanisch @ 2010-02-04 0:18 UTC (permalink / raw)
To: linux-media
Hi,
I'm writing some code repacking the program stream that ivtv delivers
into a transport stream (BTW: is there existing code for this?). Since
many players needs the PCR I would like to use the SCR of the PS and
place it in the adaption field of the TS (if wikipedia [1] and my
interpretation of it is correct it should be the same).
I stumbled upon the ps-analyzer.cpp in the test-directory of the
ivtv-utils (1.4.0). From line 190 to 198 the SCR and SCR extension are
extracted from the PS-header. But referring to [2] the SCR extension has
9 bits, the highest 2 bits in the fifth byte after the sync bytes and
the lower 7 bits in the sixth byte. The last bit is a marker bit (always 1).
So instead of
scr_ext = (hdr[4] & 0x1) << 8;
scr_ext |= hdr[5];
I think it should be
scr_ext = (unsigned)(hdr[4] & 0x3) << 7;
scr_ext |= (hdr[5] & 0xfe) >> 1;
And the bitrate is coded in the next 22 bits, so it should be
mux_rate = (unsigned)(hdr[6]) << 14;
mux_rate |= (unsigned)(hdr[7]) << 6;
mux_rate |= (unsigned)(hdr[8] & 0xfc) >> 2;
Am I correct?
Regards,
Lars.
[1] http://en.wikipedia.org/wiki/Presentation_time_stamp
[2] http://en.wikipedia.org/wiki/MPEG_program_stream
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: ivtv-utils/test/ps-analyzer.cpp: error in extracting SCR?
2010-02-04 0:18 ivtv-utils/test/ps-analyzer.cpp: error in extracting SCR? Lars Hanisch
@ 2010-02-04 3:16 ` Andy Walls
2010-02-04 7:25 ` Hans Verkuil
0 siblings, 1 reply; 6+ messages in thread
From: Andy Walls @ 2010-02-04 3:16 UTC (permalink / raw)
To: Lars Hanisch; +Cc: linux-media
On Thu, 2010-02-04 at 01:18 +0100, Lars Hanisch wrote:
> Hi,
>
> I'm writing some code repacking the program stream that ivtv delivers
> into a transport stream (BTW: is there existing code for this?).
Buy a CX23418 based board. That chip's firmware can produce a TS.
I think Compro and LeadTek cards are available in Europe and are
supported by the cx18 driver.
> Since
> many players needs the PCR I would like to use the SCR of the PS and
> place it in the adaption field of the TS (if wikipedia [1] and my
> interpretation of it is correct it should be the same).
>
> I stumbled upon the ps-analyzer.cpp in the test-directory of the
> ivtv-utils (1.4.0). From line 190 to 198 the SCR and SCR extension are
> extracted from the PS-header. But referring to [2] the SCR extension has
> 9 bits, the highest 2 bits in the fifth byte after the sync bytes and
> the lower 7 bits in the sixth byte. The last bit is a marker bit (always 1).
>
> So instead of
>
> scr_ext = (hdr[4] & 0x1) << 8;
> scr_ext |= hdr[5];
>
> I think it should be
>
> scr_ext = (unsigned)(hdr[4] & 0x3) << 7;
> scr_ext |= (hdr[5] & 0xfe) >> 1;
Given the non-authoritative MPEG-2 documents I have, yes, you appear to
be correct on this.
Please keep in mind that ps-analyzer.cpp is simply a debug tool from an
ivtv developer perspective. You base prodcution software off of it at
your own risk. :)
> And the bitrate is coded in the next 22 bits, so it should be
>
> mux_rate = (unsigned)(hdr[6]) << 14;
> mux_rate |= (unsigned)(hdr[7]) << 6;
> mux_rate |= (unsigned)(hdr[8] & 0xfc) >> 2;
>
> Am I correct?
I did not check this one, but I would not be surprised if ps-analyzer
had this wrong too.
Regards,
Andy
> Regards,
> Lars.
>
> [1] http://en.wikipedia.org/wiki/Presentation_time_stamp
> [2] http://en.wikipedia.org/wiki/MPEG_program_stream
> --
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: ivtv-utils/test/ps-analyzer.cpp: error in extracting SCR?
2010-02-04 3:16 ` Andy Walls
@ 2010-02-04 7:25 ` Hans Verkuil
2010-02-04 18:50 ` Lars Hanisch
2010-02-07 20:36 ` Lars Hanisch
0 siblings, 2 replies; 6+ messages in thread
From: Hans Verkuil @ 2010-02-04 7:25 UTC (permalink / raw)
To: Andy Walls; +Cc: Lars Hanisch, linux-media
On Thursday 04 February 2010 04:16:03 Andy Walls wrote:
> On Thu, 2010-02-04 at 01:18 +0100, Lars Hanisch wrote:
> > Hi,
> >
> > I'm writing some code repacking the program stream that ivtv delivers
> > into a transport stream (BTW: is there existing code for this?).
>
> Buy a CX23418 based board. That chip's firmware can produce a TS.
>
> I think Compro and LeadTek cards are available in Europe and are
> supported by the cx18 driver.
>
> > Since
> > many players needs the PCR I would like to use the SCR of the PS and
> > place it in the adaption field of the TS (if wikipedia [1] and my
> > interpretation of it is correct it should be the same).
> >
> > I stumbled upon the ps-analyzer.cpp in the test-directory of the
> > ivtv-utils (1.4.0). From line 190 to 198 the SCR and SCR extension are
> > extracted from the PS-header. But referring to [2] the SCR extension has
> > 9 bits, the highest 2 bits in the fifth byte after the sync bytes and
> > the lower 7 bits in the sixth byte. The last bit is a marker bit (always 1).
> >
> > So instead of
> >
> > scr_ext = (hdr[4] & 0x1) << 8;
> > scr_ext |= hdr[5];
> >
> > I think it should be
> >
> > scr_ext = (unsigned)(hdr[4] & 0x3) << 7;
> > scr_ext |= (hdr[5] & 0xfe) >> 1;
>
>
> Given the non-authoritative MPEG-2 documents I have, yes, you appear to
> be correct on this.
>
> Please keep in mind that ps-analyzer.cpp is simply a debug tool from an
> ivtv developer perspective. You base prodcution software off of it at
> your own risk. :)
>
> > And the bitrate is coded in the next 22 bits, so it should be
> >
> > mux_rate = (unsigned)(hdr[6]) << 14;
> > mux_rate |= (unsigned)(hdr[7]) << 6;
> > mux_rate |= (unsigned)(hdr[8] & 0xfc) >> 2;
> >
> > Am I correct?
Yes, you are correct. I miscounted the bits when I wrote this originally.
Thanks for reporting this!
Regards,
Hans
>
> I did not check this one, but I would not be surprised if ps-analyzer
> had this wrong too.
>
> Regards,
> Andy
>
> > Regards,
> > Lars.
> >
> > [1] http://en.wikipedia.org/wiki/Presentation_time_stamp
> > [2] http://en.wikipedia.org/wiki/MPEG_program_stream
> > --
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>
--
Hans Verkuil - video4linux developer - sponsored by TANDBERG
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: ivtv-utils/test/ps-analyzer.cpp: error in extracting SCR?
2010-02-04 7:25 ` Hans Verkuil
@ 2010-02-04 18:50 ` Lars Hanisch
2010-02-07 20:36 ` Lars Hanisch
1 sibling, 0 replies; 6+ messages in thread
From: Lars Hanisch @ 2010-02-04 18:50 UTC (permalink / raw)
To: Hans Verkuil; +Cc: Andy Walls, linux-media
Am 04.02.2010 08:25, schrieb Hans Verkuil:
> On Thursday 04 February 2010 04:16:03 Andy Walls wrote:
>> On Thu, 2010-02-04 at 01:18 +0100, Lars Hanisch wrote:
>>> Hi,
>>>
>>> I'm writing some code repacking the program stream that ivtv delivers
>>> into a transport stream (BTW: is there existing code for this?).
>>
>> Buy a CX23418 based board. That chip's firmware can produce a TS.
>>
>> I think Compro and LeadTek cards are available in Europe and are
>> supported by the cx18 driver.
My PVR150 and 350 are still ok and I hope I have DVB-S-access in one
or two years... But I will keep that in mind in case I need a new card.
>>
>>> Since
>>> many players needs the PCR I would like to use the SCR of the PS and
>>> place it in the adaption field of the TS (if wikipedia [1] and my
>>> interpretation of it is correct it should be the same).
>>>
>>> I stumbled upon the ps-analyzer.cpp in the test-directory of the
>>> ivtv-utils (1.4.0). From line 190 to 198 the SCR and SCR extension are
>>> extracted from the PS-header. But referring to [2] the SCR extension has
>>> 9 bits, the highest 2 bits in the fifth byte after the sync bytes and
>>> the lower 7 bits in the sixth byte. The last bit is a marker bit (always 1).
>>>
>>> So instead of
>>>
>>> scr_ext = (hdr[4]& 0x1)<< 8;
>>> scr_ext |= hdr[5];
>>>
>>> I think it should be
>>>
>>> scr_ext = (unsigned)(hdr[4]& 0x3)<< 7;
>>> scr_ext |= (hdr[5]& 0xfe)>> 1;
>>
>>
>> Given the non-authoritative MPEG-2 documents I have, yes, you appear to
>> be correct on this.
>>
>> Please keep in mind that ps-analyzer.cpp is simply a debug tool from an
>> ivtv developer perspective. You base prodcution software off of it at
>> your own risk. :)
Of course I will. :-) I already had coded my part and was looking for
references...
>>
>>> And the bitrate is coded in the next 22 bits, so it should be
>>>
>>> mux_rate = (unsigned)(hdr[6])<< 14;
>>> mux_rate |= (unsigned)(hdr[7])<< 6;
>>> mux_rate |= (unsigned)(hdr[8]& 0xfc)>> 2;
>>>
>>> Am I correct?
>
> Yes, you are correct. I miscounted the bits when I wrote this originally.
> Thanks for reporting this!
You're welcome!
Regards,
Lars.
>
> Regards,
>
> Hans
>
>>
>> I did not check this one, but I would not be surprised if ps-analyzer
>> had this wrong too.
>>
>> Regards,
>> Andy
>>
>>> Regards,
>>> Lars.
>>>
>>> [1] http://en.wikipedia.org/wiki/Presentation_time_stamp
>>> [2] http://en.wikipedia.org/wiki/MPEG_program_stream
>>> --
>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>
>>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: ivtv-utils/test/ps-analyzer.cpp: error in extracting SCR?
2010-02-04 7:25 ` Hans Verkuil
2010-02-04 18:50 ` Lars Hanisch
@ 2010-02-07 20:36 ` Lars Hanisch
2010-02-07 20:53 ` Andy Walls
1 sibling, 1 reply; 6+ messages in thread
From: Lars Hanisch @ 2010-02-07 20:36 UTC (permalink / raw)
To: Hans Verkuil; +Cc: Andy Walls, linux-media
[-- Attachment #1: Type: text/plain, Size: 2562 bytes --]
Hi,
Just for completeness, attached is the patch against the subversion
repository at ivtvdriver.org.
Regards,
Lars.
Am 04.02.2010 08:25, schrieb Hans Verkuil:
> On Thursday 04 February 2010 04:16:03 Andy Walls wrote:
>> On Thu, 2010-02-04 at 01:18 +0100, Lars Hanisch wrote:
>>> Hi,
>>>
>>> I'm writing some code repacking the program stream that ivtv delivers
>>> into a transport stream (BTW: is there existing code for this?).
>>
>> Buy a CX23418 based board. That chip's firmware can produce a TS.
>>
>> I think Compro and LeadTek cards are available in Europe and are
>> supported by the cx18 driver.
>>
>>> Since
>>> many players needs the PCR I would like to use the SCR of the PS and
>>> place it in the adaption field of the TS (if wikipedia [1] and my
>>> interpretation of it is correct it should be the same).
>>>
>>> I stumbled upon the ps-analyzer.cpp in the test-directory of the
>>> ivtv-utils (1.4.0). From line 190 to 198 the SCR and SCR extension are
>>> extracted from the PS-header. But referring to [2] the SCR extension has
>>> 9 bits, the highest 2 bits in the fifth byte after the sync bytes and
>>> the lower 7 bits in the sixth byte. The last bit is a marker bit (always 1).
>>>
>>> So instead of
>>>
>>> scr_ext = (hdr[4]& 0x1)<< 8;
>>> scr_ext |= hdr[5];
>>>
>>> I think it should be
>>>
>>> scr_ext = (unsigned)(hdr[4]& 0x3)<< 7;
>>> scr_ext |= (hdr[5]& 0xfe)>> 1;
>>
>>
>> Given the non-authoritative MPEG-2 documents I have, yes, you appear to
>> be correct on this.
>>
>> Please keep in mind that ps-analyzer.cpp is simply a debug tool from an
>> ivtv developer perspective. You base prodcution software off of it at
>> your own risk. :)
>>
>>> And the bitrate is coded in the next 22 bits, so it should be
>>>
>>> mux_rate = (unsigned)(hdr[6])<< 14;
>>> mux_rate |= (unsigned)(hdr[7])<< 6;
>>> mux_rate |= (unsigned)(hdr[8]& 0xfc)>> 2;
>>>
>>> Am I correct?
>
> Yes, you are correct. I miscounted the bits when I wrote this originally.
> Thanks for reporting this!
>
> Regards,
>
> Hans
>
>>
>> I did not check this one, but I would not be surprised if ps-analyzer
>> had this wrong too.
>>
>> Regards,
>> Andy
>>
>>> Regards,
>>> Lars.
>>>
>>> [1] http://en.wikipedia.org/wiki/Presentation_time_stamp
>>> [2] http://en.wikipedia.org/wiki/MPEG_program_stream
>>> --
>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-media" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>
>>
>
[-- Attachment #2: ps-analyzer-corrected_scr_muxrate.diff --]
[-- Type: text/plain, Size: 798 bytes --]
Index: test/ps-analyzer.cpp
===================================================================
--- test/ps-analyzer.cpp (Revision 4152)
+++ test/ps-analyzer.cpp (Arbeitskopie)
@@ -194,11 +194,11 @@
scr |= (u64)(hdr[2] & 3) << 13;
scr |= (u64)hdr[3] << 5;
scr |= (u64)(hdr[4] & 0xf8) >> 3;
- scr_ext = (hdr[4] & 0x1) << 8;
- scr_ext |= hdr[5];
- mux_rate = (hdr[6] & 0x7f) << 15;
- mux_rate |= hdr[7] << 7;
- mux_rate |= (hdr[8] & 0xfe) >> 1;
+ scr_ext = (unsigned)(hdr[4] & 0x3) << 7;
+ scr_ext |= (hdr[5] & 0xfe) >> 1;
+ mux_rate = (unsigned)(hdr[6]) << 14;
+ mux_rate |= (unsigned)(hdr[7]) << 6;
+ mux_rate |= (unsigned)(hdr[8] & 0xfc) >> 2;
if (g_verbose)
printf("%lld: pack scr=%lld scr_ext=%3u scr=%lld ns mux_rate=%u\n", pos, scr, scr_ext, scr2ns(scr, scr_ext), mux_rate);
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: ivtv-utils/test/ps-analyzer.cpp: error in extracting SCR?
2010-02-07 20:36 ` Lars Hanisch
@ 2010-02-07 20:53 ` Andy Walls
0 siblings, 0 replies; 6+ messages in thread
From: Andy Walls @ 2010-02-07 20:53 UTC (permalink / raw)
To: Lars Hanisch; +Cc: Hans Verkuil, linux-media
On Sun, 2010-02-07 at 21:36 +0100, Lars Hanisch wrote:
> Hi,
>
> Just for completeness, attached is the patch against the subversion
> repository at ivtvdriver.org.
Thanks!
Regards,
Andy
> Regards,
> Lars.
>
> Am 04.02.2010 08:25, schrieb Hans Verkuil:
> > On Thursday 04 February 2010 04:16:03 Andy Walls wrote:
> >> On Thu, 2010-02-04 at 01:18 +0100, Lars Hanisch wrote:
> >>> Hi,
> >>>
> >>> I'm writing some code repacking the program stream that ivtv delivers
> >>> into a transport stream (BTW: is there existing code for this?).
> >>
> >> Buy a CX23418 based board. That chip's firmware can produce a TS.
> >>
> >> I think Compro and LeadTek cards are available in Europe and are
> >> supported by the cx18 driver.
> >>
> >>> Since
> >>> many players needs the PCR I would like to use the SCR of the PS and
> >>> place it in the adaption field of the TS (if wikipedia [1] and my
> >>> interpretation of it is correct it should be the same).
> >>>
> >>> I stumbled upon the ps-analyzer.cpp in the test-directory of the
> >>> ivtv-utils (1.4.0). From line 190 to 198 the SCR and SCR extension are
> >>> extracted from the PS-header. But referring to [2] the SCR extension has
> >>> 9 bits, the highest 2 bits in the fifth byte after the sync bytes and
> >>> the lower 7 bits in the sixth byte. The last bit is a marker bit (always 1).
> >>>
> >>> So instead of
> >>>
> >>> scr_ext = (hdr[4]& 0x1)<< 8;
> >>> scr_ext |= hdr[5];
> >>>
> >>> I think it should be
> >>>
> >>> scr_ext = (unsigned)(hdr[4]& 0x3)<< 7;
> >>> scr_ext |= (hdr[5]& 0xfe)>> 1;
> >>
> >>
> >> Given the non-authoritative MPEG-2 documents I have, yes, you appear to
> >> be correct on this.
> >>
> >> Please keep in mind that ps-analyzer.cpp is simply a debug tool from an
> >> ivtv developer perspective. You base prodcution software off of it at
> >> your own risk. :)
> >>
> >>> And the bitrate is coded in the next 22 bits, so it should be
> >>>
> >>> mux_rate = (unsigned)(hdr[6])<< 14;
> >>> mux_rate |= (unsigned)(hdr[7])<< 6;
> >>> mux_rate |= (unsigned)(hdr[8]& 0xfc)>> 2;
> >>>
> >>> Am I correct?
> >
> > Yes, you are correct. I miscounted the bits when I wrote this originally.
> > Thanks for reporting this!
> >
> > Regards,
> >
> > Hans
> >
> >>
> >> I did not check this one, but I would not be surprised if ps-analyzer
> >> had this wrong too.
> >>
> >> Regards,
> >> Andy
> >>
> >>> Regards,
> >>> Lars.
> >>>
> >>> [1] http://en.wikipedia.org/wiki/Presentation_time_stamp
> >>> [2] http://en.wikipedia.org/wiki/MPEG_program_stream
> >>> --
> >>
> >>
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> >> the body of a message to majordomo@vger.kernel.org
> >> More majordomo info at http://vger.kernel.org/majordomo-info.html
> >>
> >>
> >
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-02-07 20:54 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-02-04 0:18 ivtv-utils/test/ps-analyzer.cpp: error in extracting SCR? Lars Hanisch
2010-02-04 3:16 ` Andy Walls
2010-02-04 7:25 ` Hans Verkuil
2010-02-04 18:50 ` Lars Hanisch
2010-02-07 20:36 ` Lars Hanisch
2010-02-07 20:53 ` Andy Walls
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox