Merge commit 'ad9d3384de08f02967d6eb11196ee8c78e8b2dba'
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>
Tue, 3 May 2016 09:15:22 +0000 (10:15 +0100)
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>
Tue, 3 May 2016 09:15:22 +0000 (10:15 +0100)
* commit 'ad9d3384de08f02967d6eb11196ee8c78e8b2dba':
  svq3: move the dequant buffer to SVQ3Context

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
1  2 
libavcodec/h264_slice.c
libavcodec/h264data.c
libavcodec/h264data.h
libavcodec/svq3.c

  #include "rectangle.h"
  #include "thread.h"
  
- static const uint8_t rem6[QP_MAX_NUM + 1] = {
-     0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
-     3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
-     0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
-     3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
-     0, 1, 2, 3,
- };
- static const uint8_t div6[QP_MAX_NUM + 1] = {
-     0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3,  3,  3,
-     3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6,  6,  6,
-     7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10,
-    10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13, 13, 13, 13,
-    14,14,14,14,
- };
 -static const uint8_t field_scan[16] = {
 +static const uint8_t field_scan[16+1] = {
      0 + 0 * 4, 0 + 1 * 4, 1 + 0 * 4, 0 + 2 * 4,
      0 + 3 * 4, 1 + 1 * 4, 1 + 2 * 4, 1 + 3 * 4,
      2 + 0 * 4, 2 + 1 * 4, 2 + 2 * 4, 2 + 3 * 4,
@@@ -147,3 -147,37 +147,41 @@@ const PMbInfo ff_h264_b_sub_mb_type_inf
      { MB_TYPE_8x8   | MB_TYPE_P0L1 | MB_TYPE_P1L1,                               4, },
      { MB_TYPE_8x8   | MB_TYPE_P0L0 | MB_TYPE_P0L1 | MB_TYPE_P1L0 | MB_TYPE_P1L1, 4, },
  };
 -    0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
+ const uint8_t ff_h264_dequant4_coeff_init[6][3] = {
+     { 10, 13, 16 },
+     { 11, 14, 18 },
+     { 13, 16, 20 },
+     { 14, 18, 23 },
+     { 16, 20, 25 },
+     { 18, 23, 29 },
+ };
+ const uint8_t ff_h264_dequant8_coeff_init_scan[16] = {
+     0, 3, 4, 3, 3, 1, 5, 1, 4, 5, 2, 5, 3, 1, 5, 1
+ };
+ const uint8_t ff_h264_dequant8_coeff_init[6][6] = {
+     { 20, 18, 32, 19, 25, 24 },
+     { 22, 19, 35, 21, 28, 26 },
+     { 26, 23, 42, 24, 33, 31 },
+     { 28, 25, 45, 26, 35, 33 },
+     { 32, 28, 51, 30, 40, 38 },
+     { 36, 32, 58, 34, 46, 43 },
+ };
+ const uint8_t ff_h264_quant_rem6[QP_MAX_NUM + 1] = {
+     0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
+     3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
 -    7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
++    0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
++    3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
++    0, 1, 2, 3,
+ };
+ const uint8_t ff_h264_quant_div6[QP_MAX_NUM + 1] = {
+     0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3,  3,  3,
+     3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6,  6,  6,
++    7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10,
++   10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13, 13, 13, 13,
++   14,14,14,14,
+ };
@@@ -48,23 -48,10 +48,30 @@@ extern const PMbInfo ff_h264_p_sub_mb_t
  extern const PMbInfo ff_h264_b_mb_type_info[23];
  extern const PMbInfo ff_h264_b_sub_mb_type_info[13];
  
 +static const AVRational ff_h264_pixel_aspect[17] = {
 +    {   0,  1 },
 +    {   1,  1 },
 +    {  12, 11 },
 +    {  10, 11 },
 +    {  16, 11 },
 +    {  40, 33 },
 +    {  24, 11 },
 +    {  20, 11 },
 +    {  32, 11 },
 +    {  80, 33 },
 +    {  18, 11 },
 +    {  15, 11 },
 +    {  64, 33 },
 +    { 160, 99 },
 +    {   4,  3 },
 +    {   3,  2 },
 +    {   2,  1 },
 +};
++
+ extern const uint8_t ff_h264_dequant4_coeff_init[6][3];
+ extern const uint8_t ff_h264_dequant8_coeff_init_scan[16];
+ extern const uint8_t ff_h264_dequant8_coeff_init[6][6];
+ extern const uint8_t ff_h264_quant_rem6[QP_MAX_NUM + 1];
+ extern const uint8_t ff_h264_quant_div6[QP_MAX_NUM + 1];
  #endif /* AVCODEC_H264DATA_H */
@@@ -1132,10 -1136,6 +1145,8 @@@ static av_cold int svq3_decode_init(AVC
      ff_h264_pred_init(&s->hpc, AV_CODEC_ID_SVQ3, 8, 1);
      ff_videodsp_init(&s->vdsp, 8);
  
-     memset(h->pps.scaling_matrix4, 16, 6 * 16 * sizeof(uint8_t));
-     memset(h->pps.scaling_matrix8, 16, 2 * 64 * sizeof(uint8_t));
 +
 +    avctx->bits_per_raw_sample = 8;
      h->sps.bit_depth_luma = 8;
      h->chroma_format_idc = 1;
  
              s->mb2br_xy[mb_xy] = 8 * (mb_xy % (2 * h->mb_stride));
          }
  
-     if ((ret = ff_h264_alloc_tables(h)) < 0) {
-         av_log(avctx, AV_LOG_ERROR, "svq3 memory allocation failed\n");
-         goto fail;
-     }
+     init_dequant4_coeff_table(s);
  
      return 0;
 +fail:
 +    svq3_decode_end(avctx);
 +    return ret;
  }
  
  static void free_picture(AVCodecContext *avctx, H264Picture *pic)