public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* 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