Merge remote-tracking branch 'qatar/master'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 4 Mar 2012 01:03:25 +0000 (02:03 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 4 Mar 2012 03:26:04 +0000 (04:26 +0100)
* qatar/master:
  tiertexseq: set correct block_align for audio
  tiertexseq: set audio stream start time to 0
  voc/avs: Do not change the sample rate mid-stream.
  segafilm: use the sample rate as the time base for audio streams
  ea: fix audio pts
  psx-str: fix audio pts
  vqf: set packet duration
  tta demuxer: set packet duration
  mpegaudio_parser: do not ignore information from the first parsed frame
  mpegaudio_parser: be less picky about the start position
  thp: set audio packet durations
  avcodec: add a Vorbis parser to get packet duration
  vorbisdec: read the previous window flag for long windows
  lavc: free the output packet when encoding failed or produced no output.
  lavc: preserve avpkt->destruct in ff_alloc_packet().
  lavc: clarify the meaning of AVCodecContext.frame_number.
  mpegts: Pad the packet buffer in handle_packet().
  mpegts: Do not call read_sl_header() when no bytes remain in the buffer.

Conflicts:
libavcodec/mpegaudio_parser.c
libavcodec/version.h
libavformat/mpegts.c
tests/ref/fate/pva-demux

Merged-by: Michael Niedermayer <michaelni@gmx.at>
18 files changed:
1  2 
libavcodec/Makefile
libavcodec/allcodecs.c
libavcodec/avcodec.h
libavcodec/mpegaudio_parser.c
libavcodec/utils.c
libavcodec/version.h
libavcodec/vorbisdec.c
libavformat/electronicarts.c
libavformat/mpegts.c
libavformat/psxstr.c
libavformat/rtpdec.c
libavformat/segafilm.c
libavformat/thp.c
libavformat/tiertexseq.c
libavformat/tta.c
libavformat/utils.c
libavformat/vocdec.c
libavformat/vqf.c

Simple merge
Simple merge
Simple merge
@@@ -75,7 -75,7 +75,7 @@@ static int mpegaudio_parse(AVCodecParse
                      s->header_count++;
                      s->frame_size = ret-4;
  
-                     if(s->header_count > 1){
 -                    if (s->header_count > 0) {
++                    if (s->header_count > 1) {
                          avctx->sample_rate= sr;
                          avctx->channels   = channels;
                          s1->duration      = frame_size;
Simple merge
@@@ -21,8 -21,8 +21,8 @@@
  #define AVCODEC_VERSION_H
  
  #define LIBAVCODEC_VERSION_MAJOR 54
--#define LIBAVCODEC_VERSION_MINOR  6
 -#define LIBAVCODEC_VERSION_MICRO  0
++#define LIBAVCODEC_VERSION_MINOR  7
 +#define LIBAVCODEC_VERSION_MICRO 100
  
  #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
                                                 LIBAVCODEC_VERSION_MINOR, \
Simple merge
Simple merge
@@@ -713,12 -680,6 +713,7 @@@ static int read_sl_header(PESContext *p
      int padding_flag = 0, padding_bits = 0, inst_bitrate_flag = 0;
      int dts_flag = -1, cts_flag = -1;
      int64_t dts = AV_NOPTS_VALUE, cts = AV_NOPTS_VALUE;
-     if (buf_size<=0) {
-         av_log(0,AV_LOG_WARNING, "empty SL header\n");
-         return 0;
-     }
 +
      init_get_bits(&gb, buf, buf_size*8);
  
      if (sl->use_au_start)
@@@ -1844,16 -1794,13 +1839,17 @@@ static int handle_packets(MpegTSContex
  
      ts->stop_parse = 0;
      packet_num = 0;
+     memset(packet + TS_PACKET_SIZE, 0, FF_INPUT_BUFFER_PADDING_SIZE);
      for(;;) {
 -        if (ts->stop_parse>0)
 -            break;
          packet_num++;
 -        if (nb_packets != 0 && packet_num >= nb_packets)
 +        if (nb_packets != 0 && packet_num >= nb_packets ||
 +            ts->stop_parse > 1) {
 +            ret = AVERROR(EAGAIN);
 +            break;
 +        }
 +        if (ts->stop_parse > 0)
              break;
 +
          ret = read_packet(s, packet, ts->raw_packet_size);
          if (ret != 0)
              break;
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -69,12 -71,15 +71,15 @@@ static int tta_read_header(AVFormatCont
  
      avio_skip(s->pb, 4); // header crc
  
-     framelen = samplerate*256/245;
-     c->totalframes = datalen / framelen + ((datalen % framelen) ? 1 : 0);
+     c->frame_size      = samplerate * 256 / 245;
+     c->last_frame_size = datalen % c->frame_size;
+     if (!c->last_frame_size)
+         c->last_frame_size = c->frame_size;
+     c->totalframes = datalen / c->frame_size + (c->last_frame_size < c->frame_size);
      c->currentframe = 0;
  
 -    if(c->totalframes >= UINT_MAX/sizeof(uint32_t)){
 -        av_log(s, AV_LOG_ERROR, "totalframes too large\n");
 +    if(c->totalframes >= UINT_MAX/sizeof(uint32_t) || c->totalframes <= 0){
 +        av_log(s, AV_LOG_ERROR, "totalframes %d invalid\n", c->totalframes);
          return -1;
      }
  
Simple merge
Simple merge
Simple merge