blob: fc578de52f64277659b8b41d886f8553e8e0857b [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* include/linux/amlogic/media/video_sink/v4lvideo_ext.h
*
* Copyright (C) 2017 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
*/
#ifndef V4LVIDEO_EXT_H
#define V4LVIDEO_EXT_H
#define V4LVIDEO_FLAG_DI_NR 1
#define V4LVIDEO_FLAG_DI_DEC 2
#include <linux/dma-buf.h>
#include <linux/file.h>
int v4lvideo_assign_map(char **receiver_name, int *inst);
int v4lvideo_alloc_map(int *inst);
void v4lvideo_dec_count_increase(void);
void v4lvideo_dec_count_decrease(void);
void v4lvideo_release_map(int inst);
struct metadata {
char *p_md;
char *p_comp;
};
struct file_private_data {
struct vframe_s vf;
struct vframe_s *vf_p;
bool is_keep;
int keep_id;
int keep_head_id;
struct file *file;
ulong vb_handle;
ulong v4l_dec_ctx;
u32 v4l_inst_id;
struct vframe_s vf_ext;
struct vframe_s *vf_ext_p;
u32 flag;
struct metadata md;
void *private;
struct file *cnt_file;
};
struct v4l_data_t {
struct file_private_data *file_private_data;
char *dst_addr;
u32 phy_addr[3];
int byte_stride;
u32 width;
u32 height;
};
void v4lvideo_data_copy(struct v4l_data_t *v4l_data,
struct dma_buf *dmabuf, u32 align);
struct file_private_data *v4lvideo_get_vf(int fd);
void dim_post_keep_cmd_release2(struct vframe_s *vframe);
int is_v4lvideo_buf_file(struct file *file);
struct file *v4lvideo_alloc_file(void);
void v4lvideo_keep_vf(struct file *file);
struct file_private_data *v4lvideo_get_file_private_data(struct file *file_vf,
bool alloc_if_null);
void init_file_private_data(struct file_private_data *file_private_data);
s32 v4lvideo_import_sei_data(struct vframe_s *vf,
struct vframe_s *dup_vf,
char *provider);
s32 v4lvideo_release_sei_data(struct vframe_s *vf);
#endif /* V4LVIDEO_EXT_H */