media: mfc: changed the framerate calculation method
authorJeonghee Kim <jhhhh.kim@samsung.com>
Fri, 27 Oct 2017 09:24:41 +0000 (18:24 +0900)
committerCosmin Tanislav <demonsingur@gmail.com>
Mon, 22 Apr 2024 17:22:21 +0000 (20:22 +0300)
Change-Id: If8c0d412671e9e0a52d19fc43a43aaf2b755319b
Signed-off-by: Jeonghee Kim <jhhhh.kim@samsung.com>
drivers/media/platform/exynos/mfc/s5p_mfc_enc_vb2_ops.c
drivers/media/platform/exynos/mfc/s5p_mfc_irq.c
drivers/media/platform/exynos/mfc/s5p_mfc_nal_q.c
drivers/media/platform/exynos/mfc/s5p_mfc_qos.c
drivers/media/platform/exynos/mfc/s5p_mfc_qos.h

index a1d954533f89bfd8de03ddd404710717f4d71e62..67b696f3e51e60c7bc17b6d7f851f523a472e2f0 100644 (file)
@@ -156,7 +156,7 @@ static int s5p_mfc_enc_buf_init(struct vb2_buffer *vb)
                        if (IS_BUFFER_BATCH_MODE(ctx)) {
                                int count = 0;
 
-                               ctx->framerate = ctx->num_bufs_in_vb * ENC_DEFAULT_CAM_FPS;
+                               ctx->framerate = ctx->num_bufs_in_vb * ENC_DEFAULT_CAM_CAPTURE_FPS;
                                mfc_debug(3, "framerate: %ld\n", ctx->framerate);
 
                                count = s5p_mfc_bufcon_get_daddr(ctx, buf, dmabuf, i);
index 76d039fb4e00cbf01b314d66732b81b3f85ace91..c9c98d359228c6a89710f429da6c450ea06ddc15 100644 (file)
@@ -778,9 +778,9 @@ static void mfc_handle_stream_copy_timestamp(struct s5p_mfc_ctx *ctx, struct s5p
        }
 
        start_timestamp = src_mb->vb.vb2_buf.timestamp;
-       interval = NSEC_PER_SEC / (ctx->framerate / 1000);
-       mfc_debug(3, "%ldfps, start timestamp: %lld, base interval: %lld\n",
-                       ctx->framerate / 1000, start_timestamp, interval);
+       interval = NSEC_PER_SEC / (ENC_DEFAULT_CAM_VIDEO_FPS / 1000);
+       mfc_debug(3, "%dfps, start timestamp: %lld, base interval: %lld\n",
+                       (ENC_DEFAULT_CAM_VIDEO_FPS / 1000), start_timestamp, interval);
 
        new_timestamp = start_timestamp + (interval * src_mb->done_index);
        mfc_debug(3, "new timestamp: %lld, interval: %lld\n",
index bad76fcd96a10bb556bb92c57eee568905a391e9..4d55a1f33f5c8de04b5f1c87160c7ee68cc0ae20 100644 (file)
@@ -819,9 +819,9 @@ static void mfc_nal_q_handle_stream_copy_timestamp(struct s5p_mfc_ctx *ctx, stru
        }
 
        start_timestamp = src_mb->vb.vb2_buf.timestamp;
-       interval = NSEC_PER_SEC / (ctx->framerate / 1000);
-       mfc_debug(3, "NAL Q: %ldfps, start timestamp: %lld, base interval: %lld\n",
-                       ctx->framerate / 1000, start_timestamp, interval);
+       interval = NSEC_PER_SEC / (ENC_DEFAULT_CAM_VIDEO_FPS / 1000);
+       mfc_debug(3, "NAL Q: %dfps, start timestamp: %lld, base interval: %lld\n",
+                       (ENC_DEFAULT_CAM_VIDEO_FPS / 1000), start_timestamp, interval);
 
        new_timestamp = start_timestamp + (interval * src_mb->done_index);
        mfc_debug(3, "NAL Q: new timestamp: %lld, interval: %lld\n",
index b9dabbbe2b5e81674a4f87a73c76dbd5c14ad362..a3e9cc45c8ddaa6d2a97cb7418ba43095c0eb3e5 100644 (file)
@@ -660,6 +660,12 @@ static unsigned long mfc_qos_get_fps_by_timestamp(struct s5p_mfc_ctx *ctx, struc
                        time->tv_sec, time->tv_usec, ctx->ts_count);
        }
 
+       if (IS_BUFFER_BATCH_MODE(ctx)) {
+               mfc_debug(3, "Keep framerate if buffer batch mode is used, %ldfps\n",
+                       ctx->framerate);
+               return ctx->framerate;
+       }
+
        if (list_empty(&ctx->ts_list)) {
                mfc_qos_add_timestamp(ctx, time, &ctx->ts_list);
                return mfc_qos_get_framerate_by_interval(0);
index 61f3b03c3858442944a28d1027b92072ab8b1cc7..b8e13660040f47b5c2b8c9c0da2d99d0196dbacb 100644 (file)
 
 #include "s5p_mfc_common.h"
 
-#define MFC_MAX_FPS            (480000)
-#define DEC_DEFAULT_FPS                (240000)
-#define ENC_DEFAULT_FPS                (240000)
-#define ENC_DEFAULT_CAM_FPS    (60000)
+#define MFC_MAX_FPS                    (480000)
+#define DEC_DEFAULT_FPS                        (240000)
+#define ENC_DEFAULT_FPS                        (240000)
+#define ENC_DEFAULT_CAM_CAPTURE_FPS    (60000)
+#define ENC_DEFAULT_CAM_VIDEO_FPS      (30000)
 
-#define MB_COUNT_PER_UHD_FRAME 32400
-#define MAX_FPS_PER_UHD_FRAME  120
-#define MIN_BW_PER_SEC         1
+#define MB_COUNT_PER_UHD_FRAME         32400
+#define MAX_FPS_PER_UHD_FRAME          120
+#define MIN_BW_PER_SEC                 1
 
-#define MFC_DRV_TIME           500
+#define MFC_DRV_TIME                   500
 
 #define MFC_QOS_WEIGHT_3PLANE          80
 #define MFC_QOS_WEIGHT_OTHER_CODEC     25