セグメント入れ替えの処理
マーカーの並び順を定義して
int jpeg_std_marker_order[] = { 0xE0 /* APP0 */, 0xE1 /* APP1 */, 0xE2 /* APP2 */, 0xE3 /* APP3 */, 0xE4 /* APP4 */, 0xE5 /* APP5 */, 0xE6 /* APP6 */, 0xE7 /* APP7 */, <略> 0xDD /* DRI */ , };
その順番でセグメントを追加していきます。
jpeg_segment_t *jpeg_data, jpeg_data = jpeg_segment_parse(data, data_len); for(i=0; i< jpeg_std_marker_order_num; i++) { int m = jpeg_std_marker_order[i]; unsigned char *d; unsigned short d_len; while(d = jpeg_segment_steal_node(jpeg_data, m, &d_len)) { jpeg_segment_append(jpeg_output, m, d, d_len); } }