[MPlayer-cvslog] r28662 - trunk/libmpcodecs/vd_ffmpeg.c

Reimar Doeffinger Reimar.Doeffinger at stud.uni-karlsruhe.de
Thu Feb 19 10:50:19 CET 2009


On Thu, Feb 19, 2009 at 10:21:47AM +0100, iive wrote:
> Author: iive
> Date: Thu Feb 19 10:21:46 2009
> New Revision: 28662
> 
> Log:
> Return PIX_FMT_NONE if video system refuse all other formats.
> 
> Modified:
>    trunk/libmpcodecs/vd_ffmpeg.c
> 
> Modified: trunk/libmpcodecs/vd_ffmpeg.c
> ==============================================================================
> --- trunk/libmpcodecs/vd_ffmpeg.c	Thu Feb 19 06:09:46 2009	(r28661)
> +++ trunk/libmpcodecs/vd_ffmpeg.c	Thu Feb 19 10:21:46 2009	(r28662)
> @@ -894,7 +894,7 @@ static mp_image_t *decode(sh_video_t *sh
>  #if CONFIG_XVMC || CONFIG_VDPAU
>  static enum PixelFormat get_format(struct AVCodecContext *avctx,
>                                      const enum PixelFormat *fmt){
> -    enum PixelFormat selected_format = fmt[0];
> +    enum PixelFormat selected_format;
>      int imgfmt;
>      sh_video_t *sh = avctx->opaque;
>      int i;
> @@ -904,10 +904,10 @@ static enum PixelFormat get_format(struc
>          if(!IMGFMT_IS_XVMC(imgfmt) && !IMGFMT_IS_VDPAU(imgfmt)) continue;
>          mp_msg(MSGT_DECVIDEO, MSGL_INFO, MSGTR_MPCODECS_TryingPixfmt, i);
>          if(init_vo(sh, fmt[i]) >= 0) {
> -            selected_format = fmt[i];
>              break;
>          }
>      }
> +    selected_format = fmt[i];
>      imgfmt = pixfmt2imgfmt(selected_format);
>      if(IMGFMT_IS_XVMC(imgfmt) || IMGFMT_IS_VDPAU(imgfmt)) {
>          vd_ffmpeg_ctx *ctx = sh->context;

This is not a good solution in the long term, fmt[0] should be returned at least
when fmt[0] is a non-accelerated format. This would then allow to automatically select
accelerated PIX_FMTs when they are supported and fallback to normal decoding if not.
Obviously this requires the FFmpeg mpeg12, mpeg12mc and mpeg12vdpau decoders to be merged,
but I think this is already work in progress.



More information about the MPlayer-cvslog mailing list