On Mon, 2009-03-09 at 22:53 +0100, Hans Verkuil wrote:
> On Monday 09 March 2009 21:47:55 Andy Walls wrote:
> I'm almost done the spec
> > changes (see the diff inline below), but I can easily change things.
> >
> Nice documentation!
Thanks! When I'm motivated, for some mysterious reason, to do some
documentation, I try to be thorough.
The linemask[2] bitmask specifications are giving me some mild
headaches. The linemaks output by the cx18 driver code for NTSC CC
don't seem to be consistent with README.vbi:
xxd -g4 foovbi.mpg | less
0000800: 000001ba 44000c66 240101d1 d3faffff ....D..f$.......
0000810: 000001bd 00428480 07210001 0001ffff .....B...!......
0000820: 69747630 00800000 00000000 04c146ad itv0..........F.
0000830: 107f1080 10821081 10841081 10851084 ................
0000840: 10811083 10711063 10541023 10471010 .....q.c.T.#.G..
0000850: 105a1022 10781004 000001ba 44000404 .Z.".x......D...
[...]
001a850: 84e015f9 24c26e47 000001ba 44000c66 ....$.nG....D..f
001a860: 240101d1 d3faffff 000001bd 006e8480 $............n..
001a870: 07210001 0001ffff 69747630 00800000 .!......itv0....
001a880: 02000000 04808066 1082107f 1080107e .......f.......~
001a890: 107c107f 107b1081 107d1080 107f107f .|...{...}......
001a8a0: 107f1080 10801082 10831081 10831004 ................
001a8b0: 85027110 86107f10 85107e10 82107d10 ..q.......~...}.
001a8c0: 7f107f10 81107f10 83107f10 83107f10 ................
001a8d0: 84107f10 84107e10 82100000 000001ba ......~.........
[...]
00210d0: 03db2840 76591671 c3eb4ec1 000001ba ..(@vY.q..N.....
00210e0: 44000c66 240101d1 d3faffff 000001bd D..f$...........
00210f0: 006e8480 07210001 0001ffff 69747630 .n...!......itv0
0021100: 00800000 02000000 04808066 107f1076 ...........f...v
0021110: 107c107d 107f1082 10801080 10811081 .|.}............
0021120: 108f109e 1fa810db e7b610f0 10a910d8 ................
0021130: 10911004 20206a10 83108110 83107f10 .... j.........
0021140: 83107e10 81107d10 7d107c10 7c107d10 ..~...}.}.|.|.}.
0021150: 7d107f10 7d108110 7d108210 7e100000 }...}...}...~...
(Ignore the PTS of 0 in the MPEG-2 Private Stream 1 PES header, I know
about that.)
Or maybe it's that the linemasks are written to the file as little
endian, when the rest of the Program Pack and Private Stream 1 Packet
are written big-endian or bytewise.
So I guess should be reading the linemasks as 0x00008000 (line 6+15 =
21) and 0x00000002 (line 6+(32-18)+1 = 21).
Should the linemask[] values be specified as little endian in the output
stream?
MythTV has this odd input method for the linemask[] values:
void AvFormatDecoder::ProcessVBIDataPacket(
const AVStream *stream, const AVPacket *pkt)
{
(void) stream;
const uint8_t *buf = pkt->data;
uint64_t linemask = 0;
unsigned long long utc = lastccptsu;
// [i]tv0 means there is a linemask
// [I]TV0 means there is no linemask and all lines are present
if ((buf[0]=='t') && (buf[1]=='v') && (buf[2] == '0'))
{
/// TODO this is almost certainly not endian safe....
memcpy(&linemask, buf + 3, 8);
buf += 11;
}
else if ((buf[0]=='T') && (buf[1]=='V') && (buf[2] == '0'))
{
linemask = 0xffffffffffffffffLL;
buf += 3;
}
[...]
So if we say in the spec the linemask[] values must be little endian,
MythTV will continue to work on little endian machines (I think).
Regards,
Andy
> I think that when this goes in, then README.vbi can be
> removed.
>
> Regards,
>
> Hans
_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel