Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 10 Nov 2013 16:37:51 +0000 (17:37 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 10 Nov 2013 16:37:51 +0000 (17:37 +0100)
* qatar/master:
  hwaccel: Simplify ff_find_hwaccel

Conflicts:
libavcodec/mpeg12dec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/h263dec.c
libavcodec/h264.c
libavcodec/internal.h
libavcodec/mpeg12dec.c
libavcodec/utils.c
libavcodec/vc1dec.c

@@@ -112,14 -108,10 +112,14 @@@ av_cold int ff_h263_decode_init(AVCodec
          return AVERROR(ENOSYS);
      }
      s->codec_id    = avctx->codec->id;
-     avctx->hwaccel = ff_find_hwaccel(avctx->codec->id, avctx->pix_fmt);
+     avctx->hwaccel = ff_find_hwaccel(avctx);
  
 +    if (avctx->stream_codec_tag == AV_RL32("l263") && avctx->extradata_size == 56 && avctx->extradata[0] == 1)
 +        s->ehc_mode = 1;
 +
      /* for h263, we allocate the images after having read the header */
      if (avctx->codec->id != AV_CODEC_ID_H263 &&
 +        avctx->codec->id != AV_CODEC_ID_H263P &&
          avctx->codec->id != AV_CODEC_ID_MPEG4)
          if ((ret = ff_MPV_common_init(s)) < 0)
              return ret;
Simple merge
Simple merge
@@@ -1162,30 -1122,16 +1162,30 @@@ static enum AVPixelFormat mpeg_get_pixe
      Mpeg1Context *s1 = avctx->priv_data;
      MpegEncContext *s = &s1->mpeg_enc_ctx;
  
 -    if (avctx->xvmc_acceleration)
 -        return avctx->get_format(avctx, pixfmt_xvmc_mpg2_420);
 -    else {
 -        if (s->chroma_format <  2)
 -            return avctx->get_format(avctx, mpeg12_hwaccel_pixfmt_list_420);
 -        else if (s->chroma_format == 2)
 -            return AV_PIX_FMT_YUV422P;
 -        else
 -            return AV_PIX_FMT_YUV444P;
 +    if(s->chroma_format < 2) {
 +        return ff_thread_get_format(avctx,
 +                                avctx->codec_id == AV_CODEC_ID_MPEG1VIDEO ?
 +                                mpeg1_hwaccel_pixfmt_list_420 :
 +                                mpeg2_hwaccel_pixfmt_list_420);
 +    } else if(s->chroma_format == 2)
 +        return AV_PIX_FMT_YUV422P;
 +    else
 +        return AV_PIX_FMT_YUV444P;
 +}
 +
 +static void setup_hwaccel_for_pixfmt(AVCodecContext *avctx)
 +{
 +    if (avctx->pix_fmt != AV_PIX_FMT_XVMC_MPEG2_IDCT && avctx->pix_fmt != AV_PIX_FMT_XVMC_MPEG2_MC) {
 +        avctx->xvmc_acceleration = 0;
 +    } else if (!avctx->xvmc_acceleration) {
 +        avctx->xvmc_acceleration = 2;
      }
-     avctx->hwaccel = ff_find_hwaccel(avctx->codec->id, avctx->pix_fmt);
++    avctx->hwaccel = ff_find_hwaccel(avctx);
 +    // until then pix_fmt may be changed right after codec init
 +    if (avctx->pix_fmt == AV_PIX_FMT_XVMC_MPEG2_IDCT ||
 +        avctx->hwaccel || uses_vdpau(avctx))
 +        if (avctx->idct_algo == FF_IDCT_AUTO)
 +            avctx->idct_algo = FF_IDCT_SIMPLE;
  }
  
  /* Call this function when we know all parameters.
Simple merge
Simple merge