Make a local copy of the dequantized data
Multithreaded encoding was breaking at low bitrates Please review/comment. Not sure if this is the best fix. Change-Id: I87468c765372593fd865bc82e25121ebb8ca6af2
This commit is contained in:
parent
16a8948c45
commit
db389cb804
@ -17,6 +17,10 @@
|
|||||||
#include "blockd.h"
|
#include "blockd.h"
|
||||||
#include "onyxc_int.h"
|
#include "onyxc_int.h"
|
||||||
|
|
||||||
|
#if CONFIG_MULTITHREAD
|
||||||
|
#include "vpx_mem/vpx_mem.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
static void eob_adjust(char *eobs, short *diff)
|
static void eob_adjust(char *eobs, short *diff)
|
||||||
{
|
{
|
||||||
/* eob adjust.... the idct can only skip if both the dc and eob are zero */
|
/* eob adjust.... the idct can only skip if both the dc and eob are zero */
|
||||||
@ -36,6 +40,10 @@ static void vp8_inverse_transform_mby(MACROBLOCKD *xd,
|
|||||||
/* save the dc dequant constant in case it is overridden */
|
/* save the dc dequant constant in case it is overridden */
|
||||||
short dc_dequant_temp = DQC[0];
|
short dc_dequant_temp = DQC[0];
|
||||||
|
|
||||||
|
#if CONFIG_MULTITHREAD
|
||||||
|
DECLARE_ALIGNED(16, short, local_dequant[16]);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (xd->mode_info_context->mbmi.mode != SPLITMV)
|
if (xd->mode_info_context->mbmi.mode != SPLITMV)
|
||||||
{
|
{
|
||||||
/* do 2nd order transform on the dc block */
|
/* do 2nd order transform on the dc block */
|
||||||
@ -51,11 +59,18 @@ static void vp8_inverse_transform_mby(MACROBLOCKD *xd,
|
|||||||
}
|
}
|
||||||
eob_adjust(xd->eobs, xd->qcoeff);
|
eob_adjust(xd->eobs, xd->qcoeff);
|
||||||
|
|
||||||
|
#if CONFIG_MULTITHREAD
|
||||||
|
DQC = local_dequant;
|
||||||
|
|
||||||
|
vpx_memcpy(DQC, xd->block[0].dequant,
|
||||||
|
sizeof(local_dequant));
|
||||||
|
#endif
|
||||||
|
|
||||||
/* override the dc dequant constant */
|
/* override the dc dequant constant */
|
||||||
DQC[0] = 1;
|
DQC[0] = 1;
|
||||||
}
|
}
|
||||||
DEQUANT_INVOKE (&rtcd->dequant, idct_add_y_block)
|
DEQUANT_INVOKE (&rtcd->dequant, idct_add_y_block)
|
||||||
(xd->qcoeff, xd->block[0].dequant,
|
(xd->qcoeff, DQC,
|
||||||
xd->dst.y_buffer,
|
xd->dst.y_buffer,
|
||||||
xd->dst.y_stride, xd->eobs);
|
xd->dst.y_stride, xd->eobs);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user