Merge "vp8,frame_buffers: remove unused use_frame_threads"

This commit is contained in:
James Zern 2016-10-01 01:35:55 +00:00 committed by Gerrit Code Review
commit 3c00132181
3 changed files with 22 additions and 51 deletions

View File

@ -439,47 +439,35 @@ int vp8dx_references_buffer(VP8_COMMON *oci, int ref_frame) {
} }
int vp8_create_decoder_instances(struct frame_buffers *fb, VP8D_CONFIG *oxcf) { int vp8_create_decoder_instances(struct frame_buffers *fb, VP8D_CONFIG *oxcf) {
if (!fb->use_frame_threads) { /* decoder instance for single thread mode */
/* decoder instance for single thread mode */ fb->pbi[0] = create_decompressor(oxcf);
fb->pbi[0] = create_decompressor(oxcf); if (!fb->pbi[0]) return VPX_CODEC_ERROR;
if (!fb->pbi[0]) return VPX_CODEC_ERROR;
#if CONFIG_MULTITHREAD #if CONFIG_MULTITHREAD
if (setjmp(fb->pbi[0]->common.error.jmp)) { if (setjmp(fb->pbi[0]->common.error.jmp)) {
vp8_remove_decoder_instances(fb); vp8_remove_decoder_instances(fb);
memset(fb->pbi, 0, sizeof(fb->pbi) / sizeof(fb->pbi[0])); memset(fb->pbi, 0, sizeof(fb->pbi) / sizeof(fb->pbi[0]));
vpx_clear_system_state(); vpx_clear_system_state();
return VPX_CODEC_ERROR; return VPX_CODEC_ERROR;
}
fb->pbi[0]->common.error.setjmp = 1;
fb->pbi[0]->max_threads = oxcf->max_threads;
vp8_decoder_create_threads(fb->pbi[0]);
fb->pbi[0]->common.error.setjmp = 0;
#endif
} else {
/* TODO : create frame threads and decoder instances for each
* thread here */
} }
fb->pbi[0]->common.error.setjmp = 1;
fb->pbi[0]->max_threads = oxcf->max_threads;
vp8_decoder_create_threads(fb->pbi[0]);
fb->pbi[0]->common.error.setjmp = 0;
#endif
return VPX_CODEC_OK; return VPX_CODEC_OK;
} }
int vp8_remove_decoder_instances(struct frame_buffers *fb) { int vp8_remove_decoder_instances(struct frame_buffers *fb) {
if (!fb->use_frame_threads) { VP8D_COMP *pbi = fb->pbi[0];
VP8D_COMP *pbi = fb->pbi[0];
if (!pbi) return VPX_CODEC_ERROR; if (!pbi) return VPX_CODEC_ERROR;
#if CONFIG_MULTITHREAD #if CONFIG_MULTITHREAD
vp8_decoder_remove_threads(pbi); vp8_decoder_remove_threads(pbi);
#endif #endif
/* decoder instance for single thread mode */ /* decoder instance for single thread mode */
remove_decompressor(pbi); remove_decompressor(pbi);
} else {
/* TODO : remove frame threads and decoder instances for each
* thread here */
}
return VPX_CODEC_OK; return VPX_CODEC_OK;
} }

View File

@ -47,9 +47,6 @@ struct frame_buffers {
* this struct will be populated with frame buffer management * this struct will be populated with frame buffer management
* info in future commits. */ * info in future commits. */
/* enable/disable frame-based threading */
int use_frame_threads;
/* decoder instances */ /* decoder instances */
struct VP8D_COMP *pbi[MAX_FB_MT_DEC]; struct VP8D_COMP *pbi[MAX_FB_MT_DEC];
}; };

View File

@ -106,20 +106,6 @@ static vpx_codec_err_t vp8_init(vpx_codec_ctx_t *ctx,
priv = (vpx_codec_alg_priv_t *)ctx->priv; priv = (vpx_codec_alg_priv_t *)ctx->priv;
} }
priv->yv12_frame_buffers.use_frame_threads =
(ctx->priv->init_flags & VPX_CODEC_USE_FRAME_THREADING);
/* for now, disable frame threading */
priv->yv12_frame_buffers.use_frame_threads = 0;
if (priv->yv12_frame_buffers.use_frame_threads &&
((ctx->priv->init_flags & VPX_CODEC_USE_ERROR_CONCEALMENT) ||
(ctx->priv->init_flags & VPX_CODEC_USE_INPUT_FRAGMENTS))) {
/* row-based threading, error concealment, and input fragments will
* not be supported when using frame-based threading */
res = VPX_CODEC_INVALID_PARAM;
}
return res; return res;
} }
@ -519,7 +505,7 @@ static vpx_codec_err_t vp8_set_reference(vpx_codec_alg_priv_t *ctx,
va_list args) { va_list args) {
vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *); vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *);
if (data && !ctx->yv12_frame_buffers.use_frame_threads) { if (data) {
vpx_ref_frame_t *frame = (vpx_ref_frame_t *)data; vpx_ref_frame_t *frame = (vpx_ref_frame_t *)data;
YV12_BUFFER_CONFIG sd; YV12_BUFFER_CONFIG sd;
@ -536,7 +522,7 @@ static vpx_codec_err_t vp8_get_reference(vpx_codec_alg_priv_t *ctx,
va_list args) { va_list args) {
vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *); vpx_ref_frame_t *data = va_arg(args, vpx_ref_frame_t *);
if (data && !ctx->yv12_frame_buffers.use_frame_threads) { if (data) {
vpx_ref_frame_t *frame = (vpx_ref_frame_t *)data; vpx_ref_frame_t *frame = (vpx_ref_frame_t *)data;
YV12_BUFFER_CONFIG sd; YV12_BUFFER_CONFIG sd;
@ -573,7 +559,7 @@ static vpx_codec_err_t vp8_get_last_ref_updates(vpx_codec_alg_priv_t *ctx,
va_list args) { va_list args) {
int *update_info = va_arg(args, int *); int *update_info = va_arg(args, int *);
if (update_info && !ctx->yv12_frame_buffers.use_frame_threads) { if (update_info) {
VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0]; VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0];
*update_info = pbi->common.refresh_alt_ref_frame * (int)VP8_ALTR_FRAME + *update_info = pbi->common.refresh_alt_ref_frame * (int)VP8_ALTR_FRAME +
@ -591,7 +577,7 @@ static vpx_codec_err_t vp8_get_last_ref_frame(vpx_codec_alg_priv_t *ctx,
va_list args) { va_list args) {
int *ref_info = va_arg(args, int *); int *ref_info = va_arg(args, int *);
if (ref_info && !ctx->yv12_frame_buffers.use_frame_threads) { if (ref_info) {
VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0]; VP8D_COMP *pbi = (VP8D_COMP *)ctx->yv12_frame_buffers.pbi[0];
VP8_COMMON *oci = &pbi->common; VP8_COMMON *oci = &pbi->common;
*ref_info = *ref_info =