예제 #1
0
int stream_reciver::test()
{
    static long la = getCurrentTime();
    while(1)
    {
        data_pack * tmp = rec();
        if (getCurrentTime() - la > 1000000)
        {
            printf("timeout");
            reset(tmp);
        }
        proc_frame(tmp);
        delete tmp;
        la = getCurrentTime();
    }
    return 0;
}
예제 #2
0
static void indexer_dv_proc_frame(anim_index_builder *idx,
                                  unsigned char *buffer,
                                  int UNUSED(data_size),
                                  struct anim_index_entry *entry)
{
	int isPAL;
	
	indexer_dv_context *This = (indexer_dv_context *) idx->private_data;

	isPAL = (buffer[3] & 0x80);

	This->got_record_date = FALSE;
	This->got_record_time = FALSE;

	parse_frame(This, buffer, isPAL);
	proc_frame(This, buffer, isPAL);

	if (This->curr_frame >= 0) {
		write_index(This, entry);
		inc_frame(&This->curr_frame, &This->ref_time_read, isPAL);
	}
	else {
		This->backbuffer[This->fsize++] = *entry;
		if (This->fsize >= 31) {
			int i;

			fprintf(stderr, "indexer_dv::indexer_dv_proc_frame: "
			        "backbuffer overrun, emergency flush");

			for (i = 0; i < This->fsize; i++) {
				write_index(This, This->backbuffer + i);
			}
			This->fsize = 0;
		}
	}
}