[vlc-devel] access_demux versus access2 - trying to understand how to write a VCD plugin

R. Bernstein rocky at panix.com
Thu Dec 23 14:12:17 CET 2004


Since the first time I looked at videolan in to write a VCD plugin
with playback control, a great deal seems to have changed. 

One thing that hasn't is the lack of developer information or
documentation. So I look at close source code and the two things that
seem the most relevant are dvdnav.c and v4l.c. 

The things that the VCD plugin needs to do (which it doesn't right
now) is detect changes in streams between still-frame MPEGs and motion
MPEGs which may have different aspect ratios. Also it needs to handle
key events.

Looking at dvdnav.c and v4l.c I see neither uses
set_capability("access2") like the VCD and CDDA plugins are, but
set_capability("access_demux") instead. It seems like they provide
both the input reading part ("access") as well as the some demuxing
part at least to be able to signal the kinds of stream changes and
input events mentioned above. 

So now looking at the callback functions that need to be provided, I
see that access_demux uses  
  pf_demux, 
  pf_control

while access2 uses:
  pf_read, 
  pf_block,
  pf_control
  p_access->pf_seek.

Scanning the source code, I see that in fact only one of pf_read() or
pf_block() is ever really used, and it seems that pf_demux() is what
triggers reading. What happens to pf_seek? Is that now covered by a
pf_control DEMUX_SET_POSITION event? 

Lastly question is on es_out_Control (a static inline function which
mostly calls out->pf_control) and the other es_out_* routines. How
does one understand what do what they require or how to use, I guess
specifically for MPEG streams. 

Any help folks can give would be appreciated. Thanks.











-- 
This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://developers.videolan.org/lists.html



More information about the vlc-devel mailing list