media_module: add atrace print [1/1]

PD#SWPL-4956

Problem:
Need atrace to debug multimedia issue

Solution:
Add atrace prints

Verify:
P212

Change-Id: Idd414734dd88223c3640878be26a82991f44a880
Signed-off-by: Tao Guo <tao.guo@amlogic.com>
This commit is contained in:
Tao Guo
2019-01-17 14:03:37 +08:00
committed by Dongjin Kim
parent e946533f48
commit 6987242bf5
16 changed files with 85 additions and 4 deletions

View File

@@ -45,6 +45,9 @@
#include "../../../common/chips/decoder_cpu_ver_info.h"
#include <linux/amlogic/tee.h>
#include <trace/events/meson_atrace.h>
#define DRIVER_NAME "amvdec_avs"
#define MODULE_NAME "amvdec_avs"
@@ -584,6 +587,7 @@ static void vavs_isr(void)
decoder_do_frame_check(NULL, vf);
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,
NULL);
@@ -642,6 +646,7 @@ static void vavs_isr(void)
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,
NULL);
@@ -720,6 +725,7 @@ static void vavs_isr(void)
decoder_do_frame_check(NULL, vf);
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,
NULL);

View File

@@ -56,6 +56,7 @@
#include "../utils/firmware.h"
#include "../../../common/chips/decoder_cpu_ver_info.h"
#include <linux/amlogic/tee.h>
#include <trace/events/meson_atrace.h>
#define I_ONLY_SUPPORT
#define MIX_STREAM_SUPPORT
@@ -4518,6 +4519,7 @@ static int avs2_prepare_display_buf(struct AVS2Decoder_s *dec)
set_vframe(dec, vf, pic, 0);
decoder_do_frame_check(hw_to_vdec(dec), vf);
kfifo_put(&dec->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
#ifndef CONFIG_AMLOGIC_MEDIA_MULTI_DEC
/*count info*/

View File

@@ -58,6 +58,9 @@
#include <linux/uaccess.h>
#include <trace/events/meson_atrace.h>
#define DRIVER_NAME "amvdec_h264"
#define MODULE_NAME "amvdec_h264"
#define MEM_NAME "codec_264"
@@ -490,6 +493,7 @@ static void prepare_display_q(void)
if (kfifo_get(&delay_display_q, &vf)) {
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY, NULL);
}
@@ -3526,6 +3530,7 @@ static void stream_switching_do(struct work_struct *work)
if (kfifo_get(&delay_display_q, &vf)) {
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY, NULL);
} else
@@ -3607,7 +3612,7 @@ static void stream_switching_do(struct work_struct *work)
/* send clone to receiver */
kfifo_put(&display_q,
(const struct vframe_s *)&fense_vf[i]);
ATRACE_COUNTER(MODULE_NAME, fense_vf[i].pts);
/* early recycle frames for last session */
if (delay)
vh264_vf_put(vf, NULL);

View File

@@ -59,6 +59,9 @@
#include <linux/amlogic/media/codec_mm/codec_mm.h>
#include <linux/amlogic/media/codec_mm/configs.h>
#include <trace/events/meson_atrace.h>
#if 0 /* MESON_CPU_TYPE == MESON_CPU_TYPE_MESON6TVD */
#define DOUBLE_WRITE
#endif
@@ -74,7 +77,6 @@
#define VF_BUFFER_IDX(n) (2 + n)
#define DECODER_WORK_SPACE_SIZE 0x800000
#if 1 /* MESON_CPU_TYPE == MESON_CPU_TYPE_MESONG9TV */
#define H264_4K2K_SINGLE_CORE 1
#else
@@ -764,6 +766,7 @@ static irqreturn_t vh264_4k2k_isr(int irq, void *dev_id)
VF_BUFFER_IDX(display_buff_id));
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,

View File

@@ -61,6 +61,9 @@
#include "../../../common/chips/decoder_cpu_ver_info.h"
#include <linux/crc32.h>
#include <trace/events/meson_atrace.h>
#undef pr_info
#define pr_info printk
#define VDEC_DW
@@ -2587,7 +2590,7 @@ int prepare_display_buf(struct vdec_s *vdec, struct FrameStore *frame)
}
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hw->vf_pre_count++;
vdec->vdec_fps_detec(vdec->id);
vf_notify_receiver(vdec->vf_provider_name,
@@ -2625,6 +2628,8 @@ int notify_v4l_eos(struct vdec_s *vdec)
vf->flag = VFRAME_FLAG_EMPTY_FRAME_V4L;
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(vdec->vf_provider_name,
VFRAME_EVENT_PROVIDER_VFRAME_READY, NULL);

View File

@@ -46,6 +46,7 @@
#include "../utils/config_parser.h"
#include "../utils/firmware.h"
#include "../../../common/chips/decoder_cpu_ver_info.h"
#include <trace/events/meson_atrace.h>
#define CONSTRAIN_MAX_BUF_NUM
@@ -7407,6 +7408,7 @@ static int process_pending_vframe(struct hevc_state_s *hevc,
__func__, vf->index);
hevc->vf_pre_count++;
kfifo_put(&hevc->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
}
if (kfifo_peek(&hevc->pending_q, &vf)) {
@@ -7428,6 +7430,7 @@ static int process_pending_vframe(struct hevc_state_s *hevc,
hevc->vf_pre_count++;
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
}
} else if ((!pair_frame_top_flag) &&
(((vf->index >> 8) & 0xff) == 0xff)) {
@@ -7445,6 +7448,7 @@ static int process_pending_vframe(struct hevc_state_s *hevc,
pair_pic->vf_ref++;
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hevc->vf_pre_count++;
if (get_dbg_flag(hevc) & H265_DEBUG_PIC_STRUCT)
hevc_print(hevc, 0,
@@ -7467,6 +7471,7 @@ static int process_pending_vframe(struct hevc_state_s *hevc,
pair_pic->vf_ref++;
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hevc->vf_pre_count++;
if (get_dbg_flag(hevc) & H265_DEBUG_PIC_STRUCT)
hevc_print(hevc, 0,
@@ -7831,9 +7836,11 @@ static int prepare_display_buf(struct hevc_state_s *hevc, struct PIC_s *pic)
hevc->vf_pre_count++;
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hevc->vf_pre_count++;
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf2);
ATRACE_COUNTER(MODULE_NAME, vf2->pts);
} else if (pic->pic_struct == 5
|| pic->pic_struct == 6) {
struct vframe_s *vf2, *vf3;
@@ -7877,12 +7884,15 @@ static int prepare_display_buf(struct hevc_state_s *hevc, struct PIC_s *pic)
hevc->vf_pre_count++;
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hevc->vf_pre_count++;
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf2);
ATRACE_COUNTER(MODULE_NAME, vf2->pts);
hevc->vf_pre_count++;
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf3);
ATRACE_COUNTER(MODULE_NAME, vf3->pts);
} else if (pic->pic_struct == 9
|| pic->pic_struct == 10) {
@@ -7986,6 +7996,7 @@ static int prepare_display_buf(struct hevc_state_s *hevc, struct PIC_s *pic)
hevc->vf_pre_count++;
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
}
#else
vf->type_original = vf->type;
@@ -7993,6 +8004,7 @@ static int prepare_display_buf(struct hevc_state_s *hevc, struct PIC_s *pic)
hevc->vf_pre_count++;
decoder_do_frame_check(hw_to_vdec(hevc), vf);
kfifo_put(&hevc->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
if (get_dbg_flag(hevc) & H265_DEBUG_PIC_STRUCT)
hevc_print(hevc, 0,

View File

@@ -38,6 +38,9 @@
#include <linux/amlogic/media/codec_mm/configs.h>
#include <linux/amlogic/tee.h>
#include <trace/events/meson_atrace.h>
#ifdef CONFIG_AM_VDEC_MJPEG_LOG
#define AMLOG
#define LOG_LEVEL_VAR amlog_level_vmjpeg
@@ -219,6 +222,7 @@ static irqreturn_t vmjpeg_isr(int irq, void *dev_id)
vdec_count_info(gvs, 0, offset);
kfifo_put(&display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,
@@ -276,6 +280,7 @@ static irqreturn_t vmjpeg_isr(int irq, void *dev_id)
vfbuf_use[index]++;
kfifo_put(&display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
#else
/* send whole frame by weaving top & bottom field */
#ifdef NV21
@@ -304,6 +309,7 @@ static irqreturn_t vmjpeg_isr(int irq, void *dev_id)
vdec_count_info(gvs, 0, offset);
kfifo_put(&display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,

View File

@@ -44,6 +44,9 @@
#include <linux/amlogic/media/codec_mm/configs.h>
#include "../utils/firmware.h"
#include <trace/events/meson_atrace.h>
#define MEM_NAME "codec_mmjpeg"
#define DRIVER_NAME "ammvdec_mjpeg"
@@ -300,7 +303,7 @@ static irqreturn_t vmjpeg_isr(struct vdec_s *vdec, int irq)
hw->vfbuf_use[index]++;
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hw->frame_num++;
mmjpeg_debug_print(DECODE_ID(hw), PRINT_FRAME_NUM,
"%s:frame num:%d,pts=%d,pts64=%lld. dur=%d\n",

View File

@@ -43,6 +43,9 @@
#include <linux/amlogic/media/codec_mm/configs.h>
#include <linux/amlogic/tee.h>
#include <trace/events/meson_atrace.h>
#ifdef CONFIG_AM_VDEC_MPEG12_LOG
#define AMLOG
#define LOG_LEVEL_VAR amlog_level_vmpeg
@@ -995,6 +998,7 @@ static irqreturn_t vmpeg12_isr(int irq, void *dev_id)
index);
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,
NULL);
@@ -1080,6 +1084,7 @@ static irqreturn_t vmpeg12_isr(int irq, void *dev_id)
index);
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,
NULL);
@@ -1132,6 +1137,7 @@ static irqreturn_t vmpeg12_isr(int irq, void *dev_id)
index);
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,
NULL);
@@ -1172,6 +1178,7 @@ static irqreturn_t vmpeg12_isr(int irq, void *dev_id)
} else {
kfifo_put(&display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,
NULL);

View File

@@ -42,6 +42,9 @@
#include <linux/amlogic/media/codec_mm/configs.h>
#include <linux/amlogic/tee.h>
#include <trace/events/meson_atrace.h>
/* #define CONFIG_AM_VDEC_MPEG4_LOG */
#ifdef CONFIG_AM_VDEC_MPEG4_LOG
#define AMLOG
@@ -490,6 +493,7 @@ static irqreturn_t vmpeg4_isr(int irq, void *dev_id)
buffer_index);
kfifo_put(&display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,
@@ -536,6 +540,7 @@ static irqreturn_t vmpeg4_isr(int irq, void *dev_id)
vmpeg4_amstream_dec_info.rate, picture_type);
kfifo_put(&display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,
@@ -583,6 +588,7 @@ static irqreturn_t vmpeg4_isr(int irq, void *dev_id)
buffer_index);
kfifo_put(&display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,

View File

@@ -46,6 +46,9 @@
#include <linux/amlogic/media/codec_mm/configs.h>
#include "../utils/firmware.h"
#include <trace/events/meson_atrace.h>
#define DRIVER_NAME "ammvdec_mpeg4"
#define MODULE_NAME "ammvdec_mpeg4"
@@ -752,6 +755,7 @@ static irqreturn_t vmpeg4_isr_thread_fn(struct vdec_s *vdec, int irq)
} else {
kfifo_put(&hw->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hw->frame_num++;
vdec->vdec_fps_detec(vdec->id);
vf_notify_receiver(vdec->vf_provider_name,
@@ -801,6 +805,7 @@ static irqreturn_t vmpeg4_isr_thread_fn(struct vdec_s *vdec, int irq)
} else {
kfifo_put(&hw->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hw->frame_num++;
vdec->vdec_fps_detec(vdec->id);
vf_notify_receiver(vdec->vf_provider_name,
@@ -856,6 +861,7 @@ static irqreturn_t vmpeg4_isr_thread_fn(struct vdec_s *vdec, int irq)
vf->duration = duration * (hw->timeout_flag + 1);
kfifo_put(&hw->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hw->frame_num++;
hw->timeout_flag = 0;
vdec->vdec_fps_detec(vdec->id);

View File

@@ -54,6 +54,9 @@
#include "../utils/firmware.h"
#include <linux/amlogic/tee.h>
#include <trace/events/meson_atrace.h>
#define DRIVER_NAME "amvdec_real"
#define MODULE_NAME "amvdec_real"
@@ -355,6 +358,7 @@ static irqreturn_t vreal_isr(int irq, void *dev_id)
buffer_index);
kfifo_put(&display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
frame_count++;
vf_notify_receiver(PROVIDER_NAME,

View File

@@ -28,6 +28,8 @@
#include <asm/cacheflush.h>
#include <linux/crc32.h>
#include <trace/events/meson_atrace.h>
#define VFRAME_BLOCK_SIZE (512 * SZ_1K)/*512 for 1080p default init.*/
#define VFRAME_BLOCK_SIZE_4K (2 * SZ_1M) /*2M for 4K default.*/
#define VFRAME_BLOCK_SIZE_MAX (4 * SZ_1M)
@@ -895,6 +897,7 @@ int vdec_input_add_chunk(struct vdec_input_s *input, const char *buf,
list_add_tail(&chunk->list, &input->vframe_chunk_list);
input->data_size += chunk->size;
input->have_frame_num++;
ATRACE_COUNTER(MEM_NAME, input->have_frame_num);
if (chunk->pts_valid) {
input->last_inpts_u64 = chunk->pts64;
input->last_in_nopts_cnt = 0;
@@ -993,6 +996,7 @@ void vdec_input_release_chunk(struct vdec_input_s *input,
list_del(&chunk->list);
input->have_frame_num--;
ATRACE_COUNTER(MEM_NAME, input->have_frame_num);
if (chunk->pts_valid) {
input->last_comsumed_no_pts_cnt = 0;
input->last_comsumed_pts_u64 = chunk->pts64;

View File

@@ -23,6 +23,7 @@
#include <linux/amlogic/media/utils/vdec_reg.h>
#include <trace/events/meson_atrace.h>
#include "vdec_profile.h"
#include "vdec.h"
@@ -223,6 +224,7 @@ EXPORT_SYMBOL(vdec_profile_more);
void vdec_profile(struct vdec_s *vdec, int event)
{
ATRACE_COUNTER(vdec_device_name_str(vdec), event);
vdec_profile_more(vdec, event, 0 , 0);
if (dec_time_stat_flag == 1)
vdec_profile_statistics(vdec, event);

View File

@@ -43,6 +43,9 @@
#include "../utils/firmware.h"
#include <linux/amlogic/tee.h>
#include <trace/events/meson_atrace.h>
#define DRIVER_NAME "amvdec_vc1"
#define MODULE_NAME "amvdec_vc1"
@@ -490,6 +493,7 @@ static irqreturn_t vvc1_isr(int irq, void *dev_id)
buffer_index);
kfifo_put(&display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(
PROVIDER_NAME,
@@ -549,6 +553,7 @@ static irqreturn_t vvc1_isr(int irq, void *dev_id)
buffer_index);
kfifo_put(&display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(
PROVIDER_NAME,
@@ -633,6 +638,7 @@ static irqreturn_t vvc1_isr(int irq, void *dev_id)
mm_blk_handle,
buffer_index);
kfifo_put(&display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf_notify_receiver(PROVIDER_NAME,
VFRAME_EVENT_PROVIDER_VFRAME_READY,

View File

@@ -55,6 +55,9 @@
#include "../utils/firmware.h"
#include "../../../common/chips/decoder_cpu_ver_info.h"
#include <trace/events/meson_atrace.h>
#define MIX_STREAM_SUPPORT
#include "vvp9.h"
@@ -6880,6 +6883,7 @@ static int prepare_display_buf(struct VP9Decoder_s *pbi,
inc_vf_ref(pbi, pic_config->index);
decoder_do_frame_check(hw_to_vdec(pbi), vf);
kfifo_put(&pbi->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
pbi->vf_pre_count++;
#ifndef CONFIG_AMLOGIC_MEDIA_MULTI_DEC
/*count info*/