Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0+ */
0002 /*
0003  * vimc-streamer.h Virtual Media Controller Driver
0004  *
0005  * Copyright (C) 2018 Lucas A. M. Magalhães <lucmaga@gmail.com>
0006  *
0007  */
0008 
0009 #ifndef _VIMC_STREAMER_H_
0010 #define _VIMC_STREAMER_H_
0011 
0012 #include <media/media-device.h>
0013 
0014 #include "vimc-common.h"
0015 
0016 #define VIMC_STREAMER_PIPELINE_MAX_SIZE 16
0017 
0018 /**
0019  * struct vimc_stream - struct that represents a stream in the pipeline
0020  *
0021  * @pipe:       the media pipeline object associated with this stream
0022  * @ved_pipeline:   array containing all the entities participating in the
0023  *          stream. The order is from a video device (usually a
0024  *          capture device) where stream_on was called, to the
0025  *          entity generating the first base image to be
0026  *          processed in the pipeline.
0027  * @pipe_size:      size of @ved_pipeline
0028  * @kthread:        thread that generates the frames of the stream.
0029  *
0030  * When the user call stream_on in a video device, struct vimc_stream is
0031  * used to keep track of all entities and subdevices that generates and
0032  * process frames for the stream.
0033  */
0034 struct vimc_stream {
0035     struct media_pipeline pipe;
0036     struct vimc_ent_device *ved_pipeline[VIMC_STREAMER_PIPELINE_MAX_SIZE];
0037     unsigned int pipe_size;
0038     struct task_struct *kthread;
0039 };
0040 
0041 int vimc_streamer_s_stream(struct vimc_stream *stream,
0042                struct vimc_ent_device *ved,
0043                int enable);
0044 
0045 #endif  //_VIMC_STREAMER_H_