/*! *********************************************************************** * \brief * main function for TML decoder *********************************************************************** */ int main(int argc, char **argv) { // allocate memory for the structures if ((input = (struct inp_par *)calloc(1, sizeof(struct inp_par)))==NULL) no_mem_exit("main: input"); if ((snr = (struct snr_par *)calloc(1, sizeof(struct snr_par)))==NULL) no_mem_exit("main: snr"); if ((img = (struct img_par *)calloc(1, sizeof(struct img_par)))==NULL) no_mem_exit("main: img"); // Read Configuration File if (argc != 2) { snprintf(errortext, ET_SIZE, "Usage: %s <config.dat> \n\t<config.dat> defines decoder parameters",argv[0]); error(errortext, 300); } init_conf(input, argv[1]); init_old_slice(); switch (input->FileFormat) { case 0: OpenBitstreamFile (input->infile); break; case 1: OpenRTPFile (input->infile); break; default: printf ("Unsupported file format %d, exit\n", input->FileFormat); } // Allocate Slice data struct malloc_slice(input,img); init(img); dec_picture = NULL; dpb.init_done = 0; g_nFrame = 0; // init_dpb(input); init_out_buffer(); img->idr_psnr_number=input->ref_offset; img->psnr_number=0; img->number=0; img->type = I_SLICE; img->dec_ref_pic_marking_buffer = NULL; // B pictures Bframe_ctr=0; // time for total decoding session tot_time = 0; while (decode_one_frame(img, input, snr) != EOS) ; report(input, img, snr); free_slice(input,img); FmoFinit(); free_global_buffers(); flush_dpb(); #ifdef PAIR_FIELDS_IN_OUTPUT flush_pending_output(p_out); #endif CloseBitstreamFile(); fclose(p_out); // fclose(p_out2); if (p_ref) fclose(p_ref); #if TRACE fclose(p_trace); #endif ercClose(erc_errorVar); free_dpb(); uninit_out_buffer(); free_collocated(Co_located); free (input); free (snr); free (img); //while( !kbhit() ); return 0; }
//int ldecod(/*int argc, char **argv*/) //int ldecod(char * cfg_file) //int ldecod(char * cfg_file, unsigned char * bitstream) //int ldecod(char * cfg_file, unsigned char * bitstream, unsigned int length) int ldecod(unsigned char * bitstream, unsigned int length) #endif { // allocate memory for the structures if (Frame_cnt == 0) { if ((input = (struct inp_par *)calloc(1, sizeof(struct inp_par)))==NULL) no_mem_exit("main: input"); if ((snr = (struct snr_par *)calloc(1, sizeof(struct snr_par)))==NULL) no_mem_exit("main: snr"); if ((img = (struct img_par *)calloc(1, sizeof(struct img_par)))==NULL) no_mem_exit("main: img"); } // Read Configuration File /* if (argc != 2) { snprintf(errortext, ET_SIZE, "Usage: %s <config.dat> \n\t<config.dat> defines decoder parameters",argv[0]); error(errortext, 300); } */ Bitstream_leng = length; //init_conf(input, cfg_file);// read cfg & init init_conf2(input);// read cfg & init g_new_frame=1; switch (input->FileFormat) { case 0: //OpenBitstreamFile (input->infile);//Load bitsteam: master_read() OpenBitstreamFile2 (bitstream);//Load bitsteam: master_read() break; case 1: OpenRTPFile (input->infile); break; default: printf ("Unsupported file format %d, exit\n", input->FileFormat); } // Allocate Slice data struct malloc_slice(input,img); init(img); dec_picture = NULL; dpb.init_done = 0; // init_dpb(input); init_out_buffer(); img->idr_psnr_number=0; img->psnr_number=0; img->number=0; img->type = I_SLICE; img->tr_old = -1; // WYK: Oct. 8, 2001, for detection of a new frame img->dec_ref_pic_marking_buffer = NULL; // B pictures Bframe_ctr=0; // time for total decoding session tot_time = 0; #ifdef ESLSC tb_hls_cavld_p = (tb_hls_cavld*)tb; #endif // one clock cycle for one frame //printf("[%d]",Frame_cnt); //cout<< "-->start_time:"<<sc_time_stamp() << endl; while (decode_one_frame(img, input, snr) != EOS) { //flush_one_dpb();//cylin num_pending_frame++; if(!flag_start_dump_frame){ //cout<< sc_time_stamp() <<"\t"<<" ldecode().event_dump_one_frame_req.notify"<<endl; flag_start_dump_frame = 1; event_dump_one_frame_req.notify(5*CLK_CYCLES, CLK_UNIT);//CYLin:define in "global.h" } } //if(flag_start_dump_frame && num_pending_frame >= FRAME_BUFFER_SIZE) if(num_pending_frame >= FRAME_BUFFER_SIZE) wait(event_dump_one_frame_end);//CYLin:waiting pre-frame __report(input, img, snr); if(Frame_cnt == 60) { //if(flag_start_dump_frame) while(num_pending_frame){ wait(event_dump_one_frame_end);//CYLin:waiting pre-frame } free_slice(input,img); FmoFinit(); free_global_buffers(input, img); //printf("******** flush_dpb() ***********\n");//cylin.debug flush_dpb(); //CloseBitstreamFile(); CloseBitstreamFile2(); // fclose(p_out); // fclose(p_out2); if (p_ref) fclose(p_ref); #if TRACE fclose(p_trace); #endif ercClose(erc_errorVar); free_dpb(); uninit_out_buffer(); free (input); free (snr); free (img); } //while( !kbhit() ); return 0; }
/*! *********************************************************************** * \brief * main function for TML decoder *********************************************************************** */ int main2(int argc, char **argv) { int i; // allocate memory for the structures if ((input = (struct inp_par *)calloc(1, sizeof(struct inp_par)))==NULL) no_mem_exit("main: input"); if ((snr = (struct snr_par *)calloc(1, sizeof(struct snr_par)))==NULL) no_mem_exit("main: snr"); if ((img = (struct img_par *)calloc(1, sizeof(struct img_par)))==NULL) no_mem_exit("main: img"); Configure (argc, argv); init_old_slice(); switch (input->FileFormat) { case 0: OpenBitstreamFile (input->infile); break; case 1: OpenRTPFile (input->infile); break; default: printf ("Unsupported file format %d, exit\n", input->FileFormat); } // Allocate Slice data struct malloc_slice(input,img); init(img); #ifdef ADAPTIVE_FILTER InitAdaptiveFilter(); #endif #ifdef MV_COMPETITION init_MV_Competition(); #endif dec_picture = NULL; dpb.init_done = 0; g_nFrame = 0; init_out_buffer(); img->idr_psnr_number=input->ref_offset; img->psnr_number=0; img->number=0; img->type = I_SLICE; img->dec_ref_pic_marking_buffer = NULL; // B pictures Bframe_ctr=snr->frame_ctr=0; // time for total decoding session tot_time = 0; // reference flag initialization for(i=0; i<17; i++) { ref_flag[i]=1; } while (decode_one_frame(img, input, snr) != EOS) ; report(input, img, snr); free_slice(input,img); FmoFinit(); free_global_buffers(); flush_dpb(); #ifdef PAIR_FIELDS_IN_OUTPUT flush_pending_output(p_out); #endif CloseBitstreamFile(); close(p_out); // fclose(p_out2); if (p_ref!=-1) close(p_ref); #if TRACE fclose(p_trace); #endif #ifdef MV_COMPETITION close_MV_Competition(); #endif ercClose(erc_errorVar); free_dpb(); uninit_out_buffer(); free_colocated(Co_located); free (input); free (snr); free (img); //while( !kbhit() ); return 0; }