}
int vp8_create_decoder_instances(struct frame_buffers *fb, VP8D_CONFIG *oxcf) {
- if (!fb->use_frame_threads) {
- /* decoder instance for single thread mode */
- fb->pbi[0] = create_decompressor(oxcf);
- if (!fb->pbi[0]) return VPX_CODEC_ERROR;
+ /* decoder instance for single thread mode */
+ fb->pbi[0] = create_decompressor(oxcf);
+ if (!fb->pbi[0]) return VPX_CODEC_ERROR;
#if CONFIG_MULTITHREAD
- if (setjmp(fb->pbi[0]->common.error.jmp)) {
- vp8_remove_decoder_instances(fb);
- memset(fb->pbi, 0, sizeof(fb->pbi) / sizeof(fb->pbi[0]));
- vpx_clear_system_state();
- 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 */
+ if (setjmp(fb->pbi[0]->common.error.jmp)) {
+ vp8_remove_decoder_instances(fb);
+ memset(fb->pbi, 0, sizeof(fb->pbi) / sizeof(fb->pbi[0]));
+ vpx_clear_system_state();
+ 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
return VPX_CODEC_OK;
}
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
- vp8_decoder_remove_threads(pbi);
+ vp8_decoder_remove_threads(pbi);
#endif
- /* decoder instance for single thread mode */
- remove_decompressor(pbi);
- } else {
- /* TODO : remove frame threads and decoder instances for each
- * thread here */
- }
-
+ /* decoder instance for single thread mode */
+ remove_decompressor(pbi);
return VPX_CODEC_OK;
}
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;
}
va_list args) {
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;
YV12_BUFFER_CONFIG sd;
va_list args) {
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;
YV12_BUFFER_CONFIG sd;
va_list args) {
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];
*update_info = pbi->common.refresh_alt_ref_frame * (int)VP8_ALTR_FRAME +
va_list args) {
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];
VP8_COMMON *oci = &pbi->common;
*ref_info =