• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * drivers/amlogic/media/frame_provider/decoder/utils/amlogic_fbc_hook.c
3  *
4  * Copyright (C) 2016 Amlogic, Inc. All rights reserved.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14  * more details.
15  *
16  */
17 #include <linux/kernel.h>
18 #include <linux/module.h>
19 #include <linux/types.h>
20 
21 #include "amlogic_fbc_hook.h"
22 static AMLOGIC_FBC_vframe_decoder_fun_t g_decoder_fun;
23 static AMLOGIC_FBC_vframe_encoder_fun_t g_encoder_fun;
24 
25 
AMLOGIC_FBC_vframe_decoder(void * dstyuv[4],struct vframe_s * vf,int out_format,int flags)26 int AMLOGIC_FBC_vframe_decoder(
27 	void *dstyuv[4],
28 	struct vframe_s *vf,
29 	int out_format,
30 	int flags)
31 
32 {
33 	if (g_decoder_fun) {
34 		return g_decoder_fun(dstyuv,
35 			vf,
36 			out_format,
37 			flags);
38 	}
39 	printk("no AMLOGIC_FBC_vframe_decoder ERRR!!\n");
40 	return -1;
41 }
42 EXPORT_SYMBOL(AMLOGIC_FBC_vframe_decoder);
43 
AMLOGIC_FBC_vframe_encoder(void * srcyuv[4],void * dst_header,void * dst_body,int in_format,int flags)44 int AMLOGIC_FBC_vframe_encoder(
45 	void *srcyuv[4],
46 	void *dst_header,
47 	void *dst_body,
48 	int in_format,
49 	int flags)
50 
51 {
52 	if (g_encoder_fun) {
53 		return g_encoder_fun(
54 				srcyuv,
55 				dst_header,
56 				dst_body,
57 				in_format,
58 				flags);
59 	}
60 	printk("no AMLOGIC_FBC_vframe_encoder ERRR!!\n");
61 	return -1;
62 }
63 EXPORT_SYMBOL(AMLOGIC_FBC_vframe_encoder);
64 
register_amlogic_afbc_dec_fun(AMLOGIC_FBC_vframe_decoder_fun_t fn)65 int register_amlogic_afbc_dec_fun(AMLOGIC_FBC_vframe_decoder_fun_t fn)
66 {
67 	if (g_decoder_fun) {
68 		pr_err("error!!,AMLOGIC_FBC dec have register\n");
69 		return -1;
70 	}
71 	printk("register_amlogic_afbc_dec_fun\n");
72 	g_decoder_fun = fn;
73 	return 0;
74 }
75 EXPORT_SYMBOL(register_amlogic_afbc_dec_fun);
76 
register_amlogic_afbc_enc_fun(AMLOGIC_FBC_vframe_encoder_fun_t fn)77 int register_amlogic_afbc_enc_fun(AMLOGIC_FBC_vframe_encoder_fun_t fn)
78 {
79 	if (g_encoder_fun) {
80 		pr_err("error!!,AMLOGIC_FBC enc have register\n");
81 		return -1;
82 	}
83 	g_encoder_fun = fn;
84 	return 0;
85 }
86 EXPORT_SYMBOL(register_amlogic_afbc_enc_fun);
87 
unregister_amlogic_afbc_dec_fun(void)88 int unregister_amlogic_afbc_dec_fun(void)
89 {
90 	g_decoder_fun = NULL;
91 	pr_err("unregister_amlogic_afbc_dec_fun\n");
92 	return 0;
93 }
94 EXPORT_SYMBOL(unregister_amlogic_afbc_dec_fun);
95 
unregister_amlogic_afbc_enc_fun(void)96 int unregister_amlogic_afbc_enc_fun(void)
97 {
98 	g_encoder_fun = NULL;
99 	pr_err("unregister_amlogic_afbc_dec_fun\n");
100 	return 0;
101 }
102 EXPORT_SYMBOL(unregister_amlogic_afbc_enc_fun);
103 
104 
105