我的例程简写如下
。。。
while (1) {
Capture_get(hCapture, &cBuf);
// Process captured buffer "cBuf".
printf("Capture_process…\n");
Buffer_Attrs attrs=Buffer_Attrs_DEFAULT;
attrs.type=Buffer_Type_GRAPHICS;
encDestBuf=Buffer_create(8*1024, &attrs);
Buffer_print (engine_valset.encDestBuf);
if (Venc1_process(encHandle, cBuf, encDestBuf) < 0) {
printf("Failed to encode\n");
}
Buffer_delete(encDestBuf);
Capture_put(cap_valset.hCapture, cap_valset.cBuf);
}
。。。
去掉编码算法调用采集很流畅,加上后只能解码出几帧然后卡死不动,将循环利用的buffer替换为及时申请用完释放也不行。
然后按下ctrl+C 出现oops。
能解码的帧数也不是固定的,不知道问题出在哪里。。。
capture_thread_fxn start…
Capture_process…
[0] @ 0x42470000 (0xa7630000 phys) numBytes 0 (24576) useMask 0 (1) ref no
@0x00096dd2:[T:0x42eda490] ti.sdo.dmai – [Venc1] VIDENC1_process() start
@0x0009c9b2:[T:0x42eda490] ti.sdo.dmai – [Venc1] VIDENC1_process() ret 0 generated 9041 bytes
Capture_process…
[0] @ 0x42470000 (0xa7630000 phys) numBytes 9041 (24576) useMask 0 (1) ref no
@0x0009cb80:[T:0x42eda490] ti.sdo.dmai – [Venc1] VIDENC1_process() start
@0x000a35f0:[T:0x42eda490] ti.sdo.dmai – [Venc1] VIDENC1_process() ret 0 generated 3837 bytes
Capture_process…
[0] @ 0x42470000 (0xa7630000 phys) numBytes 3837 (24576) useMask 0 (1) ref no
@0x000a5fbc:[T:0x42eda490] ti.sdo.dmai – [Venc1] VIDENC1_process() start
@0x000acc32:[T:0x42eda490] ti.sdo.dmai – [Venc1] VIDENC1_process() ret 0 generated 4215 bytes
Capture_process…
[0] @ 0x42470000 (0xa7630000 phys) numBytes 4215 (24576) useMask 0 (1) ref no
@0x000afbfc:[T:0x42eda490] ti.sdo.dmai – [Venc1] VIDENC1_process() start
@0x0053f649:[T:0x42eda490] ti.sdo.dmai – [Venc1] VIDENC1_process() ret 0 generated 4065 bytes
Capture_process…
[0] @ 0x42470000 (0xa7630000 phys) numBytes 4065 (24576) useMask 0 (1) ref no
@0x0053f829:[T:0x42eda490] ti.sdo.dmai – [Venc1] VIDENC1_process() start
Unable to handle kernel paging request at virtual address c81cb010
pgd = c6708000
[c81cb010] *pgd=804a8011, *pte=00000000, *ppte=00000000
Internal error: Oops: 7 [#1]
Modules linked in: dsplinkk cmemk
CPU: 0
PC is at SYNC_WaitSEM+0x234/0x32c [dsplinkk]
LR is at flush_signals+0x64/0x90
pc : [<bf00d804>] lr : [<c0051000>] Tainted: GF sp : c6927e38 ip : c6927e20 fp : c6927e84
r10: ffffffff r9 : c003e698 r8 : c81cb008
r7 : c6927e44 r6 : c81cb000 r5 : c6926000 r4 : 00000002
r3 : 00000001 r2 : 00000000 r1 : c05da0b4 r0 : c05da0b4
Flags: nZCv IRQs on FIQs on Mode SVC_32 Segment user
Control: 5317F
Table: 86708000 DAC: 00000015
Process cap0 (pid: 270, stack limit = 0xc6926258)
Stack: (0xc6927e38 to 0xc6928000)
7e20: c8209c80 000080007e40: c6927e5c 00000001 c052a040 c003e698 c81cb008 c81cb008 bf015938 000000007e60: 00008000 c6927ef4 c81c7000 ffffffff 80008051 bf022670 c6927eb4 c6927e887e80: bf011c08 bf00d5e0 bf011d30 00006f0b 42ed9b44 00006f0b c0588780 000000097ea0: c6926000 0004a3bc c6927ec4 c6927eb8 bf008a7c bf011b88 c6927f24 c6927ec87ec0: bf008400 bf008a7c c6927f1c c6927ed8 c015b688 c0159e08 c02f6bbc c015e9fc7ee0: c73b480c 00000049 00000018 00000000 ffffffff 00000000 00008000 000000007f00: 00010003 ffffffff 00000000 a7630000 c0588780 42ed9b44 c6927f44 c6927f287f20: c009fa7c bf00809c 00000049 c0588780 00000009 42ed9b44 c6927f74 c6927f487f40: c009fd5c c009fa10 00000000 1d34ce80 00000049 00000000 42ed9b44 00006f0b7f60: 00000009 c6926000 c6927fa4 c6927f78 c009fe38 c009faa8 42ed9bd8 000000017f80: 00000018 ffffffff 0004a100 42ed9bec 00000036 c002ff64 00000000 c6927fa87fa0: c002ff40 c009fd94 ffffffff 0004a100 00000009 00006f0b 42ed9b44 000000097fc0: ffffffff 0004a100 42ed9bec 00000036 00010003 0000126c 0004a3bc 42ed9b2c7fe0: 0004b36c 42ed9a58 00028c20 400ff27c 60000010 00000009 80004800 40004000Backtrace:[<bf00d5d0>] (SYNC_WaitSEM+0x0/0x32c [dsplinkk]) from [<bf011c08>] (LDRV_MSGQ_get+0x90/0xd0 [dsplinkk])
[<bf011b78>] (LDRV_MSGQ_get+0x0/0xd0 [dsplinkk]) from [<bf008a7c>] (PMGR_MSGQ_get+0x10/0x14 [dsplinkk])
[<bf008a6c>] (PMGR_MSGQ_get+0x0/0x14 [dsplinkk]) from [<bf008400>] (DRV_Ioctl+0x374/0x9a0 [dsplinkk])
[<bf00808c>] (DRV_Ioctl+0x0/0x9a0 [dsplinkk]) from [<c009fa7c>] (do_ioctl+0x7c/0x98)
r5 = 42ED9B44 r4 = C0588780[<c009fa00>] (do_ioctl+0x0/0x98) from [<c009fd5c>] (vfs_ioctl+0x2c4/0x2ec)
r6 = 42ED9B44 r5 = 00000009 r4 = C0588780[<c009fa98>] (vfs_ioctl+0x0/0x2ec) from [<c009fe38>] (sys_ioctl+0xb4/0xe8)
r9 = C6926000 r8 = 00000009 r6 = 00006F0B r5 = 42ED9B44
r4 = 00000000[<c009fd84>] (sys_ioctl+0x0/0xe8) from [<c002ff40>] (__sys_trace_return+0x0/0x20)
r8 = C002FF64 r7 = 00000036 r6 = 42ED9BEC r5 = 0004A100
r4 = FFFFFFFFCode: e5834000 e5953004 e2833001 e5853004 (e5963010) <6>note: cap0[270] exited with preempt_count 1
prev->state: 2 != TASK_RUNNING??
cap0/270[CPU#0]: BUG in __schedule at kernel/sched.c:3826
liang ding:
忘了说, dm6446板 server是dvsdk demo带的 h264enc
刚刚上手,对codec engine 还是一片迷茫。。。