[MPlayer-dev-eng] [PATCH] vobsub fix for empty useless streams

Ulion ulion2002 at gmail.com
Tue Oct 23 10:28:48 CEST 2007


Reimar,

Do you have any further suggestion/objection on this patch, or anybody
else? If none, I will apply this patch after a week.

2007/9/19, Ulion <ulion2002 at gmail.com>:
> 2007/9/19, Reimar Döffinger <Reimar.Doeffinger at stud.uni-karlsruhe.de>:
> > Hello,
> > On Sat, Sep 15, 2007 at 08:01:16PM +0800, Ulion wrote:
> > > +/* get vobsub id by it's index in the valid streams */
> >
> > Comments should be doxygen compatible.
>
> Fixed, please check it.
>
> >
> > > +extern int vobsub_get_id_by_index(void * /* vobhandle */, unsigned int /* index */);
> >
> > Stupidity in the surrounding code does not mean you should copy it.
> > Please don't comment out the parameter names, just write them there
> > normally.
>
> Fixed.
>
> >
> > [...]
> > > @@ -1165,8 +1167,11 @@
> > >                   }
> > >               }
> > >               vob->spu_streams_current = vob->spu_streams_size;
> > > -             while (vob->spu_streams_current-- > 0)
> > > +             while (vob->spu_streams_current-- > 0) {
> > >                   vob->spu_streams[vob->spu_streams_current].current_index = 0;
> > > +                 if (vob->spu_streams[vob->spu_streams_current].id)
> > > +                     ++vob->spu_valid_streams_size;
> > > +             }
> >
> > This is potentially the big Achilles' heel of this patch: It assumes
> > that we know all subtitle tracks on open. This it seems relies on a
> > correct .idx file. Maybe this requirement is ok, though I'd be happy if
> > someone could comment on it conclusively.
> > But even then, it should be possible to select any stream with -vobsubid
> > even when it is not in the .idx or .ifo or whatever file.
>
> Fixed, if -vobsubid is setted and less than vob->spu_streams_size,
> make it visible when loop subtitles.
>
> >
> > > @@ -1201,6 +1206,34 @@
> > >      return (index < vob->spu_streams_size) ? vob->spu_streams[index].id : NULL;
> > >  }
> > >
> > > +int vobsub_get_id_by_index(void *vobhandle, unsigned int index)
> > > +{
> > > +    vobsub_t *vob = (vobsub_t *) vobhandle;
> >
> > Useless cast (and I am aware that the surrounding code is full of
> > those).
>
> Since there's no compile warning without the case, removed.
>
> >
> > > +int vobsub_get_index_by_id(void *vobhandle, int id)
> > > +{
> > > +    vobsub_t *vob = (vobsub_t *) vobhandle;
> > > +    int i, j;
> > > +    if (vob == NULL || id < 0 || id >= vob->spu_streams_size
> > > +            || vob->spu_streams[id].id == NULL)
> >
> > ?? That last condition I don't understand.
>
> The last condition is removed now to make vobsub stream set by
> -vobsubid can be looped.
>
> >
> > [...]
> > >      if (source == SUB_SOURCE_VOBSUB) {
> > > -     vobsub_id =
> > > -         mpctx->global_sub_pos -
> > > -         mpctx->global_sub_indices[SUB_SOURCE_VOBSUB];
> > > +        vobsub_id = vobsub_get_id_by_index(vo_vobsub, mpctx->global_sub_pos -
> > > +            mpctx->global_sub_indices[SUB_SOURCE_VOBSUB]);
> >
> > While I don't like them, the surrounding code uses tabs, so please leave
> > them in.
>
> Fixed.
>
> Here's the fixed patch.
>
> --
> Ulion
>
>


-- 
Ulion



More information about the MPlayer-dev-eng mailing list