amvideo2: add keep last frame [1/1]

PD#OTT-2452

Problem:
Black screen in the middle of the cut.

Solution:
add keep last frame.

Verify:
on U212

Change-Id: Ib24f066e0682c7427024a74d9bf8cc9b8a310d62
Signed-off-by: renjiang.han <renjiang.han@amlogic.com>
This commit is contained in:
renjiang.han
2019-03-12 20:11:59 +08:00
committed by Luke Go
parent 6e85ee7b23
commit 0b99d9dde5
6 changed files with 282 additions and 23 deletions

View File

@@ -90,6 +90,9 @@
#define AMSTREAM_IOC_GLOBAL_GET_VIDEO_OUTPUT _IOR((_A_M), 0x21, int)
#define AMSTREAM_IOC_GLOBAL_SET_VIDEO_OUTPUT _IOW((_A_M), 0x22, int)
#define AMSTREAM_IOC_GET_VIDEO_LAYER1_ON _IOR((_A_M), 0x23, int)
/*video pip IOCTL command list*/
#define AMSTREAM_IOC_CLEAR_VIDEOPIP _IOW((_A_M), 0x24, int)
#define AMSTREAM_IOC_CLEAR_PIP_VBUF _IO((_A_M), 0x25)
#define AMSTREAM_IOC_GLOBAL_GET_VIDEOPIP_OUTPUT _IOR((_A_M), 0x2b, int)
#define AMSTREAM_IOC_GLOBAL_SET_VIDEOPIP_OUTPUT _IOW((_A_M), 0x2c, int)
@@ -156,8 +159,11 @@
* 0x5c, struct userdata_buf_state_t)
*/
#define AMSTREAM_IOC_VF_STATUS _IOR((_A_M), 0x60, int)
#define AMSTREAM_IOC_GET_BLACKOUT_PIP_POLICY _IOR((_A_M), 0x62, int)
#define AMSTREAM_IOC_SET_BLACKOUT_PIP_POLICY _IOW((_A_M), 0x63, int)
#define AMSTREAM_IOC_CLEAR_VBUF _IO((_A_M), 0x80)
#define AMSTREAM_IOC_APTS_LOOKUP _IOR((_A_M), 0x81, int)

View File

@@ -241,6 +241,8 @@ static inline int amvideo_notifier_call_chain(unsigned long val, void *v)
int query_video_status(int type, int *value);
u32 set_blackout_policy(int policy);
u32 get_blackout_policy(void);
u32 set_blackout_pip_policy(int policy);
u32 get_blackout_pip_policy(void);
void set_video_angle(u32 s_value);
u32 get_video_angle(void);
extern unsigned int DI_POST_REG_RD(unsigned int addr);

View File

@@ -21,12 +21,17 @@
#include <linux/amlogic/media/vfm/vframe.h>
void video_keeper_new_frame_notify(void);
void video_pip_keeper_new_frame_notify(void);
void try_free_keep_video(int flags);
void try_free_keep_videopip(int flags);
int __init video_keeper_init(void);
void __exit video_keeper_exit(void);
unsigned int vf_keep_current(
struct vframe_s *cur_dispbuf,
struct vframe_s *cur_dispbuf2);
unsigned int vf_keep_pip_current_locked(
struct vframe_s *cur_dispbuf,
struct vframe_s *cur_dispbuf_el);
#endif