comparison vaapi_mpeg2.c @ 9292:f0732d44f655 libavcodec

Improve VA API buffers allocation logic. This also reduces struct vaapi_context down to ~60 bytes vs. a few KBs before, and gets rid of explicit VA data types.
author gb
date Tue, 31 Mar 2009 08:33:02 +0000
parents 60a0739a0f0e
children 140aa1e7328b
comparison
equal deleted inserted replaced
9291:6220870901f5 9292:f0732d44f655
44 VAIQMatrixBufferMPEG2 *iq_matrix; 44 VAIQMatrixBufferMPEG2 *iq_matrix;
45 int i; 45 int i;
46 46
47 dprintf(avctx, "vaapi_mpeg2_start_frame()\n"); 47 dprintf(avctx, "vaapi_mpeg2_start_frame()\n");
48 48
49 vactx->pic_param_size = sizeof(VAPictureParameterBufferMPEG2);
50 vactx->iq_matrix_size = sizeof(VAIQMatrixBufferMPEG2);
51 vactx->slice_param_size = sizeof(VASliceParameterBufferMPEG2); 49 vactx->slice_param_size = sizeof(VASliceParameterBufferMPEG2);
52 50
53 /* Fill in VAPictureParameterBufferMPEG2 */ 51 /* Fill in VAPictureParameterBufferMPEG2 */
54 pic_param = &vactx->pic_param.mpeg2; 52 pic_param = ff_vaapi_alloc_picture(vactx, sizeof(VAPictureParameterBufferMPEG2));
53 if (!pic_param)
54 return -1;
55 pic_param->horizontal_size = s->width; 55 pic_param->horizontal_size = s->width;
56 pic_param->vertical_size = s->height; 56 pic_param->vertical_size = s->height;
57 pic_param->forward_reference_picture = 0xffffffff; 57 pic_param->forward_reference_picture = 0xffffffff;
58 pic_param->backward_reference_picture = 0xffffffff; 58 pic_param->backward_reference_picture = 0xffffffff;
59 pic_param->picture_coding_type = s->pict_type; 59 pic_param->picture_coding_type = s->pict_type;
79 pic_param->forward_reference_picture = ff_vaapi_get_surface(&s->last_picture); 79 pic_param->forward_reference_picture = ff_vaapi_get_surface(&s->last_picture);
80 break; 80 break;
81 } 81 }
82 82
83 /* Fill in VAIQMatrixBufferMPEG2 */ 83 /* Fill in VAIQMatrixBufferMPEG2 */
84 iq_matrix = &vactx->iq_matrix.mpeg2; 84 iq_matrix = ff_vaapi_alloc_iq_matrix(vactx, sizeof(VAIQMatrixBufferMPEG2));
85 if (!iq_matrix)
86 return -1;
85 iq_matrix->load_intra_quantiser_matrix = 1; 87 iq_matrix->load_intra_quantiser_matrix = 1;
86 iq_matrix->load_non_intra_quantiser_matrix = 1; 88 iq_matrix->load_non_intra_quantiser_matrix = 1;
87 iq_matrix->load_chroma_intra_quantiser_matrix = 1; 89 iq_matrix->load_chroma_intra_quantiser_matrix = 1;
88 iq_matrix->load_chroma_non_intra_quantiser_matrix = 1; 90 iq_matrix->load_chroma_non_intra_quantiser_matrix = 1;
89 vactx->iq_matrix_present = 1;
90 91
91 for (i = 0; i < 64; i++) { 92 for (i = 0; i < 64; i++) {
92 int n = s->dsp.idct_permutation[ff_zigzag_direct[i]]; 93 int n = s->dsp.idct_permutation[ff_zigzag_direct[i]];
93 iq_matrix->intra_quantiser_matrix[i] = s->intra_matrix[n]; 94 iq_matrix->intra_quantiser_matrix[i] = s->intra_matrix[n];
94 iq_matrix->non_intra_quantiser_matrix[i] = s->inter_matrix[n]; 95 iq_matrix->non_intra_quantiser_matrix[i] = s->inter_matrix[n];