/*****************************************************************************
- * lavf.c: x264 libavformat input module
+ * lavf.c: libavformat input
*****************************************************************************
- * Copyright (C) 2009 x264 project
+ * Copyright (C) 2009-2010 x264 project
*
* Authors: Mike Gurlitz <mike.gurlitz@gmail.com>
* Steven Walters <kemuri9@gmail.com>
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
+ *
+ * This program is also available under a commercial proprietary license.
+ * For more information, contact us at licensing@x264.com.
*****************************************************************************/
#include "input.h"
while( i_frame >= h->next_frame )
{
int finished = 0;
- while( !finished && av_read_frame( h->lavf, pkt ) >= 0 )
+ int ret = 0;
+ do
+ {
+ ret = av_read_frame( h->lavf, pkt );
+
if( pkt->stream_index == h->stream_id )
{
+ if( ret < 0 )
+ pkt->size = 0;
+
c->reordered_opaque = pkt->pts;
if( avcodec_decode_video2( c, &frame, &finished, pkt ) < 0 )
x264_cli_log( "lavf", X264_LOG_WARNING, "video decoding failed on frame %d\n", h->next_frame );
}
+ } while( !finished && ret >= 0 );
+
if( !finished )
- {
- if( avcodec_decode_video2( c, &frame, &finished, pkt ) < 0 )
- x264_cli_log( "lavf", X264_LOG_WARNING, "video decoding failed on frame %d\n", h->next_frame );
- if( !finished )
- return -1;
- }
+ return -1;
+
h->next_frame++;
}