Help needed on hollywood+ plugin

Henri Fallon henri at via.ecp.fr
Sat Jun 29 20:34:12 CEST 2002


On Sat, Jun 01, 2002, Henri Fallon wrote:
> I'm currently stuck in writing a plugin for the Hollywood + MPEG2
> decoder PCI card,as the streams begin to play normally but the the input
> reaches masx_alloc about 1 minute after. I think this is related to a
> flaw in the dxr3 drivers (blocking write) but I actually don't really
> understand what is happening.

As nobody seems to answer I may need to be a little more precise :

basically the plugin's design is the same as the lpmcdec : read data
through a getChunk inside a loop. As getChunk blocks when no sufficient 
data is available this should work fine.

The loop :

while( (!p_dxr3_vdec->p_fifo->b_die) && (!p_dxr3_vdec->p_fifo->b_error) )
    {
        send_data(p_dxr3_vdec);

	/* various check about resizing,  etc. */
    }

and the intersting part of send_data :

GetChunk( &p_dxr3_vdec->bit_stream, p_buffer, MAX_IMAGE_SIZE );
i_rc = write( p_dxr3_vdec->i_fd, p_buffer, MAX_IMAGE_SIZE );
if( i_rc < 0 )
    perror("Write error !");


The thing is I'll never know the return code as the write() does not exit.

However, after about one minute the write() to the em8300 video device
blocks and the input stack gets full. This happens when I don't use PTS
at all. 

I tried to use PTS this way :

    CurrentPTS( & p_dxr3_vdec->bit_stream, &i_pts, NULL );
    if( i_pts )
    {
        i_rc = ioctl( p_dxr3_vdec->i_fd, EM8300_IOCTL_VIDEO_SETPTS, 
                      &i_pts );
        if( i_rc == -1 )
            intf_WarnMsg( 3, "DXR3: cannot set pts" );
        p_dxr3_vdec->bit_stream.i_pts = 0;
    }

it get stuck after 3 or 4 seconds.

If someone has an idea ...

-- 
henri 

-- 
This is the vlc-devel mailing-list, see http://www.videolan.org/vlc/
To unsubscribe, please read http://www.videolan.org/lists.html
If you are in trouble, please contact <postmaster at videolan.org>



More information about the vlc-devel mailing list