Commit 36f1fb3f authored by Laurent Aimar's avatar Laurent Aimar

* some workaround for clock.

parent 551de919
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* mpeg4video.c * mpeg4video.c
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2001, 2002 VideoLAN
* $Id: mpeg4video.c,v 1.3 2003/01/08 10:26:49 fenrir Exp $ * $Id: mpeg4video.c,v 1.4 2003/01/12 04:11:35 fenrir Exp $
* *
* Authors: Laurent Aimar <fenrir@via.ecp.fr> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Eric Petit <titer@videolan.org> * Eric Petit <titer@videolan.org>
...@@ -249,10 +249,11 @@ static void PacketizeThread( packetizer_thread_t *p_pack ) ...@@ -249,10 +249,11 @@ static void PacketizeThread( packetizer_thread_t *p_pack )
p_pack->p_fifo->b_error = 1; p_pack->p_fifo->b_error = 1;
return; return;
} }
if( p_pack->i_pts_start < 0 && p_pes->i_pts > 0 ) if( p_pack->i_pts_start < 0 )
{ {
p_pack->i_pts_start = p_pes->i_pts; p_pack->i_pts_start = p_pes->i_pts;
} }
i_size = p_pes->i_pes_size; i_size = p_pes->i_pes_size;
if( i_size > 0 ) if( i_size > 0 )
{ {
...@@ -357,8 +358,8 @@ static void PacketizeThread( packetizer_thread_t *p_pack ) ...@@ -357,8 +358,8 @@ static void PacketizeThread( packetizer_thread_t *p_pack )
p_bih->biWidth = 0; p_bih->biWidth = 0;
p_bih->biHeight = 0; p_bih->biHeight = 0;
p_bih->biPlanes = 1; p_bih->biPlanes = 1;
p_bih->biBitCount = 0; p_bih->biBitCount = 24;
p_bih->biCompression = 0; /* FIXME */ p_bih->biCompression = 0x64697678; /* "divx" */
p_bih->biSizeImage = 0; p_bih->biSizeImage = 0;
p_bih->biXPelsPerMeter = 0; p_bih->biXPelsPerMeter = 0;
p_bih->biYPelsPerMeter = 0; p_bih->biYPelsPerMeter = 0;
...@@ -387,7 +388,23 @@ static void PacketizeThread( packetizer_thread_t *p_pack ) ...@@ -387,7 +388,23 @@ static void PacketizeThread( packetizer_thread_t *p_pack )
input_ShowPES( p_pack->p_fifo, &p_pes_next ); input_ShowPES( p_pack->p_fifo, &p_pes_next );
if( p_pes_next ) if( p_pes_next )
{ {
p_sout_buffer->i_length = p_pes_next->i_pts - p_pes->i_pts; mtime_t i_gap;
i_gap = p_pes_next->i_pts - p_pes->i_pts;
if( i_gap > 1000000 / 80 ) // too big fps > 80 is no sense
{
i_gap = 1000000 / 25;
p_pack->i_pts_start =
( p_pes->i_pts - p_pack->i_pts_start ) + p_pes_next->i_pts - i_gap;
}
else if( i_gap < 0 )
{
p_pack->i_pts_start =
( p_pes->i_pts - p_pack->i_pts_start ) + p_pes_next->i_pts;
i_gap = 0;
}
p_sout_buffer->i_length = i_gap;
} }
sout_InputSendBuffer( p_pack->p_sout_input, sout_InputSendBuffer( p_pack->p_sout_input,
p_sout_buffer ); p_sout_buffer );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment