0010-ffmpeg-support-to-change-gop.patch 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. From 8b976d184eb1ded7a0635582a4e1b1c619852ed8 Mon Sep 17 00:00:00 2001
  2. From: "arvin.zhu" <arvin.zhu@starfivetech.com>
  3. Date: Thu, 22 Sep 2022 18:56:28 +0800
  4. Subject: [PATCH] ffmpeg: support to change gop
  5. support to change gop of hevc for omc encoder
  6. Signed-off-by: arvin.zhu <arvin.zhu@starfivetech.com>
  7. ---
  8. libavcodec/omx.c | 12 ++++++++++++
  9. 1 file changed, 12 insertions(+)
  10. mode change 100644 => 100755 libavcodec/omx.c
  11. diff --git a/libavcodec/omx.c b/libavcodec/omx.c
  12. old mode 100644
  13. new mode 100755
  14. index 84b0835..1d121af
  15. --- a/libavcodec/omx.c
  16. +++ b/libavcodec/omx.c
  17. @@ -28,6 +28,8 @@
  18. #include <dlfcn.h>
  19. #include <OMX_Core.h>
  20. #include <OMX_Component.h>
  21. +#include <OMX_IndexExt.h>
  22. +#include <OMX_VideoExt.h>
  23. #include <pthread.h>
  24. #include <stdio.h>
  25. #include <stdlib.h>
  26. @@ -545,6 +547,16 @@ static av_cold int omx_component_init(AVCodecContext *avctx, const char *role)
  27. }
  28. err = OMX_SetParameter(s->handle, OMX_IndexParamVideoAvc, &avc);
  29. CHECK(err);
  30. + } else if (avctx->codec->id == AV_CODEC_ID_HEVC) {
  31. + OMX_VIDEO_PARAM_AVCTYPE hevc = { 0 };
  32. + INIT_STRUCT(hevc);
  33. + hevc.nPortIndex = s->out_port;
  34. + err = OMX_GetParameter(s->handle, OMX_IndexParamVideoHevc, &hevc);
  35. + CHECK(err);
  36. + hevc.nBFrames = 0;
  37. + hevc.nPFrames = avctx->gop_size;
  38. + err = OMX_SetParameter(s->handle, OMX_IndexParamVideoHevc, &hevc);
  39. + CHECK(err);
  40. }
  41. err = OMX_SendCommand(s->handle, OMX_CommandStateSet, OMX_StateIdle, NULL);
  42. --
  43. 2.17.1