Merge commit 'c8462bd17f35f435192281a2ea4ce8008a7398d3' into release/1.1
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 12 May 2013 11:55:06 +0000 (13:55 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 12 May 2013 11:55:06 +0000 (13:55 +0200)
* commit 'c8462bd17f35f435192281a2ea4ce8008a7398d3':
  mp3dec: fallback to generic seeking when a TOC is not present
  svq1dec: clip motion vectors to the frame size.
  svq1dec: check that the reference frame has the same dimensions as the current one
  qdm2: check that the FFT size is a power of 2

Conflicts:
libavcodec/svq1dec.c
libavformat/mp3dec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/qdm2.c
libavcodec/svq1dec.c
libavformat/mp3dec.c

Simple merge
Simple merge
  
  #define XING_TOC_COUNT 100
  
 -typedef struct MP3DecContext {
 +typedef struct {
 +    int64_t filesize;
      int xing_toc;
- } MP3Context;
 +    int start_pad;
 +    int end_pad;
+ } MP3DecContext;
  
  /* mp3 read */
  
@@@ -113,7 -128,6 +113,7 @@@ static void read_xing_toc(AVFormatConte
   */
  static int mp3_parse_vbr_tags(AVFormatContext *s, AVStream *st, int64_t base)
  {
-     MP3Context *mp3 = s->priv_data;
++    MP3DecContext *mp3 = s->priv_data;
      uint32_t v, spf;
      unsigned frames = 0; /* Total number of frames in file */
      unsigned size = 0; /* Total number of bytes in the stream */
  
  static int mp3_read_header(AVFormatContext *s)
  {
-     MP3Context *mp3 = s->priv_data;
++    MP3DecContext *mp3 = s->priv_data;
      AVStream *st;
      int64_t off;
  
  
  static int mp3_read_packet(AVFormatContext *s, AVPacket *pkt)
  {
-     MP3Context *mp3 = s->priv_data;
 -    int ret;
 -
 -    ret = av_get_packet(s->pb, pkt, MP3_PACKET_SIZE);
 -    if (ret < 0)
 -        return ret;
++    MP3DecContext *mp3 = s->priv_data;
 +    int ret, size;
 +    int64_t pos;
 +
 +    size= MP3_PACKET_SIZE;
 +    pos = avio_tell(s->pb);
 +    if(mp3->filesize > ID3v1_TAG_SIZE && pos < mp3->filesize)
 +        size= FFMIN(size, mp3->filesize - pos);
 +
 +    ret= av_get_packet(s->pb, pkt, size);
 +    if (ret <= 0) {
 +        if(ret<0)
 +            return ret;
 +        return AVERROR_EOF;
 +    }
  
 +    pkt->flags &= ~AV_PKT_FLAG_CORRUPT;
      pkt->stream_index = 0;
  
 -    if (ret > ID3v1_TAG_SIZE &&
 +    if (ret >= ID3v1_TAG_SIZE &&
          memcmp(&pkt->data[ret - ID3v1_TAG_SIZE], "TAG", 3) == 0)
          ret -= ID3v1_TAG_SIZE;