2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  FFmpeg  main 
							 
						 
					
						
							
								
									
										
										
										
											2003-06-07 18:34:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Copyright  ( c )  2000 - 2003  Fabrice  Bellard 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2006-10-07 15:30:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  This  file  is  part  of  FFmpeg . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  FFmpeg  is  free  software ;  you  can  redistribute  it  and / or 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-25 22:25:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  modify  it  under  the  terms  of  the  GNU  Lesser  General  Public 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  License  as  published  by  the  Free  Software  Foundation ;  either 
							 
						 
					
						
							
								
									
										
										
										
											2006-10-07 15:30:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  version  2.1  of  the  License ,  or  ( at  your  option )  any  later  version . 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2006-10-07 15:30:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  FFmpeg  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-25 22:25:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the  GNU 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Lesser  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-25 22:25:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  Lesser  General  Public 
							 
						 
					
						
							
								
									
										
										
										
											2006-10-07 15:30:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  License  along  with  FFmpeg ;  if  not ,  write  to  the  Free  Software 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-12 22:43:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Foundation ,  Inc . ,  51  Franklin  Street ,  Fifth  Floor ,  Boston ,  MA  02110 - 1301  USA 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-10 14:34:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-14 22:01:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* needed for usleep() */  
						 
					
						
							
								
									
										
										
										
											2008-09-29 06:22:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define _XOPEN_SOURCE 600 
  
						 
					
						
							
								
									
										
										
										
											2008-08-14 22:01:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-07-02 07:43:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "config.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <ctype.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <string.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <math.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <stdlib.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <errno.h> 
  
						 
					
						
							
								
									
										
										
										
											2006-11-22 12:15:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <signal.h> 
  
						 
					
						
							
								
									
										
										
										
											2004-05-12 16:51:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <limits.h> 
  
						 
					
						
							
								
									
										
										
										
											2008-08-14 22:01:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <unistd.h> 
  
						 
					
						
							
								
									
										
										
										
											2008-05-09 11:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "libavformat/avformat.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "libavdevice/avdevice.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "libswscale/swscale.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "libavcodec/opt.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-07-31 13:11:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "libavcodec/audioconvert.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-05-22 22:51:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "libavcodec/colorspace.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-05-09 11:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "libavutil/fifo.h" 
  
						 
					
						
							
								
									
										
										
										
											2010-01-30 19:10:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "libavutil/pixdesc.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-05-09 11:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "libavutil/avstring.h" 
  
						 
					
						
							
								
									
										
										
										
											2010-03-09 15:10:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "libavutil/libm.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-05-09 11:56:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "libavformat/os_support.h" 
  
						 
					
						
							
								
									
										
										
										
											2001-08-15 22:29:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_SYS_RESOURCE_H 
  
						 
					
						
							
								
									
										
										
										
											2008-05-11 11:17:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <sys/types.h> 
  
						 
					
						
							
								
									
										
										
										
											2010-02-22 22:21:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <sys/time.h> 
  
						 
					
						
							
								
									
										
										
										
											2008-05-08 00:44:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <sys/resource.h> 
  
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# elif HAVE_GETPROCESSTIMES 
  
						 
					
						
							
								
									
										
										
										
											2007-07-13 16:11:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <windows.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2010-02-22 22:21:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_GETPROCESSMEMORYINFO 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <windows.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <psapi.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2007-07-13 16:11:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_SYS_SELECT_H 
  
						 
					
						
							
								
									
										
										
										
											2008-09-26 02:13:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <sys/select.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_TERMIOS_H 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  <fcntl.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <sys/ioctl.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <sys/time.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <termios.h> 
  
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# elif HAVE_CONIO_H 
  
						 
					
						
							
								
									
										
										
										
											2007-07-11 14:07:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <conio.h> 
  
						 
					
						
							
								
									
										
										
										
											2001-08-13 21:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2002-05-25 22:25:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <time.h> 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-06-07 18:34:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "cmdutils.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-09-22 17:50:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# undef NDEBUG 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <assert.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-21 23:36:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  char  program_name [ ]  =  " FFmpeg " ;  
						 
					
						
							
								
									
										
										
										
											2008-05-29 08:48:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								const  int  program_birth_year  =  2000 ;  
						 
					
						
							
								
									
										
										
										
											2007-09-27 06:38:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* select an input stream for an output stream */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  struct  AVStreamMap  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  file_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  stream_index ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  sync_file_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  sync_stream_index ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  AVStreamMap ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/** select an input file for an output file */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  struct  AVMetaDataMap  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  out_file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  in_file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  AVMetaDataMap ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-01 15:12:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  const  OptionDef  options [ ] ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-27 19:11:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define MAX_FILES 100 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-05 15:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  const  char  * last_asked_format  =  NULL ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  AVFormatContext  * input_files [ MAX_FILES ] ;  
						 
					
						
							
								
									
										
										
										
											2004-06-11 22:03:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int64_t  input_files_ts_offset [ MAX_FILES ] ;  
						 
					
						
							
								
									
										
										
										
											2008-07-13 22:55:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  double  input_files_ts_scale [ MAX_FILES ] [ MAX_STREAMS ] ;  
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  AVCodec  * input_codecs [ MAX_FILES * MAX_STREAMS ] ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  int  nb_input_files  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  nb_icodecs ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  AVFormatContext  * output_files [ MAX_FILES ] ;  
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  AVCodec  * output_codecs [ MAX_FILES * MAX_STREAMS ] ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  int  nb_output_files  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  nb_ocodecs ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 13:38:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  AVStreamMap  stream_maps [ MAX_FILES * MAX_STREAMS ] ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  int  nb_stream_maps ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  AVMetaDataMap  meta_data_maps [ MAX_FILES ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  nb_meta_data_maps ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-01-04 13:27:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  frame_width   =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  frame_height  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2003-04-29 01:51:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  float  frame_aspect_ratio  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2005-04-25 18:29:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  enum  PixelFormat  frame_pix_fmt  =  PIX_FMT_NONE ;  
						 
					
						
							
								
									
										
										
										
											2008-07-31 13:11:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  enum  SampleFormat  audio_sample_fmt  =  SAMPLE_FMT_NONE ;  
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  frame_padtop   =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  frame_padbottom  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  frame_padleft   =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  frame_padright  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  padcolor [ 3 ]  =  { 16 , 128 , 128 } ;  /* default to black */  
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  frame_topBand   =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  frame_bottomBand  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  frame_leftBand   =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  frame_rightBand  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  max_frames [ 4 ]  =  { INT_MAX ,  INT_MAX ,  INT_MAX ,  INT_MAX } ;  
						 
					
						
							
								
									
										
										
										
											2008-07-13 21:59:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  AVRational  frame_rate ;  
						 
					
						
							
								
									
										
										
										
											2003-10-07 11:32:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  float  video_qscale  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2003-10-31 10:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  uint16_t  * intra_matrix  =  NULL ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uint16_t  * inter_matrix  =  NULL ;  
						 
					
						
							
								
									
										
										
										
											2008-01-02 10:22:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  const  char  * video_rc_override_string = NULL ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  int  video_disable  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2005-03-17 01:25:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  video_discard  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  * video_codec_name  =  NULL ;  
						 
					
						
							
								
									
										
										
										
											2004-10-16 01:51:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  video_codec_tag  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2009-12-16 12:08:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  * video_language  =  NULL ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  int  same_quality  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2001-08-11 18:58:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  do_deinterlace  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2003-12-30 16:07:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  top_field_first  =  - 1 ;  
						 
					
						
							
								
									
										
										
										
											2004-04-23 19:06:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  me_threshold  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2004-06-05 21:08:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  intra_dc_precision  =  8 ;  
						 
					
						
							
								
									
										
										
										
											2006-07-13 21:13:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  loop_input  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2005-06-18 01:52:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  loop_output  =  AVFMT_NOOUTPUTLOOP ;  
						 
					
						
							
								
									
										
										
										
											2005-12-18 20:01:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  qp_hist  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  intra_only  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  audio_sample_rate  =  44100 ;  
						 
					
						
							
								
									
										
										
										
											2008-11-29 19:32:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int64_t  channel_layout  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2005-08-21 20:27:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define QSCALE_NONE -99999 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  float  audio_qscale  =  QSCALE_NONE ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  int  audio_disable  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  audio_channels  =  1 ;  
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char   * audio_codec_name  =  NULL ;  
						 
					
						
							
								
									
										
										
										
											2004-10-16 01:51:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  audio_codec_tag  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  * audio_language  =  NULL ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  subtitle_disable  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  * subtitle_codec_name  =  NULL ;  
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  * subtitle_language  =  NULL ;  
						 
					
						
							
								
									
										
										
										
											2009-03-11 08:14:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  subtitle_codec_tag  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-10-16 21:27:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  float  mux_preload =  0.5 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  float  mux_max_delay =  0.7 ;  
						 
					
						
							
								
									
										
										
										
											2004-10-06 22:29:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-18 22:23:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int64_t  recording_time  =  INT64_MAX ;  
						 
					
						
							
								
									
										
										
										
											2003-10-21 10:55:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int64_t  start_time  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2004-04-06 06:31:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int64_t  rec_timestamp  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2004-06-11 22:03:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int64_t  input_ts_offset  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  int  file_overwrite  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2009-03-01 14:54:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  metadata_count ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  AVMetadataTag  * metadata ;  
						 
					
						
							
								
									
										
										
										
											2001-07-30 23:19:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  do_benchmark  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2001-09-23 17:14:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  do_hex_dump  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2003-11-10 18:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  do_pkt_dump  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2002-02-26 22:14:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  do_psnr  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2002-10-10 17:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  do_pass  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2008-12-26 19:25:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  * pass_logfilename_prefix  =  NULL ;  
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  audio_stream_copy  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  video_stream_copy  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  subtitle_stream_copy  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2008-07-13 16:19:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  video_sync_method =  - 1 ;  
						 
					
						
							
								
									
										
										
										
											2004-06-30 14:47:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  audio_sync_method =  0 ;  
						 
					
						
							
								
									
										
										
										
											2007-08-07 00:03:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  float  audio_drift_threshold =  0.1 ;  
						 
					
						
							
								
									
										
										
										
											2004-06-12 03:41:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  copy_ts =  0 ;  
						 
					
						
							
								
									
										
										
										
											2008-12-14 15:02:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_shortest  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2005-06-27 00:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  video_global_header  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2007-04-25 13:55:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  * vstats_filename ;  
						 
					
						
							
								
									
										
										
										
											2007-09-06 20:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  FILE  * vstats_file ;  
						 
					
						
							
								
									
										
										
										
											2007-10-27 18:46:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_programid  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2008-12-22 08:22:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  copy_initial_nonkeyframes  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2002-10-10 17:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-03-07 12:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  rate_emu  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-01-23 18:44:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int   video_channel  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2007-05-21 09:50:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  char  * video_standard ;  
						 
					
						
							
								
									
										
										
										
											2003-01-23 10:31:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-03-23 02:10:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  audio_volume  =  256 ;  
						 
					
						
							
								
									
										
										
										
											2003-01-22 22:40:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 23:23:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  exit_on_error  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2003-08-29 20:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  using_stdin  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2003-09-03 12:13:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  verbose  =  1 ;  
						 
					
						
							
								
									
										
										
										
											2004-02-13 17:54:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  thread_count =  1 ;  
						 
					
						
							
								
									
										
										
										
											2004-03-14 19:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  q_pressed  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2004-04-15 13:57:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int64_t  video_size  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int64_t  audio_size  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int64_t  extra_size  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2004-06-11 22:03:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  nb_frames_dup  =  0 ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  nb_frames_drop  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2004-06-18 03:03:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  input_sync ;  
						 
					
						
							
								
									
										
										
										
											2008-12-14 15:02:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  uint64_t  limit_filesize  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2008-09-28 17:34:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  force_fps  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2003-08-29 20:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-11-11 18:09:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  pgmyuv_compatibility_hack = 0 ;  
						 
					
						
							
								
									
										
										
										
											2007-08-07 00:26:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  float  dts_delta_threshold  =  10 ;  
						 
					
						
							
								
									
										
										
										
											2004-11-11 18:09:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-05 04:02:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  unsigned  int  sws_flags  =  SWS_BICUBIC ;  
						 
					
						
							
								
									
										
										
										
											2006-08-02 11:50:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-06-26 15:52:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int64_t  timer_start ;  
						 
					
						
							
								
									
										
										
										
											2005-09-11 11:10:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 03:55:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  uint8_t  * audio_buf ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uint8_t  * audio_out ;  
						 
					
						
							
								
									
										
										
										
											2009-12-08 14:48:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								unsigned  int  allocated_audio_out_size ,  allocated_audio_buf_size ;  
						 
					
						
							
								
									
										
										
										
											2009-04-13 03:55:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  short  * samples ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  AVBitStreamFilterContext  * video_bitstream_filters = NULL ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  AVBitStreamFilterContext  * audio_bitstream_filters = NULL ;  
						 
					
						
							
								
									
										
										
										
											2008-01-28 21:13:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  AVBitStreamFilterContext  * subtitle_bitstream_filters = NULL ;  
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  AVBitStreamFilterContext  * bitstream_filters [ MAX_FILES ] [ MAX_STREAMS ] ;  
						 
					
						
							
								
									
										
										
										
											2004-11-11 18:09:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-26 19:25:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define DEFAULT_PASS_LOGFILENAME_PREFIX "ffmpeg2pass" 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								struct  AVInputStream ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								typedef  struct  AVOutputStream  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  file_index ;           /* file index */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  index ;                /* stream index in the output file */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  source_index ;         /* AVInputStream index */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVStream  * st ;             /* stream in the output file */ 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  encoding_needed ;      /* true if encoding needed for this stream */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  frame_number ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* input pts and corresponding output pts
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       for  A / V  sync  */ 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    //double sync_ipts;        /* dts from the AVPacket of the demuxer in second units */
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    struct  AVInputStream  * sync_ist ;  /* input stream to sync against */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int64_t  sync_opts ;        /* output frame counter, could be changed to some true timestamp */  //FIXME look at frame_number
 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* video only */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  video_resample ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-17 19:41:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVFrame  pict_tmp ;       /* temporary image for resampling */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-02 11:50:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    struct  SwsContext  * img_resample_ctx ;  /* for image resampling */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  resample_height ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  resample_width ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-26 01:08:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  resample_pix_fmt ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-12-05 09:00:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* full frame size of first frame */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  original_height ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  original_width ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* cropping area sizes */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  video_crop ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  topBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  bottomBand ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-12-05 09:00:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  leftBand ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  rightBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* cropping area of first frame */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  original_topBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  original_bottomBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  original_leftBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  original_rightBand ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* padding area sizes */ 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  video_pad ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  padtop ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  padbottom ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  padleft ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  padright ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* audio only */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  audio_resample ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ReSampleContext  * resample ;  /* for audio resampling */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  reformat_pair ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVAudioConvert  * reformat_ctx ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-08 14:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVFifoBuffer  * fifo ;      /* for compression: one audio fifo per codec */ 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-10 17:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    FILE  * logfile ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  AVOutputStream ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  struct  AVInputStream  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  file_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVStream  * st ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  discard ;              /* true if stream data should be discarded */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  decoding_needed ;      /* true if the packets must be decoded in 'raw_fifo' */ 
							 
						 
					
						
							
								
									
										
										
										
											2003-02-11 16:35:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int64_t  sample_index ;       /* current sample */ 
							 
						 
					
						
							
								
									
										
										
										
											2003-03-07 12:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int64_t        start ;      /* time when read started */ 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-10 18:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int64_t        next_pts ;   /* synthetic pts for cases where pkt.pts
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                is  not  defined  */ 
							 
						 
					
						
							
								
									
										
										
										
											2003-07-30 22:37:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int64_t        pts ;        /* current pts */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 17:53:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  is_start ;             /* is 1 at the start and after a discontinuity */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-27 13:27:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  showed_multi_packet_warning ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-08 09:04:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  is_past_recording_time ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  AVInputStream ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								typedef  struct  AVInputFile  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  eof_reached ;       /* true if eof reached */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  ist_index ;         /* index of first stream in ist_table */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  buffer_size ;       /* current total buffer size */ 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  nb_streams ;        /* nb streams we are aware of */ 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  AVInputFile ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_TERMIOS_H 
  
						 
					
						
							
								
									
										
										
										
											2001-08-13 21:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* init terminal so that we can grab keys */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  struct  termios  oldtty ;  
						 
					
						
							
								
									
										
										
										
											2010-03-20 01:02:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  term_exit ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-03-20 01:02:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_TERMIOS_H 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    tcsetattr  ( 0 ,  TCSANOW ,  & oldtty ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-19 16:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2010-03-20 01:02:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-07-27 13:01:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  volatile  int  received_sigterm  =  0 ;  
						 
					
						
							
								
									
										
										
										
											2003-04-10 18:21:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								sigterm_handler ( int  sig )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    received_sigterm  =  sig ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    term_exit ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								static  void  term_init ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_TERMIOS_H 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    struct  termios  tty ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tcgetattr  ( 0 ,  & tty ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    oldtty  =  tty ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-19 16:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    atexit ( term_exit ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . c_iflag  & =  ~ ( IGNBRK | BRKINT | PARMRK | ISTRIP 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                          | INLCR | IGNCR | ICRNL | IXON ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . c_oflag  | =  OPOST ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . c_lflag  & =  ~ ( ECHO | ECHONL | ICANON | IEXTEN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . c_cflag  & =  ~ ( CSIZE | PARENB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . c_cflag  | =  CS8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . c_cc [ VMIN ]  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tty . c_cc [ VTIME ]  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    tcsetattr  ( 0 ,  TCSANOW ,  & tty ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-11-22 12:15:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    signal ( SIGQUIT ,  sigterm_handler ) ;  /* Quit (POSIX).  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-04-10 18:21:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    signal ( SIGINT  ,  sigterm_handler ) ;  /* Interrupt (ANSI).  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    signal ( SIGTERM ,  sigterm_handler ) ;  /* Termination (ANSI).  */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-20 06:42:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifdef SIGXCPU 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    signal ( SIGXCPU ,  sigterm_handler ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if CONFIG_BEOS_NETSERVER 
  
						 
					
						
							
								
									
										
										
										
											2002-11-02 10:35:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    fcntl ( 0 ,  F_SETFL ,  fcntl ( 0 ,  F_GETFL )  |  O_NONBLOCK ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* read a key without blocking */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  read_key ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_TERMIOS_H 
  
						 
					
						
							
								
									
										
										
										
											2002-11-02 10:35:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  n  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    unsigned  char  ch ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if !CONFIG_BEOS_NETSERVER 
  
						 
					
						
							
								
									
										
										
										
											2002-11-02 10:35:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    struct  timeval  tv ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    fd_set  rfds ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FD_ZERO ( & rfds ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FD_SET ( 0 ,  & rfds ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tv . tv_sec  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    tv . tv_usec  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    n  =  select ( 1 ,  & rfds ,  NULL ,  NULL ,  & tv ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-11-02 10:35:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  ( n  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-30 02:38:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        n  =  read ( 0 ,  & ch ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( n  = =  1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            return  ch ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-30 02:38:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  n ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# elif HAVE_CONIO_H 
  
						 
					
						
							
								
									
										
										
										
											2007-07-11 14:07:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( kbhit ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return ( getch ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-11-22 12:15:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-03-14 19:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  decode_interrupt_cb ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  q_pressed  | |  ( q_pressed  =  read_key ( )  = =  ' q ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  av_exit ( int  ret )  
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:31:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* close files */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_output_files ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* maybe av_close_output_file ??? */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        AVFormatContext  * s  =  output_files [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  j ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-21 01:22:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! ( s - > oformat - > flags  &  AVFMT_NOFILE )  & &  s - > pb ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:31:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            url_fclose ( s - > pb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( j = 0 ; j < s - > nb_streams ; j + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-06 22:11:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_metadata_free ( & s - > streams [ j ] - > metadata ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:31:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_free ( s - > streams [ j ] - > codec ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_free ( s - > streams [ j ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-06 22:11:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for ( j = 0 ; j < s - > nb_programs ; j + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_metadata_free ( & s - > programs [ j ] - > metadata ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( j = 0 ; j < s - > nb_chapters ; j + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_metadata_free ( & s - > chapters [ j ] - > metadata ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_metadata_free ( & s - > metadata ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:31:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_free ( s ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_input_files ; i + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_close_input_file ( input_files [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( intra_matrix ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( inter_matrix ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( vstats_file ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fclose ( vstats_file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( vstats_filename ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( opt_names ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( video_codec_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( audio_codec_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( subtitle_codec_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( video_standard ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if CONFIG_POWERPC_PERF 
  
						 
					
						
							
								
									
										
										
										
											2008-12-03 15:23:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    void  powerpc_display_perf_report ( void ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:31:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    powerpc_display_perf_report ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* CONFIG_POWERPC_PERF */ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( i = 0 ; i < AVMEDIA_TYPE_NB ; i + + ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 03:47:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_free ( avcodec_opts [ i ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( avformat_opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( sws_opts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 03:55:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_free ( audio_buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free ( audio_out ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-08 14:48:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    allocated_audio_buf_size =  allocated_audio_out_size =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 03:55:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_free ( samples ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 03:47:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:31:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( received_sigterm )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            " Received signal %d: terminating. \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ( int )  received_sigterm ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        exit  ( 255 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    exit ( ret ) ;  /* not all OS-es handle main() return value */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:31:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 19:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  choose_sample_fmt ( AVStream  * st ,  AVCodec  * codec )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( codec  & &  codec - > sample_fmts ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  enum  SampleFormat  * p =  codec - > sample_fmts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( ;  * p ! = - 1 ;  p + + ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( * p  = =  st - > codec - > sample_fmt ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( * p  = =  - 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            st - > codec - > sample_fmt  =  codec - > sample_fmts [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  choose_pixel_fmt ( AVStream  * st ,  AVCodec  * codec )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( codec  & &  codec - > pix_fmts ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  enum  PixelFormat  * p =  codec - > pix_fmts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( ;  * p ! = - 1 ;  p + + ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( * p  = =  st - > codec - > pix_fmt ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( * p  = =  - 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           & &  ! (    st - > codec - > codec_id = = CODEC_ID_MJPEG 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                & &  st - > codec - > strict_std_compliance  < =  FF_COMPLIANCE_INOFFICIAL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                & &  (    st - > codec - > pix_fmt  = =  PIX_FMT_YUV420P 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    | |  st - > codec - > pix_fmt  = =  PIX_FMT_YUV422P ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            st - > codec - > pix_fmt  =  codec - > pix_fmts [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  read_ffserver_streams ( AVFormatContext  * s ,  const  char  * filename )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  i ,  err ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    AVFormatContext  * ic ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-09 00:24:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  nopts  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    err  =  av_open_input_file ( & ic ,  filename ,  NULL ,  FFM_PACKET_SIZE ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( err  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  err ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* copy stream format */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    s - > nb_streams  =  ic - > nb_streams ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < ic - > nb_streams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        AVStream  * st ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-12-04 10:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-10-12 23:38:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // FIXME: a more elegant solution is needed
 
							 
						 
					
						
							
								
									
										
										
										
											2003-07-03 17:02:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        st  =  av_mallocz ( sizeof ( AVStream ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        memcpy ( st ,  ic - > streams [ i ] ,  sizeof ( AVStream ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-10-12 23:38:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        st - > codec  =  avcodec_alloc_context ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-12 17:22:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! st - > codec )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print_error ( filename ,  AVERROR ( ENOMEM ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-10-12 23:38:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        memcpy ( st - > codec ,  ic - > streams [ i ] - > codec ,  sizeof ( AVCodecContext ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        s - > streams [ i ]  =  st ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-12 01:43:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( st - > codec - > codec_type  = =  AVMEDIA_TYPE_AUDIO  & &  audio_stream_copy ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-12 01:43:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            st - > stream_copy  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        else  if  ( st - > codec - > codec_type  = =  AVMEDIA_TYPE_VIDEO  & &  video_stream_copy ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-12 01:43:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            st - > stream_copy  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 01:35:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( ! st - > codec - > thread_count ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            st - > codec - > thread_count  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( st - > codec - > thread_count > 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            avcodec_thread_init ( st - > codec ,  st - > codec - > thread_count ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-06-09 00:24:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( st - > codec - > flags  &  CODEC_FLAG_BITEXACT ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            nopts  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-06-09 00:24:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! nopts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        s - > timestamp  =  av_gettime ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    av_close_input_file ( ic ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  double  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								get_sync_ipts ( const  AVOutputStream  * ost )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  AVInputStream  * ist  =  ost - > sync_ist ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-03 19:21:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  ( double ) ( ist - > pts  -  start_time ) / AV_TIME_BASE ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  write_frame ( AVFormatContext  * s ,  AVPacket  * pkt ,  AVCodecContext  * avctx ,  AVBitStreamFilterContext  * bsfc ) {  
						 
					
						
							
								
									
										
										
										
											2007-11-01 01:59:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    while ( bsfc ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        AVPacket  new_pkt =  * pkt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  a =  av_bitstream_filter_filter ( bsfc ,  avctx ,  NULL , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                          & new_pkt . data ,  & new_pkt . size , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                          pkt - > data ,  pkt - > size , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                          pkt - > flags  &  PKT_FLAG_KEY ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-01-21 13:36:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( a > 0 ) { 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_free_packet ( pkt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            new_pkt . destruct =  av_destruct_packet ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-01-21 13:36:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  if ( a < 0 ) { 
							 
						 
					
						
							
								
									
										
										
										
											2008-01-22 08:52:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " %s failed for stream %d, codec %s " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    bsfc - > filter - > name ,  pkt - > stream_index , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    avctx - > codec  ?  avctx - > codec - > name  :  " copy " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-01-21 13:36:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            print_error ( " " ,  a ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 23:23:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( exit_on_error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        * pkt =  new_pkt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bsfc =  bsfc - > next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-11-01 01:59:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ret =  av_interleaved_write_frame ( s ,  pkt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ret  <  0 ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        print_error ( " av_interleaved_write_frame() " ,  ret ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-01 01:59:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-01-11 05:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define MAX_AUDIO_PACKET_SIZE (128 * 1024) 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  do_audio_out ( AVFormatContext  * s ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         AVOutputStream  * ost , 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                         AVInputStream  * ist , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         unsigned  char  * buf ,  int  size ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2003-02-11 16:35:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    uint8_t  * buftmp ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-08 14:28:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int64_t  audio_out_size ,  audio_buf_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-23 01:25:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int64_t  allocated_for_size =  size ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-03-20 01:32:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    int  size_out ,  frame_bytes ,  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVCodecContext  * enc =  ost - > st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-15 07:04:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVCodecContext  * dec =  ist - > st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 10:18:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  osize =  av_get_bits_per_sample_format ( enc - > sample_fmt ) / 8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  isize =  av_get_bits_per_sample_format ( dec - > sample_fmt ) / 8 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-08 14:28:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  int  coded_bps  =  av_get_bits_per_sample ( enc - > codec - > id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-23 01:25:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								need_realloc :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    audio_buf_size =  ( allocated_for_size  +  isize * dec - > channels  -  1 )  /  ( isize * dec - > channels ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-08 14:28:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    audio_buf_size =  ( audio_buf_size * enc - > sample_rate  +  dec - > sample_rate )  /  dec - > sample_rate ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 19:28:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    audio_buf_size =  audio_buf_size * 2  +  10000 ;  //safety factors for the deprecated resampling API
 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-08 14:28:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    audio_buf_size * =  osize * enc - > channels ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    audio_out_size =  FFMAX ( audio_buf_size ,  enc - > frame_size  *  osize  *  enc - > channels ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( coded_bps  >  8 * osize ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        audio_out_size =  audio_out_size  *  coded_bps  /  ( 8 * osize ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    audio_out_size  + =  FF_MIN_BUFFER_SIZE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( audio_out_size  >  INT_MAX  | |  audio_buf_size  >  INT_MAX ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Buffer sizes too large \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-08 14:48:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_fast_malloc ( & audio_buf ,  & allocated_audio_buf_size ,  audio_buf_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_fast_malloc ( & audio_out ,  & allocated_audio_out_size ,  audio_out_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-08 14:50:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! audio_buf  | |  ! audio_out ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Out of memory in do_audio_out \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2003-03-20 01:32:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-12-15 07:04:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( enc - > channels  ! =  dec - > channels ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ost - > audio_resample  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ost - > audio_resample  & &  ! ost - > resample )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-11 22:57:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( dec - > sample_fmt  ! =  SAMPLE_FMT_S16 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Warning, using s16 intermediate sample format for resampling \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ost - > resample  =  av_audio_resample_init ( enc - > channels ,     dec - > channels , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                               enc - > sample_rate ,  dec - > sample_rate , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                               enc - > sample_fmt ,   dec - > sample_fmt , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                               16 ,  10 ,  0 ,  0.8 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-15 07:04:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! ost - > resample )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Can not resample %d channels @ %d Hz to %d channels @ %d Hz \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    dec - > channels ,  dec - > sample_rate , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    enc - > channels ,  enc - > sample_rate ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-15 07:04:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define MAKE_SFMT_PAIR(a,b) ((a)+SAMPLE_FMT_NB*(b)) 
  
						 
					
						
							
								
									
										
										
										
											2009-02-11 22:57:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! ost - > audio_resample  & &  dec - > sample_fmt ! = enc - > sample_fmt  & & 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        MAKE_SFMT_PAIR ( enc - > sample_fmt , dec - > sample_fmt ) ! = ost - > reformat_pair )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ost - > reformat_ctx ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_audio_convert_free ( ost - > reformat_ctx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ost - > reformat_ctx  =  av_audio_convert_alloc ( enc - > sample_fmt ,  1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                   dec - > sample_fmt ,  1 ,  NULL ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! ost - > reformat_ctx )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Cannot convert %s sample format to %s sample format \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                avcodec_get_sample_fmt_name ( dec - > sample_fmt ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                avcodec_get_sample_fmt_name ( enc - > sample_fmt ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ost - > reformat_pair = MAKE_SFMT_PAIR ( enc - > sample_fmt , dec - > sample_fmt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 14:47:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( audio_sync_method ) { 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        double  delta  =  get_sync_ipts ( ost )  *  enc - > sample_rate  -  ost - > sync_opts 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-08 14:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                -  av_fifo_size ( ost - > fifo ) / ( ost - > st - > codec - > channels  *  2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        double  idelta =  delta * ist - > st - > codec - > sample_rate  /  enc - > sample_rate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  byte_delta =  ( ( int ) idelta ) * 2 * ist - > st - > codec - > channels ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 17:53:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 14:47:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        //FIXME resample delay
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( fabs ( delta )  >  50 ) { 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-07 00:03:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( ist - > is_start  | |  fabs ( delta )  >  audio_drift_threshold * enc - > sample_rate ) { 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 17:53:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( byte_delta  <  0 ) { 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-02 13:25:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    byte_delta =  FFMAX ( byte_delta ,  - size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 17:53:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    size  + =  byte_delta ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    buf   - =  byte_delta ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if ( verbose  >  2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        fprintf ( stderr ,  " discarding %d audio samples \n " ,  ( int ) - delta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if ( ! size ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ist - > is_start = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    static  uint8_t  * input_tmp =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    input_tmp =  av_realloc ( input_tmp ,  byte_delta  +  size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-23 01:25:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if ( byte_delta  >  allocated_for_size  -  size ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        allocated_for_size =  byte_delta  +  ( int64_t ) size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        goto  need_realloc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ist - > is_start = 0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 17:53:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    memset ( input_tmp ,  0 ,  byte_delta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    memcpy ( input_tmp  +  byte_delta ,  buf ,  size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    buf =  input_tmp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    size  + =  byte_delta ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if ( verbose  >  2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        fprintf ( stderr ,  " adding %d audio samples of silence \n " ,  ( int ) delta ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } else  if ( audio_sync_method > 1 ) { 
							 
						 
					
						
							
								
									
										
										
										
											2007-02-25 10:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                int  comp =  av_clip ( delta ,  - audio_sync_method ,  audio_sync_method ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 17:53:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                assert ( ost - > audio_resample ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if ( verbose  >  2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    fprintf ( stderr ,  " compensating audio timestamp drift:%f compensation:%d in:%d \n " ,  delta ,  comp ,  enc - > sample_rate ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-08 14:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//                fprintf(stderr, "drift:%f len:%d opts:%"PRId64" ipts:%"PRId64" fifo:%d\n", delta, -1, ost->sync_opts, (int64_t)(get_sync_ipts(ost) * enc->sample_rate), av_fifo_size(ost->fifo)/(ost->st->codec->channels * 2));
  
						 
					
						
							
								
									
										
										
										
											2004-06-30 17:53:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                av_resample_compensate ( * ( struct  AVResampleContext * * ) ost - > resample ,  comp ,  enc - > sample_rate ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 14:47:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } else 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ost - > sync_opts =  lrintf ( get_sync_ipts ( ost )  *  enc - > sample_rate ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-08 14:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        -  av_fifo_size ( ost - > fifo ) / ( ost - > st - > codec - > channels  *  2 ) ;  //FIXME wrong
 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ost - > audio_resample )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        buftmp  =  audio_buf ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        size_out  =  audio_resample ( ost - > resample , 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                                  ( short  * ) buftmp ,  ( short  * ) buf , 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 10:18:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                  size  /  ( ist - > st - > codec - > channels  *  isize ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        size_out  =  size_out  *  enc - > channels  *  osize ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        buftmp  =  buf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        size_out  =  size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-11 22:57:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! ost - > audio_resample  & &  dec - > sample_fmt ! = enc - > sample_fmt )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  void  * ibuf [ 6 ] =  { buftmp } ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-07 16:26:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        void  * obuf [ 6 ] =  { audio_buf } ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 10:18:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        int  istride [ 6 ] =  { isize } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  ostride [ 6 ] =  { osize } ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        int  len =  size_out / istride [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( av_audio_convert ( ost - > reformat_ctx ,  obuf ,  ostride ,  ibuf ,  istride ,  len ) < 0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            printf ( " av_audio_convert() failed \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 23:23:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( exit_on_error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-07 16:26:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        buftmp  =  audio_buf ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 10:18:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        size_out  =  len * osize ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* now encode as many frames as possible */ 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-23 17:14:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( enc - > frame_size  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        /* output resampled raw samples */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-08 14:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( av_fifo_realloc2 ( ost - > fifo ,  av_fifo_size ( ost - > fifo )  +  size_out )  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-19 18:49:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " av_fifo_realloc2() failed \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-08 14:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_fifo_generic_write ( ost - > fifo ,  buftmp ,  size_out ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 10:18:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        frame_bytes  =  enc - > frame_size  *  osize  *  enc - > channels ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-08 14:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        while  ( av_fifo_size ( ost - > fifo )  > =  frame_bytes )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            AVPacket  pkt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_init_packet ( & pkt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-09 17:47:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_fifo_generic_read ( ost - > fifo ,  audio_buf ,  frame_bytes ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-25 22:20:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-02-17 21:31:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            //FIXME pass ost->sync_opts as AVFrame.pts in avcodec_encode_audio()
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ret  =  avcodec_encode_audio ( enc ,  audio_out ,  audio_out_size , 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-23 17:14:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                       ( short  * ) audio_buf ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-11 16:15:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ret  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                fprintf ( stderr ,  " Audio encoding failed \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-15 13:57:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            audio_size  + =  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            pkt . stream_index =  ost - > index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pkt . data =  audio_out ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pkt . size =  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-09-11 08:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( enc - > coded_frame  & &  enc - > coded_frame - > pts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                pkt . pts =  av_rescale_q ( enc - > coded_frame - > pts ,  enc - > time_base ,  ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            pkt . flags  | =  PKT_FLAG_KEY ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            write_frame ( s ,  & pkt ,  ost - > st - > codec ,  bitstream_filters [ ost - > file_index ] [ pkt . stream_index ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 14:47:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ost - > sync_opts  + =  enc - > frame_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        AVPacket  pkt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_init_packet ( & pkt ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 14:47:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 10:18:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ost - > sync_opts  + =  size_out  /  ( osize  *  enc - > channels ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 14:47:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-09-23 17:14:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* output a pcm frame */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 10:18:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* determine the size of the coded buffer */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        size_out  / =  osize ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( coded_bps ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-08 14:10:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            size_out  =  size_out * coded_bps / 8 ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 10:18:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-08 14:18:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( size_out  >  audio_out_size ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Internal error, buffer size too small \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-02-17 21:31:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        //FIXME pass ost->sync_opts as AVFrame.pts in avcodec_encode_audio()
 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ret  =  avcodec_encode_audio ( enc ,  audio_out ,  size_out , 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                   ( short  * ) buftmp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-11 16:15:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ret  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Audio encoding failed \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-15 13:57:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        audio_size  + =  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pkt . stream_index =  ost - > index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pkt . data =  audio_out ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pkt . size =  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-09-11 08:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( enc - > coded_frame  & &  enc - > coded_frame - > pts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            pkt . pts =  av_rescale_q ( enc - > coded_frame - > pts ,  enc - > time_base ,  ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pkt . flags  | =  PKT_FLAG_KEY ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        write_frame ( s ,  & pkt ,  ost - > st - > codec ,  bitstream_filters [ ost - > file_index ] [ pkt . stream_index ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-11-20 03:06:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  pre_process_video_frame ( AVInputStream  * ist ,  AVPicture  * picture ,  void  * * bufp )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVCodecContext  * dec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVPicture  * picture2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVPicture  picture_tmp ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-02-11 16:35:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    uint8_t  * buf  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-11-20 03:06:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    dec  =  ist - > st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-11-20 03:06:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* deinterlace : must be done before any resize */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 14:09:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( do_deinterlace )  { 
							 
						 
					
						
							
								
									
										
										
										
											2002-11-20 03:06:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        int  size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* create temporary picture */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        size  =  avpicture_get_size ( dec - > pix_fmt ,  dec - > width ,  dec - > height ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        buf  =  av_malloc ( size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! buf ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-11-20 03:06:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        picture2  =  & picture_tmp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        avpicture_fill ( picture2 ,  buf ,  dec - > pix_fmt ,  dec - > width ,  dec - > height ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-05-31 20:19:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( avpicture_deinterlace ( picture2 ,  picture , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                 dec - > pix_fmt ,  dec - > width ,  dec - > height )  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            /* if error, do not deinterlace */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Deinterlacing failed \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_free ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            buf  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            picture2  =  picture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2002-11-20 03:06:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        picture2  =  picture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( picture  ! =  picture2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        * picture  =  * picture2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * bufp  =  buf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* we begin to correct av delay at this threshold */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define AV_DELAY_MAX 0.100 
  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  do_subtitle_out ( AVFormatContext  * s ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            AVOutputStream  * ost , 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            AVInputStream  * ist , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            AVSubtitle  * sub , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            int64_t  pts ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    static  uint8_t  * subtitle_out  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 10:22:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  subtitle_out_max_size  =  1024  *  1024 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  subtitle_out_size ,  nb ,  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVCodecContext  * enc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVPacket  pkt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( pts  = =  AV_NOPTS_VALUE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Subtitle packets must have a pts \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 23:23:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( exit_on_error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    enc  =  ost - > st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! subtitle_out )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        subtitle_out  =  av_malloc ( subtitle_out_max_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* Note: DVB subtitle need one packet to draw them and one other
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       packet  to  clear  them  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* XXX: signal it in the codec context ? */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( enc - > codec_id  = =  CODEC_ID_DVB_SUBTITLE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        nb  =  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        nb  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i  =  0 ;  i  <  nb ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 08:28:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        sub - > pts  =  av_rescale_q ( pts ,  ist - > st - > time_base ,  AV_TIME_BASE_Q ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 08:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // start_display_time is required to be 0
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sub - > pts               + =  av_rescale_q ( sub - > start_display_time ,  ( AVRational ) { 1 ,  1000 } ,  AV_TIME_BASE_Q ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sub - > end_display_time  - =  sub - > start_display_time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sub - > start_display_time  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        subtitle_out_size  =  avcodec_encode_subtitle ( enc ,  subtitle_out , 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                                    subtitle_out_max_size ,  sub ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-15 00:37:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( subtitle_out_size  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Subtitle encoding failed \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_init_packet ( & pkt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pkt . stream_index  =  ost - > index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pkt . data  =  subtitle_out ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pkt . size  =  subtitle_out_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-08-26 08:43:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pkt . pts  =  av_rescale_q ( sub - > pts ,  AV_TIME_BASE_Q ,  ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( enc - > codec_id  = =  CODEC_ID_DVB_SUBTITLE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            /* XXX: the pts correction is handled here. Maybe handling
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               it  in  the  codec  would  be  better  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( i  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                pkt . pts  + =  90  *  sub - > start_display_time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                pkt . pts  + =  90  *  sub - > end_display_time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        write_frame ( s ,  & pkt ,  ost - > st - > codec ,  bitstream_filters [ ost - > file_index ] [ pkt . stream_index ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-11-27 17:46:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  bit_buffer_size =  1024 * 256 ;  
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:45:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  uint8_t  * bit_buffer =  NULL ;  
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  do_video_out ( AVFormatContext  * s ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         AVOutputStream  * ost , 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                         AVInputStream  * ist , 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-12 16:56:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         AVFrame  * in_picture , 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 14:47:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         int  * frame_size ) 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  nb_frames ,  i ,  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int64_t  topBand ,  bottomBand ,  leftBand ,  rightBand ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVFrame  * final_picture ,  * formatted_picture ,  * resampling_dst ,  * padding_src ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-02 11:50:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVFrame  picture_crop_temp ,  picture_pad_temp ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-08-11 18:58:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVCodecContext  * enc ,  * dec ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-15 02:32:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    double  sync_ipts ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-04-17 19:41:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    avcodec_get_frame_defaults ( & picture_crop_temp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    avcodec_get_frame_defaults ( & picture_pad_temp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-17 19:41:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    enc  =  ost - > st - > codec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    dec  =  ist - > st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-15 02:32:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sync_ipts  =  get_sync_ipts ( ost )  /  av_q2d ( enc - > time_base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* by default, we output a single frame */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nb_frames  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-01-17 04:14:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    * frame_size  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-25 23:33:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( video_sync_method ) { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-15 02:33:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        double  vdelta  =  sync_ipts  -  ost - > sync_opts ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        //FIXME set to 0.5 after we fix some dts/pts bugs like in avidec.c
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( vdelta  <  - 1.1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            nb_frames  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 14:53:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        else  if  ( video_sync_method  = =  2  | |  ( video_sync_method < 0  & &  ( s - > oformat - > flags  &  AVFMT_VARIABLE_FPS ) ) ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( vdelta < = - 0.6 ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                nb_frames = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } else  if ( vdelta > 0.6 ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-15 02:32:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ost - > sync_opts =  lrintf ( sync_ipts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 14:53:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } else  if  ( vdelta  >  1.1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-04 19:02:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            nb_frames  =  lrintf ( vdelta ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-27 14:44:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//fprintf(stderr, "vdelta:%f, ost->sync_opts:%"PRId64", ost->sync_ipts:%f nb_frames:%d\n", vdelta, ost->sync_opts, get_sync_ipts(ost), nb_frames);
  
						 
					
						
							
								
									
										
										
										
											2004-06-15 13:49:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( nb_frames  = =  0 ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            + + nb_frames_drop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( verbose > 2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                fprintf ( stderr ,  " *** drop! \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-25 09:30:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } else  if  ( nb_frames  >  1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 12:37:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            nb_frames_dup  + =  nb_frames  -  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-15 13:49:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( verbose > 2 ) 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-25 09:30:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                fprintf ( stderr ,  " *** %d dup! \n " ,  nb_frames - 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-15 13:49:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } else 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-15 02:32:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ost - > sync_opts =  lrintf ( sync_ipts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-07-12 07:37:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    nb_frames =  FFMIN ( nb_frames ,  max_frames [ AVMEDIA_TYPE_VIDEO ]  -  ost - > frame_number ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( nb_frames  < =  0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        return ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-03-19 06:30:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ost - > video_crop )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:53:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( av_picture_crop ( ( AVPicture  * ) & picture_crop_temp ,  ( AVPicture  * ) in_picture ,  dec - > pix_fmt ,  ost - > topBand ,  ost - > leftBand )  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-16 16:14:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " error cropping picture \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 23:23:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( exit_on_error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-07 10:45:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        formatted_picture  =  & picture_crop_temp ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-02 11:50:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        formatted_picture  =  in_picture ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    final_picture  =  formatted_picture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    padding_src  =  formatted_picture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    resampling_dst  =  & ost - > pict_tmp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ost - > video_pad )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        final_picture  =  & ost - > pict_tmp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ost - > video_resample )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:53:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( av_picture_crop ( ( AVPicture  * ) & picture_pad_temp ,  ( AVPicture  * ) final_picture ,  enc - > pix_fmt ,  ost - > padtop ,  ost - > padleft )  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-16 16:14:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                fprintf ( stderr ,  " error padding picture \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 23:23:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( exit_on_error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-07 10:45:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            resampling_dst  =  & picture_pad_temp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-04 16:20:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if (     ( ost - > resample_height  ! =  ( ist - > st - > codec - > height  -  ( ost - > topBand   +  ost - > bottomBand ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        | |  ( ost - > resample_width   ! =  ( ist - > st - > codec - > width   -  ( ost - > leftBand  +  ost - > rightBand ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        | |  ( ost - > resample_pix_fmt ! =  ist - > st - > codec - > pix_fmt )  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr , " Input Stream #%d.%d frame size changed to %dx%d, %s \n " ,  ist - > file_index ,  ist - > index ,  ist - > st - > codec - > width ,      ist - > st - > codec - > height , avcodec_get_pix_fmt_name ( ist - > st - > codec - > pix_fmt ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( ! ost - > video_resample ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  ( ost - > video_resample )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        padding_src  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-12-05 09:00:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        final_picture  =  & ost - > pict_tmp ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if (   ( ost - > resample_height  ! =  ( ist - > st - > codec - > height  -  ( ost - > topBand   +  ost - > bottomBand ) ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-26 01:08:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          | |  ( ost - > resample_width   ! =  ( ist - > st - > codec - > width   -  ( ost - > leftBand  +  ost - > rightBand ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          | |  ( ost - > resample_pix_fmt ! =  ist - > st - > codec - > pix_fmt )  )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            /* keep bands proportional to the frame size */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            topBand     =  ( ( int64_t ) ist - > st - > codec - > height  *  ost - > original_topBand     /  ost - > original_height )  &  ~ 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            bottomBand  =  ( ( int64_t ) ist - > st - > codec - > height  *  ost - > original_bottomBand  /  ost - > original_height )  &  ~ 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            leftBand    =  ( ( int64_t ) ist - > st - > codec - > width   *  ost - > original_leftBand    /  ost - > original_width )   &  ~ 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            rightBand   =  ( ( int64_t ) ist - > st - > codec - > width   *  ost - > original_rightBand   /  ost - > original_width )   &  ~ 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            /* sanity check to ensure no bad band sizes sneak in */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( topBand     < =  INT_MAX  & &  topBand     > =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( bottomBand  < =  INT_MAX  & &  bottomBand  > =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( leftBand    < =  INT_MAX  & &  leftBand    > =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            assert ( rightBand   < =  INT_MAX  & &  rightBand   > =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost - > topBand     =  topBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost - > bottomBand  =  bottomBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost - > leftBand    =  leftBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost - > rightBand   =  rightBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost - > resample_height  =  ist - > st - > codec - > height  -  ( ost - > topBand   +  ost - > bottomBand ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost - > resample_width   =  ist - > st - > codec - > width   -  ( ost - > leftBand  +  ost - > rightBand ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-26 01:08:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ost - > resample_pix_fmt =  ist - > st - > codec - > pix_fmt ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            /* initialize a new scaler context */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            sws_freeContext ( ost - > img_resample_ctx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            sws_flags  =  av_get_int ( sws_opts ,  " sws_flags " ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost - > img_resample_ctx  =  sws_getContext ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ist - > st - > codec - > width   -  ( ost - > leftBand  +  ost - > rightBand ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ist - > st - > codec - > height  -  ( ost - > topBand   +  ost - > bottomBand ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ist - > st - > codec - > pix_fmt , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ost - > st - > codec - > width   -  ( ost - > padleft   +  ost - > padright ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ost - > st - > codec - > height  -  ( ost - > padtop    +  ost - > padbottom ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ost - > st - > codec - > pix_fmt , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                sws_flags ,  NULL ,  NULL ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ost - > img_resample_ctx  = =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                fprintf ( stderr ,  " Cannot get resampling context \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-02 11:50:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        sws_scale ( ost - > img_resample_ctx ,  formatted_picture - > data ,  formatted_picture - > linesize , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              0 ,  ost - > resample_height ,  resampling_dst - > data ,  resampling_dst - > linesize ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 10:16:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ost - > video_pad )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-04 11:53:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_picture_pad ( ( AVPicture * ) final_picture ,  ( AVPicture  * ) padding_src , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                enc - > height ,  enc - > width ,  enc - > pix_fmt , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ost - > padtop ,  ost - > padbottom ,  ost - > padleft ,  ost - > padright ,  padcolor ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* duplicates frame if needed */ 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_frames ; i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        AVPacket  pkt ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_init_packet ( & pkt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        pkt . stream_index =  ost - > index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-03-16 21:03:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( s - > oformat - > flags  &  AVFMT_RAWPICTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            /* raw pictures are written as AVPicture structure to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               avoid  any  copies .  We  support  temorarily  the  older 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               method .  */ 
							 
						 
					
						
							
								
									
										
										
										
											2003-10-18 03:19:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            AVFrame *  old_frame  =  enc - > coded_frame ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            enc - > coded_frame  =  dec - > coded_frame ;  //FIXME/XXX remove this hack
 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            pkt . data =  ( uint8_t  * ) final_picture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pkt . size =   sizeof ( AVPicture ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-26 20:38:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            pkt . pts =  av_rescale_q ( ost - > sync_opts ,  enc - > time_base ,  ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pkt . flags  | =  PKT_FLAG_KEY ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            write_frame ( s ,  & pkt ,  ost - > st - > codec ,  bitstream_filters [ ost - > file_index ] [ pkt . stream_index ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            enc - > coded_frame  =  old_frame ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-03-16 21:03:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2002-12-09 12:03:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            AVFrame  big_picture ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-17 19:41:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            big_picture =  * final_picture ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-12 16:56:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            /* better than nothing: use input picture interlaced
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               settings  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            big_picture . interlaced_frame  =  in_picture - > interlaced_frame ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( avcodec_opts [ AVMEDIA_TYPE_VIDEO ] - > flags  &  ( CODEC_FLAG_INTERLACED_DCT | CODEC_FLAG_INTERLACED_ME ) ) { 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-30 16:07:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( top_field_first  = =  - 1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    big_picture . top_field_first  =  in_picture - > top_field_first ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-02 17:17:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    big_picture . top_field_first  =  top_field_first ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-30 16:07:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-12 16:56:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            /* handles sameq here. This is not correct because it may
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               not  be  a  global  option  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( same_quality )  { 
							 
						 
					
						
							
								
									
										
										
										
											2002-12-04 10:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                big_picture . quality  =  ist - > st - > quality ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                big_picture . quality  =  ost - > st - > quality ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-23 19:06:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( ! me_threshold ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                big_picture . pict_type  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-15 13:49:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//            big_picture.pts = AV_NOPTS_VALUE;
  
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            big_picture . pts =  ost - > sync_opts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//            big_picture.pts= av_rescale(ost->sync_opts, AV_TIME_BASE*(int64_t)enc->time_base.num, enc->time_base.den);
  
						 
					
						
							
								
									
										
										
										
											2006-11-01 22:39:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//av_log(NULL, AV_LOG_DEBUG, "%"PRId64" -> encoder\n", ost->sync_opts);
  
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ret  =  avcodec_encode_video ( enc , 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-27 17:46:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                       bit_buffer ,  bit_buffer_size , 
							 
						 
					
						
							
								
									
										
										
										
											2002-12-04 10:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                       & big_picture ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-11 16:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ret  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-26 14:04:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                fprintf ( stderr ,  " Video encoding failed \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-26 14:04:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-30 02:48:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-01-10 20:29:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( ret > 0 ) { 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:45:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                pkt . data =  bit_buffer ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                pkt . size =  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-28 11:34:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( enc - > coded_frame - > pts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    pkt . pts =  av_rescale_q ( enc - > coded_frame - > pts ,  enc - > time_base ,  ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-11-01 22:39:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*av_log(NULL, AV_LOG_DEBUG, "encoder -> %"PRId64"/%"PRId64"\n",
  
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   pkt . pts  ! =  AV_NOPTS_VALUE  ?  av_rescale ( pkt . pts ,  enc - > time_base . den ,  AV_TIME_BASE * ( int64_t ) enc - > time_base . num )  :  - 1 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   pkt . dts  ! =  AV_NOPTS_VALUE  ?  av_rescale ( pkt . dts ,  enc - > time_base . den ,  AV_TIME_BASE * ( int64_t ) enc - > time_base . num )  :  - 1 ) ; */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-15 13:49:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-28 11:34:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( enc - > coded_frame - > key_frame ) 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    pkt . flags  | =  PKT_FLAG_KEY ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                write_frame ( s ,  & pkt ,  ost - > st - > codec ,  bitstream_filters [ ost - > file_index ] [ pkt . stream_index ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                * frame_size  =  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-18 13:52:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                video_size  + =  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-30 02:48:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                //fprintf(stderr,"\nFrame: %3d size: %5d type: %d",
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                //        enc->frame_number-1, ret, enc->pict_type);
 
							 
						 
					
						
							
								
									
										
										
										
											2004-05-29 02:06:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                /* if two pass, output log */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ost - > logfile  & &  enc - > stats_out )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    fprintf ( ost - > logfile ,  " %s " ,  enc - > stats_out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-10 17:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-15 13:49:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ost - > sync_opts + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ost - > frame_number + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-12-04 21:13:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  double  psnr ( double  d ) {  
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  - 10.0 * log ( d ) / log ( 10.0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-12-04 21:13:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  do_video_stats ( AVFormatContext  * os ,  AVOutputStream  * ost ,  
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           int  frame_size ) 
							 
						 
					
						
							
								
									
										
										
										
											2002-03-19 06:30:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVCodecContext  * enc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  frame_number ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    double  ti1 ,  bitrate ,  avg_bitrate ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-04-25 13:55:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* this is executed just the first time do_video_stats is called */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-06 20:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! vstats_file )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        vstats_file  =  fopen ( vstats_filename ,  " w " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! vstats_file )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-25 13:48:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            perror ( " fopen " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-25 13:48:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    enc  =  ost - > st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( enc - > codec_type  = =  AVMEDIA_TYPE_VIDEO )  { 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        frame_number  =  ost - > frame_number ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-06 20:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( vstats_file ,  " frame= %5d q= %2.1f  " ,  frame_number ,  enc - > coded_frame - > quality / ( float ) FF_QP2LAMBDA ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-12-04 21:13:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( enc - > flags & CODEC_FLAG_PSNR ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-06 20:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            fprintf ( vstats_file ,  " PSNR= %6.2f  " ,  psnr ( enc - > coded_frame - > error [ 0 ] / ( enc - > width * enc - > height * 255.0 * 255.0 ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-09-06 20:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( vstats_file , " f_size= %6d  " ,  frame_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* compute pts value */ 
							 
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ti1  =  ost - > sync_opts  *  av_q2d ( enc - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-03-19 06:30:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ti1  <  0.01 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ti1  =  0.01 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        bitrate  =  ( frame_size  *  8 )  /  av_q2d ( enc - > time_base )  /  1000.0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-15 13:57:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        avg_bitrate  =  ( double ) ( video_size  *  8 )  /  ti1  /  1000.0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-06 20:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( vstats_file ,  " s_size= %8.0fkB time= %0.3f br= %7.1fkbits/s avg_br= %7.1fkbits/s  " , 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-15 13:57:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ( double ) video_size  /  1024 ,  ti1 ,  bitrate ,  avg_bitrate ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-06 20:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( vstats_file , " type= %c \n " ,  av_get_pict_type_char ( enc - > coded_frame - > pict_type ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-03-19 06:30:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  print_report ( AVFormatContext  * * output_files ,  
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         AVOutputStream  * * ost_table ,  int  nb_ostreams , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         int  is_last_report ) 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  buf [ 1024 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVOutputStream  * ost ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-17 15:15:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVFormatContext  * oc ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-02-11 16:35:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int64_t  total_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVCodecContext  * enc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  frame_number ,  vid ,  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    double  bitrate ,  ti1 ,  pts ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-02-11 16:35:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  int64_t  last_time  =  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-18 20:01:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  int  qp_histogram [ 52 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! is_last_report )  { 
							 
						 
					
						
							
								
									
										
										
										
											2003-02-11 16:35:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        int64_t  cur_time ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* display the report every 0.5 seconds */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        cur_time  =  av_gettime ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( last_time  = =  - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            last_time  =  cur_time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ( cur_time  -  last_time )  <  500000 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        last_time  =  cur_time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-03-19 06:30:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    oc  =  output_files [ 0 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-11-21 07:41:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    total_size  =  url_fsize ( oc - > pb ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-14 17:50:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( total_size < 0 )  // FIXME improve url_fsize() so it works with non seekable output too
 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-21 07:41:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        total_size =  url_ftell ( oc - > pb ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    buf [ 0 ]  =  ' \0 ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ti1  =  1e10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    vid  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_ostreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ost  =  ost_table [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        enc  =  ost - > st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( vid  & &  enc - > codec_type  = =  AVMEDIA_TYPE_VIDEO )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-01-12 00:16:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            snprintf ( buf  +  strlen ( buf ) ,  sizeof ( buf )  -  strlen ( buf ) ,  " q=%2.1f  " , 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-28 11:34:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                     ! ost - > st - > stream_copy  ? 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-01 13:08:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                     enc - > coded_frame - > quality / ( float ) FF_QP2LAMBDA  :  - 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-11-20 03:06:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! vid  & &  enc - > codec_type  = =  AVMEDIA_TYPE_VIDEO )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-16 16:13:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            float  t  =  ( av_gettime ( ) - timer_start )  /  1000000.0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            frame_number  =  ost - > frame_number ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-16 16:13:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            snprintf ( buf  +  strlen ( buf ) ,  sizeof ( buf )  -  strlen ( buf ) ,  " frame=%5d fps=%3d q=%3.1f  " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     frame_number ,  ( t > 1 ) ? ( int ) ( frame_number / t + 0.5 )  :  0 , 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-28 11:34:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                     ! ost - > st - > stream_copy  ? 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-01 13:08:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                     enc - > coded_frame - > quality / ( float ) FF_QP2LAMBDA  :  - 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-29 23:08:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( is_last_report ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-01-12 00:16:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                snprintf ( buf  +  strlen ( buf ) ,  sizeof ( buf )  -  strlen ( buf ) ,  " L " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-28 11:34:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( qp_hist ) { 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-18 20:01:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                int  j ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                int  qp =  lrintf ( enc - > coded_frame - > quality / ( float ) FF_QP2LAMBDA ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-21 21:40:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( qp > = 0  & &  qp < FF_ARRAY_ELEMS ( qp_histogram ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-18 20:01:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    qp_histogram [ qp ] + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for ( j = 0 ;  j < 32 ;  j + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    snprintf ( buf  +  strlen ( buf ) ,  sizeof ( buf )  -  strlen ( buf ) ,  " %X " ,  ( int ) lrintf ( log ( qp_histogram [ j ] + 1 ) / log ( 2 ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-29 23:08:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( enc - > flags & CODEC_FLAG_PSNR ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                int  j ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                double  error ,  error_sum = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                double  scale ,  scale_sum = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                char  type [ 3 ] =  { ' Y ' , ' U ' , ' V ' } ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-01-12 00:16:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                snprintf ( buf  +  strlen ( buf ) ,  sizeof ( buf )  -  strlen ( buf ) ,  " PSNR= " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-29 23:08:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                for ( j = 0 ;  j < 3 ;  j + + ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if ( is_last_report ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        error =  enc - > error [ j ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        scale =  enc - > width * enc - > height * 255.0 * 255.0 * frame_number ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        error =  enc - > coded_frame - > error [ j ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        scale =  enc - > width * enc - > height * 255.0 * 255.0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if ( j )  scale / = 4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    error_sum  + =  error ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    scale_sum  + =  scale ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-01-12 00:16:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    snprintf ( buf  +  strlen ( buf ) ,  sizeof ( buf )  -  strlen ( buf ) ,  " %c:%2.2f  " ,  type [ j ] ,  psnr ( error / scale ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-29 23:08:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2005-01-12 00:16:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                snprintf ( buf  +  strlen ( buf ) ,  sizeof ( buf )  -  strlen ( buf ) ,  " *:%2.2f  " ,  psnr ( error_sum / scale_sum ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-29 23:08:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            vid  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* compute min output value */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-17 13:04:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pts  =  ( double ) ost - > st - > pts . val  *  av_q2d ( ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-26 19:23:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ( pts  <  ti1 )  & &  ( pts  >  0 ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ti1  =  pts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ti1  <  0.01 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ti1  =  0.01 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-09-03 12:13:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( verbose  | |  is_last_report )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bitrate  =  ( double ) ( total_size  *  8 )  /  ti1  /  1000.0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        snprintf ( buf  +  strlen ( buf ) ,  sizeof ( buf )  -  strlen ( buf ) , 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-21 17:44:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            " size=%8.0fkB time=%0.2f bitrate=%6.1fkbits/s " , 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ( double ) total_size  /  1024 ,  ti1 ,  bitrate ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-11 22:03:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 12:40:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( nb_frames_dup  | |  nb_frames_drop ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          snprintf ( buf  +  strlen ( buf ) ,  sizeof ( buf )  -  strlen ( buf ) ,  "  dup=%d drop=%d " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  nb_frames_dup ,  nb_frames_drop ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-04-11 13:50:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( verbose  > =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " %s     \r " ,  buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fflush ( stderr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-04-15 13:57:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( is_last_report  & &  verbose  > =  0 ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int64_t  raw =  audio_size  +  video_size  +  extra_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-09-03 12:13:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-15 13:57:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " video:%1.0fkB audio:%1.0fkB global headers:%1.0fkB muxing overhead %f%% \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                video_size / 1024.0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                audio_size / 1024.0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                extra_size / 1024.0 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                100.0 * ( total_size  -  raw ) / raw 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2002-03-19 06:30:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* pkt = NULL means EOF (needed to flush decoder buffers) */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  output_packet ( AVInputStream  * ist ,  int  ist_index ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         AVOutputStream  * * ost_table ,  int  nb_ostreams , 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-26 23:06:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         const  AVPacket  * pkt ) 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVFormatContext  * os ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVOutputStream  * ost ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  ret ,  i ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 00:47:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  got_picture ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVFrame  picture ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    void  * buffer_to_free ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-01-25 22:10:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  unsigned  int  samples_size =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVSubtitle  subtitle ,  * subtitle_to_free ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  got_subtitle ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVPacket  avpkt ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-16 12:45:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  bps  =  av_get_bits_per_sample_format ( ist - > st - > codec - > sample_fmt ) > > 3 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-02-17 19:08:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( ist - > next_pts  = =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ist - > next_pts =  ist - > pts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( pkt  = =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* EOF handling */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-11 22:04:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_init_packet ( & avpkt ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        avpkt . data  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        avpkt . size  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        goto  handle_eof ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-11 22:04:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        avpkt  =  * pkt ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-02-17 17:55:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( pkt - > dts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ist - > next_pts  =  ist - > pts  =  av_rescale_q ( pkt - > dts ,  ist - > st - > time_base ,  AV_TIME_BASE_Q ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-13 21:39:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    //while we have more to decode or while the decoder did output something on EOF
 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    while  ( avpkt . size  >  0  | |  ( ! pkt  & &  ist - > next_pts  ! =  ist - > pts ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        uint8_t  * data_buf ,  * decoded_data_buf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  data_size ,  decoded_data_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    handle_eof : 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-17 17:55:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ist - > pts =  ist - > next_pts ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-15 21:45:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-16 15:08:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( avpkt . size  & &  avpkt . size  ! =  pkt - > size  & & 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-06 00:10:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								           ( ( ! ist - > showed_multi_packet_warning  & &  verbose > 0 )  | |  verbose > 1 ) ) { 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-17 19:38:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Multiple frames in a packet from stream %d \n " ,  pkt - > stream_index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-27 13:27:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ist - > showed_multi_packet_warning = 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-17 19:38:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* decode the packet if needed */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        decoded_data_buf  =  NULL ;  /* fail safe */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        decoded_data_size =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data_buf   =  avpkt . data ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data_size  =  avpkt . size ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        subtitle_to_free  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ist - > decoding_needed )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            switch ( ist - > st - > codec - > codec_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_AUDIO : { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-12 05:59:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( pkt  & &  samples_size  <  FFMAX ( pkt - > size * sizeof ( * samples ) ,  AVCODEC_MAX_AUDIO_FRAME_SIZE ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    samples_size  =  FFMAX ( pkt - > size * sizeof ( * samples ) ,  AVCODEC_MAX_AUDIO_FRAME_SIZE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    av_free ( samples ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    samples =  av_malloc ( samples_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                decoded_data_size =  samples_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    /* XXX: could avoid copy if PCM 16 bits with same
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                       endianness  as  CPU  */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ret  =  avcodec_decode_audio3 ( ist - > st - > codec ,  samples ,  & decoded_data_size , 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                            & avpkt ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ret  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    goto  fail_decode ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                avpkt . data  + =  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                avpkt . size  - =  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                data_size    =  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                /* Some bug in mpeg audio decoder gives */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                /* decoded_data_size < 0, it seems they are overflows */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( decoded_data_size  < =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    /* no audio frame */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                decoded_data_buf  =  ( uint8_t  * ) samples ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ist - > next_pts  + =  ( ( int64_t ) AV_TIME_BASE / bps  *  decoded_data_size )  / 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ( ist - > st - > codec - > sample_rate  *  ist - > st - > codec - > channels ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-08-14 14:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; } 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_VIDEO : 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    decoded_data_size  =  ( ist - > st - > codec - > width  *  ist - > st - > codec - > height  *  3 )  /  2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    /* XXX: allocate picture correctly */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-02-25 17:35:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    avcodec_get_frame_defaults ( & picture ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ret  =  avcodec_decode_video2 ( ist - > st - > codec , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                & picture ,  & got_picture ,  & avpkt ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ist - > st - > quality =  picture . quality ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( ret  <  0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        goto  fail_decode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ! got_picture )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        /* no picture yet */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        goto  discard_packet ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( ist - > st - > codec - > time_base . num  ! =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-26 23:47:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        int  ticks =  ist - > st - > parser  ?  ist - > st - > parser - > repeat_pict + 1  :  ist - > st - > codec - > ticks_per_frame ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        ist - > next_pts  + =  ( ( int64_t ) AV_TIME_BASE  * 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-26 13:15:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                          ist - > st - > codec - > time_base . num  *  ticks )  / 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            ist - > st - > codec - > time_base . den ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    avpkt . size  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_SUBTITLE : 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ret  =  avcodec_decode_subtitle2 ( ist - > st - > codec , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                               & subtitle ,  & got_subtitle ,  & avpkt ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ret  <  0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    goto  fail_decode ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ! got_subtitle )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    goto  discard_packet ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                subtitle_to_free  =  & subtitle ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                avpkt . size  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                goto  fail_decode ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            switch ( ist - > st - > codec - > codec_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_AUDIO : 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ist - > next_pts  + =  ( ( int64_t ) AV_TIME_BASE  *  ist - > st - > codec - > frame_size )  / 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-28 00:59:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ist - > st - > codec - > sample_rate ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_VIDEO : 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ist - > st - > codec - > time_base . num  ! =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-26 23:47:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    int  ticks =  ist - > st - > parser  ?  ist - > st - > parser - > repeat_pict + 1  :  ist - > st - > codec - > ticks_per_frame ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ist - > next_pts  + =  ( ( int64_t ) AV_TIME_BASE  * 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-26 13:15:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                      ist - > st - > codec - > time_base . num  *  ticks )  / 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        ist - > st - > codec - > time_base . den ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-12-14 20:01:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-10 12:53:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ret  =  avpkt . size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            avpkt . size  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        buffer_to_free  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ist - > st - > codec - > codec_type  = =  AVMEDIA_TYPE_VIDEO )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            pre_process_video_frame ( ist ,  ( AVPicture  * ) & picture , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    & buffer_to_free ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        // preprocess audio (volume)
 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ist - > st - > codec - > codec_type  = =  AVMEDIA_TYPE_AUDIO )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( audio_volume  ! =  256 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                short  * volp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                volp  =  samples ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                for ( i = 0 ; i < ( decoded_data_size  /  sizeof ( short ) ) ; i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    int  v  =  ( ( * volp )  *  audio_volume  +  128 )  > >  8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( v  <  - 32768 )  v  =  - 32768 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( v  >   32767 )  v  =  32767 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    * volp + +  =  v ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-03-23 01:59:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-03-23 01:59:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* frame rate emulation */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-27 21:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( rate_emu )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-27 21:24:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            int64_t  pts  =  av_rescale ( ist - > pts ,  1000000 ,  AV_TIME_BASE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            int64_t  now  =  av_gettime ( )  -  ist - > start ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( pts  >  now ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                usleep ( pts  -  now ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* if output time reached then transcode raw format,
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           encode  packets  and  output  them  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( start_time  = =  0  | |  ist - > pts  > =  start_time ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            for ( i = 0 ; i < nb_ostreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                int  frame_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ost  =  ost_table [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ost - > source_index  = =  ist_index )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    os  =  output_files [ ost - > file_index ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    /* set the input output pts pairs */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    //ost->sync_ipts = (double)(ist->pts + input_files_ts_offset[ist->file_index] - start_time)/ AV_TIME_BASE;
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ost - > encoding_needed )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        assert ( ist - > decoding_needed ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        switch ( ost - > st - > codec - > codec_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        case  AVMEDIA_TYPE_AUDIO : 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 01:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            do_audio_out ( os ,  ost ,  ist ,  decoded_data_buf ,  decoded_data_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        case  AVMEDIA_TYPE_VIDEO : 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            do_video_out ( os ,  ost ,  ist ,  & picture ,  & frame_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-25 13:55:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            if  ( vstats_filename  & &  frame_size ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                do_video_stats ( os ,  ost ,  frame_size ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        case  AVMEDIA_TYPE_SUBTITLE : 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            do_subtitle_out ( os ,  ost ,  ist ,  & subtitle , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                            pkt - > pts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        default : 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-02 07:43:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            abort ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        AVFrame  avframe ;  //FIXME/XXX remove this
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        AVPacket  opkt ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-09 00:13:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        int64_t  ost_tb_start_time =  av_rescale_q ( start_time ,  AV_TIME_BASE_Q ,  ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        av_init_packet ( & opkt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-22 08:22:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if  ( ( ! ost - > frame_number  & &  ! ( pkt - > flags  &  PKT_FLAG_KEY ) )  & &  ! copy_initial_nonkeyframes ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-03 23:25:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        /* no reencoding needed : output the packet directly */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        /* force the input stream PTS */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        avcodec_get_frame_defaults ( & avframe ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ost - > st - > codec - > coded_frame =  & avframe ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        avframe . key_frame  =  pkt - > flags  &  PKT_FLAG_KEY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if ( ost - > st - > codec - > codec_type  = =  AVMEDIA_TYPE_AUDIO ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            audio_size  + =  data_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        else  if  ( ost - > st - > codec - > codec_type  = =  AVMEDIA_TYPE_VIDEO )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            video_size  + =  data_size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            ost - > sync_opts + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        opkt . stream_index =  ost - > index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if ( pkt - > pts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-09 00:13:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            opkt . pts =  av_rescale_q ( pkt - > pts ,  ist - > st - > time_base ,  ost - > st - > time_base )  -  ost_tb_start_time ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            opkt . pts =  AV_NOPTS_VALUE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 01:36:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if  ( pkt - > dts  = =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-25 13:46:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            opkt . dts  =  av_rescale_q ( ist - > pts ,  AV_TIME_BASE_Q ,  ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-22 01:36:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            opkt . dts  =  av_rescale_q ( pkt - > dts ,  ist - > st - > time_base ,  ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-09 00:13:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        opkt . dts  - =  ost_tb_start_time ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-03 20:49:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:36:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        opkt . duration  =  av_rescale_q ( pkt - > duration ,  ist - > st - > time_base ,  ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        opkt . flags =  pkt - > flags ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        //FIXME remove the following 2 lines they shall be replaced by the bitstream filters
 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-03 14:53:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if (    ost - > st - > codec - > codec_id  ! =  CODEC_ID_H264 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           & &  ost - > st - > codec - > codec_id  ! =  CODEC_ID_MPEG1VIDEO 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           & &  ost - > st - > codec - > codec_id  ! =  CODEC_ID_MPEG2VIDEO 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-07 00:50:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            if ( av_parser_change ( ist - > st - > parser ,  ost - > st - > codec ,  & opkt . data ,  & opkt . size ,  data_buf ,  data_size ,  pkt - > flags  &  PKT_FLAG_KEY ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                opkt . destruct =  av_destruct_packet ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-14 23:55:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            opkt . data  =  data_buf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            opkt . size  =  data_size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-01-09 06:22:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        write_frame ( os ,  & opkt ,  ost - > st - > codec ,  bitstream_filters [ ost - > file_index ] [ opkt . stream_index ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        ost - > st - > codec - > frame_number + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ost - > frame_number + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        av_free_packet ( & opkt ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_free ( buffer_to_free ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* XXX: allocate the subtitles in the codec ? */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( subtitle_to_free )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( subtitle_to_free - > rects  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for  ( i  =  0 ;  i  <  subtitle_to_free - > num_rects ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 19:17:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    av_freep ( & subtitle_to_free - > rects [ i ] - > pict . data [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    av_freep ( & subtitle_to_free - > rects [ i ] - > pict . data [ 1 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-03 17:54:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    av_freep ( & subtitle_to_free - > rects [ i ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 00:28:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                av_freep ( & subtitle_to_free - > rects ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            subtitle_to_free - > num_rects  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            subtitle_to_free  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:35:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 discard_packet : 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( pkt  = =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* EOF handling */ 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for ( i = 0 ; i < nb_ostreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost  =  ost_table [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ost - > source_index  = =  ist_index )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                AVCodecContext  * enc =  ost - > st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                os  =  output_files [ ost - > file_index ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( ost - > st - > codec - > codec_type  = =  AVMEDIA_TYPE_AUDIO  & &  enc - > frame_size  < = 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( ost - > st - > codec - > codec_type  = =  AVMEDIA_TYPE_VIDEO  & &  ( os - > oformat - > flags  &  AVFMT_RAWPICTURE ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ost - > encoding_needed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    for ( ; ; )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        AVPacket  pkt ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-24 09:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        int  fifo_bytes ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        av_init_packet ( & pkt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        pkt . stream_index =  ost - > index ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        switch ( ost - > st - > codec - > codec_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        case  AVMEDIA_TYPE_AUDIO : 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-08 14:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            fifo_bytes  =  av_fifo_size ( ost - > fifo ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-24 09:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            ret  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            /* encode any samples remaining in fifo */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-23 04:07:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            if  ( fifo_bytes  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-14 03:48:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                int  osize  =  av_get_bits_per_sample_format ( enc - > sample_fmt )  > >  3 ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-24 09:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                int  fs_tmp  =  enc - > frame_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-23 04:07:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-09 17:47:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                av_fifo_generic_read ( ost - > fifo ,  samples ,  fifo_bytes ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-23 04:07:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                if  ( enc - > codec - > capabilities  &  CODEC_CAP_SMALL_LAST_FRAME )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    enc - > frame_size  =  fifo_bytes  /  ( osize  *  enc - > channels ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                }  else  {  /* pad */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    int  frame_bytes  =  enc - > frame_size * osize * enc - > channels ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    if  ( samples_size  <  frame_bytes ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    memset ( ( uint8_t * ) samples + fifo_bytes ,  0 ,  frame_bytes  -  fifo_bytes ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-13 21:22:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                ret  =  avcodec_encode_audio ( enc ,  bit_buffer ,  bit_buffer_size ,  samples ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-14 00:20:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                pkt . duration  =  av_rescale ( ( int64_t ) enc - > frame_size * ost - > st - > time_base . den , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                          ost - > st - > time_base . num ,  enc - > sample_rate ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-24 09:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                enc - > frame_size  =  fs_tmp ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-24 09:57:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if ( ret  < =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-24 09:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                ret  =  avcodec_encode_audio ( enc ,  bit_buffer ,  bit_buffer_size ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-11 16:15:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            if  ( ret  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                fprintf ( stderr ,  " Audio encoding failed \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            audio_size  + =  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            pkt . flags  | =  PKT_FLAG_KEY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        case  AVMEDIA_TYPE_VIDEO : 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-27 17:46:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            ret  =  avcodec_encode_video ( enc ,  bit_buffer ,  bit_buffer_size ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-11 16:15:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            if  ( ret  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                fprintf ( stderr ,  " Video encoding failed \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            video_size  + =  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if ( enc - > coded_frame  & &  enc - > coded_frame - > key_frame ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                pkt . flags  | =  PKT_FLAG_KEY ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            if  ( ost - > logfile  & &  enc - > stats_out )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                fprintf ( ost - > logfile ,  " %s " ,  enc - > stats_out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            ret = - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if ( ret < = 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:45:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        pkt . data =  bit_buffer ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        pkt . size =  ret ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-09-11 08:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if ( enc - > coded_frame  & &  enc - > coded_frame - > pts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            pkt . pts =  av_rescale_q ( enc - > coded_frame - > pts ,  enc - > time_base ,  ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        write_frame ( os ,  & pkt ,  ost - > st - > codec ,  bitstream_filters [ ost - > file_index ] [ pkt . stream_index ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-22 21:14:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 fail_decode : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-08-20 08:12:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  print_sdp ( AVFormatContext  * * avc ,  int  n )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  sdp [ 2048 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    avf_sdp_create ( avc ,  n ,  sdp ,  sizeof ( sdp ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    printf ( " SDP: \n %s \n " ,  sdp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-15 12:32:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    fflush ( stdout ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-20 08:12:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-19 07:44:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  copy_chapters ( int  infile ,  int  outfile )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVFormatContext  * is  =  input_files [ infile ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVFormatContext  * os  =  output_files [ outfile ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( i  =  0 ;  i  <  is - > nb_chapters ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        AVChapter  * in_ch  =  is - > chapters [ i ] ,  * out_ch ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        AVMetadataTag  * t  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int64_t  ts_off    =  av_rescale_q ( start_time  -  input_files_ts_offset [ infile ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                      AV_TIME_BASE_Q ,  in_ch - > time_base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int64_t  rt        =  ( recording_time  = =  INT64_MAX )  ?  INT64_MAX  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           av_rescale_q ( recording_time ,  AV_TIME_BASE_Q ,  in_ch - > time_base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( in_ch - > end  <  ts_off ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( rt  ! =  INT64_MAX  & &  in_ch - > start  >  rt  +  ts_off ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        out_ch  =  av_mallocz ( sizeof ( AVChapter ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! out_ch ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  AVERROR ( ENOMEM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        out_ch - > id         =  in_ch - > id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        out_ch - > time_base  =  in_ch - > time_base ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        out_ch - > start      =  FFMAX ( 0 ,   in_ch - > start  -  ts_off ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        out_ch - > end        =  FFMIN ( rt ,  in_ch - > end    -  ts_off ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        while  ( ( t  =  av_metadata_get ( in_ch - > metadata ,  " " ,  t ,  AV_METADATA_IGNORE_SUFFIX ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_metadata_set2 ( & out_ch - > metadata ,  t - > key ,  t - > value ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os - > nb_chapters + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os - > chapters  =  av_realloc ( os - > chapters ,  sizeof ( AVChapter ) * os - > nb_chapters ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! os - > chapters ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  AVERROR ( ENOMEM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os - > chapters [ os - > nb_chapters  -  1 ]  =  out_ch ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  following  code  is  the  main  loop  of  the  file  converter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  int  av_encode ( AVFormatContext  * * output_files ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     int  nb_output_files , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     AVFormatContext  * * input_files , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     int  nb_input_files , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     AVStreamMap  * stream_maps ,  int  nb_stream_maps ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  ret  =  0 ,  i ,  j ,  k ,  n ,  nb_istreams  =  0 ,  nb_ostreams  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    AVFormatContext  * is ,  * os ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVCodecContext  * codec ,  * icodec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVOutputStream  * ost ,  * * ost_table  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVInputStream  * ist ,  * * ist_table  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-08-13 21:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVInputFile  * file_table ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    char  error [ 1024 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-30 02:38:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  key ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-20 08:12:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  want_sdp  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 19:50:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    uint8_t  no_packet [ MAX_FILES ] = { 0 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  no_packet_count = 0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-08-13 21:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-12-01 00:19:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    file_table =  av_mallocz ( nb_input_files  *  sizeof ( AVInputFile ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-08-13 21:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! file_table ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        goto  fail ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* input stream init */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    j  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_input_files ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        is  =  input_files [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        file_table [ i ] . ist_index  =  j ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        file_table [ i ] . nb_streams  =  is - > nb_streams ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        j  + =  is - > nb_streams ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nb_istreams  =  j ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ist_table  =  av_mallocz ( nb_istreams  *  sizeof ( AVInputStream  * ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! ist_table ) 
							 
						 
					
						
							
								
									
										
										
										
											2001-08-13 21:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        goto  fail ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_istreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ist  =  av_mallocz ( sizeof ( AVInputStream ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! ist ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            goto  fail ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ist_table [ i ]  =  ist ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    j  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_input_files ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        is  =  input_files [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( k = 0 ; k < is - > nb_streams ; k + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ist  =  ist_table [ j + + ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ist - > st  =  is - > streams [ k ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ist - > file_index  =  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ist - > index  =  k ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ist - > discard  =  1 ;  /* the stream is discarded by default
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                 ( changed  later )  */ 
							 
						 
					
						
							
								
									
										
										
										
											2003-03-07 12:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-11-27 21:38:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( rate_emu )  { 
							 
						 
					
						
							
								
									
										
										
										
											2003-03-07 12:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ist - > start  =  av_gettime ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* output stream init */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    nb_ostreams  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_output_files ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os  =  output_files [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-11-05 20:08:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! os - > nb_streams )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-17 23:27:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            dump_format ( output_files [ i ] ,  i ,  output_files [ i ] - > filename ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Output file #%d does not contain any stream \n " ,  i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-11-05 20:08:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        nb_ostreams  + =  os - > nb_streams ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( nb_stream_maps  >  0  & &  nb_stream_maps  ! =  nb_ostreams )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Number of stream maps must match number of output streams \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-05-05 20:39:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* Sanity check the mapping args -- do the input files & streams exist? */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_stream_maps ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  fi  =  stream_maps [ i ] . file_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  si  =  stream_maps [ i ] . stream_index ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-05-05 20:39:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( fi  <  0  | |  fi  >  nb_input_files  -  1  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            si  <  0  | |  si  >  file_table [ fi ] . nb_streams  -  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr , " Could not find input stream #%d.%d \n " ,  fi ,  si ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-05-05 20:39:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fi  =  stream_maps [ i ] . sync_file_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        si  =  stream_maps [ i ] . sync_stream_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( fi  <  0  | |  fi  >  nb_input_files  -  1  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            si  <  0  | |  si  >  file_table [ fi ] . nb_streams  -  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr , " Could not find sync stream #%d.%d \n " ,  fi ,  si ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2003-05-05 20:39:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ost_table  =  av_mallocz ( sizeof ( AVOutputStream  * )  *  nb_ostreams ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! ost_table ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        goto  fail ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_ostreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ost  =  av_mallocz ( sizeof ( AVOutputStream ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! ost ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            goto  fail ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ost_table [ i ]  =  ost ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    n  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( k = 0 ; k < nb_output_files ; k + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os  =  output_files [ k ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-27 18:50:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for ( i = 0 ; i < os - > nb_streams ; i + + , n + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            int  found ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-27 18:50:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ost  =  ost_table [ n ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            ost - > file_index  =  k ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost - > index  =  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost - > st  =  os - > streams [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( nb_stream_maps  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-27 18:50:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ost - > source_index  =  file_table [ stream_maps [ n ] . file_index ] . ist_index  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    stream_maps [ n ] . stream_index ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-05-05 20:39:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                /* Sanity check that the stream types match */ 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ist_table [ ost - > source_index ] - > st - > codec - > codec_type  ! =  ost - > st - > codec - > codec_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-28 21:54:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    int  i =  ost - > file_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    dump_format ( output_files [ i ] ,  i ,  output_files [ i ] - > filename ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-05-05 20:39:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    fprintf ( stderr ,  " Codec type mismatch for mapping #%d.%d -> #%d.%d \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-27 18:50:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        stream_maps [ n ] . file_index ,  stream_maps [ n ] . stream_index , 
							 
						 
					
						
							
								
									
										
										
										
											2003-05-05 20:39:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        ost - > file_index ,  ost - > index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-05-05 20:39:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-23 16:31:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                int  best_nb_frames = - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-27 18:50:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    /* get corresponding input stream index : we select the first one with the right type */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    found  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    for ( j = 0 ; j < nb_istreams ; j + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-23 15:08:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        int  skip = 0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        ist  =  ist_table [ j ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-23 15:08:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if ( opt_programid ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            int  pi , si ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            AVFormatContext  * f =  input_files [  ist - > file_index  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            skip = 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            for ( pi = 0 ;  pi < f - > nb_programs ;  pi + + ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                AVProgram  * p =  f - > programs [ pi ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                if ( p - > id  = =  opt_programid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    for ( si = 0 ;  si < p - > nb_stream_indexes ;  si + + ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                        if ( f - > streams [  p - > stream_index [ si ]  ]  = =  ist - > st ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                            skip = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        if  ( ist - > discard  & &  ist - > st - > discard  ! =  AVDISCARD_ALL  & &  ! skip  & & 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-27 18:50:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            ist - > st - > codec - > codec_type  = =  ost - > st - > codec - > codec_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-23 16:31:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            if ( best_nb_frames  <  ist - > st - > codec_info_nb_frames ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                best_nb_frames =  ist - > st - > codec_info_nb_frames ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                ost - > source_index  =  j ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                found  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-27 18:50:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ! found )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if ( !  opt_programid )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        /* try again and reuse existing stream */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        for ( j = 0 ; j < nb_istreams ; j + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            ist  =  ist_table [ j ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-23 15:08:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            if  (    ist - > st - > codec - > codec_type  = =  ost - > st - > codec - > codec_type 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                & &  ist - > st - > discard  ! =  AVDISCARD_ALL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-27 18:50:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                ost - > source_index  =  j ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                found  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-27 18:46:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    if  ( ! found )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-12 22:07:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        int  i =  ost - > file_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        dump_format ( output_files [ i ] ,  i ,  output_files [ i ] - > filename ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        fprintf ( stderr ,  " Could not find input stream matching output stream #%d.%d \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                ost - > file_index ,  ost - > index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ist  =  ist_table [ ost - > source_index ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ist - > discard  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ost - > sync_ist  =  ( nb_stream_maps  >  0 )  ? 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-27 18:50:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ist_table [ file_table [ stream_maps [ n ] . sync_file_index ] . ist_index  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         stream_maps [ n ] . sync_stream_index ]  :  ist ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* for each output stream, we compute the right encoding parameters */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_ostreams ; i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-01 07:22:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        AVMetadataTag  * t  =  NULL ,  * lang  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        ost  =  ost_table [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-04 16:03:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        os  =  output_files [ ost - > file_index ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        ist  =  ist_table [ ost - > source_index ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        codec  =  ost - > st - > codec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        icodec  =  ist - > st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-01 07:22:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( av_metadata_get ( ist - > st - > metadata ,  " language " ,  NULL ,  0 ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            lang  =  av_metadata_get ( ost - > st - > metadata ,  " language " ,  NULL ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        while  ( ( t  =  av_metadata_get ( ist - > st - > metadata ,  " " ,  t ,  AV_METADATA_IGNORE_SUFFIX ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( lang  & &  ! strcmp ( t - > key ,  " language " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-04 11:27:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_metadata_set2 ( & ost - > st - > metadata ,  t - > key ,  t - > value ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-01 07:22:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:39:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-07 19:25:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ost - > st - > disposition  =  ist - > st - > disposition ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-23 23:30:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        codec - > bits_per_raw_sample =  icodec - > bits_per_raw_sample ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-12 00:47:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        codec - > chroma_sample_location  =  icodec - > chroma_sample_location ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-07 19:25:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ost - > st - > stream_copy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            /* if stream_copy is selected, no need to decode or encode */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            codec - > codec_id  =  icodec - > codec_id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            codec - > codec_type  =  icodec - > codec_type ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-04 16:03:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( ! codec - > codec_tag ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if (    ! os - > oformat - > codec_tag 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-25 21:01:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   | |  av_codec_get_id  ( os - > oformat - > codec_tag ,  icodec - > codec_tag )  = =  codec - > codec_id 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-04 16:03:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                   | |  av_codec_get_tag ( os - > oformat - > codec_tag ,  icodec - > codec_id )  < =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    codec - > codec_tag  =  icodec - > codec_tag ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            codec - > bit_rate  =  icodec - > bit_rate ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-03-24 01:47:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            codec - > extradata =  icodec - > extradata ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            codec - > extradata_size =  icodec - > extradata_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-26 23:47:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( av_q2d ( icodec - > time_base ) * icodec - > ticks_per_frame  >  av_q2d ( ist - > st - > time_base )  & &  av_q2d ( ist - > st - > time_base )  <  1.0 / 1000 ) { 
							 
						 
					
						
							
								
									
										
										
										
											2006-10-31 00:39:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > time_base  =  icodec - > time_base ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-26 23:47:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > time_base . num  * =  icodec - > ticks_per_frame ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } else 
							 
						 
					
						
							
								
									
										
										
										
											2006-10-31 00:39:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > time_base  =  ist - > st - > time_base ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            switch ( codec - > codec_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_AUDIO : 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-12 11:43:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( audio_volume  ! =  256 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    fprintf ( stderr , " -acodec copy and -vol are incompatible (frames are not decoded) \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-29 19:32:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > channel_layout  =  icodec - > channel_layout ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > sample_rate  =  icodec - > sample_rate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                codec - > channels  =  icodec - > channels ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-01 19:16:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > frame_size  =  icodec - > frame_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-12-20 12:55:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > block_align =  icodec - > block_align ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-03 23:23:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( codec - > block_align  = =  1  & &  codec - > codec_id  = =  CODEC_ID_MP3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    codec - > block_align =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-26 00:47:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if ( codec - > codec_id  = =  CODEC_ID_AC3 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    codec - > block_align =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_VIDEO : 
							 
						 
					
						
							
								
									
										
										
										
											2006-02-13 15:36:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > pix_fmt  =  icodec - > pix_fmt ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > width  =  icodec - > width ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                codec - > height  =  icodec - > height ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-03-22 18:15:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > has_b_frames  =  icodec - > has_b_frames ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_SUBTITLE : 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-17 23:54:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec - > width  =  icodec - > width ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                codec - > height  =  icodec - > height ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            default : 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-02 07:43:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                abort ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            switch ( codec - > codec_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_AUDIO : 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-08 14:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ost - > fifo =  av_fifo_alloc ( 1024 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if ( ! ost - > fifo ) 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    goto  fail ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ost - > reformat_pair  =  MAKE_SFMT_PAIR ( SAMPLE_FMT_NONE , SAMPLE_FMT_NONE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-15 07:04:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ost - > audio_resample  =  codec - > sample_rate  ! =  icodec - > sample_rate  | |  audio_sync_method  >  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                icodec - > request_channels  =  codec - > channels ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                ist - > decoding_needed  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ost - > encoding_needed  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_VIDEO : 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-12 08:15:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ost - > st - > codec - > pix_fmt  = =  PIX_FMT_NONE )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-16 15:48:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    fprintf ( stderr ,  " Video pixel format is unknown, stream cannot be encoded \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-12 08:15:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-20 12:57:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ost - > video_crop  =  ( ( frame_leftBand  +  frame_rightBand  +  frame_topBand  +  frame_bottomBand )  ! =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ost - > video_pad  =  ( ( frame_padleft  +  frame_padright  +  frame_padtop  +  frame_padbottom )  ! =  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ost - > video_resample  =  ( ( codec - > width  ! =  icodec - > width  - 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                ( frame_leftBand  +  frame_rightBand )  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                ( frame_padleft  +  frame_padright ) )  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ( codec - > height  ! =  icodec - > height  - 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                ( frame_topBand   +  frame_bottomBand )  + 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-02 11:50:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                ( frame_padtop  +  frame_padbottom ) )  | | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ( codec - > pix_fmt  ! =  icodec - > pix_fmt ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-20 12:57:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ost - > video_crop )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ost - > topBand     =  ost - > original_topBand     =  frame_topBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > bottomBand  =  ost - > original_bottomBand  =  frame_bottomBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > leftBand    =  ost - > original_leftBand    =  frame_leftBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > rightBand   =  ost - > original_rightBand   =  frame_rightBand ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-20 12:57:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ost - > video_pad )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ost - > padtop  =  frame_padtop ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > padleft  =  frame_padleft ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > padbottom  =  frame_padbottom ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > padright  =  frame_padright ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-20 12:57:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( ! ost - > video_resample )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        avcodec_get_frame_defaults ( & ost - > pict_tmp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-29 21:26:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if ( avpicture_alloc ( ( AVPicture * ) & ost - > pict_tmp ,  codec - > pix_fmt , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                         codec - > width ,  codec - > height ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-20 12:57:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            goto  fail ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( ost - > video_resample )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-18 11:22:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    avcodec_get_frame_defaults ( & ost - > pict_tmp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-29 21:26:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if ( avpicture_alloc ( ( AVPicture * ) & ost - > pict_tmp ,  codec - > pix_fmt , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                         codec - > width ,  codec - > height ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-31 16:04:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        fprintf ( stderr ,  " Cannot allocate temp picture, check pix fmt \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-31 16:04:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-26 16:13:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    sws_flags  =  av_get_int ( sws_opts ,  " sws_flags " ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-02 11:50:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ost - > img_resample_ctx  =  sws_getContext ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            icodec - > width  -  ( frame_leftBand  +  frame_rightBand ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            icodec - > height  -  ( frame_topBand  +  frame_bottomBand ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            icodec - > pix_fmt , 
							 
						 
					
						
							
								
									
										
										
										
											2006-04-10 09:04:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            codec - > width  -  ( frame_padleft  +  frame_padright ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            codec - > height  -  ( frame_padtop  +  frame_padbottom ) , 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-02 11:50:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            codec - > pix_fmt , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            sws_flags ,  NULL ,  NULL ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-05 13:09:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( ost - > img_resample_ctx  = =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        fprintf ( stderr ,  " Cannot get resampling context \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-05 13:09:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-19 14:43:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > original_height  =  icodec - > height ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > original_width   =  icodec - > width ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-04-23 23:30:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    codec - > bits_per_raw_sample =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-04 16:20:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ost - > resample_height  =  icodec - > height  -  ( frame_topBand   +  frame_bottomBand ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ost - > resample_width   =  icodec - > width   -  ( frame_leftBand  +  frame_rightBand ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ost - > resample_pix_fmt =  icodec - > pix_fmt ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                ost - > encoding_needed  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ist - > decoding_needed  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_SUBTITLE : 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ost - > encoding_needed  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ist - > decoding_needed  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            default : 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-02 07:43:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                abort ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            /* two pass mode */ 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ost - > encoding_needed  & & 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ( codec - > flags  &  ( CODEC_FLAG_PASS1  |  CODEC_FLAG_PASS2 ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                char  logfilename [ 1024 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                FILE  * f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                int  size ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                char  * logbuffer ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                snprintf ( logfilename ,  sizeof ( logfilename ) ,  " %s-%d.log " , 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-26 19:28:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         pass_logfilename_prefix  ?  pass_logfilename_prefix  :  DEFAULT_PASS_LOGFILENAME_PREFIX , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( codec - > flags  &  CODEC_FLAG_PASS1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    f  =  fopen ( logfilename ,  " w " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ! f )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 08:35:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        fprintf ( stderr ,  " Cannot write log file '%s' for pass-1 encoding: %s \n " ,  logfilename ,  strerror ( errno ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > logfile  =  f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    /* read the log file */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    f  =  fopen ( logfilename ,  " r " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ! f )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-01 08:35:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        fprintf ( stderr ,  " Cannot read log file '%s' for pass-2 encoding: %s \n " ,  logfilename ,  strerror ( errno ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    fseek ( f ,  0 ,  SEEK_END ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    size  =  ftell ( f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    fseek ( f ,  0 ,  SEEK_SET ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    logbuffer  =  av_malloc ( size  +  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ! logbuffer )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        fprintf ( stderr ,  " Could not allocate log buffer \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2004-02-14 15:04:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    size  =  fread ( logbuffer ,  1 ,  size ,  f ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    fclose ( f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    logbuffer [ size ]  =  ' \0 ' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    codec - > stats_in  =  logbuffer ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-10 17:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( codec - > codec_type  = =  AVMEDIA_TYPE_VIDEO ) { 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-27 17:46:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            int  size =  codec - > width  *  codec - > height ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-22 01:00:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            bit_buffer_size =  FFMAX ( bit_buffer_size ,  6 * size  +  200 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-27 17:46:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-11-27 17:46:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! bit_buffer ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bit_buffer  =  av_malloc ( bit_buffer_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! bit_buffer )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-14 23:14:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Cannot allocate %d bytes output buffer \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                bit_buffer_size ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ret  =  AVERROR ( ENOMEM ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-27 17:46:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        goto  fail ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* open each encoder */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_ostreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ost  =  ost_table [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ost - > encoding_needed )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            AVCodec  * codec  =  output_codecs [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! codec ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:28:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec  =  avcodec_find_encoder ( ost - > st - > codec - > codec_id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            if  ( ! codec )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-21 01:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                snprintf ( error ,  sizeof ( error ) ,  " Encoder (codec id %d) not found for output stream #%d.%d " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                         ost - > st - > codec - > codec_id ,  ost - > file_index ,  ost - > index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ret  =  AVERROR ( EINVAL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                goto  dump_format ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( avcodec_open ( ost - > st - > codec ,  codec )  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-21 01:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                snprintf ( error ,  sizeof ( error ) ,  " Error while opening encoder for output stream #%d.%d - maybe incorrect parameters such as bit_rate, rate, width or height " , 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        ost - > file_index ,  ost - > index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ret  =  AVERROR ( EINVAL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                goto  dump_format ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            extra_size  + =  ost - > st - > codec - > extradata_size ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* open each decoder */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_istreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ist  =  ist_table [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ist - > decoding_needed )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            AVCodec  * codec  =  input_codecs [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! codec ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:28:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                codec  =  avcodec_find_decoder ( ist - > st - > codec - > codec_id ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            if  ( ! codec )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-21 01:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                snprintf ( error ,  sizeof ( error ) ,  " Decoder (codec id %d) not found for input stream #%d.%d " , 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        ist - > st - > codec - > codec_id ,  ist - > file_index ,  ist - > index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ret  =  AVERROR ( EINVAL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                goto  dump_format ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( avcodec_open ( ist - > st - > codec ,  codec )  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-06-21 01:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                snprintf ( error ,  sizeof ( error ) ,  " Error while opening decoder for input stream #%d.%d " , 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                        ist - > file_index ,  ist - > index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ret  =  AVERROR ( EINVAL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                goto  dump_format ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            //if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            //    ist->st->codec->flags |= CODEC_FLAG_REPEAT_FIELD;
 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* init pts */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_istreams ; i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-23 22:06:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        AVStream  * st ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        ist  =  ist_table [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-23 22:06:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        st =  ist - > st ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ist - > pts  =  st - > avg_frame_rate . num  ?  -  st - > codec - > has_b_frames * AV_TIME_BASE  /  av_q2d ( st - > avg_frame_rate )  :  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-17 20:12:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ist - > next_pts  =  AV_NOPTS_VALUE ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 17:53:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ist - > is_start  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-02 22:23:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* set meta data information from input file if required */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( i = 0 ; i < nb_meta_data_maps ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        AVFormatContext  * out_file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        AVFormatContext  * in_file ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-01 14:54:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        AVMetadataTag  * mtag ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  out_file_index  =  meta_data_maps [ i ] . out_file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  in_file_index  =  meta_data_maps [ i ] . in_file ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-29 21:26:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( out_file_index  <  0  | |  out_file_index  > =  nb_output_files )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            snprintf ( error ,  sizeof ( error ) ,  " Invalid output file index %d map_meta_data(%d,%d) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     out_file_index ,  out_file_index ,  in_file_index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-02-13 18:26:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ret  =  AVERROR ( EINVAL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            goto  dump_format ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-29 21:26:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( in_file_index  <  0  | |  in_file_index  > =  nb_input_files )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            snprintf ( error ,  sizeof ( error ) ,  " Invalid input file index %d map_meta_data(%d,%d) " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                     in_file_index ,  out_file_index ,  in_file_index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-02-13 18:26:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ret  =  AVERROR ( EINVAL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            goto  dump_format ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        out_file  =  output_files [ out_file_index ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        in_file  =  input_files [ in_file_index ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-01 14:54:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mtag = NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        while ( ( mtag = av_metadata_get ( in_file - > metadata ,  " " ,  mtag ,  AV_METADATA_IGNORE_SUFFIX ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_metadata_set ( & out_file - > metadata ,  mtag - > key ,  mtag - > value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_metadata_conv ( out_file ,  out_file - > oformat - > metadata_conv , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    in_file - > iformat - > metadata_conv ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-19 07:44:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* copy chapters from the first input file that has them*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for  ( i  =  0 ;  i  <  nb_input_files ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ! input_files [ i ] - > nb_chapters ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  ( j  =  0 ;  j  <  nb_output_files ;  j + + ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ( ret  =  copy_chapters ( i ,  j ) )  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                goto  dump_format ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* open files and write file headers */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_output_files ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os  =  output_files [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( av_write_header ( os )  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            snprintf ( error ,  sizeof ( error ) ,  " Could not write header for output file #%d (incorrect codec parameters ?) " ,  i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-02-13 18:26:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ret  =  AVERROR ( EINVAL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            goto  dump_format ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-24 23:22:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-20 08:12:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( strcmp ( output_files [ i ] - > oformat - > name ,  " rtp " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            want_sdp  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 dump_format : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* dump the file output parameters - cannot be done before in case
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       of  stream  copy  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_output_files ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dump_format ( output_files [ i ] ,  i ,  output_files [ i ] - > filename ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* dump the stream mapping */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( verbose  > =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Stream mapping: \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( i = 0 ; i < nb_ostreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost  =  ost_table [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  "   Stream #%d.%d -> #%d.%d " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ist_table [ ost - > source_index ] - > file_index , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ist_table [ ost - > source_index ] - > index , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > file_index , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ost - > sync_ist  ! =  ist_table [ ost - > source_index ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                fprintf ( stderr ,  "  [sync #%d.%d] " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ost - > sync_ist - > file_index , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ost - > sync_ist - > index ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ret )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " %s \n " ,  error ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        goto  fail ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-08-20 08:12:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( want_sdp )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        print_sdp ( output_files ,  nb_output_files ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-29 21:26:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! using_stdin  & &  verbose  > =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-29 20:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Press [q] to stop encoding \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-03-14 19:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        url_set_interrupt_cb ( decode_interrupt_cb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-24 23:22:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    term_init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-16 16:13:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    timer_start  =  av_gettime ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-09 01:06:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-08-29 20:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for ( ;  received_sigterm  = =  0 ; )  { 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        int  file_index ,  ist_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        AVPacket  pkt ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-25 00:22:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        double  ipts_min ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        double  opts_min ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-29 22:56:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    redo : 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-25 00:22:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ipts_min =  1e100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opts_min =  1e100 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-24 23:22:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* if 'q' pressed, exits */ 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-29 20:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! using_stdin )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-03-14 19:40:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( q_pressed ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-30 02:38:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            /* read_key() returns 0 on EOF */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            key  =  read_key ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( key  = =  ' q ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-24 23:22:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* select the stream that we must read now by looking at the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           smallest  output  pts  */ 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        file_index  =  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for ( i = 0 ; i < nb_ostreams ; i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-29 22:56:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            double  ipts ,  opts ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ost  =  ost_table [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            os  =  output_files [ ost - > file_index ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ist  =  ist_table [ ost - > source_index ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-08 09:04:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( ist - > is_past_recording_time  | |  no_packet [ ist - > file_index ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 19:50:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                opts  =  ost - > st - > pts . val  *  av_q2d ( ost - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-29 22:56:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ipts  =  ( double ) ist - > pts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! file_table [ ist - > file_index ] . eof_reached ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if ( ipts  <  ipts_min )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ipts_min  =  ipts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if ( input_sync  )  file_index  =  ist - > file_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if ( opts  <  opts_min )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    opts_min  =  opts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if ( ! input_sync )  file_index  =  ist - > file_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( ost - > frame_number  > =  max_frames [ ost - > st - > codec - > codec_type ] ) { 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-30 16:03:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                file_index =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* if none, if is finished */ 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-09 01:06:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( file_index  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 19:50:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( no_packet_count ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                no_packet_count = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                memset ( no_packet ,  0 ,  sizeof ( no_packet ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 20:24:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                usleep ( 10000 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 19:50:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-03-22 18:20:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* finish if limit size exhausted */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-21 07:41:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( limit_filesize  ! =  0  & &  limit_filesize  <  url_ftell ( output_files [ 0 ] - > pb ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-03-22 18:20:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-11-10 18:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* read a frame from it and output it in the fifo */ 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        is  =  input_files [ file_index ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-22 12:04:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ret =  av_read_frame ( is ,  & pkt ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-20 01:23:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( ret  = =  AVERROR ( EAGAIN ) ) { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 19:50:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            no_packet [ file_index ] = 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            no_packet_count + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-22 12:04:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 19:50:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-22 12:04:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ret  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            file_table [ file_index ] . eof_reached  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-19 00:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( opt_shortest ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2004-01-22 19:48:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 19:50:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        no_packet_count = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        memset ( no_packet ,  0 ,  sizeof ( no_packet ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-11-10 18:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( do_pkt_dump )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 14:17:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_pkt_dump_log ( NULL ,  AV_LOG_DEBUG ,  & pkt ,  do_hex_dump ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-01-11 05:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* the following test is needed in case new streams appear
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           dynamically  in  stream  :  we  ignore  them  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( pkt . stream_index  > =  file_table [ file_index ] . nb_streams ) 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-25 22:25:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            goto  discard_packet ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        ist_index  =  file_table [ file_index ] . ist_index  +  pkt . stream_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ist  =  ist_table [ ist_index ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-25 22:25:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ist - > discard ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            goto  discard_packet ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-08-03 19:21:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( pkt . dts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pkt . dts  + =  av_rescale_q ( input_files_ts_offset [ ist - > file_index ] ,  AV_TIME_BASE_Q ,  ist - > st - > time_base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( pkt . pts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            pkt . pts  + =  av_rescale_q ( input_files_ts_offset [ ist - > file_index ] ,  AV_TIME_BASE_Q ,  ist - > st - > time_base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-13 22:55:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( input_files_ts_scale [ file_index ] [ pkt . stream_index ] ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( pkt . pts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                pkt . pts  * =  input_files_ts_scale [ file_index ] [ pkt . stream_index ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( pkt . dts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                pkt . dts  * =  input_files_ts_scale [ file_index ] [ pkt . stream_index ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-11-01 22:39:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//        fprintf(stderr, "next:%"PRId64" dts:%"PRId64" off:%"PRId64" %d\n", ist->next_pts, pkt.dts, input_files_ts_offset[ist->file_index], ist->st->codec->codec_type);
  
						 
					
						
							
								
									
										
										
										
											2008-10-09 18:28:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( pkt . dts  ! =  AV_NOPTS_VALUE  & &  ist - > next_pts  ! =  AV_NOPTS_VALUE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            & &  ( is - > iformat - > flags  &  AVFMT_TS_DISCONT ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 18:54:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            int64_t  pkt_dts =  av_rescale_q ( pkt . dts ,  ist - > st - > time_base ,  AV_TIME_BASE_Q ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            int64_t  delta =  pkt_dts  -  ist - > next_pts ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( ( FFABS ( delta )  >  1LL * dts_delta_threshold * AV_TIME_BASE  | |  pkt_dts + 1 < ist - > pts ) & &  ! copy_ts ) { 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-12 03:41:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                input_files_ts_offset [ ist - > file_index ] - =  delta ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( verbose  >  2 ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-12 01:56:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    fprintf ( stderr ,  " timestamp discontinuity % " PRId64 " , new offset= % " PRId64 " \n " ,  delta ,  input_files_ts_offset [ ist - > file_index ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-03 19:21:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                pkt . dts - =  av_rescale_q ( delta ,  AV_TIME_BASE_Q ,  ist - > st - > time_base ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if ( pkt . pts  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    pkt . pts - =  av_rescale_q ( delta ,  AV_TIME_BASE_Q ,  ist - > st - > time_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-12 03:41:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 22:08:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* finish if recording time exhausted */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-26 14:46:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( recording_time  ! =  INT64_MAX  & & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_compare_ts ( pkt . pts ,  ist - > st - > time_base ,  recording_time  +  start_time ,  ( AVRational ) { 1 ,  1000000 } )  > =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-08 09:04:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ist - > is_past_recording_time  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 22:08:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            goto  discard_packet ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-08 09:04:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-01 22:08:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-10-21 10:55:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        //fprintf(stderr,"read #%d.%d size=%d\n", ist->file_index, ist->index, pkt.size);
 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( output_packet ( ist ,  ist_index ,  ost_table ,  nb_ostreams ,  & pkt )  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-11 13:50:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( verbose  > =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                fprintf ( stderr ,  " Error while decoding stream #%d.%d \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ist - > file_index ,  ist - > index ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 23:23:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( exit_on_error ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_free_packet ( & pkt ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            goto  redo ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-10-14 14:36:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-05-25 22:25:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    discard_packet : 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        av_free_packet ( & pkt ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-21 17:42:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* dump report by using the output first video and audio streams */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        print_report ( output_files ,  ost_table ,  nb_ostreams ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-15 14:43:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* at the end of stream, we must flush the decoder buffers */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_istreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ist  =  ist_table [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ist - > decoding_needed )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            output_packet ( ist ,  i ,  ost_table ,  nb_ostreams ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-09-24 23:22:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    term_exit ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-03-05 22:51:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* write the trailer if needed and close file */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_output_files ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        os  =  output_files [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_write_trailer ( os ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-04-15 16:34:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* dump report by using the first video and audio streams */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    print_report ( output_files ,  ost_table ,  nb_ostreams ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* close each encoder */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_ostreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ost  =  ost_table [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ost - > encoding_needed )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_freep ( & ost - > st - > codec - > stats_in ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            avcodec_close ( ost - > st - > codec ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* close each decoder */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < nb_istreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ist  =  ist_table [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( ist - > decoding_needed )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            avcodec_close ( ist - > st - > codec ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* finished ! */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:13:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ret  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 06:06:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 fail : 
							 
						 
					
						
							
								
									
										
										
										
											2005-01-12 18:12:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_freep ( & bit_buffer ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-18 23:17:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_free ( file_table ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-08-13 21:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  ( ist_table )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( i = 0 ; i < nb_istreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ist  =  ist_table [ i ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-18 23:17:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_free ( ist ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-18 23:17:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_free ( ist_table ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ost_table )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( i = 0 ; i < nb_ostreams ; i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ost  =  ost_table [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ost )  { 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-10 17:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ost - > logfile )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    fclose ( ost - > logfile ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ost - > logfile  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-08 14:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                av_fifo_free ( ost - > fifo ) ;  /* works even if fifo is not
 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-21 07:31:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                             initialized  but  set  to  zero  */ 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-18 23:17:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                av_free ( ost - > pict_tmp . data [ 0 ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                if  ( ost - > video_resample ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-02 11:50:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    sws_freeContext ( ost - > img_resample_ctx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-01-07 20:42:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ost - > resample ) 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								                    audio_resample_close ( ost - > resample ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ost - > reformat_ctx ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    av_audio_convert_free ( ost - > reformat_ctx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-18 23:17:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                av_free ( ost ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-18 23:17:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_free ( ost_table ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_format ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2003-01-11 05:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* compatibility stuff for pgmyuv */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! strcmp ( arg ,  " pgmyuv " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-11 18:09:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        pgmyuv_compatibility_hack = 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-14 22:30:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//        opt_image_format(arg);
  
						 
					
						
							
								
									
										
										
										
											2004-11-11 18:09:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        arg  =  " image2 " ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 10:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " pgmyuv format is deprecated, use image2 \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-01-11 05:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 09:57:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    last_asked_format  =  arg ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-01-02 10:22:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_video_rc_override_string ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2002-10-15 15:07:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    video_rc_override_string  =  arg ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-04-22 20:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_me_threshold ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2004-04-23 19:06:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-04-22 20:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    me_threshold  =  parse_number_or_die ( opt ,  arg ,  OPT_INT64 ,  INT_MIN ,  INT_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-23 19:06:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-04-22 20:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_verbose ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2003-09-03 12:13:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-05-25 20:34:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    verbose  =  parse_number_or_die ( opt ,  arg ,  OPT_INT64 ,  - 10 ,  10 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-22 20:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-09-03 12:13:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 12:07:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_frame_rate ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2007-06-18 08:08:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( av_parse_video_frame_rate ( & frame_rate ,  arg )  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 12:07:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect value for %s: %s \n " ,  opt ,  arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-07-12 07:37:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 12:07:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-01-02 10:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_bitrate ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2007-11-04 02:03:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  codec_type  =  opt [ 0 ] = = ' a '  ?  AVMEDIA_TYPE_AUDIO  :  AVMEDIA_TYPE_VIDEO ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-04 02:03:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    opt_default ( opt ,  arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 23:32:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( av_get_int ( avcodec_opts [ codec_type ] ,  " b " ,  NULL )  <  1000 ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-04 02:03:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " WARNING: The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-01-02 10:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-04 02:03:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_frame_crop_top ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    frame_topBand  =  atoi ( arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( frame_topBand  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect top crop size \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ( frame_topBand )  > =  frame_height ) { 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Vertical crop dimensions are outside the range of the original image. \n Remember to crop first and scale second. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    frame_height  - =  frame_topBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_frame_crop_bottom ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    frame_bottomBand  =  atoi ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( frame_bottomBand  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect bottom crop size \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ( frame_bottomBand )  > =  frame_height ) { 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Vertical crop dimensions are outside the range of the original image. \n Remember to crop first and scale second. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    frame_height  - =  frame_bottomBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_frame_crop_left ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    frame_leftBand  =  atoi ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( frame_leftBand  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect left crop size \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ( frame_leftBand )  > =  frame_width ) { 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Horizontal crop dimensions are outside the range of the original image. \n Remember to crop first and scale second. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    frame_width  - =  frame_leftBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_frame_crop_right ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    frame_rightBand  =  atoi ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( frame_rightBand  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect right crop size \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ( frame_rightBand )  > =  frame_width ) { 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Horizontal crop dimensions are outside the range of the original image. \n Remember to crop first and scale second. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-09-01 07:19:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    frame_width  - =  frame_rightBand ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_frame_size ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2007-06-18 08:08:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( av_parse_video_frame_size ( & frame_width ,  & frame_height ,  arg )  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect frame size \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_pad_color ( const  char  * arg )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* Input is expected to be six hex digits similar to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       how  colors  are  expressed  in  html  tags  ( but  without  the  # )  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  rgb  =  strtol ( arg ,  NULL ,  16 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  r , g , b ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    r  =  ( rgb  > >  16 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    g  =  ( ( rgb  > >  8 )  &  255 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    b  =  ( rgb  &  255 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    padcolor [ 0 ]  =  RGB_TO_Y ( r , g , b ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    padcolor [ 1 ]  =  RGB_TO_U ( r , g , b , 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    padcolor [ 2 ]  =  RGB_TO_V ( r , g , b , 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  opt_frame_pad_top ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    frame_padtop  =  atoi ( arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( frame_padtop  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect top pad size \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  opt_frame_pad_bottom ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    frame_padbottom  =  atoi ( arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( frame_padbottom  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect bottom pad size \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  opt_frame_pad_left ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    frame_padleft  =  atoi ( arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( frame_padleft  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect left pad size \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  opt_frame_pad_right ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    frame_padright  =  atoi ( arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( frame_padright  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect right pad size \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-05-07 19:01:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_frame_pix_fmt ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-03-19 22:29:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( strcmp ( arg ,  " list " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-30 19:10:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        frame_pix_fmt  =  av_get_pix_fmt ( arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-19 22:29:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( frame_pix_fmt  = =  PIX_FMT_NONE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Unknown pixel format requested: %s \n " ,  arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-03 19:55:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        show_pix_fmts ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-30 14:20:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2003-05-07 19:01:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-04-29 19:46:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_frame_aspect_ratio ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  x  =  0 ,  y  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    double  ar  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * p ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    char  * end ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-04-29 19:46:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    p  =  strchr ( arg ,  ' : ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( p )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        x  =  strtol ( arg ,  & end ,  10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( end  = =  p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            y  =  strtol ( end + 1 ,  & end ,  10 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( x  >  0  & &  y  >  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ar  =  ( double ) x  /  ( double ) y ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-04-29 19:46:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ar  =  strtod ( arg ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-04-29 19:46:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! ar )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Incorrect aspect ratio specification. \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-04-29 19:46:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    frame_aspect_ratio  =  ar ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-01 14:54:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_metadata ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  * mid =  strchr ( arg ,  ' = ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ! mid ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Missing = \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * mid + + =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    metadata_count + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    metadata =  av_realloc ( metadata ,  sizeof ( * metadata ) * metadata_count ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    metadata [ metadata_count - 1 ] . key   =  av_strdup ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    metadata [ metadata_count - 1 ] . value =  av_strdup ( mid ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_qscale ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2003-10-07 11:32:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    video_qscale  =  atof ( arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-05-28 12:38:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( video_qscale  < =  0  | | 
							 
						 
					
						
							
								
									
										
										
										
											2003-10-07 11:32:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_qscale  >  255 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-05-28 12:38:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " qscale must be > 0.0 and <= 255 \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-12-30 16:07:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_top_field_first ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    top_field_first =  atoi ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-06-12 21:21:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_thread_count ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2004-02-13 17:54:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-06-12 21:21:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    thread_count =  parse_number_or_die ( opt ,  arg ,  OPT_INT64 ,  0 ,  INT_MAX ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if !HAVE_THREADS 
  
						 
					
						
							
								
									
										
										
										
											2004-04-11 13:50:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( verbose  > =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Warning: not compiled with thread support, using thread emulation \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-02-13 22:18:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2008-06-12 21:21:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-02-13 17:54:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-31 13:11:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_audio_sample_fmt ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( strcmp ( arg ,  " list " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        audio_sample_fmt  =  avcodec_get_sample_fmt ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        list_fmts ( avcodec_sample_fmt_string ,  SAMPLE_FMT_NB ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_exit ( 0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-04-22 20:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_audio_rate ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-04-22 20:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    audio_sample_rate  =  parse_number_or_die ( opt ,  arg ,  OPT_INT64 ,  0 ,  INT_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-04-22 20:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_audio_channels ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-04-22 20:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    audio_channels  =  parse_number_or_die ( opt ,  arg ,  OPT_INT64 ,  0 ,  INT_MAX ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_video_channel ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2003-01-23 18:44:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    video_channel  =  strtol ( arg ,  NULL ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-06-25 10:21:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_video_standard ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    video_standard  =  av_strdup ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_codec ( int  * pstream_copy ,  char  * * pcodec_name ,  
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                      int  codec_type ,  const  char  * arg ) 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_freep ( pcodec_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! strcmp ( arg ,  " copy " ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        * pstream_copy  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        * pcodec_name  =  av_strdup ( arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_audio_codec ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    opt_codec ( & audio_stream_copy ,  & audio_codec_name ,  AVMEDIA_TYPE_AUDIO ,  arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-10-16 01:51:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_audio_tag ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  * tail ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    audio_codec_tag =  strtol ( arg ,  & tail ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ! tail  | |  * tail ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        audio_codec_tag =  arg [ 0 ]  +  ( arg [ 1 ] < < 8 )  +  ( arg [ 2 ] < < 16 )  +  ( arg [ 3 ] < < 24 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  opt_video_tag ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  * tail ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    video_codec_tag =  strtol ( arg ,  & tail ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ! tail  | |  * tail ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_codec_tag =  arg [ 0 ]  +  ( arg [ 1 ] < < 8 )  +  ( arg [ 2 ] < < 16 )  +  ( arg [ 3 ] < < 24 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_video_codec ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    opt_codec ( & video_stream_copy ,  & video_codec_name ,  AVMEDIA_TYPE_VIDEO ,  arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_subtitle_codec ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    opt_codec ( & subtitle_stream_copy ,  & subtitle_codec_name ,  AVMEDIA_TYPE_SUBTITLE ,  arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 08:14:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_subtitle_tag ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  * tail ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    subtitle_codec_tag =  strtol ( arg ,  & tail ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ! tail  | |  * tail ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        subtitle_codec_tag =  arg [ 0 ]  +  ( arg [ 1 ] < < 8 )  +  ( arg [ 2 ] < < 16 )  +  ( arg [ 3 ] < < 24 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_map ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVStreamMap  * m ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    char  * p ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    m  =  & stream_maps [ nb_stream_maps + + ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m - > file_index  =  strtol ( arg ,  & p ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  ( * p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        p + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-11 23:27:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m - > stream_index  =  strtol ( p ,  & p ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( * p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        p + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        m - > sync_file_index  =  strtol ( p ,  & p ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( * p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            p + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        m - > sync_stream_index  =  strtol ( p ,  & p ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m - > sync_file_index  =  m - > file_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        m - > sync_stream_index  =  m - > stream_index ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_map_meta_data ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVMetaDataMap  * m ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    char  * p ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m  =  & meta_data_maps [ nb_meta_data_maps + + ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m - > out_file  =  strtol ( arg ,  & p ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( * p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        p + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-02-02 00:54:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    m - > in_file  =  strtol ( p ,  & p ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-07-13 22:55:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_input_ts_scale ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    unsigned  int  stream ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    double  scale ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  * p ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    stream  =  strtol ( arg ,  & p ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( * p ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        p + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    scale =  strtod ( p ,  & p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( stream  > =  MAX_STREAMS ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    input_files_ts_scale [ nb_input_files ] [ stream ] =  scale ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 15:12:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_recording_time ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-03-22 15:12:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    recording_time  =  parse_time_or_die ( opt ,  arg ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 15:12:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_start_time ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2003-10-21 10:55:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-03-22 15:12:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    start_time  =  parse_time_or_die ( opt ,  arg ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-10-21 10:55:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 15:12:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_rec_timestamp ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2004-04-06 06:31:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-03-22 15:12:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    rec_timestamp  =  parse_time_or_die ( opt ,  arg ,  0 )  /  1000000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-06 06:31:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 15:12:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_input_ts_offset ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2004-06-11 22:03:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-03-22 15:12:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    input_ts_offset  =  parse_time_or_die ( opt ,  arg ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-11 22:03:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  enum  CodecID  find_codec_or_die ( const  char  * name ,  int  type ,  int  encoder )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-02-04 00:37:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  char  * codec_string  =  encoder  ?  " encoder "  :  " decoder " ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVCodec  * codec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ! name ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  CODEC_ID_NONE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    codec  =  encoder  ? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        avcodec_find_encoder_by_name ( name )  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        avcodec_find_decoder_by_name ( name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ! codec )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-16 16:14:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Unknown %s '%s' \n " ,  codec_string ,  name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( codec - > type  ! =  type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-16 16:14:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Invalid %s type '%s' \n " ,  codec_string ,  name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  codec - > id ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_input_file ( const  char  * filename )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVFormatContext  * ic ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVFormatParameters  params ,  * ap  =  & params ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 09:57:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVInputFormat  * file_iformat  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-03-12 15:16:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  err ,  i ,  ret ,  rfps ,  rfps_base ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-20 15:49:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int64_t  timestamp ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 09:57:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( last_asked_format )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-02 00:01:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! ( file_iformat  =  av_find_input_format ( last_asked_format ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Unknown input format: '%s' \n " ,  last_asked_format ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 09:57:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        last_asked_format  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-11-19 19:08:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! strcmp ( filename ,  " - " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        filename  =  " pipe: " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    using_stdin  | =  ! strncmp ( filename ,  " pipe: " ,  5 )  | | 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-29 21:26:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ! strcmp ( filename ,  " /dev/stdin " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-29 20:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* get default parameters from command line */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-08 08:27:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ic  =  avformat_alloc_context ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-12 17:22:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! ic )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        print_error ( filename ,  AVERROR ( ENOMEM ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-27 12:14:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    memset ( ap ,  0 ,  sizeof ( * ap ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-27 12:14:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ap - > prealloced_context  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ap - > sample_rate  =  audio_sample_rate ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ap - > channels  =  audio_channels ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-18 08:08:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ap - > time_base . den  =  frame_rate . num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ap - > time_base . num  =  frame_rate . den ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ap - > width  =  frame_width  +  frame_padleft  +  frame_padright ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ap - > height  =  frame_height  +  frame_padtop  +  frame_padbottom ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-05-07 19:01:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ap - > pix_fmt  =  frame_pix_fmt ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   // ap->sample_fmt = audio_sample_fmt; //FIXME:not implemented in libavformat
 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-20 04:57:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ap - > channel  =  video_channel ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ap - > standard  =  video_standard ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-06-12 11:28:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set_context_opts ( ic ,  avformat_opts ,  AV_OPT_FLAG_DECODING_PARAM ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-19 10:56:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ic - > video_codec_id    =  find_codec_or_die ( video_codec_name    ,  AVMEDIA_TYPE_VIDEO    ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ic - > audio_codec_id    =  find_codec_or_die ( audio_codec_name    ,  AVMEDIA_TYPE_AUDIO    ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ic - > subtitle_codec_id =  find_codec_or_die ( subtitle_codec_name ,  AVMEDIA_TYPE_SUBTITLE ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 20:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ic - > flags  | =  AVFMT_FLAG_NONBLOCK ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-19 10:56:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-28 16:17:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( pgmyuv_compatibility_hack ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ic - > video_codec_id =  CODEC_ID_PGMYUV ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* open the input file with generic libav function */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    err  =  av_open_input_file ( & ic ,  filename ,  file_iformat ,  0 ,  ap ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  ( err  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        print_error ( filename ,  err ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-27 18:46:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( opt_programid )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-23 15:08:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        int  i ,  j ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  found = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( i = 0 ;  i < ic - > nb_streams ;  i + + ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ic - > streams [ i ] - > discard =  AVDISCARD_ALL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( i = 0 ;  i < ic - > nb_programs ;  i + + ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            AVProgram  * p =  ic - > programs [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( p - > id  ! =  opt_programid ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                p - > discard  =  AVDISCARD_ALL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                found = 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for ( j = 0 ;  j < p - > nb_stream_indexes ;  j + + ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    ic - > streams [ p - > stream_index [ j ] ] - > discard =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( ! found ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Specified program id not found \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_programid = 0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-27 18:46:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-15 14:22:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-07-13 21:13:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ic - > loop_input  =  loop_input ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* If not enough info to get the stream parameters, we decode the
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								       first  frames  to  get  it .  ( used  in  mpeg  case  for  example )  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ret  =  av_find_stream_info ( ic ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-11 13:50:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ret  <  0  & &  verbose  > =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " %s: could not find codec parameters \n " ,  filename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-09-20 15:49:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    timestamp  =  start_time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* add the stream start time */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ic - > start_time  ! =  AV_NOPTS_VALUE ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        timestamp  + =  ic - > start_time ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-11-10 18:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* if seeking requested, we execute it */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( start_time  ! =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-10 22:05:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ret  =  av_seek_frame ( ic ,  - 1 ,  timestamp ,  AVSEEK_FLAG_BACKWARD ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-10 18:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ret  <  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " %s: could not seek to position %0.3f \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-10 18:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    filename ,  ( double ) timestamp  /  AV_TIME_BASE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* reset seek info */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        start_time  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* update the current parameters so that they match the one of the input stream */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i = 0 ; i < ic - > nb_streams ; i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 03:23:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        AVStream  * st  =  ic - > streams [ i ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        AVCodecContext  * enc  =  st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-20 22:55:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        avcodec_thread_init ( enc ,  thread_count ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        switch ( enc - > codec_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        case  AVMEDIA_TYPE_AUDIO : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set_context_opts ( enc ,  avcodec_opts [ AVMEDIA_TYPE_AUDIO ] ,  AV_OPT_FLAG_AUDIO_PARAM  |  AV_OPT_FLAG_DECODING_PARAM ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-04-09 04:52:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            //fprintf(stderr, "\nInput Audio channels: %d", enc->channels);
 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-29 19:32:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            channel_layout  =  enc - > channel_layout ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            audio_channels  =  enc - > channels ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            audio_sample_rate  =  enc - > sample_rate ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            audio_sample_fmt  =  enc - > sample_fmt ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            input_codecs [ nb_icodecs + + ]  =  avcodec_find_decoder_by_name ( audio_codec_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-01-22 01:48:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( audio_disable ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 03:23:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                st - > discard =  AVDISCARD_ALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        case  AVMEDIA_TYPE_VIDEO : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set_context_opts ( enc ,  avcodec_opts [ AVMEDIA_TYPE_VIDEO ] ,  AV_OPT_FLAG_VIDEO_PARAM  |  AV_OPT_FLAG_DECODING_PARAM ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            frame_height  =  enc - > height ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            frame_width  =  enc - > width ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 23:13:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( ic - > streams [ i ] - > sample_aspect_ratio . num ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                frame_aspect_ratio = av_q2d ( ic - > streams [ i ] - > sample_aspect_ratio ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                frame_aspect_ratio = av_q2d ( enc - > sample_aspect_ratio ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            frame_aspect_ratio  * =  ( float )  enc - > width  /  enc - > height ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-22 01:10:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            frame_pix_fmt  =  enc - > pix_fmt ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            rfps       =  ic - > streams [ i ] - > r_frame_rate . num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            rfps_base  =  ic - > streams [ i ] - > r_frame_rate . den ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-05 17:51:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( enc - > lowres )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                enc - > flags  | =  CODEC_FLAG_EMU_EDGE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                frame_height  > > =  enc - > lowres ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                frame_width   > > =  enc - > lowres ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-23 19:06:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( me_threshold ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                enc - > debug  | =  FF_DEBUG_MV ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-11-08 18:35:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( enc - > time_base . den  ! =  rfps  | |  enc - > time_base . num  ! =  rfps_base )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-11 13:50:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                if  ( verbose  > =  0 ) 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-09 13:12:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    fprintf ( stderr , " \n Seems stream %d codec frame rate differs from container frame rate: %2.2f (%d/%d) -> %2.2f (%d/%d) \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            i ,  ( float ) enc - > time_base . den  /  enc - > time_base . num ,  enc - > time_base . den ,  enc - > time_base . num , 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-11 13:50:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-12-19 01:23:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    ( float ) rfps  /  rfps_base ,  rfps ,  rfps_base ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-25 22:25:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            /* update the current frame rate to match the stream frame rate */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-18 08:08:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            frame_rate . num  =  rfps ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            frame_rate . den  =  rfps_base ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-03-07 12:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            input_codecs [ nb_icodecs + + ]  =  avcodec_find_decoder_by_name ( video_codec_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-01-22 01:48:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( video_disable ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 03:23:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                st - > discard =  AVDISCARD_ALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-03-17 01:25:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else  if ( video_discard ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 03:23:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                st - > discard =  video_discard ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        case  AVMEDIA_TYPE_DATA : 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-10 18:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        case  AVMEDIA_TYPE_SUBTITLE : 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            input_codecs [ nb_icodecs + + ]  =  avcodec_find_decoder_by_name ( subtitle_codec_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( subtitle_disable ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 03:23:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                st - > discard  =  AVDISCARD_ALL ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        case  AVMEDIA_TYPE_ATTACHMENT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  AVMEDIA_TYPE_UNKNOWN : 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            nb_icodecs + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-10 23:41:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-09 01:06:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        default : 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-02 07:43:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            abort ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    input_files [ nb_input_files ]  =  ic ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-09-20 15:49:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    input_files_ts_offset [ nb_input_files ]  =  input_ts_offset  -  ( copy_ts  ?  0  :  timestamp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    /* dump the file content */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-11 13:50:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( verbose  > =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dump_format ( ic ,  nb_input_files ,  filename ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    nb_input_files + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-03-07 12:37:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-10-20 04:57:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    video_channel  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-12-21 10:08:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_freep ( & video_codec_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_freep ( & audio_codec_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_freep ( & subtitle_codec_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  check_audio_video_sub_inputs ( int  * has_video_ptr ,  int  * has_audio_ptr ,  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                         int  * has_subtitle_ptr ) 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  has_video ,  has_audio ,  has_subtitle ,  i ,  j ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVFormatContext  * ic ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    has_video  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    has_audio  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    has_subtitle  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for ( j = 0 ; j < nb_input_files ; j + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ic  =  input_files [ j ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( i = 0 ; i < ic - > nb_streams ; i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            AVCodecContext  * enc  =  ic - > streams [ i ] - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            switch ( enc - > codec_type )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_AUDIO : 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                has_audio  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_VIDEO : 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                has_video  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_SUBTITLE : 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                has_subtitle  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_DATA : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_ATTACHMENT : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            case  AVMEDIA_TYPE_UNKNOWN : 
							 
						 
					
						
							
								
									
										
										
										
											2004-03-26 17:40:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-09 01:06:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            default : 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-02 07:43:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                abort ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * has_video_ptr  =  has_video ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * has_audio_ptr  =  has_audio ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    * has_subtitle_ptr  =  has_subtitle ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  new_video_stream ( AVFormatContext  * oc )  
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVStream  * st ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVCodecContext  * video_enc ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-04 08:18:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    enum  CodecID  codec_id ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    st  =  av_new_stream ( oc ,  oc - > nb_streams ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! st )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Could not alloc stream \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    avcodec_get_context_defaults2 ( st - > codec ,  AVMEDIA_TYPE_VIDEO ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bitstream_filters [ nb_output_files ] [ oc - > nb_streams  -  1 ] =  video_bitstream_filters ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    video_bitstream_filters =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-20 22:55:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    avcodec_thread_init ( st - > codec ,  thread_count ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    video_enc  =  st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( video_codec_tag ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_enc - > codec_tag =  video_codec_tag ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-27 00:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if (    ( video_global_header & 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-09-12 10:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								       | |  ( video_global_header = = 0  & &  ( oc - > oformat - > flags  &  AVFMT_GLOBALHEADER ) ) ) { 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_enc - > flags  | =  CODEC_FLAG_GLOBAL_HEADER ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        avcodec_opts [ AVMEDIA_TYPE_VIDEO ] - > flags | =  CODEC_FLAG_GLOBAL_HEADER ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-09-12 10:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( video_global_header & 2 ) { 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-27 00:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_enc - > flags2  | =  CODEC_FLAG2_LOCAL_HEADER ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        avcodec_opts [ AVMEDIA_TYPE_VIDEO ] - > flags2 | =  CODEC_FLAG2_LOCAL_HEADER ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-09-12 10:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-27 00:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( video_stream_copy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        st - > stream_copy  =  1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_enc - > codec_type  =  AVMEDIA_TYPE_VIDEO ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-28 23:24:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_enc - > sample_aspect_ratio  = 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 23:13:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        st - > sample_aspect_ratio  =  av_d2q ( frame_aspect_ratio * frame_height / frame_width ,  255 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-01-02 10:22:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  char  * p ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        AVCodec  * codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-26 22:28:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        AVRational  fps =  frame_rate . num  ?  frame_rate  :  ( AVRational ) { 25 , 1 } ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( video_codec_name )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            codec_id  =  find_codec_or_die ( video_codec_name ,  AVMEDIA_TYPE_VIDEO ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            codec  =  avcodec_find_encoder_by_name ( video_codec_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            output_codecs [ nb_ocodecs ]  =  codec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            codec_id  =  av_guess_codec ( oc - > oformat ,  NULL ,  oc - > filename ,  NULL ,  AVMEDIA_TYPE_VIDEO ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            codec  =  avcodec_find_encoder ( codec_id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_enc - > codec_id  =  codec_id ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        set_context_opts ( video_enc ,  avcodec_opts [ AVMEDIA_TYPE_VIDEO ] ,  AV_OPT_FLAG_VIDEO_PARAM  |  AV_OPT_FLAG_ENCODING_PARAM ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-09-28 17:34:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( codec  & &  codec - > supported_framerates  & &  ! force_fps ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fps  =  codec - > supported_framerates [ av_find_nearest_q_idx ( fps ,  codec - > supported_framerates ) ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-26 22:28:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_enc - > time_base . den  =  fps . num ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_enc - > time_base . num  =  fps . den ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_enc - > width  =  frame_width  +  frame_padright  +  frame_padleft ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_enc - > height  =  frame_height  +  frame_padtop  +  frame_padbottom ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-08-05 12:54:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_enc - > sample_aspect_ratio  =  av_d2q ( frame_aspect_ratio * video_enc - > height / video_enc - > width ,  255 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_enc - > pix_fmt  =  frame_pix_fmt ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 23:13:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        st - > sample_aspect_ratio  =  video_enc - > sample_aspect_ratio ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 19:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        choose_pixel_fmt ( st ,  codec ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-15 17:40:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( intra_only ) 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            video_enc - > gop_size  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( video_qscale  | |  same_quality )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            video_enc - > flags  | =  CODEC_FLAG_QSCALE ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            video_enc - > global_quality = 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                st - > quality  =  FF_QP2LAMBDA  *  video_qscale ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( intra_matrix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            video_enc - > intra_matrix  =  intra_matrix ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( inter_matrix ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            video_enc - > inter_matrix  =  inter_matrix ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        p =  video_rc_override_string ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for ( i = 0 ;  p ;  i + + ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            int  start ,  end ,  q ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            int  e = sscanf ( p ,  " %d,%d,%d " ,  & start ,  & end ,  & q ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( e ! = 3 ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                fprintf ( stderr ,  " error parsing rc_override \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            video_enc - > rc_override = 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                av_realloc ( video_enc - > rc_override , 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           sizeof ( RcOverride ) * ( i + 1 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            video_enc - > rc_override [ i ] . start_frame =  start ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            video_enc - > rc_override [ i ] . end_frame   =  end ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( q > 0 ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                video_enc - > rc_override [ i ] . qscale =  q ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                video_enc - > rc_override [ i ] . quality_factor =  1.0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            else { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                video_enc - > rc_override [ i ] . qscale =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                video_enc - > rc_override [ i ] . quality_factor =  - q / 100.0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            p =  strchr ( p ,  ' / ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( p )  p + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_enc - > rc_override_count = i ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-22 10:01:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! video_enc - > rc_initial_buffer_occupancy ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            video_enc - > rc_initial_buffer_occupancy  =  video_enc - > rc_buffer_size * 3 / 4 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_enc - > me_threshold =  me_threshold ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_enc - > intra_dc_precision =  intra_dc_precision  -  8 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( do_psnr ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            video_enc - > flags | =  CODEC_FLAG_PSNR ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* two pass mode */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( do_pass )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( do_pass  = =  1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                video_enc - > flags  | =  CODEC_FLAG_PASS1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                video_enc - > flags  | =  CODEC_FLAG_PASS2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    nb_ocodecs + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-16 12:08:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( video_language )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_metadata_set ( & st - > metadata ,  " language " ,  video_language ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_freep ( & video_language ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* reset some key parameters */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    video_disable  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_freep ( & video_codec_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    video_stream_copy  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-01 16:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    frame_pix_fmt  =  PIX_FMT_NONE ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  new_audio_stream ( AVFormatContext  * oc )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVStream  * st ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVCodecContext  * audio_enc ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-04 08:18:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    enum  CodecID  codec_id ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    st  =  av_new_stream ( oc ,  oc - > nb_streams ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! st )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Could not alloc stream \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    avcodec_get_context_defaults2 ( st - > codec ,  AVMEDIA_TYPE_AUDIO ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bitstream_filters [ nb_output_files ] [ oc - > nb_streams  -  1 ] =  audio_bitstream_filters ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    audio_bitstream_filters =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-20 22:55:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    avcodec_thread_init ( st - > codec ,  thread_count ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    audio_enc  =  st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    audio_enc - > codec_type  =  AVMEDIA_TYPE_AUDIO ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( audio_codec_tag ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        audio_enc - > codec_tag =  audio_codec_tag ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-09-12 10:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( oc - > oformat - > flags  &  AVFMT_GLOBALHEADER )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        audio_enc - > flags  | =  CODEC_FLAG_GLOBAL_HEADER ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        avcodec_opts [ AVMEDIA_TYPE_AUDIO ] - > flags | =  CODEC_FLAG_GLOBAL_HEADER ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-09-12 10:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( audio_stream_copy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        st - > stream_copy  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        audio_enc - > channels  =  audio_channels ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        AVCodec  * codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        set_context_opts ( audio_enc ,  avcodec_opts [ AVMEDIA_TYPE_AUDIO ] ,  AV_OPT_FLAG_AUDIO_PARAM  |  AV_OPT_FLAG_ENCODING_PARAM ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( audio_codec_name )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            codec_id  =  find_codec_or_die ( audio_codec_name ,  AVMEDIA_TYPE_AUDIO ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            codec  =  avcodec_find_encoder_by_name ( audio_codec_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            output_codecs [ nb_ocodecs ]  =  codec ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            codec_id  =  av_guess_codec ( oc - > oformat ,  NULL ,  oc - > filename ,  NULL ,  AVMEDIA_TYPE_AUDIO ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            codec  =  avcodec_find_encoder ( codec_id ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        audio_enc - > codec_id  =  codec_id ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-08-21 20:27:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( audio_qscale  >  QSCALE_NONE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            audio_enc - > flags  | =  CODEC_FLAG_QSCALE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            audio_enc - > global_quality  =  st - > quality  =  FF_QP2LAMBDA  *  audio_qscale ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-25 09:46:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        audio_enc - > channels  =  audio_channels ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        audio_enc - > sample_fmt  =  audio_sample_fmt ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-29 19:32:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        audio_enc - > channel_layout  =  channel_layout ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-19 14:05:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( avcodec_channel_layout_num_channels ( channel_layout )  ! =  audio_channels ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            audio_enc - > channel_layout  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 19:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        choose_sample_fmt ( st ,  codec ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    nb_ocodecs + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    audio_enc - > sample_rate  =  audio_sample_rate ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-09-04 09:00:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    audio_enc - > time_base =  ( AVRational ) { 1 ,  audio_sample_rate } ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( audio_language )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-01 15:58:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_metadata_set ( & st - > metadata ,  " language " ,  audio_language ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 20:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_freep ( & audio_language ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* reset some key parameters */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    audio_disable  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_freep ( & audio_codec_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    audio_stream_copy  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  new_subtitle_stream ( AVFormatContext  * oc )  
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVStream  * st ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVCodecContext  * subtitle_enc ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    st  =  av_new_stream ( oc ,  oc - > nb_streams ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! st )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Could not alloc stream \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    avcodec_get_context_defaults2 ( st - > codec ,  AVMEDIA_TYPE_SUBTITLE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-01-28 21:13:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bitstream_filters [ nb_output_files ] [ oc - > nb_streams  -  1 ] =  subtitle_bitstream_filters ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    subtitle_bitstream_filters =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    subtitle_enc  =  st - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    subtitle_enc - > codec_type  =  AVMEDIA_TYPE_SUBTITLE ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 08:14:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( subtitle_codec_tag ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        subtitle_enc - > codec_tag =  subtitle_codec_tag ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( subtitle_stream_copy )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        st - > stream_copy  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        set_context_opts ( avcodec_opts [ AVMEDIA_TYPE_SUBTITLE ] ,  subtitle_enc ,  AV_OPT_FLAG_SUBTITLE_PARAM  |  AV_OPT_FLAG_ENCODING_PARAM ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        subtitle_enc - > codec_id  =  find_codec_or_die ( subtitle_codec_name ,  AVMEDIA_TYPE_SUBTITLE ,  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        output_codecs [ nb_ocodecs ]  =  avcodec_find_encoder_by_name ( subtitle_codec_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-08 17:27:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    nb_ocodecs + + ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( subtitle_language )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-01 15:58:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_metadata_set ( & st - > metadata ,  " language " ,  subtitle_language ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 20:36:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_freep ( & subtitle_language ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    subtitle_disable  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_freep ( & subtitle_codec_name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    subtitle_stream_copy  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  opt_new_audio_stream ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVFormatContext  * oc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( nb_output_files  < =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " At least one output file must be specified \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    oc  =  output_files [ nb_output_files  -  1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    new_audio_stream ( oc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  opt_new_video_stream ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVFormatContext  * oc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( nb_output_files  < =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " At least one output file must be specified \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    oc  =  output_files [ nb_output_files  -  1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    new_video_stream ( oc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_new_subtitle_stream ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVFormatContext  * oc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( nb_output_files  < =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " At least one output file must be specified \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    oc  =  output_files [ nb_output_files  -  1 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    new_subtitle_stream ( oc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_output_file ( const  char  * filename )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVFormatContext  * oc ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  use_video ,  use_audio ,  use_subtitle ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-12 11:28:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  input_has_video ,  input_has_audio ,  input_has_subtitle ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-01-11 05:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVFormatParameters  params ,  * ap  =  & params ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 09:57:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    AVOutputFormat  * file_oformat ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( ! strcmp ( filename ,  " - " ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        filename  =  " pipe: " ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-02-08 08:27:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    oc  =  avformat_alloc_context ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-12 17:22:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! oc )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        print_error ( filename ,  AVERROR ( ENOMEM ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 09:57:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( last_asked_format )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-01 12:58:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        file_oformat  =  av_guess_format ( last_asked_format ,  NULL ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-30 09:57:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! file_oformat )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Requested output format '%s' is not a suitable output format \n " ,  last_asked_format ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        last_asked_format  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-01 12:58:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        file_oformat  =  av_guess_format ( NULL ,  filename ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! file_oformat )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-08 09:20:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Unable to find a suitable output format for '%s' \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    filename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    oc - > oformat  =  file_oformat ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-24 11:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_strlcpy ( oc - > filename ,  filename ,  sizeof ( oc - > filename ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! strcmp ( file_oformat - > name ,  " ffm " )  & & 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-24 11:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_strstart ( filename ,  " http: " ,  NULL ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        /* special case for files sent to ffserver: we get the stream
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           parameters  from  ffserver  */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-12 22:30:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        int  err  =  read_ffserver_streams ( oc ,  filename ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( err  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            print_error ( filename ,  err ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-08 14:34:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        use_video  =  file_oformat - > video_codec  ! =  CODEC_ID_NONE  | |  video_stream_copy  | |  video_codec_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        use_audio  =  file_oformat - > audio_codec  ! =  CODEC_ID_NONE  | |  audio_stream_copy  | |  audio_codec_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        use_subtitle  =  file_oformat - > subtitle_codec  ! =  CODEC_ID_NONE  | |  subtitle_stream_copy  | |  subtitle_codec_name ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-09-19 21:39:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* disable if no corresponding type found and at least one
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           input  file  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( nb_input_files  >  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            check_audio_video_sub_inputs ( & input_has_video ,  & input_has_audio , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                         & input_has_subtitle ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-19 21:39:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! input_has_video ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                use_video  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! input_has_audio ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                use_audio  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  ( ! input_has_subtitle ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                use_subtitle  =  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-19 21:39:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* manual disable */ 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  ( audio_disable )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            use_audio  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( video_disable )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            use_video  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( subtitle_disable )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            use_subtitle  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  ( use_video )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            new_video_stream ( oc ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        if  ( use_audio )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            new_audio_stream ( oc ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( use_subtitle )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            new_subtitle_stream ( oc ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-04-06 06:31:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        oc - > timestamp  =  rec_timestamp ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-01 14:54:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for ( ;  metadata_count > 0 ;  metadata_count - - ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            av_metadata_set ( & oc - > metadata ,  metadata [ metadata_count - 1 ] . key , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                           metadata [ metadata_count - 1 ] . value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_metadata_conv ( oc ,  oc - > oformat - > metadata_conv ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-11 09:19:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    output_files [ nb_output_files + + ]  =  oc ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* check filename in case of an image number is expected */ 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( oc - > oformat - > flags  &  AVFMT_NEEDNUMBER )  { 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-04 09:57:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! av_filename_number_test ( oc - > filename ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            print_error ( oc - > filename ,  AVERROR_NUMEXPECTED ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-16 21:47:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-05-20 16:32:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( ! ( oc - > oformat - > flags  &  AVFMT_NOFILE ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        /* test if it already exists to avoid loosing precious files */ 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( ! file_overwrite  & & 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            ( strchr ( filename ,  ' : ' )  = =  NULL  | | 
							 
						 
					
						
							
								
									
										
										
										
											2007-12-25 10:06:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								             filename [ 1 ]  = =  ' : '  | | 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-24 11:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								             av_strstart ( filename ,  " file: " ,  NULL ) ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            if  ( url_exist ( filename ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-29 21:26:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                if  ( ! using_stdin )  { 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-29 20:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    fprintf ( stderr , " File '%s' already exists. Overwrite ? [y/N]  " ,  filename ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    fflush ( stderr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-18 21:38:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ( ! read_yesno ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-29 20:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        fprintf ( stderr ,  " Not overwriting - exiting \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-29 20:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-29 21:26:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                else  { 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-29 20:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    fprintf ( stderr , " File '%s' already exists. Exiting. \n " ,  filename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-29 21:26:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        /* open the file */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( url_fopen ( & oc - > pb ,  filename ,  URL_WRONLY )  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Could not open '%s' \n " ,  filename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-01-11 05:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    memset ( ap ,  0 ,  sizeof ( * ap ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( av_set_parameters ( oc ,  ap )  <  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " %s: Invalid encoding parameters \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                oc - > filename ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-01-11 05:05:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-10-16 21:27:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    oc - > preload =  ( int ) ( mux_preload * AV_TIME_BASE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    oc - > max_delay =  ( int ) ( mux_max_delay * AV_TIME_BASE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-18 01:52:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    oc - > loop_output  =  loop_output ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 20:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    oc - > flags  | =  AVFMT_FLAG_NONBLOCK ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-06 22:29:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-06-12 11:28:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    set_context_opts ( oc ,  avformat_opts ,  AV_OPT_FLAG_ENCODING_PARAM ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2002-10-10 17:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* same option as mencoder */  
						 
					
						
							
								
									
										
										
										
											2003-02-10 09:44:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_pass ( const  char  * pass_str )  
						 
					
						
							
								
									
										
										
										
											2002-10-10 17:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  pass ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    pass  =  atoi ( pass_str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( pass  ! =  1  & &  pass  ! =  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " pass number can be only 1 or 2 \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2002-10-10 17:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    do_pass  =  pass ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2001-09-24 23:22:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-02-11 16:35:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int64_t  getutime ( void )  
						 
					
						
							
								
									
										
										
										
											2001-08-13 21:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_GETRUSAGE 
  
						 
					
						
							
								
									
										
										
										
											2003-01-11 20:34:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    struct  rusage  rusage ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getrusage ( RUSAGE_SELF ,  & rusage ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( rusage . ru_utime . tv_sec  *  1000000LL )  +  rusage . ru_utime . tv_usec ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-13 23:44:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# elif HAVE_GETPROCESSTIMES 
  
						 
					
						
							
								
									
										
										
										
											2007-07-13 16:11:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    HANDLE  proc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    FILETIME  c ,  e ,  k ,  u ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    proc  =  GetCurrentProcess ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    GetProcessTimes ( proc ,  & c ,  & e ,  & k ,  & u ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( ( int64_t )  u . dwHighDateTime  < <  32  |  u . dwLowDateTime )  /  10 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
									
										
										
										
											2007-08-07 00:46:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  av_gettime ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-13 16:04:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2001-08-13 21:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2001-07-30 23:19:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-02-22 22:21:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int64_t  getmaxrss ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if HAVE_GETRUSAGE && HAVE_STRUCT_RUSAGE_RU_MAXRSS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    struct  rusage  rusage ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    getrusage ( RUSAGE_SELF ,  & rusage ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ( int64_t ) rusage . ru_maxrss  *  1024 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# elif HAVE_GETPROCESSMEMORYINFO 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    HANDLE  proc ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    PROCESS_MEMORY_COUNTERS  memcounters ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    proc  =  GetCurrentProcess ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    memcounters . cb  =  sizeof ( memcounters ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    GetProcessMemoryInfo ( proc ,  & memcounters ,  sizeof ( memcounters ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  memcounters . PeakPagefileUsage ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-01-30 23:33:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  parse_matrix_coeffs ( uint16_t  * dest ,  const  char  * str )  
						 
					
						
							
								
									
										
										
										
											2003-10-31 10:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    const  char  * p  =  str ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    for ( i  =  0 ; ;  i + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dest [ i ]  =  atoi ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( i  = =  63 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        p  =  strchr ( p ,  ' , ' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( ! p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Syntax error in matrix  \" %s \"  at coeff %d \n " ,  str ,  i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-10-31 10:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        p + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-01-30 23:33:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_inter_matrix ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2003-10-31 10:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    inter_matrix  =  av_mallocz ( sizeof ( uint16_t )  *  64 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parse_matrix_coeffs ( inter_matrix ,  arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-01-30 23:33:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_intra_matrix ( const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2003-10-31 10:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    intra_matrix  =  av_mallocz ( sizeof ( uint16_t )  *  64 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parse_matrix_coeffs ( intra_matrix ,  arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-11-15 12:31:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Trivial  log  callback . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Only  suitable  for  show_help  and  similar  since  it  lacks  prefix  handling . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  log_callback_help ( void *  ptr ,  int  level ,  const  char *  fmt ,  va_list  vl )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    vfprintf ( stdout ,  fmt ,  vl ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-21 02:12:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  show_usage ( void )  
						 
					
						
							
								
									
										
										
										
											2007-11-15 12:31:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-12-21 02:09:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    printf ( " Hyper fast Audio and Video encoder \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-21 02:10:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    printf ( " usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-15 12:31:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-21 02:12:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  show_help ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_log_set_callback ( log_callback_help ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    show_usage ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-15 12:31:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show_help_options ( options ,  " Main options: \n " , 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-16 10:00:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                      OPT_EXPERT  |  OPT_AUDIO  |  OPT_VIDEO  |  OPT_SUBTITLE  |  OPT_GRAB ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-17 10:11:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show_help_options ( options ,  " \n Advanced options: \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_EXPERT  |  OPT_AUDIO  |  OPT_VIDEO  |  OPT_SUBTITLE  |  OPT_GRAB , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_EXPERT ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-15 12:31:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show_help_options ( options ,  " \n Video options: \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_EXPERT  |  OPT_AUDIO  |  OPT_VIDEO  |  OPT_GRAB , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_VIDEO ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    show_help_options ( options ,  " \n Advanced Video options: \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_EXPERT  |  OPT_AUDIO  |  OPT_VIDEO  |  OPT_GRAB , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_VIDEO  |  OPT_EXPERT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    show_help_options ( options ,  " \n Audio options: \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_EXPERT  |  OPT_AUDIO  |  OPT_VIDEO  |  OPT_GRAB , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_AUDIO ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    show_help_options ( options ,  " \n Advanced Audio options: \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_EXPERT  |  OPT_AUDIO  |  OPT_VIDEO  |  OPT_GRAB , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_AUDIO  |  OPT_EXPERT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    show_help_options ( options ,  " \n Subtitle options: \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_SUBTITLE  |  OPT_GRAB , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_SUBTITLE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    show_help_options ( options ,  " \n Audio/Video grab options: \n " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_GRAB , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                      OPT_GRAB ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-31 18:36:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 23:32:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_opt_show ( avcodec_opts [ 0 ] ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-31 18:36:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-15 12:31:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_opt_show ( avformat_opts ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-05-31 18:36:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    printf ( " \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-11-15 12:31:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_opt_show ( sws_opts ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_target ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    enum  {  PAL ,  NTSC ,  FILM ,  UNKNOWN  }  norm  =  UNKNOWN ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-02-24 19:08:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static  const  char  * const  frame_rates [ ]  =  { " 25 " ,  " 30000/1001 " ,  " 24000/1001 " } ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ! strncmp ( arg ,  " pal- " ,  4 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        norm  =  PAL ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        arg  + =  4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  if ( ! strncmp ( arg ,  " ntsc- " ,  5 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        norm  =  NTSC ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        arg  + =  5 ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-12-19 15:31:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  if ( ! strncmp ( arg ,  " film- " ,  5 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        norm  =  FILM ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-12-19 15:31:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        arg  + =  5 ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        int  fr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        /* Calculate FR via float to avoid int overflow */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-18 08:08:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fr  =  ( int ) ( frame_rate . num  *  1000.0  /  frame_rate . den ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( fr  = =  25000 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            norm  =  PAL ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  if ( ( fr  = =  29970 )  | |  ( fr  = =  23976 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            norm  =  NTSC ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            /* Try to determine PAL/NTSC by peeking in the input files */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if ( nb_input_files )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                int  i ,  j ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                for ( j  =  0 ;  j  <  nb_input_files ;  j + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    for ( i  =  0 ;  i  <  input_files [ j ] - > nb_streams ;  i + + )  { 
							 
						 
					
						
							
								
									
										
										
										
											2005-07-17 22:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        AVCodecContext  * c  =  input_files [ j ] - > streams [ i ] - > codec ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if ( c - > codec_type  ! =  AVMEDIA_TYPE_VIDEO ) 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            continue ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-04-30 21:43:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        fr  =  c - > time_base . den  *  1000  /  c - > time_base . num ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        if ( fr  = =  25000 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            norm  =  PAL ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        }  else  if ( ( fr  = =  29970 )  | |  ( fr  = =  23976 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            norm  =  NTSC ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if ( norm  ! =  UNKNOWN ) 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( verbose  & &  norm  ! =  UNKNOWN ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 23:25:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " Assuming %s for target. \n " ,  norm  = =  PAL  ?  " PAL "  :  " NTSC " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-14 23:18:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( norm  = =  UNKNOWN )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-12-19 15:31:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Could not determine norm (PAL/NTSC/NTSC-Film) for target. \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Please prefix target with  \" pal- \" ,  \" ntsc- \"  or  \" film- \" , \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " or set a framerate with  \" -r xxx \" . \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ! strcmp ( arg ,  " vcd " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_video_codec ( " mpeg1video " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_audio_codec ( " mp2 " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_format ( " vcd " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 23:25:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_frame_size ( norm  = =  PAL  ?  " 352x288 "  :  " 352x240 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 12:07:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_frame_rate ( NULL ,  frame_rates [ norm ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 23:25:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " g " ,  norm  = =  PAL  ?  " 15 "  :  " 18 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-15 11:15:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " b " ,  " 1150000 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-15 17:38:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " maxrate " ,  " 1150000 " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_default ( " minrate " ,  " 1150000 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-18 19:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " bufsize " ,  " 327680 " ) ;  // 40*1024*8;
 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-05 10:04:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " ab " ,  " 224000 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        audio_sample_rate  =  44100 ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-02-05 16:07:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        audio_channels  =  2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-20 08:24:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " packetsize " ,  " 2324 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-20 08:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " muxrate " ,  " 1411200 " ) ;  // 2352 * 75 * 8;
 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2004-10-16 21:27:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        /* We have to offset the PTS, so that it is consistent with the SCR.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           SCR  starts  at  36000 ,  but  the  first  two  packs  contain  only  padding 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           and  the  first  pack  from  the  other  stream ,  respectively ,  may  also  have 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           been  written  before . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           So  the  real  data  starts  at  SCR  36000 + 3 * 1200.  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mux_preload =  ( 36000 + 3 * 1200 )  /  90000.0 ;  //0.44
 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  if ( ! strcmp ( arg ,  " svcd " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_video_codec ( " mpeg2video " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_audio_codec ( " mp2 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-02-19 22:34:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_format ( " svcd " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 23:25:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_frame_size ( norm  = =  PAL  ?  " 480x576 "  :  " 480x480 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 12:07:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_frame_rate ( NULL ,  frame_rates [ norm ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 23:25:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " g " ,  norm  = =  PAL  ?  " 15 "  :  " 18 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-15 11:15:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " b " ,  " 2040000 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-15 17:38:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " maxrate " ,  " 2516000 " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_default ( " minrate " ,  " 0 " ) ;  //1145000;
 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-18 19:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " bufsize " ,  " 1835008 " ) ;  //224*1024*8;
 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-13 17:25:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " flags " ,  " +scan_offset " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2005-09-12 10:23:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-05 10:04:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " ab " ,  " 224000 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        audio_sample_rate  =  44100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-20 08:24:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " packetsize " ,  " 2324 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-06 22:29:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  if ( ! strcmp ( arg ,  " dvd " ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_video_codec ( " mpeg2video " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_audio_codec ( " ac3 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-03 18:21:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_format ( " dvd " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 23:25:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_frame_size ( norm  = =  PAL  ?  " 720x576 "  :  " 720x480 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 12:07:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_frame_rate ( NULL ,  frame_rates [ norm ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 23:25:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " g " ,  norm  = =  PAL  ?  " 15 "  :  " 18 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-15 11:15:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " b " ,  " 6000000 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-15 17:38:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " maxrate " ,  " 9000000 " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_default ( " minrate " ,  " 0 " ) ;  //1500000;
 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-18 19:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " bufsize " ,  " 1835008 " ) ;  //224*1024*8;
 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-09-20 08:24:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " packetsize " ,  " 2048 " ) ;   // from www.mpucoder.com: DVD sectors contain 2048 bytes of data, this is also the size of one pack.
 
							 
						 
					
						
							
								
									
										
										
										
											2006-09-20 08:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " muxrate " ,  " 10080000 " ) ;  // from mplex project: data_rate = 1260000. mux_rate = data_rate * 8
 
							 
						 
					
						
							
								
									
										
										
										
											2004-11-21 03:37:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-03-05 10:04:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_default ( " ab " ,  " 448000 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        audio_sample_rate  =  48000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2006-03-30 02:36:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  if ( ! strncmp ( arg ,  " dv " ,  2 ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2004-12-29 18:50:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        opt_format ( " dv " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-25 18:32:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_frame_size ( norm  = =  PAL  ?  " 720x576 "  :  " 720x480 " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-03-30 02:36:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_frame_pix_fmt ( ! strncmp ( arg ,  " dv50 " ,  4 )  ?  " yuv422p "  : 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-15 23:25:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                          ( norm  = =  PAL  ?  " yuv420p "  :  " yuv411p " ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 12:07:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        opt_frame_rate ( NULL ,  frame_rates [ norm ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2004-12-29 18:50:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        audio_sample_rate  =  48000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        audio_channels  =  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Unknown target: %s \n " ,  arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-03 17:28:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-04-25 13:55:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  opt_vstats_file  ( const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    av_free  ( vstats_filename ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    vstats_filename = av_strdup  ( arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  opt_vstats  ( void )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    char  filename [ 40 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    time_t  today2  =  time ( NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    struct  tm  * today  =  localtime ( & today2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    snprintf ( filename ,  sizeof ( filename ) ,  " vstats_%02d%02d%02d.log " ,  today - > tm_hour ,  today - > tm_min , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								             today - > tm_sec ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    opt_vstats_file ( filename ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-01-02 10:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_bsf ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVBitStreamFilterContext  * bsfc =  av_bitstream_filter_init ( arg ) ;  //FIXME split name and args for filter at '='
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    AVBitStreamFilterContext  * * bsfp ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ! bsfc ) { 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-07 00:27:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Unknown bitstream filter %s \n " ,  arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-01-28 21:13:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bsfp =  * opt  = =  ' v '  ?  & video_bitstream_filters  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          * opt  = =  ' a '  ?  & audio_bitstream_filters  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        & subtitle_bitstream_filters ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    while ( * bsfp ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        bsfp =  & ( * bsfp ) - > next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    * bsfp =  bsfc ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-01-02 10:24:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-06-07 09:12:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  int  opt_preset ( const  char  * opt ,  const  char  * arg )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-06-08 10:48:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    FILE  * f = NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-18 18:42:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    char  filename [ 1000 ] ,  tmp [ 1000 ] ,  tmp2 [ 1000 ] ,  line [ 1000 ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-08 10:48:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    int  i ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-25 23:10:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    const  char  * base [ 2 ] =  {  getenv ( " HOME " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           FFMPEG_DATADIR , 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-08 10:48:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                         } ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-07 09:12:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 23:41:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( * opt  ! =  ' f ' )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 23:44:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for ( i = ! base [ 0 ] ;  i < 2  & &  ! f ;  i + + ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            snprintf ( filename ,  sizeof ( filename ) ,  " %s%s/%s.ffpreset " ,  base [ i ] ,  i  ?  " "  :  " /.ffmpeg " ,  arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-18 18:42:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            f =  fopen ( filename ,  " r " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 23:44:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if ( ! f ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                char  * codec_name =  * opt  = =  ' v '  ?  video_codec_name  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                  * opt  = =  ' a '  ?  audio_codec_name  : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                subtitle_codec_name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                snprintf ( filename ,  sizeof ( filename ) ,  " %s%s/%s-%s.ffpreset " ,  base [ i ] ,   i  ?  " "  :  " /.ffmpeg " ,  codec_name ,  arg ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                f =  fopen ( filename ,  " r " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-08 10:48:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-02 23:41:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-11 00:07:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_strlcpy ( filename ,  arg ,  sizeof ( filename ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-18 18:42:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        f =  fopen ( filename ,  " r " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-28 13:09:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-07 09:12:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if ( ! f ) { 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-18 18:18:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " File for preset '%s' not found \n " ,  arg ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-07 09:12:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    while ( ! feof ( f ) ) { 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-18 21:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        int  e =  fscanf ( f ,  " %999[^ \n ] \n " ,  line )  -  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( line [ 0 ]  = =  ' # '  & &  ! e ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            continue ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        e | =  sscanf ( line ,  " %999[^=]=%999[^ \n ] \n " ,  tmp ,  tmp2 )  -  2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if ( e ) { 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 22:51:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " %s: Invalid syntax: '%s' \n " ,  filename ,  line ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-07 09:12:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-09 06:56:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if ( ! strcmp ( tmp ,  " acodec " ) ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            opt_audio_codec ( tmp2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } else  if ( ! strcmp ( tmp ,  " vcodec " ) ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            opt_video_codec ( tmp2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } else  if ( ! strcmp ( tmp ,  " scodec " ) ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            opt_subtitle_codec ( tmp2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-18 18:27:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } else  if ( opt_default ( tmp ,  tmp2 )  <  0 ) { 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-21 22:56:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            fprintf ( stderr ,  " %s: Invalid option or argument: '%s', parsed as '%s' = '%s' \n " ,  filename ,  line ,  tmp ,  tmp2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-10-18 18:27:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-07 09:12:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fclose ( f ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-01 15:12:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  const  OptionDef  options [ ]  =  {  
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* main options */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-29 23:12:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "cmdutils_common_opts.h" 
  
						 
					
						
							
								
									
										
										
										
											2001-08-13 21:43:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " f " ,  HAS_ARG ,  { ( void * ) opt_format } ,  " force format " ,  " fmt "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " i " ,  HAS_ARG ,  { ( void * ) opt_input_file } ,  " input file name " ,  " filename "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " y " ,  OPT_BOOL ,  { ( void * ) & file_overwrite } ,  " overwrite output files "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-05-26 08:59:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " map " ,  HAS_ARG  |  OPT_EXPERT ,  { ( void * ) opt_map } ,  " set input stream mapping " ,  " file:stream[:syncfile:syncstream] "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2004-07-21 01:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " map_meta_data " ,  HAS_ARG  |  OPT_EXPERT ,  { ( void * ) opt_map_meta_data } ,  " set meta data information of outfile from infile " ,  " outfile:infile "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 15:12:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " t " ,  OPT_FUNC2  |  HAS_ARG ,  { ( void * ) opt_recording_time } ,  " record or transcode  \" duration \"  seconds of audio/video " ,  " duration "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-30 11:31:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " fs " ,  HAS_ARG  |  OPT_INT64 ,  { ( void * ) & limit_filesize } ,  " set the limit file size in bytes " ,  " limit_size "  } ,  //
 
							 
						 
					
						
							
								
									
										
										
										
											2008-03-22 15:12:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " ss " ,  OPT_FUNC2  |  HAS_ARG ,  { ( void * ) opt_start_time } ,  " set the start time offset " ,  " time_off "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " itsoffset " ,  OPT_FUNC2  |  HAS_ARG ,  { ( void * ) opt_input_ts_offset } ,  " set the input ts offset " ,  " time_off "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-07-13 22:55:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " itsscale " ,  HAS_ARG ,  { ( void * ) opt_input_ts_scale } ,  " set the input ts scale " ,  " stream:scale "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-04-27 07:13:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " timestamp " ,  OPT_FUNC2  |  HAS_ARG ,  { ( void * ) opt_rec_timestamp } ,  " set the timestamp ('now' to set the current time) " ,  " time "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " metadata " ,  OPT_FUNC2  |  HAS_ARG ,  { ( void * ) opt_metadata } ,  " add metadata " ,  " string=string "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " dframes " ,  OPT_INT  |  HAS_ARG ,  { ( void * ) & max_frames [ AVMEDIA_TYPE_DATA ] } ,  " set the number of data frames to record " ,  " number "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " benchmark " ,  OPT_BOOL  |  OPT_EXPERT ,  { ( void * ) & do_benchmark } , 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-30 23:19:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      " add timings for benchmarking "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-20 06:42:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " timelimit " ,  OPT_FUNC2  |  HAS_ARG ,  { ( void * ) opt_timelimit } ,  " set max runtime in seconds " ,  " limit "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " dump " ,  OPT_BOOL  |  OPT_EXPERT ,  { ( void * ) & do_pkt_dump } , 
							 
						 
					
						
							
								
									
										
										
										
											2001-09-23 17:14:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      " dump each input packet "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " hex " ,  OPT_BOOL  |  OPT_EXPERT ,  { ( void * ) & do_hex_dump } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-11-10 18:54:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      " when dumping packets, also dump the payload "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 21:19:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " re " ,  OPT_BOOL  |  OPT_EXPERT ,  { ( void * ) & rate_emu } ,  " read input at native frame rate " ,  " "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-02-28 11:32:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " loop_input " ,  OPT_BOOL  |  OPT_EXPERT ,  { ( void * ) & loop_input } ,  " loop (current only works with images) "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-18 01:52:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " loop_output " ,  HAS_ARG  |  OPT_INT  |  OPT_EXPERT ,  { ( void * ) & loop_output } ,  " number of times to loop output in formats that support looping (0 loops forever) " ,  " "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-15 07:23:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " v " ,  HAS_ARG  |  OPT_FUNC2 ,  { ( void * ) opt_verbose } ,  " set ffmpeg verbosity level " ,  " number "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-03-30 02:36:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " target " ,  HAS_ARG ,  { ( void * ) opt_target } ,  " specify target file type ( \" vcd \" ,  \" svcd \" ,  \" dvd \" ,  \" dv \" ,  \" dv50 \" ,  \" pal-vcd \" ,  \" ntsc-svcd \" , ...) " ,  " type "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-12 21:21:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " threads " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_EXPERT ,  { ( void * ) opt_thread_count } ,  " thread count " ,  " count "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-30 14:47:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " vsync " ,  HAS_ARG  |  OPT_INT  |  OPT_EXPERT ,  { ( void * ) & video_sync_method } ,  " video sync method " ,  " "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " async " ,  HAS_ARG  |  OPT_INT  |  OPT_EXPERT ,  { ( void * ) & audio_sync_method } ,  " audio sync method " ,  " "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-08 01:01:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " adrift_threshold " ,  HAS_ARG  |  OPT_FLOAT  |  OPT_EXPERT ,  { ( void * ) & audio_drift_threshold } ,  " audio drift threshold " ,  " threshold "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-27 00:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " vglobal " ,  HAS_ARG  |  OPT_INT  |  OPT_EXPERT ,  { ( void * ) & video_global_header } ,  " video global header storage type " ,  " "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2004-06-12 03:41:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " copyts " ,  OPT_BOOL  |  OPT_EXPERT ,  { ( void * ) & copy_ts } ,  " copy timestamps "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-03-23 00:52:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " shortest " ,  OPT_BOOL  |  OPT_EXPERT ,  { ( void * ) & opt_shortest } ,  " finish encoding within shortest input "  } ,  //
 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-08 01:01:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " dts_delta_threshold " ,  HAS_ARG  |  OPT_FLOAT  |  OPT_EXPERT ,  { ( void * ) & dts_delta_threshold } ,  " timestamp discontinuity delta threshold " ,  " threshold "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-27 18:46:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " programid " ,  HAS_ARG  |  OPT_INT  |  OPT_EXPERT ,  { ( void * ) & opt_programid } ,  " desired program number " ,  " "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-04 23:23:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " xerror " ,  OPT_BOOL ,  { ( void * ) & exit_on_error } ,  " exit on error " ,  " error "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-22 08:22:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " copyinkf " ,  OPT_BOOL  |  OPT_EXPERT ,  { ( void * ) & copy_initial_nonkeyframes } ,  " copy initial non-keyframes "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* video options */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-08 01:01:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " b " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_bitrate } ,  " set bitrate (in bits/s) " ,  " bitrate "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " vb " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_bitrate } ,  " set bitrate (in bits/s) " ,  " bitrate "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " vframes " ,  OPT_INT  |  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) & max_frames [ AVMEDIA_TYPE_VIDEO ] } ,  " set the number of video frames to record " ,  " number "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-23 12:07:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " r " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_rate } ,  " set frame rate (Hz value, fraction or abbreviation) " ,  " rate "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " s " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_size } ,  " set frame size (WxH or abbreviation) " ,  " size "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " aspect " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_aspect_ratio } ,  " set aspect ratio (4:3, 16:9 or 1.3333, 1.7777) " ,  " aspect "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-30 14:20:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " pix_fmt " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) opt_frame_pix_fmt } ,  " set pixel format, 'list' as argument shows all the pixel formats supported " ,  " format "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " croptop " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_crop_top } ,  " set top crop band size (in pixels) " ,  " size "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " cropbottom " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_crop_bottom } ,  " set bottom crop band size (in pixels) " ,  " size "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " cropleft " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_crop_left } ,  " set left crop band size (in pixels) " ,  " size "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " cropright " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_crop_right } ,  " set right crop band size (in pixels) " ,  " size "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-08 18:54:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " padtop " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_pad_top } ,  " set top pad band size (in pixels) " ,  " size "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " padbottom " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_pad_bottom } ,  " set bottom pad band size (in pixels) " ,  " size "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " padleft " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_pad_left } ,  " set left pad band size (in pixels) " ,  " size "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " padright " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_frame_pad_right } ,  " set right pad band size (in pixels) " ,  " size "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " padcolor " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_pad_color } ,  " set color of pad bands (Hex 000000 thru FFFFFF) " ,  " color "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " intra " ,  OPT_BOOL  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) & intra_only } ,  " use only intra frames " } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " vn " ,  OPT_BOOL  |  OPT_VIDEO ,  { ( void * ) & video_disable } ,  " disable video "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-03-17 05:07:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " vdt " ,  OPT_INT  |  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) & video_discard } ,  " discard threshold " ,  " n "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-10-02 10:23:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " qscale " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) opt_qscale } ,  " use fixed video quantizer scale (VBR) " ,  " q "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 16:14:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " rc_override " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) opt_video_rc_override_string } ,  " rate control override for specific intervals " ,  " override "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " vcodec " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) opt_video_codec } ,  " force video codec ('copy' to copy stream) " ,  " codec "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-22 20:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " me_threshold " ,  HAS_ARG  |  OPT_FUNC2  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) opt_me_threshold } ,  " motion estimaton threshold " ,   " threshold "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " sameq " ,  OPT_BOOL  |  OPT_VIDEO ,  { ( void * ) & same_quality } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      " use same video quality as source (implies VBR) "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " pass " ,  HAS_ARG  |  OPT_VIDEO ,  { ( void * ) & opt_pass } ,  " select the pass number (1 or 2) " ,  " n "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-26 19:25:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " passlogfile " ,  HAS_ARG  |  OPT_STRING  |  OPT_VIDEO ,  { ( void * ) & pass_logfilename_prefix } ,  " select two pass log file name prefix " ,  " prefix "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " deinterlace " ,  OPT_BOOL  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) & do_deinterlace } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      " deinterlace pictures "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " psnr " ,  OPT_BOOL  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) & do_psnr } ,  " calculate PSNR of compressed frames "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-25 13:55:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " vstats " ,  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) & opt_vstats } ,  " dump video coding statistics to file "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " vstats_file " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) opt_vstats_file } ,  " dump video coding statistics to file " ,  " file "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-10-31 10:25:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " intra_matrix " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) opt_intra_matrix } ,  " specify intra matrix coeffs " ,  " matrix "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " inter_matrix " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) opt_inter_matrix } ,  " specify inter matrix coeffs " ,  " matrix "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-12-30 16:07:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " top " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) opt_top_field_first } ,  " top=1/bottom=0/auto=-1 field first " ,  " "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2004-04-30 13:44:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " dc " ,  OPT_INT  |  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) & intra_dc_precision } ,  " intra_dc_precision " ,  " precision "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-16 01:51:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " vtag " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) opt_video_tag } ,  " force video tag/fourcc " ,  " fourcc/tag "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " newvideo " ,  OPT_VIDEO ,  { ( void * ) opt_new_video_stream } ,  " add a new video stream to the current output stream "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-16 12:08:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " vlang " ,  HAS_ARG  |  OPT_STRING  |  OPT_VIDEO ,  { ( void  * ) & video_language } ,  " set the ISO 639 language code (3 letters) of the current video stream "  ,  " code "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-18 20:01:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " qphist " ,  OPT_BOOL  |  OPT_EXPERT  |  OPT_VIDEO ,  {  ( void  * ) & qp_hist  } ,  " show QP histogram "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-09-28 17:34:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " force_fps " ,  OPT_BOOL  |  OPT_EXPERT  |  OPT_VIDEO ,  { ( void * ) & force_fps } ,  " force the selected framerate, disable the best supported framerate selection "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* audio options */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-08 01:01:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " ab " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_AUDIO ,  { ( void * ) opt_bitrate } ,  " set bitrate (in bits/s) " ,  " bitrate "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " aframes " ,  OPT_INT  |  HAS_ARG  |  OPT_AUDIO ,  { ( void * ) & max_frames [ AVMEDIA_TYPE_AUDIO ] } ,  " set the number of audio frames to record " ,  " number "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-08-21 20:27:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " aq " ,  OPT_FLOAT  |  HAS_ARG  |  OPT_AUDIO ,  { ( void * ) & audio_qscale } ,  " set audio quality (codec-specific) " ,  " quality " ,  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-22 20:17:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " ar " ,  HAS_ARG  |  OPT_FUNC2  |  OPT_AUDIO ,  { ( void * ) opt_audio_rate } ,  " set audio sampling rate (in Hz) " ,  " rate "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " ac " ,  HAS_ARG  |  OPT_FUNC2  |  OPT_AUDIO ,  { ( void * ) opt_audio_channels } ,  " set number of audio channels " ,  " channels "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " an " ,  OPT_BOOL  |  OPT_AUDIO ,  { ( void * ) & audio_disable } ,  " disable audio "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " acodec " ,  HAS_ARG  |  OPT_AUDIO ,  { ( void * ) opt_audio_codec } ,  " force audio codec ('copy' to copy stream) " ,  " codec "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-16 01:51:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " atag " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_AUDIO ,  { ( void * ) opt_audio_tag } ,  " force audio tag/fourcc " ,  " fourcc/tag "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-03-23 02:10:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " vol " ,  OPT_INT  |  HAS_ARG  |  OPT_AUDIO ,  { ( void * ) & audio_volume } ,  " change audio volume (256=normal) "  ,  " volume "  } ,  //
 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " newaudio " ,  OPT_AUDIO ,  { ( void * ) opt_new_audio_stream } ,  " add a new audio stream to the current output stream "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " alang " ,  HAS_ARG  |  OPT_STRING  |  OPT_AUDIO ,  { ( void  * ) & audio_language } ,  " set the ISO 639 language code (3 letters) of the current audio stream "  ,  " code "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-08-03 00:37:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " sample_fmt " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_AUDIO ,  { ( void * ) opt_audio_sample_fmt } ,  " set sample format, 'list' as argument shows all the sample formats supported " ,  " format "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* subtitle options */ 
							 
						 
					
						
							
								
									
										
										
										
											2007-07-25 19:47:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " sn " ,  OPT_BOOL  |  OPT_SUBTITLE ,  { ( void * ) & subtitle_disable } ,  " disable subtitle "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-06-03 14:31:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " scodec " ,  HAS_ARG  |  OPT_SUBTITLE ,  { ( void * ) opt_subtitle_codec } ,  " force subtitle codec ('copy' to copy stream) " ,  " codec "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " newsubtitle " ,  OPT_SUBTITLE ,  { ( void * ) opt_new_subtitle_stream } ,  " add a new subtitle stream to the current output stream "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " slang " ,  HAS_ARG  |  OPT_STRING  |  OPT_SUBTITLE ,  { ( void  * ) & subtitle_language } ,  " set the ISO 639 language code (3 letters) of the current subtitle stream "  ,  " code "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-11 08:14:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " stag " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_SUBTITLE ,  { ( void * ) opt_subtitle_tag } ,  " force subtitle tag/fourcc " ,  " fourcc/tag "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2003-08-24 15:29:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* grab options */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " vc " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO  |  OPT_GRAB ,  { ( void * ) opt_video_channel } ,  " set video grab channel (DV1394 only) " ,  " channel "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " tvstd " ,  HAS_ARG  |  OPT_EXPERT  |  OPT_VIDEO  |  OPT_GRAB ,  { ( void * ) opt_video_standard } ,  " set television standard (NTSC, PAL (SECAM)) " ,  " standard "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2007-02-14 17:01:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " isync " ,  OPT_BOOL  |  OPT_EXPERT  |  OPT_GRAB ,  { ( void * ) & input_sync } ,  " sync read on input " ,  " "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2005-12-17 18:14:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* muxer options */ 
							 
						 
					
						
							
								
									
										
										
										
											2004-10-16 21:27:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " muxdelay " ,  OPT_FLOAT  |  HAS_ARG  |  OPT_EXPERT ,  { ( void * ) & mux_max_delay } ,  " set the maximum demux-decode delay " ,  " seconds "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " muxpreload " ,  OPT_FLOAT  |  HAS_ARG  |  OPT_EXPERT ,  { ( void * ) & mux_preload } ,  " set the initial demux-decode delay " ,  " seconds "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-28 11:55:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " absf " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_AUDIO  |  OPT_EXPERT ,  { ( void * ) opt_bsf } ,  " " ,  " bitstream_filter "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " vbsf " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_VIDEO  |  OPT_EXPERT ,  { ( void * ) opt_bsf } ,  " " ,  " bitstream_filter "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " sbsf " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_SUBTITLE  |  OPT_EXPERT ,  { ( void * ) opt_bsf } ,  " " ,  " bitstream_filter "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-06 15:04:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-10-12 20:46:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " apre " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_AUDIO  |  OPT_EXPERT ,  { ( void * ) opt_preset } ,  " set the audio options to the indicated preset " ,  " preset "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " vpre " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_VIDEO  |  OPT_EXPERT ,  { ( void * ) opt_preset } ,  " set the video options to the indicated preset " ,  " preset "  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    {  " spre " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_SUBTITLE  |  OPT_EXPERT ,  { ( void * ) opt_preset } ,  " set the subtitle options to the indicated preset " ,  " preset "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-03 00:55:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " fpre " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_EXPERT ,  { ( void * ) opt_preset } ,  " set options from indicated preset file " ,  " filename "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2008-06-07 09:12:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2005-09-11 11:10:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    {  " default " ,  OPT_FUNC2  |  HAS_ARG  |  OPT_AUDIO  |  OPT_VIDEO  |  OPT_EXPERT ,  { ( void * ) opt_default } ,  " generic catch all option " ,  " "  } , 
							 
						 
					
						
							
								
									
										
										
										
											2001-07-22 14:37:44 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    {  NULL ,  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								int  main ( int  argc ,  char  * * argv )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    int64_t  ti ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-11-22 16:10:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    avcodec_register_all ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    avdevice_register_all ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    av_register_all ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-07-24 00:13:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# if HAVE_ISATTY 
  
						 
					
						
							
								
									
										
										
										
											2008-06-26 20:50:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( isatty ( STDIN_FILENO ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        url_set_interrupt_cb ( decode_interrupt_cb ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-24 00:13:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2008-06-26 20:50:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-03-30 23:30:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for ( i = 0 ;  i < AVMEDIA_TYPE_NB ;  i + + ) { 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-03 23:32:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        avcodec_opts [ i ] =  avcodec_alloc_context2 ( i ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-02-08 08:27:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    avformat_opts  =  avformat_alloc_context ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sws_opts  =  sws_getContext ( 16 , 16 , 0 ,  16 , 16 , 0 ,  sws_flags ,  NULL , NULL , NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-05-29 08:48:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    show_banner ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    /* parse options */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    parse_options ( argc ,  argv ,  options ,  opt_output_file ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-12-21 02:15:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if ( nb_output_files  < =  0  & &  nb_input_files  = =  0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        show_usage ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " Use -h to get full help or, even better, run 'man ffmpeg' \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
									
										
										
										
											2009-12-13 13:49:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    /* file converter / grab */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( nb_output_files  < =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-17 23:18:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " At least one output file must be specified \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( nb_input_files  = =  0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-11-17 23:18:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        fprintf ( stderr ,  " At least one input file must be specified \n " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ti  =  getutime ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-20 21:09:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( av_encode ( output_files ,  nb_output_files ,  input_files ,  nb_input_files , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                  stream_maps ,  nb_stream_maps )  <  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        av_exit ( 1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    ti  =  getutime ( )  -  ti ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( do_benchmark )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-22 22:21:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        int  maxrss  =  getmaxrss ( )  /  1024 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        printf ( " bench: utime=%0.3fs maxrss=%ikB \n " ,  ti  /  1000000.0 ,  maxrss ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-04-14 22:35:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  av_exit ( 0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-16 18:08:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}