Ticket #1911: 040-fix-theora-framesize-not-x16.2.patch
| File 040-fix-theora-framesize-not-x16.2.patch, 1.6 KB (added by , 15 years ago) |
|---|
-
libmpcodecs/vd_theora.c
old new 133 133 mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: Theora video init ok!\n"); 134 134 mp_msg(MSGT_DECVIDEO,MSGL_INFO,"Frame: %dx%d, Picture %dx%d, Offset [%d,%d]\n", context->inf.width, context->inf.height, context->inf.frame_width, context->inf.frame_height, context->inf.offset_x, context->inf.offset_y); 135 135 136 return mpcodecs_config_vo (sh,context->inf. width,context->inf.height,theora_pixelformat2imgfmt(context->inf.pixelformat));136 return mpcodecs_config_vo (sh,context->inf.frame_width,context->inf.frame_height,theora_pixelformat2imgfmt(context->inf.pixelformat)); 137 137 138 138 err_out: 139 139 free(context); … … 196 196 mpi = mpcodecs_get_image(sh, MP_IMGTYPE_EXPORT, 0, yuv.y_width, yuv.y_height); 197 197 if(!mpi) return NULL; 198 198 199 mpi->planes[0]=yuv.y; 199 int y_offs = context->inf.offset_x + context->inf.offset_y*yuv.y_stride; 200 int uv_h_sampling = mpi->width / mpi->chroma_width; 201 int uv_v_sampling = mpi->height / mpi->chroma_height; 202 int uv_offs = context->inf.offset_x/uv_h_sampling 203 + context->inf.offset_y/uv_v_sampling * yuv.uv_stride; 204 205 mpi->planes[0]=yuv.y + y_offs; 200 206 mpi->stride[0]=yuv.y_stride; 201 mpi->planes[1]=yuv.u ;207 mpi->planes[1]=yuv.u + uv_offs; 202 208 mpi->stride[1]=yuv.uv_stride; 203 mpi->planes[2]=yuv.v ;209 mpi->planes[2]=yuv.v + uv_offs; 204 210 mpi->stride[2]=yuv.uv_stride; 205 211 206 212 return mpi;
