2
|
1 #include "imp.hpp"
|
|
2 #ifdef _WINDOWS
|
|
3 #include <windows.h>
|
|
4 #endif
|
|
5 int OggPlayer::Imp::queue_page(ogg_page * page) {
|
|
6 if (theora_p)
|
|
7 ogg_stream_pagein(&o_tsstate, page);
|
|
8 return 0;
|
|
9 }
|
|
10
|
|
11 bool OggPlayer::Imp::buffer_data() {
|
|
12 if (!file_in.is_open())
|
|
13 return 0;
|
|
14 if (file_in.eof()) {
|
|
15 file_in.close();
|
|
16 return 0;
|
|
17 }
|
|
18 char *buffer = ogg_sync_buffer(&o_sync, 4096);
|
|
19 int bytes = file_in.read(buffer, 4096).gcount();
|
|
20 ogg_sync_wrote(&o_sync, bytes);
|
|
21 return (bytes != 0);
|
|
22 }
|
|
23
|
|
24 double OggPlayer::Imp::get_time() {
|
|
25 double now = time_factor*timer.elapsed();
|
|
26 return now;
|
|
27 }
|
|
28
|