internal static uint GetSize(string mlvFileName, MLVTypes.mlv_vidf_hdr_t vidfHeader, byte[] pixelData, object[] metadata) { try { frame_headers dngData = CreateDngData(vidfHeader, metadata); uint headerSize = dng_get_header_size(ref dngData); uint imageSize = dng_get_image_size(ref dngData); byte[] headerData = new byte[headerSize]; uint headerSizeReal = dng_get_header_data(ref dngData, headerData, 0, headerSize); uint totalSize = headerSizeReal + imageSize; return(totalSize); } catch (Exception e) { return(0); } }
internal static byte[] Create(string mlvFileName, MLVTypes.mlv_vidf_hdr_t vidfHeader, byte[] inData, object[] metadata) { frame_headers dngData = CreateDngData(vidfHeader, metadata); uint dngHeaderSize = dng_get_header_size(ref dngData); uint dngImageDataSize = (uint)(dngData.rawi_hdr.xRes * dngData.rawi_hdr.yRes * 16 / 8); uint rawImageDataSize = (uint)(dngData.rawi_hdr.xRes * dngData.rawi_hdr.yRes * dngData.rawi_hdr.raw_info.bits_per_pixel / 8); byte[] imageData = new byte[dngHeaderSize + dngImageDataSize]; if (rawImageDataSize > inData.Length) { throw new InvalidDataException("Raw data has only " + inData.Length + " bytes instead of " + rawImageDataSize + " bytes declared by RAWI info"); } uint headerSizeReal = dng_get_header_data(ref dngData, imageData, 0, dngHeaderSize); DateTime start = DateTime.Now; uint dataSizeReal = dng_get_image_data(ref dngData, inData, imageData, -(int)headerSizeReal, dngImageDataSize); ProcessingTime = (DateTime.Now - start).TotalMilliseconds; return(imageData); }
private static frame_headers CreateDngData(MLVTypes.mlv_vidf_hdr_t vidfHeader, object[] metadata) { frame_headers dngData = new frame_headers(); foreach (var obj in metadata) { if (obj.GetType() == typeof(MLVTypes.mlv_file_hdr_t)) { dngData.file_hdr = (MLVTypes.mlv_file_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_rtci_hdr_t)) { dngData.rtci_hdr = (MLVTypes.mlv_rtci_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_idnt_hdr_t)) { dngData.idnt_hdr = (MLVTypes.mlv_idnt_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_rawi_hdr_t)) { dngData.rawi_hdr = (MLVTypes.mlv_rawi_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_expo_hdr_t)) { dngData.expo_hdr = (MLVTypes.mlv_expo_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_lens_hdr_t)) { dngData.lens_hdr = (MLVTypes.mlv_lens_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_wbal_hdr_t)) { dngData.wbal_hdr = (MLVTypes.mlv_wbal_hdr_t)obj; } /* * else * { * switch ((String)obj.blockType) * { * case "RTCI": * dngData.rtci_hdr = obj; * break; * case "IDNT": * dngData.idnt_hdr = obj; * break; * case "RAWI": * dngData.rawi_hdr = obj; * break; * case "EXPO": * dngData.expo_hdr = obj; * break; * case "LENS": * dngData.lens_hdr = obj; * break; * case "WBAL": * dngData.wbal_hdr = obj; * break; * } * }*/ } dngData.vidf_hdr = vidfHeader; return(dngData); }
public static extern uint dng_get_size(ref frame_headers frame_headers);
public static extern uint dng_get_image_data(ref frame_headers frame_headers, byte[] packed_buffer, byte[] output_buffer, int offset, uint max_size);
private static frame_headers CreateDngData(MLVTypes.mlv_vidf_hdr_t vidfHeader, object[] metadata) { frame_headers dngData = new frame_headers(); foreach (var obj in metadata) { if (obj.GetType() == typeof(MLVTypes.mlv_file_hdr_t)) { dngData.file_hdr = (MLVTypes.mlv_file_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_rtci_hdr_t)) { dngData.rtci_hdr = (MLVTypes.mlv_rtci_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_idnt_hdr_t)) { dngData.idnt_hdr = (MLVTypes.mlv_idnt_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_rawi_hdr_t)) { dngData.rawi_hdr = (MLVTypes.mlv_rawi_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_expo_hdr_t)) { dngData.expo_hdr = (MLVTypes.mlv_expo_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_lens_hdr_t)) { dngData.lens_hdr = (MLVTypes.mlv_lens_hdr_t)obj; } else if (obj.GetType() == typeof(MLVTypes.mlv_wbal_hdr_t)) { dngData.wbal_hdr = (MLVTypes.mlv_wbal_hdr_t)obj; } /* else { switch ((String)obj.blockType) { case "RTCI": dngData.rtci_hdr = obj; break; case "IDNT": dngData.idnt_hdr = obj; break; case "RAWI": dngData.rawi_hdr = obj; break; case "EXPO": dngData.expo_hdr = obj; break; case "LENS": dngData.lens_hdr = obj; break; case "WBAL": dngData.wbal_hdr = obj; break; } }*/ } dngData.vidf_hdr = vidfHeader; return dngData; }