libtiger 0.3.4
simple.c
/*
*/
#include <stdio.h>
#include <stdlib.h>
#include <ogg/ogg.h>
#include <kate/kate.h>
#include "common.h"
/* All the libtiger API is available from the main tiger header file: */
#include <tiger/tiger.h>
#define FPS ((kate_float)25.0)
static void step_render(tiger_renderer *tr,kate_float *t,kate_float t1)
{
for (;*t<=t1;*t+=(kate_float)1.0/FPS) {
}
}
}
int main()
{
ogg_sync_state oy;
ogg_stream_state os;
int init=0;
ogg_packet op;
kate_state k;
const kate_event *ev;
kate_packet kp;
unsigned char *image;
tiger_renderer *tr;
kate_float render_time=(kate_float)0;
kate_float end_time=(kate_float)0;
set_binary_file(stdin);
/* create a buffer to draw to */
image=(unsigned char*)malloc(640*480*4);
/* we initialize ogg, kate, and tiger */
ogg_sync_init(&oy);
kate_high_decode_init(&k);
tiger_renderer_set_buffer(tr,image,640,480,640*4,0);
/*
We then read packets and feed them to the libkate high level API. When
kate_high_decode_packetin returns a positive number, this signals the
end of the stream.
*/
while (1) {
if (get_packet(&oy,&os,&init,&op)) break;
kate_packet_wrap(&kp,op.bytes,op.packet);
if (kate_high_decode_packetin(&k,&kp,&ev)>0) break;
/* if the event is non NULL, we have an event */
if (ev) {
step_render(tr,&render_time,ev->start_time);
if (ev->end_time>end_time) end_time=ev->end_time;
}
}
step_render(tr,&render_time,end_time);
/* That's it, we can now cleanup */
free(image);
ogg_stream_clear(&os);
ogg_sync_clear(&oy);
kate_high_decode_clear(&k);
return 0;
}
int tiger_renderer_set_surface_clear_color(tiger_renderer *tr, int clear, double r, double g, double b, double a)
Definition: tiger_renderer.c:320
int tiger_renderer_destroy(tiger_renderer *tr)
Definition: tiger_renderer.c:295
int tiger_renderer_create(tiger_renderer **tr)
Definition: tiger_renderer.c:137
int tiger_renderer_add_event(tiger_renderer *tr, const kate_info *ki, const kate_event *ev)
Definition: tiger_renderer.c:341
int tiger_renderer_set_buffer(tiger_renderer *tr, unsigned char *ptr, int width, int height, int stride, int swap_rgb)
Definition: tiger_renderer.c:200
int tiger_renderer_is_dirty(const tiger_renderer *tr)
Definition: tiger_renderer.c:574
int tiger_renderer_render(tiger_renderer *tr)
Definition: tiger_renderer.c:481
int tiger_renderer_update(tiger_renderer *tr, kate_float t, int track)
Definition: tiger_renderer.c:393