mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-23 11:19:55 +00:00
Merge commit '737d35e33408263c04d7730f5487eed0d04938ba'
* commit '737d35e33408263c04d7730f5487eed0d04938ba': vdpau: add support for the H.264 High 4:4:4 Predictive profile Conflicts: libavcodec/vdpau_internal.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
6f764d2911
@ -288,7 +288,9 @@ int ff_vdpau_common_end_frame(AVCodecContext *avctx, AVFrame *frame,
|
||||
|
||||
#if FF_API_BUFS_VDPAU
|
||||
FF_DISABLE_DEPRECATION_WARNINGS
|
||||
hwctx->info = pic_ctx->info;
|
||||
av_assert0(sizeof(hwctx->info) >= sizeof(pic_ctx->info));
|
||||
memset(&hwctx->info, 0, sizeof(hwctx->info));
|
||||
memcpy(&hwctx->info, &pic_ctx->info, sizeof(pic_ctx->info));
|
||||
hwctx->bitstream_buffers = pic_ctx->bitstream_buffers;
|
||||
hwctx->bitstream_buffers_used = pic_ctx->bitstream_buffers_used;
|
||||
hwctx->bitstream_buffers_allocated = pic_ctx->bitstream_buffers_allocated;
|
||||
|
@ -123,6 +123,9 @@ static int vdpau_h264_start_frame(AVCodecContext *avctx,
|
||||
H264Picture *pic = h->cur_pic_ptr;
|
||||
struct vdpau_picture_context *pic_ctx = pic->hwaccel_picture_private;
|
||||
VdpPictureInfoH264 *info = &pic_ctx->info.h264;
|
||||
#ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
|
||||
VdpPictureInfoH264Predictive *info2 = &pic_ctx->info.h264_predictive;
|
||||
#endif
|
||||
|
||||
/* init VdpPictureInfoH264 */
|
||||
info->slice_count = 0;
|
||||
@ -149,6 +152,10 @@ static int vdpau_h264_start_frame(AVCodecContext *avctx,
|
||||
info->log2_max_pic_order_cnt_lsb_minus4 = h->sps.poc_type ? 0 : h->sps.log2_max_poc_lsb - 4;
|
||||
info->delta_pic_order_always_zero_flag = h->sps.delta_pic_order_always_zero_flag;
|
||||
info->direct_8x8_inference_flag = h->sps.direct_8x8_inference_flag;
|
||||
#ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
|
||||
info2->qpprime_y_zero_transform_bypass_flag = h->sps.transform_bypass;
|
||||
info2->separate_colour_plane_flag = h->sps.residual_color_transform_flag;
|
||||
#endif
|
||||
info->entropy_coding_mode_flag = h->pps.cabac;
|
||||
info->pic_order_present_flag = h->pps.pic_order_present;
|
||||
info->deblocking_filter_control_present_flag = h->pps.deblocking_filter_parameters_present;
|
||||
@ -227,6 +234,18 @@ static int vdpau_h264_init(AVCodecContext *avctx)
|
||||
case FF_PROFILE_H264_EXTENDED:
|
||||
profile = VDP_DECODER_PROFILE_H264_EXTENDED;
|
||||
break;
|
||||
#endif
|
||||
case FF_PROFILE_H264_HIGH_10:
|
||||
/* XXX: High 10 can be treated as High so long as only 8-bits per
|
||||
* formats are supported. */
|
||||
profile = VDP_DECODER_PROFILE_H264_HIGH;
|
||||
break;
|
||||
#ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
|
||||
case FF_PROFILE_H264_HIGH_422:
|
||||
case FF_PROFILE_H264_HIGH_444_PREDICTIVE:
|
||||
case FF_PROFILE_H264_CAVLC_444:
|
||||
profile = VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return AVERROR(ENOTSUP);
|
||||
|
@ -44,16 +44,17 @@ static inline uintptr_t ff_vdpau_get_surface_id(AVFrame *pic)
|
||||
|
||||
struct vdpau_picture_context;
|
||||
#if CONFIG_VDPAU
|
||||
#if !FF_API_BUFS_VDPAU
|
||||
union AVVDPAUPictureInfo {
|
||||
union VDPAUPictureInfo {
|
||||
VdpPictureInfoH264 h264;
|
||||
VdpPictureInfoMPEG1Or2 mpeg;
|
||||
VdpPictureInfoVC1 vc1;
|
||||
VdpPictureInfoMPEG4Part2 mpeg4;
|
||||
};
|
||||
#else
|
||||
#include "vdpau.h"
|
||||
#ifdef VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE
|
||||
VdpPictureInfoH264Predictive h264_predictive;
|
||||
#endif
|
||||
};
|
||||
|
||||
#include "vdpau.h"
|
||||
|
||||
typedef struct VDPAUHWContext {
|
||||
AVVDPAUContext context;
|
||||
@ -92,7 +93,7 @@ struct vdpau_picture_context {
|
||||
/**
|
||||
* VDPAU picture information.
|
||||
*/
|
||||
union AVVDPAUPictureInfo info;
|
||||
union VDPAUPictureInfo info;
|
||||
|
||||
/**
|
||||
* Allocated size of the bitstream_buffers table.
|
||||
|
Loading…
Reference in New Issue
Block a user