Hi people, I'm writing a decoder that uses libtheora on Windows and Linux. Decoding works well by now. I have a couple of problems with it, that I just can't seem to figure out. I'll write each of them in a single mail, so it's easier to answer individual problems. The first problem I have is seeking, when it's playing files. I have implemented a weighted binary jump algorithm, that searches for a frame just before the one we want to hit. Then it figures out the keyframe before this one, and jumps back to somewhere just before this keyframe. The jumping algorithm works quite well. It usually takes only about 4 jumps to find a frame that is acceptable (which means it's before the wanted frame, but not too much). But unfortunately I have have a lot of problems figuring out the frame number after each jump. When the decoder is correctly initialized, I can get the frame number by calling theora_granule_frame(theora_state *,ogg_int64_t). But what do I have to do while doing the jumps to find this? This is what the code currently does just after seeking to a new place in the file: // Clear the current ogg buffers, find a new page, and fill the buffers again int result; ogg_sync_reset(&sync); while ((result = ogg_sync_pageseek(&sync, &page)) <= 0) if (result == 0) bufferData(); // Find the next theora page while ((result = ogg_sync_pageout(&sync, &page)) == 0) bufferData(); while (ogg_page_serialno(&page) != tstream.serialno) if (ogg_sync_pageout(&sync, &page) <= 0) bufferData(); const ogg_int64_t actualFrame = theora_granule_frame(&decoder, ogg_page_granulepos(&page)); With some files, this code works fine. But with others, the framenumbers I get at the end have absolutely no resemblance to actual framenumbers. Sometimes they are even an order of magnitude off. Do I have to reinitialize the decode after each jump, just to be able to find the frame number? Or should I instead read the bytes in the file and find the granulepos this way? Most of the example files I use are those creative commons files that can be found on xiph.org. Any help would be really appreciated. Sincerely, Bo Thorsen. -- Thorsen Consulting ApS - Qt consulting services http://www.thorsen-consulting.dk