--- /dev/null
+--- a/libavcodec/amfenc.c
++++ b/libavcodec/amfenc.c
+@@ -680,6 +680,52 @@ int ff_amf_send_frame(AVCodecContext *avctx, const AVFrame *frame)
+ break;
+ }
+
++ // Override Picture Type for Frame
++ if (avctx->codec->id == AV_CODEC_ID_H264) {
++ switch (frame->pict_type) {
++ case AV_PICTURE_TYPE_I:
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_PICTURE_TYPE_I);
++ break;
++ case AV_PICTURE_TYPE_P:
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_PICTURE_TYPE_P);
++ break;
++ case AV_PICTURE_TYPE_B:
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_PICTURE_TYPE_B);
++ break;
++ case AV_PICTURE_TYPE_S:
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_PICTURE_TYPE_SKIP);
++ break;
++ default:
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_PICTURE_TYPE_NONE);
++ break;
++ }
++ // Keyframe overrides previous assignment.
++ if (frame->key_frame) {
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_PICTURE_TYPE_IDR);
++ }
++ } else if (avctx->codec->id == AV_CODEC_ID_HEVC) {
++ switch (frame->pict_type) {
++ case AV_PICTURE_TYPE_I:
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_HEVC_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_I);
++ break;
++ case AV_PICTURE_TYPE_P:
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_HEVC_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_P);
++ break;
++ case AV_PICTURE_TYPE_B:
++ av_log(ctx, AV_LOG_WARNING, "Ignoring B-Frame, unsupported by AMD AMF H.265 Encoder.");
++ break;
++ case AV_PICTURE_TYPE_S:
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_HEVC_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_SKIP);
++ break;
++ default:
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_HEVC_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_NONE);
++ break;
++ }
++ // Keyframe overrides previous assignment.
++ if (frame->key_frame) {
++ AMF_ASSIGN_PROPERTY_INT64(res, surface, AMF_VIDEO_ENCODER_HEVC_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_IDR);
++ }
++ }
+
+ // submit surface
+ res = ctx->encoder->pVtbl->SubmitInput(ctx->encoder, (AMFData*)surface);
ffmpeg-$(FFMPEG_VER)-fix_edit_list_parsing.patch \
ffmpeg-$(FFMPEG_VER)-fix_mpegts.patch \
ffmpeg-$(FFMPEG_VER)-allow_to_choose_rtmp_impl_at_runtime.patch \
- ffmpeg-$(FFMPEG_VER)-hls_replace_key_uri.patch
+ ffmpeg-$(FFMPEG_VER)-hls_replace_key_uri.patch \
+ ffmpeg-$(FFMPEG_VER)-corrupt-h264-frames.patch \
+ ffmpeg-$(FFMPEG_VER)-FFmpeg-devel-amfenc-Add-support-for-pict_type-field.patch \
+ ffmpeg-$(FFMPEG_VER)-mpeg-quarter-sample.patch
ffmpeg-armbox: $(ARCHIVE)/ffmpeg-$(FFMPEG_VER).tar.xz | $(TARGETPREFIX)
$(START_BUILD)