Lines Matching refs:s
163 struct ivtv_stream *s = &itv->streams[type]; in ivtv_stream_init() local
166 memset(s, 0, sizeof(*s)); in ivtv_stream_init()
169 s->itv = itv; in ivtv_stream_init()
170 s->type = type; in ivtv_stream_init()
171 s->name = ivtv_stream_info[type].name; in ivtv_stream_init()
172 s->caps = ivtv_stream_info[type].v4l2_caps; in ivtv_stream_init()
175 s->dma = PCI_DMA_NONE; in ivtv_stream_init()
177 s->dma = ivtv_stream_info[type].dma; in ivtv_stream_init()
178 s->buf_size = itv->stream_buf_size[type]; in ivtv_stream_init()
179 if (s->buf_size) in ivtv_stream_init()
180 s->buffers = (itv->options.kilobytes[type] * 1024 + s->buf_size - 1) / s->buf_size; in ivtv_stream_init()
181 spin_lock_init(&s->qlock); in ivtv_stream_init()
182 init_waitqueue_head(&s->waitq); in ivtv_stream_init()
183 s->sg_handle = IVTV_DMA_UNMAPPED; in ivtv_stream_init()
184 ivtv_queue_init(&s->q_free); in ivtv_stream_init()
185 ivtv_queue_init(&s->q_full); in ivtv_stream_init()
186 ivtv_queue_init(&s->q_dma); in ivtv_stream_init()
187 ivtv_queue_init(&s->q_predma); in ivtv_stream_init()
188 ivtv_queue_init(&s->q_io); in ivtv_stream_init()
193 struct ivtv_stream *s = &itv->streams[type]; in ivtv_prep_dev() local
200 s->vdev.v4l2_dev = NULL; in ivtv_prep_dev()
201 s->itv = itv; in ivtv_prep_dev()
202 s->type = type; in ivtv_prep_dev()
203 s->name = ivtv_stream_info[type].name; in ivtv_prep_dev()
221 snprintf(s->vdev.name, sizeof(s->vdev.name), "%s %s", in ivtv_prep_dev()
222 itv->v4l2_dev.name, s->name); in ivtv_prep_dev()
224 s->vdev.num = num; in ivtv_prep_dev()
225 s->vdev.v4l2_dev = &itv->v4l2_dev; in ivtv_prep_dev()
228 s->vdev.vfl_dir = VFL_DIR_TX; in ivtv_prep_dev()
229 s->vdev.fops = ivtv_stream_info[type].fops; in ivtv_prep_dev()
230 s->vdev.ctrl_handler = itv->v4l2_dev.ctrl_handler; in ivtv_prep_dev()
231 s->vdev.release = video_device_release_empty; in ivtv_prep_dev()
232 s->vdev.tvnorms = V4L2_STD_ALL; in ivtv_prep_dev()
233 s->vdev.lock = &itv->serialize_lock; in ivtv_prep_dev()
234 if (s->type == IVTV_DEC_STREAM_TYPE_VBI) { in ivtv_prep_dev()
235 v4l2_disable_ioctl(&s->vdev, VIDIOC_S_AUDIO); in ivtv_prep_dev()
236 v4l2_disable_ioctl(&s->vdev, VIDIOC_G_AUDIO); in ivtv_prep_dev()
237 v4l2_disable_ioctl(&s->vdev, VIDIOC_ENUMAUDIO); in ivtv_prep_dev()
238 v4l2_disable_ioctl(&s->vdev, VIDIOC_ENUMINPUT); in ivtv_prep_dev()
239 v4l2_disable_ioctl(&s->vdev, VIDIOC_S_INPUT); in ivtv_prep_dev()
240 v4l2_disable_ioctl(&s->vdev, VIDIOC_G_INPUT); in ivtv_prep_dev()
241 v4l2_disable_ioctl(&s->vdev, VIDIOC_S_FREQUENCY); in ivtv_prep_dev()
242 v4l2_disable_ioctl(&s->vdev, VIDIOC_G_FREQUENCY); in ivtv_prep_dev()
243 v4l2_disable_ioctl(&s->vdev, VIDIOC_S_TUNER); in ivtv_prep_dev()
244 v4l2_disable_ioctl(&s->vdev, VIDIOC_G_TUNER); in ivtv_prep_dev()
245 v4l2_disable_ioctl(&s->vdev, VIDIOC_S_STD); in ivtv_prep_dev()
247 ivtv_set_funcs(&s->vdev); in ivtv_prep_dev()
279 struct ivtv_stream *s = &itv->streams[type]; in ivtv_reg_dev() local
284 if (s->vdev.v4l2_dev == NULL) in ivtv_reg_dev()
287 num = s->vdev.num; in ivtv_reg_dev()
295 video_set_drvdata(&s->vdev, s); in ivtv_reg_dev()
298 if (video_register_device_no_warn(&s->vdev, vfl_type, num)) { in ivtv_reg_dev()
300 s->name, num); in ivtv_reg_dev()
303 name = video_device_node_name(&s->vdev); in ivtv_reg_dev()
308 name, s->name, itv->options.kilobytes[type]); in ivtv_reg_dev()
312 name, s->name); in ivtv_reg_dev()
317 name, s->name, itv->options.kilobytes[type]); in ivtv_reg_dev()
320 name, s->name); in ivtv_reg_dev()
475 int ivtv_start_v4l2_encode_stream(struct ivtv_stream *s) in ivtv_start_v4l2_encode_stream() argument
478 struct ivtv *itv = s->itv; in ivtv_start_v4l2_encode_stream()
482 if (s->vdev.v4l2_dev == NULL) in ivtv_start_v4l2_encode_stream()
485 IVTV_DEBUG_INFO("Start encoder stream %s\n", s->name); in ivtv_start_v4l2_encode_stream()
487 switch (s->type) { in ivtv_start_v4l2_encode_stream()
528 s->subtype = subtype; in ivtv_start_v4l2_encode_stream()
529 s->buffers_stolen = 0; in ivtv_start_v4l2_encode_stream()
532 clear_bit(IVTV_F_S_STREAMOFF, &s->s_flags); in ivtv_start_v4l2_encode_stream()
632 if (s->type == IVTV_ENC_STREAM_TYPE_VBI) in ivtv_start_v4l2_encode_stream()
643 static int ivtv_setup_v4l2_decode_stream(struct ivtv_stream *s) in ivtv_setup_v4l2_decode_stream() argument
646 struct ivtv *itv = s->itv; in ivtv_setup_v4l2_decode_stream()
651 if (s->vdev.v4l2_dev == NULL) in ivtv_setup_v4l2_decode_stream()
679 switch (s->type) { in ivtv_setup_v4l2_decode_stream()
708 int ivtv_start_v4l2_decode_stream(struct ivtv_stream *s, int gop_offset) in ivtv_start_v4l2_decode_stream() argument
710 struct ivtv *itv = s->itv; in ivtv_start_v4l2_decode_stream()
713 if (s->vdev.v4l2_dev == NULL) in ivtv_start_v4l2_decode_stream()
716 if (test_and_set_bit(IVTV_F_S_STREAMING, &s->s_flags)) in ivtv_start_v4l2_decode_stream()
719 IVTV_DEBUG_INFO("Starting decode stream %s (gop_offset %d)\n", s->name, gop_offset); in ivtv_start_v4l2_decode_stream()
721 rc = ivtv_setup_v4l2_decode_stream(s); in ivtv_start_v4l2_decode_stream()
723 clear_bit(IVTV_F_S_STREAMING, &s->s_flags); in ivtv_start_v4l2_decode_stream()
731 clear_bit(IVTV_F_S_STREAMOFF, &s->s_flags); in ivtv_start_v4l2_decode_stream()
766 struct ivtv_stream *s = &itv->streams[i]; in ivtv_stop_all_captures() local
768 if (s->vdev.v4l2_dev == NULL) in ivtv_stop_all_captures()
770 if (test_bit(IVTV_F_S_STREAMING, &s->s_flags)) { in ivtv_stop_all_captures()
771 ivtv_stop_v4l2_encode_stream(s, 0); in ivtv_stop_all_captures()
776 int ivtv_stop_v4l2_encode_stream(struct ivtv_stream *s, int gop_end) in ivtv_stop_v4l2_encode_stream() argument
778 struct ivtv *itv = s->itv; in ivtv_stop_v4l2_encode_stream()
783 if (s->vdev.v4l2_dev == NULL) in ivtv_stop_v4l2_encode_stream()
791 if (s->type == IVTV_DEC_STREAM_TYPE_VOUT) in ivtv_stop_v4l2_encode_stream()
796 switch (s->type) { in ivtv_stop_v4l2_encode_stream()
813 if (s->type == IVTV_ENC_STREAM_TYPE_MPG && gop_end) { in ivtv_stop_v4l2_encode_stream()
821 ivtv_vapi(itv, CX2341X_ENC_STOP_CAPTURE, 3, stopmode, cap_type, s->subtype); in ivtv_stop_v4l2_encode_stream()
823 if (!test_bit(IVTV_F_S_PASSTHROUGH, &s->s_flags)) { in ivtv_stop_v4l2_encode_stream()
824 if (s->type == IVTV_ENC_STREAM_TYPE_MPG && gop_end) { in ivtv_stop_v4l2_encode_stream()
850 IVTV_DEBUG_WARN("%s: EOS interrupt not received! stopping anyway.\n", s->name); in ivtv_stop_v4l2_encode_stream()
851 IVTV_DEBUG_WARN("%s: waited %lu ms.\n", s->name, duration); in ivtv_stop_v4l2_encode_stream()
853 IVTV_DEBUG_INFO("%s: EOS took %lu ms to occur.\n", s->name, duration); in ivtv_stop_v4l2_encode_stream()
857 set_bit(IVTV_F_S_STREAMOFF, &s->s_flags); in ivtv_stop_v4l2_encode_stream()
867 clear_bit(IVTV_F_S_STREAMING, &s->s_flags); in ivtv_stop_v4l2_encode_stream()
869 if (s->type == IVTV_ENC_STREAM_TYPE_VBI) in ivtv_stop_v4l2_encode_stream()
894 wake_up(&s->waitq); in ivtv_stop_v4l2_encode_stream()
900 int ivtv_stop_v4l2_decode_stream(struct ivtv_stream *s, int flags, u64 pts) in ivtv_stop_v4l2_decode_stream() argument
905 struct ivtv *itv = s->itv; in ivtv_stop_v4l2_decode_stream()
907 if (s->vdev.v4l2_dev == NULL) in ivtv_stop_v4l2_decode_stream()
910 if (s->type != IVTV_DEC_STREAM_TYPE_YUV && s->type != IVTV_DEC_STREAM_TYPE_MPG) in ivtv_stop_v4l2_decode_stream()
913 if (!test_bit(IVTV_F_S_STREAMING, &s->s_flags)) in ivtv_stop_v4l2_decode_stream()
930 if (s->q_full.buffers + s->q_dma.buffers == 0) { in ivtv_stop_v4l2_decode_stream()
947 clear_bit(IVTV_F_S_NEEDS_DATA, &s->s_flags); in ivtv_stop_v4l2_decode_stream()
948 clear_bit(IVTV_F_S_STREAMING, &s->s_flags); in ivtv_stop_v4l2_decode_stream()
949 ivtv_flush_queues(s); in ivtv_stop_v4l2_decode_stream()
959 v4l2_event_queue(&s->vdev, &ev); in ivtv_stop_v4l2_decode_stream()
962 wake_up(&s->waitq); in ivtv_stop_v4l2_decode_stream()