Commit 0becb078 authored by Diego Biurrun's avatar Diego Biurrun

h264: Factorize declaration of mb_sizes array.

parent a03f8ea0
...@@ -45,6 +45,8 @@ ...@@ -45,6 +45,8 @@
// #undef NDEBUG // #undef NDEBUG
#include <assert.h> #include <assert.h>
const uint16_t ff_h264_mb_sizes[4] = { 256, 384, 512, 768 };
static const uint8_t rem6[QP_MAX_NUM + 1] = { 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, 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, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
...@@ -2138,12 +2140,11 @@ static av_always_inline void hl_decode_mb_internal(H264Context *h, int simple, ...@@ -2138,12 +2140,11 @@ static av_always_inline void hl_decode_mb_internal(H264Context *h, int simple,
if (!simple && IS_INTRA_PCM(mb_type)) { if (!simple && IS_INTRA_PCM(mb_type)) {
if (pixel_shift) { if (pixel_shift) {
static const uint16_t mb_sizes[4] = { 256, 384, 512, 768 };
const int bit_depth = h->sps.bit_depth_luma; const int bit_depth = h->sps.bit_depth_luma;
int j; int j;
GetBitContext gb; GetBitContext gb;
init_get_bits(&gb, (uint8_t *)h->mb, init_get_bits(&gb, (uint8_t *)h->mb,
mb_sizes[h->sps.chroma_format_idc] * bit_depth); ff_h264_mb_sizes[h->sps.chroma_format_idc] * bit_depth);
for (i = 0; i < 16; i++) { for (i = 0; i < 16; i++) {
uint16_t *tmp_y = (uint16_t *)(dest_y + i * linesize); uint16_t *tmp_y = (uint16_t *)(dest_y + i * linesize);
......
...@@ -584,6 +584,7 @@ typedef struct H264Context{ ...@@ -584,6 +584,7 @@ typedef struct H264Context{
extern const uint8_t ff_h264_chroma_qp[3][QP_MAX_NUM+1]; ///< One chroma qp table for each supported bit depth (8, 9, 10). extern const uint8_t ff_h264_chroma_qp[3][QP_MAX_NUM+1]; ///< One chroma qp table for each supported bit depth (8, 9, 10).
extern const uint16_t ff_h264_mb_sizes[4];
/** /**
* Decode SEI * Decode SEI
......
...@@ -1983,8 +1983,8 @@ decode_intra_mb: ...@@ -1983,8 +1983,8 @@ decode_intra_mb:
h->slice_table[ mb_xy ]= h->slice_num; h->slice_table[ mb_xy ]= h->slice_num;
if(IS_INTRA_PCM(mb_type)) { if(IS_INTRA_PCM(mb_type)) {
static const uint16_t mb_sizes[4] = {256,384,512,768}; const int mb_size = ff_h264_mb_sizes[h->sps.chroma_format_idc] *
const int mb_size = mb_sizes[h->sps.chroma_format_idc]*h->sps.bit_depth_luma >> 3; h->sps.bit_depth_luma >> 3;
const uint8_t *ptr; const uint8_t *ptr;
// We assume these blocks are very rare so we do not optimize it. // We assume these blocks are very rare so we do not optimize it.
......
...@@ -764,8 +764,8 @@ decode_intra_mb: ...@@ -764,8 +764,8 @@ decode_intra_mb:
if(IS_INTRA_PCM(mb_type)){ if(IS_INTRA_PCM(mb_type)){
unsigned int x; unsigned int x;
static const uint16_t mb_sizes[4] = {256,384,512,768}; const int mb_size = ff_h264_mb_sizes[h->sps.chroma_format_idc] *
const int mb_size = mb_sizes[h->sps.chroma_format_idc]*h->sps.bit_depth_luma >> 3; h->sps.bit_depth_luma >> 3;
// We assume these blocks are very rare so we do not optimize it. // We assume these blocks are very rare so we do not optimize it.
align_get_bits(&s->gb); align_get_bits(&s->gb);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment