Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 18 Aug 2011 22:53:42 +0000 (00:53 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 18 Aug 2011 22:53:42 +0000 (00:53 +0200)
* qatar/master:
  avconv: Fix spelling errors.
  aac: Only set sample rate and object type from ADTS if output hasn't been configured.
  aac: Set SBR and PS to unsignalled during headerless and ADTS initialization.
  aac: Only output configure if audio was found.
  avconv: save two levels of indentation in flush_encoders()
  avconv: factor flushing encoders out of output_packet().
  avconv: factor out initializing input streams.
  avconv: remove -intra option.
  avconv: reset streamid_map between output files.
  avconv: make timer_start a local var in transcode().
  avconv: cosmetics, move OutputStream.
  avconv: remove two unused macros.

Conflicts:
avconv.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
Changelog
avconv.c
doc/avconv.texi
libavcodec/aacdec.c
tests/lavf-regression.sh

diff --cc Changelog
Simple merge
diff --cc avconv.c
+++ b/avconv.c
@@@ -234,7 -215,31 +231,31 @@@ static AVBitStreamFilterContext *subtit
  
  #define DEFAULT_PASS_LOGFILENAME_PREFIX "av2pass"
  
- struct InputStream;
+ typedef struct InputStream {
+     int file_index;
+     AVStream *st;
+     int discard;             /* true if stream data should be discarded */
+     int decoding_needed;     /* true if the packets must be decoded in 'raw_fifo' */
+     AVCodec *dec;
+     int64_t       start;     /* time when read started */
+     int64_t       next_pts;  /* synthetic pts for cases where pkt.pts
+                                 is not defined */
+     int64_t       pts;       /* current pts */
 -    PtsCorrectionContext pts_ctx;
+     double ts_scale;
+     int is_start;            /* is 1 at the start and after a discontinuity */
+     int showed_multi_packet_warning;
+     AVDictionary *opts;
+ } InputStream;
+ typedef struct InputFile {
+     AVFormatContext *ctx;
+     int eof_reached;      /* true if eof reached */
+     int ist_index;        /* index of first stream in ist_table */
+     int buffer_size;      /* current total buffer size */
++    int nb_streams;
+     int64_t ts_offset;
+ } InputFile;
  
  typedef struct OutputStream {
      int file_index;          /* file index */
     int is_past_recording_time;
  } OutputStream;
  
- typedef struct InputStream {
-     int file_index;
-     AVStream *st;
-     int discard;             /* true if stream data should be discarded */
-     int decoding_needed;     /* true if the packets must be decoded in 'raw_fifo' */
-     AVCodec *dec;
-     int64_t       start;     /* time when read started */
-     int64_t       next_pts;  /* synthetic pts for cases where pkt.pts
-                                 is not defined */
-     int64_t       pts;       /* current pts */
-     double ts_scale;
-     int is_start;            /* is 1 at the start and after a discontinuity */
-     int showed_multi_packet_warning;
-     AVDictionary *opts;
- } InputStream;
- typedef struct InputFile {
-     AVFormatContext *ctx;
-     int eof_reached;      /* true if eof reached */
-     int ist_index;        /* index of first stream in ist_table */
-     int buffer_size;      /* current total buffer size */
-     int nb_streams;
-     int64_t ts_offset;
- } InputFile;
 +#if HAVE_TERMIOS_H
 +
 +/* init terminal so that we can grab keys */
 +static struct termios oldtty;
 +#endif
  
  typedef struct OutputFile {
      AVFormatContext *ctx;
@@@ -1896,6 -1821,48 +1890,37 @@@ static void print_sdp(OutputFile *outpu
      av_freep(&avc);
  }
  
 -        /* update requested sample format for the decoder based on the
 -           corresponding encoder sample format */
 -        for (i = 0; i < nb_output_streams; i++) {
 -            OutputStream *ost = &output_streams[i];
 -            if (ost->source_index == ist_index) {
 -                update_sample_fmt(ist->st->codec, codec, ost->st->codec);
 -                break;
 -            }
 -        }
 -
+ static int init_input_stream(int ist_index, OutputStream *output_streams, int nb_output_streams,
+                              char *error, int error_len)
+ {
+     int i;
+     InputStream *ist = &input_streams[ist_index];
+     if (ist->decoding_needed) {
+         AVCodec *codec = ist->dec;
+         if (!codec)
+             codec = avcodec_find_decoder(ist->st->codec->codec_id);
+         if (!codec) {
+             snprintf(error, sizeof(error), "Decoder (codec id %d) not found for input stream #%d.%d",
+                     ist->st->codec->codec_id, ist->file_index, ist->st->index);
+             return AVERROR(EINVAL);
+         }
 -    init_pts_correction(&ist->pts_ctx);
+         if (avcodec_open2(ist->st->codec, codec, &ist->opts) < 0) {
+             snprintf(error, sizeof(error), "Error while opening decoder for input stream #%d.%d",
+                     ist->file_index, ist->st->index);
+             return AVERROR(EINVAL);
+         }
+         assert_codec_experimental(ist->st->codec, 0);
+         assert_avoptions(ist->opts);
+     }
+     ist->pts = ist->st->avg_frame_rate.num ? - ist->st->codec->has_b_frames*AV_TIME_BASE / av_q2d(ist->st->avg_frame_rate) : 0;
+     ist->next_pts = AV_NOPTS_VALUE;
+     ist->is_start = 1;
+     return 0;
+ }
  /*
   * The following code is the main loop of the file converter
   */
@@@ -1904,7 -1871,7 +1929,7 @@@ static int transcode(OutputFile *output
                       InputFile *input_files,
                       int nb_input_files)
  {
-     int ret = 0, i, j, step;
 -    int ret = 0, i;
++    int ret = 0, i, step;
      AVFormatContext *is, *os;
      AVCodecContext *codec, *icodec;
      OutputStream *ost;
@@@ -3289,11 -3169,8 +3283,9 @@@ static OutputStream *new_video_stream(A
          video_enc->width = frame_width;
          video_enc->height = frame_height;
          video_enc->pix_fmt = frame_pix_fmt;
 +        video_enc->bits_per_raw_sample = frame_bits_per_raw_sample;
          st->sample_aspect_ratio = video_enc->sample_aspect_ratio;
  
-         if (intra_only)
-             video_enc->gop_size = 0;
          if (video_qscale || same_quant) {
              video_enc->flags |= CODEC_FLAG_QSCALE;
              video_enc->global_quality = FF_QP2LAMBDA * video_qscale;
diff --cc doc/avconv.texi
Simple merge
Simple merge
Simple merge