You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	Merge remote-tracking branch 'qatar/master'
* 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>
This commit is contained in:
		| @@ -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 | ||||
|  | ||||
| /** | ||||
|  * @} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user