Patch for raw2dng to output interlaced frames, filled with 0 where the data is missing:
diff -r 7e8078716621 modules/lv_rec/raw2dng.c
--- a/modules/lv_rec/raw2dng.c Wed May 28 08:59:17 2014 +0300
+++ b/modules/lv_rec/raw2dng.c Wed May 28 10:15:10 2014 +0300
@@ -43,6 +43,8 @@
void find_and_fix_cold_pixels(int fix, int framenumber);
void chroma_smooth();
+void interlace_experiment(int frame_number);
+
int fix_cold_pixels = 1; //1=fix cold pixels, 0=disable
#define EV_RESOLUTION 32768
@@ -136,13 +138,15 @@
char fn[100];
snprintf(fn, sizeof(fn), "%s%06d.dng", prefix, framenumber);
- fix_vertical_stripes();
- find_and_fix_cold_pixels(fix_cold_pixels, framenumber);
+ //~ fix_vertical_stripes();
+ //~ find_and_fix_cold_pixels(fix_cold_pixels, framenumber);
#ifdef CHROMA_SMOOTH
- chroma_smooth();
+ //~ chroma_smooth();
#endif
+ interlace_experiment(framenumber);
+
dng_set_framerate(lv_rec_footer.sourceFpsx1000);
save_dng(fn, &raw_info);
}
@@ -1158,3 +1162,18 @@
free(aux2);
}
#endif
+
+void interlace_experiment(int frame_number)
+{
+ int group_lines = 1; /* or 2 */
+ int i;
+ for (i = 0; i < raw_info.height; i++)
+ {
+ if ((i/group_lines) % 2 == frame_number % 2)
+ {
+ /* fake interlacing by filling half of the lines with 0 on even frames, and the other half on odd frames */
+ void* row = (void*)raw_info.buffer + i * raw_info.pitch;
+ memset(row, 0, raw_info.pitch);
+ }
+ }
+}