Re: bypassing PTS in video filter layer
Arpi <[email protected]>
| Newsgroups | gmane.comp.video.mplayer.g2.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi, > > any better ideas? > > IMO it should be much simpler than this. If the frames are being > dropped at the codec/demuxer end (because of 0-byte skipped frames in > .avi container and such, or nonrecoverable decoding errors or > whatever) then the codec/demuxer layer or the wrapper between codec > and vf layer should just adjust the relative_pts of the next frame it > sends out to account for any dropped frames in between. > On the other hand, if the frames are being dropped by a filter, it > seems to me that the filter should be responsible for pts accounting. > This is already the case for filters like inverse telecine that don't > actually 'drop' frames, but which have a non-1-to-1 correspondence > between input and output frames, so it seems like it'd be ok for other > filters (dint, decimate, etc.) which drop frames to do the same. you're right, as usual :) i'll go for this. (did you notice that in last release relative_pts is also in the struct?:)) > BTW, I was thinking that (non-hard) framedrop for slow cpu and for > output to fixed-fps container (for encoding) or vo should be an actual > filter, rather than just part of the player/encoder loop. Then the > user could insert it at an arbitrary position in the chain -- > certainly after inverse telecine or temporal noise filters, but before > expensive swscaler, etc. fixed-fps output is clean to be implemented as a filter. (maybe autoinserted for fixed-fps formats encoding) (btw we could develop filter which can interpolate images at fps upsampling, maybe by reusing some MC info exported by codec... :)) but for slow-cpu (and also slow-vga) type framedrop i think it's more than a filter. actually it's a drop signal to the codec to do decoding as fast as possible (ie. skip B frames, postprocessing etc) and skip all teh filtering and display. The special case of temporal filters is already hdnaled in the vf_process_image(), ie. drop 'signal' is not delivered above the last filter needing all frames. A'rpi / Astral & ESP-team -- Developer of MPlayer G2, the Movie Framework for all - http://www.MPlayerHQ.hu