[MPlayer-dev-eng] [PATCH] Dvdnav part2 - still frame and simple osd box

Ötvös Attila oattila at chello.hu
Wed Nov 1 21:12:37 CET 2006


2006. október 30. 23.36 dátummal Nico Sabbi ezt írta:
> there's no need to add vd_videostill.c: if you modify
> libavcodec's decoder to release still frames immediately
> when it meets a sequence_end code (0x1b7) you will get
> the job done cleanly.
> Currently you can obtain something similar with:
> Index: libmpcodecs/vd_ffmpeg.c
> ===================================================================
> --- libmpcodecs/vd_ffmpeg.c     (revisione 19838)
> +++ libmpcodecs/vd_ffmpeg.c     (copia locale)
> @@ -204,6 +204,7 @@
>      ctx->avctx = avcodec_alloc_context();
>      avctx = ctx->avctx;
>
> +avctx->flags|= CODEC_FLAG_LOW_DELAY;
>  #ifdef HAVE_XVMC
>
>  #ifdef CODEC_CAP_HWACCEL
>
>
> but it's not even remotely the right solution

I guess it needs decode_video_still() because it draws the film frame 
then if it isn't video stream data because of dvdnav_still_frame.

> >What do you think  if  the default video codec family can be set to
> >ffmpeg in dvdnav stream?
> not needed: just add -vc ffmpeg12, to your command line/config file

I seem that the ffmpeg is better than libmpeg2 in decode of the still 
frames. So I thought the default videdo codec family is set to ffmpeg in 
dvdnav stream.

> >Do you have any proposals for the next problem?
> >If the initializiling of the video codec is with still frame (eg. the
> > mplayer comes back from film's playing to dvd menu that is a still frame)
> > then still frame was read to init and the mplayer should read again the
> > still frame to show but there is only frame and the seek function can't
> > be used here.
>
> I don't understand what you mean; please explain
>
It seems that's something else problem so my question has already been 
solved.

> Overall this last patch is many order of magnitude better than the
> previous ones you posted, but there are still things I don't like:
>
>
> 1)
> +    case STREAM_CTRL_IS_EOF:
> +    {
> +          *((unsigned int *)arg) = dvdnav_priv->eofstream;
> +          return 1;
> +    }
>
> not needed: use stream->eof
>
dvdnav_priv->eofstream decides that the eof is really or there isn't 
stream data because of dvdnav_still_frame event.

>
> STILLS properties don't belong to the stream layer and code like that is
> nonsense
>
> again, STILLS properties don't belong to the stream layer, so you can't use
> STREAM_CTRL_* for this task.
> Use explicit functions instead
>
OK

mplayer-dvdnav-patch-v1.tar.gz with STREAM_CTRL_IS_EOF
mplayer-dvdnav-patch-v2.tar.gz without STREAM_CTRL_IS_EOF

Best regards!
Attila
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mplayer-dvdnav-patch-v1.tar.gz
Type: application/x-tgz
Size: 4932 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/attachments/20061101/11e376b2/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mplayer-dvdnav-patch-v2.tar.gz
Type: application/x-tgz
Size: 4671 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/attachments/20061101/11e376b2/attachment-0001.bin>


More information about the MPlayer-dev-eng mailing list