* qatar/master: Deprecate obsolete XvMC hardware decoding support Conflicts: libavcodec/mpeg12.c libavcodec/mpeg12dec.c libavcodec/mpegvideo.c libavcodec/options_table.h libavutil/pixdesc.c libavutil/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n2.2-rc1
| @@ -663,7 +663,6 @@ following image formats are supported: | |||
| @item Mobotix MxPEG video @tab @tab X | |||
| @item Motion Pixels video @tab @tab X | |||
| @item MPEG-1 video @tab X @tab X | |||
| @item MPEG-1/2 video XvMC (X-Video Motion Compensation) @tab @tab X | |||
| @item MPEG-2 video @tab X @tab X | |||
| @item MPEG-4 part 2 @tab X @tab X | |||
| @tab libxvidcore can be used alternatively for encoding. | |||
| @@ -24,8 +24,9 @@ | |||
| * Provide registration of all codecs, parsers and bitstream filters for libavcodec. | |||
| */ | |||
| #include "avcodec.h" | |||
| #include "config.h" | |||
| #include "avcodec.h" | |||
| #include "version.h" | |||
| #define REGISTER_HWACCEL(X, x) \ | |||
| { \ | |||
| @@ -189,7 +190,9 @@ void avcodec_register_all(void) | |||
| REGISTER_DECODER(MJPEGB, mjpegb); | |||
| REGISTER_DECODER(MMVIDEO, mmvideo); | |||
| REGISTER_DECODER(MOTIONPIXELS, motionpixels); | |||
| #if FF_API_XVMC | |||
| REGISTER_DECODER(MPEG_XVMC, mpeg_xvmc); | |||
| #endif /* FF_API_XVMC */ | |||
| REGISTER_ENCDEC (MPEG1VIDEO, mpeg1video); | |||
| REGISTER_ENCDEC (MPEG2VIDEO, mpeg2video); | |||
| REGISTER_ENCDEC (MPEG4, mpeg4); | |||
| @@ -105,7 +105,9 @@ enum AVCodecID { | |||
| /* video codecs */ | |||
| AV_CODEC_ID_MPEG1VIDEO, | |||
| AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding | |||
| #if FF_API_XVMC | |||
| AV_CODEC_ID_MPEG2VIDEO_XVMC, | |||
| #endif /* FF_API_XVMC */ | |||
| AV_CODEC_ID_H261, | |||
| AV_CODEC_ID_H263, | |||
| AV_CODEC_ID_RV10, | |||
| @@ -754,8 +756,10 @@ typedef struct RcOverride{ | |||
| */ | |||
| #define CODEC_CAP_DR1 0x0002 | |||
| #define CODEC_CAP_TRUNCATED 0x0008 | |||
| #if FF_API_XVMC | |||
| /* Codec can export data for HW decoding (XvMC). */ | |||
| #define CODEC_CAP_HWACCEL 0x0010 | |||
| #endif /* FF_API_XVMC */ | |||
| /** | |||
| * Encoder or decoder requires flushing with NULL input at the end in order to | |||
| * give the complete and correct output. | |||
| @@ -1665,12 +1669,15 @@ typedef struct AVCodecContext { | |||
| #define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG2 field pics) | |||
| #define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1) | |||
| #if FF_API_XVMC | |||
| /** | |||
| * XVideo Motion Acceleration | |||
| * - encoding: forbidden | |||
| * - decoding: set by decoder | |||
| * @deprecated XvMC support is slated for removal. | |||
| */ | |||
| int xvmc_acceleration; | |||
| attribute_deprecated int xvmc_acceleration; | |||
| #endif /* FF_API_XVMC */ | |||
| /** | |||
| * macroblock decision mode | |||
| @@ -21,10 +21,10 @@ | |||
| #include <string.h> | |||
| #include "avcodec.h" | |||
| #include "libavutil/common.h" | |||
| #include "libavutil/internal.h" | |||
| #include "avcodec.h" | |||
| #include "version.h" | |||
| static const AVCodecDescriptor codec_descriptors[] = { | |||
| /* video codecs */ | |||
| @@ -42,6 +42,7 @@ static const AVCodecDescriptor codec_descriptors[] = { | |||
| .long_name = NULL_IF_CONFIG_SMALL("MPEG-2 video"), | |||
| .props = AV_CODEC_PROP_LOSSY, | |||
| }, | |||
| #if FF_API_XVMC | |||
| { | |||
| .id = AV_CODEC_ID_MPEG2VIDEO_XVMC, | |||
| .type = AVMEDIA_TYPE_VIDEO, | |||
| @@ -49,6 +50,7 @@ static const AVCodecDescriptor codec_descriptors[] = { | |||
| .long_name = NULL_IF_CONFIG_SMALL("MPEG-1/2 video XvMC (X-Video Motion Compensation)"), | |||
| .props = AV_CODEC_PROP_LOSSY, | |||
| }, | |||
| #endif /* FF_API_XVMC */ | |||
| { | |||
| .id = AV_CODEC_ID_H261, | |||
| .type = AVMEDIA_TYPE_VIDEO, | |||
| @@ -27,11 +27,13 @@ | |||
| #include <limits.h> | |||
| #include "libavutil/internal.h" | |||
| #include "avcodec.h" | |||
| #include "error_resilience.h" | |||
| #include "mpegvideo.h" | |||
| #include "rectangle.h" | |||
| #include "thread.h" | |||
| #include "version.h" | |||
| /** | |||
| * @param stride the number of MVs to get to the next row | |||
| @@ -697,11 +699,15 @@ static int is_intra_more_likely(ERContext *s) | |||
| if (undamaged_count < 5) | |||
| return 0; // almost all MBs damaged -> use temporal prediction | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| // prevent dsp.sad() check, that requires access to the image | |||
| if (CONFIG_MPEG_XVMC_DECODER && | |||
| s->avctx->xvmc_acceleration && | |||
| s->cur_pic->f.pict_type == AV_PICTURE_TYPE_I) | |||
| return 1; | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| skip_amount = FFMAX(undamaged_count / 50, 1); // check only up to 50 MBs | |||
| is_intra_likely = 0; | |||
| @@ -1173,9 +1179,13 @@ void ff_er_frame_end(ERContext *s) | |||
| } else | |||
| guess_mv(s); | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| /* the filters below are not XvMC compatible, skip them */ | |||
| if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration) | |||
| goto ec_clean; | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| /* fill DC for inter blocks */ | |||
| for (mb_y = 0; mb_y < s->mb_height; mb_y++) { | |||
| for (mb_x = 0; mb_x < s->mb_width; mb_x++) { | |||
| @@ -40,7 +40,6 @@ | |||
| #include "mpeg12data.h" | |||
| #include "bytestream.h" | |||
| #include "vdpau_internal.h" | |||
| #include "xvmc_internal.h" | |||
| #include "thread.h" | |||
| uint8_t ff_mpeg12_static_rl_table_store[2][2][2*MAX_RUN + MAX_LEVEL + 3]; | |||
| @@ -38,6 +38,7 @@ | |||
| #include "vdpau_internal.h" | |||
| #include "xvmc_internal.h" | |||
| #include "thread.h" | |||
| #include "version.h" | |||
| typedef struct Mpeg1Context { | |||
| MpegEncContext mpeg_enc_ctx; | |||
| @@ -773,6 +774,8 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) | |||
| } else | |||
| memset(s->last_mv, 0, sizeof(s->last_mv)); /* reset mv prediction */ | |||
| s->mb_intra = 1; | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| // if 1, we memcpy blocks in xvmcvideo | |||
| if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration > 1) { | |||
| ff_xvmc_pack_pblocks(s, -1); // inter are always full blocks | |||
| @@ -780,6 +783,8 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) | |||
| exchange_uv(s); | |||
| } | |||
| } | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| if (s->codec_id == AV_CODEC_ID_MPEG2VIDEO) { | |||
| if (s->flags2 & CODEC_FLAG2_FAST) { | |||
| @@ -992,6 +997,8 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) | |||
| return -1; | |||
| } | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| //if 1, we memcpy blocks in xvmcvideo | |||
| if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration > 1) { | |||
| ff_xvmc_pack_pblocks(s, cbp); | |||
| @@ -999,6 +1006,8 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) | |||
| exchange_uv(s); | |||
| } | |||
| } | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| if (s->codec_id == AV_CODEC_ID_MPEG2VIDEO) { | |||
| if (s->flags2 & CODEC_FLAG2_FAST) { | |||
| @@ -1122,10 +1131,12 @@ static void quant_matrix_rebuild(uint16_t *matrix, const uint8_t *old_perm, | |||
| } | |||
| static const enum AVPixelFormat mpeg1_hwaccel_pixfmt_list_420[] = { | |||
| #if FF_API_XVMC | |||
| #if CONFIG_MPEG_XVMC_DECODER | |||
| AV_PIX_FMT_XVMC_MPEG2_IDCT, | |||
| AV_PIX_FMT_XVMC_MPEG2_MC, | |||
| #endif | |||
| #endif /* FF_API_XVMC */ | |||
| #if CONFIG_MPEG1_VDPAU_HWACCEL | |||
| AV_PIX_FMT_VDPAU_MPEG1, | |||
| AV_PIX_FMT_VDPAU, | |||
| @@ -1135,10 +1146,12 @@ static const enum AVPixelFormat mpeg1_hwaccel_pixfmt_list_420[] = { | |||
| }; | |||
| static const enum AVPixelFormat mpeg2_hwaccel_pixfmt_list_420[] = { | |||
| #if FF_API_XVMC | |||
| #if CONFIG_MPEG_XVMC_DECODER | |||
| AV_PIX_FMT_XVMC_MPEG2_IDCT, | |||
| AV_PIX_FMT_XVMC_MPEG2_MC, | |||
| #endif | |||
| #endif /* FF_API_XVMC */ | |||
| #if CONFIG_MPEG2_VDPAU_HWACCEL | |||
| AV_PIX_FMT_VDPAU_MPEG2, | |||
| AV_PIX_FMT_VDPAU, | |||
| @@ -1175,14 +1188,22 @@ static enum AVPixelFormat mpeg_get_pixelformat(AVCodecContext *avctx) | |||
| static void setup_hwaccel_for_pixfmt(AVCodecContext *avctx) | |||
| { | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| 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; | |||
| } | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| avctx->hwaccel = ff_find_hwaccel(avctx); | |||
| // until then pix_fmt may be changed right after codec init | |||
| #if FF_API_XVMC | |||
| if (avctx->pix_fmt == AV_PIX_FMT_XVMC_MPEG2_IDCT || | |||
| #else | |||
| if ( | |||
| #endif | |||
| avctx->hwaccel || uses_vdpau(avctx)) | |||
| if (avctx->idct_algo == FF_IDCT_AUTO) | |||
| avctx->idct_algo = FF_IDCT_SIMPLE; | |||
| @@ -1598,11 +1619,15 @@ static int mpeg_field_start(MpegEncContext *s, const uint8_t *buf, int buf_size) | |||
| return -1; | |||
| } | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| // MPV_frame_start will call this function too, | |||
| // but we need to call it on every field | |||
| if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration) | |||
| if (ff_xvmc_field_start(s, avctx) < 0) | |||
| return -1; | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| return 0; | |||
| } | |||
| @@ -1705,9 +1730,13 @@ static int mpeg_decode_slice(MpegEncContext *s, int mb_y, | |||
| } | |||
| for (;;) { | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| // If 1, we memcpy blocks in xvmcvideo. | |||
| if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration > 1) | |||
| ff_xvmc_init_block(s); // set s->block | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| if (mpeg_decode_mb(s, s->block) < 0) | |||
| return -1; | |||
| @@ -1909,8 +1938,12 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict) | |||
| av_log(avctx, AV_LOG_ERROR, "hardware accelerator failed to decode picture\n"); | |||
| } | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration) | |||
| ff_xvmc_field_end(s); | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| /* end of slice reached */ | |||
| if (/*s->mb_y << field_pic == s->mb_height &&*/ !s->first_field && !s->first_slice) { | |||
| @@ -2598,6 +2631,7 @@ AVCodec ff_mpegvideo_decoder = { | |||
| .max_lowres = 3, | |||
| }; | |||
| #if FF_API_XVMC | |||
| #if CONFIG_MPEG_XVMC_DECODER | |||
| static av_cold int mpeg_mc_decode_init(AVCodecContext *avctx) | |||
| { | |||
| @@ -2631,6 +2665,7 @@ AVCodec ff_mpeg_xvmc_decoder = { | |||
| }; | |||
| #endif | |||
| #endif /* FF_API_XVMC */ | |||
| #if CONFIG_MPEG_VDPAU_DECODER | |||
| AVCodec ff_mpeg_vdpau_decoder = { | |||
| @@ -30,6 +30,7 @@ | |||
| #include "libavutil/attributes.h" | |||
| #include "libavutil/avassert.h" | |||
| #include "libavutil/imgutils.h" | |||
| #include "libavutil/internal.h" | |||
| #include "avcodec.h" | |||
| #include "dsputil.h" | |||
| #include "h264chroma.h" | |||
| @@ -1710,8 +1711,12 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx) | |||
| update_noise_reduction(s); | |||
| } | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration) | |||
| return ff_xvmc_field_start(s, avctx); | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| return 0; | |||
| } | |||
| @@ -1720,19 +1725,24 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx) | |||
| * frame has been coded/decoded. */ | |||
| void ff_MPV_frame_end(MpegEncContext *s) | |||
| { | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| /* redraw edges for the frame if decoding didn't complete */ | |||
| // just to make sure that all data is rendered. | |||
| if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration) { | |||
| ff_xvmc_field_end(s); | |||
| } else if ((s->er.error_count || s->encoding || !(s->avctx->codec->capabilities&CODEC_CAP_DRAW_HORIZ_BAND)) && | |||
| !s->avctx->hwaccel && | |||
| !(s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU) && | |||
| s->unrestricted_mv && | |||
| s->current_picture.reference && | |||
| !s->intra_only && | |||
| !(s->flags & CODEC_FLAG_EMU_EDGE) && | |||
| !s->avctx->lowres | |||
| ) { | |||
| } else | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| if ((s->er.error_count || s->encoding || !(s->avctx->codec->capabilities&CODEC_CAP_DRAW_HORIZ_BAND)) && | |||
| !s->avctx->hwaccel && | |||
| !(s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU) && | |||
| s->unrestricted_mv && | |||
| s->current_picture.reference && | |||
| !s->intra_only && | |||
| !(s->flags & CODEC_FLAG_EMU_EDGE) && | |||
| !s->avctx->lowres | |||
| ) { | |||
| const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(s->avctx->pix_fmt); | |||
| int hshift = desc->log2_chroma_w; | |||
| int vshift = desc->log2_chroma_h; | |||
| @@ -2667,10 +2677,15 @@ void MPV_decode_mb_internal(MpegEncContext *s, int16_t block[12][64], | |||
| int lowres_flag, int is_mpeg12) | |||
| { | |||
| const int mb_xy = s->mb_y * s->mb_stride + s->mb_x; | |||
| #if FF_API_XVMC | |||
| FF_DISABLE_DEPRECATION_WARNINGS | |||
| if(CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration){ | |||
| ff_xvmc_decode_mb(s);//xvmc uses pblocks | |||
| return; | |||
| } | |||
| FF_ENABLE_DEPRECATION_WARNINGS | |||
| #endif /* FF_API_XVMC */ | |||
| if(s->avctx->debug&FF_DEBUG_DCT_COEFF) { | |||
| /* print DCT coefficients */ | |||
| @@ -30,6 +30,9 @@ | |||
| #include "xvmc.h" | |||
| #include "xvmc_internal.h" | |||
| #include "version.h" | |||
| #if FF_API_XVMC | |||
| /** | |||
| * Initialize the block field of the MpegEncContext pointer passed as | |||
| @@ -329,3 +332,5 @@ void ff_xvmc_decode_mb(MpegEncContext *s) | |||
| if (render->filled_mv_blocks_num == render->allocated_mv_blocks) | |||
| ff_mpeg_draw_horiz_band(s, 0, 0); | |||
| } | |||
| #endif /* FF_API_XVMC */ | |||
| @@ -281,7 +281,9 @@ static const AVOption avcodec_options[] = { | |||
| {"deflate", "deflate-based coder", 0, AV_OPT_TYPE_CONST, {.i64 = FF_CODER_TYPE_DEFLATE }, INT_MIN, INT_MAX, V|E, "coder"}, | |||
| {"context", "context model", OFFSET(context_model), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|E}, | |||
| {"slice_flags", NULL, OFFSET(slice_flags), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX}, | |||
| #if FF_API_XVMC | |||
| {"xvmc_acceleration", NULL, OFFSET(xvmc_acceleration), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX}, | |||
| #endif /* FF_API_XVMC */ | |||
| {"mbd", "macroblock decision algorithm (high quality mode)", OFFSET(mb_decision), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, 0, 2, V|E, "mbd"}, | |||
| {"simple", "use mbcmp (default)", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MB_DECISION_SIMPLE }, INT_MIN, INT_MAX, V|E, "mbd"}, | |||
| {"bits", "use fewest bits", 0, AV_OPT_TYPE_CONST, {.i64 = FF_MB_DECISION_BITS }, INT_MIN, INT_MAX, V|E, "mbd"}, | |||
| @@ -117,5 +117,8 @@ | |||
| #ifndef FF_API_ARCH_ALPHA | |||
| #define FF_API_ARCH_ALPHA (LIBAVCODEC_VERSION_MAJOR < 56) | |||
| #endif | |||
| #ifndef FF_API_XVMC | |||
| #define FF_API_XVMC (LIBAVCODEC_VERSION_MAJOR < 56) | |||
| #endif | |||
| #endif /* AVCODEC_VERSION_H */ | |||
| @@ -601,11 +601,15 @@ static av_cold void dsputil_init_sse(DSPContext *c, AVCodecContext *avctx, | |||
| const int high_bit_depth = avctx->bits_per_raw_sample > 8; | |||
| if (!high_bit_depth) { | |||
| #if FF_API_XVMC | |||
| if (!(CONFIG_MPEG_XVMC_DECODER && avctx->xvmc_acceleration > 1)) { | |||
| /* XvMCCreateBlocks() may not allocate 16-byte aligned blocks */ | |||
| c->clear_block = ff_clear_block_sse; | |||
| c->clear_blocks = ff_clear_blocks_sse; | |||
| #endif /* FF_API_XVMC */ | |||
| c->clear_block = ff_clear_block_sse; | |||
| c->clear_blocks = ff_clear_blocks_sse; | |||
| #if FF_API_XVMC | |||
| } | |||
| #endif /* FF_API_XVMC */ | |||
| } | |||
| c->vector_clipf = ff_vector_clipf_sse; | |||
| @@ -29,8 +29,12 @@ | |||
| #include <X11/extensions/XvMC.h> | |||
| #include "libavutil/attributes.h" | |||
| #include "version.h" | |||
| #include "avcodec.h" | |||
| #if FF_API_XVMC | |||
| /** | |||
| * @defgroup lavc_codec_hwaccel_xvmc XvMC | |||
| * @ingroup lavc_codec_hwaccel | |||
| @@ -41,7 +45,7 @@ | |||
| #define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct | |||
| the number is 1337 speak for the letters IDCT MCo (motion compensation) */ | |||
| struct xvmc_pix_fmt { | |||
| attribute_deprecated struct xvmc_pix_fmt { | |||
| /** The field contains the special constant value AV_XVMC_ID. | |||
| It is used as a test that the application correctly uses the API, | |||
| and that there is no corruption caused by pixel routines. | |||
| @@ -165,4 +169,6 @@ struct xvmc_pix_fmt { | |||
| * @} | |||
| */ | |||
| #endif /* FF_API_XVMC */ | |||
| #endif /* AVCODEC_XVMC_H */ | |||
| @@ -23,6 +23,9 @@ | |||
| #include "avcodec.h" | |||
| #include "mpegvideo.h" | |||
| #include "version.h" | |||
| #if FF_API_XVMC | |||
| void ff_xvmc_init_block(MpegEncContext *s); | |||
| void ff_xvmc_pack_pblocks(MpegEncContext *s, int cbp); | |||
| @@ -30,4 +33,6 @@ int ff_xvmc_field_start(MpegEncContext*s, AVCodecContext *avctx); | |||
| void ff_xvmc_field_end(MpegEncContext *s); | |||
| void ff_xvmc_decode_mb(MpegEncContext *s); | |||
| #endif /* FF_API_XVMC */ | |||
| #endif /* AVCODEC_XVMC_INTERNAL_H */ | |||
| @@ -44,8 +44,10 @@ | |||
| PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range | |||
| PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range | |||
| PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range | |||
| #if FF_API_XVMC | |||
| PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing | |||
| PIX_FMT_XVMC_MPEG2_IDCT, | |||
| #endif /* FF_API_XVMC */ | |||
| PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 | |||
| PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 | |||
| PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) | |||
| @@ -29,6 +29,7 @@ | |||
| #include "internal.h" | |||
| #include "intreadwrite.h" | |||
| #include "avstring.h" | |||
| #include "version.h" | |||
| void av_read_image_line(uint16_t *dst, | |||
| const uint8_t *data[4], const int linesize[4], | |||
| @@ -313,6 +314,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { | |||
| }, | |||
| .flags = AV_PIX_FMT_FLAG_PLANAR, | |||
| }, | |||
| #if FF_API_XVMC | |||
| [AV_PIX_FMT_XVMC_MPEG2_MC] = { | |||
| .name = "xvmcmc", | |||
| .flags = AV_PIX_FMT_FLAG_HWACCEL, | |||
| @@ -321,6 +323,7 @@ const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { | |||
| .name = "xvmcidct", | |||
| .flags = AV_PIX_FMT_FLAG_HWACCEL, | |||
| }, | |||
| #endif /* FF_API_XVMC */ | |||
| [AV_PIX_FMT_UYVY422] = { | |||
| .name = "uyvy422", | |||
| .nb_components = 3, | |||
| @@ -80,8 +80,10 @@ enum AVPixelFormat { | |||
| AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range | |||
| AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range | |||
| AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range | |||
| #if FF_API_XVMC | |||
| AV_PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing | |||
| AV_PIX_FMT_XVMC_MPEG2_IDCT, | |||
| #endif /* FF_API_XVMC */ | |||
| AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 | |||
| AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 | |||
| AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) | |||
| @@ -144,6 +144,9 @@ | |||
| #ifndef FF_API_OLD_OPENCL | |||
| #define FF_API_OLD_OPENCL (LIBAVUTIL_VERSION_MAJOR < 53) | |||
| #endif | |||
| #ifndef FF_API_XVMC | |||
| #define FF_API_XVMC (LIBAVUTIL_VERSION_MAJOR < 53) | |||
| #endif | |||
| /** | |||
| * @} | |||