Closed khw7096 closed 8 years ago
mpv나 ffmpeg에서 이부분 어떻게 처리되고 있는지 살펴보기
Tick event 를 사용해서 다음장의 그림을 업데이트 하는 걸 생각하고 있습니다. 틱을 찾고 있는데 잘 안보이네요..
내일 회사가서 언리얼 내부에서는 틱을 어떻게 구현했나 볼께요
일단 언리얼이 지금은 제일 찾기 쉬운고로 ㅋㅋㅋ
go에는 time.Ticker가 있어요. 하지만 제가 원하는건 부드러운 재생이라서 조금더 찾아보고 있어요. Ticker가 1/24초로 되어있다고 하더라도, 하드웨어의 제약때문에 정확히 플레이 되지 않을것 같아서요.
하드웨어의 제약이라면 이미지 읽고 쓰기 부분에 대한 건가요?
생각해보니 최초에는 Ticker로 구현하는것도 괜찮을것 같아요. 문제가 있다면 더 수정하면 되니까요. 이미 Ticker가 그 부분을 해결해 주고 있을수도 있고.
제가 얘기하는 하드웨어의 제약이란 time.Sleep(1s)를 하더라도 컴퓨터가 정확하게 1초를 자지는 않을거 같다는 말이에요.
분명히 더 자거나 덜 잘텐데, 이게 처음엔 조금이지만 누적되면 2시간짜리 영화가 2시간 10분이 될수도 있는거니까요.
아하 이해가 됐어요
How many ticks are in a second? - C# / C Sharp https://bytes.com/topic/c-sharp/answers/589961-how-many-ticks-second
C샵에서만인지는 모르겠는데 초당 1천만 틱이라고 하네요. 그리고 프로세서속도와 pc클록의 의존도 없다고 합니당. 혹시 고에서는 어떤가요?
만약 똑같은 조건이면 더 사용하기 쉽지 않을까 생각합니다
time.Ticker를 테스트 해본결과 꽤 정확성이 높네요. 틱커를 켜둔 시간에 상관없이 차이는 항상 80나노초 정도네요.
0d3362a 부분을 테스트해봤어요. 클릭해봐용
https://github.com/mpv-player/mpv/blob/master/player/playloop.c
Mpv의 플레이관련 이네요.
일단 구현됐으니 닫을게요. 나중에 사안마다 추가적인 이슈를 만들죠.
만약 성공한다면 23.97f로도..