Lines Matching refs:itv

34 	struct ivtv *itv = id->itv;
35 struct ivtv_stream *s = &itv->streams[type];
61 ivtv_clear_irq_mask(itv, IVTV_IRQ_DEC_VBI_RE_INSERT);
71 itv->vbi.insert_mpeg && !ivtv_raw_vbi(itv)) {
76 s_vbi = &itv->streams[vbi_type];
81 ivtv_clear_irq_mask(itv, IVTV_IRQ_DEC_VBI_RE_INSERT);
93 struct ivtv *itv = s->itv;
111 ivtv_set_irq_mask(itv, IVTV_IRQ_DEC_VBI_RE_INSERT);
117 s_vbi = &itv->streams[IVTV_DEC_STREAM_TYPE_VBI];
119 s_vbi = &itv->streams[IVTV_ENC_STREAM_TYPE_VBI];
134 ivtv_set_irq_mask(itv, IVTV_IRQ_DEC_VBI_RE_INSERT);
140 static void ivtv_dualwatch(struct ivtv *itv)
146 new_stereo_mode = v4l2_ctrl_g_ctrl(itv->cxhdl.audio_mode);
148 ivtv_call_all(itv, tuner, g_tuner, &vt);
152 if (new_stereo_mode == itv->dualwatch_stereo_mode)
156 itv->dualwatch_stereo_mode, new_stereo_mode);
157 if (v4l2_ctrl_s_ctrl(itv->cxhdl.audio_mode, new_stereo_mode))
161 static void ivtv_update_pgm_info(struct ivtv *itv)
163 u32 wr_idx = (read_enc(itv->pgm_info_offset) - itv->pgm_info_offset - 4) / 24;
167 if (wr_idx >= itv->pgm_info_num) {
168 IVTV_DEBUG_WARN("Invalid PGM index %d (>= %d)\n", wr_idx, itv->pgm_info_num);
171 cnt = (wr_idx + itv->pgm_info_num - itv->pgm_info_write_idx) % itv->pgm_info_num;
173 int idx = (itv->pgm_info_write_idx + i) % itv->pgm_info_num;
174 struct v4l2_enc_idx_entry *e = itv->pgm_info + idx;
175 u32 addr = itv->pgm_info_offset + 4 + idx * 24;
181 if (e->offset > itv->mpg_data_received) {
184 e->offset += itv->vbi_data_inserted;
190 itv->pgm_info_write_idx = (itv->pgm_info_write_idx + i) % itv->pgm_info_num;
195 struct ivtv *itv = s->itv;
196 struct ivtv_stream *s_vbi = &itv->streams[IVTV_ENC_STREAM_TYPE_VBI];
204 ivtv_update_pgm_info(itv);
207 itv->dualwatch_jiffies +
209 itv->dualwatch_jiffies = jiffies;
210 ivtv_dualwatch(itv);
217 ivtv_process_vbi_data(itv, buf, s_vbi->dma_pts, s_vbi->type);
221 buf = &itv->vbi.sliced_mpeg_buf;
243 ivtv_process_vbi_data(itv, buf, s->dma_pts, s->type);
261 mutex_unlock(&itv->serialize_lock);
267 mutex_lock(&itv->serialize_lock);
277 static void ivtv_setup_sliced_vbi_buf(struct ivtv *itv)
279 int idx = itv->vbi.inserted_frame % IVTV_VBI_FRAMES;
281 itv->vbi.sliced_mpeg_buf.buf = itv->vbi.sliced_mpeg_data[idx];
282 itv->vbi.sliced_mpeg_buf.bytesused = itv->vbi.sliced_mpeg_size[idx];
283 itv->vbi.sliced_mpeg_buf.readpos = 0;
289 struct ivtv *itv = s->itv;
293 if (itv->vbi.insert_mpeg && s->type == IVTV_ENC_STREAM_TYPE_MPG &&
294 !ivtv_raw_vbi(itv) && buf != &itv->vbi.sliced_mpeg_buf) {
298 u8 ch = itv->search_pack_header ? 0xba : 0xe0;
307 if (!itv->search_pack_header) {
313 itv->search_pack_header = 1;
326 itv->search_pack_header = 0;
328 ivtv_setup_sliced_vbi_buf(itv);
337 /*IVTV_INFO("copied %lld %d %d %d %d %d vbi %d\n", itv->mpg_data_received, len, ucount,
339 buf == &itv->vbi.sliced_mpeg_buf); */
341 if (s->type == IVTV_ENC_STREAM_TYPE_MPG && buf != &itv->vbi.sliced_mpeg_buf)
342 itv->mpg_data_received += len;
348 struct ivtv *itv = s->itv;
352 if (atomic_read(&itv->capturing) == 0 && s->fh == NULL) {
361 (s->type == IVTV_ENC_STREAM_TYPE_VBI && !ivtv_raw_vbi(itv)))
384 if (buf != &itv->vbi.sliced_mpeg_buf) {
388 int idx = itv->vbi.inserted_frame % IVTV_VBI_FRAMES;
389 itv->vbi.sliced_mpeg_size[idx] = 0;
390 itv->vbi.inserted_frame++;
391 itv->vbi_data_inserted += buf->bytesused;
407 struct ivtv *itv = s->itv;
417 struct ivtv *itv = id->itv;
418 struct ivtv_stream *s = &itv->streams[id->type];
447 s_vbi = &itv->streams[IVTV_ENC_STREAM_TYPE_VBI];
472 if (test_and_clear_bit(IVTV_F_I_ENC_PAUSED, &itv->i_flags))
473 ivtv_vapi(itv, CX2341X_ENC_PAUSE_ENCODER, 1, 1);
496 struct ivtv *itv = id->itv;
497 struct ivtv_stream *s = &itv->streams[id->type];
502 if (mutex_lock_interruptible(&itv->serialize_lock))
507 mutex_unlock(&itv->serialize_lock);
513 struct ivtv *itv = id->itv;
514 struct ivtv_stream *s = &itv->streams[id->type];
517 if (atomic_read(&itv->decoding) == 0) {
532 return ivtv_set_speed(itv, speed);
539 struct ivtv *itv = id->itv;
540 struct ivtv_stream *s = &itv->streams[id->type];
541 struct yuv_playback_info *yi = &itv->yuv_info;
566 return ivtv_write_vbi_from_user(itv,
572 if (ivtv_set_output_mode(itv, mode) != mode) {
580 rc = ivtv_start_decoding(id, itv->speed);
593 if (mode == OUT_YUV && s->q_full.length == 0 && itv->dma_data_req_size) {
594 while (count >= itv->dma_data_req_size) {
595 rc = ivtv_yuv_udma_stream_frame(itv, (void __user *)user_buf);
600 bytes_written += itv->dma_data_req_size;
601 user_buf += itv->dma_data_req_size;
602 count -= itv->dma_data_req_size;
621 mutex_unlock(&itv->serialize_lock);
627 mutex_lock(&itv->serialize_lock);
639 yi->stream_size + count > itv->dma_data_req_size)
641 itv->dma_data_req_size - yi->stream_size);
657 if (yi->stream_size == itv->dma_data_req_size) {
676 if (s->q_full.length >= itv->dma_data_req_size) {
680 ivtv_yuv_setup_stream_frame(itv);
682 mutex_unlock(&itv->serialize_lock);
683 prepare_to_wait(&itv->dma_waitq, &wait, TASK_INTERRUPTIBLE);
688 finish_wait(&itv->dma_waitq, &wait);
689 mutex_lock(&itv->serialize_lock);
696 ivtv_queue_move(s, &s->q_full, NULL, &s->q_predma, itv->dma_data_req_size);
697 ivtv_dma_stream_dec_prepare(s, itv->dma_data_req_offset + IVTV_DECODER_OFFSET, 1);
711 struct ivtv *itv = id->itv;
714 if (mutex_lock_interruptible(&itv->serialize_lock))
717 mutex_unlock(&itv->serialize_lock);
724 struct ivtv *itv = id->itv;
725 struct ivtv_stream *s = &itv->streams[id->type];
736 clear_bit(IVTV_F_I_EV_VSYNC_ENABLED, &itv->i_flags);
743 set_bit(IVTV_F_I_EV_VSYNC_ENABLED, &itv->i_flags);
744 if (test_bit(IVTV_F_I_EV_VSYNC, &itv->i_flags) ||
745 test_bit(IVTV_F_I_EV_DEC_STOPPED, &itv->i_flags))
759 struct ivtv *itv = id->itv;
760 struct ivtv_stream *s = &itv->streams[id->type];
770 mutex_lock(&itv->serialize_lock);
772 mutex_unlock(&itv->serialize_lock);
798 struct ivtv *itv = id->itv;
799 struct ivtv_stream *s = &itv->streams[id->type];
807 struct ivtv_stream *s_vbi = &itv->streams[IVTV_ENC_STREAM_TYPE_VBI];
837 struct ivtv *itv = id->itv;
838 struct ivtv_stream *s = &itv->streams[id->type];
843 test_bit(IVTV_F_I_DECODING_YUV, &itv->i_flags)) {
845 ivtv_yuv_close(itv);
853 itv->output_mode = OUT_NONE;
858 if (itv->output_mode == OUT_UDMA_YUV && id->yuv_frames)
859 itv->output_mode = OUT_NONE;
861 itv->speed = 0;
862 clear_bit(IVTV_F_I_DEC_PAUSED, &itv->i_flags);
870 struct ivtv *itv = id->itv;
871 struct ivtv_stream *s = &itv->streams[id->type];
875 mutex_lock(&itv->serialize_lock);
881 ivtv_mute(itv);
883 clear_bit(IVTV_F_I_RADIO_USER, &itv->i_flags);
885 ivtv_call_all(itv, video, s_std, itv->std);
887 ivtv_audio_set_io(itv);
888 if (itv->hw_flags & IVTV_HW_SAA711X) {
889 ivtv_call_hw(itv, IVTV_HW_SAA711X, video, s_crystal_freq,
892 if (atomic_read(&itv->capturing) > 0) {
894 ivtv_vapi(itv, CX2341X_ENC_MUTE_VIDEO, 1,
895 v4l2_ctrl_g_ctrl(itv->cxhdl.video_mute) |
896 (v4l2_ctrl_g_ctrl(itv->cxhdl.video_mute_yuv) << 8));
899 ivtv_unmute(itv);
912 struct ivtv_stream *s_vout = &itv->streams[IVTV_DEC_STREAM_TYPE_VOUT];
918 if (itv->output_mode == OUT_NONE && !test_bit(IVTV_F_S_APPL_IO, &s_vout->s_flags)) {
920 ivtv_disable_cc(itv);
927 mutex_unlock(&itv->serialize_lock);
935 struct ivtv *itv = s->itv;
941 if (ivtv_init_on_first_open(itv)) {
957 res = ivtv_firmware_check(itv, "ivtv_serialized_open");
959 res = ivtv_firmware_check(itv, "ivtv_serialized_open");
965 test_bit(IVTV_F_S_CLAIMED, &itv->streams[IVTV_DEC_STREAM_TYPE_YUV].s_flags))
969 test_bit(IVTV_F_S_CLAIMED, &itv->streams[IVTV_DEC_STREAM_TYPE_MPG].s_flags))
977 ivtv_udma_alloc(itv);
987 item->itv = itv;
995 if (!test_bit(IVTV_F_I_RADIO_USER, &itv->i_flags)) {
996 if (atomic_read(&itv->capturing) > 0) {
1006 set_bit(IVTV_F_I_RADIO_USER, &itv->i_flags);
1008 ivtv_mute(itv);
1010 ivtv_call_all(itv, tuner, s_radio);
1012 ivtv_audio_set_io(itv);
1013 if (itv->hw_flags & IVTV_HW_SAA711X) {
1014 ivtv_call_hw(itv, IVTV_HW_SAA711X, video, s_crystal_freq,
1018 ivtv_unmute(itv);
1023 clear_bit(IVTV_F_I_DEC_YUV, &itv->i_flags);
1025 set_bit(IVTV_F_I_DEC_YUV, &itv->i_flags);
1027 itv->dma_data_req_size =
1028 1080 * ((itv->yuv_info.v4l2_src_h + 31) & ~31);
1029 itv->yuv_info.stream_size = 0;
1046 void ivtv_mute(struct ivtv *itv)
1048 if (atomic_read(&itv->capturing))
1049 ivtv_vapi(itv, CX2341X_ENC_MUTE_AUDIO, 1, 1);
1053 void ivtv_unmute(struct ivtv *itv)
1055 if (atomic_read(&itv->capturing)) {
1057 ivtv_vapi(itv, CX2341X_ENC_MISC, 1, 12);
1058 ivtv_vapi(itv, CX2341X_ENC_MUTE_AUDIO, 1, 0);