[MPlayer-dev-eng] [PATCH] color SPU with ass (EOSD)

Ulion ulion2002 at gmail.com
Tue Dec 4 05:12:23 CET 2007


2007/12/4, Ötvös Attila <oattila at chello.hu>:
> 2007. december 3. 13.32 dátummal Ulion ezt írta:
> Hi Ulion!
>
> > I tested with your patch.
> >
> > spudec.c:1334: warning: unused variable 'i'
>
> I fixed.
>
> > In second patch, when first happens:
> > +    h = FFMIN(bitmap_h,dmpi->h - dst_y);
> > +    w = FFMIN(bitmap_w,dmpi->w - dst_x);
> > Beginning should be tabs instead of spaces.
>
> I corrected.
>
> > Functions you added parameters dxs, dys, you should document them if
> > original functions have comments.
>
> I added.
>
> > And at such like this line-break places:
> > +static void ass_eosd_generator(double pts, unsigned int dxs, unsigned int
> > dys, +       mp_eosd_images_t* dst, void* data)
>
> I corrected.

There are other places like this or tab/space not match context, I
will metion the line number in your patch file:
Second patch:
line 47, line 94, line 168, line 244, line 272 (also comments for
dxs/dys), line 292
Third patch:
line 260 (if you'd like to align the parameters), line 278, line 287,
line 326 (if you'd like to)
, line 374 and following part codes need fix indent. line 666, u and v
are reverted.

About order of u and v, check vobsub's source read ifo file part:

				uchar y, u, v, tmp;
				ifo->Read(&tmp, 1);
				ifo->Read(&y, 1);
				ifo->Read(&u, 1);
				ifo->Read(&v, 1);

				y = (y-16)*255/219;
				m_pgc[i].pal[j].rgbRed = (uchar)min(max(1.0*y + 1.4022*(u-128), 0), 255);
				m_pgc[i].pal[j].rgbGreen = (uchar)min(max(1.0*y - 0.3456*(u-128) -
0.7145*(v-128), 0), 255);
				m_pgc[i].pal[j].rgbBlue = (uchar)min(max(1.0*y + 1.7710*(v-128), 0) , 255);

>From these code, you will known the original y is in [16,235] range,
and order of y,u,v is y,u,v in raw palette of .ifo file. spu use raw
order of palette from dvd's .ifo, then it should also be y,u,v.
The reason for you changed the order of u and v probably be the wrong
caculated u and v by the wrong formula in vobsub.c and demux_mkv.c. I
will fix the wrong formula soon, so you should switch u and v back in
their original order.


And can eosd_register_number be replaced by some shorten words such
like eosd_id, eosd_regid, etc? This will save some line-break for you.

>
> > You should make breaked line aligned with the first parameter.
> >
> > And when continue play more than one videos with -ass, will crash in
> > filter_video, that should be fixed.
>
> I fixed (add eosd_unregister() to vf_ass and vf_vo). I hope to work.
>
> Please try out.

Won't crash again, but should eosd_reset also be called somewhere?

-- 
Ulion



More information about the MPlayer-dev-eng mailing list