/* SPDX-License-Identifier: GPL-2.0+ */ 
 | 
/* 
 | 
 * vimc-streamer.h Virtual Media Controller Driver 
 | 
 * 
 | 
 * Copyright (C) 2018 Lucas A. M. Magalhães <lucmaga@gmail.com> 
 | 
 * 
 | 
 */ 
 | 
  
 | 
#ifndef _VIMC_STREAMER_H_ 
 | 
#define _VIMC_STREAMER_H_ 
 | 
  
 | 
#include <media/media-device.h> 
 | 
  
 | 
#include "vimc-common.h" 
 | 
  
 | 
#define VIMC_STREAMER_PIPELINE_MAX_SIZE 16 
 | 
  
 | 
/** 
 | 
 * struct vimc_stream - struct that represents a stream in the pipeline 
 | 
 * 
 | 
 * @pipe:        the media pipeline object associated with this stream 
 | 
 * @ved_pipeline:    array containing all the entities participating in the 
 | 
 *             stream. The order is from a video device (usually a 
 | 
 *            capture device) where stream_on was called, to the 
 | 
 *            entity generating the first base image to be 
 | 
 *            processed in the pipeline. 
 | 
 * @pipe_size:        size of @ved_pipeline 
 | 
 * @kthread:        thread that generates the frames of the stream. 
 | 
 * 
 | 
 * When the user call stream_on in a video device, struct vimc_stream is 
 | 
 * used to keep track of all entities and subdevices that generates and 
 | 
 * process frames for the stream. 
 | 
 */ 
 | 
struct vimc_stream { 
 | 
    struct media_pipeline pipe; 
 | 
    struct vimc_ent_device *ved_pipeline[VIMC_STREAMER_PIPELINE_MAX_SIZE]; 
 | 
    unsigned int pipe_size; 
 | 
    struct task_struct *kthread; 
 | 
}; 
 | 
  
 | 
int vimc_streamer_s_stream(struct vimc_stream *stream, 
 | 
               struct vimc_ent_device *ved, 
 | 
               int enable); 
 | 
  
 | 
#endif  //_VIMC_STREAMER_H_ 
 |