Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 17 Apr 2012 10:13:22 +0000 (12:13 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 17 Apr 2012 10:13:22 +0000 (12:13 +0200)
* qatar/master:
  indeo3: add parens around some macro arguments
  h264: use proper PROLOGUE statement for a function using 8 registers.
  doc: Update sample Vim config with suitable (function) indentation settings.
  dv: Merge dvquant.h into dvdata.c where all other DV tables reside.
  dv: Move static tables only used in one place to where they are used.
  graphparser: set next to NULL on an entry extracted from inputs list
  doc/filters: update documentation.
  avconv: flush decoders immediately after an EOF.
  avconv: send EOF to vsrc_buffer.
  avconv: reindent.

Conflicts:
doc/filters.texi
ffmpeg.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
doc/developer.texi
doc/filters.texi
ffmpeg.c
libavcodec/dv.c
libavcodec/dvdata.c
libavcodec/dvdata.h
libavcodec/dvdec.c
libavcodec/indeo3data.h
libavfilter/graphparser.c

Simple merge
@@@ -17,9 -17,10 +17,10 @@@ output pads is called a "sink"
  @anchor{Filtergraph syntax}
  @section Filtergraph syntax
  
- A filtergraph can be represented using a textual representation, which
- is recognized by the @code{-vf} option of the ff*
- tools, and by the @code{avfilter_graph_parse()} function defined in
+ A filtergraph can be represented using a textual representation, which is
+ recognized by the @option{-filter}/@option{-vf} and @option{-filter_complex}
 -options in @command{avconv} and @option{-vf} in @command{avplay}, and by the
++options in @command{ffmpeg} and @option{-vf} in @command{ffplay}, and by the
+ @code{avfilter_graph_parse()}/@code{avfilter_graph_parse2()} function defined in
  @file{libavfilter/avfiltergraph.h}.
  
  A filterchain consists of a sequence of connected filters, each one
@@@ -2114,15 -1126,12 +2115,12 @@@ Follow some examples
  overlay=main_w-overlay_w-10:main_h-overlay_h-10
  
  # insert a transparent PNG logo in the bottom left corner of the input
- movie=logo.png [logo];
- [in][logo] overlay=10:main_h-overlay_h-10 [out]
 -avconv -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
++ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
  
  # insert 2 different transparent PNG logos (second logo on bottom
  # right corner):
- movie=logo1.png [logo1];
- movie=logo2.png [logo2];
- [in][logo1]       overlay=10:H-h-10 [in+logo1];
- [in+logo1][logo2] overlay=W-w-10:H-h-10 [out]
 -avconv -i input -i logo1 -i logo2 -filter_complex
++ffmpeg -i input -i logo1 -i logo2 -filter_complex
+ 'overlay=10:H-h-10,overlay=W-w-10:H-h-10' output
  
  # add a transparent color layer on top of the main video,
  # WxH specifies the size of the main input to the overlay filter
diff --cc ffmpeg.c
+++ b/ffmpeg.c
@@@ -2492,15 -2216,14 +2492,18 @@@ static int transcode_video(InputStream 
      quality = same_quant ? decoded_frame->quality : 0;
      if (!*got_output) {
          /* no picture yet */
+         if (!pkt->size)
+             for (i = 0; i < ist->nb_filters; i++)
+                 av_buffersrc_buffer(ist->filters[i]->filter, NULL);
          return ret;
      }
 -    decoded_frame->pts = guess_correct_pts(&ist->pts_ctx, decoded_frame->pkt_pts,
 -                                           decoded_frame->pkt_dts);
 +
 +    best_effort_timestamp= av_opt_ptr(avcodec_get_frame_class(), decoded_frame, "best_effort_timestamp");
 +    if(*best_effort_timestamp != AV_NOPTS_VALUE)
 +        ist->next_pts = ist->pts = decoded_frame->pts = *best_effort_timestamp;
 +
      pkt->size = 0;
 +
      pre_process_video_frame(ist, (AVPicture *)decoded_frame, &buffer_to_free);
  
      rate_emu_sleep(ist);
@@@ -4971,28 -4326,24 +4981,27 @@@ loop_end
                  }
                  init_output_filter(ofilter, o, oc);
              } else {
-             ist = input_streams[input_files[map->file_index]->ist_index + map->stream_index];
-             if(o->subtitle_disable && ist->st->codec->codec_type == AVMEDIA_TYPE_SUBTITLE)
-                 continue;
-             if(o->   audio_disable && ist->st->codec->codec_type == AVMEDIA_TYPE_AUDIO)
-                 continue;
-             if(o->   video_disable && ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
-                 continue;
-             if(o->    data_disable && ist->st->codec->codec_type == AVMEDIA_TYPE_DATA)
-                 continue;
-             switch (ist->st->codec->codec_type) {
-             case AVMEDIA_TYPE_VIDEO:    ost = new_video_stream(o, oc, src_idx);    break;
-             case AVMEDIA_TYPE_AUDIO:    ost = new_audio_stream(o, oc, src_idx);    break;
-             case AVMEDIA_TYPE_SUBTITLE: ost = new_subtitle_stream(o, oc, src_idx); break;
-             case AVMEDIA_TYPE_DATA:     ost = new_data_stream(o, oc, src_idx);     break;
-             case AVMEDIA_TYPE_ATTACHMENT: ost = new_attachment_stream(o, oc, src_idx); break;
-             default:
-                 av_log(NULL, AV_LOG_FATAL, "Cannot map stream #%d:%d - unsupported type.\n",
-                        map->file_index, map->stream_index);
-                 exit_program(1);
-             }
+                 ist = input_streams[input_files[map->file_index]->ist_index + map->stream_index];
++                if(o->subtitle_disable && ist->st->codec->codec_type == AVMEDIA_TYPE_SUBTITLE)
++                    continue;
++                if(o->   audio_disable && ist->st->codec->codec_type == AVMEDIA_TYPE_AUDIO)
++                    continue;
++                if(o->   video_disable && ist->st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
++                    continue;
++                if(o->    data_disable && ist->st->codec->codec_type == AVMEDIA_TYPE_DATA)
++                    continue;
++
+                 switch (ist->st->codec->codec_type) {
 -                case AVMEDIA_TYPE_VIDEO:    ost = new_video_stream(o, oc);    break;
 -                case AVMEDIA_TYPE_AUDIO:    ost = new_audio_stream(o, oc);    break;
 -                case AVMEDIA_TYPE_SUBTITLE: ost = new_subtitle_stream(o, oc); break;
 -                case AVMEDIA_TYPE_DATA:     ost = new_data_stream(o, oc);     break;
 -                case AVMEDIA_TYPE_ATTACHMENT: ost = new_attachment_stream(o, oc); break;
++                case AVMEDIA_TYPE_VIDEO:      ost = new_video_stream     (o, oc, src_idx); break;
++                case AVMEDIA_TYPE_AUDIO:      ost = new_audio_stream     (o, oc, src_idx); break;
++                case AVMEDIA_TYPE_SUBTITLE:   ost = new_subtitle_stream  (o, oc, src_idx); break;
++                case AVMEDIA_TYPE_DATA:       ost = new_data_stream      (o, oc, src_idx); break;
++                case AVMEDIA_TYPE_ATTACHMENT: ost = new_attachment_stream(o, oc, src_idx); break;
+                 default:
+                     av_log(NULL, AV_LOG_FATAL, "Cannot map stream #%d:%d - unsupported type.\n",
 -                           map->file_index, map->stream_index);
++                        map->file_index, map->stream_index);
+                     exit_program(1);
+                 }
 -
 -                ost->source_index = input_files[map->file_index]->ist_index + map->stream_index;
 -                ost->sync_ist     = input_streams[input_files[map->sync_file_index]->ist_index +
 -                                               map->sync_stream_index];
 -                ist->discard = 0;
 -                ist->st->discard = AVDISCARD_NONE;
              }
          }
      }
diff --cc libavcodec/dv.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge