Re: [PATCH] Format of DVB PROGRAM N.
Nico Sabbi <[email protected]> Tue, 29 May 2007 23:28:54 +0200
| Newsgroups | gmane.comp.video.mplayer.user.dvb |
|---|---|
| Message-ID | <[email protected]> |
Mario Rossi wrote: >>Nico Sabbi wrote: >> >> >>>Mario Rossi wrote: >>> >>> > > > >>>>BBC HD1 has a PROGRAM N. (36932) bigger than 2^15, so it does not fit >>>>well into a signed variable. >>>> >>>>With this patch the ouput is correct. >>>> >>>> > > > >>>>- mp_msg(MSGT_DEMUXER, MSGL_INFO, " PROGRAM N. %d\n", param->prog); >>>>+ mp_msg(MSGT_DEMUXER, MSGL_INFO, " PROGRAM N. %hu\n", param->prog); >>>> >>>> > > > >>>%d is more than enough for a 16 bit int. Excerpt from sprintf() >>> >>> > > > >>So it should be just a %u, nothing more, nothing less. >> >> > > > >>Cheers, >>Juri >> >> > >printf does not agree: > >output with %d >VIDEO H264(pid=1502) AUDIO A52(pid=1505) NO SUBS (yet)! PROGRAM N. -28604 > >with %u >VIDEO H264(pid=1502) AUDIO A52(pid=1505) NO SUBS (yet)! PROGRAM N. 4294938692 > >with %hu >VIDEO H264(pid=1502) AUDIO A52(pid=1505) NO SUBS (yet)! PROGRAM N. 36932 > >with %hd >VIDEO H264(pid=1502) AUDIO A52(pid=1505) NO SUBS (yet)! PROGRAM N. -28604 > >The variable is a 16bit int (so the "h") but it contains a number >bigger than the MAX signed 16bit integer (36932 > 32768), > %d uses a 32-bit integer, so whatever 16 bit value - signed or not - fits perfectly in %d > so it has to >be considered unsigned (u), otherwise the number becomes negative. >Since %u is not working either, I guess that the value is pushed in >the stack with $FFFF padding (which is natural since it is signed). > >Maybe the variable "tsdemux_init_t.prog" should be changed to unsigned >(since it can contain numbers bigger than 32768), instead of signed >(in which case both %d and %u work). > >cheers > > yes, this is the actual bug, but I have to check that the change don't break anything