Merge commit '5c1d7246cd65dc4db1b6dc36e29ce39fc1068f3f'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 11 May 2014 21:28:40 +0000 (23:28 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 11 May 2014 21:28:40 +0000 (23:28 +0200)
* commit '5c1d7246cd65dc4db1b6dc36e29ce39fc1068f3f':
  lavc: set AVCodecContext.hwaccel in ff_get_format()

Conflicts:
libavcodec/mpeg12dec.c

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

@@@ -112,14 -108,9 +112,13 @@@ av_cold int ff_h263_decode_init(AVCodec
          return AVERROR(ENOSYS);
      }
      s->codec_id    = avctx->codec->id;
-     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
@@@ -129,17 -102,6 +129,8 @@@ struct AVCodecDefault 
      const uint8_t *value;
  };
  
- /**
-  * Return the hardware accelerated codec for codec codec_id and
-  * pixel format pix_fmt.
-  *
-  * @param avctx The codec context containing the codec_id and pixel format.
-  * @return the hardware accelerated codec, or NULL if none was found.
-  */
- AVHWAccel *ff_find_hwaccel(AVCodecContext *avctx);
 +extern const uint8_t ff_log2_run[41];
 +
  /**
   * Return the index into tab at which {a,b} match elements {[0],[1]} of tab.
   * If there is no such matching pair then size is returned.
@@@ -1229,25 -1200,6 +1229,24 @@@ static enum AVPixelFormat mpeg_get_pixe
          return AV_PIX_FMT_YUV444P;
  }
  
-     avctx->hwaccel = ff_find_hwaccel(avctx);
 +static void setup_hwaccel_for_pixfmt(AVCodecContext *avctx)
 +{
 +    // until then pix_fmt may be changed right after codec init
 +    if (avctx->hwaccel || uses_vdpau(avctx))
 +        if (avctx->idct_algo == FF_IDCT_AUTO)
 +            avctx->idct_algo = FF_IDCT_SIMPLE;
 +
 +    if (avctx->hwaccel && avctx->pix_fmt == AV_PIX_FMT_XVMC) {
 +        Mpeg1Context *s1 = avctx->priv_data;
 +        MpegEncContext *s = &s1->mpeg_enc_ctx;
 +
 +        s->pack_pblocks = 1;
 +#if FF_API_XVMC
 +        avctx->xvmc_acceleration = 2;
 +#endif /* FF_API_XVMC */
 +    }
 +}
 +
  /* Call this function when we know all parameters.
   * It may be called in different places for MPEG-1 and MPEG-2. */
  static int mpeg_decode_postinit(AVCodecContext *avctx)
Simple merge
@@@ -5609,22 -5598,12 +5609,21 @@@ static av_cold int vc1_decode_init(AVCo
          avctx->pix_fmt = ff_get_format(avctx, avctx->codec->pix_fmts);
      else
          avctx->pix_fmt = AV_PIX_FMT_GRAY8;
-     avctx->hwaccel = ff_find_hwaccel(avctx);
      v->s.avctx = avctx;
  
 -    if (ff_vc1_init_common(v) < 0)
 -        return -1;
 +    if ((ret = ff_vc1_init_common(v)) < 0)
 +        return ret;
 +    // ensure static VLC tables are initialized
 +    if ((ret = ff_msmpeg4_decode_init(avctx)) < 0)
 +        return ret;
 +    if ((ret = ff_vc1_decode_init_alloc_tables(v)) < 0)
 +        return ret;
 +    // Hack to ensure the above functions will be called
 +    // again once we know all necessary settings.
 +    // That this is necessary might indicate a bug.
 +    ff_vc1_decode_end(avctx);
 +
      ff_h264chroma_init(&v->h264chroma, 8);
 -    ff_vc1dsp_init(&v->vc1dsp);
  
      if (avctx->codec_id == AV_CODEC_ID_WMV3 || avctx->codec_id == AV_CODEC_ID_WMV3IMAGE) {
          int count = 0;