コード例 #1
0
ファイル: xvid.cpp プロジェクト: ARSekkat/gpac
/*****************************************************************************
 * XviD Native decoder entry point
 *
 * This function is just a wrapper to all the option cases.
 *
 * Returned values : XVID_ERR_FAIL when opt is invalid
 *                   else returns the wrapped function result
 *
 ****************************************************************************/
int xvid_decore(void *handle, int opt, void *param1, void *param2) {

	switch (opt) {
	case XVID_DEC_CREATE:
		return decoder_create((xvid_dec_create_t *) param1);

	case XVID_DEC_DESTROY:
		delete (S_decoder*)handle;
		return 0;

	case XVID_DEC_DECODE:
		return ((S_decoder*)handle)->Decode((xvid_dec_frame_t *) param1, (xvid_dec_stats_t*) param2);

	default:
		return XVID_ERR_FAIL;
	}
}
コード例 #2
0
ファイル: xvid_dec.c プロジェクト: DanielGit/Intrisit201202
int
xvid_decore(void *handle,
			int opt,
			void *param1,
			void *param2)
{
	switch (opt) {
	case XVID_DEC_CREATE:
		return decoder_create((xvid_dec_create_t *) param1);

	case XVID_DEC_DESTROY:
		return decoder_destroy((DECODER *) handle);

	case XVID_DEC_DECODE:
		return decoder_decode((DECODER *) handle, (xvid_dec_frame_t *) param1, (xvid_dec_stats_t*) param2);

	default:
		return XVID_ERR_FAIL;
	}
}
コード例 #3
0
ファイル: systematic.c プロジェクト: xwuxjim333/rlnc
int main(int argc, char *argv[])
{
	srand(time(NULL));

	struct timespec start, end;
	double cpu_time = 0.0;
	if (argc < 3) {
		fprintf(stdout, "Usage: %s [file_name] [decode file]\n", argv[0]);
	}

	FILE *fp;
	fp = fopen(argv[1], "r");

	FILE *fb;
	fb = fopen(argv[2], "w");

	uint32_t symbol_size = 16*70;//16 bytes = 128 bits for SIMD
	struct encoder *encoder = encoder_create(symbol_size);

	/*int32_t i;
	for (i = 0; i < encoder->block_size; i++) {
		encoder->block[i] = (uint8_t) rand();
	}*/

	uint8_t *payload = calloc(encoder->symbol_size + 1, sizeof(uint8_t));

	clock_gettime(CLOCK_REALTIME, &start);
	while (!feof(fp)) {
		int number = fread(encoder->block, sizeof(char), symbol_size, fp);

		struct decoder *decoder = decoder_create(symbol_size);

		/* systematic */
		int o;
		for (o = 0; o < encoder->symbols; o++) {
			encoder->flag = 1;
			encoder_write_payload(encoder, payload);

			/* with 75% probability to trigger systematic */
			if ((rand() % 4) != 0) {
				decoder_read_payload(decoder, payload);
				printf("decoder rank = %u\n", decoder->rank);
				decoder_print(decoder);
			}
		}

		/* rlnc */
		while (decoder->rank < 8) {
			encoder->flag = 0;
			encoder_write_payload(encoder, payload);
			decoder_read_payload(decoder, payload);
			//printf("decoder rank = %u\n", decoder->rank);
			//decoder_print(decoder);
		}

		printf("\ndecoding block...\n\n");
		decoder_decode_block(decoder);
		decoder_print(decoder);

		printf("\ndecode finished\n\n");

		if (memcmp(decoder->block, encoder->block, decoder->symbols * decoder->symbol_size) == 0)
			printf("decode success\n");
		else
			printf("decode fail\n");

		fwrite(decoder->block, sizeof(char), number, fb);
		memset(payload, 0, encoder->symbol_size + 1);
		decoder_flush(decoder);
		decoder_destroy(&decoder);
	}
	clock_gettime(CLOCK_REALTIME, &end);
	cpu_time = diff_in_second(start, end);
	printf("execution time of transmission : %lf sec\n", cpu_time);

	fclose(fb);
	free(payload);
	encoder_destroy(&encoder);
	return 0;
}