[Mplayer-cvslog] CVS: main/DOCS/tech TODO,1.20,1.21

Nick Kurshev nickols_k at mail.ru
Wed Dec 26 17:46:07 CET 2001


Hello, Arpi!

On Wed, 26 Dec 2001 03:42:52 +0100 you wrote:

> Update of /cvsroot/mplayer/main/DOCS/tech
> In directory mplayer:/var/tmp.root/cvs-serv16660
> 
> Modified Files:
> 	TODO 
> Log Message:
> release todo
> 
> Index: TODO
> ===================================================================
> RCS file: /cvsroot/mplayer/main/DOCS/tech/TODO,v
> retrieving revision 1.20
> retrieving revision 1.21
> diff -u -r1.20 -r1.21
> --- TODO	17 Dec 2001 01:14:15 -0000	1.20
> +++ TODO	26 Dec 2001 02:42:44 -0000	1.21
> @@ -5,6 +5,14 @@
>  FOR THE RELEASE:
>  ~~~~~~~~~~~~~~~~
>  
> +URGENT:
> +- fix -tv subconfig bug
> +- fix mpeg PES/PS detection (VDR vs. BIN)
> +- fix suid root
> +- check wmv8 with gcc 3.0x
> +- fix cvid on ppc
> +
> +
>  demuxer:
>  - prebuffering to cache2 (req. for MMS) - URGENT!
>  
I think we should add here some rewritting of our "MGA_VID" stuff.
(Sorry - I write to this list since I don't like to write to /dev/nul aka advusers)

Well - I wrote to v4l list with request about extensions of this stuff for our needs.
Nobody replied me (/dev/nul).

Well - we going to release 0.60. But we should implement some new standard and output
plugin for our drivers (I don't want to have distributed stuff of current radeon_vid
for replacing it in the future).

As for me - it doesn't matter which technique will be accepted into mplayer -
my previous interface or this new interface or any other interface but we should
to solve this problem, IMHO.

Here my vision of -vo v4l implementation for mplayer:


               OLD STUFF                                NEW STUFF
    App               driver             App                    driver
+------------------+-----------------+   +------------------+------------------+
| open(name)       |::init_module    |   | open(name)       |::init_module     |
|                  |       find_card |   |                  |       find_card  |
|                  |     init_driver |   |                  |     init_driver  |
|                  |::open           |   |                  |::open            |
|                  |   inc_use_count |   |                  |   inc_use_count  |
+------------------+-----------------+   +------------------+------------------+
                                         | QUERY CAPABILITY |VID_TYPE_SCALES|  |
                                         | ioctl(VIDIOCGCAP)|VID_TYPE_OVERLAY| |
                                         |                  |VID_TYPE_CHROMAKEY|
                                         |                  |channels=1        |
                                         |                  |audios=1          |
                                         |                  |min_max_size=VAL  |
                                         +-------------------------------------+
          QUERY FOURCC       ??? is missed ??? 
                               no workaround     
                                         +-------------------------------------+
                                         | VIDIOCGFBUF      | QUERY DEST_PITCH |
+------------------------------------+   +-------------------------------------+
| ioctl(VID_CONFIG)|->config_bes     |   | Lot of new ioctls|                  |
|                  |   format_fourcc |   | VIDIOCSPICT      | format_fourcc<ugly>
|                  |      frame_size |   | < none >         | frame_size       |
|                  |      num_frames |   | VIDIOCGMBUF      | num_frames       |
|                  |        src_rect |   | VIDIOCSFBUF<root>| src_rect         |
|                  |       dest_rect |   | VIDIOCSWIN       | dest_rect        |
|                  |       color_key |   | VIDIOCKEY+CSWIN  | color_key        |   |
+------------------------------------+   +-------------------------------------+
| ioctl(VID_ON)    | ->enable_bes    |   | VIDIOCCAPTURE(1) | ugly but only way|
+------------------------------------+   +-------------------------------------+
| mmap(handler)    | ::mmap vidoverly|   | VIDIOCMCAPTURE   |      ugly        |
|                  |                     | or old method mmap (featureless)    |
+------------------------------------+   +-------------------------------------+
| PLAYBACK         | provides VO DGA |   | PLAYBACK         | provides VO DGA  |
| ioctl(FRAME_SEL) | ->frame_switch  |   | no FRAME_SEL     | workaround: auto |
|                  |                 |   |                  | selection (ugly) |
+------------------------------------+   +-------------------------------------+
                                          New:
                                          VIDIOCSWRITEMODE := VID_WRITE_OSD
                                                              VID_WRITE_MPEG_VID
                                                              (as video playback)
+------------------------------------+   +-------------------------------------+
| ioctl(VID_OFF)   | ->disable_bes   |   | VIDIOCCAPTURE(0) | ugly but only way|
+------------------------------------+   +-------------------------------------+
| munmap(handler)  | ::munmap        |   | munmap(handler)  | ::munmap         |
|                  |                 |   | free?            |                  |
+------------------------------------+   +-------------------------------------+
| close(handler)   | ::close         |   | close(handler)   | ::close          |
|                  |    dec_use_count|   |                  |    dec_use_count |
|                  | ::cleanup_module|   |                  | ::cleanup_module |
+------------------------------------+   +-------------------------------------+

Both stuff lack:
- DMA support 
- Query fourcc mechanism

OTOH mgauyv (new stuff from marvel.sf.net) uses:
VIDIOCGCAP
VIDIOCGFBUF (missed in my scheme.)
Thier remarks:
In all this driver code we use the 'base' field as the relative address of the
video buffer inside the framebuffer (for convenience), whereas the standard
says it's the physical address.	(INCOMPATIBILITY ???)
VIDIOCSFBUF: return -EINVAL (INCOMPATIBILITY ???)
VIDIOCGCHAN (was missed in my scheme)
VIDIOCSCHAN: ... program_bes( mga ); ... (was missed in my scheme)
VIDIOCSWIN
VIDIOCGPICT (was missed in my scheme)
VIDIOCGWIN
VIDIOCSPICT
VIDIOCCAPTURE: if(arg) mgabes_activate(bes); else mgabes_desactivate(bes);

resume:
V4L was not adapted for video playback
MGA_VID was adapted for Matrox card only

What you think about this technology and my previous version?

Best regards! Nick



More information about the MPlayer-cvslog mailing list