Merge commit '07acdd651d1e2f4cfa5f610e616e70e323bb69cd'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 14 Dec 2012 14:53:48 +0000 (15:53 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 14 Dec 2012 14:56:56 +0000 (15:56 +0100)
* commit '07acdd651d1e2f4cfa5f610e616e70e323bb69cd':
  ivi_common: use proper logging context in ivi_decode_blocks().
  ivi_common: make some functions and tables static.
  asyncts: ignore min_delta only if first_pts is set

Conflicts:
libavcodec/ivi_common.c
libavcodec/ivi_common.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/ivi_common.c
libavcodec/ivi_common.h
libavfilter/af_asyncts.c

@@@ -57,7 -57,16 +57,16 @@@ static uint16_t inv_bits(uint16_t val, 
      return res;
  }
  
- int ff_ivi_create_huff_from_desc(const IVIHuffDesc *cb, VLC *vlc, int flag)
+ /*
+  *  Generate a huffman codebook from the given descriptor
 - *  and convert it into the Libav VLC table.
++ *  and convert it into the FFmpeg VLC table.
+  *
+  *  @param[in]   cb    pointer to codebook descriptor
+  *  @param[out]  vlc   where to place the generated VLC table
+  *  @param[in]   flag  flag: 1 - for static or 0 for dynamic tables
+  *  @return     result code: 0 - OK, -1 = error (invalid codebook descriptor)
+  */
+ static int ivi_create_huff_from_desc(const IVIHuffDesc *cb, VLC *vlc, int flag)
  {
      int         pos, i, j, codes_per_row, prefix, not_last_row;
      uint16_t    codewords[256]; /* FIXME: move this temporal storage out? */
@@@ -134,8 -168,8 +168,8 @@@ int ff_ivi_dec_huff_desc(GetBitContext 
                  new_huff.xbits[i] = get_bits(gb, 4);
  
              /* Have we got the same custom table? Rebuild if not. */
-             if (ff_ivi_huff_desc_cmp(&new_huff, &huff_tab->cust_desc) || !huff_tab->cust_tab.table) {
-                 ff_ivi_huff_desc_copy(&huff_tab->cust_desc, &new_huff);
 -            if (ivi_huff_desc_cmp(&new_huff, &huff_tab->cust_desc)) {
++            if (ivi_huff_desc_cmp(&new_huff, &huff_tab->cust_desc) || !huff_tab->cust_tab.table) {
+                 ivi_huff_desc_copy(&huff_tab->cust_desc, &new_huff);
  
                  if (huff_tab->cust_tab.table)
                      ff_free_vlc(&huff_tab->cust_tab);
      return 0;
  }
  
- int ff_ivi_huff_desc_cmp(const IVIHuffDesc *desc1, const IVIHuffDesc *desc2)
+ /*
+  *  Free planes, bands and macroblocks buffers.
+  *
+  *  @param[in]  planes  pointer to the array of the plane descriptors
+  */
+ static av_cold void ivi_free_buffers(IVIPlaneDesc *planes)
  {
-     return    desc1->num_rows != desc2->num_rows
-            || memcmp(desc1->xbits, desc2->xbits, desc1->num_rows);
- }
+     int p, b, t;
  
- void ff_ivi_huff_desc_copy(IVIHuffDesc *dst, const IVIHuffDesc *src)
- {
-     dst->num_rows = src->num_rows;
-     memcpy(dst->xbits, src->xbits, src->num_rows);
+     for (p = 0; p < 3; p++) {
++        if (planes[p].bands)
+         for (b = 0; b < planes[p].num_bands; b++) {
+             av_freep(&planes[p].bands[b].bufs[0]);
+             av_freep(&planes[p].bands[b].bufs[1]);
+             av_freep(&planes[p].bands[b].bufs[2]);
+             if (planes[p].bands[b].blk_vlc.cust_tab.table)
+                 ff_free_vlc(&planes[p].bands[b].blk_vlc.cust_tab);
+             for (t = 0; t < planes[p].bands[b].num_tiles; t++)
+                 av_freep(&planes[p].bands[b].tiles[t].mbs);
+             av_freep(&planes[p].bands[b].tiles);
+         }
+         av_freep(&planes[p].bands);
+     }
  }
  
  av_cold int ff_ivi_init_planes(IVIPlaneDesc *planes, const IVIPicConfig *cfg)
@@@ -729,11 -757,10 +787,11 @@@ static int decode_band(IVI45DecContext 
                  break;
              av_dlog(avctx, "Empty tile encountered!\n");
          } else {
-             tile->data_size = ff_ivi_dec_tile_data_size(&ctx->gb);
+             tile->data_size = ivi_dec_tile_data_size(&ctx->gb);
              if (!tile->data_size) {
                  av_log(avctx, AV_LOG_ERROR, "Tile data size is zero!\n");
 -                return AVERROR_INVALIDDATA;
 +                result = AVERROR_INVALIDDATA;
 +                break;
              }
  
              result = ctx->decode_mb_info(ctx, band, tile, avctx);
Simple merge
Simple merge