| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * FFmpeg main | 2  * FFmpeg main | 
| 3  * Copyright (c) 2000-2003 Fabrice Bellard | 3  * Copyright (c) 2000-2003 Fabrice Bellard | 
| 4  * | 4  * | 
| 5  * This file is part of FFmpeg. | 5  * This file is part of FFmpeg. | 
| 6  * | 6  * | 
| 7  * FFmpeg is free software; you can redistribute it and/or | 7  * FFmpeg is free software; you can redistribute it and/or | 
| 8  * modify it under the terms of the GNU Lesser General Public | 8  * modify it under the terms of the GNU Lesser General Public | 
| 9  * License as published by the Free Software Foundation; either | 9  * License as published by the Free Software Foundation; either | 
| 10  * version 2.1 of the License, or (at your option) any later version. | 10  * version 2.1 of the License, or (at your option) any later version. | 
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 129 | 129 | 
| 130 /* indexed by output file stream index */ | 130 /* indexed by output file stream index */ | 
| 131 static int *streamid_map = NULL; | 131 static int *streamid_map = NULL; | 
| 132 static int nb_streamid_map = 0; | 132 static int nb_streamid_map = 0; | 
| 133 | 133 | 
| 134 static int frame_width  = 0; | 134 static int frame_width  = 0; | 
| 135 static int frame_height = 0; | 135 static int frame_height = 0; | 
| 136 static float frame_aspect_ratio = 0; | 136 static float frame_aspect_ratio = 0; | 
| 137 static enum PixelFormat frame_pix_fmt = PIX_FMT_NONE; | 137 static enum PixelFormat frame_pix_fmt = PIX_FMT_NONE; | 
| 138 static enum SampleFormat audio_sample_fmt = SAMPLE_FMT_NONE; | 138 static enum SampleFormat audio_sample_fmt = SAMPLE_FMT_NONE; | 
| 139 static int frame_topBand  = 0; |  | 
| 140 static int frame_bottomBand = 0; |  | 
| 141 static int frame_leftBand  = 0; |  | 
| 142 static int frame_rightBand = 0; |  | 
| 143 static int max_frames[4] = {INT_MAX, INT_MAX, INT_MAX, INT_MAX}; | 139 static int max_frames[4] = {INT_MAX, INT_MAX, INT_MAX, INT_MAX}; | 
| 144 static AVRational frame_rate; | 140 static AVRational frame_rate; | 
| 145 static float video_qscale = 0; | 141 static float video_qscale = 0; | 
| 146 static uint16_t *intra_matrix = NULL; | 142 static uint16_t *intra_matrix = NULL; | 
| 147 static uint16_t *inter_matrix = NULL; | 143 static uint16_t *inter_matrix = NULL; | 
| 148 static const char *video_rc_override_string=NULL; | 144 static const char *video_rc_override_string=NULL; | 
| 149 static int video_disable = 0; | 145 static int video_disable = 0; | 
| 150 static int video_discard = 0; | 146 static int video_discard = 0; | 
| 151 static char *video_codec_name = NULL; | 147 static char *video_codec_name = NULL; | 
| 152 static unsigned int video_codec_tag = 0; | 148 static unsigned int video_codec_tag = 0; | 
| (...skipping 28 matching lines...) Expand all  Loading... | 
| 181 static unsigned int subtitle_codec_tag = 0; | 177 static unsigned int subtitle_codec_tag = 0; | 
| 182 | 178 | 
| 183 static float mux_preload= 0.5; | 179 static float mux_preload= 0.5; | 
| 184 static float mux_max_delay= 0.7; | 180 static float mux_max_delay= 0.7; | 
| 185 | 181 | 
| 186 static int64_t recording_time = INT64_MAX; | 182 static int64_t recording_time = INT64_MAX; | 
| 187 static int64_t start_time = 0; | 183 static int64_t start_time = 0; | 
| 188 static int64_t recording_timestamp = 0; | 184 static int64_t recording_timestamp = 0; | 
| 189 static int64_t input_ts_offset = 0; | 185 static int64_t input_ts_offset = 0; | 
| 190 static int file_overwrite = 0; | 186 static int file_overwrite = 0; | 
| 191 static int metadata_count; | 187 static AVMetadata *metadata; | 
| 192 static AVMetadataTag *metadata; |  | 
| 193 static int do_benchmark = 0; | 188 static int do_benchmark = 0; | 
| 194 static int do_hex_dump = 0; | 189 static int do_hex_dump = 0; | 
| 195 static int do_pkt_dump = 0; | 190 static int do_pkt_dump = 0; | 
| 196 static int do_psnr = 0; | 191 static int do_psnr = 0; | 
| 197 static int do_pass = 0; | 192 static int do_pass = 0; | 
| 198 static char *pass_logfilename_prefix = NULL; | 193 static char *pass_logfilename_prefix = NULL; | 
| 199 static int audio_stream_copy = 0; | 194 static int audio_stream_copy = 0; | 
| 200 static int video_stream_copy = 0; | 195 static int video_stream_copy = 0; | 
| 201 static int subtitle_stream_copy = 0; | 196 static int subtitle_stream_copy = 0; | 
| 202 static int video_sync_method= -1; | 197 static int video_sync_method= -1; | 
| (...skipping 20 matching lines...) Expand all  Loading... | 
| 223 static int thread_count= 1; | 218 static int thread_count= 1; | 
| 224 static int q_pressed = 0; | 219 static int q_pressed = 0; | 
| 225 static int64_t video_size = 0; | 220 static int64_t video_size = 0; | 
| 226 static int64_t audio_size = 0; | 221 static int64_t audio_size = 0; | 
| 227 static int64_t extra_size = 0; | 222 static int64_t extra_size = 0; | 
| 228 static int nb_frames_dup = 0; | 223 static int nb_frames_dup = 0; | 
| 229 static int nb_frames_drop = 0; | 224 static int nb_frames_drop = 0; | 
| 230 static int input_sync; | 225 static int input_sync; | 
| 231 static uint64_t limit_filesize = 0; | 226 static uint64_t limit_filesize = 0; | 
| 232 static int force_fps = 0; | 227 static int force_fps = 0; | 
|  | 228 static char *forced_key_frames = NULL; | 
| 233 | 229 | 
| 234 static int pgmyuv_compatibility_hack=0; | 230 static int pgmyuv_compatibility_hack=0; | 
| 235 static float dts_delta_threshold = 10; | 231 static float dts_delta_threshold = 10; | 
| 236 | 232 | 
| 237 static unsigned int sws_flags = SWS_BICUBIC; | 233 static unsigned int sws_flags = SWS_BICUBIC; | 
| 238 | 234 | 
| 239 static int64_t timer_start; | 235 static int64_t timer_start; | 
| 240 | 236 | 
| 241 static uint8_t *audio_buf; | 237 static uint8_t *audio_buf; | 
| 242 static uint8_t *audio_out; | 238 static uint8_t *audio_out; | 
| 243 unsigned int allocated_audio_out_size, allocated_audio_buf_size; | 239 unsigned int allocated_audio_out_size, allocated_audio_buf_size; | 
| 244 | 240 | 
| 245 static short *samples; | 241 static short *samples; | 
| 246 | 242 | 
| 247 static AVBitStreamFilterContext *video_bitstream_filters=NULL; | 243 static AVBitStreamFilterContext *video_bitstream_filters=NULL; | 
| 248 static AVBitStreamFilterContext *audio_bitstream_filters=NULL; | 244 static AVBitStreamFilterContext *audio_bitstream_filters=NULL; | 
| 249 static AVBitStreamFilterContext *subtitle_bitstream_filters=NULL; | 245 static AVBitStreamFilterContext *subtitle_bitstream_filters=NULL; | 
| 250 static AVBitStreamFilterContext **bitstream_filters[MAX_FILES] = {NULL}; |  | 
| 251 static int nb_bitstream_filters[MAX_FILES] = {0}; |  | 
| 252 | 246 | 
| 253 #define DEFAULT_PASS_LOGFILENAME_PREFIX "ffmpeg2pass" | 247 #define DEFAULT_PASS_LOGFILENAME_PREFIX "ffmpeg2pass" | 
| 254 | 248 | 
| 255 struct AVInputStream; | 249 struct AVInputStream; | 
| 256 | 250 | 
| 257 typedef struct AVOutputStream { | 251 typedef struct AVOutputStream { | 
| 258     int file_index;          /* file index */ | 252     int file_index;          /* file index */ | 
| 259     int index;               /* stream index in the output file */ | 253     int index;               /* stream index in the output file */ | 
| 260     int source_index;        /* AVInputStream index */ | 254     int source_index;        /* AVInputStream index */ | 
| 261     AVStream *st;            /* stream in the output file */ | 255     AVStream *st;            /* stream in the output file */ | 
| 262     int encoding_needed;     /* true if encoding needed for this stream */ | 256     int encoding_needed;     /* true if encoding needed for this stream */ | 
| 263     int frame_number; | 257     int frame_number; | 
| 264     /* input pts and corresponding output pts | 258     /* input pts and corresponding output pts | 
| 265        for A/V sync */ | 259        for A/V sync */ | 
| 266     //double sync_ipts;        /* dts from the AVPacket of the demuxer in second
       units */ | 260     //double sync_ipts;        /* dts from the AVPacket of the demuxer in second
       units */ | 
| 267     struct AVInputStream *sync_ist; /* input stream to sync against */ | 261     struct AVInputStream *sync_ist; /* input stream to sync against */ | 
| 268     int64_t sync_opts;       /* output frame counter, could be changed to some t
      rue timestamp */ //FIXME look at frame_number | 262     int64_t sync_opts;       /* output frame counter, could be changed to some t
      rue timestamp */ //FIXME look at frame_number | 
|  | 263     AVBitStreamFilterContext *bitstream_filters; | 
| 269     /* video only */ | 264     /* video only */ | 
| 270     int video_resample; | 265     int video_resample; | 
| 271     AVFrame pict_tmp;      /* temporary image for resampling */ | 266     AVFrame pict_tmp;      /* temporary image for resampling */ | 
| 272     struct SwsContext *img_resample_ctx; /* for image resampling */ | 267     struct SwsContext *img_resample_ctx; /* for image resampling */ | 
| 273     int resample_height; | 268     int resample_height; | 
| 274     int resample_width; | 269     int resample_width; | 
| 275     int resample_pix_fmt; | 270     int resample_pix_fmt; | 
| 276 | 271 | 
| 277     /* full frame size of first frame */ | 272     /* full frame size of first frame */ | 
| 278     int original_height; | 273     int original_height; | 
| 279     int original_width; | 274     int original_width; | 
| 280 | 275 | 
| 281     /* cropping area sizes */ | 276     /* forced key frames */ | 
| 282     int video_crop; | 277     int64_t *forced_kf_pts; | 
| 283     int topBand; | 278     int forced_kf_count; | 
| 284     int bottomBand; | 279     int forced_kf_index; | 
| 285     int leftBand; |  | 
| 286     int rightBand; |  | 
| 287 |  | 
| 288     /* cropping area of first frame */ |  | 
| 289     int original_topBand; |  | 
| 290     int original_bottomBand; |  | 
| 291     int original_leftBand; |  | 
| 292     int original_rightBand; |  | 
| 293 | 280 | 
| 294     /* audio only */ | 281     /* audio only */ | 
| 295     int audio_resample; | 282     int audio_resample; | 
| 296     ReSampleContext *resample; /* for audio resampling */ | 283     ReSampleContext *resample; /* for audio resampling */ | 
| 297     int reformat_pair; | 284     int reformat_pair; | 
| 298     AVAudioConvert *reformat_ctx; | 285     AVAudioConvert *reformat_ctx; | 
| 299     AVFifoBuffer *fifo;     /* for compression: one audio fifo per codec */ | 286     AVFifoBuffer *fifo;     /* for compression: one audio fifo per codec */ | 
| 300     FILE *logfile; | 287     FILE *logfile; | 
| 301 } AVOutputStream; | 288 } AVOutputStream; | 
| 302 | 289 | 
|  | 290 static AVOutputStream **output_streams_for_file[MAX_FILES] = { NULL }; | 
|  | 291 static int nb_output_streams_for_file[MAX_FILES] = { 0 }; | 
|  | 292 | 
| 303 typedef struct AVInputStream { | 293 typedef struct AVInputStream { | 
| 304     int file_index; | 294     int file_index; | 
| 305     int index; | 295     int index; | 
| 306     AVStream *st; | 296     AVStream *st; | 
| 307     int discard;             /* true if stream data should be discarded */ | 297     int discard;             /* true if stream data should be discarded */ | 
| 308     int decoding_needed;     /* true if the packets must be decoded in 'raw_fifo
      ' */ | 298     int decoding_needed;     /* true if the packets must be decoded in 'raw_fifo
      ' */ | 
| 309     int64_t sample_index;      /* current sample */ | 299     int64_t sample_index;      /* current sample */ | 
| 310 | 300 | 
| 311     int64_t       start;     /* time when read started */ | 301     int64_t       start;     /* time when read started */ | 
| 312     int64_t       next_pts;  /* synthetic pts for cases where pkt.pts | 302     int64_t       next_pts;  /* synthetic pts for cases where pkt.pts | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 332     int nb_streams;       /* nb streams we are aware of */ | 322     int nb_streams;       /* nb streams we are aware of */ | 
| 333 } AVInputFile; | 323 } AVInputFile; | 
| 334 | 324 | 
| 335 #if HAVE_TERMIOS_H | 325 #if HAVE_TERMIOS_H | 
| 336 | 326 | 
| 337 /* init terminal so that we can grab keys */ | 327 /* init terminal so that we can grab keys */ | 
| 338 static struct termios oldtty; | 328 static struct termios oldtty; | 
| 339 #endif | 329 #endif | 
| 340 | 330 | 
| 341 #if CONFIG_AVFILTER | 331 #if CONFIG_AVFILTER | 
| 342 typedef struct { |  | 
| 343     int pix_fmt; |  | 
| 344 } FilterOutPriv; |  | 
| 345 |  | 
| 346 |  | 
| 347 static int output_init(AVFilterContext *ctx, const char *args, void *opaque) |  | 
| 348 { |  | 
| 349     FilterOutPriv *priv = ctx->priv; |  | 
| 350 |  | 
| 351     if(!opaque) return -1; |  | 
| 352 |  | 
| 353     priv->pix_fmt = *((int *)opaque); |  | 
| 354 |  | 
| 355     return 0; |  | 
| 356 } |  | 
| 357 |  | 
| 358 static void output_end_frame(AVFilterLink *link) |  | 
| 359 { |  | 
| 360 } |  | 
| 361 |  | 
| 362 static int output_query_formats(AVFilterContext *ctx) |  | 
| 363 { |  | 
| 364     FilterOutPriv *priv = ctx->priv; |  | 
| 365     enum PixelFormat pix_fmts[] = { priv->pix_fmt, PIX_FMT_NONE }; |  | 
| 366 |  | 
| 367     avfilter_set_common_formats(ctx, avfilter_make_format_list(pix_fmts)); |  | 
| 368     return 0; |  | 
| 369 } |  | 
| 370 |  | 
| 371 static int get_filtered_video_pic(AVFilterContext *ctx, |  | 
| 372                                   AVFilterBufferRef **picref, AVFrame *pic2, |  | 
| 373                                   uint64_t *pts) |  | 
| 374 { |  | 
| 375     AVFilterBufferRef *pic; |  | 
| 376 |  | 
| 377     if(avfilter_request_frame(ctx->inputs[0])) |  | 
| 378         return -1; |  | 
| 379     if(!(pic = ctx->inputs[0]->cur_buf)) |  | 
| 380         return -1; |  | 
| 381     *picref = pic; |  | 
| 382     ctx->inputs[0]->cur_buf = NULL; |  | 
| 383 |  | 
| 384     *pts          = pic->pts; |  | 
| 385 |  | 
| 386     memcpy(pic2->data,     pic->data,     sizeof(pic->data)); |  | 
| 387     memcpy(pic2->linesize, pic->linesize, sizeof(pic->linesize)); |  | 
| 388     pic2->interlaced_frame = pic->video->interlaced; |  | 
| 389     pic2->top_field_first  = pic->video->top_field_first; |  | 
| 390 |  | 
| 391     return 1; |  | 
| 392 } |  | 
| 393 |  | 
| 394 static AVFilter output_filter = |  | 
| 395 { |  | 
| 396     .name      = "ffmpeg_output", |  | 
| 397 |  | 
| 398     .priv_size = sizeof(FilterOutPriv), |  | 
| 399     .init      = output_init, |  | 
| 400 |  | 
| 401     .query_formats = output_query_formats, |  | 
| 402 |  | 
| 403     .inputs    = (AVFilterPad[]) {{ .name          = "default", |  | 
| 404                                     .type          = AVMEDIA_TYPE_VIDEO, |  | 
| 405                                     .end_frame     = output_end_frame, |  | 
| 406                                     .min_perms     = AV_PERM_READ, }, |  | 
| 407                                   { .name = NULL }}, |  | 
| 408     .outputs   = (AVFilterPad[]) {{ .name = NULL }}, |  | 
| 409 }; |  | 
| 410 | 332 | 
| 411 static int configure_filters(AVInputStream *ist, AVOutputStream *ost) | 333 static int configure_filters(AVInputStream *ist, AVOutputStream *ost) | 
| 412 { | 334 { | 
| 413     AVFilterContext *last_filter, *filter; | 335     AVFilterContext *last_filter, *filter; | 
| 414     /** filter graph containing all filters including input & output */ | 336     /** filter graph containing all filters including input & output */ | 
| 415     AVCodecContext *codec = ost->st->codec; | 337     AVCodecContext *codec = ost->st->codec; | 
| 416     AVCodecContext *icodec = ist->st->codec; | 338     AVCodecContext *icodec = ist->st->codec; | 
|  | 339     FFSinkContext ffsink_ctx = { .pix_fmt = codec->pix_fmt }; | 
| 417     char args[255]; | 340     char args[255]; | 
| 418     int ret; | 341     int ret; | 
| 419 | 342 | 
| 420     graph = av_mallocz(sizeof(AVFilterGraph)); | 343     graph = av_mallocz(sizeof(AVFilterGraph)); | 
| 421 | 344 | 
| 422     if ((ret = avfilter_open(&ist->input_video_filter, avfilter_get_by_name("buf
      fer"), "src")) < 0) | 345     if ((ret = avfilter_open(&ist->input_video_filter, avfilter_get_by_name("buf
      fer"), "src")) < 0) | 
| 423         return ret; | 346         return ret; | 
| 424     if ((ret = avfilter_open(&ist->output_video_filter, &output_filter, "out")) 
      < 0) | 347     if ((ret = avfilter_open(&ist->output_video_filter, &ffsink, "out")) < 0) | 
| 425         return ret; | 348         return ret; | 
| 426 | 349 | 
| 427     snprintf(args, 255, "%d:%d:%d", ist->st->codec->width, | 350     snprintf(args, 255, "%d:%d:%d:%d:%d", ist->st->codec->width, | 
| 428              ist->st->codec->height, ist->st->codec->pix_fmt); | 351              ist->st->codec->height, ist->st->codec->pix_fmt, | 
|  | 352              ist->st->time_base.num, ist->st->time_base.den); | 
| 429     if ((ret = avfilter_init_filter(ist->input_video_filter, args, NULL)) < 0) | 353     if ((ret = avfilter_init_filter(ist->input_video_filter, args, NULL)) < 0) | 
| 430         return ret; | 354         return ret; | 
| 431     if ((ret = avfilter_init_filter(ist->output_video_filter, NULL, &codec->pix_
      fmt)) < 0) | 355     if ((ret = avfilter_init_filter(ist->output_video_filter, NULL, &ffsink_ctx)
      ) < 0) | 
| 432         return ret; | 356         return ret; | 
| 433 | 357 | 
| 434     /* add input and output filters to the overall graph */ | 358     /* add input and output filters to the overall graph */ | 
| 435     avfilter_graph_add_filter(graph, ist->input_video_filter); | 359     avfilter_graph_add_filter(graph, ist->input_video_filter); | 
| 436     avfilter_graph_add_filter(graph, ist->output_video_filter); | 360     avfilter_graph_add_filter(graph, ist->output_video_filter); | 
| 437 | 361 | 
| 438     last_filter = ist->input_video_filter; | 362     last_filter = ist->input_video_filter; | 
| 439 | 363 | 
| 440     if (ost->video_crop) { | 364     if (codec->width  != icodec->width || codec->height != icodec->height) { | 
| 441         snprintf(args, 255, "%d:%d:%d:%d", |  | 
| 442                  codec->width, codec->height, |  | 
| 443                  ost->leftBand, ost->topBand); |  | 
| 444         if ((ret = avfilter_open(&filter, avfilter_get_by_name("crop"), NULL)) <
       0) |  | 
| 445             return ret; |  | 
| 446         if ((ret = avfilter_init_filter(filter, args, NULL)) < 0) |  | 
| 447             return ret; |  | 
| 448         if ((ret = avfilter_link(last_filter, 0, filter, 0)) < 0) |  | 
| 449             return ret; |  | 
| 450         last_filter = filter; |  | 
| 451         avfilter_graph_add_filter(graph, last_filter); |  | 
| 452     } |  | 
| 453 |  | 
| 454     if((codec->width != |  | 
| 455         icodec->width - (frame_leftBand + frame_rightBand)) || |  | 
| 456        (codec->height != icodec->height - (frame_topBand  + frame_bottomBand))) 
      { |  | 
| 457         snprintf(args, 255, "%d:%d:flags=0x%X", | 365         snprintf(args, 255, "%d:%d:flags=0x%X", | 
| 458                  codec->width, | 366                  codec->width, | 
| 459                  codec->height, | 367                  codec->height, | 
| 460                  (int)av_get_int(sws_opts, "sws_flags", NULL)); | 368                  (int)av_get_int(sws_opts, "sws_flags", NULL)); | 
| 461         if ((ret = avfilter_open(&filter, avfilter_get_by_name("scale"), NULL)) 
      < 0) | 369         if ((ret = avfilter_open(&filter, avfilter_get_by_name("scale"), NULL)) 
      < 0) | 
| 462             return ret; | 370             return ret; | 
| 463         if ((ret = avfilter_init_filter(filter, args, NULL)) < 0) | 371         if ((ret = avfilter_init_filter(filter, args, NULL)) < 0) | 
| 464             return ret; | 372             return ret; | 
| 465         if ((ret = avfilter_link(last_filter, 0, filter, 0)) < 0) | 373         if ((ret = avfilter_link(last_filter, 0, filter, 0)) < 0) | 
| 466             return ret; | 374             return ret; | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 486         inputs->next    = NULL; | 394         inputs->next    = NULL; | 
| 487 | 395 | 
| 488         if ((ret = avfilter_graph_parse(graph, vfilters, inputs, outputs, NULL))
       < 0) | 396         if ((ret = avfilter_graph_parse(graph, vfilters, inputs, outputs, NULL))
       < 0) | 
| 489             return ret; | 397             return ret; | 
| 490         av_freep(&vfilters); | 398         av_freep(&vfilters); | 
| 491     } else { | 399     } else { | 
| 492         if ((ret = avfilter_link(last_filter, 0, ist->output_video_filter, 0)) <
       0) | 400         if ((ret = avfilter_link(last_filter, 0, ist->output_video_filter, 0)) <
       0) | 
| 493             return ret; | 401             return ret; | 
| 494     } | 402     } | 
| 495 | 403 | 
| 496     /* configure all the filter links */ | 404     if ((ret = avfilter_graph_config(graph, NULL)) < 0) | 
| 497     if ((ret = avfilter_graph_check_validity(graph, NULL)) < 0) |  | 
| 498         return ret; |  | 
| 499     if ((ret = avfilter_graph_config_formats(graph, NULL)) < 0) |  | 
| 500         return ret; |  | 
| 501     if ((ret = avfilter_graph_config_links(graph, NULL)) < 0) |  | 
| 502         return ret; | 405         return ret; | 
| 503 | 406 | 
| 504     codec->width  = ist->output_video_filter->inputs[0]->w; | 407     codec->width  = ist->output_video_filter->inputs[0]->w; | 
| 505     codec->height = ist->output_video_filter->inputs[0]->h; | 408     codec->height = ist->output_video_filter->inputs[0]->h; | 
| 506 | 409 | 
| 507     return 0; | 410     return 0; | 
| 508 } | 411 } | 
| 509 #endif /* CONFIG_AVFILTER */ | 412 #endif /* CONFIG_AVFILTER */ | 
| 510 | 413 | 
| 511 static void term_exit(void) | 414 static void term_exit(void) | 
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 605             av_free(s->streams[j]); | 508             av_free(s->streams[j]); | 
| 606         } | 509         } | 
| 607         for(j=0;j<s->nb_programs;j++) { | 510         for(j=0;j<s->nb_programs;j++) { | 
| 608             av_metadata_free(&s->programs[j]->metadata); | 511             av_metadata_free(&s->programs[j]->metadata); | 
| 609         } | 512         } | 
| 610         for(j=0;j<s->nb_chapters;j++) { | 513         for(j=0;j<s->nb_chapters;j++) { | 
| 611             av_metadata_free(&s->chapters[j]->metadata); | 514             av_metadata_free(&s->chapters[j]->metadata); | 
| 612         } | 515         } | 
| 613         av_metadata_free(&s->metadata); | 516         av_metadata_free(&s->metadata); | 
| 614         av_free(s); | 517         av_free(s); | 
| 615         av_free(bitstream_filters[i]); | 518         av_free(output_streams_for_file[i]); | 
| 616     } | 519     } | 
| 617     for(i=0;i<nb_input_files;i++) { | 520     for(i=0;i<nb_input_files;i++) { | 
| 618         av_close_input_file(input_files[i]); | 521         av_close_input_file(input_files[i]); | 
| 619         av_free(input_files_ts_scale[i]); | 522         av_free(input_files_ts_scale[i]); | 
| 620     } | 523     } | 
| 621 | 524 | 
| 622     av_free(intra_matrix); | 525     av_free(intra_matrix); | 
| 623     av_free(inter_matrix); | 526     av_free(inter_matrix); | 
| 624 | 527 | 
| 625     if (vstats_file) | 528     if (vstats_file) | 
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 994                 fprintf(stderr, "Audio encoding failed\n"); | 897                 fprintf(stderr, "Audio encoding failed\n"); | 
| 995                 ffmpeg_exit(1); | 898                 ffmpeg_exit(1); | 
| 996             } | 899             } | 
| 997             audio_size += ret; | 900             audio_size += ret; | 
| 998             pkt.stream_index= ost->index; | 901             pkt.stream_index= ost->index; | 
| 999             pkt.data= audio_out; | 902             pkt.data= audio_out; | 
| 1000             pkt.size= ret; | 903             pkt.size= ret; | 
| 1001             if(enc->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE) | 904             if(enc->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE) | 
| 1002                 pkt.pts= av_rescale_q(enc->coded_frame->pts, enc->time_base, ost
      ->st->time_base); | 905                 pkt.pts= av_rescale_q(enc->coded_frame->pts, enc->time_base, ost
      ->st->time_base); | 
| 1003             pkt.flags |= AV_PKT_FLAG_KEY; | 906             pkt.flags |= AV_PKT_FLAG_KEY; | 
| 1004             write_frame(s, &pkt, enc, bitstream_filters[ost->file_index][pkt.str
      eam_index]); | 907             write_frame(s, &pkt, enc, ost->bitstream_filters); | 
| 1005 | 908 | 
| 1006             ost->sync_opts += enc->frame_size; | 909             ost->sync_opts += enc->frame_size; | 
| 1007         } | 910         } | 
| 1008     } else { | 911     } else { | 
| 1009         AVPacket pkt; | 912         AVPacket pkt; | 
| 1010         av_init_packet(&pkt); | 913         av_init_packet(&pkt); | 
| 1011 | 914 | 
| 1012         ost->sync_opts += size_out / (osize * enc->channels); | 915         ost->sync_opts += size_out / (osize * enc->channels); | 
| 1013 | 916 | 
| 1014         /* output a pcm frame */ | 917         /* output a pcm frame */ | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 1029             fprintf(stderr, "Audio encoding failed\n"); | 932             fprintf(stderr, "Audio encoding failed\n"); | 
| 1030             ffmpeg_exit(1); | 933             ffmpeg_exit(1); | 
| 1031         } | 934         } | 
| 1032         audio_size += ret; | 935         audio_size += ret; | 
| 1033         pkt.stream_index= ost->index; | 936         pkt.stream_index= ost->index; | 
| 1034         pkt.data= audio_out; | 937         pkt.data= audio_out; | 
| 1035         pkt.size= ret; | 938         pkt.size= ret; | 
| 1036         if(enc->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE) | 939         if(enc->coded_frame && enc->coded_frame->pts != AV_NOPTS_VALUE) | 
| 1037             pkt.pts= av_rescale_q(enc->coded_frame->pts, enc->time_base, ost->st
      ->time_base); | 940             pkt.pts= av_rescale_q(enc->coded_frame->pts, enc->time_base, ost->st
      ->time_base); | 
| 1038         pkt.flags |= AV_PKT_FLAG_KEY; | 941         pkt.flags |= AV_PKT_FLAG_KEY; | 
| 1039         write_frame(s, &pkt, enc, bitstream_filters[ost->file_index][pkt.stream_
      index]); | 942         write_frame(s, &pkt, enc, ost->bitstream_filters); | 
| 1040     } | 943     } | 
| 1041 } | 944 } | 
| 1042 | 945 | 
| 1043 static void pre_process_video_frame(AVInputStream *ist, AVPicture *picture, void
       **bufp) | 946 static void pre_process_video_frame(AVInputStream *ist, AVPicture *picture, void
       **bufp) | 
| 1044 { | 947 { | 
| 1045     AVCodecContext *dec; | 948     AVCodecContext *dec; | 
| 1046     AVPicture *picture2; | 949     AVPicture *picture2; | 
| 1047     AVPicture picture_tmp; | 950     AVPicture picture_tmp; | 
| 1048     uint8_t *buf = 0; | 951     uint8_t *buf = 0; | 
| 1049 | 952 | 
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1134         pkt.size = subtitle_out_size; | 1037         pkt.size = subtitle_out_size; | 
| 1135         pkt.pts = av_rescale_q(sub->pts, AV_TIME_BASE_Q, ost->st->time_base); | 1038         pkt.pts = av_rescale_q(sub->pts, AV_TIME_BASE_Q, ost->st->time_base); | 
| 1136         if (enc->codec_id == CODEC_ID_DVB_SUBTITLE) { | 1039         if (enc->codec_id == CODEC_ID_DVB_SUBTITLE) { | 
| 1137             /* XXX: the pts correction is handled here. Maybe handling | 1040             /* XXX: the pts correction is handled here. Maybe handling | 
| 1138                it in the codec would be better */ | 1041                it in the codec would be better */ | 
| 1139             if (i == 0) | 1042             if (i == 0) | 
| 1140                 pkt.pts += 90 * sub->start_display_time; | 1043                 pkt.pts += 90 * sub->start_display_time; | 
| 1141             else | 1044             else | 
| 1142                 pkt.pts += 90 * sub->end_display_time; | 1045                 pkt.pts += 90 * sub->end_display_time; | 
| 1143         } | 1046         } | 
| 1144         write_frame(s, &pkt, ost->st->codec, bitstream_filters[ost->file_index][
      pkt.stream_index]); | 1047         write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters); | 
| 1145     } | 1048     } | 
| 1146 } | 1049 } | 
| 1147 | 1050 | 
| 1148 static int bit_buffer_size= 1024*256; | 1051 static int bit_buffer_size= 1024*256; | 
| 1149 static uint8_t *bit_buffer= NULL; | 1052 static uint8_t *bit_buffer= NULL; | 
| 1150 | 1053 | 
| 1151 static void do_video_out(AVFormatContext *s, | 1054 static void do_video_out(AVFormatContext *s, | 
| 1152                          AVOutputStream *ost, | 1055                          AVOutputStream *ost, | 
| 1153                          AVInputStream *ist, | 1056                          AVInputStream *ist, | 
| 1154                          AVFrame *in_picture, | 1057                          AVFrame *in_picture, | 
| 1155                          int *frame_size) | 1058                          int *frame_size) | 
| 1156 { | 1059 { | 
| 1157     int nb_frames, i, ret; | 1060     int nb_frames, i, ret; | 
| 1158 #if !CONFIG_AVFILTER |  | 
| 1159     int64_t topBand, bottomBand, leftBand, rightBand; |  | 
| 1160 #endif |  | 
| 1161     AVFrame *final_picture, *formatted_picture, *resampling_dst, *padding_src; | 1061     AVFrame *final_picture, *formatted_picture, *resampling_dst, *padding_src; | 
| 1162     AVFrame picture_crop_temp, picture_pad_temp; |  | 
| 1163     AVCodecContext *enc, *dec; | 1062     AVCodecContext *enc, *dec; | 
| 1164     double sync_ipts; | 1063     double sync_ipts; | 
| 1165 | 1064 | 
| 1166     avcodec_get_frame_defaults(&picture_crop_temp); |  | 
| 1167     avcodec_get_frame_defaults(&picture_pad_temp); |  | 
| 1168 |  | 
| 1169     enc = ost->st->codec; | 1065     enc = ost->st->codec; | 
| 1170     dec = ist->st->codec; | 1066     dec = ist->st->codec; | 
| 1171 | 1067 | 
| 1172     sync_ipts = get_sync_ipts(ost) / av_q2d(enc->time_base); | 1068     sync_ipts = get_sync_ipts(ost) / av_q2d(enc->time_base); | 
| 1173 | 1069 | 
| 1174     /* by default, we output a single frame */ | 1070     /* by default, we output a single frame */ | 
| 1175     nb_frames = 1; | 1071     nb_frames = 1; | 
| 1176 | 1072 | 
| 1177     *frame_size = 0; | 1073     *frame_size = 0; | 
| 1178 | 1074 | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 1198             if (verbose>2) | 1094             if (verbose>2) | 
| 1199                 fprintf(stderr, "*** %d dup!\n", nb_frames-1); | 1095                 fprintf(stderr, "*** %d dup!\n", nb_frames-1); | 
| 1200         } | 1096         } | 
| 1201     }else | 1097     }else | 
| 1202         ost->sync_opts= lrintf(sync_ipts); | 1098         ost->sync_opts= lrintf(sync_ipts); | 
| 1203 | 1099 | 
| 1204     nb_frames= FFMIN(nb_frames, max_frames[AVMEDIA_TYPE_VIDEO] - ost->frame_numb
      er); | 1100     nb_frames= FFMIN(nb_frames, max_frames[AVMEDIA_TYPE_VIDEO] - ost->frame_numb
      er); | 
| 1205     if (nb_frames <= 0) | 1101     if (nb_frames <= 0) | 
| 1206         return; | 1102         return; | 
| 1207 | 1103 | 
| 1208 #if CONFIG_AVFILTER |  | 
| 1209     formatted_picture = in_picture; | 1104     formatted_picture = in_picture; | 
| 1210 #else |  | 
| 1211     if (ost->video_crop) { |  | 
| 1212         if (av_picture_crop((AVPicture *)&picture_crop_temp, (AVPicture *)in_pic
      ture, dec->pix_fmt, ost->topBand, ost->leftBand) < 0) { |  | 
| 1213             fprintf(stderr, "error cropping picture\n"); |  | 
| 1214             if (exit_on_error) |  | 
| 1215                 ffmpeg_exit(1); |  | 
| 1216             return; |  | 
| 1217         } |  | 
| 1218         formatted_picture = &picture_crop_temp; |  | 
| 1219     } else { |  | 
| 1220         formatted_picture = in_picture; |  | 
| 1221     } |  | 
| 1222 #endif |  | 
| 1223 |  | 
| 1224     final_picture = formatted_picture; | 1105     final_picture = formatted_picture; | 
| 1225     padding_src = formatted_picture; | 1106     padding_src = formatted_picture; | 
| 1226     resampling_dst = &ost->pict_tmp; | 1107     resampling_dst = &ost->pict_tmp; | 
| 1227 | 1108 | 
| 1228     if(    (ost->resample_height != (ist->st->codec->height - (ost->topBand  + o
      st->bottomBand))) | 1109     if (   ost->resample_height != ist->st->codec->height | 
| 1229         || (ost->resample_width  != (ist->st->codec->width  - (ost->leftBand + o
      st->rightBand))) | 1110         || ost->resample_width  != ist->st->codec->width | 
| 1230         || (ost->resample_pix_fmt!= ist->st->codec->pix_fmt) ) { | 1111         || (ost->resample_pix_fmt!= ist->st->codec->pix_fmt) ) { | 
| 1231 | 1112 | 
| 1232         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,a
      vcodec_get_pix_fmt_name(ist->st->codec->pix_fmt)); | 1113         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,a
      vcodec_get_pix_fmt_name(ist->st->codec->pix_fmt)); | 
| 1233         if(!ost->video_resample) | 1114         if(!ost->video_resample) | 
| 1234             ffmpeg_exit(1); | 1115             ffmpeg_exit(1); | 
| 1235     } | 1116     } | 
| 1236 | 1117 | 
| 1237 #if !CONFIG_AVFILTER | 1118 #if !CONFIG_AVFILTER | 
| 1238     if (ost->video_resample) { | 1119     if (ost->video_resample) { | 
| 1239         padding_src = NULL; | 1120         padding_src = NULL; | 
| 1240         final_picture = &ost->pict_tmp; | 1121         final_picture = &ost->pict_tmp; | 
| 1241         if(  (ost->resample_height != (ist->st->codec->height - (ost->topBand  +
       ost->bottomBand))) | 1122         if(  ost->resample_height != ist->st->codec->height | 
| 1242           || (ost->resample_width  != (ist->st->codec->width  - (ost->leftBand +
       ost->rightBand))) | 1123           || ost->resample_width  != ist->st->codec->width | 
| 1243           || (ost->resample_pix_fmt!= ist->st->codec->pix_fmt) ) { | 1124           || (ost->resample_pix_fmt!= ist->st->codec->pix_fmt) ) { | 
| 1244 | 1125 | 
| 1245             /* keep bands proportional to the frame size */ |  | 
| 1246             topBand    = ((int64_t)ist->st->codec->height * ost->original_topBan
      d    / ost->original_height) & ~1; |  | 
| 1247             bottomBand = ((int64_t)ist->st->codec->height * ost->original_bottom
      Band / ost->original_height) & ~1; |  | 
| 1248             leftBand   = ((int64_t)ist->st->codec->width  * ost->original_leftBa
      nd   / ost->original_width)  & ~1; |  | 
| 1249             rightBand  = ((int64_t)ist->st->codec->width  * ost->original_rightB
      and  / ost->original_width)  & ~1; |  | 
| 1250 |  | 
| 1251             /* sanity check to ensure no bad band sizes sneak in */ |  | 
| 1252             av_assert0(topBand    <= INT_MAX && topBand    >= 0); |  | 
| 1253             av_assert0(bottomBand <= INT_MAX && bottomBand >= 0); |  | 
| 1254             av_assert0(leftBand   <= INT_MAX && leftBand   >= 0); |  | 
| 1255             av_assert0(rightBand  <= INT_MAX && rightBand  >= 0); |  | 
| 1256 |  | 
| 1257             ost->topBand    = topBand; |  | 
| 1258             ost->bottomBand = bottomBand; |  | 
| 1259             ost->leftBand   = leftBand; |  | 
| 1260             ost->rightBand  = rightBand; |  | 
| 1261 |  | 
| 1262             ost->resample_height = ist->st->codec->height - (ost->topBand  + ost
      ->bottomBand); |  | 
| 1263             ost->resample_width  = ist->st->codec->width  - (ost->leftBand + ost
      ->rightBand); |  | 
| 1264             ost->resample_pix_fmt= ist->st->codec->pix_fmt; |  | 
| 1265 |  | 
| 1266             /* initialize a new scaler context */ | 1126             /* initialize a new scaler context */ | 
| 1267             sws_freeContext(ost->img_resample_ctx); | 1127             sws_freeContext(ost->img_resample_ctx); | 
| 1268             sws_flags = av_get_int(sws_opts, "sws_flags", NULL); | 1128             sws_flags = av_get_int(sws_opts, "sws_flags", NULL); | 
| 1269             ost->img_resample_ctx = sws_getContext( | 1129             ost->img_resample_ctx = sws_getContext( | 
| 1270                 ist->st->codec->width  - (ost->leftBand + ost->rightBand), | 1130                 ist->st->codec->width, | 
| 1271                 ist->st->codec->height - (ost->topBand  + ost->bottomBand), | 1131                 ist->st->codec->height, | 
| 1272                 ist->st->codec->pix_fmt, | 1132                 ist->st->codec->pix_fmt, | 
| 1273                 ost->st->codec->width, | 1133                 ost->st->codec->width, | 
| 1274                 ost->st->codec->height, | 1134                 ost->st->codec->height, | 
| 1275                 ost->st->codec->pix_fmt, | 1135                 ost->st->codec->pix_fmt, | 
| 1276                 sws_flags, NULL, NULL, NULL); | 1136                 sws_flags, NULL, NULL, NULL); | 
| 1277             if (ost->img_resample_ctx == NULL) { | 1137             if (ost->img_resample_ctx == NULL) { | 
| 1278                 fprintf(stderr, "Cannot get resampling context\n"); | 1138                 fprintf(stderr, "Cannot get resampling context\n"); | 
| 1279                 ffmpeg_exit(1); | 1139                 ffmpeg_exit(1); | 
| 1280             } | 1140             } | 
| 1281         } | 1141         } | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 1294             /* raw pictures are written as AVPicture structure to | 1154             /* raw pictures are written as AVPicture structure to | 
| 1295                avoid any copies. We support temorarily the older | 1155                avoid any copies. We support temorarily the older | 
| 1296                method. */ | 1156                method. */ | 
| 1297             AVFrame* old_frame = enc->coded_frame; | 1157             AVFrame* old_frame = enc->coded_frame; | 
| 1298             enc->coded_frame = dec->coded_frame; //FIXME/XXX remove this hack | 1158             enc->coded_frame = dec->coded_frame; //FIXME/XXX remove this hack | 
| 1299             pkt.data= (uint8_t *)final_picture; | 1159             pkt.data= (uint8_t *)final_picture; | 
| 1300             pkt.size=  sizeof(AVPicture); | 1160             pkt.size=  sizeof(AVPicture); | 
| 1301             pkt.pts= av_rescale_q(ost->sync_opts, enc->time_base, ost->st->time_
      base); | 1161             pkt.pts= av_rescale_q(ost->sync_opts, enc->time_base, ost->st->time_
      base); | 
| 1302             pkt.flags |= AV_PKT_FLAG_KEY; | 1162             pkt.flags |= AV_PKT_FLAG_KEY; | 
| 1303 | 1163 | 
| 1304             write_frame(s, &pkt, ost->st->codec, bitstream_filters[ost->file_ind
      ex][pkt.stream_index]); | 1164             write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters); | 
| 1305             enc->coded_frame = old_frame; | 1165             enc->coded_frame = old_frame; | 
| 1306         } else { | 1166         } else { | 
| 1307             AVFrame big_picture; | 1167             AVFrame big_picture; | 
| 1308 | 1168 | 
| 1309             big_picture= *final_picture; | 1169             big_picture= *final_picture; | 
| 1310             /* better than nothing: use input picture interlaced | 1170             /* better than nothing: use input picture interlaced | 
| 1311                settings */ | 1171                settings */ | 
| 1312             big_picture.interlaced_frame = in_picture->interlaced_frame; | 1172             big_picture.interlaced_frame = in_picture->interlaced_frame; | 
| 1313             if(avcodec_opts[AVMEDIA_TYPE_VIDEO]->flags & (CODEC_FLAG_INTERLACED_
      DCT|CODEC_FLAG_INTERLACED_ME)){ | 1173             if(avcodec_opts[AVMEDIA_TYPE_VIDEO]->flags & (CODEC_FLAG_INTERLACED_
      DCT|CODEC_FLAG_INTERLACED_ME)){ | 
| 1314                 if(top_field_first == -1) | 1174                 if(top_field_first == -1) | 
| 1315                     big_picture.top_field_first = in_picture->top_field_first; | 1175                     big_picture.top_field_first = in_picture->top_field_first; | 
| 1316                 else | 1176                 else | 
| 1317                     big_picture.top_field_first = top_field_first; | 1177                     big_picture.top_field_first = top_field_first; | 
| 1318             } | 1178             } | 
| 1319 | 1179 | 
| 1320             /* handles sameq here. This is not correct because it may | 1180             /* handles sameq here. This is not correct because it may | 
| 1321                not be a global option */ | 1181                not be a global option */ | 
| 1322             big_picture.quality = same_quality ? ist->st->quality : ost->st->qua
      lity; | 1182             big_picture.quality = same_quality ? ist->st->quality : ost->st->qua
      lity; | 
| 1323             if(!me_threshold) | 1183             if(!me_threshold) | 
| 1324                 big_picture.pict_type = 0; | 1184                 big_picture.pict_type = 0; | 
| 1325 //            big_picture.pts = AV_NOPTS_VALUE; | 1185 //            big_picture.pts = AV_NOPTS_VALUE; | 
| 1326             big_picture.pts= ost->sync_opts; | 1186             big_picture.pts= ost->sync_opts; | 
| 1327 //            big_picture.pts= av_rescale(ost->sync_opts, AV_TIME_BASE*(int64_t)
      enc->time_base.num, enc->time_base.den); | 1187 //            big_picture.pts= av_rescale(ost->sync_opts, AV_TIME_BASE*(int64_t)
      enc->time_base.num, enc->time_base.den); | 
| 1328 //av_log(NULL, AV_LOG_DEBUG, "%"PRId64" -> encoder\n", ost->sync_opts); | 1188 //av_log(NULL, AV_LOG_DEBUG, "%"PRId64" -> encoder\n", ost->sync_opts); | 
|  | 1189             if (ost->forced_kf_index < ost->forced_kf_count && | 
|  | 1190                 big_picture.pts >= ost->forced_kf_pts[ost->forced_kf_index]) { | 
|  | 1191                 big_picture.pict_type = FF_I_TYPE; | 
|  | 1192                 ost->forced_kf_index++; | 
|  | 1193             } | 
| 1329             ret = avcodec_encode_video(enc, | 1194             ret = avcodec_encode_video(enc, | 
| 1330                                        bit_buffer, bit_buffer_size, | 1195                                        bit_buffer, bit_buffer_size, | 
| 1331                                        &big_picture); | 1196                                        &big_picture); | 
| 1332             if (ret < 0) { | 1197             if (ret < 0) { | 
| 1333                 fprintf(stderr, "Video encoding failed\n"); | 1198                 fprintf(stderr, "Video encoding failed\n"); | 
| 1334                 ffmpeg_exit(1); | 1199                 ffmpeg_exit(1); | 
| 1335             } | 1200             } | 
| 1336 | 1201 | 
| 1337             if(ret>0){ | 1202             if(ret>0){ | 
| 1338                 pkt.data= bit_buffer; | 1203                 pkt.data= bit_buffer; | 
| 1339                 pkt.size= ret; | 1204                 pkt.size= ret; | 
| 1340                 if(enc->coded_frame->pts != AV_NOPTS_VALUE) | 1205                 if(enc->coded_frame->pts != AV_NOPTS_VALUE) | 
| 1341                     pkt.pts= av_rescale_q(enc->coded_frame->pts, enc->time_base,
       ost->st->time_base); | 1206                     pkt.pts= av_rescale_q(enc->coded_frame->pts, enc->time_base,
       ost->st->time_base); | 
| 1342 /*av_log(NULL, AV_LOG_DEBUG, "encoder -> %"PRId64"/%"PRId64"\n", | 1207 /*av_log(NULL, AV_LOG_DEBUG, "encoder -> %"PRId64"/%"PRId64"\n", | 
| 1343    pkt.pts != AV_NOPTS_VALUE ? av_rescale(pkt.pts, enc->time_base.den, AV_TIME_B
      ASE*(int64_t)enc->time_base.num) : -1, | 1208    pkt.pts != AV_NOPTS_VALUE ? av_rescale(pkt.pts, enc->time_base.den, AV_TIME_B
      ASE*(int64_t)enc->time_base.num) : -1, | 
| 1344    pkt.dts != AV_NOPTS_VALUE ? av_rescale(pkt.dts, enc->time_base.den, AV_TIME_B
      ASE*(int64_t)enc->time_base.num) : -1);*/ | 1209    pkt.dts != AV_NOPTS_VALUE ? av_rescale(pkt.dts, enc->time_base.den, AV_TIME_B
      ASE*(int64_t)enc->time_base.num) : -1);*/ | 
| 1345 | 1210 | 
| 1346                 if(enc->coded_frame->key_frame) | 1211                 if(enc->coded_frame->key_frame) | 
| 1347                     pkt.flags |= AV_PKT_FLAG_KEY; | 1212                     pkt.flags |= AV_PKT_FLAG_KEY; | 
| 1348                 write_frame(s, &pkt, ost->st->codec, bitstream_filters[ost->file
      _index][pkt.stream_index]); | 1213                 write_frame(s, &pkt, ost->st->codec, ost->bitstream_filters); | 
| 1349                 *frame_size = ret; | 1214                 *frame_size = ret; | 
| 1350                 video_size += ret; | 1215                 video_size += ret; | 
| 1351                 //fprintf(stderr,"\nFrame: %3d size: %5d type: %d", | 1216                 //fprintf(stderr,"\nFrame: %3d size: %5d type: %d", | 
| 1352                 //        enc->frame_number-1, ret, enc->pict_type); | 1217                 //        enc->frame_number-1, ret, enc->pict_type); | 
| 1353                 /* if two pass, output log */ | 1218                 /* if two pass, output log */ | 
| 1354                 if (ost->logfile && enc->stats_out) { | 1219                 if (ost->logfile && enc->stats_out) { | 
| 1355                     fprintf(ost->logfile, "%s", enc->stats_out); | 1220                     fprintf(ost->logfile, "%s", enc->stats_out); | 
| 1356                 } | 1221                 } | 
| 1357             } | 1222             } | 
| 1358         } | 1223         } | 
| (...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1707         } | 1572         } | 
| 1708 #if CONFIG_AVFILTER | 1573 #if CONFIG_AVFILTER | 
| 1709         frame_available = ist->st->codec->codec_type != AVMEDIA_TYPE_VIDEO || | 1574         frame_available = ist->st->codec->codec_type != AVMEDIA_TYPE_VIDEO || | 
| 1710             !ist->output_video_filter || avfilter_poll_frame(ist->output_video_f
      ilter->inputs[0]); | 1575             !ist->output_video_filter || avfilter_poll_frame(ist->output_video_f
      ilter->inputs[0]); | 
| 1711 #endif | 1576 #endif | 
| 1712         /* if output time reached then transcode raw format, | 1577         /* if output time reached then transcode raw format, | 
| 1713            encode packets and output them */ | 1578            encode packets and output them */ | 
| 1714         if (start_time == 0 || ist->pts >= start_time) | 1579         if (start_time == 0 || ist->pts >= start_time) | 
| 1715 #if CONFIG_AVFILTER | 1580 #if CONFIG_AVFILTER | 
| 1716         while (frame_available) { | 1581         while (frame_available) { | 
|  | 1582             AVRational ist_pts_tb; | 
| 1717             if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO && ist->output_
      video_filter) | 1583             if (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO && ist->output_
      video_filter) | 
| 1718                 get_filtered_video_pic(ist->output_video_filter, &ist->picref, &
      picture, &ist->pts); | 1584                 get_filtered_video_frame(ist->output_video_filter, &picture, &is
      t->picref, &ist_pts_tb); | 
|  | 1585             if (ist->picref) | 
|  | 1586                 ist->pts = ist->picref->pts; | 
| 1719 #endif | 1587 #endif | 
| 1720             for(i=0;i<nb_ostreams;i++) { | 1588             for(i=0;i<nb_ostreams;i++) { | 
| 1721                 int frame_size; | 1589                 int frame_size; | 
| 1722 | 1590 | 
| 1723                 ost = ost_table[i]; | 1591                 ost = ost_table[i]; | 
| 1724                 if (ost->source_index == ist_index) { | 1592                 if (ost->source_index == ist_index) { | 
| 1725                     os = output_files[ost->file_index]; | 1593                     os = output_files[ost->file_index]; | 
| 1726 | 1594 | 
| 1727                     /* set the input output pts pairs */ | 1595                     /* set the input output pts pairs */ | 
| 1728                     //ost->sync_ipts = (double)(ist->pts + input_files_ts_offset
      [ist->file_index] - start_time)/ AV_TIME_BASE; | 1596                     //ost->sync_ipts = (double)(ist->pts + input_files_ts_offset
      [ist->file_index] - start_time)/ AV_TIME_BASE; | 
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1793                            && ost->st->codec->codec_id != CODEC_ID_MPEG1VIDEO | 1661                            && ost->st->codec->codec_id != CODEC_ID_MPEG1VIDEO | 
| 1794                            && ost->st->codec->codec_id != CODEC_ID_MPEG2VIDEO | 1662                            && ost->st->codec->codec_id != CODEC_ID_MPEG2VIDEO | 
| 1795                            ) { | 1663                            ) { | 
| 1796                             if(av_parser_change(ist->st->parser, ost->st->codec,
       &opkt.data, &opkt.size, data_buf, data_size, pkt->flags & AV_PKT_FLAG_KEY)) | 1664                             if(av_parser_change(ist->st->parser, ost->st->codec,
       &opkt.data, &opkt.size, data_buf, data_size, pkt->flags & AV_PKT_FLAG_KEY)) | 
| 1797                                 opkt.destruct= av_destruct_packet; | 1665                                 opkt.destruct= av_destruct_packet; | 
| 1798                         } else { | 1666                         } else { | 
| 1799                             opkt.data = data_buf; | 1667                             opkt.data = data_buf; | 
| 1800                             opkt.size = data_size; | 1668                             opkt.size = data_size; | 
| 1801                         } | 1669                         } | 
| 1802 | 1670 | 
| 1803                         write_frame(os, &opkt, ost->st->codec, bitstream_filters
      [ost->file_index][opkt.stream_index]); | 1671                         write_frame(os, &opkt, ost->st->codec, ost->bitstream_fi
      lters); | 
| 1804                         ost->st->codec->frame_number++; | 1672                         ost->st->codec->frame_number++; | 
| 1805                         ost->frame_number++; | 1673                         ost->frame_number++; | 
| 1806                         av_free_packet(&opkt); | 1674                         av_free_packet(&opkt); | 
| 1807                     } | 1675                     } | 
| 1808                 } | 1676                 } | 
| 1809             } | 1677             } | 
| 1810 | 1678 | 
| 1811 #if CONFIG_AVFILTER | 1679 #if CONFIG_AVFILTER | 
| 1812             frame_available = (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
       && | 1680             frame_available = (ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
       && | 
| 1813                               ist->output_video_filter && avfilter_poll_frame(is
      t->output_video_filter->inputs[0]); | 1681                               ist->output_video_filter && avfilter_poll_frame(is
      t->output_video_filter->inputs[0]); | 
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1902                         default: | 1770                         default: | 
| 1903                             ret=-1; | 1771                             ret=-1; | 
| 1904                         } | 1772                         } | 
| 1905 | 1773 | 
| 1906                         if(ret<=0) | 1774                         if(ret<=0) | 
| 1907                             break; | 1775                             break; | 
| 1908                         pkt.data= bit_buffer; | 1776                         pkt.data= bit_buffer; | 
| 1909                         pkt.size= ret; | 1777                         pkt.size= ret; | 
| 1910                         if(enc->coded_frame && enc->coded_frame->pts != AV_NOPTS
      _VALUE) | 1778                         if(enc->coded_frame && enc->coded_frame->pts != AV_NOPTS
      _VALUE) | 
| 1911                             pkt.pts= av_rescale_q(enc->coded_frame->pts, enc->ti
      me_base, ost->st->time_base); | 1779                             pkt.pts= av_rescale_q(enc->coded_frame->pts, enc->ti
      me_base, ost->st->time_base); | 
| 1912                         write_frame(os, &pkt, ost->st->codec, bitstream_filters[
      ost->file_index][pkt.stream_index]); | 1780                         write_frame(os, &pkt, ost->st->codec, ost->bitstream_fil
      ters); | 
| 1913                     } | 1781                     } | 
| 1914                 } | 1782                 } | 
| 1915             } | 1783             } | 
| 1916         } | 1784         } | 
| 1917     } | 1785     } | 
| 1918 | 1786 | 
| 1919     return 0; | 1787     return 0; | 
| 1920  fail_decode: | 1788  fail_decode: | 
| 1921     return -1; | 1789     return -1; | 
| 1922 } | 1790 } | 
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1964 | 1832 | 
| 1965         os->nb_chapters++; | 1833         os->nb_chapters++; | 
| 1966         os->chapters = av_realloc(os->chapters, sizeof(AVChapter)*os->nb_chapter
      s); | 1834         os->chapters = av_realloc(os->chapters, sizeof(AVChapter)*os->nb_chapter
      s); | 
| 1967         if (!os->chapters) | 1835         if (!os->chapters) | 
| 1968             return AVERROR(ENOMEM); | 1836             return AVERROR(ENOMEM); | 
| 1969         os->chapters[os->nb_chapters - 1] = out_ch; | 1837         os->chapters[os->nb_chapters - 1] = out_ch; | 
| 1970     } | 1838     } | 
| 1971     return 0; | 1839     return 0; | 
| 1972 } | 1840 } | 
| 1973 | 1841 | 
|  | 1842 static void parse_forced_key_frames(char *kf, AVOutputStream *ost, | 
|  | 1843                                     AVCodecContext *avctx) | 
|  | 1844 { | 
|  | 1845     char *p; | 
|  | 1846     int n = 1, i; | 
|  | 1847     int64_t t; | 
|  | 1848 | 
|  | 1849     for (p = kf; *p; p++) | 
|  | 1850         if (*p == ',') | 
|  | 1851             n++; | 
|  | 1852     ost->forced_kf_count = n; | 
|  | 1853     ost->forced_kf_pts = av_malloc(sizeof(*ost->forced_kf_pts) * n); | 
|  | 1854     if (!ost->forced_kf_pts) { | 
|  | 1855         av_log(NULL, AV_LOG_FATAL, "Could not allocate forced key frames array.\
      n"); | 
|  | 1856         ffmpeg_exit(1); | 
|  | 1857     } | 
|  | 1858     for (i = 0; i < n; i++) { | 
|  | 1859         p = i ? strchr(p, ',') + 1 : kf; | 
|  | 1860         t = parse_time_or_die("force_key_frames", p, 1); | 
|  | 1861         ost->forced_kf_pts[i] = av_rescale_q(t, AV_TIME_BASE_Q, avctx->time_base
      ); | 
|  | 1862     } | 
|  | 1863 } | 
|  | 1864 | 
| 1974 /* | 1865 /* | 
| 1975  * The following code is the main loop of the file converter | 1866  * The following code is the main loop of the file converter | 
| 1976  */ | 1867  */ | 
| 1977 static int transcode(AVFormatContext **output_files, | 1868 static int transcode(AVFormatContext **output_files, | 
| 1978                      int nb_output_files, | 1869                      int nb_output_files, | 
| 1979                      AVFormatContext **input_files, | 1870                      AVFormatContext **input_files, | 
| 1980                      int nb_input_files, | 1871                      int nb_input_files, | 
| 1981                      AVStreamMap *stream_maps, int nb_stream_maps) | 1872                      AVStreamMap *stream_maps, int nb_stream_maps) | 
| 1982 { | 1873 { | 
| 1983     int ret = 0, i, j, k, n, nb_istreams = 0, nb_ostreams = 0; | 1874     int ret = 0, i, j, k, n, nb_istreams = 0, nb_ostreams = 0; | 
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2068             si < 0 || si > file_table[fi].nb_streams - 1) { | 1959             si < 0 || si > file_table[fi].nb_streams - 1) { | 
| 2069             fprintf(stderr,"Could not find sync stream #%d.%d\n", fi, si); | 1960             fprintf(stderr,"Could not find sync stream #%d.%d\n", fi, si); | 
| 2070             ret = AVERROR(EINVAL); | 1961             ret = AVERROR(EINVAL); | 
| 2071             goto fail; | 1962             goto fail; | 
| 2072         } | 1963         } | 
| 2073     } | 1964     } | 
| 2074 | 1965 | 
| 2075     ost_table = av_mallocz(sizeof(AVOutputStream *) * nb_ostreams); | 1966     ost_table = av_mallocz(sizeof(AVOutputStream *) * nb_ostreams); | 
| 2076     if (!ost_table) | 1967     if (!ost_table) | 
| 2077         goto fail; | 1968         goto fail; | 
| 2078     for(i=0;i<nb_ostreams;i++) { |  | 
| 2079         ost = av_mallocz(sizeof(AVOutputStream)); |  | 
| 2080         if (!ost) |  | 
| 2081             goto fail; |  | 
| 2082         ost_table[i] = ost; |  | 
| 2083     } |  | 
| 2084 |  | 
| 2085     n = 0; | 1969     n = 0; | 
| 2086     for(k=0;k<nb_output_files;k++) { | 1970     for(k=0;k<nb_output_files;k++) { | 
| 2087         os = output_files[k]; | 1971         os = output_files[k]; | 
| 2088         for(i=0;i<os->nb_streams;i++,n++) { | 1972         for(i=0;i<os->nb_streams;i++,n++) { | 
| 2089             int found; | 1973             int found; | 
| 2090             ost = ost_table[n]; | 1974             ost = ost_table[n] = output_streams_for_file[k][i]; | 
| 2091             ost->file_index = k; |  | 
| 2092             ost->index = i; |  | 
| 2093             ost->st = os->streams[i]; | 1975             ost->st = os->streams[i]; | 
| 2094             if (nb_stream_maps > 0) { | 1976             if (nb_stream_maps > 0) { | 
| 2095                 ost->source_index = file_table[stream_maps[n].file_index].ist_in
      dex + | 1977                 ost->source_index = file_table[stream_maps[n].file_index].ist_in
      dex + | 
| 2096                     stream_maps[n].stream_index; | 1978                     stream_maps[n].stream_index; | 
| 2097 | 1979 | 
| 2098                 /* Sanity check that the stream types match */ | 1980                 /* Sanity check that the stream types match */ | 
| 2099                 if (ist_table[ost->source_index]->st->codec->codec_type != ost->
      st->codec->codec_type) { | 1981                 if (ist_table[ost->source_index]->st->codec->codec_type != ost->
      st->codec->codec_type) { | 
| 2100                     int i= ost->file_index; | 1982                     int i= ost->file_index; | 
| 2101                     dump_format(output_files[i], i, output_files[i]->filename, 1
      ); | 1983                     dump_format(output_files[i], i, output_files[i]->filename, 1
      ); | 
| 2102                     fprintf(stderr, "Codec type mismatch for mapping #%d.%d -> #
      %d.%d\n", | 1984                     fprintf(stderr, "Codec type mismatch for mapping #%d.%d -> #
      %d.%d\n", | 
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2253                 ost->audio_resample = codec->sample_rate != icodec->sample_rate 
      || audio_sync_method > 1; | 2135                 ost->audio_resample = codec->sample_rate != icodec->sample_rate 
      || audio_sync_method > 1; | 
| 2254                 icodec->request_channels = codec->channels; | 2136                 icodec->request_channels = codec->channels; | 
| 2255                 ist->decoding_needed = 1; | 2137                 ist->decoding_needed = 1; | 
| 2256                 ost->encoding_needed = 1; | 2138                 ost->encoding_needed = 1; | 
| 2257                 break; | 2139                 break; | 
| 2258             case AVMEDIA_TYPE_VIDEO: | 2140             case AVMEDIA_TYPE_VIDEO: | 
| 2259                 if (ost->st->codec->pix_fmt == PIX_FMT_NONE) { | 2141                 if (ost->st->codec->pix_fmt == PIX_FMT_NONE) { | 
| 2260                     fprintf(stderr, "Video pixel format is unknown, stream canno
      t be encoded\n"); | 2142                     fprintf(stderr, "Video pixel format is unknown, stream canno
      t be encoded\n"); | 
| 2261                     ffmpeg_exit(1); | 2143                     ffmpeg_exit(1); | 
| 2262                 } | 2144                 } | 
| 2263                 ost->video_crop = ((frame_leftBand + frame_rightBand + frame_top
      Band + frame_bottomBand) != 0); | 2145                 ost->video_resample = (codec->width != icodec->width   || | 
| 2264                 ost->video_resample = ((codec->width != icodec->width - | 2146                                        codec->height != icodec->height || | 
| 2265                                 (frame_leftBand + frame_rightBand)) || |  | 
| 2266                         (codec->height != icodec->height - |  | 
| 2267                                 (frame_topBand  + frame_bottomBand)) || |  | 
| 2268                         (codec->pix_fmt != icodec->pix_fmt)); | 2147                         (codec->pix_fmt != icodec->pix_fmt)); | 
| 2269                 if (ost->video_crop) { |  | 
| 2270                     ost->topBand    = ost->original_topBand    = frame_topBand; |  | 
| 2271                     ost->bottomBand = ost->original_bottomBand = frame_bottomBan
      d; |  | 
| 2272                     ost->leftBand   = ost->original_leftBand   = frame_leftBand; |  | 
| 2273                     ost->rightBand  = ost->original_rightBand  = frame_rightBand
      ; |  | 
| 2274                 } |  | 
| 2275                 if (ost->video_resample) { | 2148                 if (ost->video_resample) { | 
| 2276                     avcodec_get_frame_defaults(&ost->pict_tmp); | 2149                     avcodec_get_frame_defaults(&ost->pict_tmp); | 
| 2277                     if(avpicture_alloc((AVPicture*)&ost->pict_tmp, codec->pix_fm
      t, | 2150                     if(avpicture_alloc((AVPicture*)&ost->pict_tmp, codec->pix_fm
      t, | 
| 2278                                          codec->width, codec->height)) { | 2151                                          codec->width, codec->height)) { | 
| 2279                         fprintf(stderr, "Cannot allocate temp picture, check pix
       fmt\n"); | 2152                         fprintf(stderr, "Cannot allocate temp picture, check pix
       fmt\n"); | 
| 2280                         ffmpeg_exit(1); | 2153                         ffmpeg_exit(1); | 
| 2281                     } | 2154                     } | 
| 2282                     sws_flags = av_get_int(sws_opts, "sws_flags", NULL); | 2155                     sws_flags = av_get_int(sws_opts, "sws_flags", NULL); | 
| 2283                     ost->img_resample_ctx = sws_getContext( | 2156                     ost->img_resample_ctx = sws_getContext( | 
| 2284                             icodec->width - (frame_leftBand + frame_rightBand), | 2157                         icodec->width, | 
| 2285                             icodec->height - (frame_topBand + frame_bottomBand), | 2158                         icodec->height, | 
| 2286                             icodec->pix_fmt, | 2159                             icodec->pix_fmt, | 
| 2287                             codec->width, | 2160                             codec->width, | 
| 2288                             codec->height, | 2161                             codec->height, | 
| 2289                             codec->pix_fmt, | 2162                             codec->pix_fmt, | 
| 2290                             sws_flags, NULL, NULL, NULL); | 2163                             sws_flags, NULL, NULL, NULL); | 
| 2291                     if (ost->img_resample_ctx == NULL) { | 2164                     if (ost->img_resample_ctx == NULL) { | 
| 2292                         fprintf(stderr, "Cannot get resampling context\n"); | 2165                         fprintf(stderr, "Cannot get resampling context\n"); | 
| 2293                         ffmpeg_exit(1); | 2166                         ffmpeg_exit(1); | 
| 2294                     } | 2167                     } | 
| 2295 | 2168 | 
| 2296 #if !CONFIG_AVFILTER | 2169 #if !CONFIG_AVFILTER | 
| 2297                     ost->original_height = icodec->height; | 2170                     ost->original_height = icodec->height; | 
| 2298                     ost->original_width  = icodec->width; | 2171                     ost->original_width  = icodec->width; | 
| 2299 #endif | 2172 #endif | 
| 2300                     codec->bits_per_raw_sample= 0; | 2173                     codec->bits_per_raw_sample= 0; | 
| 2301                 } | 2174                 } | 
| 2302                 ost->resample_height = icodec->height - (frame_topBand  + frame_
      bottomBand); | 2175                 ost->resample_height = icodec->height; | 
| 2303                 ost->resample_width  = icodec->width  - (frame_leftBand + frame_
      rightBand); | 2176                 ost->resample_width  = icodec->width; | 
| 2304                 ost->resample_pix_fmt= icodec->pix_fmt; | 2177                 ost->resample_pix_fmt= icodec->pix_fmt; | 
| 2305                 ost->encoding_needed = 1; | 2178                 ost->encoding_needed = 1; | 
| 2306                 ist->decoding_needed = 1; | 2179                 ist->decoding_needed = 1; | 
| 2307 | 2180 | 
| 2308 #if CONFIG_AVFILTER | 2181 #if CONFIG_AVFILTER | 
| 2309                 if (configure_filters(ist, ost)) { | 2182                 if (configure_filters(ist, ost)) { | 
| 2310                     fprintf(stderr, "Error opening filters!\n"); | 2183                     fprintf(stderr, "Error opening filters!\n"); | 
| 2311                     exit(1); | 2184                     exit(1); | 
| 2312                 } | 2185                 } | 
| 2313 #endif | 2186 #endif | 
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2441             goto dump_format; | 2314             goto dump_format; | 
| 2442         } | 2315         } | 
| 2443 | 2316 | 
| 2444         out_file = output_files[out_file_index]; | 2317         out_file = output_files[out_file_index]; | 
| 2445         in_file = input_files[in_file_index]; | 2318         in_file = input_files[in_file_index]; | 
| 2446 | 2319 | 
| 2447 | 2320 | 
| 2448         mtag=NULL; | 2321         mtag=NULL; | 
| 2449         while((mtag=av_metadata_get(in_file->metadata, "", mtag, AV_METADATA_IGN
      ORE_SUFFIX))) | 2322         while((mtag=av_metadata_get(in_file->metadata, "", mtag, AV_METADATA_IGN
      ORE_SUFFIX))) | 
| 2450             av_metadata_set2(&out_file->metadata, mtag->key, mtag->value, AV_MET
      ADATA_DONT_OVERWRITE); | 2323             av_metadata_set2(&out_file->metadata, mtag->key, mtag->value, AV_MET
      ADATA_DONT_OVERWRITE); | 
| 2451         av_metadata_conv(out_file, out_file->oformat->metadata_conv, |  | 
| 2452                                     in_file->iformat->metadata_conv); |  | 
| 2453     } | 2324     } | 
| 2454 | 2325 | 
| 2455     /* copy chapters from the first input file that has them*/ | 2326     /* copy chapters from the first input file that has them*/ | 
| 2456     for (i = 0; i < nb_input_files; i++) { | 2327     for (i = 0; i < nb_input_files; i++) { | 
| 2457         if (!input_files[i]->nb_chapters) | 2328         if (!input_files[i]->nb_chapters) | 
| 2458             continue; | 2329             continue; | 
| 2459 | 2330 | 
| 2460         for (j = 0; j < nb_output_files; j++) | 2331         for (j = 0; j < nb_output_files; j++) | 
| 2461             if ((ret = copy_chapters(i, j)) < 0) | 2332             if ((ret = copy_chapters(i, j)) < 0) | 
| 2462                 goto dump_format; | 2333                 goto dump_format; | 
| (...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2725             if (ost) { | 2596             if (ost) { | 
| 2726                 if (ost->st->stream_copy) | 2597                 if (ost->st->stream_copy) | 
| 2727                     av_freep(&ost->st->codec->extradata); | 2598                     av_freep(&ost->st->codec->extradata); | 
| 2728                 if (ost->logfile) { | 2599                 if (ost->logfile) { | 
| 2729                     fclose(ost->logfile); | 2600                     fclose(ost->logfile); | 
| 2730                     ost->logfile = NULL; | 2601                     ost->logfile = NULL; | 
| 2731                 } | 2602                 } | 
| 2732                 av_fifo_free(ost->fifo); /* works even if fifo is not | 2603                 av_fifo_free(ost->fifo); /* works even if fifo is not | 
| 2733                                              initialized but set to zero */ | 2604                                              initialized but set to zero */ | 
| 2734                 av_free(ost->pict_tmp.data[0]); | 2605                 av_free(ost->pict_tmp.data[0]); | 
|  | 2606                 av_free(ost->forced_kf_pts); | 
| 2735                 if (ost->video_resample) | 2607                 if (ost->video_resample) | 
| 2736                     sws_freeContext(ost->img_resample_ctx); | 2608                     sws_freeContext(ost->img_resample_ctx); | 
| 2737                 if (ost->resample) | 2609                 if (ost->resample) | 
| 2738                     audio_resample_close(ost->resample); | 2610                     audio_resample_close(ost->resample); | 
| 2739                 if (ost->reformat_ctx) | 2611                 if (ost->reformat_ctx) | 
| 2740                     av_audio_convert_free(ost->reformat_ctx); | 2612                     av_audio_convert_free(ost->reformat_ctx); | 
| 2741                 av_free(ost); | 2613                 av_free(ost); | 
| 2742             } | 2614             } | 
| 2743         } | 2615         } | 
| 2744         av_free(ost_table); | 2616         av_free(ost_table); | 
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2790     int codec_type = opt[0]=='a' ? AVMEDIA_TYPE_AUDIO : AVMEDIA_TYPE_VIDEO; | 2662     int codec_type = opt[0]=='a' ? AVMEDIA_TYPE_AUDIO : AVMEDIA_TYPE_VIDEO; | 
| 2791 | 2663 | 
| 2792     opt_default(opt, arg); | 2664     opt_default(opt, arg); | 
| 2793 | 2665 | 
| 2794     if (av_get_int(avcodec_opts[codec_type], "b", NULL) < 1000) | 2666     if (av_get_int(avcodec_opts[codec_type], "b", NULL) < 1000) | 
| 2795         fprintf(stderr, "WARNING: The bitrate parameter is set too low. It takes
       bits/s as argument, not kbits/s\n"); | 2667         fprintf(stderr, "WARNING: The bitrate parameter is set too low. It takes
       bits/s as argument, not kbits/s\n"); | 
| 2796 | 2668 | 
| 2797     return 0; | 2669     return 0; | 
| 2798 } | 2670 } | 
| 2799 | 2671 | 
| 2800 static void opt_frame_crop_top(const char *arg) | 2672 static int opt_frame_crop(const char *opt, const char *arg) | 
| 2801 { | 2673 { | 
| 2802     frame_topBand = atoi(arg); | 2674     fprintf(stderr, "Option '%s' has been removed, use the crop filter instead\n
      ", opt); | 
| 2803     if (frame_topBand < 0) { | 2675     return AVERROR(EINVAL); | 
| 2804         fprintf(stderr, "Incorrect top crop size\n"); |  | 
| 2805         ffmpeg_exit(1); |  | 
| 2806     } |  | 
| 2807     if ((frame_topBand) >= frame_height){ |  | 
| 2808         fprintf(stderr, "Vertical crop dimensions are outside the range of the o
      riginal image.\nRemember to crop first and scale second.\n"); |  | 
| 2809         ffmpeg_exit(1); |  | 
| 2810     } |  | 
| 2811     fprintf(stderr, "-crop* is deprecated in favor of the crop avfilter\n"); |  | 
| 2812     frame_height -= frame_topBand; |  | 
| 2813 } |  | 
| 2814 |  | 
| 2815 static void opt_frame_crop_bottom(const char *arg) |  | 
| 2816 { |  | 
| 2817     frame_bottomBand = atoi(arg); |  | 
| 2818     if (frame_bottomBand < 0) { |  | 
| 2819         fprintf(stderr, "Incorrect bottom crop size\n"); |  | 
| 2820         ffmpeg_exit(1); |  | 
| 2821     } |  | 
| 2822     if ((frame_bottomBand) >= frame_height){ |  | 
| 2823         fprintf(stderr, "Vertical crop dimensions are outside the range of the o
      riginal image.\nRemember to crop first and scale second.\n"); |  | 
| 2824         ffmpeg_exit(1); |  | 
| 2825     } |  | 
| 2826     fprintf(stderr, "-crop* is deprecated in favor of the crop avfilter\n"); |  | 
| 2827     frame_height -= frame_bottomBand; |  | 
| 2828 } |  | 
| 2829 |  | 
| 2830 static void opt_frame_crop_left(const char *arg) |  | 
| 2831 { |  | 
| 2832     frame_leftBand = atoi(arg); |  | 
| 2833     if (frame_leftBand < 0) { |  | 
| 2834         fprintf(stderr, "Incorrect left crop size\n"); |  | 
| 2835         ffmpeg_exit(1); |  | 
| 2836     } |  | 
| 2837     if ((frame_leftBand) >= frame_width){ |  | 
| 2838         fprintf(stderr, "Horizontal crop dimensions are outside the range of the
       original image.\nRemember to crop first and scale second.\n"); |  | 
| 2839         ffmpeg_exit(1); |  | 
| 2840     } |  | 
| 2841     fprintf(stderr, "-crop* is deprecated in favor of the crop avfilter\n"); |  | 
| 2842     frame_width -= frame_leftBand; |  | 
| 2843 } |  | 
| 2844 |  | 
| 2845 static void opt_frame_crop_right(const char *arg) |  | 
| 2846 { |  | 
| 2847     frame_rightBand = atoi(arg); |  | 
| 2848     if (frame_rightBand < 0) { |  | 
| 2849         fprintf(stderr, "Incorrect right crop size\n"); |  | 
| 2850         ffmpeg_exit(1); |  | 
| 2851     } |  | 
| 2852     if ((frame_rightBand) >= frame_width){ |  | 
| 2853         fprintf(stderr, "Horizontal crop dimensions are outside the range of the
       original image.\nRemember to crop first and scale second.\n"); |  | 
| 2854         ffmpeg_exit(1); |  | 
| 2855     } |  | 
| 2856     fprintf(stderr, "-crop* is deprecated in favor of the crop avfilter\n"); |  | 
| 2857     frame_width -= frame_rightBand; |  | 
| 2858 } | 2676 } | 
| 2859 | 2677 | 
| 2860 static void opt_frame_size(const char *arg) | 2678 static void opt_frame_size(const char *arg) | 
| 2861 { | 2679 { | 
| 2862     if (av_parse_video_size(&frame_width, &frame_height, arg) < 0) { | 2680     if (av_parse_video_size(&frame_width, &frame_height, arg) < 0) { | 
| 2863         fprintf(stderr, "Incorrect frame size\n"); | 2681         fprintf(stderr, "Incorrect frame size\n"); | 
| 2864         ffmpeg_exit(1); | 2682         ffmpeg_exit(1); | 
| 2865     } | 2683     } | 
| 2866 } | 2684 } | 
| 2867 | 2685 | 
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2911 static int opt_metadata(const char *opt, const char *arg) | 2729 static int opt_metadata(const char *opt, const char *arg) | 
| 2912 { | 2730 { | 
| 2913     char *mid= strchr(arg, '='); | 2731     char *mid= strchr(arg, '='); | 
| 2914 | 2732 | 
| 2915     if(!mid){ | 2733     if(!mid){ | 
| 2916         fprintf(stderr, "Missing =\n"); | 2734         fprintf(stderr, "Missing =\n"); | 
| 2917         ffmpeg_exit(1); | 2735         ffmpeg_exit(1); | 
| 2918     } | 2736     } | 
| 2919     *mid++= 0; | 2737     *mid++= 0; | 
| 2920 | 2738 | 
| 2921     metadata_count++; | 2739     av_metadata_set2(&metadata, arg, mid, 0); | 
| 2922     metadata= av_realloc(metadata, sizeof(*metadata)*metadata_count); |  | 
| 2923     metadata[metadata_count-1].key  = av_strdup(arg); |  | 
| 2924     metadata[metadata_count-1].value= av_strdup(mid); |  | 
| 2925 | 2740 | 
| 2926     return 0; | 2741     return 0; | 
| 2927 } | 2742 } | 
| 2928 | 2743 | 
| 2929 static void opt_qscale(const char *arg) | 2744 static void opt_qscale(const char *arg) | 
| 2930 { | 2745 { | 
| 2931     video_qscale = atof(arg); | 2746     video_qscale = atof(arg); | 
| 2932     if (video_qscale <= 0 || | 2747     if (video_qscale <= 0 || | 
| 2933         video_qscale > 255) { | 2748         video_qscale > 255) { | 
| 2934         fprintf(stderr, "qscale must be > 0.0 and <= 255\n"); | 2749         fprintf(stderr, "qscale must be > 0.0 and <= 255\n"); | 
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3387             default: | 3202             default: | 
| 3388                 abort(); | 3203                 abort(); | 
| 3389             } | 3204             } | 
| 3390         } | 3205         } | 
| 3391     } | 3206     } | 
| 3392     *has_video_ptr = has_video; | 3207     *has_video_ptr = has_video; | 
| 3393     *has_audio_ptr = has_audio; | 3208     *has_audio_ptr = has_audio; | 
| 3394     *has_subtitle_ptr = has_subtitle; | 3209     *has_subtitle_ptr = has_subtitle; | 
| 3395 } | 3210 } | 
| 3396 | 3211 | 
|  | 3212 static AVOutputStream *new_output_stream(AVFormatContext *oc, int file_idx) | 
|  | 3213 { | 
|  | 3214     int idx = oc->nb_streams - 1; | 
|  | 3215     AVOutputStream *ost; | 
|  | 3216 | 
|  | 3217     output_streams_for_file[file_idx] = | 
|  | 3218         grow_array(output_streams_for_file[file_idx], | 
|  | 3219                    sizeof(*output_streams_for_file[file_idx]), | 
|  | 3220                    &nb_output_streams_for_file[file_idx], | 
|  | 3221                    oc->nb_streams); | 
|  | 3222     ost = output_streams_for_file[file_idx][idx] = | 
|  | 3223         av_mallocz(sizeof(AVOutputStream)); | 
|  | 3224     if (!ost) { | 
|  | 3225         fprintf(stderr, "Could not alloc output stream\n"); | 
|  | 3226         ffmpeg_exit(1); | 
|  | 3227     } | 
|  | 3228     ost->file_index = file_idx; | 
|  | 3229     ost->index = idx; | 
|  | 3230     return ost; | 
|  | 3231 } | 
|  | 3232 | 
| 3397 static void new_video_stream(AVFormatContext *oc, int file_idx) | 3233 static void new_video_stream(AVFormatContext *oc, int file_idx) | 
| 3398 { | 3234 { | 
| 3399     AVStream *st; | 3235     AVStream *st; | 
|  | 3236     AVOutputStream *ost; | 
| 3400     AVCodecContext *video_enc; | 3237     AVCodecContext *video_enc; | 
| 3401     enum CodecID codec_id; | 3238     enum CodecID codec_id; | 
| 3402     AVCodec *codec= NULL; | 3239     AVCodec *codec= NULL; | 
| 3403 | 3240 | 
| 3404     st = av_new_stream(oc, oc->nb_streams < nb_streamid_map ? streamid_map[oc->n
      b_streams] : 0); | 3241     st = av_new_stream(oc, oc->nb_streams < nb_streamid_map ? streamid_map[oc->n
      b_streams] : 0); | 
| 3405     if (!st) { | 3242     if (!st) { | 
| 3406         fprintf(stderr, "Could not alloc stream\n"); | 3243         fprintf(stderr, "Could not alloc stream\n"); | 
| 3407         ffmpeg_exit(1); | 3244         ffmpeg_exit(1); | 
| 3408     } | 3245     } | 
|  | 3246     ost = new_output_stream(oc, file_idx); | 
| 3409 | 3247 | 
| 3410     output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output
      _codecs, nb_output_codecs + 1); | 3248     output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output
      _codecs, nb_output_codecs + 1); | 
| 3411     if(!video_stream_copy){ | 3249     if(!video_stream_copy){ | 
| 3412         if (video_codec_name) { | 3250         if (video_codec_name) { | 
| 3413             codec_id = find_codec_or_die(video_codec_name, AVMEDIA_TYPE_VIDEO, 1
      , | 3251             codec_id = find_codec_or_die(video_codec_name, AVMEDIA_TYPE_VIDEO, 1
      , | 
| 3414                                          avcodec_opts[AVMEDIA_TYPE_VIDEO]->stric
      t_std_compliance); | 3252                                          avcodec_opts[AVMEDIA_TYPE_VIDEO]->stric
      t_std_compliance); | 
| 3415             codec = avcodec_find_encoder_by_name(video_codec_name); | 3253             codec = avcodec_find_encoder_by_name(video_codec_name); | 
| 3416             output_codecs[nb_output_codecs-1] = codec; | 3254             output_codecs[nb_output_codecs-1] = codec; | 
| 3417         } else { | 3255         } else { | 
| 3418             codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVM
      EDIA_TYPE_VIDEO); | 3256             codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVM
      EDIA_TYPE_VIDEO); | 
| 3419             codec = avcodec_find_encoder(codec_id); | 3257             codec = avcodec_find_encoder(codec_id); | 
| 3420         } | 3258         } | 
| 3421     } | 3259     } | 
| 3422 | 3260 | 
| 3423     avcodec_get_context_defaults3(st->codec, codec); | 3261     avcodec_get_context_defaults3(st->codec, codec); | 
| 3424     bitstream_filters[file_idx] = | 3262     ost->bitstream_filters = video_bitstream_filters; | 
| 3425         grow_array(bitstream_filters[file_idx], |  | 
| 3426                    sizeof(*bitstream_filters[file_idx]), |  | 
| 3427                    &nb_bitstream_filters[file_idx], oc->nb_streams); |  | 
| 3428     bitstream_filters[file_idx][oc->nb_streams - 1]= video_bitstream_filters; |  | 
| 3429     video_bitstream_filters= NULL; | 3263     video_bitstream_filters= NULL; | 
| 3430 | 3264 | 
| 3431     st->codec->thread_count= thread_count; | 3265     st->codec->thread_count= thread_count; | 
| 3432 | 3266 | 
| 3433     video_enc = st->codec; | 3267     video_enc = st->codec; | 
| 3434 | 3268 | 
| 3435     if(video_codec_tag) | 3269     if(video_codec_tag) | 
| 3436         video_enc->codec_tag= video_codec_tag; | 3270         video_enc->codec_tag= video_codec_tag; | 
| 3437 | 3271 | 
| 3438     if(   (video_global_header&1) | 3272     if(   (video_global_header&1) | 
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3518             video_enc->flags|= CODEC_FLAG_PSNR; | 3352             video_enc->flags|= CODEC_FLAG_PSNR; | 
| 3519 | 3353 | 
| 3520         /* two pass mode */ | 3354         /* two pass mode */ | 
| 3521         if (do_pass) { | 3355         if (do_pass) { | 
| 3522             if (do_pass == 1) { | 3356             if (do_pass == 1) { | 
| 3523                 video_enc->flags |= CODEC_FLAG_PASS1; | 3357                 video_enc->flags |= CODEC_FLAG_PASS1; | 
| 3524             } else { | 3358             } else { | 
| 3525                 video_enc->flags |= CODEC_FLAG_PASS2; | 3359                 video_enc->flags |= CODEC_FLAG_PASS2; | 
| 3526             } | 3360             } | 
| 3527         } | 3361         } | 
|  | 3362 | 
|  | 3363         if (forced_key_frames) | 
|  | 3364             parse_forced_key_frames(forced_key_frames, ost, video_enc); | 
| 3528     } | 3365     } | 
| 3529     if (video_language) { | 3366     if (video_language) { | 
| 3530         av_metadata_set2(&st->metadata, "language", video_language, 0); | 3367         av_metadata_set2(&st->metadata, "language", video_language, 0); | 
| 3531         av_freep(&video_language); | 3368         av_freep(&video_language); | 
| 3532     } | 3369     } | 
| 3533 | 3370 | 
| 3534     /* reset some key parameters */ | 3371     /* reset some key parameters */ | 
| 3535     video_disable = 0; | 3372     video_disable = 0; | 
| 3536     av_freep(&video_codec_name); | 3373     av_freep(&video_codec_name); | 
|  | 3374     av_freep(&forced_key_frames); | 
| 3537     video_stream_copy = 0; | 3375     video_stream_copy = 0; | 
| 3538     frame_pix_fmt = PIX_FMT_NONE; | 3376     frame_pix_fmt = PIX_FMT_NONE; | 
| 3539 } | 3377 } | 
| 3540 | 3378 | 
| 3541 static void new_audio_stream(AVFormatContext *oc, int file_idx) | 3379 static void new_audio_stream(AVFormatContext *oc, int file_idx) | 
| 3542 { | 3380 { | 
| 3543     AVStream *st; | 3381     AVStream *st; | 
|  | 3382     AVOutputStream *ost; | 
| 3544     AVCodec *codec= NULL; | 3383     AVCodec *codec= NULL; | 
| 3545     AVCodecContext *audio_enc; | 3384     AVCodecContext *audio_enc; | 
| 3546     enum CodecID codec_id; | 3385     enum CodecID codec_id; | 
| 3547 | 3386 | 
| 3548     st = av_new_stream(oc, oc->nb_streams < nb_streamid_map ? streamid_map[oc->n
      b_streams] : 0); | 3387     st = av_new_stream(oc, oc->nb_streams < nb_streamid_map ? streamid_map[oc->n
      b_streams] : 0); | 
| 3549     if (!st) { | 3388     if (!st) { | 
| 3550         fprintf(stderr, "Could not alloc stream\n"); | 3389         fprintf(stderr, "Could not alloc stream\n"); | 
| 3551         ffmpeg_exit(1); | 3390         ffmpeg_exit(1); | 
| 3552     } | 3391     } | 
|  | 3392     ost = new_output_stream(oc, file_idx); | 
| 3553 | 3393 | 
| 3554     output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output
      _codecs, nb_output_codecs + 1); | 3394     output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output
      _codecs, nb_output_codecs + 1); | 
| 3555     if(!audio_stream_copy){ | 3395     if(!audio_stream_copy){ | 
| 3556         if (audio_codec_name) { | 3396         if (audio_codec_name) { | 
| 3557             codec_id = find_codec_or_die(audio_codec_name, AVMEDIA_TYPE_AUDIO, 1
      , | 3397             codec_id = find_codec_or_die(audio_codec_name, AVMEDIA_TYPE_AUDIO, 1
      , | 
| 3558                                          avcodec_opts[AVMEDIA_TYPE_AUDIO]->stric
      t_std_compliance); | 3398                                          avcodec_opts[AVMEDIA_TYPE_AUDIO]->stric
      t_std_compliance); | 
| 3559             codec = avcodec_find_encoder_by_name(audio_codec_name); | 3399             codec = avcodec_find_encoder_by_name(audio_codec_name); | 
| 3560             output_codecs[nb_output_codecs-1] = codec; | 3400             output_codecs[nb_output_codecs-1] = codec; | 
| 3561         } else { | 3401         } else { | 
| 3562             codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVM
      EDIA_TYPE_AUDIO); | 3402             codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, AVM
      EDIA_TYPE_AUDIO); | 
| 3563             codec = avcodec_find_encoder(codec_id); | 3403             codec = avcodec_find_encoder(codec_id); | 
| 3564         } | 3404         } | 
| 3565     } | 3405     } | 
| 3566 | 3406 | 
| 3567     avcodec_get_context_defaults3(st->codec, codec); | 3407     avcodec_get_context_defaults3(st->codec, codec); | 
| 3568 | 3408 | 
| 3569     bitstream_filters[file_idx] = | 3409     ost->bitstream_filters = audio_bitstream_filters; | 
| 3570         grow_array(bitstream_filters[file_idx], |  | 
| 3571                    sizeof(*bitstream_filters[file_idx]), |  | 
| 3572                    &nb_bitstream_filters[file_idx], oc->nb_streams); |  | 
| 3573     bitstream_filters[file_idx][oc->nb_streams - 1]= audio_bitstream_filters; |  | 
| 3574     audio_bitstream_filters= NULL; | 3410     audio_bitstream_filters= NULL; | 
| 3575 | 3411 | 
| 3576     st->codec->thread_count= thread_count; | 3412     st->codec->thread_count= thread_count; | 
| 3577 | 3413 | 
| 3578     audio_enc = st->codec; | 3414     audio_enc = st->codec; | 
| 3579     audio_enc->codec_type = AVMEDIA_TYPE_AUDIO; | 3415     audio_enc->codec_type = AVMEDIA_TYPE_AUDIO; | 
| 3580 | 3416 | 
| 3581     if(audio_codec_tag) | 3417     if(audio_codec_tag) | 
| 3582         audio_enc->codec_tag= audio_codec_tag; | 3418         audio_enc->codec_tag= audio_codec_tag; | 
| 3583 | 3419 | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
| 3614 | 3450 | 
| 3615     /* reset some key parameters */ | 3451     /* reset some key parameters */ | 
| 3616     audio_disable = 0; | 3452     audio_disable = 0; | 
| 3617     av_freep(&audio_codec_name); | 3453     av_freep(&audio_codec_name); | 
| 3618     audio_stream_copy = 0; | 3454     audio_stream_copy = 0; | 
| 3619 } | 3455 } | 
| 3620 | 3456 | 
| 3621 static void new_subtitle_stream(AVFormatContext *oc, int file_idx) | 3457 static void new_subtitle_stream(AVFormatContext *oc, int file_idx) | 
| 3622 { | 3458 { | 
| 3623     AVStream *st; | 3459     AVStream *st; | 
|  | 3460     AVOutputStream *ost; | 
| 3624     AVCodec *codec=NULL; | 3461     AVCodec *codec=NULL; | 
| 3625     AVCodecContext *subtitle_enc; | 3462     AVCodecContext *subtitle_enc; | 
| 3626 | 3463 | 
| 3627     st = av_new_stream(oc, oc->nb_streams < nb_streamid_map ? streamid_map[oc->n
      b_streams] : 0); | 3464     st = av_new_stream(oc, oc->nb_streams < nb_streamid_map ? streamid_map[oc->n
      b_streams] : 0); | 
| 3628     if (!st) { | 3465     if (!st) { | 
| 3629         fprintf(stderr, "Could not alloc stream\n"); | 3466         fprintf(stderr, "Could not alloc stream\n"); | 
| 3630         ffmpeg_exit(1); | 3467         ffmpeg_exit(1); | 
| 3631     } | 3468     } | 
|  | 3469     ost = new_output_stream(oc, file_idx); | 
| 3632     subtitle_enc = st->codec; | 3470     subtitle_enc = st->codec; | 
| 3633     output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output
      _codecs, nb_output_codecs + 1); | 3471     output_codecs = grow_array(output_codecs, sizeof(*output_codecs), &nb_output
      _codecs, nb_output_codecs + 1); | 
| 3634     if(!subtitle_stream_copy){ | 3472     if(!subtitle_stream_copy){ | 
| 3635         subtitle_enc->codec_id = find_codec_or_die(subtitle_codec_name, AVMEDIA_
      TYPE_SUBTITLE, 1, | 3473         subtitle_enc->codec_id = find_codec_or_die(subtitle_codec_name, AVMEDIA_
      TYPE_SUBTITLE, 1, | 
| 3636                                                    avcodec_opts[AVMEDIA_TYPE_SUB
      TITLE]->strict_std_compliance); | 3474                                                    avcodec_opts[AVMEDIA_TYPE_SUB
      TITLE]->strict_std_compliance); | 
| 3637         codec= output_codecs[nb_output_codecs-1] = avcodec_find_encoder_by_name(
      subtitle_codec_name); | 3475         codec= output_codecs[nb_output_codecs-1] = avcodec_find_encoder_by_name(
      subtitle_codec_name); | 
| 3638     } | 3476     } | 
| 3639     avcodec_get_context_defaults3(st->codec, codec); | 3477     avcodec_get_context_defaults3(st->codec, codec); | 
| 3640 | 3478 | 
| 3641     bitstream_filters[file_idx] = | 3479     ost->bitstream_filters = subtitle_bitstream_filters; | 
| 3642         grow_array(bitstream_filters[file_idx], |  | 
| 3643                    sizeof(*bitstream_filters[file_idx]), |  | 
| 3644                    &nb_bitstream_filters[file_idx], oc->nb_streams); |  | 
| 3645     bitstream_filters[file_idx][oc->nb_streams - 1]= subtitle_bitstream_filters; |  | 
| 3646     subtitle_bitstream_filters= NULL; | 3480     subtitle_bitstream_filters= NULL; | 
| 3647 | 3481 | 
| 3648     subtitle_enc->codec_type = AVMEDIA_TYPE_SUBTITLE; | 3482     subtitle_enc->codec_type = AVMEDIA_TYPE_SUBTITLE; | 
| 3649 | 3483 | 
| 3650     if(subtitle_codec_tag) | 3484     if(subtitle_codec_tag) | 
| 3651         subtitle_enc->codec_tag= subtitle_codec_tag; | 3485         subtitle_enc->codec_tag= subtitle_codec_tag; | 
| 3652 | 3486 | 
| 3653     if (subtitle_stream_copy) { | 3487     if (subtitle_stream_copy) { | 
| 3654         st->stream_copy = 1; | 3488         st->stream_copy = 1; | 
| 3655     } else { | 3489     } else { | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3706     return 0; | 3540     return 0; | 
| 3707 } | 3541 } | 
| 3708 | 3542 | 
| 3709 static void opt_output_file(const char *filename) | 3543 static void opt_output_file(const char *filename) | 
| 3710 { | 3544 { | 
| 3711     AVFormatContext *oc; | 3545     AVFormatContext *oc; | 
| 3712     int err, use_video, use_audio, use_subtitle; | 3546     int err, use_video, use_audio, use_subtitle; | 
| 3713     int input_has_video, input_has_audio, input_has_subtitle; | 3547     int input_has_video, input_has_audio, input_has_subtitle; | 
| 3714     AVFormatParameters params, *ap = ¶ms; | 3548     AVFormatParameters params, *ap = ¶ms; | 
| 3715     AVOutputFormat *file_oformat; | 3549     AVOutputFormat *file_oformat; | 
|  | 3550     AVMetadataTag *tag = NULL; | 
| 3716 | 3551 | 
| 3717     if (!strcmp(filename, "-")) | 3552     if (!strcmp(filename, "-")) | 
| 3718         filename = "pipe:"; | 3553         filename = "pipe:"; | 
| 3719 | 3554 | 
| 3720     oc = avformat_alloc_context(); | 3555     oc = avformat_alloc_context(); | 
| 3721     if (!oc) { | 3556     if (!oc) { | 
| 3722         print_error(filename, AVERROR(ENOMEM)); | 3557         print_error(filename, AVERROR(ENOMEM)); | 
| 3723         ffmpeg_exit(1); | 3558         ffmpeg_exit(1); | 
| 3724     } | 3559     } | 
| 3725 | 3560 | 
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3763                                          &input_has_subtitle); | 3598                                          &input_has_subtitle); | 
| 3764             if (!input_has_video) | 3599             if (!input_has_video) | 
| 3765                 use_video = 0; | 3600                 use_video = 0; | 
| 3766             if (!input_has_audio) | 3601             if (!input_has_audio) | 
| 3767                 use_audio = 0; | 3602                 use_audio = 0; | 
| 3768             if (!input_has_subtitle) | 3603             if (!input_has_subtitle) | 
| 3769                 use_subtitle = 0; | 3604                 use_subtitle = 0; | 
| 3770         } | 3605         } | 
| 3771 | 3606 | 
| 3772         /* manual disable */ | 3607         /* manual disable */ | 
| 3773         if (audio_disable) { | 3608         if (audio_disable)    use_audio    = 0; | 
| 3774             use_audio = 0; | 3609         if (video_disable)    use_video    = 0; | 
| 3775         } | 3610         if (subtitle_disable) use_subtitle = 0; | 
| 3776         if (video_disable) { |  | 
| 3777             use_video = 0; |  | 
| 3778         } |  | 
| 3779         if (subtitle_disable) { |  | 
| 3780             use_subtitle = 0; |  | 
| 3781         } |  | 
| 3782 | 3611 | 
| 3783         if (use_video) { | 3612         if (use_video)    new_video_stream(oc, nb_output_files); | 
| 3784             new_video_stream(oc, nb_output_files); | 3613         if (use_audio)    new_audio_stream(oc, nb_output_files); | 
| 3785         } | 3614         if (use_subtitle) new_subtitle_stream(oc, nb_output_files); | 
| 3786 |  | 
| 3787         if (use_audio) { |  | 
| 3788             new_audio_stream(oc, nb_output_files); |  | 
| 3789         } |  | 
| 3790 |  | 
| 3791         if (use_subtitle) { |  | 
| 3792             new_subtitle_stream(oc, nb_output_files); |  | 
| 3793         } |  | 
| 3794 | 3615 | 
| 3795         oc->timestamp = recording_timestamp; | 3616         oc->timestamp = recording_timestamp; | 
| 3796 | 3617 | 
| 3797         for(; metadata_count>0; metadata_count--){ | 3618         while ((tag = av_metadata_get(metadata, "", tag, AV_METADATA_IGNORE_SUFF
      IX))) | 
| 3798             av_metadata_set2(&oc->metadata, metadata[metadata_count-1].key, | 3619             av_metadata_set2(&oc->metadata, tag->key, tag->value, 0); | 
| 3799                                             metadata[metadata_count-1].value, 0)
      ; | 3620         av_metadata_free(&metadata); | 
| 3800         } |  | 
| 3801         av_metadata_conv(oc, oc->oformat->metadata_conv, NULL); |  | 
| 3802     } | 3621     } | 
| 3803 | 3622 | 
| 3804     output_files[nb_output_files++] = oc; | 3623     output_files[nb_output_files++] = oc; | 
| 3805 | 3624 | 
| 3806     /* check filename in case of an image number is expected */ | 3625     /* check filename in case of an image number is expected */ | 
| 3807     if (oc->oformat->flags & AVFMT_NEEDNUMBER) { | 3626     if (oc->oformat->flags & AVFMT_NEEDNUMBER) { | 
| 3808         if (!av_filename_number_test(oc->filename)) { | 3627         if (!av_filename_number_test(oc->filename)) { | 
| 3809             print_error(oc->filename, AVERROR_NUMEXPECTED); | 3628             print_error(oc->filename, AVERROR_NUMEXPECTED); | 
| 3810             ffmpeg_exit(1); | 3629             ffmpeg_exit(1); | 
| 3811         } | 3630         } | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3848     } | 3667     } | 
| 3849 | 3668 | 
| 3850     oc->preload= (int)(mux_preload*AV_TIME_BASE); | 3669     oc->preload= (int)(mux_preload*AV_TIME_BASE); | 
| 3851     oc->max_delay= (int)(mux_max_delay*AV_TIME_BASE); | 3670     oc->max_delay= (int)(mux_max_delay*AV_TIME_BASE); | 
| 3852     oc->loop_output = loop_output; | 3671     oc->loop_output = loop_output; | 
| 3853     oc->flags |= AVFMT_FLAG_NONBLOCK; | 3672     oc->flags |= AVFMT_FLAG_NONBLOCK; | 
| 3854 | 3673 | 
| 3855     set_context_opts(oc, avformat_opts, AV_OPT_FLAG_ENCODING_PARAM, NULL); | 3674     set_context_opts(oc, avformat_opts, AV_OPT_FLAG_ENCODING_PARAM, NULL); | 
| 3856 | 3675 | 
| 3857     nb_streamid_map = 0; | 3676     nb_streamid_map = 0; | 
|  | 3677     av_freep(&forced_key_frames); | 
| 3858 } | 3678 } | 
| 3859 | 3679 | 
| 3860 /* same option as mencoder */ | 3680 /* same option as mencoder */ | 
| 3861 static void opt_pass(const char *pass_str) | 3681 static void opt_pass(const char *pass_str) | 
| 3862 { | 3682 { | 
| 3863     int pass; | 3683     int pass; | 
| 3864     pass = atoi(pass_str); | 3684     pass = atoi(pass_str); | 
| 3865     if (pass != 1 && pass != 2) { | 3685     if (pass != 1 && pass != 2) { | 
| 3866         fprintf(stderr, "pass number can be only 1 or 2\n"); | 3686         fprintf(stderr, "pass number can be only 1 or 2\n"); | 
| 3867         ffmpeg_exit(1); | 3687         ffmpeg_exit(1); | 
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4260     { "copyinkf", OPT_BOOL | OPT_EXPERT, {(void*)©_initial_nonkeyframes}, "c
      opy initial non-keyframes" }, | 4080     { "copyinkf", OPT_BOOL | OPT_EXPERT, {(void*)©_initial_nonkeyframes}, "c
      opy initial non-keyframes" }, | 
| 4261 | 4081 | 
| 4262     /* video options */ | 4082     /* video options */ | 
| 4263     { "b", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_bitrate}, "set bitrate (
      in bits/s)", "bitrate" }, | 4083     { "b", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_bitrate}, "set bitrate (
      in bits/s)", "bitrate" }, | 
| 4264     { "vb", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_bitrate}, "set bitrate 
      (in bits/s)", "bitrate" }, | 4084     { "vb", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_bitrate}, "set bitrate 
      (in bits/s)", "bitrate" }, | 
| 4265     { "vframes", OPT_INT | HAS_ARG | OPT_VIDEO, {(void*)&max_frames[AVMEDIA_TYPE
      _VIDEO]}, "set the number of video frames to record", "number" }, | 4085     { "vframes", OPT_INT | HAS_ARG | OPT_VIDEO, {(void*)&max_frames[AVMEDIA_TYPE
      _VIDEO]}, "set the number of video frames to record", "number" }, | 
| 4266     { "r", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_rate}, "set frame 
      rate (Hz value, fraction or abbreviation)", "rate" }, | 4086     { "r", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_rate}, "set frame 
      rate (Hz value, fraction or abbreviation)", "rate" }, | 
| 4267     { "s", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_size}, "set frame size (WxH or
       abbreviation)", "size" }, | 4087     { "s", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_size}, "set frame size (WxH or
       abbreviation)", "size" }, | 
| 4268     { "aspect", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_aspect_ratio}, "set aspec
      t ratio (4:3, 16:9 or 1.3333, 1.7777)", "aspect" }, | 4088     { "aspect", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_aspect_ratio}, "set aspec
      t ratio (4:3, 16:9 or 1.3333, 1.7777)", "aspect" }, | 
| 4269     { "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", "fo
      rmat" }, | 4089     { "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", "fo
      rmat" }, | 
| 4270     { "croptop", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop_top}, "Deprecated, 
      please use the crop avfilter", "size" }, | 4090     { "croptop", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop}, "Remo
      ved, use the crop filter instead", "size" }, | 
| 4271     { "cropbottom", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop_bottom}, "Deprec
      ated, please use the crop avfilter", "size" }, | 4091     { "cropbottom", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop}, "R
      emoved, use the crop filter instead", "size" }, | 
| 4272     { "cropleft", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop_left}, "Deprecated
      , please use the crop avfilter", "size" }, | 4092     { "cropleft", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop}, "Rem
      oved, use the crop filter instead", "size" }, | 
| 4273     { "cropright", HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop_right}, "Deprecat
      ed, please use the crop avfilter", "size" }, | 4093     { "cropright", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_frame_crop}, "Re
      moved, use the crop filter instead", "size" }, | 
| 4274     { "padtop", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_pad}, "Removed, use
       the pad filter instead", "size" }, | 4094     { "padtop", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_pad}, "Removed, use
       the pad filter instead", "size" }, | 
| 4275     { "padbottom", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_pad}, "Removed, 
      use the pad filter instead", "size" }, | 4095     { "padbottom", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_pad}, "Removed, 
      use the pad filter instead", "size" }, | 
| 4276     { "padleft", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_pad}, "Removed, us
      e the pad filter instead", "size" }, | 4096     { "padleft", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_pad}, "Removed, us
      e the pad filter instead", "size" }, | 
| 4277     { "padright", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_pad}, "Removed, u
      se the pad filter instead", "size" }, | 4097     { "padright", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_pad}, "Removed, u
      se the pad filter instead", "size" }, | 
| 4278     { "padcolor", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_pad}, "Removed, u
      se the pad filter instead", "color" }, | 4098     { "padcolor", OPT_FUNC2 | HAS_ARG | OPT_VIDEO, {(void*)opt_pad}, "Removed, u
      se the pad filter instead", "color" }, | 
| 4279     { "intra", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&intra_only}, "use onl
      y intra frames"}, | 4099     { "intra", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&intra_only}, "use onl
      y intra frames"}, | 
| 4280     { "vn", OPT_BOOL | OPT_VIDEO, {(void*)&video_disable}, "disable video" }, | 4100     { "vn", OPT_BOOL | OPT_VIDEO, {(void*)&video_disable}, "disable video" }, | 
| 4281     { "vdt", OPT_INT | HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)&video_discard}
      , "discard threshold", "n" }, | 4101     { "vdt", OPT_INT | HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)&video_discard}
      , "discard threshold", "n" }, | 
| 4282     { "qscale", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_qscale}, "use fixe
      d video quantizer scale (VBR)", "q" }, | 4102     { "qscale", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_qscale}, "use fixe
      d video quantizer scale (VBR)", "q" }, | 
| 4283     { "rc_override", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_video_rc_over
      ride_string}, "rate control override for specific intervals", "override" }, | 4103     { "rc_override", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_video_rc_over
      ride_string}, "rate control override for specific intervals", "override" }, | 
| (...skipping 14 matching lines...) Expand all  Loading... | 
| 4298     { "intra_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_intra_matrix
      }, "specify intra matrix coeffs", "matrix" }, | 4118     { "intra_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_intra_matrix
      }, "specify intra matrix coeffs", "matrix" }, | 
| 4299     { "inter_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_inter_matrix
      }, "specify inter matrix coeffs", "matrix" }, | 4119     { "inter_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_inter_matrix
      }, "specify inter matrix coeffs", "matrix" }, | 
| 4300     { "top", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_top_field_first}, "to
      p=1/bottom=0/auto=-1 field first", "" }, | 4120     { "top", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_top_field_first}, "to
      p=1/bottom=0/auto=-1 field first", "" }, | 
| 4301     { "dc", OPT_INT | HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)&intra_dc_precis
      ion}, "intra_dc_precision", "precision" }, | 4121     { "dc", OPT_INT | HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)&intra_dc_precis
      ion}, "intra_dc_precision", "precision" }, | 
| 4302     { "vtag", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_video_tag}, "force v
      ideo tag/fourcc", "fourcc/tag" }, | 4122     { "vtag", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_video_tag}, "force v
      ideo tag/fourcc", "fourcc/tag" }, | 
| 4303     { "newvideo", OPT_VIDEO | OPT_FUNC2, {(void*)opt_new_stream}, "add a new vid
      eo stream to the current output stream" }, | 4123     { "newvideo", OPT_VIDEO | OPT_FUNC2, {(void*)opt_new_stream}, "add a new vid
      eo stream to the current output stream" }, | 
| 4304     { "vlang", HAS_ARG | OPT_STRING | OPT_VIDEO, {(void *)&video_language}, "set
       the ISO 639 language code (3 letters) of the current video stream" , "code" }, | 4124     { "vlang", HAS_ARG | OPT_STRING | OPT_VIDEO, {(void *)&video_language}, "set
       the ISO 639 language code (3 letters) of the current video stream" , "code" }, | 
| 4305     { "qphist", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, { (void *)&qp_hist }, "show Q
      P histogram" }, | 4125     { "qphist", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, { (void *)&qp_hist }, "show Q
      P histogram" }, | 
| 4306     { "force_fps", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&force_fps}, "forc
      e the selected framerate, disable the best supported framerate selection" }, | 4126     { "force_fps", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&force_fps}, "forc
      e the selected framerate, disable the best supported framerate selection" }, | 
| 4307     { "streamid", OPT_FUNC2 | HAS_ARG | OPT_EXPERT, {(void*)opt_streamid}, "set 
      the value of an outfile streamid", "streamIndex:value" }, | 4127     { "streamid", OPT_FUNC2 | HAS_ARG | OPT_EXPERT, {(void*)opt_streamid}, "set 
      the value of an outfile streamid", "streamIndex:value" }, | 
|  | 4128     { "force_key_frames", OPT_STRING | HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void 
      *)&forced_key_frames}, "force key frames at specified timestamps", "timestamps" 
      }, | 
| 4308 | 4129 | 
| 4309     /* audio options */ | 4130     /* audio options */ | 
| 4310     { "ab", OPT_FUNC2 | HAS_ARG | OPT_AUDIO, {(void*)opt_bitrate}, "set bitrate 
      (in bits/s)", "bitrate" }, | 4131     { "ab", OPT_FUNC2 | HAS_ARG | OPT_AUDIO, {(void*)opt_bitrate}, "set bitrate 
      (in bits/s)", "bitrate" }, | 
| 4311     { "aframes", OPT_INT | HAS_ARG | OPT_AUDIO, {(void*)&max_frames[AVMEDIA_TYPE
      _AUDIO]}, "set the number of audio frames to record", "number" }, | 4132     { "aframes", OPT_INT | HAS_ARG | OPT_AUDIO, {(void*)&max_frames[AVMEDIA_TYPE
      _AUDIO]}, "set the number of audio frames to record", "number" }, | 
| 4312     { "aq", OPT_FLOAT | HAS_ARG | OPT_AUDIO, {(void*)&audio_qscale}, "set audio 
      quality (codec-specific)", "quality", }, | 4133     { "aq", OPT_FLOAT | HAS_ARG | OPT_AUDIO, {(void*)&audio_qscale}, "set audio 
      quality (codec-specific)", "quality", }, | 
| 4313     { "ar", HAS_ARG | OPT_FUNC2 | OPT_AUDIO, {(void*)opt_audio_rate}, "set audio
       sampling rate (in Hz)", "rate" }, | 4134     { "ar", HAS_ARG | OPT_FUNC2 | OPT_AUDIO, {(void*)opt_audio_rate}, "set audio
       sampling rate (in Hz)", "rate" }, | 
| 4314     { "ac", HAS_ARG | OPT_FUNC2 | OPT_AUDIO, {(void*)opt_audio_channels}, "set n
      umber of audio channels", "channels" }, | 4135     { "ac", HAS_ARG | OPT_FUNC2 | OPT_AUDIO, {(void*)opt_audio_channels}, "set n
      umber of audio channels", "channels" }, | 
| 4315     { "an", OPT_BOOL | OPT_AUDIO, {(void*)&audio_disable}, "disable audio" }, | 4136     { "an", OPT_BOOL | OPT_AUDIO, {(void*)&audio_disable}, "disable audio" }, | 
| 4316     { "acodec", HAS_ARG | OPT_AUDIO, {(void*)opt_audio_codec}, "force audio code
      c ('copy' to copy stream)", "codec" }, | 4137     { "acodec", HAS_ARG | OPT_AUDIO, {(void*)opt_audio_codec}, "force audio code
      c ('copy' to copy stream)", "codec" }, | 
| 4317     { "atag", HAS_ARG | OPT_EXPERT | OPT_AUDIO, {(void*)opt_audio_tag}, "force a
      udio tag/fourcc", "fourcc/tag" }, | 4138     { "atag", HAS_ARG | OPT_EXPERT | OPT_AUDIO, {(void*)opt_audio_tag}, "force a
      udio tag/fourcc", "fourcc/tag" }, | 
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4398                   stream_maps, nb_stream_maps) < 0) | 4219                   stream_maps, nb_stream_maps) < 0) | 
| 4399         ffmpeg_exit(1); | 4220         ffmpeg_exit(1); | 
| 4400     ti = getutime() - ti; | 4221     ti = getutime() - ti; | 
| 4401     if (do_benchmark) { | 4222     if (do_benchmark) { | 
| 4402         int maxrss = getmaxrss() / 1024; | 4223         int maxrss = getmaxrss() / 1024; | 
| 4403         printf("bench: utime=%0.3fs maxrss=%ikB\n", ti / 1000000.0, maxrss); | 4224         printf("bench: utime=%0.3fs maxrss=%ikB\n", ti / 1000000.0, maxrss); | 
| 4404     } | 4225     } | 
| 4405 | 4226 | 
| 4406     return ffmpeg_exit(0); | 4227     return ffmpeg_exit(0); | 
| 4407 } | 4228 } | 
| OLD | NEW | 
|---|