Lines Matching refs:reader
220 line_read_gray_8 (GT68xx_Line_Reader * reader,
227 size = reader->params.scan_bpl;
229 RIE (gt68xx_device_read (reader->dev, reader->pixel_buffer, &size));
231 buffer = DELAY_BUFFER_READ_PTR (&reader->g_delay);
233 unpack_8_mono (reader->pixel_buffer, buffer, reader->pixels_per_line);
239 line_read_gray_double_8 (GT68xx_Line_Reader * reader,
247 size = reader->params.scan_bpl;
249 RIE (gt68xx_device_read (reader->dev, reader->pixel_buffer, &size));
250 unpack_8_mono (reader->pixel_buffer,
251 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
252 reader->pixels_per_line);
254 buffer = DELAY_BUFFER_READ_PTR (&reader->g_delay);
256 for (i = reader->params.double_column; i < reader->pixels_per_line; i += 2)
257 buffer[i] = DELAY_BUFFER_WRITE_PTR (&reader->g_delay)[i];
260 DELAY_BUFFER_STEP (&reader->g_delay);
265 line_read_gray_12 (GT68xx_Line_Reader * reader,
272 size = reader->params.scan_bpl;
273 RIE (gt68xx_device_read (reader->dev, reader->pixel_buffer, &size));
275 buffer = DELAY_BUFFER_READ_PTR (&reader->g_delay);
277 unpack_12_le_mono (reader->pixel_buffer, buffer, reader->pixels_per_line);
283 line_read_gray_double_12 (GT68xx_Line_Reader * reader,
291 size = reader->params.scan_bpl;
293 RIE (gt68xx_device_read (reader->dev, reader->pixel_buffer, &size));
294 unpack_12_le_mono (reader->pixel_buffer,
295 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
296 reader->pixels_per_line);
298 buffer = DELAY_BUFFER_READ_PTR (&reader->g_delay);
300 for (i = reader->params.double_column; i < reader->pixels_per_line; i += 2)
301 buffer[i] = DELAY_BUFFER_WRITE_PTR (&reader->g_delay)[i];
304 DELAY_BUFFER_STEP (&reader->g_delay);
309 line_read_gray_16 (GT68xx_Line_Reader * reader,
316 size = reader->params.scan_bpl;
317 RIE (gt68xx_device_read (reader->dev, reader->pixel_buffer, &size));
319 buffer = DELAY_BUFFER_READ_PTR (&reader->g_delay);
321 unpack_16_le_mono (reader->pixel_buffer, buffer, reader->pixels_per_line);
327 line_read_gray_double_16 (GT68xx_Line_Reader * reader,
335 size = reader->params.scan_bpl;
337 RIE (gt68xx_device_read (reader->dev, reader->pixel_buffer, &size));
338 unpack_16_le_mono (reader->pixel_buffer,
339 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
340 reader->pixels_per_line);
342 buffer = DELAY_BUFFER_READ_PTR (&reader->g_delay);
344 for (i = reader->params.double_column; i < reader->pixels_per_line; i += 2)
345 buffer[i] = DELAY_BUFFER_WRITE_PTR (&reader->g_delay)[i];
348 DELAY_BUFFER_STEP (&reader->g_delay);
354 line_read_rgb_8_line_mode (GT68xx_Line_Reader * reader,
360 SANE_Byte *pixel_buffer = reader->pixel_buffer;
362 size = reader->params.scan_bpl * 3;
364 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
366 pixels_per_line = reader->pixels_per_line;
368 DELAY_BUFFER_WRITE_PTR (&reader->r_delay), pixels_per_line);
369 pixel_buffer += reader->params.scan_bpl;
371 DELAY_BUFFER_WRITE_PTR (&reader->g_delay), pixels_per_line);
372 pixel_buffer += reader->params.scan_bpl;
374 DELAY_BUFFER_WRITE_PTR (&reader->b_delay), pixels_per_line);
376 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
377 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
378 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
380 DELAY_BUFFER_STEP (&reader->r_delay);
381 DELAY_BUFFER_STEP (&reader->g_delay);
382 DELAY_BUFFER_STEP (&reader->b_delay);
388 line_read_rgb_double_8_line_mode (GT68xx_Line_Reader * reader,
394 SANE_Byte *pixel_buffer = reader->pixel_buffer;
397 size = reader->params.scan_bpl * 3;
398 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
400 pixels_per_line = reader->pixels_per_line;
402 DELAY_BUFFER_WRITE_PTR (&reader->r_delay), pixels_per_line);
403 pixel_buffer += reader->params.scan_bpl;
405 DELAY_BUFFER_WRITE_PTR (&reader->g_delay), pixels_per_line);
406 pixel_buffer += reader->params.scan_bpl;
408 DELAY_BUFFER_WRITE_PTR (&reader->b_delay), pixels_per_line);
410 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
411 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
412 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
414 for (i = reader->params.double_column; i < reader->pixels_per_line; i += 2)
416 DELAY_BUFFER_READ_PTR (&reader->r_delay)[i] =
417 DELAY_BUFFER_SELECT_PTR (&reader->r_delay,
418 reader->params.ld_shift_double)[i];
419 DELAY_BUFFER_READ_PTR (&reader->g_delay)[i] =
420 DELAY_BUFFER_SELECT_PTR (&reader->g_delay,
421 reader->params.ld_shift_double)[i];
422 DELAY_BUFFER_READ_PTR (&reader->b_delay)[i] =
423 DELAY_BUFFER_SELECT_PTR (&reader->b_delay,
424 reader->params.ld_shift_double)[i];
426 DELAY_BUFFER_STEP (&reader->r_delay);
427 DELAY_BUFFER_STEP (&reader->g_delay);
428 DELAY_BUFFER_STEP (&reader->b_delay);
434 line_read_bgr_8_line_mode (GT68xx_Line_Reader * reader,
440 SANE_Byte *pixel_buffer = reader->pixel_buffer;
442 size = reader->params.scan_bpl * 3;
443 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
445 pixels_per_line = reader->pixels_per_line;
447 DELAY_BUFFER_WRITE_PTR (&reader->b_delay), pixels_per_line);
448 pixel_buffer += reader->params.scan_bpl;
450 DELAY_BUFFER_WRITE_PTR (&reader->g_delay), pixels_per_line);
451 pixel_buffer += reader->params.scan_bpl;
453 DELAY_BUFFER_WRITE_PTR (&reader->r_delay), pixels_per_line);
455 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
456 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
457 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
459 DELAY_BUFFER_STEP (&reader->r_delay);
460 DELAY_BUFFER_STEP (&reader->g_delay);
461 DELAY_BUFFER_STEP (&reader->b_delay);
467 line_read_rgb_12_line_mode (GT68xx_Line_Reader * reader,
473 SANE_Byte *pixel_buffer = reader->pixel_buffer;
475 size = reader->params.scan_bpl * 3;
476 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
478 pixels_per_line = reader->pixels_per_line;
480 DELAY_BUFFER_WRITE_PTR (&reader->r_delay),
482 pixel_buffer += reader->params.scan_bpl;
484 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
486 pixel_buffer += reader->params.scan_bpl;
488 DELAY_BUFFER_WRITE_PTR (&reader->b_delay),
491 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
492 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
493 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
495 DELAY_BUFFER_STEP (&reader->r_delay);
496 DELAY_BUFFER_STEP (&reader->g_delay);
497 DELAY_BUFFER_STEP (&reader->b_delay);
503 line_read_rgb_double_12_line_mode (GT68xx_Line_Reader * reader,
509 SANE_Byte *pixel_buffer = reader->pixel_buffer;
512 size = reader->params.scan_bpl * 3;
513 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
515 pixels_per_line = reader->pixels_per_line;
517 DELAY_BUFFER_WRITE_PTR (&reader->r_delay),
519 pixel_buffer += reader->params.scan_bpl;
521 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
523 pixel_buffer += reader->params.scan_bpl;
525 DELAY_BUFFER_WRITE_PTR (&reader->b_delay),
528 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
529 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
530 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
532 for (i = reader->params.double_column; i < reader->pixels_per_line; i += 2)
534 DELAY_BUFFER_READ_PTR (&reader->r_delay)[i] =
535 DELAY_BUFFER_SELECT_PTR (&reader->r_delay,
536 reader->params.ld_shift_double)[i];
537 DELAY_BUFFER_READ_PTR (&reader->g_delay)[i] =
538 DELAY_BUFFER_SELECT_PTR (&reader->g_delay,
539 reader->params.ld_shift_double)[i];
540 DELAY_BUFFER_READ_PTR (&reader->b_delay)[i] =
541 DELAY_BUFFER_SELECT_PTR (&reader->b_delay,
542 reader->params.ld_shift_double)[i];
544 DELAY_BUFFER_STEP (&reader->r_delay);
545 DELAY_BUFFER_STEP (&reader->g_delay);
546 DELAY_BUFFER_STEP (&reader->b_delay);
552 line_read_rgb_16_line_mode (GT68xx_Line_Reader * reader,
558 SANE_Byte *pixel_buffer = reader->pixel_buffer;
560 size = reader->params.scan_bpl * 3;
561 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
563 pixels_per_line = reader->pixels_per_line;
565 DELAY_BUFFER_WRITE_PTR (&reader->r_delay),
567 pixel_buffer += reader->params.scan_bpl;
569 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
571 pixel_buffer += reader->params.scan_bpl;
573 DELAY_BUFFER_WRITE_PTR (&reader->b_delay),
576 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
577 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
578 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
580 DELAY_BUFFER_STEP (&reader->r_delay);
581 DELAY_BUFFER_STEP (&reader->g_delay);
582 DELAY_BUFFER_STEP (&reader->b_delay);
588 line_read_rgb_double_16_line_mode (GT68xx_Line_Reader * reader,
594 SANE_Byte *pixel_buffer = reader->pixel_buffer;
597 size = reader->params.scan_bpl * 3;
598 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
600 pixels_per_line = reader->pixels_per_line;
602 DELAY_BUFFER_WRITE_PTR (&reader->r_delay),
604 pixel_buffer += reader->params.scan_bpl;
606 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
608 pixel_buffer += reader->params.scan_bpl;
610 DELAY_BUFFER_WRITE_PTR (&reader->b_delay),
613 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
614 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
615 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
617 for (i = reader->params.double_column; i < reader->pixels_per_line; i += 2)
619 DELAY_BUFFER_READ_PTR (&reader->r_delay)[i] =
620 DELAY_BUFFER_SELECT_PTR (&reader->r_delay,
621 reader->params.ld_shift_double)[i];
622 DELAY_BUFFER_READ_PTR (&reader->g_delay)[i] =
623 DELAY_BUFFER_SELECT_PTR (&reader->g_delay,
624 reader->params.ld_shift_double)[i];
625 DELAY_BUFFER_READ_PTR (&reader->b_delay)[i] =
626 DELAY_BUFFER_SELECT_PTR (&reader->b_delay,
627 reader->params.ld_shift_double)[i];
629 DELAY_BUFFER_STEP (&reader->r_delay);
630 DELAY_BUFFER_STEP (&reader->g_delay);
631 DELAY_BUFFER_STEP (&reader->b_delay);
637 line_read_bgr_12_line_mode (GT68xx_Line_Reader * reader,
643 SANE_Byte *pixel_buffer = reader->pixel_buffer;
645 size = reader->params.scan_bpl * 3;
646 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
648 pixels_per_line = reader->pixels_per_line;
650 DELAY_BUFFER_WRITE_PTR (&reader->b_delay),
652 pixel_buffer += reader->params.scan_bpl;
654 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
656 pixel_buffer += reader->params.scan_bpl;
658 DELAY_BUFFER_WRITE_PTR (&reader->r_delay),
661 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
662 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
663 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
665 DELAY_BUFFER_STEP (&reader->r_delay);
666 DELAY_BUFFER_STEP (&reader->g_delay);
667 DELAY_BUFFER_STEP (&reader->b_delay);
673 line_read_bgr_16_line_mode (GT68xx_Line_Reader * reader,
679 SANE_Byte *pixel_buffer = reader->pixel_buffer;
681 size = reader->params.scan_bpl * 3;
682 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
684 pixels_per_line = reader->pixels_per_line;
686 DELAY_BUFFER_WRITE_PTR (&reader->b_delay),
688 pixel_buffer += reader->params.scan_bpl;
690 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
692 pixel_buffer += reader->params.scan_bpl;
694 DELAY_BUFFER_WRITE_PTR (&reader->r_delay),
697 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
698 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
699 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
701 DELAY_BUFFER_STEP (&reader->r_delay);
702 DELAY_BUFFER_STEP (&reader->g_delay);
703 DELAY_BUFFER_STEP (&reader->b_delay);
709 line_read_rgb_8_pixel_mode (GT68xx_Line_Reader * reader,
715 SANE_Byte *pixel_buffer = reader->pixel_buffer;
717 size = reader->params.scan_bpl;
718 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
720 pixels_per_line = reader->pixels_per_line;
722 DELAY_BUFFER_WRITE_PTR (&reader->r_delay), pixels_per_line);
725 DELAY_BUFFER_WRITE_PTR (&reader->g_delay), pixels_per_line);
728 DELAY_BUFFER_WRITE_PTR (&reader->b_delay), pixels_per_line);
730 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
731 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
732 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
734 DELAY_BUFFER_STEP (&reader->r_delay);
735 DELAY_BUFFER_STEP (&reader->g_delay);
736 DELAY_BUFFER_STEP (&reader->b_delay);
743 line_read_rgb_12_pixel_mode (GT68xx_Line_Reader * reader,
748 SANE_Byte *pixel_buffer = reader->pixel_buffer;
750 size = reader->params.scan_bpl;
751 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
754 DELAY_BUFFER_WRITE_PTR (&reader->r_delay),
755 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
756 DELAY_BUFFER_WRITE_PTR (&reader->b_delay),
757 reader->pixels_per_line);
759 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
760 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
761 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
763 DELAY_BUFFER_STEP (&reader->r_delay);
764 DELAY_BUFFER_STEP (&reader->g_delay);
765 DELAY_BUFFER_STEP (&reader->b_delay);
771 line_read_rgb_16_pixel_mode (GT68xx_Line_Reader * reader,
777 SANE_Byte *pixel_buffer = reader->pixel_buffer;
779 size = reader->params.scan_bpl;
780 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
782 pixels_per_line = reader->pixels_per_line;
784 DELAY_BUFFER_WRITE_PTR (&reader->r_delay),
788 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
792 DELAY_BUFFER_WRITE_PTR (&reader->b_delay),
795 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
796 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
797 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
799 DELAY_BUFFER_STEP (&reader->r_delay);
800 DELAY_BUFFER_STEP (&reader->g_delay);
801 DELAY_BUFFER_STEP (&reader->b_delay);
807 line_read_bgr_8_pixel_mode (GT68xx_Line_Reader * reader,
813 SANE_Byte *pixel_buffer = reader->pixel_buffer;
815 size = reader->params.scan_bpl;
816 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
818 pixels_per_line = reader->pixels_per_line;
820 DELAY_BUFFER_WRITE_PTR (&reader->b_delay), pixels_per_line);
823 DELAY_BUFFER_WRITE_PTR (&reader->g_delay), pixels_per_line);
826 DELAY_BUFFER_WRITE_PTR (&reader->r_delay), pixels_per_line);
828 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
829 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
830 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
832 DELAY_BUFFER_STEP (&reader->r_delay);
833 DELAY_BUFFER_STEP (&reader->g_delay);
834 DELAY_BUFFER_STEP (&reader->b_delay);
841 line_read_bgr_12_pixel_mode (GT68xx_Line_Reader * reader,
846 SANE_Byte *pixel_buffer = reader->pixel_buffer;
848 size = reader->params.scan_bpl;
849 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
852 DELAY_BUFFER_WRITE_PTR (&reader->b_delay),
853 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
854 DELAY_BUFFER_WRITE_PTR (&reader->r_delay),
855 reader->pixels_per_line);
857 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
858 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
859 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
861 DELAY_BUFFER_STEP (&reader->r_delay);
862 DELAY_BUFFER_STEP (&reader->g_delay);
863 DELAY_BUFFER_STEP (&reader->b_delay);
869 line_read_bgr_16_pixel_mode (GT68xx_Line_Reader * reader,
875 SANE_Byte *pixel_buffer = reader->pixel_buffer;
877 size = reader->params.scan_bpl;
878 RIE (gt68xx_device_read (reader->dev, pixel_buffer, &size));
880 pixels_per_line = reader->pixels_per_line;
882 DELAY_BUFFER_WRITE_PTR (&reader->b_delay),
886 DELAY_BUFFER_WRITE_PTR (&reader->g_delay),
890 DELAY_BUFFER_WRITE_PTR (&reader->r_delay),
893 buffer_pointers_return[0] = DELAY_BUFFER_READ_PTR (&reader->r_delay);
894 buffer_pointers_return[1] = DELAY_BUFFER_READ_PTR (&reader->g_delay);
895 buffer_pointers_return[2] = DELAY_BUFFER_READ_PTR (&reader->b_delay);
897 DELAY_BUFFER_STEP (&reader->r_delay);
898 DELAY_BUFFER_STEP (&reader->g_delay);
899 DELAY_BUFFER_STEP (&reader->b_delay);
905 gt68xx_line_reader_init_delays (GT68xx_Line_Reader * reader)
909 if (reader->params.color)
911 status = gt68xx_delay_buffer_init (&reader->r_delay,
912 reader->params.scan_xs,
913 reader->params.ld_shift_r +
914 reader->params.ld_shift_double);
918 status = gt68xx_delay_buffer_init (&reader->g_delay,
919 reader->params.scan_xs,
920 reader->params.ld_shift_g +
921 reader->params.ld_shift_double);
924 gt68xx_delay_buffer_done (&reader->r_delay);
928 status = gt68xx_delay_buffer_init (&reader->b_delay,
929 reader->params.scan_xs,
930 reader->params.ld_shift_b +
931 reader->params.ld_shift_double);
934 gt68xx_delay_buffer_done (&reader->g_delay);
935 gt68xx_delay_buffer_done (&reader->r_delay);
941 status = gt68xx_delay_buffer_init (&reader->g_delay,
942 reader->params.scan_xs,
943 reader->params.ld_shift_double);
947 reader->delays_initialized = SANE_TRUE;
953 gt68xx_line_reader_free_delays (GT68xx_Line_Reader * reader)
955 if (reader->delays_initialized)
957 if (reader->params.color)
959 gt68xx_delay_buffer_done (&reader->b_delay);
960 gt68xx_delay_buffer_done (&reader->g_delay);
961 gt68xx_delay_buffer_done (&reader->r_delay);
965 gt68xx_delay_buffer_done (&reader->g_delay);
967 reader->delays_initialized = SANE_FALSE;
978 GT68xx_Line_Reader *reader;
986 reader = (GT68xx_Line_Reader *) malloc (sizeof (GT68xx_Line_Reader));
987 if (!reader)
992 memset (reader, 0, sizeof (GT68xx_Line_Reader));
994 reader->dev = dev;
995 memcpy (&reader->params, params, sizeof (GT68xx_Scan_Parameters));
996 reader->pixel_buffer = 0;
997 reader->delays_initialized = SANE_FALSE;
999 reader->read = NULL;
1001 status = gt68xx_line_reader_init_delays (reader);
1006 free (reader);
1007 reader = NULL;
1011 reader->pixels_per_line = reader->params.pixel_xs;
1013 if (!reader->params.color)
1015 if (reader->params.depth == 8)
1017 if (reader->params.ld_shift_double > 0)
1018 reader->read = line_read_gray_double_8;
1020 reader->read = line_read_gray_8;
1022 else if (reader->params.depth == 12)
1024 if (reader->params.ld_shift_double > 0)
1025 reader->read = line_read_gray_double_12;
1027 reader->read = line_read_gray_12;
1029 else if (reader->params.depth == 16)
1031 if (reader->params.ld_shift_double > 0)
1032 reader->read = line_read_gray_double_16;
1034 reader->read = line_read_gray_16;
1037 else if (reader->params.line_mode)
1039 if (reader->params.depth == 8)
1043 if (reader->params.ld_shift_double > 0)
1044 reader->read = line_read_rgb_double_8_line_mode;
1046 reader->read = line_read_rgb_8_line_mode;
1049 reader->read = line_read_bgr_8_line_mode;
1051 else if (reader->params.depth == 12)
1055 if (reader->params.ld_shift_double > 0)
1056 reader->read = line_read_rgb_double_12_line_mode;
1058 reader->read = line_read_rgb_12_line_mode;
1061 reader->read = line_read_bgr_12_line_mode;
1063 else if (reader->params.depth == 16)
1067 if (reader->params.ld_shift_double > 0)
1068 reader->read = line_read_rgb_double_16_line_mode;
1070 reader->read = line_read_rgb_16_line_mode;
1073 reader->read = line_read_bgr_16_line_mode;
1078 if (reader->params.depth == 8)
1081 reader->read = line_read_rgb_8_pixel_mode;
1083 reader->read = line_read_bgr_8_pixel_mode;
1085 else if (reader->params.depth == 12)
1088 reader->read = line_read_rgb_12_pixel_mode;
1090 reader->read = line_read_bgr_12_pixel_mode;
1092 else if (reader->params.depth == 16)
1095 reader->read = line_read_rgb_16_pixel_mode;
1097 reader->read = line_read_bgr_16_pixel_mode;
1101 if (reader->read == NULL)
1104 reader->params.depth);
1105 gt68xx_line_reader_free_delays (reader);
1106 free (reader);
1107 reader = NULL;
1111 scan_bpl_full = reader->params.scan_bpl;
1113 if (reader->params.color && reader->params.line_mode)
1116 reader->pixel_buffer = malloc (scan_bpl_full);
1117 if (!reader->pixel_buffer)
1120 gt68xx_line_reader_free_delays (reader);
1121 free (reader);
1122 reader = NULL;
1126 gt68xx_device_set_read_buffer_size (reader->dev,
1129 image_size = reader->params.scan_bpl * reader->params.scan_ys;
1130 status = gt68xx_device_read_prepare (reader->dev, image_size, final_scan);
1136 free (reader->pixel_buffer);
1137 gt68xx_line_reader_free_delays (reader);
1138 free (reader);
1139 reader = NULL;
1144 *reader_return = reader;
1149 gt68xx_line_reader_free (GT68xx_Line_Reader * reader)
1155 if (reader == NULL)
1162 gt68xx_line_reader_free_delays (reader);
1164 if (reader->pixel_buffer)
1166 free (reader->pixel_buffer);
1167 reader->pixel_buffer = NULL;
1170 status = gt68xx_device_read_finish (reader->dev);
1178 free (reader);
1179 reader = NULL;
1186 gt68xx_line_reader_read (GT68xx_Line_Reader * reader,
1191 status = (*reader->read) (reader, buffer_pointers_return);