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