Wednesday, December 5, 2007

памятники архитектуры


while(!exit_flag){
pframe = get_src_frame(×tamp);
encoder->set_dst_addr(out_buffer[idx]);
encoder->encode_frame(pframe,×tamp);
pdst = encoder->get_frame(&size);
deliver(out_buffer[idx],timestamp);
}

когда вы кодируете мупег, там есть такая особенность, которая называется reordering delay. одним из следствий этой особенности является то, что запихав в енкодер кадр и его время, на выходе мы можем ничего не получить или получить, но другой совсем кадр, который был целых восемьдесять миллисекунд назад. логично, что вместе с этим кадром из прошлого нам надо получить его размер и его же время.
так как же блядь так получилось, что размер закодированного кадра я получаю при вызове функции get_frame, адрес буфера я задаю заранее функцией set_dst_addr (а возвращаемое значение get_frame вообще никого не интересует и это даже компилятор понимает), а время мне записывают в timestamp при вызове функции encode_frame на место переданного ей туда времени текущего кадра?
щас все переделаю.

No comments: