void test_assert_diff(void) { fflush(stderr); fflush(stdout); if (*(cur.r.out) != '\0') { diff_file(cur.r.out, testoutn, "STDOUT diff failed\n"); } if (*(cur.r.err) != '\0') { diff_file(cur.r.err, testerrn, "STDERR diff failed\n"); } }
/* ** Do a diff against a single file named in g.argv[2] from version zFrom ** against the same file on disk. */ static void diff_one_against_disk( const char *zFrom, /* Name of file */ const char *zDiffCmd, /* Use this "diff" command */ int ignoreEolWs /* Ignore whitespace changes at end of lines */ ){ Blob fname; Blob content; file_tree_name(g.argv[2], &fname, 1); historical_version_of_file(zFrom, blob_str(&fname), &content, 0); diff_file(&content, g.argv[2], g.argv[2], zDiffCmd, ignoreEolWs); blob_reset(&content); blob_reset(&fname); }
static chd_error open_disk_diff(emu_options &options, const char *name, chd_file &source, chd_file &diff_chd) { std::string fname = std::string(name).append(".dif"); /* try to open the diff */ //printf("Opening differencing image file: %s\n", fname.c_str()); emu_file diff_file(options.diff_directory(), OPEN_FLAG_READ | OPEN_FLAG_WRITE); osd_file::error filerr = diff_file.open(fname.c_str()); if (filerr == osd_file::error::NONE) { std::string fullpath(diff_file.fullpath()); diff_file.close(); //printf("Opening differencing image file: %s\n", fullpath.c_str()); return diff_chd.open(fullpath.c_str(), true, &source); } /* didn't work; try creating it instead */ //printf("Creating differencing image: %s\n", fname.c_str()); diff_file.set_openflags(OPEN_FLAG_READ | OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); filerr = diff_file.open(fname.c_str()); if (filerr == osd_file::error::NONE) { std::string fullpath(diff_file.fullpath()); diff_file.close(); /* create the CHD */ //printf("Creating differencing image file: %s\n", fupointllpath.c_str()); chd_codec_type compression[4] = { CHD_CODEC_NONE }; chd_error err = diff_chd.create(fullpath.c_str(), source.logical_bytes(), source.hunk_bytes(), compression, source); if (err != CHDERR_NONE) return err; return diff_chd.clone_all_metadata(source); } return CHDERR_FILE_NOT_FOUND; }
static chd_error open_disk_diff(emu_options &options, const rom_entry *romp, chd_file &source, chd_file &diff_chd) { astring fname(ROM_GETNAME(romp), ".dif"); /* try to open the diff */ LOG(("Opening differencing image file: %s\n", fname.cstr())); emu_file diff_file(options.diff_directory(), OPEN_FLAG_READ | OPEN_FLAG_WRITE); file_error filerr = diff_file.open(fname); if (filerr == FILERR_NONE) { astring fullpath(diff_file.fullpath()); diff_file.close(); LOG(("Opening differencing image file: %s\n", fullpath.cstr())); return diff_chd.open(fullpath, true, &source); } /* didn't work; try creating it instead */ LOG(("Creating differencing image: %s\n", fname.cstr())); diff_file.set_openflags(OPEN_FLAG_READ | OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS); filerr = diff_file.open(fname); if (filerr == FILERR_NONE) { astring fullpath(diff_file.fullpath()); diff_file.close(); /* create the CHD */ LOG(("Creating differencing image file: %s\n", fullpath.cstr())); chd_codec_type compression[4] = { CHD_CODEC_NONE }; chd_error err = diff_chd.create(fullpath, source.logical_bytes(), source.hunk_bytes(), compression, source); if (err != CHDERR_NONE) return err; return diff_chd.clone_all_metadata(source); } return CHDERR_FILE_NOT_FOUND; }
/* * main() */ int main(int argc, char *argv[]) { pj_caching_pool cp; pjmedia_endpt *med_endpt; pj_pool_t *pool; pj_status_t status; /* Codec */ char *codec_id = (char*)"H264"; const pjmedia_vid_codec_info *codec_info; pjmedia_vid_codec_param codec_param; pjmedia_vid_codec *codec = NULL; //const char *save_filename = // "/home/bennylp/Desktop/opt/src/openh264-svn/testbin/test.264"; const char *save_filename = NULL; /* File */ enum { WIDTH = 320, HEIGHT = 192, FPS = 12, YUV_SIZE = WIDTH * HEIGHT * 3 >> 1, YUV_BUF_SIZE = YUV_SIZE + WIDTH, MAX_FRAMES = 32, MTU = 1500 }; FILE *fyuv = NULL; FILE *f264 = NULL; typedef pj_uint8_t enc_buf_type[MTU]; pj_uint8_t yuv_frame[YUV_BUF_SIZE]; enc_buf_type enc_buf[MAX_FRAMES]; unsigned read_cnt = 0, pkt_cnt = 0, dec_cnt = 0, enc_cnt; if (0) { diff_file(); return 1; } /* init PJLIB : */ status = pj_init(); PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); /* Must create a pool factory before we can allocate any memory. */ pj_caching_pool_init(&cp, &pj_pool_factory_default_policy, 0); /* Initialize media endpoint. */ status = pjmedia_endpt_create(&cp.factory, NULL, 1, &med_endpt); PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); /* Create memory pool for application purpose */ pool = pj_pool_create( &cp.factory, /* pool factory */ "app", /* pool name. */ 4000, /* init size */ 4000, /* increment size */ NULL /* callback on error */ ); /* Init video format manager */ pjmedia_video_format_mgr_create(pool, 64, 0, NULL); /* Init video converter manager */ pjmedia_converter_mgr_create(pool, NULL); /* Init event manager */ pjmedia_event_mgr_create(pool, 0, NULL); /* Init video codec manager */ pjmedia_vid_codec_mgr_create(pool, NULL); /* Register all supported codecs */ status = init_codecs(&cp.factory); PJ_ASSERT_RETURN(status == PJ_SUCCESS, 1); /* Open YUV file */ fyuv = fopen("pjsip-apps/bin/CiscoVT2people_320x192_12fps.yuv", "rb"); if (!fyuv) { puts("Unable to open ../CiscoVT2people_320x192_12fps.yuv"); status = -1; goto on_exit; } /* Write 264 file if wanted */ if (save_filename) { f264 = fopen(save_filename, "wb"); } /* Find which codec to use. */ if (codec_id) { unsigned count = 1; pj_str_t str_codec_id = pj_str(codec_id); status = pjmedia_vid_codec_mgr_find_codecs_by_id(NULL, &str_codec_id, &count, &codec_info, NULL); if (status != PJ_SUCCESS) { printf("Error: unable to find codec %s\n", codec_id); return 1; } } else { static pjmedia_vid_codec_info info[1]; unsigned count = PJ_ARRAY_SIZE(info); /* Default to first codec */ pjmedia_vid_codec_mgr_enum_codecs(NULL, &count, info, NULL); codec_info = &info[0]; } /* Get codec default param for info */ status = pjmedia_vid_codec_mgr_get_default_param(NULL, codec_info, &codec_param); pj_assert(status == PJ_SUCCESS); /* Alloc encoder */ status = pjmedia_vid_codec_mgr_alloc_codec(NULL, codec_info, &codec); if (status != PJ_SUCCESS) { PJ_PERROR(3,(THIS_FILE, status, "Error allocating codec")); goto on_exit; } codec_param.dir = PJMEDIA_DIR_ENCODING_DECODING; codec_param.packing = PJMEDIA_VID_PACKING_PACKETS; codec_param.enc_mtu = MTU; codec_param.enc_fmt.det.vid.size.w = WIDTH; codec_param.enc_fmt.det.vid.size.h = HEIGHT; codec_param.enc_fmt.det.vid.fps.num = FPS; codec_param.enc_fmt.det.vid.avg_bps = WIDTH * HEIGHT * FPS; status = pjmedia_vid_codec_init(codec, pool); if (status != PJ_SUCCESS) { PJ_PERROR(3,(THIS_FILE, status, "Error initializing codec")); goto on_exit; } status = pjmedia_vid_codec_open(codec, &codec_param); if (status != PJ_SUCCESS) { PJ_PERROR(3,(THIS_FILE, status, "Error opening codec")); goto on_exit; } while (fread(yuv_frame, 1, YUV_SIZE, fyuv) == YUV_SIZE) { pjmedia_frame frm_yuv, frm_enc[MAX_FRAMES]; pj_bool_t has_more = PJ_FALSE; const pj_uint8_t start_nal[] = { 0, 0, 1 }; unsigned i; ++ read_cnt; pj_bzero(&frm_enc, sizeof(frm_enc)); pj_bzero(&frm_yuv, sizeof(frm_yuv)); frm_yuv.buf = yuv_frame; frm_yuv.size = YUV_SIZE; enc_cnt = 0; frm_enc[enc_cnt].buf = enc_buf[enc_cnt]; frm_enc[enc_cnt].size = MTU; status = pjmedia_vid_codec_encode_begin(codec, NULL, &frm_yuv, MTU, &frm_enc[enc_cnt], &has_more); if (status != PJ_SUCCESS) { PJ_PERROR(3,(THIS_FILE, status, "Codec encode error")); goto on_exit; } if (frm_enc[enc_cnt].size) { if (f264) { fwrite(start_nal, 1, sizeof(start_nal), f264); fwrite(frm_enc[enc_cnt].buf, 1, frm_enc[enc_cnt].size, f264); } ++pkt_cnt; ++enc_cnt; } while (has_more) { if (enc_cnt >= MAX_FRAMES) { status = -1; puts("Error: too many encoded frames"); goto on_exit; } has_more = PJ_FALSE; frm_enc[enc_cnt].buf = enc_buf[enc_cnt]; frm_enc[enc_cnt].size = MTU; status = pjmedia_vid_codec_encode_more(codec, MTU, &frm_enc[enc_cnt], &has_more); if (status != PJ_SUCCESS) { PJ_PERROR(3,(THIS_FILE, status, "Codec encode error")); goto on_exit; } if (frm_enc[enc_cnt].size) { if (f264) { fwrite(start_nal, 1, sizeof(start_nal), f264); fwrite(frm_enc[enc_cnt].buf, 1, frm_enc[enc_cnt].size, f264); } ++pkt_cnt; ++enc_cnt; } } if (enc_cnt) { frm_yuv.buf = yuv_frame; frm_yuv.size = YUV_BUF_SIZE; status = pjmedia_vid_codec_decode(codec, enc_cnt, frm_enc, YUV_BUF_SIZE, &frm_yuv); if (status != PJ_SUCCESS) { PJ_PERROR(3,(THIS_FILE, status, "Codec decode error")); goto on_exit; } if (frm_yuv.size != 0) { ++dec_cnt; } } } printf("Done.\n" " Read YUV frames: %d\n" " Encoded packets: %d\n" " Decoded YUV frames: %d\n", read_cnt, pkt_cnt, dec_cnt); /* Start deinitialization: */ on_exit: if (codec) { pjmedia_vid_codec_close(codec); pjmedia_vid_codec_mgr_dealloc_codec(NULL, codec); } if (f264) fclose(f264); if (fyuv) fclose(fyuv); /* Deinit codecs */ deinit_codecs(); /* Destroy event manager */ pjmedia_event_mgr_destroy(NULL); /* Release application pool */ pj_pool_release( pool ); /* Destroy media endpoint. */ pjmedia_endpt_destroy( med_endpt ); /* Destroy pool factory */ pj_caching_pool_destroy( &cp ); /* Shutdown PJLIB */ pj_shutdown(); return (status == PJ_SUCCESS) ? 0 : 1; } #else int main(int argc, char *argv[]) { PJ_UNUSED_ARG(argc); PJ_UNUSED_ARG(argv); puts("Error: this sample requires video capability " "(PJMEDIA_HAS_VIDEO == 1)"); return -1; }
/* ** Run a diff between the version zFrom and files on disk. zFrom might ** be NULL which means to simply show the difference between the edited ** files on disk and the check-out on which they are based. */ static void diff_all_against_disk( const char *zFrom, /* Version to difference from */ const char *zDiffCmd, /* Use this diff command. NULL for built-in */ int ignoreEolWs /* Ignore end-of-line whitespace */ ){ int vid; Blob sql; Stmt q; vid = db_lget_int("checkout", 0); vfile_check_signature(vid, 1); blob_zero(&sql); db_begin_transaction(); if( zFrom ){ int rid = name_to_rid(zFrom); if( !is_a_version(rid) ){ fossil_fatal("no such check-in: %s", zFrom); } load_vfile_from_rid(rid); blob_appendf(&sql, "SELECT v2.pathname, v2.deleted, v2.chnged, v2.rid==0, v1.rid" " FROM vfile v1, vfile v2 " " WHERE v1.pathname=v2.pathname AND v1.vid=%d AND v2.vid=%d" " AND (v2.deleted OR v2.chnged OR v1.rid!=v2.rid)" "UNION " "SELECT pathname, 1, 0, 0, 0" " FROM vfile v1" " WHERE v1.vid=%d" " AND NOT EXISTS(SELECT 1 FROM vfile v2" " WHERE v2.vid=%d AND v2.pathname=v1.pathname)" "UNION " "SELECT pathname, 0, 0, 1, 0" " FROM vfile v2" " WHERE v2.vid=%d" " AND NOT EXISTS(SELECT 1 FROM vfile v1" " WHERE v1.vid=%d AND v1.pathname=v2.pathname)" " ORDER BY 1", rid, vid, rid, vid, vid, rid ); }else{ blob_appendf(&sql, "SELECT pathname, deleted, chnged , rid==0, rid" " FROM vfile" " WHERE vid=%d" " AND (deleted OR chnged OR rid==0)" " ORDER BY pathname", vid ); } db_prepare(&q, blob_str(&sql)); while( db_step(&q)==SQLITE_ROW ){ const char *zPathname = db_column_text(&q,0); int isDeleted = db_column_int(&q, 1); int isChnged = db_column_int(&q,2); int isNew = db_column_int(&q,3); char *zFullName = mprintf("%s%s", g.zLocalRoot, zPathname); if( isDeleted ){ printf("DELETED %s\n", zPathname); }else if( access(zFullName, 0) ){ printf("MISSING %s\n", zPathname); }else if( isNew ){ printf("ADDED %s\n", zPathname); }else if( isChnged==3 ){ printf("ADDED_BY_MERGE %s\n", zPathname); }else{ int srcid = db_column_int(&q, 4); Blob content; content_get(srcid, &content); printf("Index: %s\n=======================================" "============================\n", zPathname ); diff_file(&content, zFullName, zPathname, zDiffCmd, ignoreEolWs); blob_reset(&content); } free(zFullName); } db_finalize(&q); db_end_transaction(1); /* ROLLBACK */ }
int main(int argc, char *argv[]) { ID3 id3; ID3 *info= create_ID3(NULL); char **file; id3_return rc= ID3_OK; char file_buffer[HUGE_STRING_LEN]; unsigned char buffer[HUGE_STRING_LEN]; char export_buffer[HUGE_STRING_LEN]; char tags_buffer[HUGE_STRING_LEN]; if (argc > 1 && !strcmp(argv[1], "--result")) result++; export_dir= "result-normal"; for (file= list; *file; file++) { if (!(info= create_ID3(info))) { printf("Create Failed\n"); return 0; } sprintf(file_buffer, "tags/%s", *file); if ((rc= parse_file_ID3(info, file_buffer))) printFailedID3(*file); else printID3(info, *file); if (!result) diff_file(*file); } if (destroy_ID3(info)) { printf("Destroy Failed\n"); } info= NULL; export_dir= "result-memory"; for (file= list; *file; file++) { char file_buffer[HUGE_STR_LEN]; unsigned char buffer[HUGE_STR_LEN]; bzero(buffer, HUGE_STR_LEN); if (!(info= create_ID3(info))) { printf("Create Failed\n"); return 0; } set_memory_ID3(info, buffer, HUGE_STR_LEN); sprintf(file_buffer, "tags/%s", *file); if ((rc= parse_file_ID3(info, file_buffer))) printFailedID3(*file); else printID3(info, *file); if (!result) diff_file(*file); } if (destroy_ID3(info)) { printf("Destroy Failed\n"); } info= NULL; export_dir= "result-function"; for ( file= list; *file; file++) { char newfile[HUGE_STRING_LEN]; if (!(info= create_ID3(info))) { printf("Create Failed\n"); return 0; } info->processor= print_tag; if (result) snprintf(newfile, HUGE_STRING_LEN, "%s/%.*sresult", export_dir, (int)((strlen(*file))-3), *file); else snprintf(newfile, HUGE_STRING_LEN, "%s", compare_file); if ((openfile= fopen(newfile, "w")) == NULL) { printf("Error creating result for %s(%s)\n", newfile, strerror(errno)); exit(1); } sprintf(newfile, "tags/%s", *file); if ((rc= parse_file_ID3(info, newfile))) printFailedID3(*file); fclose(openfile); if (!result) diff_file(*file); } if (destroy_ID3(info)) printf("Destroy Failed\n"); #ifdef NOT_DONE export_dir= "result-preset-memory"; memset(&id3, 0, sizeof(ID3)); for ( file= list; *file; file++) { char newfile[HUGE_STRING_LEN]; if (!(info= create_ID3(&id3))) { printf("Create Failed\n"); return 0; } info->processor= print_tag; if (result) snprintf(newfile, HUGE_STRING_LEN, "%s/%.*sresult", export_dir, (int)((strlen(*file))-3), *file); else snprintf(newfile, HUGE_STRING_LEN, "%s", compare_file); if ((openfile= fopen(newfile, "w")) == NULL) { printf("Error creating result for %s(%s)\n", newfile, strerror(errno)); exit(1); } sprintf(buffer, "tags/%s", *file); if ((rc= parse_file_ID3(info, buffer))) printFailedID3(*file); fclose(openfile); if (!result) diff_file(*file); } if (destroy_ID3(info)) printf("Destroy Failed\n"); #endif return 0; }