| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -1977,7 +1977,7 @@ static int transcode_init(OutputFile *output_files, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* output stream init */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for(i=0;i<nb_output_files;i++) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for (i = 0; i < nb_output_files; i++) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        oc = output_files[i].ctx; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (!oc->nb_streams && !(oc->oformat->flags & AVFMT_NOSTREAMS)) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            av_dump_format(oc, i, oc->filename, 1); | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -1989,17 +1989,17 @@ static int transcode_init(OutputFile *output_files, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* for each output stream, we compute the right encoding parameters */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for (i = 0; i < nb_output_streams; i++) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ost = &output_streams[i]; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        oc = output_files[ost->file_index].ctx; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        oc  = output_files[ost->file_index].ctx; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ist = &input_streams[ost->source_index]; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (ost->attachment_filename) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            continue; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        codec = ost->st->codec; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        codec  = ost->st->codec; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        icodec = ist->st->codec; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ost->st->disposition = ist->st->disposition; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        codec->bits_per_raw_sample= icodec->bits_per_raw_sample; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ost->st->disposition          = ist->st->disposition; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        codec->bits_per_raw_sample    = icodec->bits_per_raw_sample; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        codec->chroma_sample_location = icodec->chroma_sample_location; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (ost->stream_copy) { | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -2010,52 +2010,55 @@ static int transcode_init(OutputFile *output_files, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            /* if stream_copy is selected, no need to decode or encode */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->codec_id = icodec->codec_id; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->codec_id   = icodec->codec_id; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->codec_type = icodec->codec_type; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if(!codec->codec_tag){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if(   !oc->oformat->codec_tag | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                   || av_codec_get_id (oc->oformat->codec_tag, icodec->codec_tag) == codec->codec_id | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                   || av_codec_get_tag(oc->oformat->codec_tag, icodec->codec_id) <= 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (!codec->codec_tag) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (!oc->oformat->codec_tag || | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                     av_codec_get_id (oc->oformat->codec_tag, icodec->codec_tag) == codec->codec_id || | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                     av_codec_get_tag(oc->oformat->codec_tag, icodec->codec_id) <= 0) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    codec->codec_tag = icodec->codec_tag; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->bit_rate = icodec->bit_rate; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->bit_rate       = icodec->bit_rate; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->rc_max_rate    = icodec->rc_max_rate; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->rc_buffer_size = icodec->rc_buffer_size; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->extradata= av_mallocz(extra_size); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->extradata      = av_mallocz(extra_size); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (!codec->extradata) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                return AVERROR(ENOMEM); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            memcpy(codec->extradata, icodec->extradata, icodec->extradata_size); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->extradata_size= icodec->extradata_size; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if(!copy_tb && av_q2d(icodec->time_base)*icodec->ticks_per_frame > av_q2d(ist->st->time_base) && av_q2d(ist->st->time_base) < 1.0/500){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->time_base = icodec->time_base; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            codec->extradata_size = icodec->extradata_size; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (!copy_tb && | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                av_q2d(icodec->time_base)*icodec->ticks_per_frame > av_q2d(ist->st->time_base) && | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                av_q2d(ist->st->time_base) < 1.0/500) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->time_base      = icodec->time_base; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->time_base.num *= icodec->ticks_per_frame; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                av_reduce(&codec->time_base.num, &codec->time_base.den, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                          codec->time_base.num, codec->time_base.den, INT_MAX); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }else | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } else | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->time_base = ist->st->time_base; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            switch(codec->codec_type) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            case AVMEDIA_TYPE_AUDIO: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if(audio_volume != 256) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    av_log(NULL, AV_LOG_FATAL, "-acodec copy and -vol are incompatible (frames are not decoded)\n"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    exit_program(1); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->channel_layout = icodec->channel_layout; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->sample_rate = icodec->sample_rate; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->channels = icodec->channels; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->frame_size = icodec->frame_size; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->channel_layout     = icodec->channel_layout; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->sample_rate        = icodec->sample_rate; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->channels           = icodec->channels; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->frame_size         = icodec->frame_size; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->audio_service_type = icodec->audio_service_type; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->block_align= icodec->block_align; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->block_align        = icodec->block_align; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                break; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            case AVMEDIA_TYPE_VIDEO: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->pix_fmt = icodec->pix_fmt; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->width = icodec->width; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->height = icodec->height; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->has_b_frames = icodec->has_b_frames; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->pix_fmt            = icodec->pix_fmt; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->width              = icodec->width; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->height             = icodec->height; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->has_b_frames       = icodec->has_b_frames; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (!codec->sample_aspect_ratio.num) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    codec->sample_aspect_ratio = | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    codec->sample_aspect_ratio   = | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    ost->st->sample_aspect_ratio = | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        ist->st->sample_aspect_ratio.num ? ist->st->sample_aspect_ratio : | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                        ist->st->codec->sample_aspect_ratio.num ? | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -2063,7 +2066,7 @@ static int transcode_init(OutputFile *output_files, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                break; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            case AVMEDIA_TYPE_SUBTITLE: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->width = icodec->width; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->width  = icodec->width; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->height = icodec->height; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                break; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            case AVMEDIA_TYPE_DATA: | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -2075,29 +2078,35 @@ static int transcode_init(OutputFile *output_files, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } else { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (!ost->enc) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->enc = avcodec_find_encoder(ost->st->codec->codec_id); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            ist->decoding_needed = 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            ost->encoding_needed = 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            switch(codec->codec_type) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            case AVMEDIA_TYPE_AUDIO: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->fifo= av_fifo_alloc(1024); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->fifo = av_fifo_alloc(1024); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (!ost->fifo) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    return AVERROR(ENOMEM); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->reformat_pair = MAKE_SFMT_PAIR(AV_SAMPLE_FMT_NONE,AV_SAMPLE_FMT_NONE); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (!codec->sample_rate) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    codec->sample_rate = icodec->sample_rate; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                choose_sample_rate(ost->st, ost->enc); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->time_base = (AVRational){1, codec->sample_rate}; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (codec->sample_fmt == AV_SAMPLE_FMT_NONE) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    codec->sample_fmt = icodec->sample_fmt; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                choose_sample_fmt(ost->st, ost->enc); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (!codec->channels) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    codec->channels = icodec->channels; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                codec->channel_layout = icodec->channel_layout; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (av_get_channel_layout_nb_channels(codec->channel_layout) != codec->channels) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    codec->channel_layout = 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->audio_resample = codec->sample_rate != icodec->sample_rate || audio_sync_method > 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                icodec->request_channels = codec->channels; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->audio_resample       = codec-> sample_rate != icodec->sample_rate || audio_sync_method > 1; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                icodec->request_channels  = codec-> channels; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->resample_sample_fmt  = icodec->sample_fmt; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->resample_sample_rate = icodec->sample_rate; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->resample_channels    = icodec->channels; | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -2144,9 +2153,9 @@ static int transcode_init(OutputFile *output_files, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    codec->bits_per_raw_sample= 0; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->resample_height = icodec->height; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->resample_width  = icodec->width; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->resample_pix_fmt= icodec->pix_fmt; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->resample_height  = icodec->height; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->resample_width   = icodec->width; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                ost->resample_pix_fmt = icodec->pix_fmt; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if (!ost->frame_rate.num) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    ost->frame_rate = ist->st->r_frame_rate.num ? ist->st->r_frame_rate : (AVRational){25,1}; | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -2198,8 +2207,8 @@ static int transcode_init(OutputFile *output_files, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(codec->codec_type == AVMEDIA_TYPE_VIDEO){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            int size= codec->width * codec->height; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            bit_buffer_size= FFMAX(bit_buffer_size, 6*size + 200); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            int        size = codec->width * codec->height; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            bit_buffer_size = FFMAX(bit_buffer_size, 6*size + 200); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -2215,7 +2224,7 @@ static int transcode_init(OutputFile *output_files, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for (i = 0; i < nb_output_streams; i++) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ost = &output_streams[i]; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if (ost->encoding_needed) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            AVCodec *codec = ost->enc; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            AVCodec      *codec = ost->enc; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            AVCodecContext *dec = input_streams[ost->source_index].st->codec; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if (!codec) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                snprintf(error, sizeof(error), "Encoder (codec id %d) not found for output stream #%d:%d", | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -2289,7 +2298,7 @@ static int transcode_init(OutputFile *output_files, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 dump_format: | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    /* dump the file output parameters - cannot be done before in case | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       of stream copy */ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for(i=0;i<nb_output_files;i++) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for (i = 0; i < nb_output_files; i++) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        av_dump_format(output_files[i].ctx, i, output_files[i].ctx->filename, 1); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |